xref: /phasta/phSolver/compressible/getdiff.f (revision 779e4b51fc2aad517e324269f1248fd2a51a661a)
159599516SKenneth E. Jansen        subroutine getDiff (T,      cp,     rho,    ycl,
259599516SKenneth E. Jansen     &                      rmu,    rlm,    rlm2mu, con, shp,
359599516SKenneth E. Jansen     &                      xmudmi, xl)
459599516SKenneth E. Jansen
559599516SKenneth E. Jansenc----------------------------------------------------------------------
659599516SKenneth E. Jansenc
759599516SKenneth E. Jansenc This routine calculates the fluid material properties.
859599516SKenneth E. Jansenc
959599516SKenneth E. Jansenc input:
1059599516SKenneth E. Jansenc  T      (npro)          : temperature
1159599516SKenneth E. Jansenc  cp     (npro)          : specific heat at constant pressure
1259599516SKenneth E. Jansenc **************************************************************
1359599516SKenneth E. Jansenc  rho    (npro)          : density
1459599516SKenneth E. Jansenc  ycl    (npro,nshl,ndof): Y variables
1559599516SKenneth E. Jansenc  shp    (npro,nshl)     : element shape-functions
1659599516SKenneth E. Jansenc *************************************************************
1759599516SKenneth E. Jansenc output:
1859599516SKenneth E. Jansenc  rmu    (npro)        : Mu
1959599516SKenneth E. Jansenc  rlm    (npro)        : Lambda
2059599516SKenneth E. Jansenc  rlm2mu (npro)        : Lambda + 2 Mu
2159599516SKenneth E. Jansenc  con    (npro)        : Conductivity
2259599516SKenneth E. Jansenc
2359599516SKenneth E. Jansenc Note: material type flags
2459599516SKenneth E. Jansenc         matflg(2):
2559599516SKenneth E. Jansenc          eq. 0, constant viscosity
2659599516SKenneth E. Jansenc          eq. 1, generalized Sutherland viscosity
2759599516SKenneth E. Jansenc         matflg(3):
2859599516SKenneth E. Jansenc          eq. 0, Stokes approximation
2959599516SKenneth E. Jansenc          eq. 1, shear proportional bulk viscosity
3059599516SKenneth E. Jansenc
3159599516SKenneth E. Jansenc
3259599516SKenneth E. Jansenc Farzin Shakib, Winter 1987.
3359599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
3459599516SKenneth E. Jansenc----------------------------------------------------------------------
3559599516SKenneth E. Jansenc
3659599516SKenneth E. Jansen      use turbSA
3759599516SKenneth E. Jansen      use pointer_data
3859599516SKenneth E. Jansen      include "common.h"
3959599516SKenneth E. Jansenc
4059599516SKenneth E. Jansen      dimension T(npro),                   cp(npro),
4159599516SKenneth E. Jansen     &     rho(npro),                 Sclr(npro),
4259599516SKenneth E. Jansen     &     rmu(npro),                 rlm(npro),
4359599516SKenneth E. Jansen     &     rlm2mu(npro),              con(npro),
4459599516SKenneth E. Jansen     &     ycl(npro,nshl,ndof),        shp(npro,nshl),
4559599516SKenneth E. Jansen     &     xmudmi(npro,ngauss),        xl(npro,nenl,nsd),
4659599516SKenneth E. Jansen     &     xx(npro)
4759599516SKenneth E. Jansenc
4859599516SKenneth E. Jansen      dimension xmut(npro)
4959599516SKenneth E. Jansen      real*8 prop_blend(npro),test_it(npro)
5059599516SKenneth E. Jansen
5159599516SKenneth E. Jansen      integer n, e
5259599516SKenneth E. Jansen      integer wallmask(nshl)
53513954efSKenneth E. Jansen      real*8  xki, xki3, fv1, evisc, lvisc
54513954efSKenneth E. Jansen            xx=zero
55513954efSKenneth E. Jansen            do n=1,nenl
56513954efSKenneth E. Jansen               xx(:)=xx(:) + shp(:,n) * xl(:,n,1)
57513954efSKenneth E. Jansen            enddo
5859599516SKenneth E. Jansenc
5959599516SKenneth E. Jansenc
6059599516SKenneth E. Jansenc.... constant viscosity
6159599516SKenneth E. Jansenc
6259599516SKenneth E. Jansen      if (matflg(2,1) .eq. 0) then
6359599516SKenneth E. Jansenc
6459599516SKenneth E. Jansen         if (iLSet .ne. 0)then  !two fluid properties used in this model
6559599516SKenneth E. Jansen            Sclr = zero
6659599516SKenneth E. Jansen            isc=abs(iRANS)+6
6759599516SKenneth E. Jansen            do n = 1, nshl
6859599516SKenneth E. Jansen               Sclr = Sclr + shp(:,n) * ycl(:,n,isc)
6959599516SKenneth E. Jansen            enddo
7059599516SKenneth E. Jansen            test_it = 0.5*(one + Sclr/epsilon_ls +
7159599516SKenneth E. Jansen     &           (sin(pi*Sclr/epsilon_ls))/pi )
7259599516SKenneth E. Jansen
7359599516SKenneth E. Jansen            prop_blend = max( min(test_it(:), one ), zero  )
7459599516SKenneth E. Jansen            rmu = datmat(1,2,2) + (datmat(1,2,1)-datmat(1,2,2))
7559599516SKenneth E. Jansen     &           *prop_blend
7659599516SKenneth E. Jansen         elseif(irampViscOutlet.eq.1)then ! increase viscosity near outlet
77513954efSKenneth E. Jansenc.............ramp rmu near outlet (for a Duct geometry)
7859599516SKenneth E. Jansen            fmax=10.0
79513954efSKenneth E. Jansen!           fmax=2000.0
80513954efSKenneth E. Jansen
81513954efSKenneth E. Jansenc           if (myrank .eq. master)then
82513954efSKenneth E. Jansenc              write(*,*) 'viscosity', datmat(1,2,1)
83513954efSKenneth E. Jansenc           endif
84513954efSKenneth E. Jansen
85513954efSKenneth E. Jansenc... geometry6
86513954efSKenneth E. Jansen           if(iDuctgeometryType .eq. 6)then
87513954efSKenneth E. Jansen
88513954efSKenneth E. Jansenc            if (myrank .eq. master) write(*,*) 'getdiff, geometry6'
89513954efSKenneth E. Jansen
90513954efSKenneth E. Jansen             where(xx(:).le. 0.42) !halfway btwn AIP and exit
9159599516SKenneth E. Jansen               rmu(:)= datmat(1,2,1)
9259599516SKenneth E. Jansen             elsewhere(xx(:).ge. 0.75) !2/3 of the way to the exit
9359599516SKenneth E. Jansen               rmu(:)=fmax*datmat(1,2,1)
9459599516SKenneth E. Jansen             elsewhere
9559599516SKenneth E. Jansen               rmu(:)= datmat(1,2,1)*(
9659599516SKenneth E. Jansen     &          (55.65294821-55.65294821*fmax)*xx(:)*xx(:)*xx(:)
9759599516SKenneth E. Jansen     &          +(-97.67092412+97.67092412*fmax)*xx(:)*xx(:)
9859599516SKenneth E. Jansen     &          +(52.59203606-52.59203606*fmax)*xx(:)
9959599516SKenneth E. Jansen     &          -7.982719760+8.982719760*fmax)
100513954efSKenneth E. Jansen
10159599516SKenneth E. Jansen             endwhere
102513954efSKenneth E. Jansen
103513954efSKenneth E. Jansenc             do i = 1,npro
104513954efSKenneth E. Jansenc                if(xx(i) .lt. 0.75 .and. xx(i) .gt. 0.42)
105513954efSKenneth E. Jansenc     &             write(*,*) xx(i), rmu(i)
106513954efSKenneth E. Jansenc             enddo
107513954efSKenneth E. Jansen
108513954efSKenneth E. Jansenc... geometry8
109513954efSKenneth E. Jansen           elseif (iDuctgeometryType .eq. 8)then
110513954efSKenneth E. Jansen             xstart=1.5  !1.6*4.5*0.0254+0.85*0.5
111513954efSKenneth E. Jansen             xmidwy=2.0  !1.6*4.5*0.0254+0.85*1.0
112513954efSKenneth E. Jansen             where(xx(:).le.xstart)
113513954efSKenneth E. Jansen               rmu(:)=datmat(1,2,1)
114513954efSKenneth E. Jansen             elsewhere(xx(:).ge.xmidwy)
115513954efSKenneth E. Jansen               rmu(:)=fmax*datmat(1,2,1)
116513954efSKenneth E. Jansen             elsewhere
117513954efSKenneth E. Jansen               rmu(:)=datmat(1,2,1)
118513954efSKenneth E. Jansen     &               *(1+(fmax-1)*(0.5+
119513954efSKenneth E. Jansen     &            tanh(5*(xx(:)-(xmidwy+xstart)/2)/(xmidwy-xstart))/2))
120513954efSKenneth E. Jansen             endwhere
121513954efSKenneth E. Jansen
122513954efSKenneth E. Jansen
123513954efSKenneth E. Jansen
124513954efSKenneth E. Jansen           endif
125513954efSKenneth E. Jansenc.....................................................
12659599516SKenneth E. Jansen         else ! constant viscosity
12759599516SKenneth E. Jansen            rmu = datmat(1,2,1)
12859599516SKenneth E. Jansen         endif
129513954efSKenneth E. Jansen!
130513954efSKenneth E. Jansen!   boundary layer thickening via molecular viscosity
131513954efSKenneth E. Jansen!
132513954efSKenneth E. Jansen         scaleCntrl=1.0
133513954efSKenneth E. Jansen         Lvisc=0.2
134513954efSKenneth E. Jansen         xbltb=-0.2159-two*Lvisc
135513954efSKenneth E. Jansen         xblte=-0.2159-Lvisc
136513954efSKenneth E. Jansen         where((xx(:).gt.xbltb) .and. (xx(:).lt.xblte))
137513954efSKenneth E. Jansen           rmu(:)=scaleCntrl*datmat(1,2,1)
138513954efSKenneth E. Jansen         endwhere
139513954efSKenneth E. Jansen
140513954efSKenneth E. Jansen!          xvisc1 = -0.3048
141513954efSKenneth E. Jansen!          xvisc2 = -0.2159
142513954efSKenneth E. Jansen!          where(xx(:).lt.xvisc1)
143513954efSKenneth E. Jansen!            rmu(:)=scaleCntrl*datmat(1,2,1)
144513954efSKenneth E. Jansen!          elsewhere(xx(:).gt.xvisc1 .and. xx(:).lt.xvisc2)
145513954efSKenneth E. Jansen!            rmu(:)=( scaleCntrl - (scaleCntrl - 1)*
146513954efSKenneth E. Jansen!     &             (xx(:) - xvisc1)/(xvisc2 - xvisc1))*datmat(1,2,1)
147513954efSKenneth E. Jansen!          endwhere
148513954efSKenneth E. Jansen
149513954efSKenneth E. Jansen         !if(myrank.eq.master) then
150513954efSKenneth E. Jansen         !   write(*,*) 'adjusting viscosity in region by ', scaleCntrl
151513954efSKenneth E. Jansen         !endif
15259599516SKenneth E. Jansen      else
15359599516SKenneth E. Jansenc
15459599516SKenneth E. Jansenc.... generalized Sutherland viscosity
15559599516SKenneth E. Jansenc
15659599516SKenneth E. Jansen         rmu = datmat(1,2,1) * (T/datmat(2,2,1))*sqrt(T/datmat(2,2,1))
15759599516SKenneth E. Jansen     &        * ( datmat(2,2,1) + datmat(3,2,1) ) / (T + datmat(3,2,1))
15859599516SKenneth E. Jansenc
15959599516SKenneth E. Jansen      endif
16059599516SKenneth E. Jansenc
16159599516SKenneth E. Jansenc.... calculate the second viscosity coefficient
16259599516SKenneth E. Jansenc
16359599516SKenneth E. Jansen      if (matflg(3,1) .eq. 0) then
16459599516SKenneth E. Jansen         rlm = -pt66 * rmu
16559599516SKenneth E. Jansen      else
16659599516SKenneth E. Jansen         rlm = (datmat(1,3,1) - pt66) * rmu
16759599516SKenneth E. Jansen      endif
16859599516SKenneth E. Jansenc
16959599516SKenneth E. Jansenc.... calculate the remaining quantities
17059599516SKenneth E. Jansenc
17159599516SKenneth E. Jansen      con    = rmu * cp / pr
17259599516SKenneth E. Jansenc
17359599516SKenneth E. Jansenc-------------Eddy Viscosity Calculation-----------------
17459599516SKenneth E. Jansenc
17559599516SKenneth E. Jansenc.... dynamic model
17659599516SKenneth E. Jansenc
17759599516SKenneth E. Jansen      if (iLES .gt. 0. and. iRANS.eq.0) then  ! simple LES
17859599516SKenneth E. Jansen         xmut = xmudmi(:,intp)
17959599516SKenneth E. Jansen      else if (iRANS .eq. 0 .and. iLES.eq.0 ) then !DNS
18059599516SKenneth E. Jansen         xmut = zero
18159599516SKenneth E. Jansen      else if (iRANS .lt. 0) then ! calculate RANS viscosity
18259599516SKenneth E. Jansenc
18359599516SKenneth E. Jansenc.... RANS
18459599516SKenneth E. Jansenc
18559599516SKenneth E. Jansen         do e = 1, npro
18659599516SKenneth E. Jansen            wallmask = 0
18759599516SKenneth E. Jansen            if(itwmod.eq.-2) then ! effective viscosity
18859599516SKenneth E. Jansenc mark the wall nodes for this element, if there are any
18959599516SKenneth E. Jansen               do n = 1, nshl
19059599516SKenneth E. Jansenc
19159599516SKenneth E. Jansenc  note that we are using ycl here so that means that these
19259599516SKenneth E. Jansenc  terms are not perturbed for MFG difference and therefore
19359599516SKenneth E. Jansenc  NOT in the LHS.  As they only give the evisc near the wall
19459599516SKenneth E. Jansenc  I doubt this is a problem.
19559599516SKenneth E. Jansenc
19659599516SKenneth E. Jansen                  u1=ycl(e,n,2)
19759599516SKenneth E. Jansen                  u2=ycl(e,n,3)
19859599516SKenneth E. Jansen                  u3=ycl(e,n,4)
19959599516SKenneth E. Jansen                  if((u1.eq.zero).and.(u2.eq.zero).and.(u3.eq.zero))
20059599516SKenneth E. Jansen     &                 then
20159599516SKenneth E. Jansen                     wallmask(n)=1
20259599516SKenneth E. Jansen                  endif
20359599516SKenneth E. Jansen               enddo
20459599516SKenneth E. Jansen            endif
20559599516SKenneth E. Jansenc
20659599516SKenneth E. Jansen            if( any(wallmask.eq.1) ) then
20759599516SKenneth E. Jansenc if there are wall nodes for this elt in an effective-viscosity wall
20859599516SKenneth E. Jansenc modeled case,then eddy viscosity has been stored at the wall nodes
20959599516SKenneth E. Jansenc in place of the spalart-allmaras variable; the eddy viscosity for
21059599516SKenneth E. Jansenc the whole element is taken to be the avg of wall values
21159599516SKenneth E. Jansen               evisc = zero
21259599516SKenneth E. Jansen               nwnode=0
21359599516SKenneth E. Jansen               do n = 1, nshl
21459599516SKenneth E. Jansen                  if(wallmask(n).eq.1) then
21559599516SKenneth E. Jansen                     evisc = evisc + ycl(e,n,6)
21659599516SKenneth E. Jansen                     nwnode = nwnode + 1
21759599516SKenneth E. Jansen                  endif
21859599516SKenneth E. Jansen               enddo
21959599516SKenneth E. Jansen               evisc = evisc/nwnode
22059599516SKenneth E. Jansen               xmut(e)= abs(evisc)
22159599516SKenneth E. Jansenc this is what we would use instead of the above if we were allowing
22259599516SKenneth E. Jansenc the eddy viscosity to vary through the element based on non-wall nodes
22359599516SKenneth E. Jansenc$$$               evisc = zero
22459599516SKenneth E. Jansenc$$$               Turb = zero
22559599516SKenneth E. Jansenc$$$               do n = 1, nshl
22659599516SKenneth E. Jansenc$$$                  if(wallmask(n).eq.1) then
22759599516SKenneth E. Jansenc$$$                     evisc = evisc + shape(e,n) * ycl(e,n,6)
22859599516SKenneth E. Jansenc$$$                  else
22959599516SKenneth E. Jansenc$$$                     Turb = Turb + shape(e,n) * ycl(e,n,6)
23059599516SKenneth E. Jansenc$$$                  endif
23159599516SKenneth E. Jansenc$$$               enddo
23259599516SKenneth E. Jansenc$$$               xki    = abs(Turb)/rmu(e)
23359599516SKenneth E. Jansenc$$$               xki3   = xki * xki * xki
23459599516SKenneth E. Jansenc$$$               fv1    = xki3 / (xki3 + saCv1P3)
23559599516SKenneth E. Jansenc$$$               rmu(e) = rmu(e) + fv1*abs(Turb)
23659599516SKenneth E. Jansenc$$$               rmu(e) = rmu(e) + abs(evisc)
23759599516SKenneth E. Jansen            else
23859599516SKenneth E. Jansenc else one of the following is the case:
23959599516SKenneth E. Jansenc   using effective-viscosity, but no wall nodes on this elt
24059599516SKenneth E. Jansenc   using slip-velocity
24159599516SKenneth E. Jansenc   using no model; walls are resolved
24259599516SKenneth E. Jansenc in all of these cases, eddy viscosity is calculated normally
24359599516SKenneth E. Jansen               savar = zero
24459599516SKenneth E. Jansen               do n = 1, nshl
24559599516SKenneth E. Jansen                  savar = savar + shp(e,n) * ycl(e,n,6)
24659599516SKenneth E. Jansen               enddo
247*779e4b51SKenneth E. Jansen               xki    = rho(e)*abs(savar)/rmu(e)
24859599516SKenneth E. Jansen               xki3   = xki * xki * xki
24959599516SKenneth E. Jansen               fv1    = xki3 / (xki3 + saCv1P3)
250*779e4b51SKenneth E. Jansen               xmut(e) = fv1*abs(savar)*rho(e)
25159599516SKenneth E. Jansen            endif
25259599516SKenneth E. Jansen         enddo                  ! end loop over elts
25359599516SKenneth E. Jansen
25459599516SKenneth E. Jansen         if (iLES.gt.0) then    ! this is DES so we have to blend in
25559599516SKenneth E. Jansen                                ! xmudmi based on max edge length of
25659599516SKenneth E. Jansen                                ! element
25759599516SKenneth E. Jansen            call EviscDES (xl,xmut,xmudmi)
25859599516SKenneth E. Jansen         endif
25959599516SKenneth E. Jansen      endif                     ! check for LES or RANS
26059599516SKenneth E. Jansen
26159599516SKenneth E. Jansen      rlm    = rlm - pt66*xmuT
26259599516SKenneth E. Jansen      rmu    = rmu + xmuT
26359599516SKenneth E. Jansen      rlm2mu = rlm + two * rmu
26459599516SKenneth E. Jansen      con    = con + xmuT*cp/pr
26559599516SKenneth E. Jansenc
26659599516SKenneth E. Jansenc.... return
26759599516SKenneth E. Jansenc
26859599516SKenneth E. Jansen      return
26959599516SKenneth E. Jansen      end
27059599516SKenneth E. Jansenc
27159599516SKenneth E. Jansenc
27259599516SKenneth E. Jansenc
27359599516SKenneth E. Jansen      subroutine getDiffSclr (T,      cp,   rmu,   rlm,
27459599516SKenneth E. Jansen     &     rlm2mu, con, rho, Sclr)
27559599516SKenneth E. Jansenc
27659599516SKenneth E. Jansenc----------------------------------------------------------------------
27759599516SKenneth E. Jansenc
27859599516SKenneth E. Jansenc This routine calculates the fluid material properties.
27959599516SKenneth E. Jansenc
28059599516SKenneth E. Jansenc input:
28159599516SKenneth E. Jansenc  T      (npro)        : temperature
28259599516SKenneth E. Jansenc  cp     (npro)        : specific heat at constant pressure
28359599516SKenneth E. Jansenc
28459599516SKenneth E. Jansenc output:
28559599516SKenneth E. Jansenc  rmu    (npro)        : Mu
28659599516SKenneth E. Jansenc  rlm    (npro)        : Lambda
28759599516SKenneth E. Jansenc  rlm2mu (npro)        : Lambda + 2 Mu
28859599516SKenneth E. Jansenc  con    (npro)        : Conductivity
28959599516SKenneth E. Jansenc
29059599516SKenneth E. Jansenc Note: material type flags
29159599516SKenneth E. Jansenc         matflg(2):
29259599516SKenneth E. Jansenc          eq. 0, constant viscosity
29359599516SKenneth E. Jansenc          eq. 1, generalized Sutherland viscosity
29459599516SKenneth E. Jansenc         matflg(3):
29559599516SKenneth E. Jansenc          eq. 0, Stokes approximation
29659599516SKenneth E. Jansenc          eq. 1, shear proportional bulk viscosity
29759599516SKenneth E. Jansenc
29859599516SKenneth E. Jansenc
29959599516SKenneth E. Jansenc Farzin Shakib, Winter 1987.
30059599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
30159599516SKenneth E. Jansenc----------------------------------------------------------------------
30259599516SKenneth E. Jansenc
30359599516SKenneth E. Jansen        include "common.h"
30459599516SKenneth E. Jansenc
30559599516SKenneth E. Jansen        dimension T(npro),                   cp(npro),
30659599516SKenneth E. Jansen     &            rmu(npro),                 rlm(npro),
30759599516SKenneth E. Jansen     &            rlm2mu(npro),              con(npro),
30859599516SKenneth E. Jansen     &            rho(npro),                 Sclr(npro)
30959599516SKenneth E. Jansen
31059599516SKenneth E. Jansen
31159599516SKenneth E. Jansen
31259599516SKenneth E. Jansenc
31359599516SKenneth E. Jansenc
31459599516SKenneth E. Jansenc.... constant viscosity
31559599516SKenneth E. Jansenc
31659599516SKenneth E. Jansen        if (matflg(2,1) .eq. 0) then
31759599516SKenneth E. Jansenc
31859599516SKenneth E. Jansen          rmu = datmat(1,2,1)
31959599516SKenneth E. Jansenc
32059599516SKenneth E. Jansen        else
32159599516SKenneth E. Jansenc
32259599516SKenneth E. Jansenc.... generalized Sutherland viscosity
32359599516SKenneth E. Jansenc
32459599516SKenneth E. Jansen          rmu = datmat(1,2,1) * (T/datmat(2,2,1))*sqrt(T/datmat(2,2,1))
32559599516SKenneth E. Jansen     &        * ( datmat(2,2,1) + datmat(3,2,1) ) / (T + datmat(3,2,1))
32659599516SKenneth E. Jansenc
32759599516SKenneth E. Jansen        endif
32859599516SKenneth E. Jansenc
32959599516SKenneth E. Jansen*************************check****************************
33059599516SKenneth E. Jansenc        if (iRANS(1).lt.zero) then
33159599516SKenneth E. Jansenc           rmu = saSigmaInv*rho*((rmu/rho)+Sclr)
33259599516SKenneth E. Jansenc        endif
33359599516SKenneth E. Jansenc This augmentation of viscosity is performed in e3viscsclr
33459599516SKenneth E. Jansenc The Spalart -Allmaras model will need molecular viscosity
33559599516SKenneth E. Jansenc  in subsequent calculations.
33659599516SKenneth E. Jansenc.... calculate the second viscosity coefficient
33759599516SKenneth E. Jansenc
33859599516SKenneth E. Jansen        if (matflg(3,1) .eq. 0) then
33959599516SKenneth E. Jansenc
34059599516SKenneth E. Jansen          rlm = -pt66 * rmu
34159599516SKenneth E. Jansenc
34259599516SKenneth E. Jansen        else
34359599516SKenneth E. Jansenc
34459599516SKenneth E. Jansen          rlm = (datmat(1,3,1) - pt66) * rmu
34559599516SKenneth E. Jansenc
34659599516SKenneth E. Jansen        endif
34759599516SKenneth E. Jansenc
34859599516SKenneth E. Jansenc.... calculate the remaining quantities
34959599516SKenneth E. Jansenc
35059599516SKenneth E. Jansen
35159599516SKenneth E. Jansen
35259599516SKenneth E. Jansen
35359599516SKenneth E. Jansen        rlm2mu = rlm + two * rmu
35459599516SKenneth E. Jansen        con    = rmu * cp / pr
35559599516SKenneth E. Jansen
35659599516SKenneth E. Jansen
35759599516SKenneth E. Jansen
35859599516SKenneth E. Jansenc
35959599516SKenneth E. Jansenc.... return
36059599516SKenneth E. Jansenc
36159599516SKenneth E. Jansen        return
36259599516SKenneth E. Jansen        end
36359599516SKenneth E. Jansen
36459599516SKenneth E. Jansen      subroutine EviscDES(xl,xmut,xmudmi)
36559599516SKenneth E. Jansen
36659599516SKenneth E. Jansen      include "common.h"
36759599516SKenneth E. Jansen      real*8 xmut(npro),xl(npro,nenl,nsd),xmudmi(npro,ngauss)
36859599516SKenneth E. Jansen
36959599516SKenneth E. Jansen
37059599516SKenneth E. Jansen      do i=1,npro
37159599516SKenneth E. Jansen         dx=maxval(xl(i,:,1))-minval(xl(i,:,1))
37259599516SKenneth E. Jansen         dy=maxval(xl(i,:,2))-minval(xl(i,:,2))
37359599516SKenneth E. Jansen         dz=maxval(xl(i,:,3))-minval(xl(i,:,3))
37459599516SKenneth E. Jansen         emax=max(dx,max(dy,dz))
37559599516SKenneth E. Jansen         if(emax.lt.eles) then  ! pure les
37659599516SKenneth E. Jansen            xmut(i)=xmudmi(i,intp)
37759599516SKenneth E. Jansen         else if(emax.lt.two*eles) then ! blend
37859599516SKenneth E. Jansen            xi=(emax-eles)/(eles)
37959599516SKenneth E. Jansen            xmut(i)=xi*xmut(i)+(one-xi)*xmudmi(1,intp)
38059599516SKenneth E. Jansen         endif                  ! leave at RANS value as edge is twice pure les
38159599516SKenneth E. Jansen      enddo
38259599516SKenneth E. Jansen
38359599516SKenneth E. Jansen      return
38459599516SKenneth E. Jansen      end
385