da_set_boundary_xa.inc

References to this file elsewhere.
1 subroutine da_set_boundary_xa(xa, xb)
2 
3    !------------------------------------------------------------------------
4    !  Purpose: 
5    !
6    !  Merge East-West boundary values for the desired Xa-type variables
7    !------------------------------------------------------------------------
8 
9    implicit none
10 
11    type (x_type),  intent(inout) :: xa       ! gridded analysis increment.
12    type (xb_type), intent(in)    :: xb       ! first guess state.
13 
14    integer :: n, j, k
15 
16    if ((xb%its /= xb%ids) .or. (xb%ite /= xb%ide)) return
17 
18    ! 2d
19 
20    k = xb%kte + 1
21    do j=xb%jms, xb%jme
22       do n=1,bdyzone
23          xa%psfc(xb%ids-n,j) = xa%psfc(xb%ide+1-n,j)
24          xa%w(xb%ids-n,j,k) = xa%w(xb%ide+1-n,j,k)
25 
26          xa%psfc(xb%ide+n,j) = xa%psfc(xb%ids-1+n,j)
27          xa%w(xb%ide+n,j,k) = xa%w(xb%ids-1+n,j,k)
28       end do
29    end do
30 
31    ! 3d
32 
33    do k=xb%kts, xb%kte
34       do j=xb%jms, xb%jme
35          do n=1,bdyzone
36             xa%u(xb%ids-n,j,k) = xa%u(xb%ide+1-n,j,k)
37             xa%v(xb%ids-n,j,k) = xa%v(xb%ide+1-n,j,k)
38             xa%t(xb%ids-n,j,k) = xa%t(xb%ide+1-n,j,k)
39             xa%p(xb%ids-n,j,k) = xa%p(xb%ide+1-n,j,k)
40             xa%q(xb%ids-n,j,k) = xa%q(xb%ide+1-n,j,k)
41             xa%w(xb%ids-n,j,k) = xa%w(xb%ide+1-n,j,k)
42 
43             xa%u(xb%ide+n,j,k) = xa%u(xb%ids-1+n,j,k)
44             xa%v(xb%ide+n,j,k) = xa%v(xb%ids-1+n,j,k)
45             xa%t(xb%ide+n,j,k) = xa%t(xb%ids-1+n,j,k)
46             xa%p(xb%ide+n,j,k) = xa%p(xb%ids-1+n,j,k)
47             xa%q(xb%ide+n,j,k) = xa%q(xb%ids-1+n,j,k)
48             xa%w(xb%ide+n,j,k) = xa%w(xb%ids-1+n,j,k)
49          end do
50       end do
51    end do
52 
53 end subroutine da_set_boundary_xa
54 
55