C RICBET    SOURCE    OF166741  25/11/04    21:16:04     12349          
          SUBROUTINE RICBET(wrk52,wrk53,wrk54,nvari)
C
C====&===1=========2=========3=========4=========5=========6=========7==
C Commentaires : Subroutine permettant de mettre en oeuvre le
C                        modele RICBET (B. Richard) pour representer
C                le comportement 2D/3D d'un beton ordinaire sous
C                sollicitations cycliques
C
C Traits       : - Endommagement scalaire
C                - Boucles hysteresis
C                - Deformations permanentes
C                - Refermeture lineaire des fissures
C                - Effet unilatteral complet
C                - Non localite portant sur le seuil d'endommagement (Fd)
C
C Auteur       : B. Richard
C
C Co-auteur    : F. Ragueneau
C
C Date         : 2010 - 2011
C====&===1=========2=========3=========4=========5=========6=========7==
C
C-----DECLARATION GENERALE----------------------------------------------
C
      IMPLICIT REAL*8(A-H,O-Z)
      REAL*8 DEPST2(4),DEPST3(6),VAR1(42)
C
C-----LISTE DES INCLUDES A CHARGER--------------------------------------
C
-INC PPARAM
-INC CCOPTIO
-INC DECHE
C
C-----DEFINITION DE L ISOTROPIE-----------------------------------------
C
      CMATE = 'ISOTROPE'
C
C-----PARAMETERES-------------------------------------------------------
C

C     Dans le cas d'un calcul local      :
C                --> NSUB = NSUB0
C
C     Dans le cas d'un calculs non local :
C                --> calcul du seuil : NSUB = 1
C                --> calcul moyenne  : NSUB = NSUB0


C     Choix de NSUB0 de maniere adaptative
      XTEMP = 0.0D0

      DO I=1,(2*IDIM)
         XTEMP = MAX(ABS(DEPST(I)),XTEMP)
      ENDDO

      IF (XTEMP.LE.1.0D-5) THEN
         NSUB0 = 10
      ELSEIF ((XTEMP.GT.1.0D-5).AND.(XTEMP.LE.1.0D-4)) THEN
         NSUB0 = 100
      ELSEIF ((XTEMP.GT.1.0D-4).AND.(XTEMP.LE.1.0D-3)) THEN
         NSUB0 = 1000
      ELSEIF (XTEMP.GT.1.0D-3) THEN
         NSUB0 = 1000
      ENDIF

      IF (ISTEP.EQ.0) THEN
         NSUB = NSUB0
      ELSEIF (ISTEP.EQ.1) THEN
         NSUB = 1
      ELSEIF (ISTEP.EQ.2) THEN
         NSUB = NSUB0
      ENDIF
C
C-----SWITCH SELON LA DIMENSION-----------------------------------------
C
      IF (IDIM.EQ.2) THEN

      PRINT*,'Pas operationnel... a travailler'
      STOP

C     RICBET2D
C-----------------------------------------------------------------------
C
C        On forme le vecteur des increments de deformations subdivisees
         DO K=1,4
            DEPST2(K)=DEPST(K)/NSUB
         ENDDO

C        On retient les varibles internes de depart
         DO K=1,42
            VAR1(K)=VAR0(K)
         ENDDO

C        On commence le substepping
         DO J=1,NSUB

**          CALL RICBET2D(XMAT,SIG0,SIGF,VAR1,VARF,DEPST2,ISTEP)

            DO I=1,42
               VAR1(I)=VARF(I)
            ENDDO

         ENDDO

      ELSE

C     RICBET3D
C-----------------------------------------------------------------------
C
C        On forme le vecteur des increments de deformations subdivisees
         DO K=1,6
            DEPST3(K)=DEPST(K)/NSUB
         ENDDO

C        On retient les varibles internes de depart
         DO K=1,42
            VAR1(K)=VAR0(K)
         ENDDO

C        On commence le substepping
         DO J=1,NSUB

            CALL RICBET3D(XMAT,SIG0,SIGF,VAR1,VARF,DEPST3,ISTEP)

C            CALL RICBET3D2(XMAT,SIG0,SIGF,VAR1,VARF,DEPST3,ISTEP)

            DO I=1,42
               VAR1(I)=VARF(I)
            ENDDO

         ENDDO

      ENDIF

      RETURN
      END

 
