C PLAST     SOURCE    STRU      08/12/22    21:15:26     6246
c     Sous-Programme du module MISTRAL0
C     --------------------------------------------------------------------------
      SUBROUTINE PLAST (TT,TTP,FI,FIT, SIG, XX,EPSE,EPSEQ,PSI,KPLAST,
     &                  NDPI,NDVP, NXX,
     &                  PCOHI,PECOU,PEDIR,PRVCE,PECRX,PDVDI,
     &                  SEQ,RR, VEPSP,VEPSE,EPSEQP,EPEQP0, XXP,XXP0,
     &                  PSIP,PSIP0, DSESDS,A77,B7)
C     --------------------------------------------------------------------------
C       Calcul :
C       - de la contrainte equivalente SEQ(IDP),
C       - de la contrainte seuil RR(IDP),
C       - des vitesses de deformation VEPSP(IJ,IDP),
C       sauf pour IDP=0 si KPLAST=1 (VEPSP(IJ,0) contient alors DSESDS(IJ)),
C       - de la vitesse de deformation equivalente VEPSE(IDP),
C       sauf pour IDP=0 si KPLAST=1 (VEPSE(0) contient alors 1.),
C     - des termes EPSEQP(IDP) et EPEQP0(IDP) de l'expression suivante des
C       derivees par rapport au temps des deformations equivalentes EPSEQ(IDP)
C               dEPSEQ(IDP)/dt = EPSEQP(IDP) + EPEQP0(IDP)*VEPSE(0)
C       pour les deformations (visco)plastiques de chaque nature IDP
C       (IDP allant de 1-NDPI a NDVP),
C     - des termes XXP(IJ,IXX) et XXP0(IJ,IXX) de l'expression suivante
C       des derivees par rapport au temps des contraintes internes :
C            dXX(IJ,IXX)/dt = XXP(IJ,IXX) + XXP0(IJ,IXX)*VEPSE(0)
C       pour les contraintes internes de chaque nature IXX
C       (IXX allant de 1 a NXX),
C     - de PSIP et PSIP0 definis par : dPSI/dt = PSIP + PSIP0*VEPSE(0)
C       PSI etant la variable de durcissement du a l'irradiation,
C         si celle-ci existe,
C     et, si KPLAST=1 :
C     - des derivees partielles DSESDS(IJ) de SEQ(0) par rapport aux S(IJ)
C       ou SIG(IJ),
C       - du facteur A77 de VEPSE(0) et du coefficient B7 du second membre
C       dans la relation de consistance,
C       en fonction :
C       - de la temperature TT,
C       - de sa derivee par rapport au temps TTP (si KPLAST=1),
C       - du flux de neutrons rapides FI,
C       - de la fluence de neutrons rapides FIT,
C       - des contraintes SIG(IJ),
C       - des contraintes internes XX(IJ,IXX),
C       - des deformations equivalentes EPSE(IDP) et EPSEQ(IDP),
C     - de l'eventuelle variable PSI,
C     - de la variable KPLAST (0 : elastique, 1 : plastique),
C     - des parametres du modele de plasticite transmis dans
C       PCOHI, PECOU, PEDIR, PRVCE, PECRX et PDVDI.
C     --------------------------------------------------------------------------
      IMPLICIT INTEGER (I-N)
      IMPLICIT REAL*8 (A-H, O-Z)
c     std :
      PARAMETER ( NDVPMA = 4 , NXXMAX = 3 )
c     std.
      DIMENSION SIG(1:*),XX(1:6,1:*),EPSE(0:*),EPSEQ(0:*)
      DIMENSION PCOHI(1:*),PECOU(1:*),PEDIR(1:*),PRVCE(1:*),
     &          PECRX(1:*),PDVDI(1:*)
c     std :
      DIMENSION S(1:6),XXIDP(1:6),FIX0(NXXMAX)
      DIMENSION PS(0:NDVPMA),XX0P(1:6),XX0P0(1:6)
