C FIMTR2    SOURCE    OF166741  24/12/13    21:15:47     12097          
      SUBROUTINE FIMTR2(SORGAS,ILIINC,ICEN,IRO,IROVIT,IGRAV,IRKA,
     &                IREPS,IGRADR,IGRADV,IMUT,TSIGT,TCEPS1,TCEPS2,IRES)
C************************************************************************
C
C PROJET            :  CASTEM 2000
C
C NOM               :  FIMTR2
C
C DESCRIPTION       :  VOIR FIMTR1
C
C                      Discretisation of the source term
C                      related to the gravity and k-\eps model
C                      and the source terms of the equations
C                      for species mass conservation
C
C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
C
C AUTEUR            :  S. Kudriakov, DEN/DM2S/SFME/LTMF
C
C************************************************************************
C
C ENTREES  :
C            SORGAS  : pointer to the source terms
C                      and the form. enthalpies of the species
C
C            ILIINC  : LISTMOTS, noms des inconnues
C
C            ICEN    : SPG geometrique
C
C            IRO     : CHPOINT, densité
C
C            IROVIT  : CHPOINT  qdm
C
C            IGRAV   : CHPOINT  gravité
C
C            IRKA    : CHPOINT density '*' k
C
C            IREPS   : CHPOINT density '*' \eps
C
C            IGRADR  : CHPOINT gradient of the density
C
C            IGRADV  : CHPOINT gradient of the velocity
C
C            IMUT    : CHPOINT turbulent viscosity
C
C            TSIGT   : REEL turbulent constant \sigma_t
C
C            TCEPS1  : REEL turbulent constant C_{\eps 1}
C
C            TCEPS2  : REEL turbulent constant C_{\eps 2}
C
C SORTIES  : IRES    : CHPOINT  residu
C
C
C************************************************************************
C
C HISTORIQUE (Anomalies et modifications éventuelles)
C
C HISTORIQUE :  Créée le 3.12.03
C
C************************************************************************
C
C**** Les variables
C
      IMPLICIT INTEGER(I-N)

-INC PPARAM
-INC CCOPTIO
-INC SMELEME
-INC SMCHPOI
      POINTEUR MPRO.MPOVAL, MPROV.MPOVAL, MPGRAV.MPOVAL,
     &         MPSOUR.MPOVAL, MPTTT.MPOVAL, MPGRDR.MPOVAL
c--------------------------------------------------
      SEGMENT SORGAS
         REAL*8 H0K(NESP+1)
         POINTEUR SOUR(NESP+1).MCHPOI
      ENDSEGMENT
      SEGMENT LIPOV2
      POINTEUR MPSS(0).MPOVAL
      ENDSEGMENT
c--------------------------------------------------
      INTEGER ILIINC,ICEN,IRKA,IREPS,IRES,N1,NLCE,NSPEC
     &     ,IGEOM,NESP,IGRADR,IGRADV,IMUT,IESP
      CHARACTER*8 TYPE
      REAL*8 REPS, RKA, CE1, CE2, VISTUR
      REAL*8 DUDX,DUDY,DUDZ,DVDX,DVDY,DVDZ,DWDX,DWDY,DWDZ
      REAL*8 TDIV,S11,S12,S13,S22,S23,S33,STOT,PRTOT
      REAL*8 RO,RVX,RVY,RVZ,GX,GY,GZ,SSPEC
      REAL*8 ROX,ROY,ROZ,SIGT,GRT,GREPS
      REAL*8 TSIGT,TCEPS1,TCEPS2
      REAL*8 SUMREA, STST, VTEM
C--------------------------------------------------
      CE1 = TCEPS1
      CE2 = TCEPS2
      SIGT = TSIGT
C--------------------
      IPT1 = ICEN
      SEGACT IPT1
      N1 = IPT1.NUM(/2)
      SEGDES IPT1
C
C**** Creation de CHPOINT IRES
C
      TYPE='        '
      CALL KRCHP1(TYPE,ICEN,IRES,ILIINC)
C
C
C**** Lecture de MPOVALs
C
      CALL LICHT(IRO,MPRO,TYPE,IGEOM)
      CALL LICHT(IROVIT,MPROV,TYPE,IGEOM)
      CALL LICHT(IGRAV,MPGRAV,TYPE,IGEOM)
C--------------------------------------
      CALL LICHT(IRKA,MPOVA1,TYPE,IGEOM)
      CALL LICHT(IREPS,MPOVA2,TYPE,IGEOM)
      CALL LICHT(IGRADR,MPGRDR,TYPE,IGEOM)
      CALL LICHT(IGRADV,MPOVA3,TYPE,IGEOM)
      CALL LICHT(IMUT,MPOVA5,TYPE,IGEOM)
      CALL LICHT(IRES,MPOVA4,TYPE,IGEOM)
C
C**** LICHT active les MPOVALs en *MOD
C
C     i.e.
C
C     SEGACT MPOVA1*MOD
C     SEGACT MPOVA2*MOD
C     SEGACT MPOVA3*MOD
C     SEGACT MPOVA4*MOD
C
C
C---------------------------------------------
      SEGINI LIPOV2
      SEGACT SORGAS
      NESP=SORGAS.SOUR(/1)-1
      DO IESP=1,NESP
         ICSOUR=SORGAS.SOUR(IESP)
         CALL LICHT(ICSOUR,MPSOUR,TYPE,IGEOM)
         LIPOV2.MPSS(**)=MPSOUR
      ENDDO
C---------------------------------------------
      DO NLCE = 1, N1, 1
