Télécharger distrt.eso

Retour à la liste

Numérotation des lignes :

distrt
  1. C DISTRT SOURCE CHAT 05/01/12 22:51:42 5004
  2. SUBROUTINE DISTRT(MMTRA,NNT,DT, DPI, TE,ID,ERR, RES,IOK,INEW)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C=======================================================================
  6. C = CALCUL DU MAXIMUM DE DISTRIBUTION DANS LE CAS =
  7. C = NON STATIONNAIRE (ET STATIONAIRE) =
  8. C = =
  9. C = ENTREE XLTIME(1,NNT)=XL0,XL1,XL2 MOMENT STATIQUES AU COURS DU =
  10. C = TEMPS =
  11. C = ID=1 NEWMARK/GUMBEL 1 + SUBSTITUTION =
  12. C = ID=2 NEWMARK/GUMBEL 1 + DICHOTOMIE =
  13. C = =
  14. C = ERREUR =
  15. C = IOK=1 NUMERO INEXISTANT =
  16. C = ID=1 IOK=2 NON CONVERGENCE =
  17. C = ID=2 IOK=2 PAS D'ENCADREMENT INFERIEUR =
  18. C = IOK=3 PAS D'ENCADREMENT SUPERIEUR =
  19. C = IOK=100 NON CONVERGENCE INFERIEUR =
  20. C = IOK=101 NON CONVERGENCE SUPERIEURE =
  21. C=======================================================================
  22. REAL*8 L1,L2,N1,N2
  23. LOGICAL LMOD2
  24. C======+++++++++++ bon fontionnement erreur PSRS/PRNS +++++++++++ ======
  25.  
  26. -INC PPARAM
  27. -INC CCOPTIO
  28. SEGMENT,MMTRA
  29. IMPLIED XLTIME(NNT,3)
  30. ENDSEGMENT
  31. C======+++++++++++ bon fontionnement erreur PSRS/PRNS +++++++++++ ======
  32. C
  33. INEW=0
  34. C
  35. IF(ID.LE.0.OR.ID.GT.2)THEN
  36. IOK=1
  37. CALL ERREUR(571)
  38. RETURN
  39. ENDIF
  40. C
  41. GOTO (10,20),ID
  42. C
  43. C 1)METHODE DE NEWMARK/GUMBEL 1 (METHODE DE SUBSTITUTION)
  44. C
  45. 10 CONTINUE
  46. C
  47. C 1.1) FACTEUR DE GUMBEL 1
  48. C
  49. A=LOG(-LOG(0.05D0))
  50. B=A-LOG(-LOG(0.95D0))
  51. C
  52. C 1.2) CALCUL DE LAM0 MOYEN ET DE LAM0 MAX
  53. C
  54. XL0MA=XLTIME(1,1)
  55. IF(NNT.NE.1)THEN
  56. DO 100 IE1=2,NNT-1
  57. IF(XLTIME(IE1,1).GT.XL0MA)XL0MA=XLTIME(IE1,1)
  58. 100 CONTINUE
  59. IF(XLTIME(NNT,1).GT.XL0MA)XL0MA=XLTIME(NNT,1)
  60. ENDIF
  61. C
  62. C 1.3) INITIALISATION DE L1 ET L2
  63. C
  64. L2=SQRT(XL0MA)*3
  65. L1=L2/4
  66. C
  67. C 1.4) BOUCLE DE DETERMINATION DE L1 ET L2
  68. C
  69. DO 101 IE1=1,20
  70. C
  71. C 1.4.1) CALCUL DES DISTRIBUTION DE NEWMARK
  72. C
  73. CALL NEWMAR(L1,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  74. > DPI,NNT,N1)
  75. CALL NEWMAR(L2,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  76. > DPI,NNT,N2)
  77. C WRITE(6,'(I2,3X,2H1:,1PD13.6,1X,1PD13.6,3X,
  78. C > 2H2:,1PD13.6,1X,1PD13.6,1X)')IE1,L1,N1,L2,N2
  79. INEW=INEW+2
  80. C
  81. C 1.4.2) CALCUL DES PARAMETRE DE GUMBEL
  82. C
  83. AGUMB=LOG(LOG(N1)/LOG(N2))/(L2-L1)
  84. UGUMB=L1+LOG(-LOG(N1))/AGUMB
  85. C
  86. C 1.4.3) TEST DE CONVERGENCE
  87. C
  88. IF((ABS(N1-.05D0)+ABS(N2-.95D0)).LT.ERR) GOTO 102
  89. C
  90. C 1.4.4) CALCUL DES NOUVEAUX L
  91. C
  92. L1 = UGUMB - A / AGUMB
  93. L2 = L1 + B / AGUMB
  94. C
  95. 101 CONTINUE
  96. C
  97. C 1.5) NON CONVERGENCE
  98. C
  99. IOK=2
  100. CALL ERREUR(572)
  101. RETURN
  102. C
  103. C 1.6) CONVERGENCE
  104. C
  105. 102 IOK=0
  106. RES=UGUMB + 0.57722/AGUMB
  107. RETURN
  108. C
  109. C 3) METHODE DE NEWMARK/GUMBEL 1 (METHODE DE DICHOTOMIE)
  110. C
  111. 20 CONTINUE
  112. IOK=0
  113. C
  114. C 2.1) CALCUL DE LAM0 MOYEN ET DE LAM0 MAX
  115. C
  116. XL0MA=XLTIME(1,1)
  117. IF(NNT.NE.1)THEN
  118. DO 200 IE1=2,NNT-1
  119. IF(XLTIME(IE1,1).GT.XL0MA)XL0MA=XLTIME(IE1,1)
  120. 200 CONTINUE
  121. IF(XLTIME(NNT,1).GT.XL0MA)XL0MA=XLTIME(NNT,1)
  122. ENDIF
  123. C
  124. C 2.2) INITIALISATION DE L1 ET L2
  125. C
  126. L2=SQRT(XL0MA)*3
  127. L1=L2/4
  128. C
  129. C 2.3) VERIFICATION DES INITIALISATIONS
  130. C
  131. C 2.3.1) INITIALISATION
  132. C
  133. CALL NEWMAR(L1,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  134. > DPI,NNT,N1)
  135. BL2=L1
  136. BN2=N1
  137. C
  138. CALL NEWMAR(L2,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  139. > DPI,NNT,N2)
  140. BL1=L2
  141. BN1=N2
  142. C
  143. INEW=INEW+2
  144. C
  145. C 2.3.2) L1 (AVEC RAFINEMENT EVENTUEL DES BORNES) ...
  146. C
  147. DO 201 IE1=1,10
  148. C WRITE(6,'(1X,A5,2(1X,1PD14.7))')'L1,N1',L1,N1
  149. IF(N1.LT.0.05D0)GOTO 202
  150. BL1=L1
  151. BN1=N1
  152. L1=L1/2
  153. CALL NEWMAR(L1,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  154. > DPI,NNT,N1)
  155. INEW=INEW+1
  156. 201 CONTINUE
  157. C
  158. C 2.3.3) ... ET ERREUR L1
  159. C
  160. IOK=2
  161. MOTERR='inferieur'
  162. CALL ERREUR(573)
  163. RETURN
  164. C
  165. C 2.3.4) L2 (AVEC RAFINEMENT EVENTUEL DES BORNES) ...
  166. C
  167. 202 DO 203 IE1=1,10
  168. C WRITE(6,'(1X,A5,2(1X,1PD14.7))')'L2,N2',L2,N2
  169. IF(N2.GT.0.95D0)GOTO 204
  170. BL2=L2
  171. BN2=N2
  172. L2=L2*2
  173. CALL NEWMAR(L2,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  174. > DPI,NNT,N2)
  175. INEW=INEW+1
  176. 203 CONTINUE
  177. C
  178. C 2.3.5) ... ET ERREUR L2
  179. C
  180. IOK=3
  181. MOTERR='superieur'
  182. CALL ERREUR(573)
  183. RETURN
  184. C
  185. C 2.4) DETERMINATION DE L1
  186. C
  187. C 2.4.1) UNE DES BORNES EST-ELLE CORRECTE ???
  188. C
  189. 204 IF(ABS(N1-0.05D0).LT.ERR)GOTO 210
  190. IF(ABS(BN1-0.05D0).LT.ERR)THEN
  191. L1=BL1
  192. N1=BN1
  193. GOTO 210
  194. ENDIF
  195. C
  196. C 2.4.2) PEUT-ON AMELIORER LES ESTIMATIONS POUR L2 ?
  197. C
  198. IF(BN1.GE.0.95D0)THEN
  199. L2=BL1
  200. N2=BN1
  201. LMOD2=.TRUE.
  202. ELSE
  203. LMOD2=.FALSE.
  204. ENDIF
  205. C
  206. C 2.4.3) BOUCLE DE DICHOTOMIE
  207. C
  208. DO 205 IE1=1,25
  209. C
  210. C 2.4.3.1) SOLUTION AU MILIEU DE l'INNTERVALLE
  211. C
  212. TL1=(L1+BL1)/2
  213. CALL NEWMAR(TL1,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  214. > DPI,NNT,TN1)
  215. INEW=INEW+1
  216. C
  217. C 2.4.3.2) AMELIORATION ESTIMATION L2 (SI POSSIBLE)
  218. C
  219. IF (LMOD2)THEN
  220. IF(TN1.GE.0.95D0)THEN
  221. L2=TL1
  222. N2=TN1
  223. ELSE
  224. LMOD2=.FALSE.
  225. BL2=TL1
  226. BN2=TN1
  227. ENDIF
  228. ENDIF
  229. C
  230. C 2.4.3.3) TEST DE CONVERGENCE
  231. C
  232. IF(ABS(TN1-0.05D0).LT.ERR)THEN
  233. L1=TL1
  234. N1=TN1
  235. GOTO 210
  236. ENDIF
  237. C
  238. C 2.4.3.4) RESTRICTION DE L'INTERVALLE DE RECHERCHE
  239. C
  240. IF(TN1.LT.0.05D0)THEN
  241. L1=TL1
  242. N1=TN1
  243. ELSE
  244. BL1=TL1
  245. BN1=TN1
  246. ENDIF
  247. C
  248. 205 CONTINUE
  249. C
  250. C 2.4.4) NON CONVERGENCE
  251. C
  252. IOK=100
  253. MOTERR='inferieure'
  254. CALL ERREUR(574)
  255. C RETURN (L'ERREUR 100 N'EST PAS ELIMINATOIRE)
  256. C
  257. C 2.5) DETERMINATION DE L2
  258. C
  259. C 2.5.1) UNE DES BORNES EST-ELLE CORRECTE ???
  260. C
  261. 210 IF(ABS(N2-0.95D0).LT.ERR)GOTO 220
  262. IF(ABS(BN2-0.95D0).LT.ERR)THEN
  263. L2=BL2
  264. N2=BN2
  265. GOTO 220
  266. ENDIF
  267. C
  268. C 2.5.2) BOUCLE DE DICHOTOMIE
  269. C
  270. DO 215 IE1=1,25
  271. C
  272. C 2.5.2.1) SOLUTION AU MILIEU DE l'INTERVALLE
  273. C
  274. TL2=(L2+BL2)/2
  275. CALL NEWMAR(TL2,DT,XLTIME(1,1),XLTIME(1,2),XLTIME(1,3),
  276. > DPI,NNT,TN2)
  277. INEW=INEW+1
  278. C
  279. C 2.5.2.2) TEST DE CONVERGENCE
  280. C
  281. IF(ABS(TN2-0.95D0).LT.ERR)THEN
  282. L2=TL2
  283. N2=TN2
  284. GOTO 220
  285. ENDIF
  286. C
  287. C 2.5.2.3) RESTRICTION DE L'INTERVALLE DE RECHERCHE
  288. C
  289. IF(TN2.GT.0.95D0)THEN
  290. L2=TL2
  291. N2=TN2
  292. ELSE
  293. BL2=TL2
  294. BN2=TN2
  295. ENDIF
  296. C
  297. 215 CONTINUE
  298. C
  299. C 2.5.3) NON CONVERGENCE
  300. C
  301. IOK=101 + IOK
  302. MOTERR='superieure'
  303. CALL ERREUR(574)
  304. C RETURN (L'ERREUR 101 N'EST PAS ELIMINATOIRE)
  305. C (ET SE COMBINE AVEC 100 )
  306. C
  307. C 2.6) CALCUL DES PARAMETRE DE GUMBEL
  308. C
  309. 220 AGUMB=LOG(LOG(N1)/LOG(N2))/(L2-L1)
  310. UGUMB=L1+LOG(-LOG(N1))/AGUMB
  311. C
  312. C 2.6) CONVERGENCE
  313. C
  314. RES=UGUMB + 0.57722/AGUMB
  315. C
  316. C WRITE(6,'(1X,A5,2(1X,1PD14.7))')'L1,N1',L1,N1
  317. C WRITE(6,'(1X,A5,2(1X,1PD14.7))')'L2,N2',L2,N2
  318. C
  319. RETURN
  320. C
  321. END
  322.  
  323.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales