<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_W_ADJUSTMENT_LIN'><A href='../../html_code/dynamics/da_w_adjustment_lin.inc.html#DA_W_ADJUSTMENT_LIN' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

subroutine da_w_adjustment_lin(xb,W_a,WZ_a) 1,3

   !---------------------------------------------------------------------------
   ! Purpose: Adjust vertical velocity increments
   !
   ! Assumptions: 1) Model level stored top down.
   !---------------------------------------------------------------------------

   implicit none

   type (xb_type), intent(in)    :: xb                ! first guess structure.
   real,           intent(out)   :: w_a(ims:ime,jms:jme,kms:kme)
   real,           intent(inout) :: wz_a(ims:ime,jms:jme,kms:kme)

   integer :: i,j,k
   real    :: wz_b(ims:ime,jms:jme,kms:kme)
   real    :: ebxl1,ebxl2
   real    :: ebxl19,ebxl29

   if (trace_use) call da_trace_entry("da_w_adjustment_lin")

   call da_wz_base(xb,WZ_b)

   do j=jts,jte
      do i=its,ite
         ebxl1=0.0
         ebxl19=0.0
         ebxl2=0.0
         ebxl29=0.0
         do k=kte,kts,-1
            ebxl1=ebxl1+wz_a(i,j,k)*(xb%hf(i,j,k)-xb%hf(i,j,k+1))
            ebxl19=ebxl19+wz_b(i,j,k)*(xb%hf(i,j,k)-xb%hf(i,j,k+1))
            ebxl2=ebxl2+wz_a(i,j,k)*(xb%hf(i,j,k)-xb%hf(i,j,k+1))   &amp;
                  *sign(1.0,wz_b(i,j,k))
            ebxl29=ebxl29+abs(wz_b(i,j,k))*(xb%hf(i,j,k)-xb%hf(i,j,k+1))
         end do

         do k=kts,kte
            wz_a(i,j,k)=wz_a(i,j,k)*(1.-ebxl19/ebxl29*sign(1.0,wz_b(i,j,k)))-  &amp;
                        ebxl1*abs(wz_b(i,j,k))/ebxl29+                        &amp;
                        ebxl2*abs(wz_b(i,j,k))*ebxl19/ebxl29**2
         end do

      end do
   end do

   if (trace_use) call da_trace_exit("da_w_adjustment_lin")

end subroutine da_w_adjustment_lin