Numérotation des lignes :

C DLAMD     SOURCE    CHAT      05/01/12    22:52:44     5004      SUBROUTINE DLAMD(TENS,DTENS,XLAM31,XLAM32,RDP,ADP,HDP,ITEST)      IMPLICIT INTEGER(I-N)      IMPLICIT REAL*8(A-H,O-Z)      DIMENSION TENS(3),DTENS(3)      ITEST=0      XLAM3=0.D0CC--------------------------------------------------------C     CETTE ROUTINE PERMET DE CALCULER LA VALEURC     DU DLAMDA ASSOCIE AU DRUCKER-PRAGERC--------------------------------------------------------C      A=ADP*(DTENS(1)+DTENS(2))+HDP      A=-A*A      A=A+DTENS(1)*DTENS(1)+DTENS(2)*DTENS(2)+3.D0*DTENS(3)*DTENS(3)     1 -DTENS(1)*DTENS(2)      B=2.D0*(ADP*(DTENS(1)+DTENS(2))+HDP)*(RDP-ADP*(TENS(1)+TENS(2)))     1 +2.D0*DTENS(1)*TENS(1)+2.D0*DTENS(2)*TENS(2)+     1 6.D0*DTENS(3)*TENS(3)-DTENS(1)*TENS(2)-DTENS(2)*TENS(1)      C=RDP-ADP*(TENS(1)+TENS(2))      C=C*C      C=-C+TENS(1)*TENS(1)+TENS(2)*TENS(2)+3.D0*TENS(3)*TENS(3)     1 -TENS(2)*TENS(1)      X1=0.D0      X2=0.D0      IF(A.EQ.0.D0) GOTO 1000      B=B/A      C=C/A      A=1.D0      DIS=B*B-4.D0*A*C      ADIS=ABS(DIS)      IF(DIS.GE.0.D0) THEN      DIS=SQRT(ADIS)      X2=(-B+DIS)/2.D0      X1=(-B-DIS)/2.D0      GOTO 2000      ENDIF      ITEST=1      RETURN 1000 IF(B.EQ.0.D0) THEN      X1=0.D0      X2=0.D0      GOTO 2000      ENDIF      X1=-C/B      X2=X1 2000 CONTINUE      S1=RDP-ADP*(TENS(1)+TENS(2)+X1*(DTENS(1)+DTENS(2)))-HDP*X1      S2=RDP-ADP*(TENS(1)+TENS(2)+X2*(DTENS(1)+DTENS(2)))-HDP*X2      IF(RDP.NE.0.D0) THEN      S1=S1/RDP      S2=S2/RDP      ENDIF      IF(S1.GE.-1.E-10.AND.S2.GE.-1.E-10) THEN      XLAM31=MIN(X1,X2)      XLAM32=MAX(X1,X2)      IF(XLAM31.LT.-1.D-10) XLAM31=XLAM32      RETURN      ENDIF      IF(S1.GE.-1.E-10.AND.S2.LT.-1.E-10) THEN      XLAM31=X1      XLAM32=X1      RETURN      ENDIF      IF(S1.LT.-1.E-10.AND.S2.GE.-1.E-10) THEN      XLAM31=X2      XLAM32=X2      RETURN      ENDIF      IF(S1.LT.-1.E-10.AND.S2.LT.-1.E-10) THEN      XLAM31=0.D0      XLAM32=0.D0      RETURN      ENDIF      END

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