Télécharger exto5c.eso

Retour à la liste

Numérotation des lignes :

exto5c
  1. C EXTO5C SOURCE GOUNAND 25/11/24 21:15:06 12406
  2. SUBROUTINE EXTO5C(JELEM2,TRAVJ,
  3. $ TRAVX)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : EXTO5C
  8. C DESCRIPTION : Extraction de la topologie locale proprement dite
  9. C s'appuyant sur les noeuds stocke dans le maillage
  10. C JELEM2
  11. C
  12. C LANGAGE : ESOPE
  13. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  14. C mél : gounand@semt2.smts.cea.fr
  15. C***********************************************************************
  16. C APPELES :
  17. C APPELES (E/S) :
  18. C APPELES (BLAS) :
  19. C APPELES (CALCUL) :
  20. C APPELE PAR :
  21. C***********************************************************************
  22. C SYNTAXE GIBIANE :
  23. C ENTREES : JELEM2, TRAVJ
  24. C ENTREES/SORTIES : TRAVX
  25. C SORTIES :
  26. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  27. C***********************************************************************
  28. C VERSION : v1, 13/11/2025, version initiale
  29. C HISTORIQUE : v1, 13/11/2025, création
  30. C HISTORIQUE :
  31. C HISTORIQUE :
  32. C***********************************************************************
  33. -INC PPARAM
  34. -INC CCOPTIO
  35. -INC SMLENTI
  36. POINTEUR JNBL.MLENTI
  37. POINTEUR NEXTO.MLENTI
  38. -INC TMATOP2
  39. -INC TMATOP1
  40. POINTEUR TRAVX.TRAVJ
  41. POINTEUR JELEM2.MELEMX
  42. *
  43. logical lchang
  44. *
  45. * Executable statements
  46. *
  47. if (impr.ge.5) WRITE(IOIMP,*) 'Entrée dans exto5c.eso'
  48. *
  49. IDIMP=IDIM+1
  50. TOPINV=TRAVJ.TOPI
  51. JNBL=TRAVJ.NBL
  52. NEXTO=TRAVX.NBL
  53. * On gère le cas où certains noeuds de JELEM2 sont nuls ou ne sont
  54. * plus dans la topologie
  55. NPOJEL=0
  56. NL2=JELEM2.NLCOU
  57. DO IPO=1,NL2
  58. IP=JELEM2.NUMX(1,IPO)
  59. IF (IP.NE.0) THEN
  60. IF (TDC(IP).NE.0) THEN
  61. NPOJEL=NPOJEL+1
  62. ENDIF
  63. ENDIF
  64. ENDDO
  65. *
  66. * Dans le cas où NPOJEL<IDIMP : maillage vide
  67. *
  68. IF (NPOJEL.LT.IDIMP) THEN
  69. NVXCOU=0
  70. TRAVX.NVCOU=NVXCOU
  71. ELSE
  72. *
  73. * Les éléments des autres noeuds de JELEM
  74. * + on compte le nombre d'éléments à construire
  75. *
  76. NLEXT=0
  77. DO IPO=1,NL2
  78. IP=JELEM2.NUMX(1,IPO)
  79. IF (IP.NE.0) THEN
  80. LDG=TDC(IP)
  81. IF (LDG.NE.0) THEN
  82. LAST=TIC(IP)
  83. DO IDG=1,LDG
  84. IL=((LAST-1)/IDIMP)+1
  85. JNBL.LECT(IL)=JNBL.LECT(IL)+1
  86. IF (JNBL.LECT(IL).EQ.IDIMP) NLEXT=NLEXT+1
  87. LAST=TLC(LAST)
  88. ENDDO
  89. if (impr.ge.5) then
  90. * write(ioimp,*) 'Apres point IELEM(',IPOJEL,',1)=',IP
  91. * $ ,' ; NBL='
  92. write(ioimp,188) IPO,IP
  93. write(ioimp,187) (JNBL.LECT(I),I=1,jnbl.lect(/1))
  94. endif
  95. ENDIF
  96. ENDIF
  97. ENDDO
  98. *
  99. * On parcourt une dernière fois le IMIN pour construire le maillage
  100. * extrait et mettre à zéro TRAVV
  101. *
  102. NVXCOU=NLEXT
  103. CALL TOPADV(TRAVX,NVXCOU,1,lchang,'exto5c : TRAVX npojel>1')
  104. if (ierr.ne.0) return
  105. if (iveri.ge.2.and.lchang) then
  106. call vetopi(travx,'exto5c : Apres extension travx npojel>1')
  107. if (ierr.ne.0) return
  108. endif
  109. *
  110. NEXTO=TRAVX.NBL
  111. *
  112. IELL=1
  113. DO IPO=1,NL2
  114. IP=JELEM2.NUMX(1,IPO)
  115. IF (IP.NE.0) THEN
  116. LDG=TDC(IP)
  117. IF (LDG.NE.0) THEN
  118. LAST=TIC(IP)
  119. DO IDG=1,LDG
  120. IL=((LAST-1)/IDIMP)+1
  121. IF (JNBL.LECT(IL).EQ.IDIMP) THEN
  122. * Remplissage à l'envers (inverse l'ordre des éléments par rapport a
  123. * JTOPO)
  124. * IEL=IELL
  125. * Remplissage à l'endroit (garde l'ordre des éléments par rapport a
  126. * JTOPO)
  127. IEL=NLEXT+1-IELL
  128. nexto.lect(iel)=il
  129. IELL=IELL+1
  130. ENDIF
  131. * Nettoyage TRAVV NBL
  132. JNBL.LECT(IL)=0
  133. LAST=TLC(LAST)
  134. ENDDO
  135. ENDIF
  136. ENDIF
  137. ENDDO
  138. ENDIF
  139. if (impr.gt.2) then
  140. write(ioimp,*)
  141. $ 'Elements de la topologie extraits :'
  142. write(ioimp,187) (nexto.lect(I),I=1,nvxcou)
  143. endif
  144. *
  145. * Normal termination
  146. *
  147. RETURN
  148. *
  149. * Format handling
  150. *
  151. 187 FORMAT (5X,10I8)
  152. 188 FORMAT ('Apres point IELEM(',I2,',1)=',I6,' ; NBL=')
  153. *
  154. * Error handling
  155. *
  156. 9999 CONTINUE
  157. MOTERR(1:8)='EXTO5C '
  158. * 349 2
  159. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  160. CALL ERREUR(349)
  161. RETURN
  162. *
  163. * End of subroutine EXTO5C
  164. *
  165. END
  166.  
  167.  

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