C LONGCA    SOURCE    BP208322  16/11/18    21:19:00     9177           
      SUBROUTINE LONGCA(IPMAIL,IB,LCAR)
C
C Declaration de variables
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C
      REAL*8 LCAR
C
C Insertion des includes
C Remarque : le segment MCOORD est toujours actif
C

-INC PPARAM
-INC CCOPTIO
-INC CCGEOME
-INC SMCOORD
-INC SMELEME
C
      IDIMP1 = IDIM+1
C---------------------------------------------------------------------
C         ************************************************************
C         *  CALCUL DE LA LONGUEUR CARACTERISTIQUE D'un ELEMENT      *
C         ************************************************************
C---------------------------------------------------------------------
C
      MELEME = IPMAIL
******      SEGACT MELEME
C
C Adresse de la description des faces dans LDEL
C
      IAD=LTEL(2,ITYPEL)
C
C Type de la face de l'élément courant
C
      ITYP=LDEL(1,IAD)
C
C Nombre de point de la face
C
      NPFAC=KDFAC(1,ITYP)
C
C Adresse de la face dans LFAC
C
      JAD=LDEL(2,IAD)-1
C
C Adresse de description des triangles dans KFAC
C
      IDEP=KDFAC(2,ITYP)
C
C Initialisation
C
      ABC = 0.
C
C Boucle sur les triangles
C
      IFEP=IDEP+3*(KDFAC(3,ITYP)-1)
C
      DO 242 ITRIAN=IDEP,IFEP,3
C
C Extraction des trois noeuds du triangle courant
C
         IAFA=LFAC(JAD+KFAC(ITRIAN))
         IBFA=LFAC(JAD+KFAC(ITRIAN+1))
         ICFA=LFAC(JAD+KFAC(ITRIAN+2))
C
C Numéro des trois noeuds dans le meleme / Position dans le MCOORD
C
         NA = IDIMP1 * (NUM(IAFA,IB)-1)
         NB = IDIMP1 * (NUM(IBFA,IB)-1)
         NC = IDIMP1 * (NUM(ICFA,IB)-1)
C
C Recherche des coordonées du point B et des vecteurs BA et BC
C
          XB=XCOOR(NB+1)
          YB=XCOOR(NB+2)
          ZB=XCOOR(NB+3)

          IF (IDIM.EQ.2) ZB=0.

          XBA=XCOOR(NA+1)-XB
          YBA=XCOOR(NA+2)-YB
          ZBA=XCOOR(NA+3)-ZB

          IF (IDIM.EQ.2) ZBA=0.

          XBC=XCOOR(NC+1)-XB
          YBC=XCOOR(NC+2)-YB
          ZBC=XCOOR(NC+3)-ZB

          IF (IDIM.EQ.2) ZBC=0.
C
C Calcul du produit vectoriel des vecteurs BA et BC
C
          XV=YBA*ZBC-ZBA*YBC
          YV=ZBA*XBC-XBA*ZBC
          ZV=XBA*YBC-YBA*XBC
C
C Calcul de l'aire du triangle (norme du produit vectoriel divisée par 2)
C Nota : La division par 2 est effectuee une seule fois en sortie de boucle

C*        XS=XV/2
C*        YS=YV/2
C*        ZS=ZV/2
C*        ABC=ABC+SQRT(XS*XS+YS*YS+ZS*ZS)

          ABC = ABC+SQRT(XV*XV+YV*YV+ZV*ZV)

 242   CONTINUE
C
C Mise en facteur du 1/2 de l'aire de chaque triangle
          ABC = 0.5D0 * ABC
C
C Calcul de la longueur caractéristique (d'après FEENSTRA, 1994)
C
       IF (KDEGRE(ITYPEL).EQ.2) THEN
C*     ALPHA=1.
         LCAR = SQRT(ABC)
       ELSE
C*     ALPHA=SQRT(2.)
         LCAR=SQRT(2.D0*ABC)
       ENDIF
C*     LCAR=ALPHA*SQRT(ABC)
C
C Desactivation du segment MELEME
C
******       SEGDES MELEME

       RETURN
       END


 
 
