sicscal
C SICSCAL SOURCE PV 17/12/08 21:17:46 9660 & ,necou,iecou) C Modèle ONERA Scalaire pour le SICf/SiC tissé C C variables en entree C C WRK0,KRK1,WRK5 pointeurs sur des segments de travail C C C WRK0: C XMAT(NMATT): tableau composantes materiaux C C WRK52: C Dans le repère global C SIG0(NSTRS) : contraintes au debut du pas C SIGF(NSTR) : CONTRAINTES à l afin du pas C VAR0(NVARI) : variables internes au debut du pas C DEPST(NSTRS): increment de deformation totale C EPST0(NSTRS): deformation totale au début C C EPSTF(NSTR): déformations totales finales C C WRK22: C XXE: coordonnees de l'element en double precison C C WTRAV: C TXR: cosinus directeurs des axes locaux de l'element massif C C C WRK5: C C C C NSTRS nombre de composantes dans les vecteurs des contraintes C et les vecteurs des deformations C C NVARI nombre de variables internes (doit etre egal a 3) C C NMATT nombre de constantes du materiau C C C C variables en sortie C C VARF variables internes finales dans WRK0 C C SIGF contraintes finales dans WRK0 C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC DECHE * * Commun NECOU utilisé dans ECOINC * SEGMENT NECOU INTEGER NCOURB,IPLAST,IT,IMAPLA,ISOTRO, . ITYP,IFOURB,IFLUAG, . ICINE,ITHER,IFLUPL,ICYCL,IBI, . JFLUAG,KFLUAG,LFLUAG, . IRELAX,JNTRIN,MFLUAG,JSOUFL,JGRDEF ENDSEGMENT * * Commun IECOU: sert de fourre-tout pour les initialisations * d'entiers * SEGMENT IECOU * INTEGER NYOG,NYNU,NYALFA,NYSMAX,NYN,NYM,NYKK, . NYALF1,NYBET1,NYR,NYA,NYRHO,NSIGY,NNKX,NYKX,IND, . NSOM,NINV,NINCMA,NCOMP,JELEM,LEGAUS,INAT,NCXMAT, . LTRAC,MFRbi,IELE,NHRM,NBNNBI,NBELMB,ICARA, . LW2bi,NDEF,NSTRSS,MFR1,NBGMAT,NELMAT,MSOUPA, . NUMAT1,LENDO,NBBB,NNVARI,KERR1,MELEME INTEGER icow45,icow46,icow47,icow48,icow49,icow50, . icow51,icow52,icow53,icow54,icow55,icow56 . icow57,icow58 ENDSEGMENT SEGMENT WRK22 REAL*8 XXE(3,NBNNbi) ENDSEGMENT DIMENSION ZDAUX(6,6) DIMENSION H1 (6,6), H2(6,6), H3(6,6) DIMENSION H01 (6,6), H02(6,6), H03(6,6) * MATRICE DES SOUPLESSES INITIALES DIMENSION SEFF(6,6),CEFF(6,6) * sortH CONTRAINTES DANS LE REPÈRE ORTHOTROPE PUIS NON * DORTH : DEFO DAN S LE REPÈRE OrTHO * sigfv : CONTRAINTE RÉORGANISÉES ORDRE CASTEM * * EPSIN : Défo inel dans le repère ortho ordre onera * puis dans le repère glob aordre castem * epsel : DEFO ELASTIQUE CALCULÉE POUR L'OBTENTION DES CONTRAINTES * DIMENSION SORTH(6), SIGFV(6), EPSIN(6),EPSINV(6), & DORTH(6), EPSEL(6),EPSTFV(6), & SORTH1(6),SORTH2(6) * defoth : DEFO DANS LE REPERE ORTHO SOus FORME (3X3) * POUR LE CALCUL DES DEFO PROPRES PUIS PARTIE >0 DES DÉFO PROPRES ** xprop : DIRECTIONS PROPRES/REPERE ortho * xpinv : MATRICE INVERSE DE CHANGEMENT DE REPERE XPROP * xPINVT : MATRICE TRANSPOSÉE DE XPINV * defotht : MATRICE TEMPORAIRE POUR LE CHANGEMENT DE REPÈRE * epsclo : DEFO DE FERMETURE (CLOSURE) * EPSBAR : DEFO - DEFO CLOSURE DIMENSION DEFOTH(3,3),PROP(3),XPROP(3,3),XPINV(3,3), & DEFOTHT(3,3),XPINVT(3,3),EPSCLO(6), & EPSBAR(6),EPSIM(6) DIMENSION ZK1(6,6),ZK2(6,6),ZK3(6,6),TERME(6,6) DIMENSION EPSS1(6),EPSR1(6) * Déformation résiduelles et stockées DIMENSION EPSS(6),EPSR(6) * DRIVING FORCES NORMALES ET TRANSVERSALES * dom : VARIABLES D'ENDOMAGEMENT DIMENSION YN(3),YT(3),DOM(3) * DEPSIF (DELTA EPSILON I f : * LA FERMETURE COMMENCE POUR epsbar = DELTA EPSILON * finit POUR epsbar = DELTA EPSILON * ZNUACT INDICE D'ACTIVATION =1 : ACTIVE * =0 : PASSIVE DIMENSION DEPSIF(3),ZNUACT(3) * Pseudo contraintes pour le calcul des defo residuelles EPSR et stockées EPSS DIMENSION SOMS(6,6),SOMR(6,6), $ SISIS(6),SISIR(6) * Tableau de paramètres DIMENSION Y0N(3),Y0C(3),Y0T(3),AIF(3),PT(3),PN(3), $ YCT(3),DCT(3),DCN(3),DEPSIF0(3),YCN(3) DATA ( ( H1(I,J), J=1,6), I=1,6) & /1.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 1.0/ DATA ( ( H2(I,J), J=1,6), I=1,6) & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 1.0/ * DATA ( ( H3(I,J), J=1,6), I=1,6) & /0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, & 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/ * pour le modèle scalaire * Attention on ne rentre pas les racines carrée des valeurs * Y0 et YC telles que définies formules (2.21) et (2.24) * dans SEMT/LM2S/RT/05-034 * PHENOMENOLOGICAL COEFFICIENTS * * scalar damage law parameters * G1DC, G1Y0, G1YC, G1P * G2DC, G2Y0, G2YC, G2P * G3DC, G3Y0, G3YC, G3P * paramètre pour le calcul des déformations résiduelles * modèle scalaire (5 en pseudo tensoriel) ***** INITIALIZATION VARIABLES * PI = 4.D0*ATAN(1.D0) * Proprietes materiau YG1 = XMAT(1) YG2 = XMAT(2) YG3 = XMAT(3) XNU12 = XMAT(4) XNU23 = XMAT(5) XNU13 = XMAT(6) G12 = XMAT(7) G23 = XMAT(8) G13 = XMAT(9) * Nombre de param obligatoires pour le modèle 15 + ALP1 ALP2 ALP3 et RHO =19 NOBL = 19 * On extrait les valeurs facultatives du modèle H1N = XMAT(NOBL + 1) IF(IVALMA(NOBL+1).EQ.0.) H1N = 1. H1HP = XMAT(NOBL + 2) IF(IVALMA(NOBL+2).EQ.0.) H1HP = 0.7 H1P = XMAT(NOBL + 3) IF(IVALMA(NOBL+3).EQ.0.) H1P = 0.45 H2N = XMAT(NOBL + 4) IF(IVALMA(NOBL+4).EQ.0.) H2N = 1. H2HP = XMAT(NOBL + 5) IF(IVALMA(NOBL+5).EQ.0.) H2HP = 0.7 H2P = XMAT(NOBL + 6) IF(IVALMA(NOBL+6).EQ.0.) H2P = 0.45 H3N = XMAT(NOBL+7) IF(IVALMA(NOBL+7).EQ.0.) H3N = 1. H3P = XMAT(NOBL + 8) IF(IVALMA(NOBL+8).EQ.0.) H3P = 0.7 Y0N(1) = XMAT(NOBL + 9) IF(IVALMA(NOBL+9).EQ.0.) Y0N(1) =173.205 Y0N(2) = XMAT(NOBL + 10) IF(IVALMA(NOBL+10).EQ.0.) Y0N(2) =173.205 Y0N(3) = XMAT(NOBL + 11) IF(IVALMA(NOBL+11).EQ.0.) Y0N(3) =173.205 YCN(1) = XMAT(NOBL + 12) IF(IVALMA(NOBL+12).EQ.0.) YCN(1) =1870.83 YCN(2) = XMAT(NOBL + 13) IF(IVALMA(NOBL+13).EQ.0.) YCN(2) =1870.83 YCN(3) = XMAT(NOBL + 14) IF(IVALMA(NOBL+14).EQ.0.) YCN(3) =1870.83 Y0T(1) = XMAT(NOBL + 15) IF(IVALMA(NOBL+15).EQ.0.) Y0T(1) =31.623 Y0T(2) = XMAT(NOBL + 16) IF(IVALMA(NOBL+16).EQ.0.) Y0T(2) =31.623 Y0T(3) = XMAT(NOBL + 17) IF(IVALMA(NOBL+17).EQ.0.) Y0T(3) =173.205 YCT(1) = XMAT(NOBL + 18) IF(IVALMA(NOBL+18).EQ.0.) YCT(1) =1870.83 YCT(2) = XMAT(NOBL + 19) IF(IVALMA(NOBL+19).EQ.0.) YCT(2) =1870.83 YCT(3) = XMAT(NOBL + 20) IF(IVALMA(NOBL+20).EQ.0.) YCT(3) =1870.83 DCT(1) = XMAT(NOBL + 21) IF(IVALMA(NOBL+21).EQ.0.) DCT(1) =4. DCT(2) = XMAT(NOBL + 22) IF(IVALMA(NOBL+22).EQ.0.) DCT(2) =4. DCT(3) = XMAT(NOBL + 23) IF(IVALMA(NOBL+23).EQ.0.) DCT(3) =4. DCN(1) = XMAT(NOBL + 24) IF(IVALMA(NOBL+24).EQ.0.) DCN(1) =4. DCN(2) = XMAT(NOBL + 25) IF(IVALMA(NOBL+25).EQ.0.) DCN(2) =4. DCN(3) = XMAT(NOBL + 26) IF(IVALMA(NOBL+26).EQ.0.) DCN(3) =4. PN(1) = XMAT(NOBL + 27) IF(IVALMA(NOBL+27).EQ.0.) PN(1) =1. PN(2) = XMAT(NOBL + 28) IF(IVALMA(NOBL+28).EQ.0.) PN(2) =1. PN(3) = XMAT(NOBL + 29) IF(IVALMA(NOBL+29).EQ.0.) PN(3) =1. PT(1) = XMAT(NOBL + 30) IF(IVALMA(NOBL+30).EQ.0.) PT(1) =1.2 PT(2) = XMAT(NOBL + 31) IF(IVALMA(NOBL+31).EQ.0.) PT(2) =1.2 PT(3) = XMAT(NOBL + 32) IF(IVALMA(NOBL+32).EQ.0.) PT(3) =1. B = XMAT(NOBL + 33) IF(IVALMA(NOBL+33).EQ.0.) B =1. DELTAL = XMAT(NOBL + 34) IF(IVALMA(NOBL+34).EQ.0.) DELTAL =0. TZERO = XMAT(NOBL + 35) IF(IVALMA(NOBL+35).EQ.0.) TZERO =0. DEPSIF0(1) = XMAT(NOBL + 36) IF(IVALMA(NOBL+36).EQ.0.) DEPSIF0(1) =0.0003 DEPSIF0(2) = XMAT(NOBL + 37) IF(IVALMA(NOBL+37).EQ.0.) DEPSIF0(2) =0.0003 DEPSIF0(3) = XMAT(NOBL + 38) IF(IVALMA(NOBL+38).EQ.0.) DEPSIF0(3) =0.0003 AIF(1) = XMAT(NOBL + 39) IF(IVALMA(NOBL+39).EQ.0.) AIF(1) =0.5 AIF(2) = XMAT(NOBL + 40) IF(IVALMA(NOBL+40).EQ.0.) AIF(2) =0.5 AIF(3) = XMAT(NOBL + 41) IF(IVALMA(NOBL+41).EQ.0.) AIF(3) =0.5 ETA1 = XMAT(NOBL + 42) IF(IVALMA(NOBL+42).EQ.0.) ETA1 =0.1 ETA2 = XMAT(NOBL + 43) IF(IVALMA(NOBL+43).EQ.0.) ETA2 =0.1 ETA3 = XMAT(NOBL + 44) IF(IVALMA(NOBL+44).EQ.0.) ETA3 =0.0 * * Pour debuggage PARAM=0 * Variables d'endommagement DOM1=VAR0(2) DOM2=VAR0(3) DOM3=VAR0(4) ****** CALCUL DE LA DEFORMATION INITIALE A PARTIR ****** DES CONTRAINTES INITIALES **********Debuggage IF (PARAM.EQ.1) THEN WRITE(IOIMP,66770) IB,IGAU 66770 format(////////2x,'element ',i6,2x,'point ',i3//) WRITE (IOIMP,*) 'Increment des deformations ' WRITE (IOIMP,99999) (DEPST(ILOOP), ILOOP=1,6) WRITE (IOIMP,*) 'Contraintes au debut de l''iteration' WRITE (IOIMP,99999) (SIG0(ILOOP), ILOOP=1,6) ENDIF **********Debuggage * Controle si il faut calculer la matrice de hook * PRINT *,'IB,IGAU,N2PTEL,N2EL',IB,IGAU,N2PTEL,N2EL IF (IB.EQ.1.AND.IGAU.EQ.1) THEN GOTO 100 ELSEIF (N2PTEL.EQ.1.AND.N2EL.EQ.1) THEN GOTO 200 ELSEIF (N2PTEL.EQ.1.AND.N2EL.NE.1) THEN IF (IGAU.EQ.1) THEN GOTO 100 ELSE GOTO 200 ENDIF ELSE GOTO 100 ENDIF 100 CONTINUE * Calcul de la matrice de hook pour un materiau orthotrope: C0 IPERR=1 XNU21=(YG2/YG1)*XNU12 XNU32=(YG3/YG2)*XNU23 XNU31=(YG3/YG1)*XNU13 AUX=(1.D0-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31 & -2.D0*XNU21*XNU32*XNU13) AUX1=AUX/YG1 AUX2=AUX/YG2 AUX3=AUX/YG3 DDAUX(1,1)=(1.D0-XNU23*XNU32)/AUX1 DDAUX(1,2)=(XNU21+XNU31*XNU23)/AUX1 DDAUX(2,1)=DDAUX(1,2) DDAUX(1,3)=(XNU31+XNU21*XNU32)/AUX1 DDAUX(3,1)=DDAUX(1,3) DDAUX(2,2)=(1.D0-XNU13*XNU31)/AUX2 DDAUX(2,3)=(XNU32+XNU12*XNU31)/AUX2 DDAUX(3,2)=DDAUX(2,3) DDAUX(3,3)=(1.D0-XNU12*XNU21)/AUX3 DDAUX(4,4)=G23 DDAUX(5,5)=G13 DDAUX(6,6)=G12 * * On recopie la matrice de hook pour l'inverser * 200 DO 205 ILOOP=1,LHOOK DO 205 JLOOP=1,LHOOK ZDAUX(ILOOP,JLOOP)= DDAUX(ILOOP,JLOOP) 205 CONTINUE * Inversion de la matrice de hook TPREC= 0.D1 IPERR=0 IF (IPERR.NE.0) THEN WRITE (IOIMP,*) 'ERREUR DANS L''INVERSION DE LA MATRICE DE HOOK' ENDIF * Calcul des tenseurs d'endommagement H01, H02, H03 H01(1,1)=H1(1,1)*H1N*ZDAUX(1,1) H01(5,5)=H1(5,5)*H1HP*ZDAUX(5,5) H01(6,6)=H1(6,6)*H1P*ZDAUX(6,6) H02(2,2)=H2(2,2)*H2N*ZDAUX(2,2) H02(4,4)=H2(4,4)*H2HP*ZDAUX(4,4) H02(6,6)=H2(6,6)*H2P*ZDAUX(6,6) H03(3,3)=H3(3,3)*H3N*ZDAUX(3,3) H03(4,4)=H3(4,4)*H3P*ZDAUX(4,4) H03(5,5)=H3(5,5)*H3P*ZDAUX(5,5) ***** VI sont rangées dans l'ordre de l'ONERA cad rep orthotrope ****** 12 ==> 6, 13 ==> 5 et 23 ==> 4 * Calcul de la nouvelle défo repère glob ordre cast DO 451 ILOOP=1,6 EPSTFV(ILOOP)=EPST0(ILOOP)+DEPST(ILOOP) EPSTF(ILOOP)=EPSTFV(ILOOP) 451 CONTINUE * Par contre les depstv cad après les DORTH sont rangés dans l'ordre castem * : 12 ==> 4 13 ==> 5 23 ==>6 * * * On les réorganise donc pour etre dans l'ordre ONERA VARTMP= DORTH(4) DORTH(4)= DORTH(6) DORTH(6)= VARTMP DEFOTH(1,1) = DORTH(1) DEFOTH(2,2) = DORTH(2) DEFOTH(3,3) = DORTH(3) DEFOTH(1,2) = DORTH(6) DEFOTH(1,3) = DORTH(5) DEFOTH(2,1) = DEFOTH(1,2) DEFOTH(2,3) = DORTH(4) DEFOTH(3,1) = DEFOTH(1,3) DEFOTH(3,2) = DEFOTH(2,3) * C PRINT *,'VERIF VAL PROP',PROP(1),PROP(2),PROP(3) C Je ne garde que la partie positive des valeurs propres IF(PROP(1).LT.0.) PROP(1)=0.D0 IF(PROP(2).LT.0.) PROP(2)=0.D0 IF(PROP(3).LT.0.) PROP(3)=0.D0 C Je remet ma matrice de valeurs propres corrigée axes ortho DEFOTH(1,1) = PROP(1) DEFOTH(2,2) = PROP(2) DEFOTH(3,3) = PROP(3) DEFOTH(1,2) = 0.D0 DEFOTH(1,3) = 0.D0 DEFOTH(2,1) = 0.D0 DEFOTH(2,3) = 0.D0 DEFOTH(3,1) = 0.D0 DEFOTH(3,2) = 0.D0 C XPROP(3,3) est la matrice donnant les coordonnées des vecteurs propres C par rapport aux axes d'orthotropie C 1 er indice direction 2° n° vecteur propre C on a besoin de la matrice donnant les axes ortho dans le repère C des vecteurs propres C C en principe on a la matrice de defo efficasse dans les axes ortho defoth C calcul des driving forces dans le cas scalaire C mode normal C Y1N =0.5*DDAUX(1,1)*DEFOTH(1,1)*DEFOTH(1,1) Y2N =0.5*DDAUX(2,2)*DEFOTH(2,2)*DEFOTH(2,2) Y3N =0.5*DDAUX(3,3)*DEFOTH(3,3)*DEFOTH(3,3) C mode tangentiel C Y1T =0.5*(DDAUX(6,6)*DEFOTH(1,2)*DEFOTH(1,2)+b* & DDAUX(5,5)*DEFOTH(1,3)*DEFOTH(1,3)) Y2T =0.5*(DDAUX(6,6)*DEFOTH(1,2)*DEFOTH(1,2)+b* & DDAUX(4,4)*DEFOTH(2,3)*DEFOTH(2,3)) Y3T =0.5*(DDAUX(4,4)*DEFOTH(2,3)*DEFOTH(2,3)+b* & DDAUX(5,5)*DEFOTH(1,3)*DEFOTH(1,3)) IF(Y1N.LT.0.) THEN YN(1)=0. ELSE YN(1)=SQRT(Y1N) ENDIF IF(Y2N.LT.0.) THEN YN(2)=0. ELSE YN(2)=SQRT(Y2N) ENDIF IF(Y3N.LT.0.) THEN YN(3)=0. ELSE YN(3)=SQRT(Y3N) ENDIF IF(Y1T.LT.0.) THEN YT(1)=0. ELSE YT(1)=SQRT(Y1T) ENDIF IF(Y2T.LT.0.) THEN YT(2)=0. ELSE YT(2)=SQRT(Y2T) ENDIF IF(Y3T.LT.0.) THEN YT(3)=0. ELSE YT(3)=SQRT(Y3T) ENDIF C Calcul des variables d'endomagemment Do 722 IDRF=1,3 FAFA =YN(IDRF)-Y0N(IDRF) IF (FAFA.LT.0.) FAFA=0. GIN = DCN(IDRF)*(1.D0 - EXP(-1.* & ((FAFA/YCN(IDRF))**PN(IDRF)))) C FAFA =YT(IDRF)-Y0T(IDRF) IF (FAFA.LT.0.) FAFA=0. GIT = DCT(IDRF)*(1.D0 - EXP(-1.* & ((FAFA/YCT(IDRF))**PT(IDRF)))) C DOM(IDRF) = GIN + GIT 722 CONTINUE DOM1= MAX(DOM(1),VAR0(2)) DOM2= MAX(DOM(2),VAR0(3)) DOM3= MAX(DOM(3),VAR0(4)) IF (PARAM.EQ.1) THEN WRITE (IOIMP,*) 'Increment des deformations orth. ' WRITE (IOIMP,99999) (DORTH(ILOOP), ILOOP=1,6) ENDIF * * On récupère les deformations totales dans les var. internes * repère ortho ordre ONERA * DO 500 ILOOP =1,6 VARF(ILOOP+4)=DORTH(ILOOP) 500 CONTINUE * On peut calculer EPSILON CLosure * en fonction de deltal et tzero * et de la temperature TURE0(1)ou TUREF(1)du segment WRK52 de l'include DECHE * DO 701 IDOU=1,6 EPSCLO(IDOU) = DELTAL*(TURE0(1)-TZERO) EPSBAR(IDOU) = DORTH(IDOU)-EPSCLO(IDOU) EPSIM(IDOU) = (DORTH(IDOU)+VAR0(IDOU+4))/2. 701 CONTINUE * * Calcul des valeurs délimitant les déformations pour * lesquelles les fissures commencent et finissent à/de se fermer * en vue du calcul de l'index de désactivation DEPSIF(1)= (1.D0 + (AIF(1)*DOM1))*DEPSIF0(1) DEPSIF(2)= (1.D0 + (AIF(2)*DOM2))*DEPSIF0(2) DEPSIF(3)= (1.D0 + (AIF(3)*DOM3))*DEPSIF0(3) * * Calcul de l'index d'activation 1 si actif 0 si passif * DO 703 IDO2=1,3 IF(EPSBAR(IDO2).GE.DEPSIF(IDO2)) THEN ZNUACT(IDO2)= 1.D0 ELSEIF(EPSBAR(IDO2).GT.(-1.*(DEPSIF(IDO2)))) THEN ZNUACT(IDO2)= 0.5D0*(1.D0-(COS(PI/2.D0*(EPSBAR(IDO2) & +DEPSIF(IDO2))/DEPSIF(IDO2)))) ELSE ZNUACT(IDO2)= 0.D0 ENDIF 703 CONTINUE * * Calcul des déformations résiduelles et stockées * * Calcul de la variations du dommage DELTDO1 = DOM1 - VAR0(2) DELTDO2 = DOM2 - VAR0(3) DELTDO3 = DOM3 - VAR0(4) * Calcul de la variation d'indice d'activation DELTNU1 = ZNUACT(1) - VAR0(11) DELTNU2 = ZNUACT(2) - VAR0(12) DELTNU3 = ZNUACT(3) - VAR0(13) * * Calcul de Seff =somme sur i de nui di hi0 * DO 744 INDJ3=1,6 Do 745 INDJ4=1,6 SEFF(INDJ3,INDJ4) = ZDAUX(INDJ3,INDJ4) & +ZNUACT(1)*DOM1*H01(INDJ3,INDJ4)+ & ZNUACT(2)*DOM2*H02(INDJ3,INDJ4)+ & ZNUACT(3)*DOM3*H03(INDJ3,INDJ4) CEFF(INDJ3,INDJ4) =SEFF(INDJ3,INDJ4) 745 CONTINUE 744 CONTINUE C * Déformation stockées (S) résiduelle (R) * DO 741 INDI=1,6 SISIS(INDI)=0.D0 SISIR(INDI)=0.D0 DO 742 INDJ=1,6 SOMS(INDI,INDJ)= DELTNU1*DOM1*ZK1(INDI,INDJ)+ $ DELTNU2*DOM2*ZK2(INDI,INDJ)+ $ DELTNU3*DOM3*ZK3(INDI,INDJ) SISIS(INDI)=SISIS(INDI)-SOMS(INDI,INDJ)*EPSIM(INDJ) SOMR(INDI,INDJ)= ETA1*ZNUACT(1)*DELTDO1*ZK1(INDI,INDJ)+ $ ETA2*ZNUACT(2)*DELTDO2*ZK2(INDI,INDJ)+ $ ETA3*ZNUACT(3)*DELTDO3*ZK3(INDI,INDJ) SISIR(INDI)=SISIR(INDI)+SOMR(INDI,INDJ)*EPSIM(INDJ) 742 CONTINUE 741 CONTINUE * Je retranche aux defos les defos residuelle et stockées * j'ai dejà mis dans DORTH la defo ini DO 746 INDI = 1,6 EPSIN(INDI)=VAR0(13+INDI)+EPSR1(INDI) +EPSS1(INDI) EPSEL(INDI) = DORTH(INDI)- EPSIN(INDI) 746 CONTINUE * * Calcul des contraintes a la fin du pas * SORTH contient les contraintes a la fin du pas * dans le repere orthotrope DO 749 INDIA=1,6 SORTH(INDIA) = SORTH1(INDIA) - SORTH2(INDIA) 749 CONTINUE IF (PARAM.EQ.1) THEN WRITE (IOIMP,*) 'Contraintes calculees (repere orth.)' WRITE (IOIMP,99999) (SORTH(ILOOP), ILOOP=1,6) ENDIF * ATTENTION: * On reorganise les contraintes en cisaillement pour * calculer les contraintes dans le repere global * SIGFV(1)=SORTH(1) SIGFV(2)=SORTH(2) SIGFV(3)=SORTH(3) SIGFV(4)=SORTH(6) SIGFV(5)=SORTH(5) SIGFV(6)=SORTH(4) EPSINV(1)=EPSIN(1) EPSINV(2)=EPSIN(2) EPSINV(3)=EPSIN(3) EPSINV(4)=EPSIN(6) EPSINV(5)=EPSIN(5) EPSINV(6)=EPSIN(4) VARF(1)= 0.D0 DO 186 INDI = 1,6 VARF(13+INDI)= EPSIN(INDI) VARF(1)= VARF(1)+ EPSIN(INDI) 186 CONTINUE IF (PARAM.EQ.1) THEN WRITE (IOIMP,*) 'Apres SICCNT e reorg' WRITE (IOIMP,*) 'Contraintes reorganisees' WRITE (IOIMP,99999) (SIGFV(ILOOP), ILOOP=1,6) ENDIF * On appele SICROT pour trouver les contraintes dans le repère global * On utilise SORTH pour garder le resultat * (on peut pas passer SIGF à la subroutine car il est dans un segment) * * IF (IERR.EQ.1) THEN PRINT *,'KERRE =1 ' KERRE=1 ENDIF * On recopie SORTH in SIGF DO 1000 ILOOP=1,6 SIGF(ILOOP)=SORTH(ILOOP) 1000 CONTINUE IF (PARAM.EQ.1) THEN WRITE (IOIMP,*) 'Contraintes calculees' WRITE (IOIMP,99999) (SIGF(ILOOP), ILOOP=1,6) ENDIF VARF(2)= DOM1 VARF(3)= DOM2 VARF(4)= DOM3 VARF(11)= ZNUACT(1) VARF(12)= ZNUACT(2) VARF(13)= ZNUACT(3) 99999 format(2x,' ',(6(1x,3pe12.5),/)) 99998 format(2x,' ',(4(1x,3pe12.5),/)) 99997 format(2x,' ',(1x,3pe12.5),/) 99996 format(2x,' ',(3(1x,1pe12.3),/)) RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales