C MISTR1    SOURCE    STRU      06/12/14    21:15:23     5611
c     Sous-Programme principal du module MISTRAL1
C     --------------------------------------------------------------------------
      SUBROUTINE MISTR1 (T, TT,FI,FIT, SIG,
     &                   EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &                   DTA,SEQA0,RRA0,VEEA0, KPLAST,
     &                   DTI, TTP,FIP, CSIG,CEPS,CSIEP0,
     &                   PDILT,PCOEL, NDPI,NDVP,NXX,NPSI,
     &                   PCOHI,PECOU,PEDIR,PRVCE,PECRX,PDVDI, PCROI,
     &                   NPINCR,PINCR, DTMI,DTMAX,TMAX,
     &                   NPAS,NCHPL, EPSMAX, IES,FICH,IUM, ISTOP,
     &                   DELTT,DELFI,DELFIT, DELSIG,DELEPS,DELETH,
     &                   DELEEL,DELEP,DELECR,DELEE,DELEEQ,DELXX,DELPSI)
C     --------------------------------------------------------------------------
C     Determination, pour la periode d'integration de T a T+DTI :
C     - des valeurs a T+DTI :
C       - de la temperature TT,
C         - du flux de neutrons rapides FI,
C         - de la fluence de neutrons rapides FIT,
C       - des contraintes SIG(IJ),
C       - des deformations totales EPS(IJ),
C       - des dilatations thermiques EPSTH(IJ),
C       - des deformations elastiques EPSEL(IJ),
C       - des deformations plastiques EPSP(IJ,IDP),
C       - des deformations de croissance EPSCR(IJ),
C       - des deformations plastiques equivalentes EPSE(IDP) et EPSEQ(IDP),
C       - des contraintes internes XX(IJ,IXX),
C       - de l'eventuelle variable PSI de durcissement du a l'irradiation,
C       - de KPLAST (0 : elastique, 1 : plastique), si NDPI=1,
C     - de leurs variations entre T et T+DTI, respectivement :
C         DELTT, DELFI, DELFIT, DELSIG, DELEPS, DELETH,
C         DELEEL, DELEP, DELECR, DELEE, DELEEQ, DELXX ,DELPSI
C       en fonction :
C       - de leurs valeurs a l'instant T (memes variables qu'a T+DTI),
C       - des derivees, supposees constantes durant toute la periode :
C         - TTP de la temperature,
C         - FIP du flux de neutrons rapides,
C     - des conditions mecaniques imposees,
C       supposees constantes durant toute la periode :
C         CSIG*SIGP + CEPS*VEPS = CSIEP0 ,
C     - des parametres du modele, pour le materiau au point considere, fournis
C       dans PDILT, PCOEL, PCOHI, PECOU, PEDIR, PRVCE, PECRX, PDVDI et PCROI.
C     --------------------------------------------------------------------------
C     IJ dans l'ordre : 11, 22, 33, 12, 13, 23
C     IDP compris entre 1-NDPI et NDVP
C     NXX = nombre de natures de contraintes internes
C     --------------------------------------------------------------------------
C     Parametres et variable pour la determination automatique des pas
C     de calcul : DTMI, DTMA (=MIN(DTMAX,DTI)), TMAX, PINCR(1:NPINCR), DTA.
C
C     Variables pour la determination des changements
C     d'etat plastique (KPLAST) : SEQA0, RRA0, VEEA0, DTA.
C
C     Incrementation de :
C     - NPAS du nombre de pas de calcul durant la periode,
C     - NCHPL du nombre de changements d'etat plastique durant la periode.
C
C     EPSMAX est le maximum autorise pour la valeur absolue
C     de toute composante de deformation totale.
C
C     Si IES different de 0, stockage de valeurs par STOCM sur des fichiers
C     associes au canal IUM et aux NDPI+NDVP+NXX canaux suivants :
C     au debut de la periode d'integration, tous les ABS(IES) pas,
C     et en fin de periode si IES<0 (reperage de la derniere periode).
C     --------------------------------------------------------------------------
      IMPLICIT INTEGER (I-N)
        IMPLICIT REAL*8 (A-H, O-Z)
c     std :
      PARAMETER ( NDVPMA = 4 , NXXMAX = 3 )
