Télécharger dyndif.eso

Retour à la liste

Numérotation des lignes :

  1. C DYNDIF SOURCE BP208322 18/01/25 21:15:33 9710
  2. C DYNDEV SOURCE LAVARENN 96/10/30 21:23:28 2349
  3. SUBROUTINE DYNDIF(IALGO)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6. *--------------------------------------------------------------------*
  7. * *
  8. * Operateur DYNE : algorithme differences centrees (IALGO=2) *
  9. * et ACCELERATION_MOYENNE (IALGO=3) *
  10. * et FOX_GOODWIN (IALGO=4) *
  11. * ________________________________________________ *
  12. * *
  13. * Appel aux sous-programmes *
  14. * *
  15. * Remarque : les segments de travail sont laisses actifs durant *
  16. * l'execution de l'algorithme. *
  17. * *
  18. *--------------------------------------------------------------------*
  19. -INC CCOPTIO
  20. *
  21. LOGICAL REPRIS,RIGIDE,LMODYN
  22. *
  23. ICHAIN = 0
  24. *
  25. * Lecture et coherence des operandes:
  26. *
  27. IF (IIMPI.EQ.333) THEN
  28. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVLIR'
  29. ENDIF
  30. IF (IIMPI.EQ.444) THEN
  31. CALL GIBTEM(XKT)
  32. INTERR(1)=INT(XKT)
  33. CALL ERREUR(-259)
  34. WRITE(IOIMP,*)'DYNDIF : avant lappel au sous-programme DEVLIR'
  35. ENDIF
  36. CALL DEVLIR(ITBAS,ITKM,ITA,ITLIA,ITCHAR,ITINIT,NP,PDT,NINS,
  37. & ITSORT,ITREDU,KPREF,KCPR,ITCARA,LMODYN,ITDYN)
  38. IF (IERR.NE.0) RETURN
  39. IF (IIMPI.EQ.444) THEN
  40. CALL GIBTEM(XKT)
  41. INTERR(1)=INT(XKT)
  42. CALL ERREUR(-259)
  43. WRITE(IOIMP,*)'DYNDIF : apres lappel au sous-programme DEVLIR'
  44. ENDIF
  45. *
  46. * Allocation de l'espace de travail:
  47. *
  48. IF (IIMPI.EQ.333) THEN
  49. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVALO'
  50. ENDIF
  51. IF (IIMPI.EQ.444) THEN
  52. CALL GIBTEM(XKT)
  53. INTERR(1)=INT(XKT)
  54. CALL ERREUR(-259)
  55. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVALO'
  56. ENDIF
  57. CALL DEVALO(ITBAS,ITKM,ITA,ITLIA,ITCHAR,ITINIT,NP,PDT,NINS,
  58. & ITSORT,ITREDU,KPREF,KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,
  59. & KTFEX,KTPAS,KTRES,KTNUM,IPMAIL,REPRIS,ICHAIN,
  60. & KOCLFA,KOCLB1,ITCARA,LMODYN)
  61. IF (IERR.NE.0) RETURN
  62. IF (IIMPI.EQ.444) THEN
  63. CALL GIBTEM(XKT)
  64. INTERR(1)=INT(XKT)
  65. CALL ERREUR(-259)
  66. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVALO'
  67. ENDIF
  68. *
  69. * Remplissage des tableaux des liaisons:
  70. *
  71. IF (ITLIA.NE.0) THEN
  72. IF (IIMPI.EQ.333) THEN
  73. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVLIA'
  74. ENDIF
  75. IF (IIMPI.EQ.444) THEN
  76. CALL GIBTEM(XKT)
  77. INTERR(1)=INT(XKT)
  78. CALL ERREUR(-259)
  79. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVLIA'
  80. ENDIF
  81. CALL DEVLIA(ITLIA,KCPR,PDT,KTLIAA,KTLIAB,ITCARA,LMODYN,2)
  82. IF (IERR.NE.0) RETURN
  83. IF (IIMPI.EQ.444) THEN
  84. CALL GIBTEM(XKT)
  85. INTERR(1)=INT(XKT)
  86. CALL ERREUR(-259)
  87. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVLIA'
  88. ENDIF
  89. ENDIF
  90. *
  91. * Transposition du contenu d'objets CASTEM2000 dans des tableaux:
  92. *
  93. IF (IIMPI.EQ.333) THEN
  94. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VTRA'
  95. ENDIF
  96. IF (IIMPI.EQ.444) THEN
  97. CALL GIBTEM(XKT)
  98. INTERR(1)=INT(XKT)
  99. CALL ERREUR(-259)
  100. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VTRA'
  101. ENDIF
  102. CALL D2VTRA(ITBAS,ITKM,ITA,KTKAM,IPMAIL,KTRES,KTNUM,KPREF,KTPHI,
  103. & KTLIAB,RIGIDE,ITCARA,LMODYN)
  104. IF (IERR.NE.0) RETURN
  105. IF (IIMPI.EQ.444) THEN
  106. CALL GIBTEM(XKT)
  107. INTERR(1)=INT(XKT)
  108. CALL ERREUR(-259)
  109. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VTRA'
  110. ENDIF
  111. *
  112. * Remplissage du tableau des chargements exterieurs:
  113. *
  114. IF (ITCHAR.NE.0) THEN
  115. IF (IIMPI.EQ.333) THEN
  116. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VFX0'
  117. ENDIF
  118. IF (IIMPI.EQ.444) THEN
  119. CALL GIBTEM(XKT)
  120. INTERR(1)=INT(XKT)
  121. CALL ERREUR(-259)
  122. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VFX0'
  123. ENDIF
  124. CALL D2VFX0(ITCHAR,KTNUM,KPREF,KTFEX,REPRIS,RIGIDE)
  125. IF (IERR.NE.0) RETURN
  126. IF (IIMPI.EQ.444) THEN
  127. CALL GIBTEM(XKT)
  128. INTERR(1)=INT(XKT)
  129. CALL ERREUR(-259)
  130. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VFX0'
  131. ENDIF
  132. IF (IIMPI.EQ.333) THEN
  133. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVSPM'
  134. ENDIF
  135. IF (IIMPI.EQ.444) THEN
  136. CALL GIBTEM(XKT)
  137. INTERR(1)=INT(XKT)
  138. CALL ERREUR(-259)
  139. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVPSM'
  140. ENDIF
  141. *
  142. * DEVPSM n'a pas ete modifie pour differences centrees, mais de toutes
  143. * facons les pseudomodes ne sont pas correctes en non lineaire
  144. CALL DEVPSM(ITCHAR,ITBAS,KTLIAB,KTNUM,KTPHI,KTFEX,REPRIS)
  145. IF (IERR.NE.0) RETURN
  146. IF (IIMPI.EQ.444) THEN
  147. CALL GIBTEM(XKT)
  148. INTERR(1)=INT(XKT)
  149. CALL ERREUR(-259)
  150. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVPSM'
  151. ENDIF
  152. ENDIF
  153. *
  154. * Lecture des chargements en Base B, pour les corps rigides
  155. *
  156. IF (RIGIDE) THEN
  157. IF (IIMPI.EQ.333) THEN
  158. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VRIG'
  159. ENDIF
  160. IF (IIMPI.EQ.444) THEN
  161. CALL GIBTEM(XKT)
  162. INTERR(1)=INT(XKT)
  163. CALL ERREUR(-259)
  164. WRITE(IOIMP,*)'DYNDEV :avant lappel au sous-programme
  165. & D2VRIG'
  166. ENDIF
  167. CALL D2VRIG(ITCHAR,KTNUM,KTPHI,KTFEX,KTLIAB,REPRIS)
  168. IF (IERR.NE.0) RETURN
  169. IF (IIMPI.EQ.444) THEN
  170. CALL GIBTEM(XKT)
  171. INTERR(1)=INT(XKT)
  172. CALL ERREUR(-259)
  173. WRITE(IOIMP,*)'DYNDEV :apres lappel au sous-programme
  174. & D2VRIG'
  175. ENDIF
  176. ENDIF
  177. *
  178. * Initialisation de l'algorithme, ou reprise de calcul:
  179. *
  180. IF (IIMPI.EQ.333) THEN
  181. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VINI'
  182. ENDIF
  183. IF (IIMPI.EQ.444) THEN
  184. CALL GIBTEM(XKT)
  185. INTERR(1)=INT(XKT)
  186. CALL ERREUR(-259)
  187. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VINI'
  188. ENDIF
  189. CALL D2VINI(ITINIT,KTKAM,KTQ,KTFEX,KTPAS,KTNUM,KTLIAA,KTLIAB,
  190. & KTPHI,KCPR,KOCLFA,KOCLB1,REPRIS,RIGIDE,lmodyn)
  191. IF (IERR.NE.0) RETURN
  192. IF (IIMPI.EQ.444) THEN
  193. CALL GIBTEM(XKT)
  194. INTERR(1)=INT(XKT)
  195. CALL ERREUR(-259)
  196. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VINI'
  197. ENDIF
  198. *
  199. * Mise en oeuvre de l'algorithme:
  200. *
  201. IF (IIMPI.EQ.333) THEN
  202. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VALG'
  203. ENDIF
  204. IF (IIMPI.EQ.444) THEN
  205. CALL GIBTEM(XKT)
  206. INTERR(1)=INT(XKT)
  207. CALL ERREUR(-259)
  208. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VALG'
  209. ENDIF
  210. IF(IALGO.EQ.2) THEN
  211. CALL D2VALG(KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,KTFEX,KTPAS,KTRES,
  212. & KTNUM,KPREF,NINS,KOCLFA,KOCLB1,REPRIS,RIGIDE)
  213. ELSEIF(IALGO.GE.3) THEN
  214. IF(IALGO.EQ.3) BETA=0.25D0
  215. IF(IALGO.EQ.4) BETA=1.D0/12.D0
  216. CALL D3VALG(KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,KTFEX,KTPAS,KTRES,
  217. & KTNUM,KPREF,NINS,KOCLFA,KOCLB1,REPRIS,RIGIDE,BETA)
  218. ENDIF
  219. IF (IERR.NE.0) RETURN
  220. IF (IIMPI.EQ.444) THEN
  221. CALL GIBTEM(XKT)
  222. INTERR(1)=INT(XKT)
  223. CALL ERREUR(-259)
  224. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VALG'
  225. ENDIF
  226. *
  227. * Creation de la table resultat et nettoyage memoire:
  228. *
  229. IF (IIMPI.EQ.333) THEN
  230. WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVSOR'
  231. ENDIF
  232. IF (IIMPI.EQ.444) THEN
  233. CALL GIBTEM(XKT)
  234. INTERR(1)=INT(XKT)
  235. CALL ERREUR(-259)
  236. WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVSOR'
  237. ENDIF
  238. CALL DEVSOR(KPREF,KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,KTFEX,KTPAS,
  239. & KTRES,KTNUM,NINS,IPMAIL,REPRIS,ICHAIN,
  240. & KOCLFA,KOCLB1,LMODYN,ITDYN)
  241. IF (IERR.NE.0) RETURN
  242. IF (IIMPI.EQ.444) THEN
  243. CALL GIBTEM(XKT)
  244. INTERR(1)=INT(XKT)
  245. CALL ERREUR(-259)
  246. WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVSOR'
  247. ENDIF
  248. IF (IIMPI.EQ.333) THEN
  249. WRITE(IOIMP,*)'DYNDEV : fin presumee normale de ce calcul'
  250. ENDIF
  251. *
  252. RETURN
  253. END
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  

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