Télécharger trjloc.eso

Retour à la liste

Numérotation des lignes :

trjloc
  1. C TRJLOC SOURCE CHAT 05/01/13 03:50:09 5004
  2. SUBROUTINE TRJLOC(NDIM,MELEME,IZCENT,IELTFA,IZVIT,IVPT
  3. $ ,IEL1,TCOUR,NOEL1,ITY1,ITYG,IZSH,IZUN,NOUN1,IELL,DIAM,IPT1)
  4. ***************************************************************************
  5. *** SP 'TRJLOC' : recupere infos caractérisant l'élément effectivement
  6. *** traversée par la particule (sous maillage, n° elemt, nbre noeuds,...).
  7. ***
  8. *** APPELES 1 = 'MELNEL', 'DOXE', 'TRJVEL'
  9. *** APPELES 2 = aucun
  10. ***
  11. *** E = 'NDIM' dimension de l'espace
  12. *** 'MELEME' pteur sur le maillage du domaine étudié
  13. *** 'IZCENT' pteur sur la table "DOMAINE.CENTRE"
  14. *** 'IELTFA' pteur sur la table "DOMAINE.ELTFA"
  15. *** 'IZVIT' segment décrivant les vitesses (<- 'TRJVIT' OU 'TRJFLU')
  16. *** 'IVPT' entier valant 1 dans le cas permanent
  17. *** 'IEL1' n° global de l'élément contenant particule
  18. *** 'TCOUR' tps courant considéré
  19. ***
  20. *** S = 'NOEL1' nbre de noeuds de l'élément 'IEL1'
  21. *** 'ITY1' entier caractérisant le type de l'élément 'IEL1'
  22. *** 'ITYG' entier caractérisant la géométrie de 'IEL1'
  23. *** 'IZSH' segmt content fcts forme,base et coord réelles noeuds de 'IEL1'
  24. *** 'IZUN' segmt content les flux aux faces % sous-maillage de 'IEL1'
  25. *** 'NOUN1' nbre de flux (ou faces' de l'élément considéré
  26. *** 'IELL' n° local de l'élément 'IEL1' dans sous maillage
  27. *** 'DIAM' "longueur caracteristique" de l'element considéré
  28. *** 'IPT1' pteur sur sous-maillage contenant element considéré
  29. ***
  30. *** ORIGINE = PATRICK MEYNIEL ,MODIFICATION = CYRIL NOU
  31. ******************************************************************************
  32.  
  33. IMPLICIT INTEGER(I-N)
  34. IMPLICIT REAL*8 (A-H,O-Z)
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. -INC SMCOORD
  38. -INC SMELEME
  39. POINTEUR IZCENT.MELEME,IELTFA.MELEME,IZFAC1.MELEME
  40. SEGMENT IZSH
  41. REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9)
  42. ENDSEGMENT
  43. SEGMENT IZVIT
  44. REAL*8 TEMTRA(NVIPT)
  45. INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML
  46. ENDSEGMENT
  47. SEGMENT IZVPT
  48. INTEGER IPUN1(NBS),IPUMAX
  49. ENDSEGMENT
  50. SEGMENT IZUN
  51. REAL*8 UN(I1,I2,I3)
  52. ENDSEGMENT
  53. SEGMENT IZUMAX
  54. REAL*8 UMAX(NBREL)
  55. ENDSEGMENT
  56.  
  57. *** recherche le bon sous maillage pour l'elem 'IEL1' qui est alors pté par 'IPT1'
  58. *** 'NEL0' = nbre elemts avant sous maillage pté par 'IPT1'
  59. CALL MELNEL(IEL1,MELEME,IPT1,NEL0,1)
  60. *** recuperation nbre de noeuds de l'elemt de n° global 'IEL1' dans 'NOEL1'
  61. NOEL1=IPT1.NUM(/1)
  62. *** recuperation n° local de l'elemt de n° global 'IEL1' dans 'IELL'
  63. IELL=IEL1-NEL0
  64. *** sp 'DOXE', donnt les coordonnées reelles des noeuds de l'elem de n°
  65. *** 'IELL' (ou 'IEL1') sous le format defini par le tableau 'XYZL' de 'IZSH'
  66. CALL DOXE(XCOOR,NDIM,NOEL1,IPT1.NUM,IELL,XYZL)
  67. *** recuperation du type des elemts du sous maillage de 'IPT1'
  68. ITY1=IPT1.ITYPEL
  69. *** recuperation de la géometrie des elements du sous maillage de 'IPT1'
  70. ITYG=NUMGEO(ITY1)
  71. *** en permanent, active le segment des flux 'IZUN' % sous-maillage de 'IEL1'
  72. CALL TRJVEL(IZVIT,IZUN,IEL1,IVPT,TCOUR)
  73. *** determination du nombre de flux (ou faces) pour l'élément considéré
  74. IF (ITYG.EQ.14) THEN
  75. NOUN1=6
  76. ELSEIF (ITYG.EQ.16) THEN
  77. NOUN1=5
  78. ELSE
  79. NOUN1=NOEL1
  80. ENDIF
  81. *** 'NUCENT' recupere n° global noeud centre de l'element 'IEL1'
  82. NUCENT=IZCENT.NUM(1,IEL1)
  83. *** 'IZFAC1' pte sur sous-maillage de 'IELTFA' contenant 'IEL1'
  84. CALL MELNEL(IEL1,IELTFA,IZFAC1,NEL1,1)
  85. *** recuperation + petite distance entre centre et faces element
  86. NF=IZFAC1.NUM(/1)
  87. IPCENT=(NUCENT-1)*(IDIM+1)
  88. NF1=(IZFAC1.NUM(1,IELL)-1)*(IDIM+1)
  89. VINT=0.D0
  90. DO 10 I=1,IDIM
  91. VINT=VINT+(XCOOR(IPCENT+I)-XCOOR(NF1+I))**2
  92. 10 CONTINUE
  93. DIAM=VINT
  94. DO 20 J=2,NF
  95. NF1=(IZFAC1.NUM(J,IELL)-1)*(IDIM+1)
  96. VINT=0.D0
  97. DO 30 I=1,IDIM
  98. VINT=VINT+(XCOOR(IPCENT+I)-XCOOR(NF1+I))**2
  99. 30 CONTINUE
  100. IF (VINT.LT.DIAM) DIAM=VINT
  101. 20 CONTINUE
  102. *** 'DIAM' = "longueur caracteristique" choisi
  103. DIAM=SQRT(DIAM)*2.D0
  104.  
  105. RETURN
  106. END
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  

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