C LONCA     SOURCE    CB215821  16/04/21    21:17:42     8920
C LONCA     SOURCE    INSL       24/10/96
      SUBROUTINE LONCA(EX,RB,ALPHA,EPSU,XE,NBNN,ENGF,MELE)
*
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
*
      DIMENSION XE(3,NBNN)
*
***********************************************************************
*  CALCUL DE LA LONGUEUR CARACTERISTIQUE POUR LES TRI3 TRI6 QUA4 QUA8
*  SOIT LA RACINE CARREE PONDERRE DE LA SURFACE DE L ELEMENT.
*  COEFFICIENT DE PONDERATION :   1  ELEMENTS QUADRATIQUES  TRI6 QUA8
*                                ___
*                              \/ 2  ELEMENTS LINEAIRES     TRI3 QUA4
*
* ENTREES   EX    : MODULE DE YOUNG
*           RB    : RESISTANCE LIMITE EN COMPRESSION SIMPLE
*           ALPHA : RAPPORT ENTRE LIMITE EN TRACTION ET LIMITE EN
*                   COMPRESSION
*           EPSU  : DEFORMATION LIMITE INITIALE EN TRACTION
*           ENGF  : ENERGIE DE FISSURATION ( N/mm ou daN/cm )
*
* SORTIES   EPSU  : DEFORMATION ULTIME EN TRACTION EN FONCTION
*                   DE LA LONGUEUR CARACTERISTIQUE
**********************************************************************
*
*      POIDS DANS LE CAS OU LA SURFACE EST CALCULEE EN UTILISANT
*      L INTEGRATION NUMERIQUE
*
       P555=0.5555555555555D0
       P888=0.8888888888888D0
       P125=0.1259391805448D0
       P132=0.1323941527885D0
*
*-----------------------------------------------------------------------
*     RECHERCHE DES COORDONNESS DANS XE
*-----------------------------------------------------------------------
*     ELEMENTS TRI3 ET QUA4
*
      IF(MELE.EQ.4.OR.MELE.EQ.8) THEN
         I1=1
         J1=2
         K1=3
      ELSE
*     ELEMENTS TRI6 ET QUA8
        IF(MELE.EQ.6.OR.MELE.EQ.10) THEN
           I1=1
           J1=3
           K1=5
        ELSE
          WRITE(*,*)'**ERREUR DANS LONCA!!! **ELEMENT NON DISPONIBLE**'
          STOP
        ENDIF
      ENDIF
      XA=XE(1,I1)
      YA=XE(2,I1)
      ZA=XE(3,I1)
      XB=XE(1,J1)
      YB=XE(2,J1)
      ZB=XE(3,J1)
      XC=XE(1,K1)
      YC=XE(2,K1)
      ZC=XE(3,K1)
*
*-----------------------------------------------------------------------
*     CALCUL DE LA LONGUEUR CARACTERISTIQUE : XLCE
*-----------------------------------------------------------------------
*
      IF(MELE.EQ.8.OR.MELE.EQ.10) THEN
*
* CAS DU QUA4 ET QUA8 : ATTENTION MAILLAGE PARFAITEMENT RECTANGULAIRE
*                       UTILISATION DE L OPERATEUR DALLE
*                       LE RECTANGLE EST SUPPOSE ETRE DANS LA PLAN (Z=0)
*
        XAB=SQRT((XB-XA)*(XB-XA)+(YB-YA)*(YB-YA))
        XBC=SQRT((XC-XB)*(XC-XB)+(YC-YB)*(YC-YB))
*
        IF(MELE.EQ.8) THEN
*
* ELEMENT LINEAIRE
*
          XLCE=SQRT(2.D0*XAB*XBC)
*
        ELSE
*
* ELEMENT QUADRATIQUE
*
          XLCE=SQRT(XAB*XBC)
*
        ENDIF
      ELSE
*
* CAS DU TRI3 ET TRI6 : LA SURFACE EST CALCULEE A PARTIR DU PRODUIT
*                       VECTORIEL DE DEUX COTES DU TRIANGLE
*                       LE TRIANGLE EST SUPPOSE ETRE DANS LA PLAN (Z=0)
*
* DEFINITION DES DEUX VECTEURS
*
        XAB=XB-XA
        YAB=YB-YA
        XAC=XC-XA
        YAC=YC-YA
*
* SURFACE = NORME DU PRODUIT VECTORIEL / 2.
*
          SURF=(XAB*YAC)-(YAB*XAC)
*
        IF(MELE.EQ.4) THEN
*
* ELEMENT LINEAIRE
*
          XLCE=SQRT(2.D0)*SURF
*
        ELSE
*
* ELEMENT QUADRATIQUE
*
          XLCE=SURF
*
        ENDIF
      ENDIF
*
*
      GF0=ENGF
      FTG=ALPHA*RB
*
* LONGUEUR CARACTERISTIQUE CRITIQUE : softening lineaire.
*
      XLCC=2.D0*EX*GF0/(FTG**2.D0)
*
* CALCUL DE LA DEFORMATION ULTIME
*
      IF(XLCE.LE.XLCC) THEN
        EPGF=2.D0*GF0/(FTG*XLCE)
      ELSE
*
* LE CRITERE LIMITANT LA TAILLE DE L ELEMENT EST VIOLE
* DANS CE CAS IL FAUT REDUIRE LA RESISTANCE EN TRACTION
* POUR NE PAS AVOIR DE DEFORMATION ULTIME DONNANT UN
* SNAP BACK : voir these Feenstra pp. 26-27
* DANS NOTRE CAS - critere d Ottosen - ON NE PEUT TROP
* MODIFIER LA LIMITE EN TRACTION C EST A DIRE LE RAPPORT
* ALPHA. AINSI ON ADOPTE LE CALAGE SUIVANT :
*
        EPGF=2.D0*GF0/(FTG*XLCC)
*
* DANS CE CAS ON NE DESSIPE PAS L ENERGIE CONSTANTE ENGF
*
      ENDIF
*
      EPSU=EPGF
*
 1000 CONTINUE
*
      RETURN
      END




