Télécharger mamanu.eso

Retour à la liste

Numérotation des lignes :

mamanu
  1. C MAMANU SOURCE CB215821 24/04/12 21:16:36 11897
  2.  
  3. *--------------------------------------------------------------------*
  4. * *
  5. * CREATION D'UN MCHAML PAR MANU VALEUR EN UN PT D'INTEGRATION *
  6. * (OPTION 'CHAM' PP 24/11/92) *
  7. * *
  8. *--------------------------------------------------------------------*
  9.  
  10. SUBROUTINE MAMANU
  11.  
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8(A-H,O-Z)
  14.  
  15. -INC PPARAM
  16. -INC CCOPTIO
  17.  
  18. -INC SMELEME
  19. -INC SMMODEL
  20. -INC SMCHAML
  21. -INC SMINTE
  22.  
  23. SEGMENT INFO
  24. INTEGER INFELL(JG)
  25. ENDSEGMENT
  26.  
  27. PARAMETER(NBOPT=2,NBSUP=5)
  28. CHARACTER*(4) MOOPT, LISOPT(NBOPT)
  29. CHARACTER*(8) TYPOBJ, LISSUP(NBSUP)
  30. CHARACTER*(LOCOMP) MOCOMP
  31. CHARACTER*(LOCHAI) MOCHOY, CHATYPE
  32.  
  33. DATA LISOPT / 'TYPE','POSI' /
  34. DATA LISSUP / 'NOEUD ','GRAVITE ',
  35. & 'RIGIDITE','MASSE ','STRESSES' /
  36.  
  37. IENT1 = 0
  38. IENT2 = 0
  39. IENT3 = 0
  40. MOCOMP = ' '
  41. MCHELM = 0
  42.  
  43. * 1. LECTURE IMPERATIVE DU MODELE :
  44. TYPOBJ = 'MMODEL '
  45. CALL LIROBJ(TYPOBJ,MMODEL,1,IRETOU)
  46. IF (IERR.NE.0) RETURN
  47. * Activation du modele
  48. CALL ACTOBJ(TYPOBJ,MMODEL,1)
  49.  
  50. * 2. LECTURE DES OPTIONS :
  51. * 2.1. OPTIONS PAR DEFAUT
  52. LTYPE = 1
  53. CHATYPE = ' '
  54. IPOSI = 1
  55.  
  56. * 2.2. LECTURE SOIT D'UN MOT CLE, SOIT DU NOM DE COMPOSANTE
  57. 2 CONTINUE
  58. LGCHOY = 0
  59. CALL LIRCHA(MOCHOY,1,LGCHOY)
  60. IF (IERR.NE.0) RETURN
  61.  
  62. * 0 TRAITEMENT DES MOTS CLE
  63. MOOPT = ' '
  64. MOOPT(1:4) = MOCHOY(1:4)
  65. CALL PLACE(LISOPT,NBOPT,IPLACE,MOOPT)
  66.  
  67. * 1 MOT-CLE : (SOUS-)TYPE
  68. IF (IPLACE.EQ.1) THEN
  69. CALL LIRCHA(CHATYPE,1,LTYPE)
  70. IF (IERR.NE.0) RETURN
  71.  
  72. * 2 MOT-CLE : PLACE
  73. ELSE IF (IPLACE.EQ.2) THEN
  74. CALL LIRMOT(LISSUP,NBSUP,IPOSI,1)
  75. IF (IERR.NE.0) RETURN
  76.  
  77. * 3 Autres : MOCHOY EST LA COMPOSANTE
  78. ELSE
  79. LGCHOY = MIN(LGCHOY,LOCOMP)
  80. MOCOMP(1:LGCHOY) = MOCHOY(1:LGCHOY)
  81. GOTO 10
  82.  
  83. ENDIF
  84. GOTO 2
  85.  
  86. * 3. LECTURE DES ENTIERS DEFINISSANT LE POINT D'INTEGRATION
  87. 10 CONTINUE
  88. CALL LIRENT(IENT1,1,IRETOU)
  89. IF (IERR.NE.0) RETURN
  90. CALL LIRENT(IENT2,1,IRETOU)
  91. IF (IERR.NE.0) RETURN
  92. CALL LIRENT(IENT3,0,IRETOU)
  93. IF (IERR.NE.0) RETURN
  94. IF (IRETOU.EQ.0) IENT3=1
  95.  
  96. * 4. LECTURE DE LA VALEUR A AFFECTER AU POINT D'INTEGRATION
  97. CALL LIRREE(XFLOT,1,IRETOU)
  98. IF (IERR.NE.0) RETURN
  99.  
  100. *D CALL LIRREE(XFLOT,0,IRETOU)
  101. *D IRETF = IRETOU
  102. *D IF (IRETF.EQ.0) THEN
  103. *D TYOPBJ = ' '
  104. *D CALL QUETYP(TYPOBJ,1,IRETOU)
  105. *D IF (IERR.NE.0) RETURN
  106. *D CALL LIROBJ(TYPOBJ,IPOBJ,1,IRETOU)
  107. *D IF (IERR.NE.0) RETURN
  108. *D ENDIF
  109.  
  110. * ON VERIFIE IENT1,IENT2 ET IENT3
  111. NZONE = mmodel.KMODEL(/1)
  112. IF (IENT3.LT.1 .OR. IENT3.GT.NZONE) THEN
  113. INTERR(1)=IENT3
  114. INTERR(2)=NZONE
  115. CALL ERREUR(8001)
  116. RETURN
  117. ENDIF
  118.  
  119. IMODEL = mmodel.KMODEL(IENT3)
  120. NFOR = imodel.FORMOD(/2)
  121. MELEME = imodel.IMAMOD
  122. NBELEM = meleme.NUM(/2)
  123. IF (IENT1.LT.1 .OR. IENT1.GT.NBELEM) THEN
  124. INTERR(1)=IENT1
  125. INTERR(2)=NBELEM
  126. INTERR(3)=IENT3
  127. CALL ERREUR(8002)
  128. RETURN
  129. ENDIF
  130.  
  131. C Recuperation d'informations sur le support :
  132. ISUPMO = IPOSI
  133. MINTE = 0
  134. MELE = imodel.NEFMOD
  135.  
  136. C Traitement des cas particuliers :
  137. CALL PLACE(FORMOD,NFOR,icont,'CONTACT ')
  138. CALL PLACE(FORMOD,NFOR,ichph,'CHANGEMENT_PHASE')
  139. CALL PLACE(FORMOD,NFOR,ither,'THERMIQUE ')
  140. CALL PLACE(FORMOD,NFOR,idiff,'DIFFUSION ')
  141. CALL PLACE(FORMOD,NFOR,imeta,'METALLURGIE ')
  142. iray = 0
  143. IF (ither.NE.0) THEN
  144. nmat = imodel.matmod(/2)
  145. CALL PLACE(imodel.matmod,nmat,iray,'RAYONNEMENT ')
  146. ENDIF
  147. C Pour le contact, on met aux noeuds d'office :
  148. IF (icont.NE.0 .OR. ichph.NE.0) THEN
  149. IF (IPOSI.NE.1) THEN
  150. write(ioimp,*) FORMOD(1),'POSI ==> NOEUD'
  151. CALL ERREUR(21)
  152. RETURN
  153. ENDIF
  154. ISUPMO = 1
  155. C Pour le rayonnement :
  156. ELSE IF (iray.NE.0) THEN
  157. IF (IPOSI.EQ.2) THEN
  158. write(ioimp,*) 'RAYONNEMENT POSI ==> RIGIDITE'
  159. CALL ERREUR(21)
  160. RETURN
  161. ENDIF
  162. MELE = NUMGEO(MELE)
  163. C Pour la thermique (hors rayonnement), diffusion, metallurgie
  164. ELSE IF (ither.NE.0 .OR. idiff.NE.0 .OR. imeta.NE.0) THEN
  165. IF (IPOSI.EQ.1) THEN
  166. ISUPMO = 1
  167. ELSE IF (IPOSI.EQ.2) THEN
  168. ISUPMO = 2
  169. ELSE
  170. ISUPMO = 6
  171. ENDIF
  172. ENDIF
  173.  
  174. C Nombre de points d'integration selon la formulation
  175. IF (ISUPMO.EQ.1) THEN
  176. NBPGAU = meleme.NUM(/1)
  177. ELSE
  178. c thermique (y compris rayonnement), diffusion, metallurgie
  179. IF (ither.NE.0 .OR. idiff.NE.0 .OR. imeta.NE.0) THEN
  180. IF (ISUPMO.EQ.2) THEN
  181. CALL TSHAPE(MELE,'GRAVITE',MINTE)
  182. ELSE
  183. CALL TSHAPE(MELE,'GAUSS ',MINTE)
  184. ENDIF
  185. NBPGAU = MINTE.POIGAU(/1)
  186. ELSE
  187. IF (imodel.INFMOD(/1).LT.ISUPMO+2) THEN
  188. CALL ELQUOI(MELE,0,ISUPMO,info,IMODEL)
  189. MINTE = info.INFELL(11)
  190. IF (ISUPMO.EQ.2) THEN
  191. NBPGAU = 1
  192. ELSE IF (ISUPMO.EQ.3) THEN
  193. NBPGAU = INFELL(6)
  194. ELSE IF (ISUPMO.EQ.4) THEN
  195. NBPGAU = INFELL(3)
  196. ELSE IF (ISUPMO.EQ.5) THEN
  197. NBPGAU = INFELL(4)
  198. ENDIF
  199. segsup,info
  200. ELSE
  201. MINTE = imodel.INFMOD(ISUPMO+2)
  202. IF (ISUPMO.EQ.2) THEN
  203. NBPGAU = 1
  204. ELSE IF (ISUPMO.EQ.3) THEN
  205. NBPGAU = INFELE(6)
  206. ELSE IF (ISUPMO.EQ.4) THEN
  207. NBPGAU = INFELE(3)
  208. ELSE IF (ISUPMO.EQ.5) THEN
  209. NBPGAU = INFELE(4)
  210. ENDIF
  211. ENDIF
  212. ENDIF
  213. ENDIF
  214.  
  215. IF (IENT2.LT.1 .OR. IENT2.GT.NBPGAU) THEN
  216. INTERR(1) = IENT2
  217. INTERR(2) = NBPGAU
  218. INTERR(3) = IENT3
  219. CALL ERREUR(8004)
  220. RETURN
  221. ENDIF
  222.  
  223. * CONSTRUCTION DU MCHAML
  224. L1=LTYPE
  225. N1=1
  226. N3=6
  227. SEGINI,MCHELM
  228. TITCHE(1:L1) = CHATYPE(1:LTYPE)
  229. CONCHE(1) = CONMOD
  230. IMACHE(1) = MELEME
  231. IFOCHE = IFOUR
  232. INFCHE(1,1) = 0
  233. INFCHE(1,2) = 0
  234. INFCHE(1,3) = NIFOUR
  235. INFCHE(1,4) = MINTE
  236. INFCHE(1,5) = 0
  237. INFCHE(1,6) = ISUPMO
  238.  
  239. N2 = 1
  240. SEGINI,MCHAML
  241. ICHAML(1) = MCHAML
  242. NOMCHE(1) = MOCOMP
  243. *D IF (IRETF.NE.0) THEN
  244. TYPCHE(1)='REAL*8 '
  245. N1PTEL = NBPGAU
  246. N1EL = NBELEM
  247. N2PTEL = 0
  248. N2EL = 0
  249. SEGINI,MELVAL
  250. VELCHE(IENT2,IENT1)=XFLOT
  251. *D ELSE
  252. *D TYPCHE(1) = 'POINTEUR'//TYPOBJ
  253. *D N1PTEL=0
  254. *D N1EL=0
  255. *D N2PTEL=NBPGAU
  256. *D N2EL=NBELEM
  257. *D SEGINI,MELVAL
  258. *D IELCHE(IENT2,IENT1)=IPOBJ
  259. *D ENDIF
  260. IELVAL(1)=MELVAL
  261.  
  262. * ECRITURE DU RESULTAT
  263. TYPOBJ = 'MCHAML '
  264. CALL ACTOBJ(TYPOBJ,MCHELM,1)
  265. CALL ECROBJ(TYPOBJ,MCHELM)
  266.  
  267. c RETURN
  268. END
  269.  
  270.  
  271.  
  272.  

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