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