Télécharger cicsic.eso

Retour à la liste

Numérotation des lignes :

cicsic
  1. C CICSIC SOURCE PV 17/12/08 21:15:44 9660
  2.  
  3. SUBROUTINE CICSIC(WRK52,WRK53,WRK54,WRK22,IB,IGAU,NVARI,NBPGAU
  4. & ,necou,iecou)
  5. C
  6. C variables en entree
  7. C
  8. C WRK0,KRK1,WRK5 pointeurs sur des segments de travail
  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 WRK5:
  25. C
  26. C NSTRS nombre de composantes dans les vecteurs des contraintes
  27. C et les vecteurs des deformations
  28. C
  29. C NVARI nombre de variables internes (doit etre egal a 3)
  30. C
  31. C NMATT nombre de constantes du materiau
  32. C
  33. C variables en sortie
  34. C
  35. C VARF variables internes finales dans WRK0
  36. C
  37. C SIGF contraintes finales dans WRK0
  38. C
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8(A-H,O-Z)
  41. C
  42.  
  43. -INC PPARAM
  44. -INC CCOPTIO
  45. -INC CCREEL
  46. -INC DECHE
  47. *
  48. * Commun NECOU utilisé dans ECOINC
  49. *
  50. SEGMENT NECOU
  51. INTEGER NCOURB,IPLAST,IT,IMAPLA,ISOTRO,
  52. . ITYP,IFOURB,IFLUAG,
  53. . ICINE,ITHER,IFLUPL,ICYCL,IBI,
  54. . JFLUAG,KFLUAG,LFLUAG,
  55. . IRELAX,JNTRIN,MFLUAG,JSOUFL,JGRDEF
  56. ENDSEGMENT
  57. *
  58. * Commun IECOU: sert de fourre-tout pour les initialisations
  59. * d'entiers
  60. *
  61. SEGMENT IECOU
  62. INTEGER NYOG,NYNU,NYALFA,NYSMAX,NYN,NYM,NYKK,
  63. . NYALF1,NYBET1,NYR,NYA,NYRHO,NSIGY,NNKX,NYKX,IND,
  64. . NSOM,NINV,NINCMA,NCOMP,JELEM,LEGAUS,INAT,NCXMAT,
  65. . LTRAC,MFRbi,IELE,NHRM,NBNNBI,NBELMB,ICARA,
  66. . LW2bi,NDEF,NSTRSS,MFR1,NBGMAT,NELMAT,MSOUPA,
  67. . NUMAT1,LENDO,NBBB,NNVARI,KERR1,MELEME
  68. INTEGER icow45,icow46,icow47,icow48,icow49,icow50,
  69. . icow51,icow52,icow53,icow54,icow55,icow56
  70. . icow57,icow58
  71. ENDSEGMENT
  72. *
  73. SEGMENT WRK22
  74. REAL*8 XXE(3,NBNNbi)
  75. ENDSEGMENT
  76. *
  77. SEGMENT WRK6
  78. REAL*8 SIG0S(NSTRS),DEPSTS(NSTRS)
  79. END SEGMENT
  80.  
  81. INTEGER NSTRS1,NVARI
  82. INTEGER KCAS,IRTD,ISTRS
  83.  
  84. REAL*8 IDAUX(6,6)
  85. REAL*8 DOR1(3), DOR2(3), DOR3(3)
  86. REAL*8 MORTH (3,3), IORTH (3,3), AEQ (3,3)
  87. REAL*8 H1 (6,6), H2(6,6), H3(6,6)
  88. REAL*8 H01 (6,6), H02(6,6), H03(6,6)
  89. REAL*8 K01 (6,6), K02(6,6), K03(6,6), KW(6,6)
  90. REAL*8 KEFF1(6,6), KEFF2(6,6), KEFF3(6,6)
  91. REAL*8 RIG0 (6,6), CED0 (6,6)
  92. REAL*8 SORTH(6), SIG0V(6), SIGFV(6),
  93. & DEFI(6), DEPSTV(6), DORTH(6)
  94. REAL*8 VARTMP
  95. INTEGER HCLO1, HCLO2, HCLO3
  96.  
  97. * scalar damage indicators
  98. REAL*8 DOM1, DOM2, DOM3
  99. REAL*8 YGR1, YGR2, YGR3, YW(6)
  100. REAL*8 YEQ1, YEQ2, YEQ3
  101. *
  102. * PHENOMENOLOGICAL COEFFICIENTS
  103. *
  104. * deactivation parameter (scalars)
  105. REAL*8 ETADS
  106. * closure stress
  107. * REAL*8 SIGCLO (NSTRSS)
  108. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  109. *ON NE LE PREND PAS EN COMPTE!!!!
  110. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  111.  
  112. * scalar damage law parameters
  113. REAL*8 G1DC, G1Y0, G1YC, G1P
  114. REAL*8 G2DC, G2Y0, G2YC, G2P
  115. REAL*8 G3DC, G3Y0, G3YC, G3P
  116.  
  117. * Passes comme param. materiau
  118. * DATA G1DC, G1Y0, G1YC, G1P
  119. * & / 0.6, 130.0, 400.0, 1.0/
  120. * DATA G2DC, G2Y0, G2YC, G2P
  121. * & / 0.6, 130.0, 400.0, 1.0/
  122. * DATA G3DC, G3Y0, G3YC, G3P
  123. * & / 0.6, 130.0, 400.0, 1.0/
  124.  
  125. DATA ETADS /1./
  126.  
  127. DATA H1
  128. & /1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  129. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  130. & 0.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.7, 0.0,
  133. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.7/
  134. DATA H2
  135. & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  136. & 0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
  137. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  138. & 0.0, 0.0, 0.0, 0.7, 0.0, 0.0,
  139. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  140. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.7/
  141. DATA H3
  142. & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  143. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  144. & 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
  145. & 0.0, 0.0, 0.0, 0.7, 0.0, 0.0,
  146. & 0.0, 0.0, 0.0, 0.0, 0.7, 0.0,
  147. & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/
  148. DATA AEQ
  149. & /1.0, 0.0, 0.0,
  150. & 0.0, 1.0, 0.0,
  151. & 0.0, 0.0, 1.0/
  152.  
  153. ***** INITIALIZATION VARIABLES
  154. *
  155. kerre=0
  156. * Proprietes materiau
  157. YG1 = XMAT(1)
  158. YG2 = XMAT(2)
  159. YG3 = XMAT(3)
  160. XNU12 = XMAT(4)
  161. XNU23 = XMAT(5)
  162. XNU13 = XMAT(6)
  163. G12 = XMAT(7)
  164. G23 = XMAT(8)
  165. G13 = XMAT(9)
  166.  
  167. G1DC = XMAT(16)
  168. G1Y0 = XMAT(17)
  169. G1YC = XMAT(18)
  170. G1P = XMAT(19)
  171. G2DC = XMAT(20)
  172. G2Y0 = XMAT(21)
  173. G2YC = XMAT(22)
  174. G2P = XMAT(23)
  175. G3DC = XMAT(24)
  176. G3Y0 = XMAT(25)
  177. G3YC = XMAT(26)
  178. G3P = XMAT(27)
  179.  
  180. H1(5,5)= XMAT(29)
  181. H3(5,5)= XMAT(29)
  182.  
  183. H1(6,6)= XMAT(30)
  184. H2(6,6)= XMAT(30)
  185.  
  186. H2(4,4)= XMAT(28)
  187. H3(4,4)= XMAT(28)
  188.  
  189. AEQ(1,2)= XMAT(35)
  190. AEQ(2,1)= XMAT(35)
  191.  
  192. AEQ(1,3)= XMAT(37)
  193. AEQ(3,1)= XMAT(37)
  194.  
  195. AEQ(2,3)= XMAT(36)
  196. AEQ(3,2)= XMAT(36)
  197.  
  198. * Pour deboggage
  199. C* jPARAM=0
  200.  
  201. * Variables internes du modele
  202. DOM1=VAR0(2)
  203. DOM2=VAR0(3)
  204. DOM3=VAR0(4)
  205.  
  206. * Mise a zero des matrices
  207. CALL ZERO (RIG0,6,6)
  208. CALL ZERO (CED0,6,6)
  209.  
  210. ****** CALCUL DE LA DEFORMATION INITIALE A PARTIR
  211. ****** DES CONTRAINTES INITIALES
  212.  
  213. **********Debougage
  214. C* IF (jPARAM.EQ.1) THEN
  215. C* WRITE(IOIMP,66770) IB,IGAU
  216. C*66770 format(////////2x,'element ',i6,2x,'point ',i3//)
  217. C*
  218. C* WRITE (IOIMP,*) 'Increment des deformations '
  219. C* WRITE (IOIMP,99999) (DEPST(ILOOP), ILOOP=1,6)
  220. C*
  221. C* WRITE (IOIMP,*) 'Contraintes au debut de l''iteration'
  222. C* WRITE (IOIMP,99999) (SIG0(ILOOP), ILOOP=1,6)
  223. C* ENDIF
  224. **********Debougage
  225.  
  226. * Controle si il faut calculer la matrice de hooke
  227.  
  228. IF (IB.EQ.1.AND.IGAU.EQ.1) THEN
  229. GOTO 100
  230.  
  231. ELSEIF (N2PTEL.EQ.1.AND.N2EL.EQ.1) THEN
  232. GOTO 200
  233.  
  234. ELSEIF (N2PTEL.EQ.1.AND.N2EL.NE.1) THEN
  235. IF (IGAU.EQ.1) THEN
  236. GOTO 100
  237. ELSE
  238. GOTO 200
  239. ENDIF
  240.  
  241. ELSE
  242. GOTO 100
  243. ENDIF
  244.  
  245. * Calcul de la matrice de hook pour un materiau orthotrope
  246. 100 CONTINUE
  247. * WRITE (IOIMP,*) 'Calcul de la matrice de Hooke, CMATE=', CMATE
  248.  
  249. IPERR=1
  250. CALL ZERO (DDAUX,LHOOK,LHOOK)
  251.  
  252. XNU21=(YG2/YG1)*XNU12
  253. XNU32=(YG3/YG2)*XNU23
  254. XNU31=(YG3/YG1)*XNU13
  255. AUX=(1.D0-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  256. & -2.D0*XNU21*XNU32*XNU13)
  257. AUX1=AUX/YG1
  258. AUX2=AUX/YG2
  259. AUX3=AUX/YG3
  260.  
  261. DDAUX(1,1)=(1.D0-XNU23*XNU32)/AUX1
  262. DDAUX(1,2)=(XNU21+XNU31*XNU23)/AUX1
  263. DDAUX(2,1)=DDAUX(1,2)
  264. DDAUX(1,3)=(XNU31+XNU21*XNU32)/AUX1
  265. DDAUX(3,1)=DDAUX(1,3)
  266. DDAUX(2,2)=(1.D0-XNU13*XNU31)/AUX2
  267. DDAUX(2,3)=(XNU32+XNU12*XNU31)/AUX2
  268. DDAUX(3,2)=DDAUX(2,3)
  269. DDAUX(3,3)=(1.D0-XNU12*XNU21)/AUX3
  270. DDAUX(4,4)=G23
  271. DDAUX(5,5)=G13
  272. DDAUX(6,6)=G12
  273.  
  274. * WRITE (IOIMP,*) 'Valeurs calculees:'
  275. * DO 110 ILOOP= 1,LHOOK
  276. * WRITE (IOIMP, 99999 ) (DDAUX (ILOOP,J), J=1,LHOOK)
  277. *110 CONTINUE
  278.  
  279. * On recopie la matrice de hook pour l'inversee
  280. 200 DO 205 ILOOP=1,LHOOK
  281. DO 205 JLOOP=1,LHOOK
  282. IDAUX(ILOOP,JLOOP)= DDAUX(ILOOP,JLOOP)
  283. 205 CONTINUE
  284.  
  285. * Inversion de la matrice de hook
  286. * WRITE (IOIMP,*) 'Inversion de la matrice de Hooke'
  287. TPREC= 0.D0
  288. IPERR=0
  289. CALL INVALM(IDAUX,LHOOK,LHOOK,IPERR,TPREC)
  290. IF (IPERR.NE.0) THEN
  291. WRITE (IOIMP,*) 'ERREUR DANS L''INVERSION DE LA MATRICE DE HOOK'
  292. ENDIF
  293.  
  294. * WRITE (IOIMP,*) 'Matrice de Hook inverse'
  295. * DO 210 ILOOP= 1,LHOOK
  296. * WRITE (IOIMP,99999) (IDAUX (ILOOP,J), J=1,LHOOK)
  297. *210 CONTINUE
  298.  
  299. * Calcul des tenseurs d'endommagement H01, H02, H03
  300. CALL SICTEN (H1,IDAUX,H01)
  301. CALL SICTEN (H2,IDAUX,H02)
  302. CALL SICTEN (H3,IDAUX,H03)
  303.  
  304. **********Debougage
  305. C* IF (jPARAM.EQ.1) THEN
  306. C* WRITE (IOIMP,*) 'Matrice H01'
  307. C* DO 250 ILOOP= 1,LHOOK
  308. C* WRITE (IOIMP, 99999 ) (H01(ILOOP,J), J=1,LHOOK)
  309. C*250 CONTINUE
  310. C*
  311. C* WRITE (IOIMP,*) 'Matrice H02'
  312. C* DO 251 ILOOP= 1,LHOOK
  313. C* WRITE (IOIMP, 99999 ) (H02(ILOOP,J), J=1,LHOOK)
  314. C*251 CONTINUE
  315. C*
  316. C* WRITE (IOIMP,*) 'Matrice H03'
  317. C* DO 252 ILOOP= 1,LHOOK
  318. C* WRITE (IOIMP, 99999 ) (H03(ILOOP,J), J=1,LHOOK)
  319. C*252 CONTINUE
  320. C* ENDIF
  321. C*
  322. C** Calcul des matrices K01,K02,K03
  323. CALL MULMAT (KW,H01,DDAUX,LHOOK,LHOOK,LHOOK)
  324. CALL MULMAT (K01,DDAUX,KW,LHOOK,LHOOK,LHOOK)
  325.  
  326. CALL MULMAT (KW,H02,DDAUX,LHOOK,LHOOK,LHOOK)
  327. CALL MULMAT (K02,DDAUX,KW,LHOOK,LHOOK,LHOOK)
  328.  
  329. CALL MULMAT (KW,H03,DDAUX,LHOOK,LHOOK,LHOOK)
  330. CALL MULMAT (K03,DDAUX,KW,LHOOK,LHOOK,LHOOK)
  331.  
  332. * WRITE (IOIMP,*) 'Matrice K01'
  333. * DO 300 ILOOP= 1,LHOOK
  334. * WRITE (IOIMP, 99999 ) (K01(ILOOP,J), J=1,LHOOK)
  335. *300 CONTINUE
  336. *
  337. * WRITE (IOIMP,*) 'Matrice K02'
  338. * DO 301 ILOOP= 1,LHOOK
  339. * WRITE (IOIMP, 99999 ) (K02(ILOOP,J), J=1,LHOOK)
  340. *301 CONTINUE
  341. *
  342. * WRITE (IOIMP,*) 'Matrice K03'
  343. * DO 302 ILOOP= 1,LHOOK
  344. * WRITE (IOIMP, 99999 ) (K03(ILOOP,J), J=1,LHOOK)
  345. *302 CONTINUE
  346.  
  347. ***** Recuperation deformation initiale dans le repere orth.
  348.  
  349. DEFI(1)=VAR0(5)
  350. DEFI(2)=VAR0(6)
  351. DEFI(3)=VAR0(7)
  352. DEFI(4)=VAR0(8)
  353. DEFI(5)=VAR0(9)
  354. DEFI(6)=VAR0(10)
  355.  
  356. C* IF (jPARAM.EQ.1) THEN
  357. C* WRITE (IOIMP,*) 'DEFORMATION RECUPEREE'
  358. C* WRITE (IOIMP,99999) (DEFI(ILOOP), ILOOP=1,6)
  359. C* ENDIF
  360.  
  361. * Calcul de l'increment de deformation dans le repere orthotrope
  362. DO 451 ILOOP=1,6
  363. DEPSTV(ILOOP)=DEPST(ILOOP)
  364. 451 CONTINUE
  365.  
  366. CALL CICROT (wrk52,wrk53,wrk54,1,DEPSTV,DORTH)
  367.  
  368. C* IF (jPARAM.EQ.1) THEN
  369. C* WRITE (IOIMP,*) 'Increment des deformations orth. '
  370. C* WRITE (IOIMP,99999) (DORTH(ILOOP), ILOOP=1,6)
  371. C* ENDIF
  372.  
  373. * Reorganisation dans SICDEF selon la valeur de iAXEP
  374. * TC iaxep n'est pas initialise , je le mets à 0 !!!
  375. iaxep=0
  376. CALL SICDEF (DORTH,iAXEP,kerre)
  377. * Reorganisation supplementaire pour le contraintes en cisaillement
  378. VARTMP= DORTH(4)
  379. DORTH(4)= DORTH(6)
  380. DORTH(6)= VARTMP
  381. DORTH(5)= DORTH(5)
  382.  
  383. C* IF (jPARAM.EQ.1) THEN
  384. C* WRITE (IOIMP,*) 'Apres SICDEF et reorg.'
  385. C* WRITE (IOIMP,*) 'Increment des deformations orth. reorganise'
  386. C* WRITE (IOIMP,99999) (DORTH(ILOOP), ILOOP=1,6)
  387. C* ENDIF
  388.  
  389. * On calcule les deformation totales.
  390. DO 500 ILOOP=1,NSTRSS
  391. DORTH(ILOOP)=DEFI(ILOOP)+DORTH(ILOOP)
  392. * On garde le deformations totales dans le var. internes
  393. VARF(ILOOP+4)=DORTH(ILOOP)
  394. 500 CONTINUE
  395.  
  396. C* IF (jPARAM.EQ.1) THEN
  397. C* WRITE (IOIMP,*) 'Calcul des def. totales (rep. orth. reorg.)'
  398. C* WRITE (IOIMP,99999) (DORTH(ILOOP), ILOOP=1,6)
  399. C* ENDIF
  400.  
  401. ********************************************************
  402. ** ON A LES DEFORMATIONS TOTALES **
  403. ** ON PEUT CALCULER LES CONTRAINTES A LA FIN DU PAS **
  404. ********************************************************
  405. * WRITE (IOIMP,*) 'Calcul contraintes'
  406.  
  407. * Calcul des noveaux HCLO
  408.  
  409. IF (DORTH(1).LT.0.) THEN
  410. HCLO1=1
  411. ELSE
  412. HCLO1=0
  413. ENDIF
  414. IF (DORTH(2).LT.0.) THEN
  415. HCLO2=1
  416. ELSE
  417. HCLO2=0
  418. ENDIF
  419. IF (DORTH(3).LT.0.) THEN
  420. HCLO3=1
  421. ELSE
  422. HCLO3=0
  423. ENDIF
  424.  
  425. C* IF (jPARAM.EQ.1) THEN
  426. C* WRITE (IOIMP,*) 'HCLO'
  427. C* WRITE (IOIMP,*) HCLO1,HCLO2,HCLO3
  428. C* ENDIF
  429.  
  430. * Calcul des nouvelles KEFF
  431. DO 505 ILOOP=1,LHOOK
  432. DO 505 JLOOP=1,LHOOK
  433. KEFF1(ILOOP,JLOOP)=K01(ILOOP,JLOOP)
  434. KEFF2(ILOOP,JLOOP)=K02(ILOOP,JLOOP)
  435. KEFF3(ILOOP,JLOOP)=K03(ILOOP,JLOOP)
  436. 505 CONTINUE
  437. KEFF1(1,1)=K01(1,1)*(1.-ETADS*HCLO1)
  438. KEFF2(2,2)=K02(2,2)*(1.-ETADS*HCLO2)
  439. KEFF3(3,3)=K03(3,3)*(1.-ETADS*HCLO3)
  440.  
  441. * WRITE (IOIMP,*) 'Matrice KEFF1'
  442. * DO 502 ILOOP= 1,LHOOK
  443. * WRITE (IOIMP, 99999 ) (KEFF1(ILOOP,J), J=1,LHOOK)
  444. *502 CONTINUE
  445. *
  446. * WRITE (IOIMP,*) 'Matrice KEFF2'
  447. * DO 503 ILOOP= 1,LHOOK
  448. * WRITE (IOIMP, 99999 ) (KEFF2(ILOOP,J), J=1,LHOOK)
  449. *503 CONTINUE
  450. *
  451. * WRITE (IOIMP,*) 'Matrice KEFF3'
  452. * DO 504 ILOOP= 1,LHOOK
  453. * WRITE (IOIMP, 99999 ) (KEFF3(ILOOP,J), J=1,LHOOK)
  454. *504 CONTINUE
  455.  
  456. * Calcul des YGR
  457. * WRITE (IOIMP,*) 'YW1'
  458. CALL ZERO (YW,6,1)
  459. CALL MULMAT (YW,KEFF1,DORTH,6,1,6)
  460. * WRITE (IOIMP,*) (YW(ILOOP), ILOOP=1,6)
  461. YGR1=0.
  462. DO 510 ILOOP=1,6
  463. YGR1=YGR1+YW(ILOOP)*DORTH(ILOOP)
  464. 510 CONTINUE
  465. YGR1=0.5D0*YGR1
  466. * WRITE (IOIMP,*) 'YGR1=',YGR1
  467.  
  468. CALL ZERO (YW,6,1)
  469. CALL MULMAT (YW,KEFF2,DORTH,6,1,6)
  470. * WRITE (IOIMP,*) 'YW2'
  471. * WRITE (IOIMP,*) (YW(ILOOP), ILOOP=1,6)
  472. YGR2=0.
  473. DO 520 ILOOP=1,6
  474. YGR2=YGR2+YW(ILOOP)*DORTH(ILOOP)
  475. 520 CONTINUE
  476. YGR2=0.5D0*YGR2
  477.  
  478. CALL ZERO (YW,6,1)
  479. CALL MULMAT (YW,KEFF3,DORTH,6,1,6)
  480. YGR3=0.
  481. DO 530 ILOOP=1,6
  482. YGR3=YGR3+YW(ILOOP)*DORTH(ILOOP)
  483. 530 CONTINUE
  484. YGR3=0.5D0*YGR3
  485.  
  486. C* IF (jPARAM.EQ.1) THEN
  487. C* WRITE (IOIMP,*) 'YGR1=',YGR1
  488. C* WRITE (IOIMP,*) 'YGR2=',YGR2
  489. C* WRITE (IOIMP,*) 'YGR3=',YGR3
  490. C* ENDIF
  491.  
  492. IF (YGR1.LT.0.) THEN
  493. YGR1=0.
  494. ENDIF
  495. IF (YGR2.LT.0.) THEN
  496. YGR2=0.
  497. ENDIF
  498. IF (YGR3.LT.0.) THEN
  499. YGR3=0.
  500. ENDIF
  501.  
  502. *Calcul des YEQ
  503. YEQ1= AEQ(1,1)*YGR1+AEQ(1,2)*YGR2+AEQ(1,3)*YGR3
  504. YEQ2= AEQ(2,1)*YGR1+AEQ(2,2)*YGR2+AEQ(2,3)*YGR3
  505. YEQ3= AEQ(3,1)*YGR1+AEQ(3,2)*YGR2+AEQ(3,3)*YGR3
  506.  
  507. *Calcul des DOM
  508.  
  509. DD1= ((SQRT(YEQ1) - G1Y0)/ G1YC )
  510. DD2= ((SQRT(YEQ2) - G2Y0)/ G2YC )
  511. DD3= ((SQRT(YEQ3) - G3Y0)/ G3YC )
  512.  
  513. IF (DD1.LT.0.) THEN
  514. DD1=0.
  515. ENDIF
  516. IF (DD2.LT.0.) THEN
  517. DD2=0.
  518. ENDIF
  519. IF (DD3.LT.0.) THEN
  520. DD3=0.
  521. ENDIF
  522.  
  523. DOM1= G1DC*(1.D0 - EXP(-1.* ( DD1**G1P ) ) )
  524. DOM2= G2DC*(1.D0 - EXP(-1.* ( DD2**G2P ) ) )
  525. DOM3= G3DC*(1.D0 - EXP(-1.* ( DD3**G3P ) ) )
  526.  
  527. DOM1= MAX(DOM1,VAR0(2))
  528. DOM2= MAX(DOM2,VAR0(3))
  529. DOM3= MAX(DOM3,VAR0(4))
  530.  
  531. C* IF (jPARAM.EQ.1) THEN
  532. C* WRITE (IOIMP,*) 'DOM1=',DOM1
  533. C* WRITE (IOIMP,*) 'DOM2=',DOM2
  534. C* WRITE (IOIMP,*) 'DOM3=',DOM3
  535. C* ENDIF
  536.  
  537. *Calcul de la matrice de rigidite
  538.  
  539. DO 600 ILOOP=1,LHOOK
  540. DO 600 JLOOP=1,LHOOK
  541. RIG0(ILOOP,JLOOP)=DDAUX(ILOOP,JLOOP)
  542. & -DOM1*KEFF1(ILOOP,JLOOP)
  543. & -DOM2*KEFF2(ILOOP,JLOOP)
  544. & -DOM3*KEFF3(ILOOP,JLOOP)
  545. 600 CONTINUE
  546.  
  547. * WRITE (IOIMP, *) 'Matrice RIG0 finale'
  548. * DO 610 ILOOP= 1,LHOOK
  549. * WRITE (IOIMP,99999) (RIG0 (ILOOP,J), J=1,LHOOK)
  550. *610 CONTINUE
  551.  
  552. * Calcul des contraintes a la fin du pas
  553. * SORTH contient les contraintes a la fin du pas
  554. * dans le repere orthotrope
  555. CALL MULMAT (SORTH,RIG0,DORTH,6,1,6)
  556.  
  557. C* IF (jPARAM.EQ.1) THEN
  558. C* WRITE (IOIMP,*) 'Contraintes calculees (repere orth.)'
  559. C* WRITE (IOIMP,99999) (SORTH(ILOOP), ILOOP=1,6)
  560. C* ENDIF
  561.  
  562. * ATTENTION:
  563. * On reorganise les contraintes en cisaillement pour
  564. * calculer les contraintes dans le repere global
  565. SIGFV(1)=SORTH(1)
  566. SIGFV(2)=SORTH(2)
  567. SIGFV(3)=SORTH(3)
  568.  
  569. SIGFV(4)=SORTH(6)
  570. SIGFV(5)=SORTH(5)
  571. SIGFV(6)=SORTH(4)
  572.  
  573. CALL SICCNT (SIGFV,iAXEP,kerre)
  574.  
  575. C* IF (jPARAM.EQ.1) THEN
  576. C* WRITE (IOIMP,*) 'Apres SICCNT e reorg'
  577. C* WRITE (IOIMP,*) 'Contraintes reorganisees'
  578. C* WRITE (IOIMP,99999) (SIGFV(ILOOP), ILOOP=1,6)
  579. C* ENDIF
  580.  
  581. * On appele SICROT pour trouver le contraintes dans le repere global
  582. * On utilise SORTH pour garder le resultat
  583. * (on peut pas passer SIGF a la subroutine car il est dans un segment)
  584. CALL CICROT (wrk52,wrk53,wrk54,0,SIGFV,SORTH)
  585.  
  586. * On recopie SORTH in SIGF
  587. DO 1000 ILOOP=1,6
  588. SIGF(ILOOP)=SORTH(ILOOP)
  589. 1000 CONTINUE
  590.  
  591. C* IF (jPARAM.EQ.1) THEN
  592. C* WRITE (IOIMP,*) 'Contraintes calculees'
  593. C* WRITE (IOIMP,99999) (SIGF(ILOOP), ILOOP=1,6)
  594. C* ENDIF
  595.  
  596. VARF(2)= DOM1
  597. VARF(3)= DOM2
  598. VARF(4)= DOM3
  599.  
  600. 99999 format(2x,' ',(6(1x,3pe12.5),/))
  601. 99998 format(2x,' ',(4(1x,3pe12.5),/))
  602. 99997 format(2x,' ',(1x,3pe12.5),/)
  603. 99996 format(2x,' ',(3(1x,1pe12.3),/))
  604.  
  605. RETURN
  606. END
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  

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