Télécharger sictens.eso

Retour à la liste

Numérotation des lignes :

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

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