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