C
C******* Les differents variables a chaque centre
C
c-----------------------------------
         DUDZ = 0.0D0
         DVDZ = 0.0D0
         DWDX = 0.0D0
         DWDY = 0.0D0
         DWDZ = 0.0D0
         S13 = 0.0D0
         S23 = 0.0D0
         S33 = 0.0D0
         RVZ = 0.0D0
         GZ = 0.0D0
         ROZ = 0.0D0
         IF(IDIM .EQ. 2) THEN
           DUDX = MPOVA3.VPOCHA(NLCE,1)
           DUDY = MPOVA3.VPOCHA(NLCE,2)
           DVDX = MPOVA3.VPOCHA(NLCE,3)
           DVDY = MPOVA3.VPOCHA(NLCE,4)
           TDIV=2.0D0*(DUDX+DVDY)/3.0D0
           S11 = 2.0D0*DUDX-TDIV
           S12 = DUDY+DVDX
           S22 = 2.0D0*DVDY-TDIV
           STOT=(S11*DUDX)+(S12*S12)+(S22*DVDY)
         ELSE
           DUDX = MPOVA3.VPOCHA(NLCE,1)
           DUDY = MPOVA3.VPOCHA(NLCE,2)
           DUDZ = MPOVA3.VPOCHA(NLCE,3)
           DVDX = MPOVA3.VPOCHA(NLCE,4)
           DVDY = MPOVA3.VPOCHA(NLCE,5)
           DVDZ = MPOVA3.VPOCHA(NLCE,6)
           DWDX = MPOVA3.VPOCHA(NLCE,7)
           DWDY = MPOVA3.VPOCHA(NLCE,8)
           DWDZ = MPOVA3.VPOCHA(NLCE,9)
           TDIV=2.0D0*(DUDX+DVDY+DWDZ)/3.0D0
           S11 = 2.0D0*DUDX-TDIV
           S12 = DUDY+DVDX
           S13 = DUDZ+DWDX
           S22 = 2.0D0*DVDY-TDIV
           S23 = DVDZ+DWDY
           S33 = 2.0D0*DWDZ-TDIV
           STOT=(S11*DUDX)+(S12*S12)+(S13*S13)+
     &          (S22*DVDY)+(S23*S23)+(S33*DWDZ)
         ENDIF
         VISTUR = MPOVA5.VPOCHA(NLCE,1)
*------ Creating the production term
         RO = MPRO.VPOCHA(NLCE,1)
         RVX = MPROV.VPOCHA(NLCE,1)
         RVY = MPROV.VPOCHA(NLCE,2)
         GX = MPGRAV.VPOCHA(NLCE,1)
         GY = MPGRAV.VPOCHA(NLCE,2)
         IF(IDIM .EQ. 3)THEN
            RVZ = MPROV.VPOCHA(NLCE,3)
            GZ = MPGRAV.VPOCHA(NLCE,3)
         ENDIF
c-----------------------------------
         RKA = MPOVA1.VPOCHA(NLCE,1)
         REPS = MPOVA2.VPOCHA(NLCE,1)
         PRTOT=VISTUR*STOT-(TDIV*RKA)
*---- turbulent gravity term ----------
         ROX = MPGRDR.VPOCHA(NLCE,1)
         ROY = MPGRDR.VPOCHA(NLCE,2)
         IF(IDIM .EQ. 3)THEN
           ROZ = MPGRDR.VPOCHA(NLCE,3)
         ENDIF
         GRT=(-1.0D0)*VISTUR*(ROX*GX+ROY*GY+ROZ*GZ)/(SIGT*RO)
         IF(GRT .LE. 0.0D0) THEN
           GREPS = 0.0D0
         ELSE
           GREPS = CE1*GRT*REPS/RKA
         ENDIF
*------------------------------------
         MPOVA4.VPOCHA(NLCE,1) = 0.0D0
         MPOVA4.VPOCHA(NLCE,2) = RO*GX
         MPOVA4.VPOCHA(NLCE,3) = RO*GY
         IF(IDIM .EQ. 3)THEN
            MPOVA4.VPOCHA(NLCE,4) = RO*GZ
         ENDIF
c-----------------------------------
         SUMREA = 0.0D0
         STST = 0.0D0
         DO NSPEC = 1,NESP
          MPTTT = LIPOV2.MPSS(NSPEC)
          SSPEC = MPTTT.VPOCHA(NLCE,1)
          VTEM = SORGAS.H0K(NSPEC)
          STST = STST + SSPEC*VTEM
          SUMREA = SUMREA + SSPEC
          MPOVA4.VPOCHA(NLCE,IDIM+2+NSPEC)=SSPEC
         ENDDO
         VTEM = SORGAS.H0K(NESP+1)
         STST = STST - (VTEM*SUMREA)
         MPOVA4.VPOCHA(NLCE,IDIM+2) = (RVX*GX)+(RVY*GY)+(RVZ*GZ)-STST
         MPOVA4.VPOCHA(NLCE,IDIM+NESP+3)=(-1.0D0)*REPS+PRTOT+GRT
         MPOVA4.VPOCHA(NLCE,IDIM+NESP+4)=((-1.0D0)*CE2*REPS*REPS/RKA)
     &                            +(CE1*(REPS/RKA)*PRTOT)+GREPS
      ENDDO
C
      SEGDES MPOVA1
      SEGDES MPOVA2
      SEGDES MPOVA3
      SEGDES MPOVA4
      SEGDES MPOVA5
      SEGDES MPGRDR
      SEGDES MPRO
      SEGDES MPROV
      SEGDES MPGRAV
      SEGDES MPSOUR
      SEGDES MPTTT
      SEGDES LIPOV2.MPSS(*)
      SEGDES SORGAS
      SEGSUP LIPOV2
C
      RETURN
      END





 
 
