Télécharger manuc5.eso

Retour à la liste

Numérotation des lignes :

manuc5
  1. C MANUC5 SOURCE CB215821 24/04/12 21:16:37 11897
  2.  
  3. *--------------------------------------------------------------------*
  4. * *
  5. * CREATION D'UN NOUVEAU CHAMELEM PAR MANU *
  6. * *
  7. *--------------------------------------------------------------------*
  8. SUBROUTINE MANUC5
  9.  
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8(A-H,O-Z)
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15.  
  16. -INC SMLMOTS
  17. -INC SMLREEL
  18. -INC SMLENTI
  19. -INC SMELEME
  20. -INC SMMODEL
  21. *
  22. CHARACTER*(LOCOMP) MOCOMP,MOTYPE(3)
  23. CHARACTER*(4) MOT4
  24. CHARACTER*8 MOCHOY
  25. CHARACTER*8 CAR
  26. CHARACTER*16 JECONS
  27. CHARACTER*(LOCHAI) JEROME,CHAIN1
  28. CHARACTER*8 LISMOT(5),REPA(1)
  29. DATA MOTYPE/'TYPE','CONS','EVOL'/
  30. DATA REPA/'REPA'/
  31. DATA LISMOT/'NOEUD','GRAVITE','RIGIDITE','MASSE','STRESSES'/
  32. *
  33. * Initialisation des segments
  34. *
  35. IPMODL=0
  36. IPMAIL=0
  37. IPLAC =0
  38. *
  39. * LECTURE D'UN MODELE
  40. *
  41. CALL LIROBJ('MMODEL ',IPMODL,0,IRET)
  42. IF (IRET .EQ. 1) CALL ACTOBJ('MMODEL ',IPMODL,1)
  43. IF (IERR.NE.0) RETURN
  44. IF (IRET.EQ.0) THEN
  45. *
  46. * SINON D'UN MAILLAGE
  47. *
  48. MOTERR(1:8)='MAILLAGE'
  49. CALL MESLIR(-137)
  50. CALL LIROBJ('MAILLAGE',IPMAIL,0,IRET)
  51. IF (IERR.NE.0) RETURN
  52. *
  53. * SINON lecture du mot EVOL
  54. *
  55. IF (IRET.EQ.1) THEN
  56. CALL ACTOBJ('MAILLAGE',IPMAIL,1)
  57. ELSE
  58. CALL LIRMOT(MOTYPE(3),1,IPLAC,0)
  59. IF (IERR.NE.0) RETURN
  60. IF (IPLAC.NE.1) THEN
  61. CALL ERREUR(907)
  62. RETURN
  63. ENDIF
  64. IF (IPLAC.EQ.1) THEN
  65. CALL MANUC8
  66. RETURN
  67. ENDIF
  68. ENDIF
  69. ENDIF
  70. *
  71. JG=0
  72. JGN=LOCOMP
  73. JGM=0
  74. CALL oooprl(1)
  75. SEGINI,MLMOTS,MLMOT1,MLMOT2,MLMOT3,MLREE1,MLENT2
  76. CALL oooprl(0)
  77.  
  78. L1 = 0
  79. LL1 = 0
  80. IPLAC = 0
  81. *
  82. itart=0
  83. CALL LIRMOT(REPA,1,itart,0)
  84. IF (IERR.NE.0) GOTO 99
  85. *
  86. 10 CONTINUE
  87. *
  88. * ON DESIRE LIRE UNE COMPOSANTE
  89. *
  90. IRCHOI = 0
  91. CALL LIRCHA(CHAIN1,0,IRCHOI)
  92. IF (IERR.NE.0) GOTO 99
  93. IF (IRCHOI.EQ.0) GO TO 20
  94. MOCOMP=CHAIN1
  95. MOT4 =CHAIN1
  96. *
  97. * SI ON A LU LE MOT TYPE
  98. *
  99. IF (MOT4.EQ.MOTYPE(1)) THEN
  100. CALL LIRCHA(JEROME,1,L1)
  101. GOTO 10
  102. ENDIF
  103. *
  104. * SI ON A LU LE MOT CONS
  105. *
  106. IF(IPMAIL.NE.0)THEN
  107. IF(MOT4.EQ.MOTYPE(2)) THEN
  108. CALL LIRCHA(JECONS,1,LL1)
  109. GO TO 10
  110. ENDIF
  111. ENDIF
  112. IF(IPMODL.NE.0.AND.IPLAC.EQ.0)THEN
  113. MOCHOY=CHAIN1
  114. CALL PLACE(LISMOT,5,IPLAC,MOCHOY)
  115. IF (IPLAC.NE.0)GOTO 10
  116. ENDIF
  117. *
  118. * SINON ON TESTE LE NOMBRE DE CARACTERES LUS
  119. *
  120. IF(IRCHOI.GT.LOCOMP) THEN
  121. CALL ERREUR(536)
  122. GOTO 99
  123. ENDIF
  124.  
  125. * On recupere la valeur de la composante (REEL*8 ou POINTEURXXX)
  126. CALL LIRREE(RECOM,0,IRET2)
  127. IF (IRET2.EQ.1) THEN
  128. MLMOT1.MOTS(**) = MOCOMP
  129. JG=MLREE1.PROG(/1)+1
  130. SEGADJ MLREE1
  131. MLREE1.PROG(JG)=RECOM
  132.  
  133. ELSE
  134. CALL QUETYP(CAR,1,IRET1)
  135. IF (IERR.NE.0) GO TO 99
  136. CALL LIROBJ(CAR,IPTRUC,0,IRET1)
  137. IF(IRET1 .EQ. 1) CALL ACTOBJ(CAR,IPTRUC,1)
  138. IF (IERR.NE.0) GO TO 99
  139. *
  140. * ON A LU UN OBJET DE TYPE AUTRE QU'UN FLOTTANT
  141. *
  142. MLMOT2.MOTS(**) = MOCOMP
  143. MLMOT3.MOTS(**) = CAR(1:4)
  144. MOTS(**) = CAR(5:8)
  145. JG = MLENT2.LECT(/1)+1
  146. SEGADJ MLENT2
  147. MLENT2.LECT(JG)=IPTRUC
  148. ENDIF
  149. GOTO 10
  150. *
  151. 20 CONTINUE
  152.  
  153. IPOI1 = 0
  154. IF ( L1.EQ.0) THEN
  155. JEROME=' '
  156. L1 = 1
  157. ENDIF
  158. *
  159. * RECUPERATION DES ZONES ELEMENTAIRES DU MAILLAGE
  160. *
  161. IF(IPMAIL.NE.0)THEN
  162. MELEME=IPMAIL
  163. JG=LISOUS(/1)
  164. IF (JG.EQ.0) THEN
  165. JG=1
  166. JGN=16
  167. JGM=JG
  168. CALL oooprl(1)
  169. SEGINI MLENT1,MLMOT4
  170. CALL oooprl(0)
  171. MLENT1.LECT(1)=IPMAIL
  172. ELSE
  173. JGN=16
  174. JGM=JG
  175. CALL oooprl(1)
  176. SEGINI MLENT1,MLMOT4
  177. CALL oooprl(0)
  178. DO 22 I =1,JG
  179. MLENT1.LECT(I)=LISOUS(I)
  180. 22 CONTINUE
  181. ENDIF
  182. *
  183. IF ( LL1.EQ.0) THEN
  184. JECONS=' '
  185. ENDIF
  186. *
  187. * ON STOCKE LE NOM DU COMPOSANT
  188. DO 23 I=1,JG
  189. MLMOT4.MOTS(I)=JECONS
  190. 23 CONTINUE
  191. *
  192. CALL MANUC4(MLENT1,MLMOT1,MLMOT2,MLMOT3,MLMOTS,MLREE1,
  193. & MLENT2,JEROME,L1,MLMOT4,IPOI1)
  194. *
  195. * Suppression des segments
  196. *
  197. SEGSUP,MLENT1
  198. SEGSUP,MLMOT4
  199.  
  200. ELSE
  201. IF(IPLAC.EQ.0)IPLAC=1
  202. MMODEL=IPMODL
  203. N1 = KMODEL(/1)
  204. CALL MANUC6(IPMODL,MLMOT1,MLMOT2,MLMOT3,MLMOTS,MLREE1,
  205. & MLENT2,JEROME,L1,IPLAC,IPOI1,itart)
  206. ENDIF
  207.  
  208. IF (IERR.NE.0) GOTO 99
  209.  
  210. * Ecriture du CHAMP resultat :
  211. CALL ACTOBJ('MCHAML ',IPOI1,1)
  212. CALL ECROBJ('MCHAML ',IPOI1)
  213. *
  214. * Suppression des segments
  215. *
  216. 99 CONTINUE
  217. SEGSUP,MLMOTS,MLMOT1,MLMOT2,MLMOT3,MLREE1,MLENT2
  218.  
  219. END
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  

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