C CRBTRA    SOURCE    CHAT      05/01/12    22:27:51     5004
      SUBROUTINE CRBTRA(PROPS,NPROPS,TRAC,LTRAC,KINC)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C-----------------------------------------------------------------------
C
C     DESCRIPTION FONCTIONNELLE :
C     -------------------------
C
C     Dependance UMAPLI
C     => Dependance en deuxieme niveau du module Utilisateur UMAT
C
C     Pre-traitement courbe de traction : mise en forme des donnees
C     pour les dependances issues de CAST3M
C     Programmation conforme a CCOTRA
C
C     ENTREES : PROPS,NPROPS
C     SORTIES : TRAC,LTRAC,KINC
C
C-----------------------------------------------------------------------
C     Arguments de l'interface
C
      INTEGER       NPROPS, LTRAC, KINC
      REAL*8        PROPS(NPROPS), TRAC(*)
C
C     Variables locales
C
      INTEGER    N1, NPOINT, N2, I, I1
      REAL*8     YUNG, PEPS, PSIG, PENTE, RA, DEPS
C
C------------------- Debut du code executable --------------------------
C
C     Definition de la courbe de traction :
C     - au moins 3 points
C     - au plus 131 points
C
      N1 = NPROPS-2
      IF (N1.LT.6) THEN
         KINC = -501
         RETURN
      ENDIF
      IF (N1.GT.262) THEN
         KINC = -502
         RETURN
      ENDIF
C
      NPOINT = N1/2
      N2 = 2*NPOINT
      IF (N2.NE.N1) THEN
         KINC = -503
         RETURN
      ENDIF
C
C     Module d'Young non nul
C
      YUNG = PROPS(1)
      IF (YUNG.EQ.0.D0) THEN
         KINC = -504
         RETURN
      ENDIF
C
C     Le premier point de definition est l'origine
C
      PEPS = PROPS(3)
      PSIG = PROPS(4)
      IF (PSIG.NE.0.D0.OR.PEPS.NE.0.D0) THEN
         KINC = -505
         RETURN
      ENDIF
C
C     Limite elastique non nulle
C
      PSIG = PROPS(6)
      IF (PSIG.EQ.0.D0) THEN
         KINC = -506
         RETURN
      ENDIF
      PEPS = PROPS(5)
      IF (PEPS.EQ.0.D0) THEN
         KINC = -507
         RETURN
      ENDIF
      PENTE=PSIG/PEPS
      RA=ABS(PENTE-YUNG)/YUNG
      IF (RA.GT.1.D-2) THEN
         KINC = -508
         RETURN
      ENDIF
C
C     Verification de la pente
C
      DO 100 I=3,NPOINT
         I1=I-1
         DEPS=PROPS(2+(2*I)-1)-PROPS(2+(2*I1)-1)
         IF (DEPS.EQ.0.D0) THEN
            KINC = -509
            RETURN
         ENDIF
         PENTE=(PROPS(2+(2*I))-PROPS(2+(2*I1)))/DEPS
         IF (PENTE.GE.YUNG) THEN
            KINC = -510
            RETURN
         ENDIF
 100  CONTINUE
C
      LTRAC=1
      TRAC(1)=PROPS(6)
      TRAC(2)=0.D0
      DO 695 I=3,NPOINT
         PEPS=PROPS(2+(2*I)-1)
         PSIG=PROPS(2+(2*I))
         LTRAC=LTRAC+1
         TRAC(2*LTRAC-1)=PSIG
         TRAC(2*LTRAC)=PEPS-PSIG/YUNG
 695  CONTINUE
C
      RETURN
      END