c     std.
      DIMENSION SEQ(0:*),DSESDS(1:*),RR(0:*),
     &          VEPSP(1:6,0:*),VEPSE(0:*),EPSEQP(0:*),EPEQP0(0:*)
      DIMENSION XXP(1:6,1:*),XXP0(1:6,1:*)
      NPCOHI = 0
      NPECOU = 0
      NPEDIR = 0
      NPRVCE = 0
      NPECRX = 0
      NPDVDI = 0
      NPSI = 0
        DO IDP = 1-NDPI,NDVP
       DO IJ = 1,6
        XXIDP(IJ) = 0.
       END DO
       DO IXX = 1,NXX
        NPECRX = NPECRX+1
        FIXIP = PECRX(NPECRX)
        IF (IDP.EQ.0) THEN
         FIX0(IXX) = FIXIP
        END IF
        DO IJ = 1,6
         XXIDP(IJ) = XXIDP(IJ)+FIXIP*XX(IJ,IXX)
        END DO
       END DO
         DO IJ = 1,6
          S(IJ) = SIG(IJ)-XXIDP(IJ)
         END DO
       IF ((IDP.EQ.0).AND.(KPLAST.EQ.1)) THEN
        ID = 1
       ELSE
        ID = 0
       END IF
       NPDVDI = NPDVDI+1
       KVDI = NINT(PDVDI(NPDVDI))
       IF (KVDI.EQ.0) THEN
        PSIIDP = FIT
       ELSE
        PSIIDP = PSI
        NPSI = NPSI+1
       END IF
       PS(IDP) = PSIIDP
       CALL HILL (TT,PSIIDP,S, ID, PCOHI, NPCOHI, SEQ(IDP),DSESDS,
     &            DSEDTT,DSDPSI)
       CALL ECDIRR (TT,EPSEQ(IDP),PSIIDP, ID, PEDIR, NPEDIR, RR(IDP),
     &              DRRDTT,DRDEPS,DRDPSI)
       IF (IDP.EQ.0) THEN
          IF (KPLAST.EQ.0) THEN
           DO IJ = 1,6
            VEPSP(IJ,IDP) = 0.
           END DO
         VEPSE(IDP) = 0.
          ELSE
           DO IJ = 1,6
            VEPSP(IJ,IDP) = DSESDS(IJ)
           END DO
         VEPSE(IDP) = 1.
          END IF
         ELSE
        CALL ECOUV (SEQ(IDP),RR(IDP),EPSEQ(IDP),TT,FI,PSIIDP,
     &              DSESDS, IDP, PECOU, NPECOU, VEPSP,VEPSE(IDP))
         END IF
        END DO
      NPEDIR = 0
        DO IDP = 1-NDPI,NDVP
       CALL ECDIRR (TT,0.D0,PS(IDP), 0, PEDIR, NPEDIR, RR0,
     &              DRRDTT,DRDEPS,DRDPSI)
       CALL RVCEPE (VEPSE, TT,FI,PS(IDP), SEQ(IDP),RR(IDP),RR0,
     &              EPSE(IDP),EPSEQ(IDP),IDP, NDPI,NDVP,
     &              PRVCE, NPRVCE, EPSEQP(IDP),EPEQP0(IDP))
        END DO
      DO IXX = 1,NXX
       CALL ECRXX (VEPSP,VEPSE,XX, TT,EPSEQ,FI,FIT,PSI, IXX,NXX,
     &             NDPI,NDVP, NPECRX,PECRX,PDVDI, XXP,XXP0)
        END DO
      IF (NPSI.EQ.0) THEN
       PSIP = 0.
       PSIP0 = 0.
      ELSE
       CALL DERVDI (FI,TT,PSI,SEQ,EPSEQ,VEPSE, NDPI,NDVP,NXX,
     &              PDVDI, PSIP,PSIP0)
      END IF
        IF (KPLAST.EQ.1) THEN
         DO IJ = 1,6
          DSESDS(IJ) = VEPSP(IJ,0)
         END DO
       KVDI = NINT(PDVDI(1))
       IF (KVDI.EQ.0) THEN
        PSI0P0 = FI
        PSI0P1 = 0.
       ELSE
        PSI0P0 = PSIP
        PSI0P1 = PSIP0
       END IF
       A77 = -DRDEPS-(DRDPSI-DSDPSI)*PSI0P1
       B7 =
     &  (DRRDTT-DSEDTT)*TTP+DRDEPS*EPSEQP(0)+(DRDPSI-DSDPSI)*PSI0P0
       IF (NXX.NE.0) THEN
        DO IJ = 1,6
         XX0P(IJ) = 0.
         XX0P0(IJ) = 0.
        END DO
        DO IXX = 1,NXX
         DO IJ = 1,6
          XX0P(IJ) = XX0P(IJ)+FIX0(IXX)*XXP(IJ,IXX)
          XX0P0(IJ) = XX0P0(IJ)+FIX0(IXX)*XXP0(IJ,IXX)
         END DO
        END DO
        DO IJ = 1,3
         A77 = A77-DSESDS(IJ)*XX0P0(IJ)
         B7 = B7+DSESDS(IJ)*XX0P(IJ)
        END DO
        DO IJ = 4,6
         A77 = A77-2.*DSESDS(IJ)*XX0P0(IJ)
         B7 = B7+2.*DSESDS(IJ)*XX0P(IJ)
        END DO
         END IF
        END IF
        RETURN
        END

