betokt
C BETOKT SOURCE PV 11/03/07 21:15:10 6885 C C Matrice tangente pour le modele endommageable en cyclique C D. Combescure 18/09/95 ELSA-Ispra C C ENTREES: C ------- C XMAT = Caracteristiques materiaux C C VARF = Variables internes C C SIGF = Contraintes C C SORTIES: C ------- C XKTAT = Matrice tangente C C================================================================ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO DIMENSION XMAT(*) DIMENSION TRAC(*) C DIMENSION XNOR1(4),XNOR2(4),XCOU1(3,3),XCOU2(3,3) DIMENSION GAMBDA(2),EEE(2,2),SIGP(2),EEE2(2,2) DIMENSION UUU(3,2),VVV(2,3),UUU2(3,2),VVV2(2,3),UUU3(3,2) DIMENSION HHH1(3,3),HHH2(3,3),HHH3(3,3) DIMENSION XKTAT(4,4),RESIST(6),XKISO(2) PARAMETER (UN=1.D0,UNDEMI=0.5D0,EPSILO=1.D-20,XZER=0.D0) PARAMETER (PRECIS=1.D-4) KERRE=0 C================================================================ C LECTURE DES CARACTERISTIQUES MAT. ET DES VAR. INT. C=============================================================== C Pour la lecture des courbes IPT = 1 IPC = IPT+2*NCURVT C YOUN = XMAT(1) XNU = XMAT(2) XGGG = (UNDEMI*YOUN/(UN+XNU)) XHH1 = XMAT(3) DEGRAD = XMAT(8)/XMAT(9) RESIST(1) = XMAT(4) RESIST(2) = XMAT(4) RESIST(3) = XMAT(5) RESIST(4) = XMAT(5) RESIST(5) = XMAT(6) RESIST(6) = XMAT(7) XLCAT = XMAT(10) XLCAC = XMAT(11) CPHI = VARF(5) + UN SPHI = VARF(6) ICAS1 = nint(VARF(11)) ICAS2 = nint(VARF(12)) C============================================================== C RAIDEUR ELASTIQUE C=============================================================== XKTAT(1,1) = YOUN/(UN - (XNU**2)) XKTAT(1,2) = XNU*XKTAT(1,1) XKTAT(2,1) = XKTAT(1,2) XKTAT(2,2) = XKTAT(1,1) XKTAT(4,4) = YOUN/(2.D0*(UN+XNU)) C============================================================== IF (ICAS1.EQ.0) THEN GOTO 9999 ENDIF C &XKISO(1),XPEN1,KERRE) &XKISO(2),XPEN2,KERRE) GAMBDA(1) = VARF(13) GAMBDA(2) = VARF(14) IF (ICAS1.LE.4) THEN FG(1) = RESIST(ICAS1) ELSE FG(1) = XKISO(ICAS1-4)*RESIST(ICAS1) ENDIF IF (ICAS2.LE.4) THEN FG(2) = RESIST(ICAS2) ELSE FG(2) = XKISO(ICAS2-4)*RESIST(ICAS2) ENDIF C============================================================== C CALCUL DE L'INVERSE C============================================================== HHH1(1,1) = UN/YOUN HHH1(1,2) = -XNU*HHH1(1,1) HHH1(2,1) = HHH1(1,2) HHH1(2,2) = HHH1(1,1) HHH1(3,3) = (2.D0*(UN+XNU)/YOUN) C C IF (ICAS1.EQ.1) THEN ISGNTC = 1 ELSE IF (ICAS1.EQ.2) THEN ISGNTC = 1 ELSE IF (ICAS1.EQ.3) THEN ISGNTC = -1 ELSE IF (ICAS1.EQ.4) THEN ISGNTC = -1 ELSE IF (ICAS1.EQ.5) THEN ISGNTC = 1 ELSE IF (ICAS1.EQ.6) THEN ISGNTC = -1 ENDIF IF (ICAS1.LE.4) THEN IF (SIGP(2).GE.SIGP(1)) THEN IF ((ICAS1.EQ.1).OR.(ICAS1.EQ.3)) THEN ISGN2 = -1 ELSE ISGN2 = 1 ENDIF ELSE IF ((ICAS1.EQ.1).OR.(ICAS1.EQ.3)) THEN ISGN2 = 1 ELSE ISGN2 = -1 ENDIF ENDIF ELSE ISGN2 = 1 ENDIF IF (ICAS1.LE.4) THEN ELSE PHI = SQRT ((UNDEMI*(SIGF(1)-SIGF(2)))**2+SIGF(4)**2) IF ((PHI.LT.ABS(PRECIS*FG(1))).AND.(ICAS1.EQ.ICAS2)) THEN C Cas de l'apex ou on calcule directement H-1 HHH1(1,1) = XGGG*((4.D0*PHI)+(YOUN*GAMBDA(1)))/ & (2.D0*(UN-XNU)*((2.D0*PHI)+(XGGG*GAMBDA(1)))) HHH1(2,2)=HHH1(1,1) HHH1(1,2) = XGGG*((4.D0*XNU*PHI)+(YOUN*GAMBDA(1)))/ & (2.D0*(UN-XNU)*((2.D0*PHI)+(XGGG*GAMBDA(1)))) HHH1(2,1)=HHH1(1,2) HHH1(3,3) = XGGG*PHI/(PHI+XGGG*GAMBDA(1)) GOTO 1010 ELSE ENDIF ENDIF C C IF (ICAS1.EQ.ICAS2) THEN GOTO 1000 ELSE IF (ICAS2.LE.4) THEN FG(2) = RESIST(ICAS2) ELSE FG(2) = XKISO(ICAS2-4)*RESIST(ICAS2) ENDIF IF (ICAS2.EQ.1) THEN ISGNTCB = 1 ELSE IF (ICAS2.EQ.2) THEN ISGNTCB = 1 ELSE IF (ICAS2.EQ.3) THEN ISGNTCB = -1 ELSE IF (ICAS2.EQ.4) THEN ISGNTCB = -1 ELSE IF (ICAS2.EQ.5) THEN ISGNTCB = 1 ELSE IF (ICAS2.EQ.6) THEN ISGNTCB = -1 ENDIF IF (ICAS2.LE.4) THEN IF (SIGP(2).GE.SIGP(1)) THEN IF ((ICAS2.EQ.1).OR.(ICAS2.EQ.3)) THEN ISGN2B = -1 ELSE ISGN2B = 1 ENDIF ELSE IF ((ICAS2.EQ.1).OR.(ICAS2.EQ.3)) THEN ISGN2B = 1 ELSE ISGN2B = -1 ENDIF ENDIF ELSE ISGN2B = 1 ENDIF C IF (ICAS2.LE.4) THEN ELSE ENDIF C GOTO 2000 ENDIF C C C 1000 CONTINUE C C Cas 1 mecanisme C C Calcul de l'inverse de H et de H IF (IRD.NE.0) THEN WRITE (IOIMP,*)'BETOKT: Determinant nul' GOTO 9999 ENDIF C Point d'entree dans le cas de l'apex 1010 CONTINUE C Calcul de U,V et E-1 UUU(1,1) = XNOR1(1) UUU(2,1) = XNOR1(2) UUU(3,1) = XNOR1(4) VVV(1,1) = XNOR1(1) VVV(1,2) = XNOR1(2) VVV(1,3) = XNOR1(4) C IF (ICAS1.LE.4) THEN EEE(1,1) = XHH1 ELSE IF (ICAS1.EQ.5) THEN EEE(1,1) = ISGNTC*XPEN1*RESIST(ICAS1) ELSE IF (ICAS1.EQ.6) THEN EEE(1,1) = ISGNTC*XPEN2*RESIST(ICAS1) ENDIF C C C EEE(1,1) = EEE(1,1) + HHH2(1,1) IF (ABS(EEE(1,1)).GT.EPSILO) THEN EEE(1,1) = -UN/EEE(1,1) ELSE WRITE (IOIMP,*)'BETOKT: Determinant nul' GOTO 9999 ENDIF C GOTO 3000 C 2000 CONTINUE C C Cas 2 mecanismes C C Calcul de H-1 et H IF (IRD.NE.0) THEN WRITE (IOIMP,*)'BETOKT: Determinant nul' GOTO 9999 ENDIF C Calcul de U ,V et E UUU(1,1) = XNOR1(1) UUU(2,1) = XNOR1(2) UUU(3,1) = XNOR1(4) UUU(1,2) = XNOR2(1) UUU(2,2) = XNOR2(2) UUU(3,2) = XNOR2(4) VVV(1,1) = XNOR1(1) VVV(1,2) = XNOR1(2) VVV(1,3) = XNOR1(4) VVV(2,1) = XNOR2(1) VVV(2,2) = XNOR2(2) VVV(2,3) = XNOR2(4) C IF (ICAS1.LE.4) THEN EEE(1,1) = XHH1 IF (ICAS2.EQ.6) THEN EEE(2,1) = DEGRAD*ISGNTCB*RESIST(6) &*ISGNTC*RESIST(ICAS1)*XPEN2 ELSE EEE(2,1) = XZER ENDIF ELSE IF (ICAS1.EQ.5) THEN EEE(1,1) = ISGNTC*XPEN1*RESIST(ICAS1) EEE(2,1) = XZER ELSE IF (ICAS1.EQ.6) THEN EEE(1,1) = ISGNTC*XPEN2*RESIST(ICAS1) EEE(2,1) = XZER ENDIF IF (ICAS2.LE.4) THEN EEE(2,2) = XHH1 IF (ICAS1.EQ.6) THEN EEE(1,2) = DEGRAD*ISGNTC*RESIST(6) &*ISGNTCB*RESIST(ICAS2)*XPEN2 ELSE EEE(1,2) = XZER ENDIF ELSE IF (ICAS2.EQ.5) THEN EEE(2,2) = ISGNTCB*XPEN1*RESIST(ICAS2) EEE(1,2) = XZER ELSE IF (ICAS2.EQ.6) THEN EEE(2,2) = ISGNTCB*XPEN2*RESIST(ICAS2) EEE(1,2) = XZER ENDIF C C C XDET = EEE(1,1)*EEE(2,2) - EEE(1,2)*EEE(2,1) IF (ABS(XDET).GT.EPSILO) THEN XDET = UN/XDET EEE2(1,1) = XDET*EEE(2,2) EEE2(2,2) = XDET*EEE(1,1) EEE2(2,1) = -XDET*EEE(1,2) EEE2(1,2) = -XDET*EEE(2,1) ELSE WRITE (IOIMP,*)'BETOKT: Determinant nul' GOTO 9999 ENDIF C GOTO 3000 C C============================================================== 3000 CONTINUE XKTAT(1,1) = HHH1(1,1) XKTAT(1,2) = HHH1(1,2) XKTAT(2,1) = HHH1(2,1) XKTAT(2,2) = HHH1(2,2) XKTAT(4,4) = HHH1(3,3) XKTAT(4,1) = HHH1(3,1) XKTAT(4,2) = HHH1(3,2) XKTAT(1,4) = HHH1(1,3) XKTAT(2,4) = HHH1(2,3) 9999 CONTINUE C=============================================================== C Fin de la routine C=============================================================== RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales