da_set_boundary_xb.inc
References to this file elsewhere.
1 subroutine da_set_boundary_xb(xb)
2
3 !------------------------------------------------------------------------
4 ! Purpose:
5 !
6 ! Merge East-West boundary values for the desired Xb-type variables
7 !------------------------------------------------------------------------
8
9 implicit none
10
11 type (xb_type), intent(inout) :: xb ! first guess state.
12
13 integer :: n, j, k
14
15 if ((xb%its /= xb%ids) .or. (xb%ite /= xb%ide)) return
16
17 ! 2d
18 k = xb%kte + 1
19 do j=xb%jms, xb%jme
20 do n=1,bdyzone
21 xb%lat(xb%ids-n,j) = xb%lat(xb%ide+1-n,j)
22 xb%lon(xb%ids-n,j) = xb%lon(xb%ide+1-n,j)
23 xb%cori(xb%ids-n,j) = xb%cori(xb%ide+1-n,j)
24 xb%terr(xb%ids-n,j) = xb%terr(xb%ide+1-n,j)
25 xb%psfc(xb%ids-n,j) = xb%psfc(xb%ide+1-n,j)
26 xb%map_factor(xb%ids-n,j) = xb%map_factor(xb%ide+1-n,j)
27 xb%coefx(xb%ids-n,j) = xb%coefx(xb%ide+1-n,j)
28 xb%coefy(xb%ids-n,j) = xb%coefy(xb%ide+1-n,j)
29 xb%w(xb%ids-n,j,k) = xb%w(xb%ide+1-n,j,k)
30 ! xb%h(xb%ids-n,j,k) = xb%h(xb%ide+1-n,j,k)
31
32 xb%lat(xb%ide+n,j) = xb%lat(xb%ids-1+n,j)
33 xb%lon(xb%ide+n,j) = xb%lon(xb%ids-1+n,j)
34 xb%cori(xb%ide+n,j) = xb%cori(xb%ids-1+n,j)
35 xb%terr(xb%ide+n,j) = xb%terr(xb%ids-1+n,j)
36 xb%psfc(xb%ide+n,j) = xb%psfc(xb%ids-1+n,j)
37 xb%map_factor(xb%ide+n,j) = xb%map_factor(xb%ids-1+n,j)
38 xb%coefx(xb%ide+n,j) = xb%coefx(xb%ids-1+n,j)
39 xb%coefy(xb%ide+n,j) = xb%coefy(xb%ids-1+n,j)
40 xb%w(xb%ide+n,j,k) = xb%w(xb%ids-1+n,j,k)
41 ! xb%h(xb%ide+n,j,k) = xb%h(xb%ids-1+n,j,k)
42
43 ! Zhiquan Liu add some RTTOV variables
44 !--------------------------------------
45 xb%t2(xb%ide+n,j) = xb%t2(xb%ids-1+n,j)
46 xb%q2(xb%ide+n,j) = xb%q2(xb%ids-1+n,j)
47 xb%u10(xb%ide+n,j) = xb%u10(xb%ids-1+n,j)
48 xb%v10(xb%ide+n,j) = xb%v10(xb%ids-1+n,j)
49 xb%tsk(xb%ide+n,j) = xb%tsk(xb%ids-1+n,j)
50 xb%tgrn(xb%ide+n,j) = xb%tgrn(xb%ids-1+n,j)
51 xb%landmask(xb%ide+n,j) = xb%landmask(xb%ids-1+n,j)
52 xb%snow(xb%ide+n,j) = xb%snow(xb%ids-1+n,j)
53 xb%xland(xb%ide+n,j) = xb%xland(xb%ids-1+n,j)
54
55 xb%smois(xb%ide+n,j) = xb%smois(xb%ids-1+n,j)
56 xb%tslb(xb%ide+n,j) = xb%tslb(xb%ids-1+n,j)
57 xb%xice(xb%ide+n,j) = xb%xice(xb%ids-1+n,j)
58 xb%ivgtyp(xb%ide+n,j) = xb%ivgtyp(xb%ids-1+n,j)
59 xb%isltyp(xb%ide+n,j) = xb%isltyp(xb%ids-1+n,j)
60 xb%vegfra(xb%ide+n,j) = xb%vegfra(xb%ids-1+n,j)
61 xb%snowh(xb%ide+n,j) = xb%snowh(xb%ids-1+n,j)
62
63 end do
64 end do
65
66 ! 3d
67 do k=xb%kts, xb%kte
68 do j=xb%jms, xb%jme
69 do n=1,bdyzone
70 xb%h(xb%ids-n,j,k) = xb%h(xb%ide+1-n,j,k)
71 xb%u(xb%ids-n,j,k) = xb%u(xb%ide+1-n,j,k)
72 xb%v(xb%ids-n,j,k) = xb%v(xb%ide+1-n,j,k)
73 xb%w(xb%ids-n,j,k) = xb%w(xb%ide+1-n,j,k)
74 xb%t(xb%ids-n,j,k) = xb%t(xb%ide+1-n,j,k)
75 xb%p(xb%ids-n,j,k) = xb%p(xb%ide+1-n,j,k)
76 xb%q(xb%ids-n,j,k) = xb%q(xb%ide+1-n,j,k)
77 xb%qs(xb%ids-n,j,k) = xb%qs(xb%ide+1-n,j,k)
78 xb%es(xb%ids-n,j,k) = xb%es(xb%ide+1-n,j,k)
79 xb%rh(xb%ids-n,j,k) = xb%rh(xb%ide+1-n,j,k)
80 xb%td(xb%ids-n,j,k) = xb%td(xb%ide+1-n,j,k)
81 xb%rho(xb%ids-n,j,k)= xb%rho(xb%ide+1-n,j,k)
82
83 xb%h(xb%ide+n,j,k) = xb%h(xb%ids-1+n,j,k)
84 xb%u(xb%ide+n,j,k) = xb%u(xb%ids-1+n,j,k)
85 xb%v(xb%ide+n,j,k) = xb%v(xb%ids-1+n,j,k)
86 xb%w(xb%ide+n,j,k) = xb%w(xb%ids-1+n,j,k)
87 xb%t(xb%ide+n,j,k) = xb%t(xb%ids-1+n,j,k)
88 xb%p(xb%ide+n,j,k) = xb%p(xb%ids-1+n,j,k)
89 xb%q(xb%ide+n,j,k) = xb%q(xb%ids-1+n,j,k)
90 xb%qs(xb%ide+n,j,k) = xb%qs(xb%ids-1+n,j,k)
91 xb%es(xb%ide+n,j,k) = xb%es(xb%ids-1+n,j,k)
92 xb%rh(xb%ide+n,j,k) = xb%rh(xb%ids-1+n,j,k)
93 xb%td(xb%ide+n,j,k) = xb%td(xb%ids-1+n,j,k)
94 xb%rho(xb%ide+n,j,k) = xb%rho(xb%ids-1+n,j,k)
95 end do
96 end do
97 end do
98
99 end subroutine da_set_boundary_xb
100
101