Télécharger mamanu.eso

Retour à la liste

Numérotation des lignes :

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

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