Télécharger cp2tra.eso

Retour à la liste

Numérotation des lignes :

cp2tra
  1. C CP2TRA SOURCE CB215821 20/11/25 13:22:48 10792
  2. SUBROUTINE CP2TRA(MYCHPO,
  3. $ MYMTRA,LVIDE,
  4. $ IMPR,IRET)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. IMPLICIT INTEGER (I-N)
  7. C***********************************************************************
  8. C NOM : CP2TRA
  9. C DESCRIPTION : Transformation d'un chpoint MYCHPO
  10. C en un objet MTRAV MYMTRA plus commode
  11. C LVIDE est vrai, si le chpoint était vide
  12. C
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C APPELES :
  19. C APPELES (E/S) :
  20. C APPELES (BLAS) :
  21. C APPELES (CALCUL) :
  22. C APPELE PAR : CP2CV6
  23. C***********************************************************************
  24. C SYNTAXE GIBIANE :
  25. C ENTREES :
  26. C ENTREES/SORTIES :
  27. C SORTIES :
  28. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  29. C***********************************************************************
  30. C VERSION : v1, 26/09/2002, version initiale
  31. C HISTORIQUE : v1, 26/09/2002, création
  32. C HISTORIQUE :
  33. C HISTORIQUE :
  34. C***********************************************************************
  35. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  36. C en cas de modification de ce sous-programme afin de faciliter
  37. C la maintenance !
  38. C***********************************************************************
  39.  
  40. -INC PPARAM
  41. -INC CCOPTIO
  42. -INC SMCOORD
  43. *
  44. -INC SMCHPOI
  45. POINTEUR MYCHPO.MCHPOI
  46. POINTEUR MYMSOU.MSOUPO
  47. POINTEUR MYMPOV.MPOVAL
  48. INTEGER N,NC
  49. -INC TMTRAV
  50. POINTEUR MYMTRA.MTRAV
  51. INTEGER NNIN,NNNOE
  52. -INC SMLMOTS
  53. POINTEUR LISCOM.MLMOTS
  54. INTEGER JGN,JGM
  55. -INC SMELEME
  56. POINTEUR MYMEL.MELEME
  57. POINTEUR MELTOT.MELEME
  58. -INC SMLENTI
  59. POINTEUR KRINCO.MLENTI
  60. POINTEUR KRIGEO.MLENTI
  61. INTEGER JG
  62. *
  63. * Includes persos
  64. *
  65. * Liste de MELEME
  66. INTEGER NBMEL
  67. SEGMENT MELS
  68. POINTEUR LISMEL(NBMEL).MELEME
  69. ENDSEGMENT
  70. POINTEUR GPMELS.MELS
  71. *
  72. LOGICAL LVIDE
  73. INTEGER IMPR,IRET
  74. *
  75. INTEGER I,IC,IGM,JGM2,ININ,INNOE,IGLOB
  76. INTEGER NTOTPO,NTOGPO
  77. *
  78. * Executable statements
  79. *
  80. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans cp2tra.eso'
  81. LVIDE=.TRUE.
  82. *
  83. * Construction de la liste des composantes et de la liste des
  84. * melemes du champoint
  85. *
  86. JGN=LOCOMP
  87. JGM=0
  88. IGM=0
  89. SEGINI,LISCOM
  90. NBMEL=0
  91. SEGINI,GPMELS
  92. *
  93. SEGACT MYCHPO
  94. NSOUPO=MYCHPO.IPCHP(/1)
  95. DO ISOUPO=1,NSOUPO
  96. MYMSOU=MYCHPO.IPCHP(ISOUPO)
  97. SEGACT MYMSOU
  98. NC=MYMSOU.NOCOMP(/2)
  99. JGM=JGM+NC
  100. SEGADJ,LISCOM
  101. DO IC=1,NC
  102. IGM=IGM+1
  103. LISCOM.MOTS(IGM)=MYMSOU.NOCOMP(IC)
  104. ENDDO
  105. GPMELS.LISMEL(**)=MYMSOU.IGEOC
  106. SEGDES MYMSOU
  107. ENDDO
  108. SEGDES MYCHPO
  109. *
  110. * Suppression des doublons dans la liste des composantes
  111. * et création du maillage total des points supports
  112. *
  113. CALL CUNIQ(LISCOM.MOTS,JGN,JGM,
  114. $ LISCOM.MOTS,JGM2,
  115. $ IMPR,IRET)
  116. IF (IRET.NE.0) GOTO 9999
  117. JGM=JGM2
  118. SEGADJ,LISCOM
  119. * In MLUNIQ : SEGINI MELTOT
  120. CALL MLUNIQ(GPMELS,MELTOT,
  121. $ IMPR,IRET)
  122. IF (IRET.NE.0) GOTO 9999
  123. SEGSUP GPMELS
  124. *
  125. * Initialisation de l'objet MTRAV
  126. *
  127. SEGACT MELTOT
  128. NTOTPO=MELTOT.NUM(/2)
  129. NNIN=JGM
  130. NNNOE=NTOTPO
  131. SEGINI MYMTRA
  132. DO ININ=1,NNIN
  133. MYMTRA.INCO(ININ)=LISCOM.MOTS(ININ)
  134. ENDDO
  135. SEGSUP LISCOM
  136. DO INNOE=1,NNNOE
  137. MYMTRA.IGEO(INNOE)=MELTOT.NUM(1,INNOE)
  138. ENDDO
  139. * SEGDES MELTOT
  140. SEGSUP MELTOT
  141. *
  142. * Remplissage de l'objet MTRAV
  143. *
  144. * Création du segment de répérage dans IGEO
  145. NTOGPO=nbpts
  146. JG=NTOGPO
  147. SEGINI,KRIGEO
  148. CALL RSETEE(MYMTRA.IGEO,NNNOE,
  149. $ KRIGEO.LECT,NTOGPO,
  150. $ IMPR,IRET)
  151. IF (IRET.NE.0) GOTO 9999
  152. * Parcours de l'objet champoint
  153. SEGACT MYCHPO
  154. NSOUPO=MYCHPO.IPCHP(/1)
  155. DO ISOUPO=1,NSOUPO
  156. MYMSOU=MYCHPO.IPCHP(ISOUPO)
  157. SEGACT MYMSOU
  158. NC=MYMSOU.NOCOMP(/2)
  159. * Création du segment de repérage dans les noms d'inconnues
  160. JG=NNIN
  161. SEGINI KRINCO
  162. CALL CREPER(JGN,NC,NNIN,
  163. $ MYMSOU.NOCOMP,MYMTRA.INCO,
  164. $ KRINCO.LECT,
  165. $ IMPR,IRET)
  166. IF (IRET.NE.0) GOTO 9999
  167. MYMEL=MYMSOU.IGEOC
  168. MYMPOV=MYMSOU.IPOVAL
  169. SEGACT MYMEL
  170. SEGACT MYMPOV
  171. N=MYMPOV.VPOCHA(/1)
  172. DO IC=1,NC
  173. ININ=KRINCO.LECT(IC)
  174. DO I=1,N
  175. IGLOB=MYMEL.NUM(1,I)
  176. INNOE=KRIGEO.LECT(IGLOB)
  177. IF (INNOE.EQ.0) THEN
  178. WRITE(IOIMP,*) 'Erreur de programmation'
  179. GOTO 9999
  180. ENDIF
  181. LVIDE=.FALSE.
  182. MYMTRA.IBIN(ININ,INNOE)=1
  183. MYMTRA.BB(ININ,INNOE)=MYMPOV.VPOCHA(I,IC)
  184. ENDDO
  185. ENDDO
  186. SEGDES MYMPOV
  187. SEGDES MYMEL
  188. SEGSUP KRINCO
  189. SEGDES MYMSOU
  190. ENDDO
  191. SEGSUP KRIGEO
  192. SEGDES MYCHPO
  193. SEGDES MYMTRA
  194. *
  195. * Normal termination
  196. *
  197. IRET=0
  198. RETURN
  199. *
  200. * Format handling
  201. *
  202. *
  203. * Error handling
  204. *
  205. 9999 CONTINUE
  206. IRET=1
  207. WRITE(IOIMP,*) 'An error was detected in subroutine cp2tra'
  208. RETURN
  209. *
  210. * End of subroutine CP2TRA
  211. *
  212. END
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  

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