c     std.
      PARAMETER ( NPINCM = 16)
      DIMENSION SIG(1:*),EPS(1:*),EPSTH(1:*),EPSEL(1:*),EPSCR(1:*),
     &          EPSP(1:6,0:*),EPSE(0:*),EPSEQ(0:*),XX(1:6,1:*)
      DIMENSION PDILT(1:*),PCOEL(1:*),PCOHI(1:*),PECOU(1:*),
     &          PEDIR(1:*),PRVCE(1:*),PECRX(1:*),PDVDI(1:*),PCROI(1:*),
     &          PINCR(1:*)
      DIMENSION CSIG(1:6,1:*),CEPS(1:6,1:*),CSIEP0(1:*)
c     std :
      DIMENSION SEQ(0:NDVPMA),RR(0:NDVPMA)
      DIMENSION SIGP(1:6),VEPS(1:6),VEPSTH(1:6),VEPSEL(1:6),VEPSCR(1:6),
     &          VEPSP(1:6,0:NDVPMA),VEPSE(0:NDVPMA),
     &          EPSEQP(0:NDVPMA),XXP(1:6,1:NXXMAX)
      DIMENSION SIGM(1:6),EPSM(1:6),EPSTHM(1:6),EPSELM(1:6),EPSCRM(1:6),
     &          EPSPM(1:6,0:NDVPMA),EPSEM(0:NDVPMA),EPSEQM(0:NDVPMA),
     &          XXM(1:6,1:NXXMAX)
      DIMENSION SIGPM(1:6),VEPSM(1:6),VEPTHM(1:6),VEPELM(1:6),
     &          VEPCRM(1:6),VEPSPM(1:6,0:NDVPMA),VEPSEM(0:NDVPMA),
     &          EPEQPM(0:NDVPMA),XXPM(1:6,1:NXXMAX)
      DIMENSION VEPTHA(1:6),VEPELA(1:6),VEPCRA(1:6),
     &          VEPEA(0:NDVPMA),EPSEPA(0:NDVPMA),XXPA(1:6,1:NXXMAX)
c     std.
      DIMENSION FPINCR(1:NPINCM)
      DIMENSION DELSIG(1:*),
     &          DELEPS(1:*),DELETH(1:*),DELEEL(1:*),DELECR(1:*),
     &          DELEP(1:6,0:*),DELEE(0:*),DELEEQ(0:*),
     &          DELXX(1:6,1:*)
      CHARACTER *(*) FICH
C     ------------------------------------------------------------------
      IUI = IUM-2
      IF (NPSI.EQ.0) THEN
       II = 19+2*(NDPI+NDVP)+6*NXX
      ELSE
       II = 20+2*(NDPI+NDVP)+6*NXX
      END IF
C     ------------------------------------------------------------------
C     Initialisations au debut de la periode d'integration
C
      CALL INCREM (TT,FI,FIT,
     &             SIG,EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &             TTP,FIP,
     &             SIGP,VEPS,VEPSTH,VEPSEL,VEPSP,VEPSCR,VEPSE,
     &             EPSEQP,XXP,PSIP,
     &             NDPI,NDVP,NXX,
     &             0.D0, 0,
     &             TT,FI,FIT,
     &             SIG,EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &             DELTT,DELFI,DELFIT, DELSIG,DELEPS,DELETH,
     &             DELEEL,DELEP,DELECR,DELEE,DELEEQ,DELXX,DELPSI)
        NP = 0
        DTIR = DTI
      IF (NDPI.EQ.0) THEN
       KPLAST = 0
      ELSE
       FDTI = 1.D-2*DTI
       DO IPINCR = 1,NPINCR
        FPINCR(IPINCR) = 1.D-1*PINCR(IPINCR)
       END DO
       ICHPL = 0
       IF (T.GT.0.) THEN
        ICHPLT = 0
       ELSE
        ICHPLT = 1
       END IF
      END IF
C     ------------------------------------------------------------------
C     Debut du pas de temps, calcul des derivees
C
1     CONTINUE
      CALL MISTR0 (TT,TTP,FI,FIT, SIG, XX,EPSE,EPSEQ,PSI,KPLAST,
     &             CSIG,CEPS,CSIEP0, IUI,
     &             PDILT,PCOEL, NDPI,NDVP,NXX,
     &             PCOHI,PECOU,PEDIR,PRVCE,PECRX,PDVDI, PCROI,
     &             SEQ,RR,
     &             SIGP, VEPS,VEPSTH,VEPSEL,VEPSP,VEPSCR,
     &             VEPSE,EPSEQP,XXP,PSIP,
     &             ISTOP)
      IF (ISTOP.NE.0) THEN
       RETURN
      END IF
