subroutine diffw(putout)
use modglobal, only : ib,ie,ih,jb,je,jh,kb,ke,kh,kmax,dxf,dxhi,dxfi,dy,&
dyi,dy2i,dzf,dzfi,dzhi,dzhiq,jmax,numol,lles
use modfields, only : u0,v0,w0
use modmpi, only : myid
implicit none
!*****************************************************************
real, intent(inout) :: putout(ib-ih:ie+ih,jb-jh:je+jh,kb:ke+kh)
real :: emom, eomm, eopm, epom
integer :: i,j,k,jm,jp,km,kp
if (lles) then
do k=kb+1,ke
kp=k+1
km=k-1
do j=jb,je
jp=j+1
jm=j-1
do i=ib,ie
emom = ( dzf(km) * ( ekm(i,j,k)*dxf(i-1) + ekm(i-1,j,k)*dxf(i) )*dxhi(i) + &
dzf(k) * ( ekm(i,j,km)*dxf(i-1) + ekm(i-1,j,km)*dxf(i) )*dxhi(i) ) * dzhiq(k)
eomm = ( dzf(km) * ( ekm(i,j,k) + ekm(i,jm,k) ) + &
dzf(k) * ( ekm(i,j,km) + ekm(i,jm,km) ) ) * dzhiq(k)
eopm = ( dzf(km) * ( ekm(i,j,k) + ekm(i,jp,k) ) + &
dzf(k) * ( ekm(i,j,km) + ekm(i,jp,km) ) ) * dzhiq(k)
epom = ( dzf(km) * ( ekm(i,j,k)*dxf(i+1) + ekm(i+1,j,k)*dxf(i) )*dxhi(i+1) + &
dzf(k) * ( ekm(i,j,km)*dxf(i+1) + ekm(i+1,j,km)*dxf(i) )*dxhi(i+1) ) * dzhiq(k)
! discretized diffusion term
putout(i,j,k) = putout(i,j,k) &
+ &
( epom * ( (w0(i+1,j,k)-w0(i,j,k)) *dxhi(i+1) &
+(u0(i+1,j,k)-u0(i+1,j,km)) *dzhi(k) ) &
-emom * ( (w0(i,j,k)-w0(i-1,j,k)) *dxhi(i) &
+(u0(i,j,k)-u0(i,j,km)) *dzhi(k) ) &
)*dxfi(i) &
+ &
( eopm * ( (w0(i,jp,k)-w0(i,j,k)) *dyi &
+(v0(i,jp,k)-v0(i,jp,km)) *dzhi(k) ) &
-eomm * ( (w0(i,j,k)-w0(i,jm,k)) *dyi &
+(v0(i,j,k)-v0(i,j,km)) *dzhi(k) ) &
)*dyi &
+ &
( ekm(i,j,k) * (w0(i,j,kp)-w0(i,j,k)) *dzfi(k) &
-ekm(i,j,km)* (w0(i,j,k)-w0(i,j,km)) *dzfi(km) ) * 2. &
* dzhi(k)
end do
end do
end do
else ! DNS
do k=kb+1,ke
kp=k+1
km=k-1
do j=jb,je
jp=j+1
jm=j-1
do i=ib,ie
! discretized diffusion term
putout(i,j,k) = putout(i,j,k) &
+ &
( numol * ( (w0(i+1,j,k)-w0(i,j,k)) *dxhi(i+1) &
+(u0(i+1,j,k)-u0(i+1,j,km)) *dzhi(k) ) &
-numol * ( (w0(i,j,k)-w0(i-1,j,k)) *dxhi(i) &
+(u0(i,j,k)-u0(i,j,km)) *dzhi(k) ) &
)*dxfi(i) &
+ &
( numol * ( (w0(i,jp,k)-w0(i,j,k)) *dyi &
+(v0(i,jp,k)-v0(i,jp,km)) *dzhi(k) ) &
-numol * ( (w0(i,j,k)-w0(i,jm,k)) *dyi &
+(v0(i,j,k)-v0(i,j,km)) *dzhi(k) ) &
)*dyi &
+ &
( numol * (w0(i,j,kp)-w0(i,j,k)) *dzfi(k) &
-numol * (w0(i,j,k)-w0(i,j,km)) *dzfi(km) ) * 2. &
* dzhi(k)
end do
end do
end do
end if
end subroutine diffw