C DDFDS     SOURCE    CHAT      05/01/12    22:37:49     5004
      SUBROUTINE DDFDS(IC,ALFADV,ALFAD1,ALFAD2,YUNG,XNU,S1,S2,DDF,KERRE)
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)

-INC PPARAM
-INC CCOPTIO
C
      DIMENSION S1(6),S2(6),DDF(6),WW1(3)
C
C INITIALISATIONS
C
      X=0.D0
      ALF=0.D0
      DO 1 I=1,6
    1 DDF(I)=0.D0
C
      IF(XNU.NE.0.5D0.AND.XNU.NE.-1.D0) GO TO 2
      WRITE(IOIMP,10) XNU
      KERRE=640
      RETURN
C
   2  GO TO(100,200,3,400,500),IC
      WRITE(IOIMP,11) IC
      KERRE=640
      RETURN
C
C CRITERE DE LA POROSITE (1)
C
  100 ALF=-0.3333333333333333333333333D0
      GO TO 4
C
C CRITERE DE DRUCKER DUCTILE (2)
C
  200 ALF=ALFADV
      GO TO 4
C
C CRITERE DE DRUCKER FRAGILE (4)
C
  400 ALF=ALFAD1
      GO TO 4
C
C CRITERE DE DRUCKER FRAGILE ECROUI. (5)
C
  500 ALF=ALFAD2
C
    4 X=(ALF*YUNG)/(1.D0-2.D0*XNU)
C
      DDF(1)=X
      DDF(2)=X
      DDF(3)=X
C
      IF(IC.EQ.1) RETURN
C
    3 SEQ2=AVM(S1,S1)
      SEQ=SQRT(SEQ2)
      SMOY=(S1(1)+S1(2)+S1(3))/3.D0
      IF(SEQ.GT.0.D0) GO TO 5
      SEQ2=AVM(S2,S2)
      SEQ=SQRT(SEQ2)
      SMOY=(S2(1)+S2(2)+S2(3))/3.D0
      IF(SEQ.GT.0.D0) GO TO 8
      WW1(1)=S2(1)
      WW1(2)=S2(2)
      WW1(3)=S2(4)
      CALL DIAGOD(WW1)
      ANGLE=WW1(3)*0.01745329252D0
      CO=COS(ANGLE)
      SII=SIN(ANGLE)
      CC=CO*CO
      SS=SII*SII
      CS=CO*SII
      UTIL=YUNG*ALF/((1.D0+XNU)*(1.D0-2.D0*XNU))
      UTI=1.D0-XNU
      WW1(1)=((UTI+2.D0*XNU)*UTIL)
      WW1(2)=WW1(1)
      WW1(3)=0.D0
      CALL RETOUR(WW1,DDF,CC,SS,CS,1)
      DDF(3)=((UTI+2.D0*XNU)*UTIL)
      DDF(5)=0.D0
      DDF(6)=0.D0
      RETURN
C
    5 Y=(YUNG*1.5D0)/(SEQ*(1.D0+XNU))
      DDF(1)=DDF(1)+Y*(S1(1)-SMOY)
      DDF(2)=DDF(2)+Y*(S1(2)-SMOY)
      DDF(3)=DDF(3)+Y*(S1(3)-SMOY)
      DDF(4)=Y*S1(4)
      DDF(5)=Y*S1(5)
      DDF(6)=Y*S1(6)
      GO TO 99
    8 Y=(YUNG*1.5D0)/(SEQ*(1.D0+XNU))
      DDF(1)=DDF(1)+Y*(S2(1)-SMOY)
      DDF(2)=DDF(2)+Y*(S2(2)-SMOY)
      DDF(3)=DDF(3)+Y*(S2(3)-SMOY)
      DDF(4)=Y*S2(4)
      DDF(5)=Y*S2(5)
      DDF(6)=Y*S2(6)
C
   10 FORMAT(1X,'ERREUR DANS DDFDS XNU =',1PD12.5)
   11 FORMAT(1X,'ERREUR DANS DDFDS DANS LA VALEUR DE IC  =',I4)
C
   99 RETURN
      END

