advecw_2nd Subroutine

subroutine advecw_2nd(putin, putout)

Uses

  • proc~~advecw_2nd~~UsesGraph proc~advecw_2nd advec_2nd.f90::advecw_2nd module~modfields modfields proc~advecw_2nd->module~modfields module~modglobal modglobal proc~advecw_2nd->module~modglobal

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(ib - ih:ie + ih, jb - jh:je + jh, kb - kh:ke + kh) :: putin
real, intent(inout), dimension(ib - ih:ie + ih, jb - jh:je + jh, kb:ke + kh) :: putout

Called by

proc~~advecw_2nd~~CalledByGraph proc~advecw_2nd advec_2nd.f90::advecw_2nd proc~advection advection.f90::advection proc~advection->proc~advecw_2nd program~dalesurban DALESURBAN program~dalesurban->proc~advection

Contents

Source Code


Source Code

subroutine advecw_2nd(putin, putout)

   use modglobal, only:ih, ib, ie, jh, jb, je, kb, ke, kh, dxf, dxhi, dxfiq, dyiq, dzf, dzhi, dzhiq
   use modfields, only:u0, v0, w0, pres0
   ! use modmpi, only : myid
   implicit none

   real, dimension(ib - ih:ie + ih, jb - jh:je + jh, kb - kh:ke + kh), intent(in)  :: putin !< Input: the w-field
   real, dimension(ib - ih:ie + ih, jb - jh:je + jh, kb:ke + kh), intent(inout) :: putout !< Output: the tendency

   integer :: i, j, k, ip, im, jp, jm, kp, km

   do k = kb + 1, ke
      km = k - 1
      kp = k + 1
      do j = jb, je
         jm = j - 1
         jp = j + 1
         do i = ib, ie
            im = i - 1
            ip = i + 1

            putout(i, j, k) = -( &
                              ( &
                              (putin(ip, j, k)*dxf(i) + putin(i, j, k)*dxf(ip))*dxhi(ip) & ! d(uw)/dx
                              *(dzf(km)*u0(ip, j, k) + dzf(k)*u0(ip, j, km)) &
                              - (putin(i, j, k)*dxf(im) + putin(im, j, k)*dxf(i))*dxhi(i) &
                              *(dzf(km)*u0(i, j, k) + dzf(k)*u0(i, j, km)) &
                              )*dxfiq(i)*dzhi(k) &
                              + &
                              ( &
                              (putin(i, jp, k) + putin(i, j, k)) & ! d(vw)/dy
                              *(dzf(km)*v0(i, jp, k) + dzf(k)*v0(i, jp, km)) &
                              - (putin(i, j, k) + putin(i, j - 1, k)) &
                              *(dzf(km)*v0(i, j, k) + dzf(k)*v0(i, j, km)) &
                              )*dyiq*dzhi(k) &
                              + &
                              ( &
                              (putin(i, j, k) + putin(i, j, kp))*(w0(i, j, k) + w0(i, j, kp)) & ! d(ww)/dz
                              - (putin(i, j, k) + putin(i, j, km))*(w0(i, j, k) + w0(i, j, km)) &
                              )*dzhiq(k) &
                              ) &
                              - ((pres0(i, j, k) - pres0(i, j, k - 1))*dzhi(k)) ! - dp/dz

         end do
      end do
   end do
end subroutine advecw_2nd