subroutine diffe(putout)
use modglobal, only : ib,ie,ih,jb,je,jh,kb,ke,kh,dxf,dxfi,dxh2i,dzf,dzfi,&
dy2i,dzhi,dzh2i,jmax
use modfields, only : e120
use modmpi, only : myid
implicit none
real, intent(inout) :: putout(ib-ih:ie+ih,jb-jh:je+jh,kb:ke+kh)
integer :: i,j,k,jm,jp,km,kp
do k=kb,ke
kp=k+1
km=k-1
do j=jb,je
jp=j+1
jm=j-1
do i=ib,ie
putout(i,j,k) = putout(i,j,k) &
+ 1.0 * ( &
( (ekm(i+1,j,k)*dxf(i)+ekm(i,j,k)*dxf(i+1)) * (e120(i+1,j,k)-e120(i,j,k))*dxh2i(i+1) &
-(ekm(i,j,k)*dxf(i-1)+ekm(i-1,j,k)*dxf(i))*(e120(i,j,k)-e120(i-1,j,k))*dxh2i(i)) * dxfi(i) &
+ &
((ekm(i,jp,k)+ekm(i,j,k)) *(e120(i,jp,k)-e120(i,j,k)) &
-(ekm(i,j,k)+ekm(i,jm,k)) *(e120(i,j,k)-e120(i,jm,k)) )*dy2i &
+ &
((dzf(kp)*ekm(i,j,k) + dzf(k)*ekm(i,j,kp)) &
*(e120(i,j,kp)-e120(i,j,k)) *dzh2i(kp) &
-(dzf(km)*ekm(i,j,k) + dzf(k)*ekm(i,j,km)) &
*(e120(i,j,k)-e120(i,j,km)) *dzh2i(k) )*dzfi(k) &
)
end do
end do
end do
end subroutine diffe