C COEFDI    SOURCE    PV        09/03/12    21:17:19     6325
      SUBROUTINE COEFDI(NDIM,ITY1,ITYG,NOEL1,NOUN,DIAM,UELEM
     $     ,IEL1,IZCENT,MELVA1,MELVA2,MELVA3,DIFL,DIFT,UREEL,IZSH)
*************************************************************************
*** SP 'COEFDI' : calcule les coefficients de dispersion dans element à
*** partir des coeff intrinseque et de la vitesse au centre de l'element
***
*** APPELES 1 = aucun
*** APPELES 2 = 'REEREF', 'VITAPP'
***
*** E=  'NDIM' dimension de l'espace
***     'ITY1' entier caracterisant le type de l'element
***     'ITYG' entier caracterisant la geometrie de l'element
***     'NOEL1' nombre de noeuds de l'element considere
***     'NOUN' nombre de flux consideres
***     'DIAM' "longueur caracteristique" de l'element
***     'UELEM' valeurs des flux aux faces
***     'IEL1' n° local de l'element centre (= n° global dans maillage)
***     'IZCENT' pteur sur la table "DOMAINE.CENTRE"
***     'MELVA1' segment content coeffs disper intrinseques longitudinaux
***     'MELVA2' segment content coeffs disper intrinseques transversaux
***     'MELVA3' segment content coeffs diff moleculaire

*** S = 'DIFL' coefficient dispersion longitudinal ds element 'IEL1'
***     'DIFT' coefficient dispersion transversal ds element 'IEL1'
***     'UREEL' vitesse dans element reel au pt centre
***
*** E/S = IZSH' segment content pour l'elemt considere et au pt depart :
***          'XYZL' coordonnees reelles des noeuds (E)
***          'SHP' fonctions de forme et derivees (S)
***          'SHY' fonctions de base et derivees (S)
***
*** ORIGINE = CYRIL NOU
*************************************************************************

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

-INC PPARAM
-INC CCOPTIO
-INC SMCOORD
-INC SMELEME
-INC SMCHAML
      POINTEUR IZCENT.MELEME
      SEGMENT IZSH
          REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9)
      ENDSEGMENT
      DIMENSION XCEN(3),XCEN2(3),XJAC(3,3)
      DIMENSION UELEM(NOUN),UREF(3),UREEL(3)

***********************************************************
*** CALCUL DE LA VITESSE AU PT CENTRE DE L'ELEMENT REEL ***
***********************************************************

***   recuperation du n° global du noeud centre de l'element
      NUCENT=IZCENT.NUM(1,IEL1)
***   'XCEN2' coordonnees reelles du centre de l'element
      DO 10 I=1,NDIM
         XCEN2(I)=XCOOR((NUCENT-1)*(NDIM+1)+I)
 10   CONTINUE
***   'XCEN' coords de reference du centre de l'element
      CALL REEREF(NDIM,ITY1,NOEL1,IZSH,XCEN2,XCEN)
***   'UREEL' vitesse reelle au centre de l'element reel
      CALL VITAPP(NDIM,ITY1,ITYG,NOEL1
     $     ,NOUN,DIAM,UELEM,XCEN,UREF,UREEL,IZSH,ITEST)
***   cas ou le Jacobien est nul dans l'approximation de la vitesse
      IF (ITEST.EQ.0) THEN
         IEL1=-1
         RETURN
      ENDIF

*********************************************************
*** CALCUL DES COEFFICIENTS DE DISPERSION CINEMATIQUE ***
*********************************************************

***   recuperation des dimensions associées aux chps par elemt dispersion
      I=MELVA1.VELCHE(/1)
      J=MELVA1.VELCHE(/2)
      K=MELVA2.VELCHE(/1)
      L=MELVA2.VELCHE(/2)
      IF ((I.EQ.1).AND.(J.EQ.1).AND.(K.EQ.1).AND.(L.EQ.1)) THEN
***      cas du champ par element de dispersion uniforme
         ALPHAL=MELVA1.VELCHE(1,1)
         ALPHAT=MELVA2.VELCHE(1,1)
      ELSEIF ((I.EQ.1).AND.(K.EQ.1)) THEN
***      cas du champ constant par element de dispersion
         ALPHAL=MELVA1.VELCHE(1,IEL1)
         ALPHAT=MELVA2.VELCHE(1,IEL1)
      ELSE
***      cas ou pas de dispersion cinematique
         ALPHAL=0.D0
         ALPHAT=0.D0
      ENDIF

********************************************************
*** CALCUL DES COEFFICIENTS DE DIFFUSION MOLECULAIRE ***
********************************************************

***   recuperation des dimensions associées aux chps par elemt diffusion
      I=MELVA3.VELCHE(/1)
      J=MELVA3.VELCHE(/2)
      IF ((I.EQ.1).AND.(J.EQ.1)) THEN
***      cas du champ par element de diffusion uniforme
         DZERO=MELVA3.VELCHE(1,1)
      ELSEIF (I.EQ.1) THEN
***      cas du champ constant par element de diffusion
         DZERO=MELVA3.VELCHE(1,IEL1)
      ELSE
***      cas ou pas de diffusion moleculaire
         DZERO=0.D0
      ENDIF

*********************************************
*** CALCUL DES COEFFICIENTS DE DISPERSION ***
*********************************************

***   calcul de la norme de la vitesse au centre
      UNORM=0.D0
      DO 20 I=1,NDIM
         UNORM=UNORM+UREEL(I)**2
 20   CONTINUE
      UNORM=SQRT(UNORM)
***   calcul des coefficients dispersion+diffusion dans élément
      DIFL=ALPHAL*UNORM+DZERO
      DIFT=ALPHAT*UNORM+DZERO
      RETURN
      END