C     ------------------------------------------------------------------
C     Determination de la duree DT du pas de temps
C
      IF (NDPI.EQ.0) THEN
       DTMA = MIN(DTMAX,DTIR)
       CALL DTPREC (DTMI,DTMA,TMAX,
     &              VEPSTH,VEPSEL,VEPSCR,VEPSE,EPSEQP,XXP,FI,PSIP,
     &              VEPTHA,VEPELA,VEPCRA,VEPEA,EPSEPA,XXPA,FIA,PSIPA,
     &              DTA,NP, NDPI,NDVP,NXX,NPSI, II, PINCR, DT)
      ELSE
       IF (ICHPLT.EQ.0) THEN
        DTMA = MIN(DTMAX,DTIR)
        CALL DTPREC (DTMI,DTMA,TMAX,
     &               VEPSTH,VEPSEL,VEPSCR,VEPSE,EPSEQP,XXP,FI,PSIP,
     &               VEPTHA,VEPELA,VEPCRA,VEPEA,EPSEPA,XXPA,FIA,PSIPA,
     &               DTA,NP, NDPI,NDVP,NXX,NPSI, II, PINCR, DT)
        CALL DTCHPL (KPLAST, SEQA0,SEQ(0),RRA0,RR(0),
     &               VEEA0,VEPSE(0),DTA, DT, ICHPL)
          IF ((ICHPL.EQ.1).AND.(DT.LE.0.)) THEN
           ICHPLT = KPLAST
           KPLAST = 1-KPLAST
           NCHPL = NCHPL+1
           ICHPL = 0
           GOTO 1
          END IF
       ELSE
        DTMA = MIN(DTMAX,DTIR,FDTI)
        CALL DTPREC (0.D0,DTMA,TMAX,
     &               VEPSTH,VEPSEL,VEPSCR,VEPSE,EPSEQP,XXP,FI,PSIP,
     &               VEPTHA,VEPELA,VEPCRA,VEPEA,EPSEPA,XXPA,FIA,PSIPA,
     &               DTA,0, NDPI,NDVP,NXX,NPSI, II, FPINCR, DT)
         END IF
        END IF
C     ------------------------------------------------------------------
C     Stockage de valeurs au debut du pas de temps
C     Arret eventuel sur deformation excessive
C
        IF (IES.NE.0) THEN
         IF ((MOD(NPAS,ABS(IES)).EQ.0).OR.(DTIR.EQ.DTI)) THEN
        CALL STOCM (T, TT,FI,FIT, PSI,
     &              SIG, VEPS, EPS,EPSTH,EPSEL,EPSCR,
     &              SEQ,RR, VEPSE,EPSEQP,VEPSP, EPSE,EPSEQ,EPSP,
     &              XX, NDPI,NDVP,NXX, FICH,IUM)
         END IF
        END IF
      DO IJ = 1,6
       IF (ABS(EPS(IJ)).GT.EPSMAX) THEN
          WRITE (IUI,601) T,IJ,EPSMAX
601     FORMAT ('  Arret de MISTRAL a l''instant : ',G22.15,/,
     &          '  car la composante ',I1,' de deformation totale',/,
     &          '  depasse ',G22.15,' en valeur absolue')
          ISTOP = 1
       END IF
      END DO
      IF (ISTOP.NE.0) THEN
       RETURN
      END IF
      CALL VAM (VEPSTH,VEPSEL,VEPSCR,VEPSE,EPSEQP,XXP,FI,PSIP,
     &          SEQ,RR, NDPI,NDVP,NXX,NPSI,
     &          VEPTHA,VEPELA,VEPCRA,VEPEA,EPSEPA,XXPA,FIA,PSIPA,
     &          SEQA0,RRA0,VEEA0)
