Télécharger sictens.eso

Retour à la liste

Numérotation des lignes :

sictens
  1. C SICTENS SOURCE OF166741 25/11/04 21:16:07 12349
  2.  
  3. C Modèle ONERA pseudo-tensoriel pour le SICf/SiC tissé
  4. C variables en entree
  5. C
  6. C WRK0,KRK1,WRK5 pointeurs sur des segments de travail
  7. C
  8. C
  9. C WRK0:
  10. C XMAT(NMATT): tableau composantes materiaux
  11. C
  12. C WRK1:
  13. C SIG0(NSTRS) : contraintes au debut du pas
  14. C VAR0(NVARI) : variables internes au debut du pas
  15. C DEPST(NSTRS): increment de deformation totale
  16. C
  17. C WRK22:
  18. C XXE: coordonnees de l'element en double precison
  19. C
  20. C WTRAV:
  21. C TXR: cosinus directeurs des axes locaux de l'element massif
  22. C
  23. C
  24. C WRK5:
  25. C
  26. C
  27. C
  28. C NSTRS nombre de composantes dans les vecteurs des contraintes
  29. C et les vecteurs des deformations
  30. C
  31. C NVARI nombre de variables internes (doit etre egal a 3)
  32. C
  33. C NMATT nombre de constantes du materiau
  34. C
  35. C
  36. C
  37. C variables en sortie
  38. C
  39. C VARF variables internes finales dans WRK0
  40. C
  41. C SIGF contraintes finales dans WRK0
  42. C
  43. SUBROUTINE SICTENS(WRK52,WRK53,WRK54,WRK22,IB,IGAU,NVARI,NBPGAU
  44. & ,necou,iecou)
  45.  
  46. IMPLICIT INTEGER(I-N)
  47. IMPLICIT REAL*8(A-H,O-Z)
  48.  
  49. -INC PPARAM
  50. -INC CCOPTIO
  51. -INC CCREEL
  52. -INC DECHE
  53. -INC TECOU
  54.  
  55. SEGMENT WRK22
  56. REAL*8 XXE(3,NBNNbi)
  57. ENDSEGMENT
  58.  
  59. DIMENSION ZIDAUX(6,6)
  60. DIMENSION H1 (6,6), H2(6,6), H3(6,6), H4(6,6), H5(6,6)
  61. DIMENSION H01 (6,6), H02(6,6), H03(6,6), H04(6,6), H05(6,6)
  62. DIMENSION SEFF(6,6),CEFF(6,6)
  63. *
  64. * DORTH : DEFO DAN S LE REPÈRE OrTHO
  65. * sigfv : CONTRAINTE RÉORGANISÉES ORDRE CASTEM
  66. * DEFI : DÉFORMATIONS À LA FIN DU PAS PRÉCEDENT
  67. * depst : INCREMENT DE DÉFO DANS LE REPÈRE GÉNÉ
  68. * depstV : INCREMENT DE DÉFO DANS LE REPÈRE GÉNÉ
  69. * epsel : DEFO ELASTIQUE CALCULÉE POUR L'OBTENTION DES CONTRAINTES
  70. DIMENSION SORTH(6), SIGFV(6),EPSIN(6),EPSINV(6),
  71. & DEFI(6), DEPSTV(6), DORTH(6), EPSEL(6),EPSTFV(6),
  72. & SORTH1(6),SORTH2(6)
  73. * defoth : DEFO DANS LE REPERE ORTHO SOus FORME (3X3)
  74. * pOUR LE CALCUL DES DEFO PROPRES PUIS PARTIE >0 DES DÉFO PROPRES
  75. * xprop : DIRECTIONS PROPRES/REPERE ortho
  76. * xpinv : MATRICE INVERSE DE CHANGEMENT DE REPERE XPROP
  77. * xPINVT : MATRICE TRANSPOSÉE DE XPINV
  78. * defotht : MATRICE TEMPORAIRE POUR LE CHANGEMENT DE REPÈRE
  79. * epsclo : DEFO DE FERMETURE (CLOSURE)
  80. * EPSBAR : DEFO - DEFO CLOSURE
  81. DIMENSION DEFOTH(3,3),PROP(3),XPROP(3,3),XPINV(3,3),
  82. & DEFOTHT(3,3),XPINVT(3,3),EPSCLO(6),
  83. & EPSBAR(6),EPSIM(6),SIGPLU(6)
  84. DIMENSION ZK1(6,6),ZK2(6,6),ZK3(6,6),ZK4(6,6),ZK5(6,6)
  85. & ,TERME(6,6)
  86. DIMENSION EPSS1(6),EPSR1(6)
  87. *
  88. * DRIVING FORCES NORMALES ET TRANSVERSALES
  89. * dom : VARIABLES D'ENDOMAGEMENT
  90. DIMENSION Y(5),DOM(5)
  91. * DEPSIF (DELTA EPSILON I f :
  92. * LA FERMETURE COMMENCE POUR epsbar = DELTA EPSILON
  93. * finit POUR epsbar = DELTA EPSILON
  94. * ZNUACT INDICE D'ACTIVATION =1 : ACTIVE
  95. * =0 : PASSIVE
  96. DIMENSION DEPSIF(5),ZNUACT(5)
  97. *
  98. * Pseudo contraintes pour le calcul des
  99. * incréments de defo residuelles EPSR1 et stockées EPS1
  100. DIMENSION SOMS(6,6),SOMR(6,6),
  101. $ SISIS(6),SISIR(6)
  102. DIMENSION Y0(5),AIF(5),PY(5),
  103. $ YC(5),DC(5),DEPSIF0(5)
  104. DATA ( ( H1(I,J), J=1,6), I=1,6)
  105. & /1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  106. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  107. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  108. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  109. & 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
  110. & 0.0, 0.0, 0.0, 0.0, 0.0, 1.0/
  111. DATA ( ( H2(I,J), J=1,6), I=1,6)
  112. & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  113. & 0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
  114. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  115. & 0.0, 0.0, 0.0, 1., 0.0, 0.0,
  116. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  117. & 0.0, 0.0, 0.0, 0.0, 0.0, 1./
  118. *
  119. DATA ( ( H3(I,J), J=1,6), I=1,6)
  120. & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  121. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  122. & 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
  123. & 0.0, 0.0, 0.0, 1.0, 0.0, 0.0,
  124. & 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
  125. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/
  126. * + 45°
  127. DATA ( ( H4(I,J), J=1,6), I=1,6)
  128. & /1.0, 0.0, 0.0, 0.0, 0.0, 0.5,
  129. & 0.0, 1.0, 0.0, 0.0, 0.0, 0.5,
  130. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  131. & 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
  132. & 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
  133. & 0.5, 0.5, 0.0, 0.0, 0.0, 1.0/
  134. * -45°
  135. DATA ( ( H5(I,J), J=1,6), I=1,6)
  136. & /1.0, 0.0, 0.0, 0.0, 0.0, -0.5,
  137. & 0.0, 1.0, 0.0, 0.0, 0.0, -0.5,
  138. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  139. & 0.0, 0.0, 0.0, 1.0, -1.0, 0.0,
  140. & 0.0, 0.0, 0.0, -1.0, 1.0, 0.0,
  141. & -0.5, -0.5, 0.0, 0.0, 0.0, 1.0/
  142.  
  143. *
  144. * Attention on rentre les racines carrée des valeurs
  145. * Y0 et YC telles que définies formules (2.21) et (2.24)
  146. * dans SEMT/LM2S/RT/05-034
  147. * PHENOMENOLOGICAL COEFFICIENTS
  148. * Coefficients pour les matrices H
  149. *
  150. * H1N, H1HP, H1P
  151. * H2N, H2HP, H2P
  152. * H3N, H3HP, H3P
  153. * H4N, H4HP, H4P
  154. *
  155. * scalar damage indicators
  156. * DOM1,DOM2,DOM3,DOM4,DOM5
  157. * YGR1, YGR2, YGR3, YW(6)
  158. * YEQ1, YEQ2, YEQ3
  159. *
  160. ***** INITIALIZATION VARIABLES
  161. *
  162. lhookl = WRK53.LHOOK
  163. * Proprietes materiau
  164. YG1 = XMAT(1)
  165. YG2 = XMAT(2)
  166. YG3 = XMAT(3)
  167. XNU12 = XMAT(4)
  168. XNU23 = XMAT(5)
  169. XNU13 = XMAT(6)
  170. G12 = XMAT(7)
  171. G23 = XMAT(8)
  172. G13 = XMAT(9)
  173. * Nombre de IIPARAM obligatoires pour le modèle 15 + ALP1 ALP2 ALP3 et RHO =19
  174. NOBL = 19
  175. * On extrait les valeurs facultatives du modèle
  176. H1N = XMAT(NOBL + 1)
  177. IF(IVALMA(NOBL+1).EQ.0.) H1N = 1.
  178. H1HP = XMAT(NOBL + 2)
  179. IF(IVALMA(NOBL+2).EQ.0.) H1HP = 0.7
  180. H1P = XMAT(NOBL + 3)
  181. IF(IVALMA(NOBL+3).EQ.0.) H1P = 0.45
  182. H2N = XMAT(NOBL + 4)
  183. IF(IVALMA(NOBL+4).EQ.0.) H2N = 1.
  184. H2HP = XMAT(NOBL + 5)
  185. IF(IVALMA(NOBL+5).EQ.0.) H2HP = 0.7
  186. H2P = XMAT(NOBL + 6)
  187. IF(IVALMA(NOBL+6).EQ.0.) H2P = 0.45
  188. H3N = XMAT(NOBL+7)
  189. IF(IVALMA(NOBL+7).EQ.0.) H3N = 1.
  190. H3P = XMAT(NOBL + 8)
  191. IF(IVALMA(NOBL+8).EQ.0.) H3P = 0.7
  192. H4N = XMAT(NOBL + 9)
  193. IF(IVALMA(NOBL+9).EQ.0.) H4N = 1.
  194. H4HP = XMAT(NOBL + 10)
  195. IF(IVALMA(NOBL+10).EQ.0.) H4HP = 0.7
  196. H4P = XMAT(NOBL + 11)
  197. IF(IVALMA(NOBL+11).EQ.0.) H4P = 1.2
  198. Y0(1) = XMAT(NOBL + 12)
  199. IF(IVALMA(NOBL+12).EQ.0.) Y0(1) =173.205
  200. Y0(2) = XMAT(NOBL + 13)
  201. IF(IVALMA(NOBL+13).EQ.0.) Y0(2) =173.205
  202. Y0(3) = XMAT(NOBL + 14)
  203. IF(IVALMA(NOBL+14).EQ.0.) Y0(3) =173.205
  204. Y0(4) = XMAT(NOBL + 15)
  205. IF(IVALMA(NOBL+15).EQ.0.) Y0(4) =100.00
  206. Y0(5) = XMAT(NOBL + 16)
  207. IF(IVALMA(NOBL+16).EQ.0.) Y0(5) =100.00
  208. YC(1) = XMAT(NOBL + 17)
  209. IF(IVALMA(NOBL+17).EQ.0.) YC(1) =1870.83
  210. YC(2) = XMAT(NOBL + 18)
  211. IF(IVALMA(NOBL+18).EQ.0.) YC(2) =1870.83
  212. YC(3) = XMAT(NOBL + 19)
  213. IF(IVALMA(NOBL+19).EQ.0.) YC(3) =1870.83
  214. YC(4) = XMAT(NOBL + 20)
  215. IF(IVALMA(NOBL+20).EQ.0.) YC(4) =3464.1
  216. YC(5) = XMAT(NOBL + 21)
  217. IF(IVALMA(NOBL+21).EQ.0.) YC(5) =3464.1
  218. DC(1) = XMAT(NOBL + 22)
  219. IF(IVALMA(NOBL+22).EQ.0.) DC(1) =4.
  220. DC(2) = XMAT(NOBL + 23)
  221. IF(IVALMA(NOBL+23).EQ.0.) DC(2) =4.
  222. DC(3) = XMAT(NOBL + 24)
  223. IF(IVALMA(NOBL+24).EQ.0.) DC(3) =4.
  224. DC(4) = XMAT(NOBL + 25)
  225. IF(IVALMA(NOBL+25).EQ.0.) DC(4) =4.
  226. DC(5) = XMAT(NOBL + 26)
  227. IF(IVALMA(NOBL+26).EQ.0.) DC(5) =4.
  228. PY(1) = XMAT(NOBL + 27)
  229. IF(IVALMA(NOBL+27).EQ.0.) PY(1) =1.
  230. PY(2) = XMAT(NOBL + 28)
  231. IF(IVALMA(NOBL+28).EQ.0.) PY(2) =1.
  232. PY(3) = XMAT(NOBL + 29)
  233. IF(IVALMA(NOBL+29).EQ.0.) PY(3) =1.
  234. PY(4) = XMAT(NOBL + 30)
  235. IF(IVALMA(NOBL+30).EQ.0.) PY(4) =1.2
  236. PY(5) = XMAT(NOBL + 31)
  237. IF(IVALMA(NOBL+31).EQ.0.) PY(5) =1.2
  238. B1 = XMAT(NOBL + 32)
  239. IF(IVALMA(NOBL+32).EQ.0.) B1 =1.
  240. B2 = XMAT(NOBL + 33)
  241. IF(IVALMA(NOBL+33).EQ.0.) B2 =1.
  242. B3 = XMAT(NOBL + 34)
  243. IF(IVALMA(NOBL+34).EQ.0.) B3 =1.
  244. DELTAL = XMAT(NOBL + 35)
  245. IF(IVALMA(NOBL+35).EQ.0.) DELTAL =0.
  246. TZERO = XMAT(NOBL + 36)
  247. IF(IVALMA(NOBL+36).EQ.0.) TZERO =0.
  248. DEPSIF0(1) = XMAT(NOBL + 37)
  249. IF(IVALMA(NOBL+37).EQ.0.) DEPSIF0(1) =0.0003
  250. DEPSIF0(2) = XMAT(NOBL + 38)
  251. IF(IVALMA(NOBL+38).EQ.0.) DEPSIF0(2) =0.0003
  252. DEPSIF0(3) = XMAT(NOBL + 39)
  253. IF(IVALMA(NOBL+39).EQ.0.) DEPSIF0(3) =0.0003
  254. DEPSIF0(4) = XMAT(NOBL + 40)
  255. IF(IVALMA(NOBL+40).EQ.0.) DEPSIF0(4) =0.0005
  256. DEPSIF0(5) = XMAT(NOBL + 41)
  257. IF(IVALMA(NOBL+41).EQ.0.) DEPSIF0(5) =0.0005
  258. AIF(1) = XMAT(NOBL + 42)
  259. IF(IVALMA(NOBL+42).EQ.0.) AIF(1) =0.5
  260. AIF(2) = XMAT(NOBL + 43)
  261. IF(IVALMA(NOBL+43).EQ.0.) AIF(2) =0.5
  262. AIF(3) = XMAT(NOBL + 44)
  263. IF(IVALMA(NOBL+44).EQ.0.) AIF(3) =0.5
  264. AIF(4) = XMAT(NOBL + 45)
  265. IF(IVALMA(NOBL+45).EQ.0.) AIF(4) =1.
  266. AIF(5) = XMAT(NOBL + 46)
  267. IF(IVALMA(NOBL+46).EQ.0.) AIF(5) =1.
  268. ETA1 = XMAT(NOBL + 47)
  269. IF(IVALMA(NOBL+47).EQ.0.) ETA1 =0.1
  270. ETA2 = XMAT(NOBL + 48)
  271. IF(IVALMA(NOBL+48).EQ.0.) ETA2 =0.1
  272. ETA3 = XMAT(NOBL + 49)
  273. IF(IVALMA(NOBL+49).EQ.0.) ETA3 =0.0
  274. ETA4 = XMAT(NOBL + 50)
  275. IF(IVALMA(NOBL+50).EQ.0.) ETA4 =0.1
  276. ETA5 = XMAT(NOBL + 51)
  277. IF(IVALMA(NOBL+51).EQ.0.) ETA5 =0.1
  278.  
  279. * Pour debuggage
  280. IIIPARAM=0
  281. * Variables internes du modele
  282. DOM1=VAR0(2)
  283. DOM2=VAR0(3)
  284. DOM3=VAR0(4)
  285. DOM4=VAR0(5)
  286. DOM5=VAR0(6)
  287. *
  288. ****** CALCUL DE LA DEFORMATION INITIALE A PARTIR
  289. ****** DES CONTRAINTES INITIALES
  290.  
  291. *
  292. IF (IIIPARAM.EQ.1) THEN
  293. WRITE(IOIMP,66770) IB,IGAU
  294. 66770 format(////////2x,'element ',i6,2x,'point ',i3//)
  295.  
  296. WRITE (IOIMP,*) 'Increment des deformations '
  297. WRITE (IOIMP,99999) (DEPST(ILOOP), ILOOP=1,6)
  298.  
  299. WRITE (IOIMP,*) 'Contraintes au debut de l''iteration'
  300. WRITE (IOIMP,99999) (SIG0(ILOOP), ILOOP=1,6)
  301. ENDIF
  302.  
  303. * Controle si il faut calculer la matrice de hook
  304.  
  305. IF (IB.EQ.1.AND.IGAU.EQ.1) THEN
  306. GOTO 100
  307. ELSEIF (N2PTEL.EQ.1.AND.N2EL.EQ.1) THEN
  308. GOTO 200
  309. ELSEIF (N2PTEL.EQ.1.AND.N2EL.NE.1) THEN
  310. IF (IGAU.EQ.1) THEN
  311. GOTO 100
  312. ELSE
  313. GOTO 200
  314. ENDIF
  315. ELSE
  316. GOTO 100
  317. ENDIF
  318.  
  319. 100 CONTINUE
  320. IPERR=1
  321. * Calcul de la matrice de hook pour un materiau orthotrope: C0
  322. CALL ZERO (DDAUX,LHOOKL,LHOOKL)
  323. XNU21=(YG2/YG1)*XNU12
  324. XNU32=(YG3/YG2)*XNU23
  325. XNU31=(YG3/YG1)*XNU13
  326. AUX=(1.D0-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  327. & -2.D0*XNU21*XNU32*XNU13)
  328. AUX1=AUX/YG1
  329. AUX2=AUX/YG2
  330. AUX3=AUX/YG3
  331. DDAUX(1,1)=(1.D0-XNU23*XNU32)/AUX1
  332. DDAUX(1,2)=(XNU21+XNU31*XNU23)/AUX1
  333. DDAUX(2,1)=DDAUX(1,2)
  334. DDAUX(1,3)=(XNU31+XNU21*XNU32)/AUX1
  335. DDAUX(3,1)=DDAUX(1,3)
  336. DDAUX(2,2)=(1.D0-XNU13*XNU31)/AUX2
  337. DDAUX(2,3)=(XNU32+XNU12*XNU31)/AUX2
  338. DDAUX(3,2)=DDAUX(2,3)
  339. DDAUX(3,3)=(1.D0-XNU12*XNU21)/AUX3
  340. DDAUX(4,4)=G23
  341. DDAUX(5,5)=G13
  342. DDAUX(6,6)=G12
  343. * On recopie la matrice de Hooke pour l'inverser
  344. 200 CONTINUE
  345. DO JLOOP=1,LHOOKL
  346. DO ILOOP=1,LHOOKL
  347. ZIDAUX(ILOOP,JLOOP)= DDAUX(ILOOP,JLOOP)
  348. ENDDO
  349. ENDDO
  350. * Inversion de la matrice de Hooke
  351. TPREC= 0.D1
  352. IPERR=0
  353. CALL INVALM(ZIDAUX,LHOOKL,LHOOKL,IPERR,TPREC)
  354. IF (IPERR.NE.0) THEN
  355. WRITE (IOIMP,*) 'ERREUR DANS L''INVERSION DE LA MATRICE DE HOOK'
  356. ENDIF
  357. * Calcul des tenseurs d'endommagement H01, H02, H03
  358. * selon les equations 4.2.3 à 4.2.5
  359. CALL ZERO (H01,LHOOKL,LHOOKL)
  360. CALL ZERO (H02,LHOOKL,LHOOKL)
  361. CALL ZERO (H03,LHOOKL,LHOOKL)
  362. CALL ZERO (H04,LHOOKL,LHOOKL)
  363. CALL ZERO (H05,LHOOKL,LHOOKL)
  364.  
  365. H01(1,1)=H1(1,1)*H1N*ZIDAUX(1,1)
  366. H01(5,5)=H1(5,5)*H1HP*ZIDAUX(5,5)
  367. H01(6,6)=H1(6,6)*H1P*ZIDAUX(6,6)
  368. H02(2,2)=H2(2,2)*H2N*ZIDAUX(2,2)
  369. H02(4,4)=H2(4,4)*H2HP*ZIDAUX(4,4)
  370. H02(6,6)=H2(6,6)*H2P*ZIDAUX(6,6)
  371. H03(3,3)=H3(3,3)*H3N*ZIDAUX(3,3)
  372. H03(4,4)=H3(4,4)*H3P*ZIDAUX(4,4)
  373. H03(5,5)=H3(5,5)*H3P*ZIDAUX(5,5)
  374. * direction 4 : + 45 5 :-45
  375. * 1 ere ligne
  376. H04(1,1)=H4(1,1)*H4N*ZIDAUX(1,1)
  377. H05(1,1)=H5(1,1)*H4N*ZIDAUX(1,1)
  378. H04(1,6)=H4(1,6)*H4P*ZIDAUX(6,6)
  379. H05(1,6)=H5(1,6)*H4P*ZIDAUX(6,6)
  380. * 2 eme ligne
  381. H04(2,2)=H4(2,2)*H4N*ZIDAUX(1,1)
  382. H05(2,2)=H5(2,2)*H4N*ZIDAUX(1,1)
  383. H04(2,6)=H4(2,6)*H4P*ZIDAUX(6,6)
  384. H05(2,6)=H5(2,6)*H4P*ZIDAUX(6,6)
  385. * 4 eme ligne
  386. H04(4,4)=H4(4,4)*H4HP*ZIDAUX(5,5)
  387. H05(4,4)=H5(4,4)*H4HP*ZIDAUX(5,5)
  388. H04(4,5)=H4(4,5)*H4HP*ZIDAUX(5,5)
  389. H05(4,5)=H5(4,5)*H4HP*ZIDAUX(5,5)
  390. * 5 eme ligne
  391. H04(5,4)=H4(5,4)*H4HP*ZIDAUX(5,5)
  392. H05(5,4)=H5(5,4)*H4HP*ZIDAUX(5,5)
  393. H04(5,5)=H4(5,5)*H4HP*ZIDAUX(5,5)
  394. H05(5,5)=H5(5,5)*H4HP*ZIDAUX(5,5)
  395. * 6 eme ligne
  396. H04(6,1)=H4(6,1)*H4P*ZIDAUX(6,6)
  397. H05(6,1)=H5(6,1)*H4P*ZIDAUX(6,6)
  398. H04(6,2)=H4(6,2)*H4P*ZIDAUX(6,6)
  399. H05(6,2)=H5(6,2)*H4P*ZIDAUX(6,6)
  400. H04(6,6)=H4(6,6)*H4P*ZIDAUX(6,6)
  401. H05(6,6)=H5(6,6)*H4P*ZIDAUX(6,6)
  402. *
  403. IF (IIIPARAM.EQ.1) THEN
  404. WRITE (IOIMP,*) 'Matrice H01'
  405. DO 250 ILOOP= 1,LHOOKL
  406. WRITE (IOIMP, 99999 ) (H01(ILOOP,J), J=1,LHOOKL)
  407. 250 CONTINUE
  408. WRITE (IOIMP,*) 'Matrice H02'
  409. DO 251 ILOOP= 1,LHOOKL
  410. WRITE (IOIMP, 99999 ) (H02(ILOOP,J), J=1,LHOOKL)
  411. 251 CONTINUE
  412. WRITE (IOIMP,*) 'Matrice H03'
  413. DO 252 ILOOP= 1,LHOOKL
  414. WRITE (IOIMP, 99999 ) (H03(ILOOP,J), J=1,LHOOKL)
  415. 252 CONTINUE
  416. ENDIF
  417. ***** Recuperation deformation initiale dans le repere orth.
  418. ***** EN plus les VI sont rangées dans l'ordre de l'ONERA cad
  419. ****** 12 ==> 6, 13 ==> 5 et 23 ==> 4
  420. DEFI(1)=VAR0(7)
  421. DEFI(2)=VAR0(8)
  422. DEFI(3)=VAR0(9)
  423. DEFI(4)=VAR0(10)
  424. DEFI(5)=VAR0(11)
  425. DEFI(6)=VAR0(12)
  426. ** repère global
  427. IF (IIIPARAM.EQ.1) THEN
  428. WRITE (IOIMP,*) 'DEFORMATION RECUPEREE'
  429. WRITE (IOIMP,99999) (DEFI(ILOOP), ILOOP=1,6)
  430. ENDIF
  431. * Calcul de la nouvelle défo repère glob ordre cast
  432. DO 451 ILOOP=1,6
  433. EPSTFV(ILOOP)=EPST0(ILOOP)+DEPST(ILOOP)
  434. * EPSTF(ILOOP)=EPSTFV(ILOOP)
  435. 451 CONTINUE
  436. * WRITE (IOIMP,*) 'DEF IMPOSEE glob cast3m'
  437. * WRITE (IOIMP,99999) (EPSTFV(ILOOP), ILOOP=1,6)
  438. * Par contre les depstv cad après les DORTH sont rangés dans l'ordre castem
  439. * : 12 ==> 4 13 ==> 5 23 ==>6 -
  440. CALL CICROT (wrk52,wrk53,wrk54,1,EPSTFV,DORTH)
  441. *
  442. * On les réorganise donc pour etre dans l'ordre ONERA
  443. VARTMP= DORTH(4)
  444. DORTH(4)= DORTH(6)
  445. DORTH(6)= VARTMP
  446. *
  447. * Calcul de la nouvelle deformation totale dans le repère ortho
  448. * Utilisées pour le calcul des valeurs propres
  449. DEFOTH(1,1) = DORTH(1)
  450. DEFOTH(2,2) = DORTH(2)
  451. DEFOTH(3,3) = DORTH(3)
  452. DEFOTH(1,2) = DORTH(6)
  453. DEFOTH(1,3) = DORTH(5)
  454. DEFOTH(2,1) = DEFOTH(1,2)
  455. DEFOTH(2,3) = DORTH(4)
  456. DEFOTH(3,1) = DEFOTH(1,3)
  457. DEFOTH(3,2) = DEFOTH(2,3)
  458. *
  459. CALL JACOBA(DEFOTH,3,PROP,XPROP)
  460. C
  461. C partie positive des valeurs propres
  462. IF(PROP(1).LT.0.) PROP(1)=0.D0
  463. IF(PROP(2).LT.0.) PROP(2)=0.D0
  464. IF(PROP(3).LT.0.) PROP(3)=0.D0
  465. C Je remet ma matrice de valeurs propres corrigée axes ortho
  466. DEFOTH(1,1) = PROP(1)
  467. DEFOTH(2,2) = PROP(2)
  468. DEFOTH(3,3) = PROP(3)
  469. DEFOTH(1,2) = 0.D0
  470. DEFOTH(1,3) = 0.D0
  471. DEFOTH(2,1) = 0.D0
  472. DEFOTH(2,3) = 0.D0
  473. DEFOTH(3,1) = 0.D0
  474. DEFOTH(3,2) = 0.D0
  475. C XPROP(3,3) est la matrice donnant les coordonnées des vecteurs propre
  476. C par rapport aux axes d'orthotropie
  477. C 1 er indice direction 2° n° vecteur propre
  478. C j'ai besoin de la matrice donnant les axes ortho dans le repère des vecteurs propres
  479. C PRINT *,'AVANT INVER3'
  480. CALL INVER3(XPROP,XPINV)
  481. C PRINT *,'APRES INVER3'
  482. CALL TRSPOD(XPINV,3,3,XPINVT)
  483. CALL MULMAT(DEFOTHT,DEFOTH,XPINV,3,3,3)
  484. CALL MULMAT(DEFOTH,XPINVT,DEFOTHT,3,3,3)
  485. C
  486. C en principe on a la matrice de defo efficasse dans les axes ortho defoth
  487. C calcul des driving forces dans le cas scalaire
  488. C mode normal
  489. C calcul des driving forces dans le cas pseudo-tensoriel
  490.  
  491. Y1 =0.5*(DDAUX(1,1)*DEFOTH(1,1)*DEFOTH(1,1)+b1*
  492. & DDAUX(6,6)*DEFOTH(1,2)*DEFOTH(1,2)+b2*
  493. & DDAUX(5,5)*DEFOTH(1,3)*DEFOTH(1,3))
  494. Y2 =0.5*(DDAUX(2,2)*DEFOTH(2,2)*DEFOTH(2,2)+b1*
  495. & DDAUX(6,6)*DEFOTH(1,2)*DEFOTH(1,2)+b2*
  496. & DDAUX(4,4)*DEFOTH(2,3)*DEFOTH(2,3))
  497. Y6 =0.25*(DDAUX(1,1)*DEFOTH(1,1)*DEFOTH(1,2)+
  498. & DDAUX(2,2)*DEFOTH(2,2)*DEFOTH(1,2)+b1*
  499. & DDAUX(6,6)*DEFOTH(1,2)*
  500. & (DEFOTH(1,1)+DEFOTH(2,2)) )
  501. C driving forces utilisées pour le calcul des dommages
  502. Y1 = Y1 - (ABS(Y6))
  503. Y2 = Y2 - (ABS(Y6))
  504. IF(Y6.GT.0.) THEN
  505. Y(4)=SQRT(Y6)
  506. Y(5)= 0.
  507. ELSE
  508. Y(4)=0.
  509. Y(5)=SQRT(-Y6)
  510. ENDIF
  511. Y3 = 0.5*(DDAUX(3,3)*DEFOTH(3,3)*DEFOTH(3,3)+b3*
  512. & DDAUX(4,4)*DEFOTH(2,3)*DEFOTH(2,3)+b3*
  513. & DDAUX(5,5)*DEFOTH(1,3)*DEFOTH(1,3))
  514. C
  515.  
  516. IF(Y1.LT.0.) THEN
  517. Y(1)=0.
  518. ELSE
  519. Y(1)=SQRT(Y1)
  520. ENDIF
  521. IF(Y2.LT.0.) THEN
  522. Y(2)=0.
  523. ELSE
  524. Y(2)=SQRT(Y2)
  525. ENDIF
  526. IF(Y3.LT.0.) THEN
  527. Y(3)=0.
  528. ELSE
  529. Y(3)=SQRT(Y3)
  530. ENDIF
  531. C Calcul des variables d'endomagenement
  532. Do 722 IDRF=1,5
  533. FAFA =Y(IDRF)-Y0(IDRF)
  534. IF (FAFA.LT.0.) FAFA=0.
  535. DOM(IDRF)= DC(IDRF)*(1.D0 - EXP(-1.*
  536. & ((FAFA/YC(IDRF))**PY(IDRF))))
  537. 722 CONTINUE
  538. DOM1= MAX(DOM(1),VAR0(2))
  539. DOM2= MAX(DOM(2),VAR0(3))
  540. DOM3= MAX(DOM(3),VAR0(4))
  541. DOM4= MAX(DOM(4),VAR0(5))
  542. DOM5= MAX(DOM(5),VAR0(6))
  543. C dans WRK52 (DECHE ) on a tur0(1) et turf(1)
  544.  
  545. IF (IIIPARAM.EQ.1) THEN
  546. WRITE (IOIMP,*) 'Increment des deformations orth. '
  547. WRITE (IOIMP,99999) (DORTH(ILOOP), ILOOP=1,6)
  548. ENDIF
  549. *
  550. DO 500 ILOOP=1,iecou.NSTRSS
  551. * On garde les déformations totales dans les var. internes
  552. VARF(ILOOP+6)=DORTH(ILOOP)
  553. 500 CONTINUE
  554. *
  555. * On peut calculer EPSILON CLosure
  556. * EN fonction de deltal et tzero
  557. * et de la temperature TURE0(1)ou TUREF(1)du segment WRK52 de l'include DECHE
  558. *
  559. DO 701 IDOU=1,6
  560. EPSCLO(IDOU) = DELTAL*(TURE0(1)-TZERO)
  561. EPSBAR(IDOU) = DORTH(IDOU)- EPSCLO(IDOU)
  562. EPSIM(IDOU) = (DORTH(IDOU)+VAR0(IDOU+6))/2.
  563. 701 CONTINUE
  564. * On redefini les epsbar pour les direction 45 et -45 ° (cf 4.2.8)
  565. EPSBAR(4) = (EPSBAR(1)+EPSBAR(2)+(2.D0*EPSBAR(6)))*0.5
  566. EPSBAR(5) = (EPSBAR(1)+EPSBAR(2)-(2.D0*EPSBAR(6)))*0.5
  567.  
  568. * Calcul des valeurs délimitant les déformations pour
  569. * lesquelles les fissures commencent et finissent à/de se fermer
  570. * en vue du calcul de l'index de désactivation
  571. DEPSIF(1)= (1.D0 + (AIF(1)*DOM1))*DEPSIF0(1)
  572. DEPSIF(2)= (1.D0 + (AIF(2)*DOM2))*DEPSIF0(2)
  573. DEPSIF(3)= (1.D0 + (AIF(3)*DOM3))*DEPSIF0(3)
  574. DEPSIF(4)= (1.D0 + (AIF(4)*DOM4))*DEPSIF0(4)
  575. DEPSIF(5)= (1.D0 + (AIF(5)*DOM5))*DEPSIF0(5)
  576. *
  577. * Calcul de l'index d'activation 1 si actif 0 si passif
  578. *
  579. DO 703 IDO2=1,5
  580. IF(EPSBAR(IDO2).GE.DEPSIF(IDO2)) THEN
  581. ZNUACT(IDO2)= 1.D0
  582. ELSEIF(EPSBAR(IDO2).GT.(-1.*(DEPSIF(IDO2)))) THEN
  583. ZNUACT(IDO2)= 0.5D0*(1.D0-(COS(0.5D0*XPI*(EPSBAR(IDO2)
  584. & +DEPSIF(IDO2))/DEPSIF(IDO2))))
  585. ELSE
  586. ZNUACT(IDO2)= 0.D0
  587. ENDIF
  588. 703 CONTINUE
  589. *
  590. * Calcul des déformations résiduelles et stockées
  591. *
  592. * Calcul des variations du dommage
  593. DELTDO1 = DOM1 - VAR0(2)
  594. DELTDO2 = DOM2 - VAR0(3)
  595. DELTDO3 = DOM3 - VAR0(4)
  596. DELTDO4 = DOM4 - VAR0(5)
  597. DELTDO5 = DOM5 - VAR0(6)
  598. * Calcul des variations d'indice d'activation
  599. DELTNU1 = ZNUACT(1) - VAR0(13)
  600. DELTNU2 = ZNUACT(2) - VAR0(14)
  601. DELTNU3 = ZNUACT(3) - VAR0(15)
  602. DELTNU4 = ZNUACT(4) - VAR0(16)
  603. DELTNU5 = ZNUACT(5) - VAR0(17)
  604. *
  605. * Calcul de Seff =somme sur i de nui di hi0
  606. *
  607. DO 744 INDJ4=1,6
  608. Do 745 INDJ3=1,6
  609. SEFF(INDJ3,INDJ4) = ZIDAUX(INDJ3,INDJ4)+
  610. & ZNUACT(1)*DOM1*H01(INDJ3,INDJ4)+
  611. & ZNUACT(2)*DOM2*H02(INDJ3,INDJ4)+
  612. & ZNUACT(3)*DOM3*H03(INDJ3,INDJ4)+
  613. & ZNUACT(4)*DOM4*H04(INDJ3,INDJ4)+
  614. & ZNUACT(5)*DOM5*H05(INDJ3,INDJ4)
  615. CEFF(INDJ3,INDJ4) = SEFF(INDJ3,INDJ4)
  616. 745 CONTINUE
  617. 744 CONTINUE
  618. * inversion de la matrice de rigidité
  619. TPREC= 0.D1
  620. IPERR=0
  621. CALL INVALM(CEFF,LHOOKL,LHOOKL,IPERR,TPREC)
  622. IF (IPERR.NE.0) THEN
  623. WRITE (IOIMP,*) 'ERREUR DANS L''INVERSION DE LA MATRICE DE HOOK'
  624. ENDIF
  625. CALL MULMAT (TERME,H01,CEFF,6,6,6)
  626. CALL MULMAT (ZK1,CEFF,TERME,6,6,6)
  627. CALL MULMAT (TERME,H02,CEFF,6,6,6)
  628. CALL MULMAT (ZK2,CEFF,TERME,6,6,6)
  629. CALL MULMAT (TERME,H03,CEFF,6,6,6)
  630. CALL MULMAT (ZK3,CEFF,TERME,6,6,6)
  631. CALL MULMAT (TERME,H04,CEFF,6,6,6)
  632. CALL MULMAT (ZK4,CEFF,TERME,6,6,6)
  633. CALL MULMAT (TERME,H05,CEFF,6,6,6)
  634. CALL MULMAT (ZK5,CEFF,TERME,6,6,6)
  635. *
  636. * Déformation stockées (S) + résiduelle (R) à mettre dans les VI
  637. *
  638. DO 741 INDI=1,6
  639. SISIS(INDI)=0.D0
  640. SISIR(INDI)=0.D0
  641. DO 742 INDJ=1,6
  642. SOMS(INDI,INDJ)= DELTNU1*DOM1*ZK1(INDI,INDJ)+
  643. $ DELTNU2*DOM2*ZK2(INDI,INDJ)+
  644. $ DELTNU3*DOM3*ZK3(INDI,INDJ)+
  645. $ DELTNU4*DOM4*ZK4(INDI,INDJ)+
  646. $ DELTNU5*DOM5*ZK5(INDI,INDJ)
  647. SISIS(INDI)=SISIS(INDI)-SOMS(INDI,INDJ)*EPSIM(INDJ)
  648. SOMR(INDI,INDJ)= ETA1*ZNUACT(1)*DELTDO1*ZK1(INDI,INDJ)+
  649. $ ETA2*ZNUACT(2)*DELTDO2*ZK2(INDI,INDJ)+
  650. $ ETA3*ZNUACT(3)*DELTDO3*ZK3(INDI,INDJ)+
  651. $ ETA4*ZNUACT(4)*DELTDO4*ZK4(INDI,INDJ)+
  652. $ ETA5*ZNUACT(5)*DELTDO5*ZK5(INDI,INDJ)
  653. SISIR(INDI)=SISIR(INDI)+SOMR(INDI,INDJ)*EPSIM(INDJ)
  654.  
  655. 742 CONTINUE
  656. 741 CONTINUE
  657. C
  658. CALL MULMAT (EPSR1,ZIDAUX,SISIR,6,1,6)
  659. CALL MULMAT (EPSS1,ZIDAUX,SISIS,6,1,6)
  660. DO 743 INDI=1,6
  661. EPSIN(INDI)=VAR0(17+INDI)+EPSR1(INDI)+EPSS1(INDI)
  662. EPSEL(INDI) = DORTH(INDI)-EPSIN(INDI)
  663. 743 CONTINUE
  664. *
  665. * SORTH contient les contraintes a la fin du pas
  666. * dans le repère orthotrope
  667. CALL MULMAT (SORTH1,CEFF,DORTH,6,1,6)
  668. CALL MULMAT (SORTH2,DDAUX,EPSIN,6,1,6)
  669. DO 749 INDIA=1,6
  670. SORTH(INDIA) = SORTH1(INDIA) - SORTH2(INDIA)
  671. 749 CONTINUE
  672. IF (IIIPARAM.EQ.1) THEN
  673. WRITE (IOIMP,*) 'Contraintes calculees (repere orth.)'
  674. WRITE (IOIMP,99999) (SORTH(ILOOP), ILOOP=1,6)
  675. ENDIF
  676. * On réorganise les contraintes en cisaillement pour
  677. * calculer les contraintes dans le repere global (ON REMET DANS L'ORDRE castem)
  678. SIGFV(1)=SORTH(1)
  679. SIGFV(2)=SORTH(2)
  680. SIGFV(3)=SORTH(3)
  681. SIGFV(4)=SORTH(6)
  682. SIGFV(5)=SORTH(5)
  683. SIGFV(6)=SORTH(4)
  684. EPSINV(1)=EPSIN(1)
  685. EPSINV(2)=EPSIN(2)
  686. EPSINV(3)=EPSIN(3)
  687. EPSINV(4)=EPSIN(6)
  688. EPSINV(5)=EPSIN(5)
  689. EPSINV(6)=EPSIN(4)
  690. VARF(1)= 0.D0
  691. DO 186 INDI = 1,6
  692. VARF(17+INDI)= EPSIN(INDI)
  693. VARF(1)= VARF(1)+ EPSIN(INDI)
  694. 186 CONTINUE
  695. * On appele SICROT pour trouver les contraintes dans le repère global
  696. * On utilise SORTH pour garder le resultat
  697. * (on peut pas passer SIGF à la subroutine car il est dans un segment)
  698. CALL CICROT (wrk52,wrk53,wrk54,0,SIGFV,SORTH)
  699.  
  700. * On recopie SORTH in SIGF
  701. DO 1000 ILOOP=1,6
  702. SIGF(ILOOP)=SORTH(ILOOP)
  703. 1000 CONTINUE
  704. IF (IIIPARAM.EQ.1) THEN
  705. WRITE (IOIMP,*) 'SIG REP GLOB cast'
  706. WRITE (IOIMP,99999) (SIGF(ILOOP), ILOOP=1,6)
  707. ENDIF
  708. VARF(2)= DOM1
  709. VARF(3)= DOM2
  710. VARF(4)= DOM3
  711. VARF(5)= DOM4
  712. VARF(6)= DOM5
  713. VARF(13)= ZNUACT(1)
  714. VARF(14)= ZNUACT(2)
  715. VARF(15)= ZNUACT(3)
  716. VARF(16)= ZNUACT(4)
  717. VARF(17)= ZNUACT(5)
  718. 99999 format(2x,' ',(6(1x,3pe12.5),/))
  719. 99998 format(2x,' ',(4(1x,3pe12.5),/))
  720. 99997 format(2x,' ',(1x,3pe12.5),/)
  721. 99996 format(2x,' ',(3(1x,1pe12.3),/))
  722. RETURN
  723. END
  724.  
  725.  
  726.  

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