C TCONV3    SOURCE    AM        08/02/14    21:31:25     6050

C=======================================================================
C=                           T C O N V 3                               =
C=                           -----------                               =
C=                                                                     =
C=  Fonction :                                                         =
C=  ----------                                                         =
C=   Calcul, au point de Gauss (iGau) considere, du jacobien (DJAC),   =
C=   des fonctions de forme (FORME) et de leurs derivees (SHP)         =
C=                                                                     =
C=  Parametres :  (E)=Entree  (S)=Sortie                               =
C=  ------------                                                       =
C=   NEF     (E)  Numero de l'ELEMENT FINI dans NOMTP (cf. CCHAMP)     =
C=   iGau    (E)  Numero du point de Gauss considere                   =
C=   NBNN    (E)  Nombre de NOEUDS de l'element                        =
C=   NBN2    (E)  Nombre de NOEUDS de l'element / 2 pour FACE A FACE   =
C=   XE      (E)  COORDONNEES des noeuds de l'element (repere GLOBAL)  =
C=   SHPTOT  (E)  Fonctions de FORME et leurs DERIVEES par rapport aux =
C=                coordonnees de REFERENCE (Qsi,Eta,Dzeta)             =
C=   SHP     (S)  Fonctions de FORME et leurs DERIVEES par rapport aux =
C=                coordonnees REELLES (X,Y,Z)                          =
C=   FORME   (S)  Fonctions de FORME dans la geometrie REELLE          =
C=   DJAC    (S)  JACOBIEN au point de Gauss considere                 =
C=                                                                     =
C=  Denis ROBERT, le 6 mai 1988.                                       =
C=======================================================================

      SUBROUTINE TCONV3 (NEF,iGau,NBNN,NBN2,XE,SHPTOT,SHP,FORME,DJAC)

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)


-INC PPARAM
-INC CCOPTIO
-INC CCREEL

C= Quelques constantes (2.Pi et 4.Pi)
      PARAMETER (X2Pi=6.283185307179586476925286766559D0)
      PARAMETER (X4Pi=12.566370614359172953850573533118D0)

      DIMENSION XE(3,*),SHPTOT(6,NBN2,*),SHP(6,*),FORME(*)

C ====================
C  1 - Initialisation
C ====================
C*OF  CALL ZERO(FORME,1,NBNN)

C ============================================
C  2 - Cas des elements MASSIFS 2D PLAN ou 3D
C ============================================
      IF (IFOMOD.EQ.-1.OR.IFOMOD.EQ.2) THEN
        iFin=IDIM+1
        DO j=1,NBN2
          DO i=1,iFin
            SHP(i,j)=SHPTOT(i,j,iGau)
          ENDDO
        ENDDO
C =====
C  2.1 - Cas particulier des elements finis SEG2 SEG3 LIA3 LIA4
C =====
        IF (NEF.EQ.2.OR.NEF.EQ.3.OR.NEF.EQ.12.OR.NEF.EQ.13) THEN
          CALL TCONV4(XE,SHP,2,NBN2,DJAC)
C =====
C  2.2 - Autres elements
C =====
        ELSE
          CALL TCONV5(XE,SHP,NBN2,DJAC)
        ENDIF

C ================================================
C  3 - Cas des elements MASSIFS 2D AXISYMETRIQUES
C ================================================
      ELSE IF (IFOMOD.EQ.0) THEN
        DO i=1,NBN2
          SHP(1,i)=SHPTOT(1,i,iGau)
          SHP(2,i)=SHPTOT(2,i,iGau)
          SHP(3,i)=SHPTOT(3,i,iGau)
        ENDDO
        CALL TCONV4(XE,SHP,2,NBN2,DJAC)
        CALL DISTRR(XE,SHP,NBN2,RR)
        DJAC=X2Pi*DJAC*RR

C =================================
C  4 - Cas des elements MASSIFS 1D
C =================================
      ELSE IF (IFOMOD.EQ.3.OR.IFOMOD.EQ.4.OR.IFOMOD.EQ.5) THEN
        DO i=1,NBN2
          SHP(1,i)=SHPTOT(1,i,iGau)
          SHP(2,i)=SHPTOT(2,i,iGau)
        ENDDO
C =====
C  4.1 - Cas particulier du POI1 ou du SEG2 (convection 1D)
C =====
        IF ((NEF.EQ.45).OR.(NEF.EQ.1)) THEN
          DJAC=1.
C =====
C  4.2 - Cas generique
C =====
        ELSE
          CALL TCONV4(XE,SHP,2,NBN2,DJAC)
        ENDIF
C =====
C  4.3 - Cas particulier des modes axisymetriques et spherique 1D
C =====
        IF (IFOMOD.EQ.4) THEN
          CALL DISTRR(XE,SHP,NBNN,RR)
          DJAC=X2Pi*DJAC*RR
        ELSE IF (IFOMOD.EQ.5) THEN
          CALL DISTRR(XE,SHP,NBNN,RR)
          DJAC=X4Pi*DJAC*RR*RR
        ENDIF

C ==============================================
C  5 - Cas des elements MASSIFS en mode FOURIER -> ERREUR
C ==============================================
      ELSE IF (IFOMOD.EQ.1) THEN
        CALL ERREUR(251)
        RETURN
      ENDIF

C ===================================================================
C  6 - Recuperations des fonctions de FORME
C      Traitement particulier des elements de CONVECTION FACE A FACE
C ===================================================================
        DO i=1,NBN2
          FORME(i)=SHP(1,i)
        ENDDO
        IF (NBNN.NE.NBN2) THEN
          IF (NEF.EQ.12.OR.NEF.EQ.13) THEN
            j=NBNN+1
            DO i=1,NBN2
              FORME(j-i)=-SHP(1,i)
            ENDDO
          ELSE
            DO i=1,NBN2
              FORME(NBN2+i)=-SHP(1,i)
            ENDDO
          ENDIF
        ENDIF

      RETURN
      END