C     ------------------------------------------------------------------
C     Valeurs au milieu du pas de temps
C
2     DTM = DT/2.
      CALL INCREM (TT,FI,FIT,
     &             SIG,EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &             TTP,FIP,
     &             SIGP,VEPS,VEPSTH,VEPSEL,VEPSP,VEPSCR,VEPSE,
     &             EPSEQP,XXP,PSIP,
     &             NDPI,NDVP,NXX,
     &             DTM, 1,
     &             TTM,FIM,FITM,
     &             SIGM,EPSM,EPSTHM,EPSELM,EPSPM,EPSCRM,EPSEM,
     &             EPSEQM,XXM,PSIM,
     &             DELTT,DELFI,DELFIT, DELSIG,DELEPS,DELETH,
     &             DELEEL,DELEP,DELECR,DELEE,DELEEQ,DELXX,DELPSI)
      CALL MISTR0 (TTM,TTP,FIM,FITM, SIGM, XXM,EPSEM,EPSEQM,PSIM,KPLAST,
     &             CSIG,CEPS,CSIEP0, IUI,
     &             PDILT,PCOEL, NDPI,NDVP,NXX,
     &             PCOHI,PECOU,PEDIR,PRVCE,PECRX,PDVDI, PCROI,
     &             SEQ,RR,
     &             SIGPM, VEPSM,VEPTHM,VEPELM,VEPSPM,VEPCRM,
     &             VEPSEM,EPEQPM,XXPM,PSIPM,
     &             ISTOP)
      IF (ISTOP.NE.0) THEN
       RETURN
      END IF
C     ------------------------------------------------------------------
C     Verification et diminution eventuelle de DT
C
      DTMA = MIN(DTMAX,DTIR)
      CALL DTPREC (DTMI,DTMA,TMAX,
     &             VEPTHM,VEPELM,VEPCRM,VEPSEM,EPEQPM,XXPM,FIM,PSIPM,
     &             VEPTHA,VEPELA,VEPCRA,VEPEA,EPSEPA,XXPA,FIA,PSIPA,
     &             DTM,1, NDPI,NDVP,NXX,NPSI, II, PINCR, DTC)
      IF (DTC.LT.DTM) THEN
       DT = DTC
       IF (NDPI.NE.0) ICHPL = 0
       GO TO 2
      END IF
C     ------------------------------------------------------------------
C     Valeurs a la fin du pas de temps
C
      CALL INCREM (TT,FI,FIT,
     &             SIG,EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &             TTP,FIP,
     &             SIGPM,VEPSM,VEPTHM,VEPELM,VEPSPM,VEPCRM,VEPSEM,
     &             EPEQPM,XXPM,PSIPM,
     &             NDPI,NDVP,NXX,
     &             DT, 2,
     &             TT,FI,FIT,
     &             SIG,EPS,EPSTH,EPSEL,EPSP,EPSCR,EPSE,EPSEQ,XX,PSI,
     &             DELTT,DELFI,DELFIT, DELSIG,DELEPS,DELETH,
     &             DELEEL,DELEP,DELECR,DELEE,DELEEQ,DELXX,DELPSI)
        T = T+DT
        DTA = DT
        NPAS = NPAS+1
        NP = NPAS
        IF (NDPI.NE.0) THEN
         IF (ICHPL.EQ.0) THEN
          ICHPLT = 0
         ELSE
          ICHPLT = KPLAST
          KPLAST = 1-KPLAST
          NCHPL = NCHPL+1
          ICHPL = 0
          NP = 0
         END IF
        END IF
        DTIR = DTIR-DT
        IF (DTIR.GT.0.) GOTO 1
C     ------------------------------------------------------------------
C     Stockage eventuel de resultats
C     a la fin de la periode d'integration
C
        IF (IES.LT.0) THEN
       CALL MISTR0 (TT,TTP,FI,FIT, SIG, XX,EPSE,EPSEQ,PSI,KPLAST,
     &              CSIG,CEPS,CSIEP0, IUI,
     &              PDILT,PCOEL, NDPI,NDVP,NXX,
     &              PCOHI,PECOU,PEDIR,PRVCE,PECRX,PDVDI, PCROI,
     &              SEQ,RR,
     &              SIGP, VEPS,VEPSTH,VEPSEL,VEPSP,VEPSCR,
     &              VEPSE,EPSEQP,XXP,PSIP,
     &              ISTOP)
       IF (ISTOP.NE.0) THEN
        RETURN
       END IF
       CALL STOCM (T, TT,FI,FIT, PSI,
     &             SIG, VEPS, EPS,EPSTH,EPSEL,EPSCR,
     &             SEQ,RR, VEPSE,EPSEQP,VEPSP, EPSE,EPSEQ,EPSP,
     &             XX, NDPI,NDVP,NXX, FICH,IUM)
        END IF
        RETURN
        END


