#include <misc.h>
#include <params.h>
subroutine etadtn(lat ,nlon ,d ,edstar ,etadot ) 1,2
!
!-----------------------------------------------------------------------
!
! Purpose:
! to compute (1/ps)etadot(dp/deta) for time steps subsequent to nstep = 0.
! This routine completes a partial computation which began in the previous
! time step (SCANDYN)
!
! NOTE: Computing only the bottom "pver" levels of a half-level field.
!
! Author: J. Olson
!
!-----------------------------------------------------------------------
!
! $Id: etadtn.F90,v 1.4.6.1 2002/06/15 13:48:23 erik Exp $
! $Author: erik $
!
!-----------------------------------------------------------------------
use shr_kind_mod
, only: r8 => shr_kind_r8
use pmgrid
implicit none
#include <comhyb.h>
!------------------------------Arguments--------------------------------
!
integer, intent(in) :: lat ! latitude
integer, intent(in) :: nlon ! number of longitudes
real(r8), intent(in) :: d (plond,plev) ! divergence
real(r8), intent(in) :: edstar(plond,plev) ! partially computed etadot
real(r8), intent(out) :: etadot(plond,plev) ! vertical velocity in eta coordinates
!
!-----------------------------------------------------------------------
!
! local workspace
!
integer i,k ! indices
real(r8) ddpn(plond) ! divergence integral
real(r8) ddpk(plond) ! divergence accumulator
real(r8) dpr (plev) ! pressure coefficient
!
!-----------------------------------------------------------------------
!
do i = 1,nlon
ddpn(i) = 0.
ddpk(i) = 0.
end do
!
do k = 1,plev
dpr(k) = hypd(k)/hypi(plevp)
end do
!
do k = 1,plev
do i = 1,nlon
ddpn(i) = ddpn(i) + d(i,k)*dpr(k)
end do
end do
!
do k = 1,plev-1
do i = 1,nlon
ddpk(i) = ddpk(i) + d(i,k)*dpr(k)
etadot(i,k) = edstar(i,k) - ddpk(i)
end do
if(k.ge.nprlev) then
do i = 1,nlon
etadot(i,k) = etadot(i,k) + hybi(k+1)*ddpn(i)
end do
endif
end do
!
! Finish bottom level
!
do i = 1,nlon
etadot(i,plev) = 0.
end do
!
return
end subroutine etadtn