Télécharger trquaf.eso

Retour à la liste

Numérotation des lignes :

trquaf
  1. C TRQUAF SOURCE GOUNAND 21/06/02 21:18:02 11022
  2. SUBROUTINE TRQUAF(CGEOME,
  3. $ MYFALS,
  4. $ IMPR,IRET)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. IMPLICIT INTEGER (I-N)
  7. C***********************************************************************
  8. C NOM : TRQUAF
  9. C PROJET : Noyau linéaire NLIN
  10. C DESCRIPTION : Transformation de CGEOME en QUAF si ça n'est pas le
  11. C cas. On utilise pour cela les éléments de référence
  12. C QUAI ou LINE
  13. C ATTENTION : les éléments QUAF créés ont des noeuds nuls
  14. C Vérifier que cela ne posera pas problème est fait dans
  15. C KECOM6 appelé par PRLIN3
  16. C
  17. C
  18. C LANGAGE : ESOPE
  19. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  20. C mél : gounand@semt2.smts.cea.fr
  21. C***********************************************************************
  22. C APPELES : KEEF (recherche de l'élément fini)
  23. C APPELE PAR :
  24. C***********************************************************************
  25. C ENTREES :
  26. C SORTIES :
  27. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  28. C***********************************************************************
  29. C VERSION : v1, 27/05/2021, version initiale
  30. C HISTORIQUE : v1, 27/05/2021, création
  31. C HISTORIQUE :
  32. C HISTORIQUE :
  33. C***********************************************************************
  34. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  35. C en cas de modification de ce sous-programme afin de faciliter
  36. C la maintenance !
  37. C***********************************************************************
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC CCGEOME
  42. -INC SMELEME
  43. POINTEUR CGEOME.MELEME
  44. POINTEUR SOUGEO.MELEME
  45. -INC SMLMOTS
  46. POINTEUR MYLMOT.MLMOTS
  47. * Mes includes persos
  48. -INC TNLIN
  49. *-INC SFALRF
  50. POINTEUR MYFALS.FALRFS
  51. *-INC SELREF
  52. POINTEUR MYLRF.ELREF
  53. *
  54. CHARACTER*4 MYDISC,NMELEM,NMELEQ
  55. PARAMETER (NQUAF=7)
  56. CHARACTER*4 NMQUAF(NQUAF)
  57. CHARACTER*4 NMQUAI(NQUAF)
  58. CHARACTER*4 NMLINE(NQUAF)
  59. INTEGER IMPR,IRET
  60. *
  61. * Fonctions appelées
  62. *
  63. INTEGER IMAX
  64. *
  65. INTEGER ICOMP ,ISOUS ,MAXISO
  66. INTEGER NSOUS,NDDL,ITQUAF,MAXCMP
  67. *
  68. DATA NMQUAF/'SEG3','TRI7','QUA9','CU27','PR21','TE15','PY19'/
  69. DATA NMQUAI/'SEG3','TRI6','QUA8','CU20','PR15','TE10','PY13'/
  70. DATA NMLINE/'SEG2','TRI3','QUA4','CUB8','PRI6','TET4','PYR5'/
  71. *
  72. * Executable statements
  73. *
  74. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans trquaf'
  75. *
  76. SEGACT CGEOME*MOD
  77. NSOUS=CGEOME.LISOUS(/1)
  78. DO 3 ISOUS=1,NSOUS
  79. SOUGEO=CGEOME.LISOUS(ISOUS)
  80. SEGACT SOUGEO
  81. ITELEM=SOUGEO.ITYPEL
  82. * Est-ce un QUAF ?
  83. NMELEM=NOMS(ITELEM)
  84. CALL PLACE5(NMQUAF,NQUAF,IQUAF,NMELEM)
  85. IF (IQUAF.EQ.0) THEN
  86. CALL PLACE5(NMLINE,NQUAF,ILINE,NMELEM)
  87. IF (ILINE.EQ.0) THEN
  88. CALL PLACE5(NMQUAI,NQUAF,IQUAI,NMELEM)
  89. IF (IQUAI.EQ.0) THEN
  90. MOTERR(1:8)=NMELEM//' '
  91. * Le type d'element fini %m1:8 ne convient pas.
  92. CALL ERREUR(926)
  93. GOTO 9999
  94. ELSE
  95. MYDISC='QUAI'
  96. IDISC=2
  97. NMELEQ=NMQUAF(IQUAI)
  98. ENDIF
  99. ELSE
  100. MYDISC='LINE'
  101. IDISC=1
  102. NMELEQ=NMQUAF(ILINE)
  103. ENDIF
  104. CALL PLACE5(NOMS,NOMBR,ITQUAF,NMELEQ)
  105. NBNN=NBNNE(ITQUAF)
  106. NBELEM=SOUGEO.NUM(/2)
  107. NBSOUS=0
  108. NBREF=0
  109. * write(ioimp,*) 'nmelem,nmeleq=',nmelem,nmeleq
  110. * write(ioimp,*) 'nbnn,nbelem=',nbnn,nbelem
  111. SEGINI MELEME
  112. ITYPEL=ITQUAF
  113. CALL KEEF(ITQUAF,MYDISC,
  114. $ MYFALS,
  115. $ MYLRF,
  116. $ IMPR,IRET)
  117. IF (IRET.NE.0) GOTO 9999
  118. * JG=NBNN
  119. SEGACT MYLRF
  120. * segprt,mylrf
  121. * stop 16
  122. NDDL=MYLRF.NPQUAF(/1)
  123. DO IBELEM=1,NBELEM
  124. DO IDDL=1,NDDL
  125. NNQUA=MYLRF.NPQUAF(IDDL)
  126. NNGLO=SOUGEO.NUM(IDDL,IBELEM)
  127. NUM(NNQUA,IBELEM)=NNGLO
  128. ENDDO
  129. ENDDO
  130. * On stocke dans la couleur du 1er element le type de discretisation
  131. * du maillage source : cela servira pour un meilleur message d'erreur
  132. ICOLOR(1)=IDISC
  133. SEGDES MYLRF
  134. * Osons
  135. SEGSUP SOUGEO
  136. CGEOME.LISOUS(ISOUS)=MELEME
  137. ELSE
  138. SEGDES SOUGEO
  139. ENDIF
  140. 3 CONTINUE
  141. SEGDES CGEOME
  142. * CALL ECROBJ('MAILLAGE',CGEOME)
  143. * CALL PRLIST
  144. * stop 16
  145. *
  146. * Normal termination
  147. *
  148. IRET=0
  149. RETURN
  150. *
  151. * Format handling
  152. *
  153. *
  154. * Error handling
  155. *
  156. 9999 CONTINUE
  157. IRET=1
  158. WRITE(IOIMP,*) 'An error was detected in subroutine trquaf'
  159. RETURN
  160. *
  161. * End of subroutine TRQUAF
  162. *
  163. END
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  

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