Télécharger excoor.eso

Retour à la liste

Numérotation des lignes :

excoor
  1. C EXCOOR SOURCE PASCAL 21/06/22 21:15:04 11039
  2. C EXTRAIT LA IEME COORDONNEE D'UN POINT. SI IDIM+1 REND LA DENSITE
  3. C SI PAS DE NOMBRE SPECIFIE REND TOUTES LES COORDONNEES
  4. C DANS LE CAS D'OBJET MELEME FAIT LA MEME CHOSE SAUF QU'IL CREE
  5. C AUTANT DE CHPOIN QUE IDIM
  6.  
  7. SUBROUTINE EXCOOR
  8.  
  9. IMPLICIT INTEGER(I-N)
  10. IMPLICIT REAL*8(A-H,O-Z)
  11.  
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15. -INC SMCOORD
  16. -INC SMCHAML
  17.  
  18. PARAMETER ( NBTYP = 5 )
  19. CHARACTER*8 LISTYP(NBTYP),MOTYPE
  20. *
  21. DATA LISTYP/'POINT ','MAILLAGE','MCHAML ', 'CHPOINT ',
  22. & 'MMODEL '/
  23. *
  24. segact mcoord
  25. * LECTURE DE LA COMPOSANTE ( EVENTUELLE )
  26. *
  27. CALL LIRENT(ICOMP,0,IRT2)
  28. *
  29. CALL QUETYP(MOTYPE,0,IRETOU)
  30. IF (IRETOU.EQ.0) THEN
  31. CALL ERREUR ( 533)
  32. RETURN
  33. ENDIF
  34. CALL PLACE(LISTYP,NBTYP,IPOS,MOTYPE)
  35. IF (IPOS.EQ.0) THEN
  36. MOTERR(1:8)=MOTYPE
  37. CALL ERREUR(39)
  38. RETURN
  39. ENDIF
  40. CALL LIROBJ(MOTYPE,IRT1,1,IRETOU)
  41. *
  42. IF(IPOS.NE.1) THEN
  43. IF((ICOMP.LE.0.OR.ICOMP.GT.IDIM+1).AND.IRT2.EQ.1) THEN
  44. INTERR(1)=ICOMP
  45. CALL ERREUR(36)
  46. RETURN
  47. ENDIF
  48. IF(IRT2.EQ.0) THEN
  49. IVAL=0
  50. ELSE
  51. IVAL=ICOMP
  52. ENDIF
  53. ENDIF
  54. *
  55. GO TO (100,200,300,400,500),IPOS
  56. C
  57. C CAS DU POINT
  58. C
  59. 100 CONTINUE
  60. IP=IRT1
  61. IC=ICOMP
  62. IF (IRT2.EQ.1.AND.(IC.LE.0.OR.IC.GT.IDIM+1)) CALL ERREUR(36)
  63. IF (IERR.NE.0) RETURN
  64. SEGACT MCOORD
  65. IREF=(IP-1)*(IDIM+1)
  66. IF(IRT2.EQ.0) GOTO 10
  67. XRET=XCOOR(IREF+IC)
  68. CALL ECRREE(XRET)
  69. GOTO 20
  70. 10 CONTINUE
  71. DO 11 I=1,IDIM
  72. II=IDIM+1-I
  73. XRET=XCOOR(IREF+II)
  74. CALL ECRREE(XRET)
  75. 11 CONTINUE
  76. 20 CONTINUE
  77. RETURN
  78. C
  79. C CAS DU MELEME
  80. C
  81. 200 CONTINUE
  82. CALL CHPCOO(IVAL,IRT1)
  83. RETURN
  84. C
  85. C CAS DU MCHAML
  86. C
  87. 300 CONTINUE
  88. IPCHE1=0
  89. IPCHE2=0
  90. IPCHE3=0
  91. MCHEL1=IRT1
  92. 350 CONTINUE
  93. CALL ACTOBJ('MCHAML',MCHEL1,1)
  94. I1=MCHEL1.IMACHE(/1)
  95. C MCHAML VIDE
  96. IF (I1.EQ.0) THEN
  97. N1=0
  98. N3=0
  99. L1=8
  100. SEGINI,MCHEL2
  101. MCHEL2.IFOCHE=IFOUR
  102. MCHEL2.TITCHE=' '
  103. IPCHE1=MCHEL2
  104. IF (IVAL.EQ.0) THEN
  105. IF (IDIM.EQ.2) THEN
  106. SEGINI,MCHEL3
  107. MCHEL3.IFOCHE=IFOUR
  108. MCHEL3.TITCHE=' '
  109. IPCHE2=MCHEL3
  110. ELSEIF (IDIM.EQ.3) THEN
  111. SEGINI,MCHEL3
  112. MCHEL3.IFOCHE=IFOUR
  113. MCHEL3.TITCHE=' '
  114. IPCHE2=MCHEL3
  115. SEGINI,MCHEL4
  116. MCHEL4.IFOCHE=IFOUR
  117. MCHEL4.TITCHE=' '
  118. IPCHE3=MCHEL4
  119. ENDIF
  120. ENDIF
  121. C MCHAML NON VIDE
  122. ELSE
  123. CALL CHELCO(IVAL,MCHEL1,IPCHE1,IPCHE2,IPCHE3)
  124. ENDIF
  125. IF(IERR.EQ.0)THEN
  126. CALL ACTOBJ('MCHAML',IPCHE1,1)
  127. CALL ECROBJ('MCHAML',IPCHE1)
  128. IF(IPCHE2.NE.0)THEN
  129. CALL ACTOBJ('MCHAML',IPCHE2,1)
  130. CALL ECROBJ('MCHAML',IPCHE2)
  131. ENDIF
  132. IF(IPCHE3.NE.0)THEN
  133. CALL ACTOBJ('MCHAML',IPCHE3,1)
  134. CALL ECROBJ('MCHAML',IPCHE3)
  135. ENDIF
  136. ENDIF
  137. RETURN
  138. C
  139. C CAS DU CHPOINT
  140. C
  141. 400 CONTINUE
  142. CALL CHPTCO(IVAL,IRT1)
  143. RETURN
  144.  
  145. C
  146. C CAS DU MMODEL
  147. C
  148. 500 CONTINUE
  149. C IRT1 : pointeur sur objet MMODEL
  150. CALL ACTOBJ('MMODEL ',IRT1,1)
  151. IF (IERR.NE.0) RETURN
  152. CALL ZEROP(IRT1,'NOEUD',MCHEL1)
  153. IF (IERR.NE.0) RETURN
  154. GOTO 350
  155.  
  156. END
  157.  
  158.  
  159.  
  160.  

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