Télécharger tailpo.eso

Retour à la liste

Numérotation des lignes :

tailpo
  1. C TAILPO SOURCE CB215821 24/04/12 21:17:18 11897
  2. C responsable : Mr MILLARD
  3. C=======================================================================
  4. C
  5. SUBROUTINE TAILPO(IPMODL,IPCHE,IUNIF,IRET)
  6. C
  7. C=======================================================================
  8. C ENTREES :
  9. C ---------
  10. C IPMODL= pointeur sur un MMODEL
  11. C
  12. C SORTIES :
  13. C --------
  14. C IPCHE = CHAMELEM contenant les parametres de tailles aux
  15. C point de GAUSS necessaire a modele beton OTTOSEN
  16. C IRET = 1 si succes 0 sinon
  17. C=======================================================================
  18.  
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8(A-H,O-Z)
  21.  
  22. PARAMETER(XUN=1.D0,XZER=0.D0)
  23. EXTERNAL SHAPE
  24.  
  25.  
  26. -INC PPARAM
  27. -INC CCOPTIO
  28. -INC CCHAMP
  29. -INC SMCHAML
  30. -INC SMMODEL
  31. -INC SMELEME
  32. -INC SMCOORD
  33. -INC SMINTE
  34.  
  35. SEGMENT MTRA1
  36. REAL*8 XEL(3,NBNN)
  37. REAL*8 VCOMP(NCOMP)
  38. REAL*8 SHP(6,NBNN),SHPZER(6,NBNN)
  39. REAL*8 SHPQSI(6,NBNN),SHPETA(6,NBNN),SHPDZE(6,NBNN)
  40. C* REAL*8 SHPGAU(6,NBNN)
  41. ENDSEGMENT
  42.  
  43. SEGMENT MTRA2
  44. REAL*8 BPSS(3,3),YEL(3,NBNN)
  45. ENDSEGMENT
  46.  
  47. * SEGMENT INFO
  48. * INTEGER INFELE(JG)
  49. * ENDSEGMENT
  50. C
  51. C ACTIVATION DU MODELE
  52. C
  53. MMODEL= IPMODL
  54. NSOUS=KMODEL(/1)
  55. C
  56. C CREATION DU MCHELM
  57. C
  58. N1=NSOUS
  59. L1=16
  60. N3=6
  61. SEGINI,MCHELM
  62. TITCHE='CARACTERISTIQUES'
  63. IFOCHE=IFOUR
  64. NHRM=NIFOUR
  65.  
  66. C=======================================================================
  67. C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES
  68. C=======================================================================
  69. C
  70. DO 500 ISOUS=1,NSOUS
  71. C
  72. C-----------------------------------------------------------------------
  73. C Traitement du modele de la sous-zone ISOUS
  74. C-----------------------------------------------------------------------
  75. IMODEL=KMODEL(ISOUS)
  76. IPMAIL=IMAMOD
  77. C Numero de l element fini dans nomtp de CCHAMP.INC
  78. MELE=NEFMOD
  79. NFOR=FORMOD(/2)
  80.  
  81. C Recherche de formulations particulieres
  82. CALL PLACE(FORMOD,NFOR,ITHER ,'THERMIQUE' )
  83. CALL PLACE(FORMOD,NFOR,IDIFF ,'DIFFUSION' )
  84. CALL PLACE(FORMOD,NFOR,ITHEHY,'THERMOHYDRIQUE')
  85.  
  86. C-----------------------------------------------------------------------
  87. C INFORMATION SUR L'ELEMENT FINI
  88. C-----------------------------------------------------------------------
  89. * CALL ELQUOI(MELE,0,3,IPINF,IMODEL)
  90. * IF (IERR.NE.0) THEN
  91. * CALL ERREUR(660)
  92. * RETURN
  93. * ENDIF
  94. * INFO=IPINF
  95.  
  96. IF (ITHER.NE.0 .OR. IDIFF.NE.0 .OR. ITHEHY.NE.0) THEN
  97. MFR=NUMMFR(MELE)
  98. CALL TSHAPE(MELE,'GAUSS',MINTE)
  99. MFR=NUMMFR(MELE)
  100.  
  101. ELSE
  102. MELE=INFELE(1)
  103. C Numero de la formulation de l element fini (massif ...)
  104. MFR =INFELE(13)
  105. C Pointeur sur un segment d integration
  106. MINTE=INFMOD(5)
  107. ENDIF
  108. IELE=NUMGEO(MELE)
  109.  
  110. * MINTE=INFELE(11)
  111. * SEGSUP INFO
  112. C-----------------------------------------------------------------------
  113. C- CREATION DU MCHAML DE LA SOUS ZONE---------------------
  114. C-----------------------------------------------------------------------
  115. C Remplissage de l'entete dans le MCHELM
  116. C pointeur sur le maillage de la sous zone (maillage elementaire)
  117. IMACHE(ISOUS)=IPMAIL
  118. C Nom du constituant
  119. CONCHE(ISOUS)=CONMOD
  120. C =0 pour des valeurs independantes du repere
  121. C en fait, ces valeurs dependent du repere global mais
  122. C nous voulons un champ de caracteristiques (donc idpt du repere)
  123. INFCHE(ISOUS,1)=0
  124. INFCHE(ISOUS,2)=0
  125. C numero de l harmonique de Fourier
  126. INFCHE(ISOUS,3)=NHRM
  127. C pointeur sur un SMINTE
  128. INFCHE(ISOUS,4)=MINTE
  129. C =0 pour des champs de defomations et contraintes usuels
  130. INFCHE(ISOUS,5)=0
  131. C =3 SMINTE pointe sur un segment d integration aux pts de GAUSS
  132. C pour la rigidite
  133. IF (ITHER.NE.0 .OR. IDIFF.NE.0 .OR. ITHEHY.NE.0) THEN
  134. INFCHE(ISOUS,6)=6
  135.  
  136. ELSE
  137. INFCHE(ISOUS,6)=3
  138. ENDIF
  139. C NOMBRE DES COMPOSANTES SELON LA DIMENSION
  140. N2 = 0
  141. IF (IDIM.EQ.2) N2=7
  142. IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9 )) N2=7
  143. IF (IDIM.EQ.3.AND.(MFR.EQ.1.OR.MFR.EQ.31)) N2=12
  144. C ERREUR FORMULATION INDISPONIBLE
  145. IF (N2 .EQ. 0) THEN
  146. MOTERR(1:8)=NOMFR(MFR)
  147. CALL ERREUR(193)
  148. RETURN
  149. ENDIF
  150. C-----------------------------------------------------------------------
  151. C CREATION DU MCHAML
  152. C-----------------------------------------------------------------------
  153. SEGINI MCHAML
  154. ICHAML(ISOUS)=MCHAML
  155. C-----------------------------------------------------------------------
  156. C Remplissage du MCHAML
  157. C-----------------------------------------------------------------------
  158. NCOMP = N2
  159. DO i=1,NCOMP
  160. TYPCHE(i)='REAL*8'
  161. ENDDO
  162. *
  163. C NOM DES COMPOSANTES SELON LA DIMENSION
  164. C Si l option de calcul est PLAN
  165. IF (IFOMOD.EQ.-1) THEN
  166. NOMCHE(1)='LXX '
  167. NOMCHE(2)='LYY '
  168. NOMCHE(3)='LZZ '
  169. NOMCHE(4)='LXY '
  170. NOMCHE(5)='PXX '
  171. NOMCHE(6)='PYY '
  172. NOMCHE(7)='PXY '
  173. C Si l option de calcul est AXIS ou FOUR
  174. ELSE IF (IFOMOD.EQ.0.OR.IFOMOD.EQ.1) THEN
  175. NOMCHE(1)='LRR '
  176. NOMCHE(2)='LZZ '
  177. NOMCHE(3)='LOO '
  178. NOMCHE(4)='LRZ '
  179. NOMCHE(5)='PRR '
  180. NOMCHE(6)='PZZ '
  181. NOMCHE(7)='PRZ '
  182. C Si l option de calcul est TRID CAS MASSIF
  183. ELSE IF (IFOMOD.EQ.2.AND.(MFR.EQ.1.OR.MFR.EQ.31)) THEN
  184. NOMCHE( 1)='LXX '
  185. NOMCHE( 2)='LYY '
  186. NOMCHE( 3)='LZZ '
  187. NOMCHE( 4)='LXY '
  188. NOMCHE( 5)='LXZ '
  189. NOMCHE( 6)='LYZ '
  190. NOMCHE( 7)='PXX '
  191. NOMCHE( 8)='PYY '
  192. NOMCHE( 9)='PZZ '
  193. NOMCHE(10)='PXY '
  194. NOMCHE(11)='PXZ '
  195. NOMCHE(12)='PYZ '
  196. C Si l option de calcul est TRID CAS COQUES
  197. ELSE IF (IFOMOD.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN
  198. NOMCHE(1)='LSS '
  199. NOMCHE(2)='LTT '
  200. NOMCHE(3)='LNN '
  201. NOMCHE(4)='LST '
  202. NOMCHE(5)='PSS '
  203. NOMCHE(6)='PTT '
  204. NOMCHE(7)='PST '
  205. ELSE
  206. CALL ERREUR(5)
  207. ENDIF
  208. C
  209. C-----------------------------------------------------------------------
  210. C CREATION ET REMPLISSAGE DU MELVAL DE CHAQUE COMPOSANTE
  211. C-----------------------------------------------------------------------
  212. C Nous n avons que des composantes scalaires donc N2*=0----
  213. N2PTEL=0
  214. N2EL =0
  215. C Cas 1 : Champs UNIFORMEs (valeur nulle)
  216. IF (IUNIF.NE.0) THEN
  217. N1PTEL=1
  218. N1EL=1
  219. DO i=1,NCOMP
  220. SEGINI,MELVAL
  221. IELVAL(i)=MELVAL
  222. VELCHE(1,1)=XZER
  223. ENDDO
  224. C Cas 2 : Calculs des tenseurs en chaque point d'integration !
  225. ELSE
  226. C---------INFORMATION sur les fonctions de forme ( MINTE )---------
  227. NBPGAU=POIGAU(/1)
  228. C----ACTIVATION DU MELEME : Maillage elementaire de la sous zone---
  229. MELEME=IPMAIL
  230. NBNN =NUM(/1)
  231. NBELEM=NUM(/2)
  232. N1PTEL=NBPGAU
  233. N1EL =NBELEM
  234. C-Initialisation du segment des valeurs aux points de Gauss
  235. DO i=1,NCOMP
  236. SEGINI,MELVAL
  237. IELVAL(i)=MELVAL
  238. ENDDO
  239. C-- Segments de travail
  240. SEGINI,MTRA1
  241. MTRA2=0
  242. IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9)) SEGINI,MTRA2
  243. C--------------------------------------------------------------------
  244. C initialisation des fonctions de formes aux points de GAUSS
  245. C pour l element de reference de cette sous zone
  246. C--------------------------------------------------------------------
  247. C-initialisation des fonctions de forme a l origine et sur les axes-
  248. CALL SHAPE(XZER,XZER,XZER,IELE,SHPZER,IRET)
  249. * IF (IRET.EQ.0) THEN
  250. * CALL ERREUR(662)
  251. * GOTO 592
  252. * ENDIF
  253. CALL SHAPE(XUN,XZER,XZER,IELE,SHPQSI,IRET)
  254. * IF (IRET.EQ.0) THEN
  255. * CALL ERREUR(662)
  256. * GOTO 592
  257. * ENDIF
  258. CALL SHAPE(XZER,XUN,XZER,IELE,SHPETA,IRET)
  259. * IF (IRET.EQ.0) THEN
  260. * CALL ERREUR(662)
  261. * GOTO 592
  262. * ENDIF
  263. CALL SHAPE(XZER,XZER,XUN,IELE,SHPDZE,IRET)
  264. IF (IRET.EQ.0) THEN
  265. CALL ERREUR(662)
  266. GOTO 592
  267. ENDIF
  268.  
  269. C BOUCLE SUR CHAQUE ELEMENT
  270. C-----------------------------------------------------------------------
  271. DO 1000 IB=1,NBELEM
  272. C extraction des coordonnees des noeuds de l element IB
  273. C resultat dans XEL
  274. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XEL)
  275. C
  276. C CAS DES COQUES 3D - RECHERCHE DES COORDONNEES LOCALES
  277. IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN
  278. C* IF (MTRA2.NE.0) THEN
  279. DO j=1,NBNN
  280. DO i=1,3
  281. YEL(i,j)=XEL(i,j)
  282. ENDDO
  283. ENDDO
  284. CALL VPAST(YEL,BPSS)
  285. CALL VCORL1(YEL,XEL,BPSS,NBNN)
  286. ENDIF
  287. C
  288. C BOUCLE SUR CHAQUE POINT DE GAUSS
  289. C=============================================================
  290. DO 1004 IC=1,NBPGAU
  291. DO j=1,NBNN
  292. DO i=1,6
  293. SHP(i,j)=SHPTOT(i,j,IC)
  294. ENDDO
  295. ENDDO
  296. POI=POIGAU(IC)
  297. * QSI=QSIGAU(IC)
  298. * ETA=ETAGAU(IC)
  299. * DZE=DZEGAU(IC)
  300. * CALL SHAPE(QSI,ETA,DZE,IELE,SHPGAU,IRET)
  301. * IF (IRET.EQ.0) THEN
  302. * CALL ERREUR(662)
  303. * GOTO 592
  304. * ENDIF
  305. C
  306. CALL TAILCA(MTRA1,POI,IDIM,IFOUR,NBNN,MELE,IELE,MFR,IRET)
  307. IF (IRET.EQ.0) THEN
  308. CALL ERREUR(663)
  309. GOTO 592
  310. ENDIF
  311. C
  312. DO i=1,NCOMP
  313. MELVAL=IELVAL(i)
  314. VELCHE(IC,IB)=VCOMP(i)
  315. ENDDO
  316. C
  317. 1004 CONTINUE
  318. C
  319. 1000 CONTINUE
  320.  
  321. 592 CONTINUE
  322. SEGSUP,MTRA1
  323. IF (MTRA2.NE.0) SEGSUP,MTRA2
  324. ENDIF
  325.  
  326. IF (IERR.NE.0) GOTO 9990
  327. C============================================================
  328. C------------ BOUCLE SUR LES SOUS ZONES RESTANTES -----------
  329. C============================================================
  330. 500 CONTINUE
  331.  
  332. C---------------------FIN NORMAL DU CALCUL-------------------------
  333. IPCHE=MCHELM
  334. IRET=1
  335. RETURN
  336.  
  337. C-------------------------------------------------------------------
  338. C ERREUR DANS UNE ZONE , DESACTIVATION ET RETOUR
  339. C-------------------------------------------------------------------
  340. 9990 CONTINUE
  341. SEGSUP,MCHELM
  342. IPCHE=0
  343. IRET =0
  344.  
  345. END
  346.  
  347.  
  348.  

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