Télécharger extr14.eso

Retour à la liste

Numérotation des lignes :

extr14
  1. C EXTR14 SOURCE CB215821 20/11/04 21:17:05 10766
  2. SUBROUTINE EXTR14(IPCHE1,IENT1,IENT2,IENT3,MOT)
  3. C_____________________________________________________________________
  4. C
  5. C Extrait une composante d'un MCHAML
  6. C
  7. C Entrees :
  8. C ---------
  9. C
  10. C IPCHE1 Pointeur sur un MCHAML
  11. C IENT1 Numero de la sous zone
  12. C IENT2 Numero de l'element
  13. C IENT3 Numero du point de gauss
  14. C MOT Nom de la composante a extraire ou mot cle indiquant
  15. C l'action a effectuer (TITR = TYPE ou MAIL)
  16. C
  17. C JM CAMPENON le 07/91
  18. C C La Borderie le 21/07/92 :possibilite d'extraire une composante entiere
  19. C PP 21/12/92 :extension a l'extraction d'un objet de type quelconque
  20. C_____________________________________________________________________
  21. C
  22. IMPLICIT INTEGER(I-N)
  23. IMPLICIT REAL*8(A-H,O-Z)
  24. C
  25.  
  26. -INC PPARAM
  27. -INC CCOPTIO
  28. -INC CCGEOME
  29. -INC SMCHAML
  30. -INC SMINTE
  31. -INC SMLMOTS
  32. -INC SMELEME
  33. C
  34. logical ltelq
  35. REAL*8 FLOX
  36. CHARACTER*(LOCOMP) MOT
  37. CHARACTER*(4) MOT4
  38. CHARACTER*8 TYPOBJ
  39. CHARACTER*(LOCHAI) CTEXT
  40. C
  41. MCHELM=IPCHE1
  42. SEGACT MCHELM
  43. NSOUS=ICHAML(/1)
  44. C
  45. MOT4=MOT
  46. IF ((MOT4.EQ.'TITR').OR.(MOT4.EQ.'TYPE')) THEN
  47. JGM=1
  48. JGN=TITCHE(/1)
  49. CTEXT=TITCHE
  50. SEGINI MLMOTS
  51. IPMOTS=MLMOTS
  52. MOTS(1)=CTEXT
  53. SEGDES MLMOTS
  54. CALL ECROBJ('LISTMOTS',IPMOTS)
  55. RETURN
  56. ELSEIF (MOT4.EQ.'MAIL') THEN
  57. N1 = IMACHE(/1)
  58. IF ( N1 .EQ. 0) THEN
  59. C Cas du MCHAML VIDE ==> MAILLAGE VIDE
  60. NBELEM=0
  61. NBNN =NBNNE(ILCOUR)
  62. NBREF =0
  63. NBSOUS=0
  64. SEGINI MELEME
  65. ITYPEL = ILCOUR
  66. IPP1 = MELEME
  67. ELSE
  68. IPP1=IMACHE(1)
  69. IF(NSOUS.GT.1) THEN
  70. DO 30 I=2,NSOUS
  71. IPP2=IMACHE(I)
  72. ltelq=.false.
  73. CALL FUSE (IPP1,IPP2,IRET,ltelq)
  74. IPP1=IRET
  75. 30 CONTINUE
  76. ENDIF
  77. ENDIF
  78. CALL ACTOBJ('MAILLAGE',IPP1,1)
  79. CALL ECROBJ('MAILLAGE',IPP1)
  80. GOTO 555
  81. ENDIF
  82. C
  83. IF (IENT1.GT.NSOUS) THEN
  84. C
  85. C Sous zone inexistante
  86. C
  87. CALL ERREUR(279)
  88. GOTO 555
  89. ENDIF
  90. C
  91. MELEME=IMACHE(IENT1)
  92. SEGACT MELEME
  93. NBELEM=NUM(/2)
  94. NBPGAU=NUM(/1)
  95. C
  96. N3=INFCHE(/2)
  97. IF (N3.GE.4) THEN
  98. MINTE=INFCHE(IENT1,4)
  99. IF(MINTE.NE.0)THEN
  100. SEGACT MINTE
  101. NBPGAU=POIGAU(/1)
  102. ENDIF
  103. ENDIF
  104. C
  105. IF (IENT3.GT.NBPGAU.OR.IENT2.GT.NBELEM) THEN
  106. C
  107. C Numero du point de gauss ou de l'element trop grand
  108. C
  109. CALL ERREUR(281)
  110. GOTO 555
  111. ENDIF
  112. C
  113. MCHAML=ICHAML(IENT1)
  114. SEGACT MCHAML
  115. NCOMP=IELVAL(/1)
  116. DO 100 ICOMP=1,NCOMP
  117. IF (MOT.EQ.NOMCHE(ICOMP)) GOTO 200
  118. 100 CONTINUE
  119. C
  120. C Composante inexistante
  121. C
  122. CALL ERREUR (280)
  123. GOTO 444
  124. C
  125. 200 CONTINUE
  126. MELVAL=IELVAL(ICOMP)
  127. SEGACT MELVAL
  128. C+PP
  129. IF(TYPCHE(ICOMP)(1:6).EQ.'REAL*8')THEN
  130. IGMN=MIN(IENT3,VELCHE(/1))
  131. IBMN=MIN(IENT2,VELCHE(/2))
  132. FLOX=VELCHE(IGMN,IBMN)
  133. CALL ECRREE(FLOX)
  134. ELSE
  135. TYPOBJ=TYPCHE(ICOMP)(9:16)
  136. IGMN=MIN(IENT3,IELCHE(/1))
  137. IBMN=MIN(IENT2,IELCHE(/2))
  138. IPOOBJ=IELCHE(IGMN,IBMN)
  139. C Gestion des pointeurs nuls (et oui, ca arrive)
  140. IF (IPOOBJ.EQ.0) THEN
  141. MOTERR(1:8)=TYPOBJ
  142. CALL ERREUR(356)
  143. ENDIF
  144. CALL ACTOBJ(TYPOBJ,IPOOBJ,1)
  145. CALL ECROBJ(TYPOBJ,IPOOBJ)
  146. ENDIF
  147. C+PP
  148. C
  149. 444 CONTINUE
  150. C
  151. 555 CONTINUE
  152. END
  153.  
  154.  
  155.  
  156.  

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