Télécharger trjav2.eso

Retour à la liste

Numérotation des lignes :

trjav2
  1. C TRJAV2 SOURCE CB215821 20/11/25 13:41:26 10792
  2. SUBROUTINE TRJAV2(IZVIT,IZPART,IZN3,IPART,TMIN,TMAX,
  3. * MELEME,IELTFA,IZCENT,IFACEL,DELTAT,IZSH)
  4. C
  5. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  6. C Issu du sp TRJAVA cas du calcul analytique
  7. C
  8. C FAIT AVANCER UNE PARTICULE ( COORDONNEES DE REFERENCES )
  9. C JUSQU'A L'INSTANT TMAX OU A L'INSTANT DE SORTIE
  10. C IZVIT SEGMENT DECRIVANT LES VITESSES ( <--- TRJVIT TRJFLU)
  11. C IZPART POSITIONS INITIALES DES PARTICULES
  12. C IZN3 SEGMENT RESULTANT (AJUSTE ICI)
  13. C IPART NUMERO DE LA PARTICULE
  14. C TMIN INSTANT DE DEPART
  15. C TMAX INSTANT A NE PAS DEPASSER
  16. C
  17. C MELEME POINTEUR DU MAILLAGE
  18. C IELTFA POINTEUR DE DOMAINE.ELTFA
  19. C IZCENT POINTEUR DE DOMAINE.CENTRE
  20. C IFACEL POINTEUR DE DOMAINE.FACEL
  21. C DELTAT PAS DE TEMPS AVEC LEQUEL ON CONSERVE LES RESULTATS
  22. C
  23. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  24. C
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8 (A-H,O-Z)
  27. C
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC SMCOORD
  32. -INC SMELEME
  33. -INC SMCHPOI
  34. C
  35. POINTEUR IZCENT.MELEME,IELTFA.MELEME,IZFAC1.MELEME
  36. POINTEUR IFACEL.MELEME
  37. C
  38. SEGMENT IZPART
  39. INTEGER NLEPA(NPART),NUMPA(NPART)
  40. REAL*8 COORPA(NDIM,NPART)
  41. ENDSEGMENT
  42. C
  43. SEGMENT IZN3
  44. INTEGER NAPAR3(NPOS),NUM3(NPOS)
  45. REAL*8 CREF3(NDIM,NPOS),TPAR(NPOS)
  46. ENDSEGMENT
  47. C
  48. SEGMENT IZSH
  49. REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9)
  50. ENDSEGMENT
  51. C
  52. SEGMENT IZVIT
  53. REAL*8 TEMTRA(NVIPT)
  54. INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML
  55. ENDSEGMENT
  56. C IDUN(I) nombre d elements avant le sous maillage I
  57. C IPVPT pointeurs de izvpt pour chaque pas de temps
  58. SEGMENT IZVPT
  59. INTEGER IPUN1(NBS),IPUMAX
  60. ENDSEGMENT
  61. C
  62. SEGMENT IZUN
  63. REAL*8 UN(I1,I2,I3)
  64. ENDSEGMENT
  65. POINTEUR IZUN1.IZUN,IZUN2.IZUN
  66. C
  67. DIMENSION UELEM(3),XARI(3),XDEP(3),XINT(3)
  68. C
  69. C***
  70. C
  71. NDIM=IDIM
  72. NPOS=50
  73. SEGINI IZN3
  74. SEGACT IZVIT
  75. IFORMU=IFORML
  76. IEL1=NLEPA(IPART)
  77. C
  78. DO 2 ID1=1,NDIM
  79. XDEP(ID1)=COORPA(ID1,IPART)
  80. 2 CONTINUE
  81. C
  82. ITER=2
  83. NAPAR3(1)=IEL1
  84. C
  85. DO 3 ID1=1,NDIM
  86. CREF3(ID1,1)=XDEP(ID1)
  87. 3 CONTINUE
  88. C
  89. TCOUR=TMIN
  90. TPAR(1)=TMIN
  91. NUAPAR=IEL1
  92. C
  93. SEGACT IELTFA,IZCENT,IFACEL
  94. SEGACT IZSH
  95. NVIPT=TEMTRA(/1)
  96. 1 CONTINUE
  97. C IVPT VAUT 1 EN PERMANENT
  98. IVPT=1
  99. C MELNEL PERMET D'AVOIR LE NUMERO DE L'ELEMENT DANS UN SOUS MAILLAGE
  100. CALL MELNEL(IEL1,MELEME,IPT1,NEL0,0)
  101. NOEL1=IPT1.NUM(/1)
  102. IELL=IEL1-NEL0
  103. C ON RECUPERE LES COORDONEES DES NOEUDS DE L'ELEMENT
  104. CALL DOXE(XCOOR,IDIM,NOEL1,IPT1.NUM,IELL,XYZL)
  105. ITY1=IPT1.ITYPEL
  106. TTEMP=TCOUR
  107. C ON ACTIVE LE SEGMENT DES FLUX AUX FACES
  108. CALL TRJVEL(IZVIT,IZUN,IEL1,IVPT,TTEMP)
  109. ITYG=NUMGEO(ITY1)
  110. C ON DETERMINE LA TRAJECTOIRE LE TEMPS DE PARCOURS ET LA FACE DE SORTIE
  111. CALL TRJMA2(XARI,XDEP,UN(1,1,IELL),DTINT,NDIM,ICONT
  112. * ,ITYG,IART,INOEU)
  113. 4 CONTINUE
  114. C
  115. C*** ON CALCULE LE JACOBIEN DE LA TRANSFORMATION EN XDEP
  116. C
  117. CALL DETJAC(XYZL,XDEP,ITY1,NDIM,NOEL1,IFORMU,SHP,DET)
  118. C
  119. C*** POUR LES ELEMENTS NON TRIANGULAIRE LE JACOBIEN N'EST PAS CONSTANT
  120. C
  121. IF(((ITYG-4)*(ITYG-23)).NE.0)THEN
  122. C
  123. C*** ON CALCULE PLUSIEURS JACOBIENS ET ON FAIT LA MOYENNE
  124. C
  125. CALL DETJAC(XYZL,XARI,ITY1,NDIM,NOEL1,IFORMU,SHP,DET1)
  126. DTS=DTINT/10
  127. DO 12 ID1=1,9
  128. C CETTE ROUTINE PEUT ETRE FUSIONNEE AVEC TRJLDC
  129. CALL TRJSAU(XINT,XDEP,UN(1,1,IELL),DTS,NDIM,ITYG)
  130. CALL DETJAC(XYZL,XINT,ITY1,NDIM,NOEL1,IFORMU,SHP,DETINT)
  131. DET=DET+2*DETINT
  132. DO 14 ID2=1,NDIM
  133. XDEP(ID2)=XINT(ID2)
  134. 14 CONTINUE
  135. 12 CONTINUE
  136. DET=(DET+DET1)/20
  137. ENDIF
  138. DT=DTINT*DET
  139. C
  140. C*** TRAITEMENT DES CAS PARTICULIERS
  141. C
  142. IF(INOEU.NE.0)THEN
  143. C
  144. C*** RATRAPAGE A UN NOEUD DU MAILLLAGE
  145. C
  146. TCOUR=TCOUR+DT
  147. CALL TRJRND(IZN3,IZVIT,MELEME,TCOUR,INOEU,IEL1,NDIM,ITER,
  148. * IEL2,XARI,DTINT,ICONT,INOEU)
  149. C INOEU=INOE
  150. IEL1=IEL2
  151. C CAS OU ON SORT PAR UN NOEUD EN BORD DE MAILLAGE
  152. IF(DTINT.EQ.0.D0)THEN
  153. DT=DTINT
  154. C ON VA EN 10 STOCKER LES RESULTATS ET ON SORT
  155. GOTO 10
  156. ENDIF
  157. GOTO 4
  158. C
  159. C*** RATRAPAGE A UNE ARETE
  160. C
  161. ELSEIF(IART.NE.0)THEN
  162. C
  163. C*** ON CHERCHE LES FACES QUI SE COUPENT EN FORMANT L'ARETE
  164. C
  165. CALL TRJARF(IART,NF1,NF2,ITYG)
  166. C ON CHOISIT UNE FACE AYANT UN FLUX SORTANT
  167. IF(UN(1,NF1,IELL).GT.0.D0)THEN
  168. ICONT=NF1
  169. GOTO 7
  170. ELSEIF(UN(1,NF2,IELL).GT.0.D0)THEN
  171. ICONT=NF2
  172. GOTO 7
  173. C
  174. C*** SINON ON EST EN BORD DE DOMAINE ON STOCKE LES RESULTATS EN 10
  175. C
  176. ELSE
  177. DT=0.D0
  178. GOTO 10
  179. ENDIF
  180. ENDIF
  181. C
  182. C************* RECHERCHE DES VOISINS ET SCKAGE DES RESULTATS*********
  183. C
  184. C*** LA PARTICULE SORT DE L'ELEMENT COURANT ON CHERCHE LE VOISIN
  185. C
  186. 7 CONTINUE
  187. CALL TRJIEL(IEL1,IEL2,ICONT,NF,IFACEL,IZCENT,IELTFA)
  188. C
  189. C*** SI ON EST EN BORD DE DOMAINE ON ARRETE LE CALCUL
  190. C
  191. IF(IEL2.EQ.0)GO TO 10
  192. C
  193. C*** ON ARRETE LE CALCUL PAR DEPASSEMENT DU TEMPS IMPOSE
  194. C
  195. IF((TMAX-TCOUR).LE.0.D0)GOTO 21
  196. C
  197. C*** ON N'EST PAS EN BORD DE DOMAINE ET ON A TROUVE UN VOISIN
  198. C
  199. C ON COMMENCE PAR LOCALISER LE NOUVEL ELEMENT
  200. CALL MELNEL(IEL2,MELEME,IPT2,NEL2,1)
  201. IELL2=IEL2-NEL2
  202. JTY=IPT2.ITYPEL
  203. C ON CHERCHE LA FACE COMMUNE ENTRE IEL1 ET IEL2
  204. CALL TRJFAC(IEL2,NF,JFA,IELTFA)
  205. IOR=1
  206. IF(NDIM.EQ.3)CALL TRJIOR(IELL,IELL2,IPT1,IPT2,ICONT,JFA,IOR)
  207. ITYG=NUMGEO(ITY1)
  208. JTYG=NUMGEO(JTY)
  209. C ON TRANSFORME LES COOR DE SORTIE DE IEL1 EN COOR D'ENTREE DANS IEL2
  210. CALL TRJTRJ(XDEP,XARI,ITYG,JTYG,JFA,ICONT,IOR)
  211. TCOUR=TCOUR+DT
  212. NUAPAR=IEL2
  213. 13 CONTINUE
  214. C
  215. C*** ON STOCKE LES RESULTATS
  216. C
  217. DO 22 ID1=1,NDIM
  218. CREF3(ID1,ITER)=XDEP(ID1)
  219. 22 CONTINUE
  220. TPAR(ITER)=TCOUR
  221. NAPAR3(ITER)=NUAPAR
  222. IEL1=NUAPAR
  223. IF ((NPOS-ITER).LE.1) THEN
  224. NPOS=NPOS+50
  225. SEGADJ IZN3
  226. ENDIF
  227. ITER=ITER+1
  228. C
  229. C*** ON RETOURNE EN 1 POUR ITERER LE PROCEDER AVEC UN NOUVEL ELEMENT
  230. C
  231. GO TO 1
  232. C
  233. C*** LA PARTICULE I EST SORTIE DU DOMAINE DE CALCUL
  234. C ON STOCKE LES RESULTATS ET ON SORT
  235. 10 CONTINUE
  236. DO 23 ID1=1,NDIM
  237. XDEP(ID1)=XARI(ID1)
  238. 23 CONTINUE
  239. TCOUR=TCOUR+DT
  240. NUAPAR=IEL1
  241. 21 CONTINUE
  242. DO 20 ID1=1,NDIM
  243. CREF3(ID1,ITER)=XDEP(ID1)
  244. 20 CONTINUE
  245. TPAR(ITER)=TCOUR
  246. NAPAR3(ITER)=NUAPAR
  247. NPOS=ITER
  248. SEGADJ IZN3
  249. C
  250. c 999 FORMAT('PARTICULE',I4,': PROBLEMES DANS LE COIN D''UN ELEMENT !!',
  251. c * 2I7 )
  252. C
  253. END
  254.  
  255.  
  256.  
  257.  

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