1 |
|
|
MODULE wx_pbl_mod |
2 |
|
|
! |
3 |
|
|
! Split Planetary Boundary Layer |
4 |
|
|
! |
5 |
|
|
! This module manages the splitting of the boundary layer between two regions; the (w) |
6 |
|
|
! region (inside cold pools) and the (x) region (outside cold pools) |
7 |
|
|
! |
8 |
|
|
USE dimphy |
9 |
|
|
|
10 |
|
|
IMPLICIT NONE |
11 |
|
|
|
12 |
|
|
CONTAINS |
13 |
|
|
! |
14 |
|
|
!**************************************************************************************** |
15 |
|
|
! |
16 |
|
|
SUBROUTINE wx_pbl0_merge(knon, ypplay, ypaprs, & |
17 |
|
|
sigw, dTs_forcing, dqs_forcing, & |
18 |
|
|
yt_x, yt_w, yq_x, yq_w, & |
19 |
|
|
yu_x, yu_w, yv_x, yv_w, & |
20 |
|
|
ycdragh_x, ycdragh_w, ycdragq_x, ycdragq_w, & |
21 |
|
|
ycdragm_x, ycdragm_w, & |
22 |
|
|
AcoefT_x, AcoefT_w, AcoefQ_x, AcoefQ_w, & |
23 |
|
|
AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, & |
24 |
|
|
BcoefT_x, BcoefT_w, BcoefQ_x, BcoefQ_w, & |
25 |
|
|
BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, & |
26 |
|
|
AcoefT, AcoefQ, AcoefU, AcoefV, & |
27 |
|
|
BcoefT, BcoefQ, BcoefU, BcoefV, & |
28 |
|
|
ycdragh, ycdragq, ycdragm, & |
29 |
|
|
yt1, yq1, yu1, yv1 & |
30 |
|
|
) |
31 |
|
|
! |
32 |
|
|
|
33 |
|
|
USE wx_pbl_var_mod |
34 |
|
|
|
35 |
|
|
USE print_control_mod, ONLY: prt_level,lunout |
36 |
|
|
USE indice_sol_mod, ONLY: is_oce |
37 |
|
|
! |
38 |
|
|
INCLUDE "YOMCST.h" |
39 |
|
|
INCLUDE "FCTTRE.h" |
40 |
|
|
INCLUDE "YOETHF.h" |
41 |
|
|
INCLUDE "clesphys.h" |
42 |
|
|
! |
43 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
44 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypplay ! mid-layer pressure (Pa) |
45 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypaprs ! pressure at layer interfaces (pa) |
46 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: sigw ! cold pools fractional area |
47 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dTs_forcing ! forced temperature difference (w)-(x) |
48 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dqs_forcing ! forced humidity difference (w)-(x) |
49 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: yt_x, yt_w, yq_x, yq_w |
50 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: yu_x, yu_w, yv_x, yv_w |
51 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: ycdragh_x, ycdragh_w, ycdragq_x, ycdragq_w |
52 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: ycdragm_x, ycdragm_w |
53 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT_x, AcoefT_w, AcoefQ_x, AcoefQ_w |
54 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w |
55 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: BcoefT_x, BcoefT_w, BcoefQ_x, BcoefQ_w |
56 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w |
57 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: AcoefT, AcoefQ, AcoefU, AcoefV |
58 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: BcoefT, BcoefQ, BcoefU, BcoefV |
59 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: ycdragh, ycdragq, ycdragm |
60 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: yt1, yq1, yu1, yv1 ! Apparent T, q, u, v at first level, as |
61 |
|
|
!seen by surface modules |
62 |
|
|
! |
63 |
|
|
! Local variables |
64 |
|
|
INTEGER :: j |
65 |
|
|
REAL :: dd_Kh |
66 |
|
|
REAL :: dd_Kq |
67 |
|
|
REAL :: dd_Km |
68 |
|
|
REAL :: dd_u |
69 |
|
|
REAL :: dd_v |
70 |
|
|
REAL :: dd_t |
71 |
|
|
REAL :: dd_q |
72 |
|
|
! |
73 |
|
|
REAL :: LambdaTs, LambdaQs, LambdaUs, LambdaVs |
74 |
|
|
! |
75 |
|
|
REAL, DIMENSION(knon) :: sigx ! fractional area of (x) region |
76 |
|
|
! |
77 |
|
|
! |
78 |
|
|
sigx(1:knon) = 1.-sigw(1:knon) |
79 |
|
|
! |
80 |
|
|
! |
81 |
|
|
DO j=1,knon |
82 |
|
|
! |
83 |
|
|
! |
84 |
|
|
! Compute w-x differences |
85 |
|
|
dd_t = yt_w(j,1) - yt_x(j,1) |
86 |
|
|
dd_q = yq_w(j,1) - yq_x(j,1) |
87 |
|
|
dd_u = yu_w(j,1) - yu_x(j,1) |
88 |
|
|
dd_v = yv_w(j,1) - yv_x(j,1) |
89 |
|
|
! |
90 |
|
|
! Merged exchange coefficients |
91 |
|
|
dd_Kh = Kech_h_w(j) - Kech_h_x(j) |
92 |
|
|
dd_Kq = Kech_q_w(j) - Kech_q_x(j) |
93 |
|
|
dd_Km = Kech_m_w(j) - Kech_m_x(j) |
94 |
|
|
! |
95 |
|
|
LambdaTs = dd_KTp(j)/Kech_Tp(j) |
96 |
|
|
LambdaQs = dd_KQs(j)/Kech_Qs(j) |
97 |
|
|
LambdaUs = dd_KUp(j)/Kech_Up(j) |
98 |
|
|
LambdaVs = dd_KVp(j)/Kech_Vp(j) |
99 |
|
|
! |
100 |
|
|
! Calcul des coef A, B \'equivalents dans la couche 1 |
101 |
|
|
! |
102 |
|
|
! The dTs_forcing and dqs_forcing terms are added for diagnostic purpose ; they should be zero in normal operation. |
103 |
|
|
AcoefT(j) = AcoefT_x(j) + sigw(j)*(1.+sigx(j)*LambdaTs)*(dd_AT(j) - C_p(j)*dTs_forcing(j)) |
104 |
|
|
AcoefQ(j) = AcoefQ_x(j) + sigw(j)*(1.+sigx(j)*LambdaQs)*(dd_AQ(j) - dqs_forcing(j)) |
105 |
|
|
AcoefU(j) = AcoefU_x(j) + sigw(j)*(1.+sigx(j)*LambdaUs)*dd_AU(j) |
106 |
|
|
AcoefV(j) = AcoefV_x(j) + sigw(j)*(1.+sigx(j)*LambdaVs)*dd_AV(j) |
107 |
|
|
! |
108 |
|
|
! |
109 |
|
|
!! BcoefT(j) = (sigw(j)*Kech_h_w(j)*Kech_T_pw(j)*BcoefT_w(j) + & |
110 |
|
|
!! sigx(j)*Kech_h_x(j)*Kech_T_px(j)*BcoefT_x(j) )/(Kech_h(j)*Kech_Tp(j)) |
111 |
|
|
!! BcoefQ(j) = (sigw(j)*Kech_q_w(j)*Kech_Q_pw(j)*BcoefQ_w(j) + & |
112 |
|
|
!! sigx(j)*Kech_q_x(j)*Kech_Q_px(j)*BcoefQ_x(j) )/(Kech_q(j)*Kech_Qp(j)) |
113 |
|
|
!! BcoefU(j) = (sigw(j)*Kech_m_w(j)*Kech_U_pw(j)*BcoefU_w(j) + & |
114 |
|
|
!! sigx(j)*Kech_m_x(j)*Kech_U_px(j)*BcoefU_x(j) )/(Kech_m(j)*Kech_Up(j)) |
115 |
|
|
!! BcoefV(j) = (sigw(j)*Kech_m_w(j)*Kech_V_pw(j)*BcoefV_w(j) + & |
116 |
|
|
!! sigx(j)*Kech_m_x(j)*Kech_V_px(j)*BcoefV_x(j) )/(Kech_m(j)*Kech_Vp(j)) |
117 |
|
|
! |
118 |
|
|
!! Print *,'YYYYpbl0: BcoefT_x, sigw, sigx, dd_Kh, dd_KTp, Kech_h_w ', & |
119 |
|
|
!! BcoefT_x, sigw, sigx, dd_Kh, dd_KTp, Kech_h_w |
120 |
|
|
!! Print *,'YYYYpbl0: Kech_T_pw, dd_BT, Kech_h, Kech_Tp ', & |
121 |
|
|
!! Kech_T_pw, dd_BT, Kech_h, Kech_Tp |
122 |
|
|
BcoefT(j) = BcoefT_x(j) + sigw(j)*(sigx(j)*dd_Kh*dd_KTp(j)*BcoefT_x(j) + & |
123 |
|
|
Kech_h_w(j)*Kech_T_pw(j)*dd_BT(j))/(Kech_h(j)*Kech_Tp(j)) |
124 |
|
|
BcoefQ(j) = BcoefQ_x(j) + sigw(j)*(sigx(j)*dd_Kq*dd_KQs(j)*BcoefQ_x(j) + & |
125 |
|
|
Kech_q_w(j)*Kech_Q_sw(j)*dd_BQ(j))/(Kech_q(j)*Kech_Qs(j)) |
126 |
|
|
BcoefU(j) = BcoefU_x(j) + sigw(j)*(sigx(j)*dd_Km*dd_KUp(j)*BcoefU_x(j) + & |
127 |
|
|
Kech_m_w(j)*Kech_U_pw(j)*dd_BU(j))/(Kech_m(j)*Kech_Up(j)) |
128 |
|
|
BcoefV(j) = BcoefV_x(j) + sigw(j)*(sigx(j)*dd_Km*dd_KVp(j)*BcoefV_x(j) + & |
129 |
|
|
Kech_m_w(j)*Kech_V_pw(j)*dd_BV(j))/(Kech_m(j)*Kech_Vp(j)) |
130 |
|
|
!>jyg |
131 |
|
|
! |
132 |
|
|
! |
133 |
|
|
! Calcul des cdrag \'equivalents dans la couche |
134 |
|
|
! |
135 |
|
|
ycdragm(j) = ycdragm_x(j) + sigw(j)*dd_Cdragm(j) |
136 |
|
|
ycdragh(j) = ycdragh_x(j) + sigw(j)*dd_Cdragh(j) |
137 |
|
|
ycdragq(j) = ycdragq_x(j) + sigw(j)*dd_Cdragq(j) |
138 |
|
|
! |
139 |
|
|
! Calcul de T, q, u et v \'equivalents dans la couche 1 |
140 |
|
|
!! yt1(j) = yt_x(j,1) + sigw(j)*dd_t*(1.+sigx(j)*dd_Kh/KCT) |
141 |
|
|
!! yq1(j) = yq_x(j,1) + sigw(j)*dd_q*(1.+sigx(j)*dd_Kh/KCQ) |
142 |
|
|
!! yu1(j) = yu_x(j,1) + sigw(j)*dd_u*(1.+sigx(j)*dd_Km/KCU) |
143 |
|
|
!! yv1(j) = yv_x(j,1) + sigw(j)*dd_v*(1.+sigx(j)*dd_Km/KCV) |
144 |
|
|
yt1(j) = yt_x(j,1) + sigw(j)*dd_t |
145 |
|
|
yq1(j) = yq_x(j,1) + sigw(j)*dd_q |
146 |
|
|
yu1(j) = yu_x(j,1) + sigw(j)*dd_u |
147 |
|
|
yv1(j) = yv_x(j,1) + sigw(j)*dd_v |
148 |
|
|
|
149 |
|
|
|
150 |
|
|
ENDDO |
151 |
|
|
|
152 |
|
|
RETURN |
153 |
|
|
|
154 |
|
|
END SUBROUTINE wx_pbl0_merge |
155 |
|
|
|
156 |
|
|
SUBROUTINE wx_pbl_dts_merge(knon, dtime, ypplay, ypaprs, & |
157 |
|
|
sigw, beta, wcstar, wdens, & |
158 |
|
|
AT_x, AT_w, & |
159 |
|
|
BT_x, BT_w, & |
160 |
|
|
AcoefT0, AcoefQ0, BcoefT0, BcoefQ0, & |
161 |
|
|
AcoefT, AcoefQ, BcoefT, BcoefQ, & |
162 |
|
|
HTphiT_b, dd_HTphiT, HTphiQ_b, dd_HTphiQ, HTRn_b, dd_HTRn, & |
163 |
|
|
phiT0_b, dphiT0, phiQ0_b, dphiQ0, Rn0_b, dRn0, & |
164 |
|
|
g_T, g_Q, & |
165 |
|
|
Gamma_phiT, Gamma_phiQ, & |
166 |
|
|
dTs_ins, dqsatsrf_ins & |
167 |
|
|
) |
168 |
|
|
! |
169 |
|
|
|
170 |
|
|
USE wx_pbl_var_mod |
171 |
|
|
|
172 |
|
|
USE print_control_mod, ONLY: prt_level,lunout |
173 |
|
|
! |
174 |
|
|
INCLUDE "YOMCST.h" |
175 |
|
|
INCLUDE "FCTTRE.h" |
176 |
|
|
INCLUDE "YOETHF.h" |
177 |
|
|
! |
178 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
179 |
|
|
REAL, INTENT(IN) :: dtime ! time step size (s) |
180 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypplay ! mid-layer pressure (Pa) |
181 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypaprs ! pressure at layer interfaces (pa) |
182 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: sigw ! cold pool fractional area |
183 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: beta ! evaporation by potential evaporation |
184 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: wcstar ! cold pool gust front speed |
185 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: wdens ! cold pool number density |
186 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AT_x, AT_w |
187 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: BT_x, BT_w |
188 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT0, AcoefQ0, BcoefT0, BcoefQ0 |
189 |
|
|
! |
190 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: AcoefT, AcoefQ, BcoefT, BcoefQ |
191 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: HTphiT_b, dd_HTphiT, HTphiQ_b, dd_HTphiQ, HTRn_b, dd_HTRn |
192 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: phiT0_b, dphiT0, phiQ0_b, dphiQ0, Rn0_b, dRn0 |
193 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: g_T, g_Q |
194 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: Gamma_phiT, Gamma_phiQ |
195 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: dTs_ins, dqsatsrf_ins |
196 |
|
|
! |
197 |
|
|
! Local variables |
198 |
|
|
REAL, DIMENSION(knon) :: qsat_x |
199 |
|
|
REAL, DIMENSION(knon) :: qsat_w |
200 |
|
|
REAL, DIMENSION(knon) :: dqsatdT_x |
201 |
|
|
REAL, DIMENSION(knon) :: dqsatdT_w |
202 |
|
|
! |
203 |
|
|
REAL, DIMENSION(knon) :: T10_x |
204 |
|
|
REAL, DIMENSION(knon) :: T10_w |
205 |
|
|
REAL, DIMENSION(knon) :: phiT0_x |
206 |
|
|
REAL, DIMENSION(knon) :: phiT0_w |
207 |
|
|
REAL, DIMENSION(knon) :: phiQ0_x |
208 |
|
|
REAL, DIMENSION(knon) :: phiQ0_w |
209 |
|
|
REAL, DIMENSION(knon) :: Rn0_x |
210 |
|
|
REAL, DIMENSION(knon) :: Rn0_w |
211 |
|
|
REAL, DIMENSION(knon) :: Rp1_x |
212 |
|
|
REAL, DIMENSION(knon) :: Rp1_w |
213 |
|
|
REAL, DIMENSION(knon) :: Rps_x |
214 |
|
|
REAL, DIMENSION(knon) :: Rps_w |
215 |
|
|
! |
216 |
|
|
REAL, DIMENSION(knon) :: HTphiT_x |
217 |
|
|
REAL, DIMENSION(knon) :: HTphiT_w |
218 |
|
|
REAL, DIMENSION(knon) :: HTphiQ_x |
219 |
|
|
REAL, DIMENSION(knon) :: HTphiQ_w |
220 |
|
|
REAL, DIMENSION(knon) :: HTRn_x |
221 |
|
|
REAL, DIMENSION(knon) :: HTRn_w |
222 |
|
|
! |
223 |
|
|
REAL, DIMENSION(knon) :: HQphiT_x |
224 |
|
|
REAL, DIMENSION(knon) :: HQphiT_w |
225 |
|
|
REAL, DIMENSION(knon) :: HQphiQ_x |
226 |
|
|
REAL, DIMENSION(knon) :: HQphiQ_w |
227 |
|
|
REAL, DIMENSION(knon) :: HQRn_x |
228 |
|
|
REAL, DIMENSION(knon) :: HQRn_w |
229 |
|
|
! |
230 |
|
|
REAL, DIMENSION(knon) :: HQphiT_b |
231 |
|
|
REAL, DIMENSION(knon) :: dd_HQphiT |
232 |
|
|
REAL, DIMENSION(knon) :: HQphiQ_b |
233 |
|
|
REAL, DIMENSION(knon) :: dd_HQphiQ |
234 |
|
|
REAL, DIMENSION(knon) :: HQRn_b |
235 |
|
|
REAL, DIMENSION(knon) :: dd_HQRn |
236 |
|
|
! |
237 |
|
|
|
238 |
|
|
REAL, DIMENSION(knon) :: sigx |
239 |
|
|
! |
240 |
|
|
REAL, DIMENSION(knon) :: Ts, T1 |
241 |
|
|
!!! REAL, DIMENSION(knon) :: qsat, dqsat_dT |
242 |
|
|
!!! REAL, DIMENSION(knon) :: phiT0 |
243 |
|
|
! |
244 |
|
|
!!! REAL, DIMENSION(knon) :: Cp, Lv |
245 |
|
|
REAL, DIMENSION(knon) :: tau, Inert |
246 |
|
|
! |
247 |
|
|
REAL :: dd_Kh |
248 |
|
|
REAL :: zdelta, zcvm5, zcor |
249 |
|
|
REAL :: qsat |
250 |
|
|
! |
251 |
|
|
INTEGER :: j |
252 |
|
|
|
253 |
|
|
|
254 |
|
|
!---------------------------------------------------------------------------- |
255 |
|
|
! Reference state |
256 |
|
|
! --------------- |
257 |
|
|
! dqsat_dT_w = dqsat_dT(Ts0_w) dqsat_dT_x = dqsat_dT(Ts0_x) |
258 |
|
|
! T10_w = (AT_w/Cp - Kech_T_w BT_w dtime Ts0_w)/(1 - Kech_T_w BT_w dtime) |
259 |
|
|
! T10_x = (AT_x/Cp - Kech_T_x BT_x dtime Ts0_x)/(1 - Kech_T_x BT_x dtime) |
260 |
|
|
! phiT0_w = Kech_T_pw (AT_w - Cp Ts0_w) phiT0_x = Kech_T_px (AT_x - Cp Ts0_x) |
261 |
|
|
! phiQ0_w = Kech_Q_sw (beta AQ_w - qsatsrf0_w) phiQ0_x = Kech_Q_sx (beta AQ_x - qsatsrf0_x) |
262 |
|
|
! Rn0_w = eps_1 Rsigma T10_w^4 - Rsigma Ts0_w^4 Rn0_x = eps_1 Rsigma T10_x^4 - Rsigma Ts0_x^4 |
263 |
|
|
! Rp1_w = 4 eps_1 Rsigma T10_w^3 Rp1_x = 4 eps_1 Rsigma T10_x^3 |
264 |
|
|
! Rps_w = 4 Rsigma Ts0_w^3 Rps_x = 4 Rsigma Ts0_x^3 |
265 |
|
|
! |
266 |
|
|
! phiT0_b = sigw phiT0_w + sigx phiT0_x |
267 |
|
|
! dphiT0 = phiT0_w - phiT0_x |
268 |
|
|
! phiQ0_b = sigw phiQ0_w + sigx phiQ0_x |
269 |
|
|
! dphiQ0 = phiQ0_w - phiQ0_x |
270 |
|
|
! Rn0_b = sigw Rn0_w + sigx Rn0_x |
271 |
|
|
dRn0 = Rn0_w - Rn0_x |
272 |
|
|
! |
273 |
|
|
! |
274 |
|
|
!---------------------------------------------------------------------------- |
275 |
|
|
! Elementary enthalpy equations |
276 |
|
|
! ----------------------------- |
277 |
|
|
! phiT_w = phiT0_w - HTphiT_w (Ts_w-Ts0_w) phiT_x = phiT0_x - HTphiT_x (Ts_x-Ts0_x) |
278 |
|
|
! phiQ_w = phiQ0_w - HTphiQ_w (Ts_w-Ts0_w) phiQ_x = phiQ0_x - HTphiQ_x (Ts_x-Ts0_x) |
279 |
|
|
! Rn_w = Rn0_w - HTRn_w (Ts_w-Ts0_w) Rn_x = Rn0_x - HTRn_x (Ts_x-Ts0_x) |
280 |
|
|
! DFlux_DT coefficients |
281 |
|
|
! --------------------- |
282 |
|
|
! Heat flux equation |
283 |
|
|
! HTphiT_w = Cp Kech_T_pw HTphiT_x = Cp Kech_T_px |
284 |
|
|
! Moisture flux equation |
285 |
|
|
! HTphiQ_w = beta Kech_Q_sw dqsat_dT_w HTphiQ_x = beta Kech_Q_sx dqsat_dT_x |
286 |
|
|
! Radiation equation |
287 |
|
|
! HTRn_w = Rp1_w Kech_T_pw BcoefT_w dtime + Rps_w HTRn_x = Rp1_x Kech_T_px BcoefT_x dtime + Rps_x |
288 |
|
|
! |
289 |
|
|
!---------------------------------------------------------------------------- |
290 |
|
|
! Elementary moisture equations |
291 |
|
|
! ----------------------------- |
292 |
|
|
! beta Ts_w = beta Ts0_w + QQ_w (qsatsrf_w-qsatsrf0_w) beta Ts_x = beta Ts0_x + QQ_x (qsatsrf_x-qsatsrf0_x) |
293 |
|
|
! beta phiT_w = beta phiT0_w - HQphiT_w (qsatsrf_w-qsatsrf0_w) beta phiQ_x = beta phiQ0_x - HTphiQ_x (qsatsrf_x-qsatsrf0_x) |
294 |
|
|
! beta phiQ_w = beta phiQ0_w - HQphiQ_w (qsatsrf_w-qsatsrf0_w) beta phiQ_x = beta phiQ0_x - HTphiQ_x (qsatsrf_x-qsatsrf0_x) |
295 |
|
|
! beta Rn_w = beta Rn0_w - HQRn_w (qsatsrf_w-qsatsrf0_w) beta Rn_x = beta Rn0_x - HTRn_x (qsatsrf_x-qsatsrf0_x) |
296 |
|
|
! DFluxDQ coefficients |
297 |
|
|
! --------------------- |
298 |
|
|
! dqsat_dT equation |
299 |
|
|
! QQ_w = 1. / dqsat_dT_w QQ_x = 1. / dqsat_dT_x |
300 |
|
|
! Heat flux equation |
301 |
|
|
! HQphiT_w = Cp Kech_T_pw QQ_w HQphiT_x = Cp Kech_T_px QQ_x |
302 |
|
|
! Moisture flux equation |
303 |
|
|
! HQphiQ_w = beta Kech_Q_sw HQphiQ_x = beta Kech_Q_sx |
304 |
|
|
! Radiation equation |
305 |
|
|
! HQRn_w = (Rp1_w Kech_T_pw BcoefT_w dtime + Rps_w) QQ_w |
306 |
|
|
! HQRn_x = (Rp1_x Kech_T_px BcoefT_x dtime + Rps_x) QQ_x |
307 |
|
|
! |
308 |
|
|
!---------------------------------------------------------------------------- |
309 |
|
|
! Mean values and w-x differences |
310 |
|
|
! ------------------------------- |
311 |
|
|
! HTphiT_b = sigw HTphiT_w + sigx HTphiT_x dd_HTphiT = HTphiT_w - HTphiT_x |
312 |
|
|
! HTphiQ_b = sigw HTphiQ_w + sigx HTphiQ_x dd_HTphiQ = HTphiQ_w - HTphiQ_x |
313 |
|
|
! HTRn_b = sigw HTRn_w + sigx HTRn_x dd_HTRn = HTRn_w - HTRn_x |
314 |
|
|
! |
315 |
|
|
! QQ_b = sigw QQ_w + sigx QQ_x dd_QQ = QQ_w - QQ_x |
316 |
|
|
! HQphiT_b = sigw HQphiT_w + sigx HQphiT_x dd_HQphiT = HQphiT_w - HQphiT_x |
317 |
|
|
! HQphiQ_b = sigw HQphiQ_w + sigx HQphiQ_x dd_HQphiQ = HQphiQ_w - HQphiQ_x |
318 |
|
|
! HQRn_b = sigw HQRn_w + sigx HQRn_x dd_HQRn = HQRn_w - HQRn_x |
319 |
|
|
! |
320 |
|
|
!---------------------------------------------------------------------------- |
321 |
|
|
! Equations |
322 |
|
|
! --------- |
323 |
|
|
! (1 - g_T) dTs = dTs_ins + Gamma_phiT phiT |
324 |
|
|
! (1 - g_Q) dqsatsrf = dqsatsrf_ins + Gamma_phiQ phiQ |
325 |
|
|
! |
326 |
|
|
! Feedback Gains |
327 |
|
|
! -------------- |
328 |
|
|
! g_T = - (sqrt(tau)/I) [ HTphiT_b + Lv HTphiQ_b + HTRn_b + & |
329 |
|
|
! (dd_HTphiT + Lv dd_HTphiQ + dd_HTRn) (sigx - sigw - sigw sigx dd_HTphiT/HTphiT_b) ] |
330 |
|
|
! g_Q = - (sqrt(tau)/(I QQ_b)) ( HQphiT_b + Lv HQphiQ_b + HQRn_b ) - & |
331 |
|
|
! (sigx - sigw - sigw sigx dd_HQphiQ/HQphiQ_b) & |
332 |
|
|
! [ dd_QQ/QQ_b + (sqrt(tau)/(I QQ_b))(dd_HQphiT + Lv dd_HQphiQ + dd_HQRn) ] |
333 |
|
|
! |
334 |
|
|
! Ts, qs Coupling coefficients / |
335 |
|
|
! ---------------------------- |
336 |
|
|
! Gamma_phiT = (sqrt(tau)/(I HTphiT_b)) (dd_HTphiT + Lv dd_HTphiQ + dd_HTRn) |
337 |
|
|
! Gamma_phiQ = (1/(HQphiQ_b QQ_b)) [ dd_QQ + (sqrt(tau)/(I )) (dd_HQphiT + Lv dd_HQphiQ + dd_HQRn) ] |
338 |
|
|
! |
339 |
|
|
! Insensitive changes |
340 |
|
|
! ------------------- |
341 |
|
|
! dTs_ins = (1 - g_T) dTs0 - Gamma_phiT phiT0_b |
342 |
|
|
! dqsatsrf_ins = (1 - g_Q) dqsatsrf0 - Gamma_phiQ phiQ0_b |
343 |
|
|
! |
344 |
|
|
!---------------------------------------------------------------------------- |
345 |
|
|
! Effective coefficients Acoef and Bcoef |
346 |
|
|
! -------------------------------------- |
347 |
|
|
! Equations |
348 |
|
|
! --------- |
349 |
|
|
! Cp Ta = AcoefT + BcoefT phiT dtime |
350 |
|
|
! qa = AcoefQ + BcoefQ phiQ dtime |
351 |
|
|
! Coefficients |
352 |
|
|
! ------------ |
353 |
|
|
! AcoefT = AcoefT0 - sigw sigx (dd_KTp/Kech_Tp) Cp dTs_ins/(1 - g_T) |
354 |
|
|
! BcoefT = BcoefT0 - sigw sigx (dd_KTp/Kech_Tp) Cp Gamma_phiT/(1 - g_T)/dtime |
355 |
|
|
! |
356 |
|
|
! AcoefQ = AcoefQ0 - sigw sigx (dd_KQp/Kech_Qp) dqs_ins/(1 - g_Q) |
357 |
|
|
! BcoefQ = BcoefQ0 - sigw sigx (dd_KQp/Kech_Qp) Gamma_phiq/(1 - g_Q)/dtime |
358 |
|
|
! |
359 |
|
|
!============================================================================== |
360 |
|
|
! |
361 |
|
|
! |
362 |
|
|
! Parameters |
363 |
|
|
! ---------- |
364 |
|
|
Inert(1:knon) = 2000. |
365 |
|
|
tau(1:knon) = sqrt(sigw(1:knon)/max(rpi*wdens(1:knon)*wcstar(1:knon)**2 , & |
366 |
|
|
sigw(1:knon)*1.e-12,smallestreal)) |
367 |
|
|
sigx(1:knon) = 1.-sigw(1:knon) |
368 |
|
|
!! Compute Cp, Lv, qsat, dqsat_dT. |
369 |
|
|
! C_p(1:knon) = RCpd |
370 |
|
|
! L_v(1:knon) = RLvtt |
371 |
|
|
! |
372 |
|
|
! print *,' AAAA wx_pbl_dTs, C_p(j), qsat0(j), Ts0(j) : ', C_p(:), qsat0(:), Ts0(:) |
373 |
|
|
! |
374 |
|
|
! |
375 |
|
|
T10_x(1:knon) = (AT_x(1:knon)/C_p(1:knon) - Kech_h_x(1:knon)*BT_x(1:knon)*dtime*Ts0_x(1:knon))/ & |
376 |
|
|
(1 - Kech_h_x(1:knon)*BT_x(1:knon)*dtime) |
377 |
|
|
T10_w(1:knon) = (AT_w(1:knon)/C_p(1:knon) - Kech_h_w(1:knon)*BT_w(1:knon)*dtime*Ts0_w(1:knon))/ & |
378 |
|
|
(1 - Kech_h_w(1:knon)*BT_w(1:knon)*dtime) |
379 |
|
|
! |
380 |
|
|
phiT0_x(1:knon) = Kech_T_px(1:knon)*(AT_x(1:knon) - C_p(1:knon)*Ts0_x(1:knon)) |
381 |
|
|
phiT0_w(1:knon) = Kech_T_pw(1:knon)*(AT_w(1:knon) - C_p(1:knon)*Ts0_w(1:knon)) |
382 |
|
|
! |
383 |
|
|
phiQ0_x(1:knon) = Kech_Q_sx(1:knon)*(beta(1:knon)*AQ_x(1:knon) - qsatsrf0_x(1:knon)) |
384 |
|
|
phiQ0_w(1:knon) = Kech_Q_sw(1:knon)*(beta(1:knon)*AQ_w(1:knon) - qsatsrf0_w(1:knon)) |
385 |
|
|
! |
386 |
|
|
Rn0_x(1:knon) = eps_1*Rsigma*T10_x(1:knon)**4 - Rsigma*Ts0_x(1:knon)**4 |
387 |
|
|
Rn0_w(1:knon) = eps_1*Rsigma*T10_w(1:knon)**4 - Rsigma*Ts0_w(1:knon)**4 |
388 |
|
|
! |
389 |
|
|
Rp1_x(1:knon) = 4*eps_1*Rsigma*T10_x(1:knon)**3 |
390 |
|
|
Rp1_w(1:knon) = 4*eps_1*Rsigma*T10_w(1:knon)**3 |
391 |
|
|
! |
392 |
|
|
Rps_x(1:knon) = 4*Rsigma*Ts0_x(1:knon)**3 |
393 |
|
|
Rps_w(1:knon) = 4*Rsigma*Ts0_w(1:knon)**3 |
394 |
|
|
! |
395 |
|
|
! DFlux_DT coefficients |
396 |
|
|
! --------------------- |
397 |
|
|
! Heat flux equation |
398 |
|
|
HTphiT_x(1:knon) = C_p(1:knon)*Kech_T_px(1:knon) |
399 |
|
|
HTphiT_w(1:knon) = C_p(1:knon)*Kech_T_pw(1:knon) |
400 |
|
|
! Moisture flux equation |
401 |
|
|
HTphiQ_x(1:knon) = beta(1:knon)*Kech_Q_sx(1:knon)*dqsatdT0_x(1:knon) |
402 |
|
|
HTphiQ_w(1:knon) = beta(1:knon)*Kech_Q_sw(1:knon)*dqsatdT0_w(1:knon) |
403 |
|
|
! Radiation equation |
404 |
|
|
HTRn_x(1:knon) = Rp1_x(1:knon)*Kech_T_px(1:knon)*BT_x(1:knon)*dtime + Rps_x(1:knon) |
405 |
|
|
HTRn_w(1:knon) = Rp1_w(1:knon)*Kech_T_pw(1:knon)*BT_w(1:knon)*dtime + Rps_w(1:knon) |
406 |
|
|
! |
407 |
|
|
! DFluxDQ coefficients |
408 |
|
|
! --------------------- |
409 |
|
|
! Heat flux equation |
410 |
|
|
HQphiT_x(1:knon) = C_p(1:knon)*Kech_T_px(1:knon)*QQ_x(1:knon) |
411 |
|
|
HQphiT_w(1:knon) = C_p(1:knon)*Kech_T_pw(1:knon)*QQ_w(1:knon) |
412 |
|
|
! Moisture flux equation |
413 |
|
|
HQphiQ_x(1:knon) = beta(1:knon)*Kech_Q_sx(1:knon) |
414 |
|
|
HQphiQ_w(1:knon) = beta(1:knon)*Kech_Q_sw(1:knon) |
415 |
|
|
! Radiation equation |
416 |
|
|
HQRn_x(1:knon) = (Rp1_x(1:knon)*Kech_T_px(1:knon)*BT_x(1:knon)*dtime + Rps_x(1:knon))*QQ_x(1:knon) |
417 |
|
|
HQRn_w(1:knon) = (Rp1_w(1:knon)*Kech_T_pw(1:knon)*BT_w(1:knon)*dtime + Rps_w(1:knon))*QQ_w(1:knon) |
418 |
|
|
! |
419 |
|
|
! Mean values and w-x differences |
420 |
|
|
! ------------------------------- |
421 |
|
|
phiT0_b(1:knon) = sigw(1:knon)*phiT0_w(1:knon) + sigx(1:knon)*phiT0_x(1:knon) |
422 |
|
|
phiQ0_b(1:knon) = sigw(1:knon)*phiQ0_w(1:knon) + sigx(1:knon)*phiQ0_x(1:knon) |
423 |
|
|
Rn0_b(1:knon) = sigw(1:knon)*Rn0_w(1:knon) + sigx(1:knon)*Rn0_x(1:knon) |
424 |
|
|
! |
425 |
|
|
dphiT0(1:knon) = phiT0_w(1:knon) - phiT0_x(1:knon) |
426 |
|
|
dphiQ0(1:knon) = phiQ0_w(1:knon) - phiQ0_x(1:knon) |
427 |
|
|
dRn0(1:knon) = Rn0_w(1:knon) - Rn0_x(1:knon) |
428 |
|
|
! |
429 |
|
|
HTphiT_b(1:knon) = sigw(1:knon)*HTphiT_w(1:knon) + sigx(1:knon)*HTphiT_x(1:knon) |
430 |
|
|
dd_HTphiT(1:knon) = HTphiT_w(1:knon) - HTphiT_x(1:knon) |
431 |
|
|
! |
432 |
|
|
HTphiQ_b(1:knon) = sigw(1:knon)*HTphiQ_w(1:knon) + sigx(1:knon)*HTphiQ_x(1:knon) |
433 |
|
|
dd_HTphiQ(1:knon) = HTphiQ_w(1:knon) - HTphiQ_x(1:knon) |
434 |
|
|
! |
435 |
|
|
HTRn_b(1:knon) = sigw(1:knon)*HTRn_w(1:knon) + sigx(1:knon)*HTRn_x(1:knon) |
436 |
|
|
dd_HTRn(1:knon) = HTRn_w(1:knon) - HTRn_x(1:knon) |
437 |
|
|
! |
438 |
|
|
HQphiT_b(1:knon) = sigw(1:knon)*HQphiT_w(1:knon) + sigx(1:knon)*HQphiT_x(1:knon) |
439 |
|
|
dd_HQphiT(1:knon) = HQphiT_w(1:knon) - HQphiT_x(1:knon) |
440 |
|
|
! |
441 |
|
|
HQphiQ_b(1:knon) = sigw(1:knon)*HQphiQ_w(1:knon) + sigx(1:knon)*HQphiQ_x(1:knon) |
442 |
|
|
dd_HQphiQ(1:knon) = HQphiQ_w - HQphiQ_x(1:knon) |
443 |
|
|
! |
444 |
|
|
HQRn_b(1:knon) = sigw(1:knon)*HQRn_w(1:knon) + sigx(1:knon)*HQRn_x(1:knon) |
445 |
|
|
dd_HQRn(1:knon) = HQRn_w(1:knon) - HQRn_x(1:knon) |
446 |
|
|
! |
447 |
|
|
! Feedback Gains |
448 |
|
|
! -------------- |
449 |
|
|
g_T(1:knon) = - (sqrt(tau(1:knon))/Inert(1:knon)) & |
450 |
|
|
* (HTphiT_b(1:knon) + L_v(1:knon)*HTphiQ_b(1:knon) + HTRn_b(1:knon) & |
451 |
|
|
+ (dd_HTphiT(1:knon) + L_v(1:knon)*dd_HTphiQ(1:knon) + dd_HTRn(1:knon)) & |
452 |
|
|
* (sigx(1:knon) - sigw(1:knon) - sigw(1:knon)*sigx(1:knon)*dd_HTphiT(1:knon)/HTphiT_b(1:knon)) ) |
453 |
|
|
! |
454 |
|
|
!!!! DO j = 1,knon |
455 |
|
|
!!!! IF (mod(j,20) .eq.0) THEN |
456 |
|
|
!!!! print *, ' j dd_QQ QQ_b dd_HQphiQ dd_HQphiT dd_HQRn HQphiQ_b HQphiT_b HQRn_b ' |
457 |
|
|
!!!! ENDIF |
458 |
|
|
!!!! print 1789, j, dd_QQ(j), QQ_b(j), dd_HQphiQ(j), dd_HQphiT(j), dd_HQRn(j), HQphiQ_b(j), HQphiT_b(j), HQRn_b(j) |
459 |
|
|
!!!! 1789 FORMAT( I4, 10(1X,E10.2)) |
460 |
|
|
!!!! ENDDO |
461 |
|
|
g_Q(1:knon) = - (dd_QQ(1:knon)/QQ_b(1:knon)) * & |
462 |
|
|
(sigx(1:knon)-sigw(1:knon)-sigw(1:knon)*sigx(1:knon)*dd_KQs(1:knon)/Kech_Qs(1:knon)) & |
463 |
|
|
- sqrt(tau(1:knon))/(Inert(1:knon)*QQ_b(1:knon)) * & |
464 |
|
|
( HQphiT_b(1:knon) + L_v(1:knon)*HQphiQ_b(1:knon) + HQRn_b(1:knon) + & |
465 |
|
|
(sigx(1:knon) - sigw(1:knon) - sigw(1:knon)*sigx(1:knon)*dd_KQs(1:knon)/Kech_Qs(1:knon)) * & |
466 |
|
|
(dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
467 |
|
|
|
468 |
|
|
!! g_Q(1:knon) = - (dd_QQ(1:knon)/QQ_b(1:knon)) * & |
469 |
|
|
!! (sigx(1:knon)-sigw(1:knon)-sigw(1:knon)*sigx(1:knon)*dd_HQphiQ(1:knon)/HQphiQ_b(1:knon)) & |
470 |
|
|
!! - sqrt(tau(1:knon))/(Inert(1:knon)*QQ_b(1:knon)) * & |
471 |
|
|
!! ( HQphiT_b(1:knon) + L_v(1:knon)*HQphiQ_b(1:knon) + HQRn_b(1:knon) + & |
472 |
|
|
!! (sigx(1:knon) - sigw(1:knon) - sigw(1:knon)*sigx(1:knon)*dd_HQphiQ(1:knon)/HQphiQ_b(1:knon)) * & |
473 |
|
|
!! (dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
474 |
|
|
|
475 |
|
|
!! g_Q(1:knon) = - (sqrt(tau(1:knon))/(Inert(1:knon)*QQ_b(1:knon))) * & |
476 |
|
|
!! ( HQphiT_b(1:knon) + L_v(1:knon)*HQphiQ_b(1:knon) + HQRn_b(1:knon) ) & |
477 |
|
|
!! - (sigx(1:knon) - sigw(1:knon) - sigw(1:knon)*sigx(1:knon)*dd_HQphiQ(1:knon)/HQphiQ_b(1:knon)) * & |
478 |
|
|
!! ( dd_QQ(1:knon)/QQ_b(1:knon) & |
479 |
|
|
!! + (sqrt(tau(1:knon))/(Inert(1:knon)*QQ_b(1:knon))) & |
480 |
|
|
!! * (dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
481 |
|
|
|
482 |
|
|
! Ts, qs Coupling coefficients / |
483 |
|
|
! ---------------------------- |
484 |
|
|
Gamma_phiT(1:knon) = (sqrt(tau(1:knon))/(Inert(1:knon)*HTphiT_b(1:knon))) & |
485 |
|
|
* (dd_HTphiT(1:knon) + L_v(1:knon)*dd_HTphiQ(1:knon) + dd_HTRn(1:knon)) |
486 |
|
|
! |
487 |
|
|
Gamma_phiQ(1:knon) = (1./(Kech_Qs(1:knon)*QQ_b(1:knon))) * & |
488 |
|
|
( dd_QQ(1:knon) & |
489 |
|
|
+ (sqrt(tau(1:knon))/(Inert(1:knon))) * & |
490 |
|
|
(dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
491 |
|
|
|
492 |
|
|
!! Gamma_phiQ(1:knon) = (beta(1:knon)/(HQphiQ_b(1:knon)*QQ_b(1:knon))) * & |
493 |
|
|
!! ( dd_QQ(1:knon) & |
494 |
|
|
!! + (sqrt(tau(1:knon))/(Inert(1:knon))) * & |
495 |
|
|
!! (dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
496 |
|
|
|
497 |
|
|
!! Gamma_phiQ(1:knon) = (1/(HQphiQ_b(1:knon)*QQ_b(1:knon))) & |
498 |
|
|
!! * ( dd_QQ(1:knon) & |
499 |
|
|
!! + (sqrt(tau(1:knon))/(Inert(1:knon))) & |
500 |
|
|
!! * (dd_HQphiT(1:knon) + L_v(1:knon)*dd_HQphiQ(1:knon) + dd_HQRn(1:knon)) ) |
501 |
|
|
! |
502 |
|
|
! Insensitive changes |
503 |
|
|
! ------------------- |
504 |
|
|
dTs_ins(1:knon) = (sqrt(tau(1:knon))/Inert(1:knon))* & |
505 |
|
|
(dphiT0(1:knon) + L_v(1:knon)*dphiQ0(1:knon) + dRn0(1:knon)) |
506 |
|
|
! |
507 |
|
|
dqsatsrf_ins(1:knon) = (beta(1:knon)/QQ_b(1:knon))*dTs_ins(1:knon) |
508 |
|
|
! |
509 |
|
|
IF (prt_level .Ge. 10) THEN |
510 |
|
|
print *,'wx_pbl_merge, tau ', tau |
511 |
|
|
print *,'wx_pbl_merge, AcoefT0 ', AcoefT0 |
512 |
|
|
print *,'wx_pbl_merge, AcoefQ0 ', AcoefQ0 |
513 |
|
|
print *,'wx_pbl_merge, BcoefT0 ', BcoefT0 |
514 |
|
|
print *,'wx_pbl_merge, BcoefQ0 ', BcoefQ0 |
515 |
|
|
print *,'wx_pbl_merge, qsat0_w, qsat0_x ', (qsat0_w(j), qsat0_x(j),j=1,knon) |
516 |
|
|
print *,'wx_pbl_merge, dqsatdT0_w, dqsatdT0_x ', (dqsatdT0_w(j), dqsatdT0_x(j),j=1,knon) |
517 |
|
|
ENDIF |
518 |
|
|
! |
519 |
|
|
!---------------------------------------------------------------------------- |
520 |
|
|
! |
521 |
|
|
!------------------------------------------------------------------------------ |
522 |
|
|
! |
523 |
|
|
! Effective coefficients Acoef and Bcoef |
524 |
|
|
! -------------------------------------- |
525 |
|
|
DO j = 1,knon |
526 |
|
|
AcoefT(j) = AcoefT0(j) - sigw(j)*sigx(j)*(dd_KTp(j)/Kech_Tp(j))*C_p(j)* & |
527 |
|
|
(dTs0(j) + (dTs_ins(j)-dTs0(j)-Gamma_phiT(j)*phiT0_b(j))/(1. - g_T(j))) |
528 |
|
|
BcoefT(j) = BcoefT0(j) - sigw(j)*sigx(j)*(dd_KTp(j)/Kech_Tp(j))*C_p(j)*Gamma_phiT(j)/(1. - g_T(j))/dtime |
529 |
|
|
|
530 |
|
|
AcoefQ(j) = AcoefQ0(j) - sigw(j)*sigx(j)*(dd_KQs(j)/Kech_Qs(j))* & |
531 |
|
|
(dqsatsrf0(j) + (dqsatsrf_ins(j)-(beta(j)/QQ_b(j))*dTs0(j)-Gamma_phiQ(j)*phiQ0_b(j))/(1 - g_Q(j)))/ & |
532 |
|
|
max(beta(j),1.e-4) |
533 |
|
|
BcoefQ(j) = BcoefQ0(j) - sigw(j)*sigx(j)*(dd_KQs(j)/Kech_Qs(j))*Gamma_phiQ(j)/(1 - g_Q(j))/ & |
534 |
|
|
(max(beta(j),1.e-4)*dtime) |
535 |
|
|
!! AcoefQ(j) = AcoefQ0(j) - sigw(j)*sigx(j)*(dd_KQs(j)/Kech_Qs(j))* & |
536 |
|
|
!! (dqsatsrf0(j) + (dqsatsrf_ins(j)-(beta(j)/QQ_b(j))*dTs0(j)-Gamma_phiQ(j)*phiQ0_b(j))/(1 - g_Q(j)))/ & |
537 |
|
|
!! beta(j) |
538 |
|
|
!! BcoefQ(j) = BcoefQ0(j) - sigw(j)*sigx(j)*(dd_KQs(j)/Kech_Qs(j))*Gamma_phiQ(j)/(1 - g_Q(j))/(beta(j)*dtime) |
539 |
|
|
ENDDO ! j = 1,knon |
540 |
|
|
|
541 |
|
|
IF (prt_level .Ge. 10) THEN |
542 |
|
|
print *,'wx_pbl_dts AAAA BcoefQ, BcoefQ0, sigw ', & |
543 |
|
|
BcoefQ, BcoefQ0, sigw |
544 |
|
|
print *,'wx_pbl_dts_merge, dTs_ins ', dTs_ins |
545 |
|
|
print *,'wx_pbl_dts_merge, dqs_ins ', dqsatsrf_ins |
546 |
|
|
ENDIF |
547 |
|
|
|
548 |
|
|
RETURN |
549 |
|
|
|
550 |
|
|
END SUBROUTINE wx_pbl_dts_merge |
551 |
|
|
|
552 |
|
|
SUBROUTINE wx_pbl_split(knon, nsrf, dtime, sigw, beta, iflag_split, & |
553 |
|
|
g_T, g_Q, & |
554 |
|
|
Gamma_phiT, Gamma_phiQ, & |
555 |
|
|
dTs_ins, dqsatsrf_ins, & |
556 |
|
|
phiT, phiQ, phiU, phiV, & |
557 |
|
|
!!!! HTRn_b, dd_HTRn, HTphiT_b, dd_HTphiT, & |
558 |
|
|
phiQ0_b, phiT0_b, & |
559 |
|
|
phiT_x, phiT_w, & |
560 |
|
|
phiQ_x, phiQ_w, & |
561 |
|
|
phiU_x, phiU_w, & |
562 |
|
|
phiV_x, phiV_w, & |
563 |
|
|
philat_x, philat_w, & |
564 |
|
|
!!!! Rn_b, dRn, & |
565 |
|
|
dqsatsrf, & |
566 |
|
|
dTs, delta_qsurf & |
567 |
|
|
) |
568 |
|
|
! |
569 |
|
|
|
570 |
|
|
USE wx_pbl_var_mod |
571 |
|
|
|
572 |
|
|
USE print_control_mod, ONLY: prt_level,lunout |
573 |
|
|
USE indice_sol_mod, ONLY: is_oce |
574 |
|
|
! |
575 |
|
|
INCLUDE "YOMCST.h" |
576 |
|
|
! |
577 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
578 |
|
|
INTEGER, INTENT(IN) :: nsrf ! surface type |
579 |
|
|
REAL, INTENT(IN) :: dtime ! time step size (s) |
580 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: sigw ! cold pools fractional area |
581 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: beta ! aridity factor |
582 |
|
|
INTEGER, INTENT(IN) :: iflag_split |
583 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: g_T, g_Q |
584 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: Gamma_phiT, Gamma_phiQ |
585 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dTs_ins, dqsatsrf_ins |
586 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT, phiQ, phiU, phiV |
587 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiQ0_b, phiT0_b |
588 |
|
|
! |
589 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: phiT_x, phiT_w |
590 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: phiQ_x, phiQ_w |
591 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: phiU_x, phiU_w |
592 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: phiV_x, phiV_w |
593 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: philat_x, philat_w |
594 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: dqsatsrf ! beta delta(qsat(Ts)) |
595 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: dTs ! Temperature difference at surface |
596 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: delta_qsurf |
597 |
|
|
! |
598 |
|
|
!! Local variables |
599 |
|
|
INTEGER :: j |
600 |
|
|
REAL, DIMENSION(knon) :: dphiT, dphiQ, dphiU, dphiV |
601 |
|
|
REAL, DIMENSION(knon) :: q1_x, q1_w |
602 |
|
|
! |
603 |
|
|
REAL, DIMENSION(knon) :: sigx ! fractional area of (x) region |
604 |
|
|
|
605 |
|
|
!---------------------------------------------------------------------------- |
606 |
|
|
! Equations |
607 |
|
|
! --------- |
608 |
|
|
!!!!!! (1 - g_T) dTs = dTs_ins + Gamma_phiT phiT |
609 |
|
|
!!!!!! (1 - g_Q) dqsatsrf = dqsatsrf_ins + Gamma_phiQ phiQ |
610 |
|
|
!!!!!! dphiT = (dd_KTp/KTp) phiT + ( dd_AT - C_p dTs)*KxKwTp/KTp |
611 |
|
|
!!!!!! dphiQ = (dd_KQs/KQs) phiQ + (beta dd_AQ - dqsatsrf )*KxKwQs/KQs |
612 |
|
|
!!!!!! dphiU = (dd_KUp/KUp) phiU + ( dd_AU )*KxKwUp/KUp |
613 |
|
|
!!!!!! dphiV = (dd_KVp/KVp) phiV + ( dd_AV )*KxKwVp/KVp |
614 |
|
|
! |
615 |
|
|
! (1 - g_T) (dTs-dTs0) = dTs_ins-dTs0 + Gamma_phiT (phiT-phiT0) |
616 |
|
|
! (1 - g_Q) dqsatsrf = dqsatsrf_ins + Gamma_phiQ phiQ |
617 |
|
|
! dphiT = (dd_KTp/KTp) phiT + ( dd_AT - C_p dTs)*KxKwTp/KTp |
618 |
|
|
! dphiQ = (dd_KQs/KQs) phiQ + (beta dd_AQ - dqsatsrf )*KxKwQs/KQs |
619 |
|
|
! dphiU = (dd_KUp/KUp) phiU + ( dd_AU )*KxKwUp/KUp |
620 |
|
|
! dphiV = (dd_KVp/KVp) phiV + ( dd_AV )*KxKwVp/KVp |
621 |
|
|
! |
622 |
|
|
!! |
623 |
|
|
sigx(:) = 1.-sigw(:) |
624 |
|
|
! |
625 |
|
|
! print *,' AAAA wx_pbl_split, C_p(j), qsat0(j), Ts0(j) : ', C_p(:), qsat0(:), Ts0(:) |
626 |
|
|
! |
627 |
|
|
IF (iflag_split .EQ. 2 .AND. nsrf .NE. is_oce) THEN |
628 |
|
|
! |
629 |
|
|
! Delta_tsurf and Delta_qsurf computation |
630 |
|
|
! ----------------------------------------- |
631 |
|
|
IF (prt_level >=10 ) THEN |
632 |
|
|
print *,' wx_pbl_split, dTs_ins, dTs0 , Gamma_phiT, g_T ', dTs_ins, dTs0, Gamma_phiT, g_T |
633 |
|
|
print *,' wx_pbl_split, dqsatsrf_ins, Gamma_phiQ, g_q ', dqsatsrf_ins, Gamma_phiQ, g_q |
634 |
|
|
ENDIF |
635 |
|
|
! |
636 |
|
|
DO j = 1,knon |
637 |
|
|
dTs(j) = dTs0(j) + (dTs_ins(j) - dTs0(j) + Gamma_phiT(j)*(phiT(j)-phiT0_b(j)) )/(1 - g_T(j)) |
638 |
|
|
dqsatsrf(j) = dqsatsrf0(j) + (dqsatsrf_ins(j) - (beta(j)/QQ_b(j))*dTs0(j) + & |
639 |
|
|
Gamma_phiQ(j)*(phiQ(j)-phiQ0_b(j)) )/(1 - g_Q(j)) |
640 |
|
|
ENDDO ! j = 1,knon |
641 |
|
|
! |
642 |
|
|
IF (prt_level >=10 ) THEN |
643 |
|
|
print *,' wx_pbl_split, dqsatsrf0, QQ_b ', dqsatsrf0, QQ_b |
644 |
|
|
print *,' wx_pbl_split, phiT0_b, phiT, dTs ', phiT0_b, phiT, dTs |
645 |
|
|
print *,' wx_pbl_split, phiQ0_b, phiQ, dqsatsrf ', phiQ0_b, phiQ, dqsatsrf |
646 |
|
|
ENDIF |
647 |
|
|
ELSE |
648 |
|
|
dTs(:) = 0. |
649 |
|
|
dqsatsrf(:) = 0. |
650 |
|
|
ENDIF ! (iflag_split .EQ. 2 .AND. nsrf .NE. is_oce) |
651 |
|
|
! |
652 |
|
|
DO j = 1,knon |
653 |
|
|
dphiT(j) = (phiT(j)*dd_KTp(j) + ( dd_AT(j) - C_p(j)*dTs(j))*KxKwTp(j))/Kech_Tp(j) |
654 |
|
|
dphiQ(j) = (phiQ(j)*dd_KQs(j) + (beta(j)*dd_AQ(j) - dqsatsrf(j))*KxKwQs(j))/Kech_Qs(j) |
655 |
|
|
dphiU(j) = (phiU(j)*dd_KUp(j) + dd_AU(j) *KxKwUp(j))/Kech_Up(j) |
656 |
|
|
dphiV(j) = (phiV(j)*dd_KVp(j) + dd_AV(j) *KxKwVp(j))/Kech_Vp(j) |
657 |
|
|
! |
658 |
|
|
phiT_x(j)=phiT(j) - sigw(j)*dphiT(j) |
659 |
|
|
phiT_w(j)=phiT(j) + sigx(j)*dphiT(j) |
660 |
|
|
phiQ_x(j)=phiQ(j) - sigw(j)*dphiQ(j) |
661 |
|
|
phiQ_w(j)=phiQ(j) + sigx(j)*dphiQ(j) |
662 |
|
|
phiU_x(j)=phiU(j) - sigw(j)*dphiU(j) |
663 |
|
|
phiU_w(j)=phiU(j) + sigx(j)*dphiU(j) |
664 |
|
|
phiV_x(j)=phiV(j) - sigw(j)*dphiV(j) |
665 |
|
|
phiV_w(j)=phiV(j) + sigx(j)*dphiV(j) |
666 |
|
|
! |
667 |
|
|
philat_x(j)=phiQ_x(j)*RLVTT |
668 |
|
|
philat_w(j)=phiQ_w(j)*RLVTT |
669 |
|
|
ENDDO ! j = 1,knon |
670 |
|
|
! |
671 |
|
|
DO j = 1,knon |
672 |
|
|
q1_x(j) = AQ_x(j) + BQ_x(j)*phiQ_x(j)*dtime |
673 |
|
|
q1_w(j) = AQ_w(j) + BQ_w(j)*phiQ_w(j)*dtime |
674 |
|
|
ENDDO ! j = 1,knon |
675 |
|
|
DO j = 1,knon |
676 |
|
|
delta_qsurf(j) = (1.-beta(j))*(q1_w(j) - q1_x(j)) + dqsatsrf(j) |
677 |
|
|
ENDDO ! j = 1,knon |
678 |
|
|
! |
679 |
|
|
!! Do j = 1,knon |
680 |
|
|
!! print *,'XXXsplit : j, q1_x(j), AQ_x(j), BQ_x(j), phiQ_x(j) ', j, q1_x(j), AQ_x(j), BQ_x(j), phiQ_x(j) |
681 |
|
|
!! print *,'XXXsplit : j, q1_w(j), AQ_w(j), BQ_w(j), phiQ_w(j) ', j, q1_w(j), AQ_w(j), BQ_w(j), phiQ_w(j) |
682 |
|
|
!! ENDDO |
683 |
|
|
! |
684 |
|
|
IF (prt_level >=10 ) THEN |
685 |
|
|
print *,' wx_pbl_split, phiT, dphiT, dTs ', phiT, dphiT, dTs |
686 |
|
|
print *,' wx_pbl_split, phiQ, dphiQ, dqsatsrf ', phiQ, dphiQ, dqsatsrf |
687 |
|
|
ENDIF |
688 |
|
|
! |
689 |
|
|
IF (prt_level >=10 ) THEN |
690 |
|
|
!! print *,' wx_pbl_split, verif dqsatsrf = beta dqsatdT0 dTs ' |
691 |
|
|
!! print *,' wx_pbl_split, dqsatsrf, dqsatdT0*dTs ', dqsatsrf, dqsatdT0*dTs |
692 |
|
|
ENDIF |
693 |
|
|
! |
694 |
|
|
!! IF (knon .NE. 0) THEN |
695 |
|
|
!! call iophys_ecrit('sigw', 1,'sigw', '.',sigw) |
696 |
|
|
!! call iophys_ecrit('phit', 1,'phit', 'W/m2',phit) |
697 |
|
|
!! call iophys_ecrit('phit_w', 1,'phit_w', 'W/m2',phit_w) |
698 |
|
|
!! call iophys_ecrit('phit_x', 1,'phit_x', 'W/m2',phit_x) |
699 |
|
|
!! call iophys_ecrit('phiq', 1,'phiq', 'kg/m2/s',phiq) |
700 |
|
|
!! call iophys_ecrit('phiq_w', 1,'phiq_w', 'kg/m2/s',phiq_w) |
701 |
|
|
!! call iophys_ecrit('phiq_x', 1,'phiq_x', 'kg/m2/s',phiq_x) |
702 |
|
|
!! call iophys_ecrit('q1_w', 1,'q1_w', '.',q1_w) |
703 |
|
|
!! call iophys_ecrit('q1_x', 1,'q1_x', '.',q1_x) |
704 |
|
|
!! ENDIF ! (knon .NE. 0) |
705 |
|
|
! |
706 |
|
|
RETURN |
707 |
|
|
|
708 |
|
|
END SUBROUTINE wx_pbl_split |
709 |
|
|
|
710 |
|
|
SUBROUTINE wx_pbl_check( knon, dtime, ypplay, ypaprs, & |
711 |
|
|
sigw, beta, iflag_split, & |
712 |
|
|
Ts0_b9, dTs09, & |
713 |
|
|
qs_b9, Ts_b9, & ! yqsurf, Tsurf_new |
714 |
|
|
dTs9, dqsatsrf9, & |
715 |
|
|
AcoefT_x, AcoefT_w, & |
716 |
|
|
BcoefT_x, BcoefT_w, & |
717 |
|
|
AcoefT0, AcoefQ0, BcoefT0, BcoefQ0, & |
718 |
|
|
AcoefT, AcoefQ, BcoefT, BcoefQ, & |
719 |
|
|
phiT_b9, phiQ_b9, & |
720 |
|
|
phiT_x9, phiT_w9, & |
721 |
|
|
phiQ_x9, phiQ_w9 & |
722 |
|
|
) |
723 |
|
|
! |
724 |
|
|
|
725 |
|
|
USE wx_pbl_var_mod |
726 |
|
|
|
727 |
|
|
USE print_control_mod, ONLY: prt_level,lunout |
728 |
|
|
! |
729 |
|
|
INCLUDE "YOMCST.h" |
730 |
|
|
INCLUDE "FCTTRE.h" |
731 |
|
|
INCLUDE "YOETHF.h" |
732 |
|
|
! |
733 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
734 |
|
|
REAL, INTENT(IN) :: dtime ! time step size (s) |
735 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypplay ! mid-layer pressure (Pa) |
736 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypaprs ! pressure at layer interfaces (pa) |
737 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: sigw ! cold pools fractional area |
738 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: beta ! aridity factor |
739 |
|
|
INTEGER, INTENT(IN) :: iflag_split |
740 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: Ts0_b9, dTs09 |
741 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: qs_b9, Ts_b9 ! yqsurf, Tsurf_new |
742 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dTs9, dqsatsrf9 |
743 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT_x, AcoefT_w |
744 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: BcoefT_x, BcoefT_w |
745 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT0, AcoefQ0, BcoefT0, BcoefQ0 |
746 |
|
|
! |
747 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT, AcoefQ, BcoefT, BcoefQ |
748 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT_b9, phiQ_b9 |
749 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT_x9, phiT_w9 |
750 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiQ_x9, phiQ_w9 |
751 |
|
|
! |
752 |
|
|
!! Local variables |
753 |
|
|
INTEGER :: j |
754 |
|
|
REAL, DIMENSION(knon) :: sigx ! fractional area of (x) region |
755 |
|
|
REAL, DIMENSION(knon) :: AcoefT_b, AcoefQ_b ! mean values of AcoefT and AcoefQ |
756 |
|
|
REAL :: zzt, zzq, zzqsat |
757 |
|
|
REAL :: zdelta, zcvm5, zcor, qsat |
758 |
|
|
REAL, DIMENSION(knon) :: qsat_w, qsat_x |
759 |
|
|
REAL, DIMENSION(knon) :: dqsatdT_w, dqsatdT_x |
760 |
|
|
REAL, DIMENSION(knon) :: qsat_bs ! qsat(Ts_b) |
761 |
|
|
REAL, DIMENSION(knon) :: qsat01, dqsatdT01 |
762 |
|
|
REAL, DIMENSION(knon) :: Ts_x, Ts_w, qs_x, qs_w |
763 |
|
|
REAL, DIMENSION(knon) :: T1_x, T1_w, q1_x, q1_w |
764 |
|
|
REAL, DIMENSION(knon) :: Rn_x, Rn_w |
765 |
|
|
REAL, DIMENSION(knon) :: phiQ0_x, phiQ0_w |
766 |
|
|
REAL, DIMENSION(knon) :: Ta, qa |
767 |
|
|
REAL, DIMENSION(knon) :: qsatsrf_w, qsatsrf_x, qsatsrf_b |
768 |
|
|
REAL, DIMENSION(knon) :: qsurf_w, qsurf_x |
769 |
|
|
REAL :: dphiT, dphiQ |
770 |
|
|
REAL :: dqsatsrf1 |
771 |
|
|
REAL :: phiT_w1, phiT_w2 |
772 |
|
|
REAL :: phiT_x1, phiT_x2 |
773 |
|
|
REAL :: phiQ_w1, phiQ_w2, phiQ_w3 |
774 |
|
|
REAL :: phiQ_x1, phiQ_x2, phiQ_x3 |
775 |
|
|
REAL :: phiT_b1, phiQ_b1 |
776 |
|
|
REAL :: Kech_Q_sw1, Kech_Q_sx1 |
777 |
|
|
REAL :: evap_pot |
778 |
|
|
|
779 |
|
|
!---------------------------------------------------------------------------- |
780 |
|
|
! Equations to be checked: |
781 |
|
|
! ----------------------- |
782 |
|
|
! Input : Ts0_b, dTs0, Ts_b, dTs, qsatsrf_b, dqsatsrf, |
783 |
|
|
! phiT_b, phiQ_b, phiT_w, phiT_x, phiQ_w, phiQ_x, |
784 |
|
|
! |
785 |
|
|
! AcoefT, AcoefQ, AcoefT_w, AcoefQ_w, AcoefT_x, AcoefQ_x, |
786 |
|
|
! BcoefT, BcoefQ, BcoefT_w, BcoefQ_w, BcoefT_x, BcoefQ_x |
787 |
|
|
! |
788 |
|
|
! C_p T1_w = AcoefT_w + BcoefT_w phiT_w Delta t C_p T1_x = AcoefT_x + BcoefT_x phiT_x Delta t |
789 |
|
|
! q1_w = AQ_w + BQ_w phiQ_w Delta t q1_x = AQ_x + BQ_x phiQ_x Delta t |
790 |
|
|
! qsatsrf_w = beta qsat(Ts_w) qsatsrf_x = beta qsat(Ts_x) |
791 |
|
|
! qsurf_w = (1-beta) q1_w + qsatsrf_w qsurf_x = (1-beta) q1_x + qsatsrf_x |
792 |
|
|
! phiT_w = Kech_h_w C_p ( T1_w - Ts_w) phiT_x = Kech_h_x C_p ( T1_x - Ts_x) |
793 |
|
|
! phiT_w = Kech_T_pw ( AcoefT_w - C_p Ts_w) phiT_x = Kech_T_px ( AcoefT_x - C_p Ts_x) |
794 |
|
|
! phiq_w = Kech_h_w ( beta q1_w - qsatsrf_w) phiq_x = Kech_h_x ( beta q1_x - qsatsrf_x)) |
795 |
|
|
! phiq_w = Kech_Q_sw (beta AQ_w -qsatsrf_w) phiq_x = Kech_Q_sx (beta AQ_x -qsatsrf_x) |
796 |
|
|
! phiq_w = Kech_h_w (q1_w - qsurf_w) phiq_x = Kech_h_x (q1_x - qsurf_x) |
797 |
|
|
! phiT_b = sigw phiT_w + sigx phiT_x dphiT = phiT_w - phiT_x |
798 |
|
|
! phiQ_b = sigw phiQ_w + sigx phiQ_x dphiQ = phiQ_w - phiQ_x |
799 |
|
|
! Ts_b = sigw Ts_w + sigx Ts_x dTs = Ts_w - Ts_x |
800 |
|
|
! qsatsrf_b = sigw qsatsrf_w + sigx qsatsrf_x |
801 |
|
|
! C_p Ta = AcoefT + BcoefT phiT_b Delta t |
802 |
|
|
! qa = AcoefQ + BcoefQ phiQ_b Delta t |
803 |
|
|
! phiT_b = Kech_h C_p (Ta - Ts_b) |
804 |
|
|
! phiQ_b = beta Kech_h (qa - qsatsrf_b) |
805 |
|
|
! dTs = sqrt(tau)/I (dphit + L_v dphiq + dR) |
806 |
|
|
|
807 |
|
|
!---------------------------------------------------------------------------- |
808 |
|
|
! |
809 |
|
|
!! |
810 |
|
|
sigx(:) = 1.-sigw(:) |
811 |
|
|
AcoefT_b(1:knon) = AcoefT_x(1:knon) + sigw(1:knon)*dd_AT(1:knon) |
812 |
|
|
AcoefQ_b(1:knon) = AQ_x(1:knon) + sigw(1:knon)*dd_AQ(1:knon) |
813 |
|
|
|
814 |
|
|
! Compute the three qsat and dqsatdTs |
815 |
|
|
! --------------------------------------------- |
816 |
|
|
!! C_p(1:knon) = RCpd |
817 |
|
|
!! L_v(1:knon) = RLvtt |
818 |
|
|
IF (prt_level >=10 ) THEN |
819 |
|
|
print *,' AAAA wx_pbl_check, C_p(j), qsat0(j), Ts0(j) : ', C_p(:), qsat0(:), Ts0(:) |
820 |
|
|
ENDIF ! (prt_level >=10 ) |
821 |
|
|
! |
822 |
|
|
DO j = 1, knon |
823 |
|
|
zdelta = MAX(0.,SIGN(1.,RTT-Ts0_b9(j))) |
824 |
|
|
zcvm5 = R5LES*(1.-zdelta) + R5IES*zdelta |
825 |
|
|
qsat = R2ES*FOEEW(Ts0_b9(j),zdelta)/ypaprs(j,1) |
826 |
|
|
qsat = MIN(0.5,qsat) |
827 |
|
|
zcor = 1./(1.-RETV*qsat) |
828 |
|
|
qsat01(j) = fqsat*qsat*zcor |
829 |
|
|
!! dqsatdT0(j) = FOEDE(Ts0_b(j),zdelta,zcvm5,qsat0(j),zcor)/RLVTT ! jyg 20210116 |
830 |
|
|
!! dqsatdT0(j) = (RLvtt*(1.-zdelta)+RLSTT*zdelta)*qsat0(j)/(Rv*Ts0_b(j)*Ts0_b(j)) |
831 |
|
|
dqsatdT01(j) = fqsat*FOEDE(Ts0_b9(j),zdelta,zcvm5,qsat01(j),zcor) |
832 |
|
|
ENDDO |
833 |
|
|
! |
834 |
|
|
!-------------------------------------------------------------------------------------------------- |
835 |
|
|
IF (prt_level >=10 ) THEN |
836 |
|
|
! |
837 |
|
|
DO j = 1, knon |
838 |
|
|
! |
839 |
|
|
print *,'wx_pbl_check: Kech_h, Kech_q ', Kech_h(j), Kech_q(j) |
840 |
|
|
! |
841 |
|
|
Ta(j) = (AcoefT(j) + BcoefT(j)*phiT_b9(j)*dtime)/C_p(j) |
842 |
|
|
qa(j) = AcoefQ(j) + BcoefQ(j)*phiQ_b9(j)*dtime |
843 |
|
|
print *, 'wx_pbl_check: j, Ta, qa ', Ta(j), qa(j) |
844 |
|
|
! |
845 |
|
|
qsat_bs(j) = qsat01(j) + dqsatdT01(j)*(Ts_b9(j)-Ts0_b9(j)) |
846 |
|
|
! |
847 |
|
|
print *,'wx_pbl_check: qsat01, qsat_bs ', j,qsat01(j), qsat_bs(j) |
848 |
|
|
! |
849 |
|
|
Ts_x(j) = Ts_b9(j) - sigw(j)*dTs9(j) |
850 |
|
|
Ts_w(j) = Ts_b9(j) + sigx(j)*dTs9(j) |
851 |
|
|
print *, 'wx_pbl_check: j, Ts_b9, Ts_w, Ts_x ', j, Ts_b9(j), Ts_w(j), Ts_x(j) |
852 |
|
|
! |
853 |
|
|
qsat_x(j) = qsat0_x(j) + dqsatdT0_x(j)*(Ts_x(j)-Ts0_x(j)) |
854 |
|
|
qsat_w(j) = qsat0_w(j) + dqsatdT0_w(j)*(Ts_w(j)-Ts0_w(j)) |
855 |
|
|
! |
856 |
|
|
print *,'wx_pbl_check: qsat0_w, qsat0_x, qsat_w, qsat_x ', qsat0_w(j), qsat0_x(j), qsat_w(j), qsat_x(j) |
857 |
|
|
! |
858 |
|
|
T1_x(j) = (AcoefT_x(j) + BcoefT_x(j)*phiT_x9(j)*dtime) / C_p(j) |
859 |
|
|
T1_w(j) = (AcoefT_w(j) + BcoefT_w(j)*phiT_w9(j)*dtime) / C_p(j) |
860 |
|
|
print *, 'wx_pbl_check: j, T1_w, T1_x ', j, T1_w(j), T1_x(j) |
861 |
|
|
! |
862 |
|
|
q1_x(j) = AQ_x(j) + BQ_x(j)*phiQ_x9(j)*dtime |
863 |
|
|
q1_w(j) = AQ_w(j) + BQ_w(j)*phiQ_w9(j)*dtime |
864 |
|
|
print *, 'wx_pbl_check: j, q1_w, q1_x ', j, q1_w(j), q1_x(j) |
865 |
|
|
! |
866 |
|
|
qsatsrf_x(j) = beta(j)*qsat_x(j) |
867 |
|
|
qsatsrf_w(j) = beta(j)*qsat_w(j) |
868 |
|
|
qsatsrf_b(j) = sigw(j)*qsatsrf_w(j) + sigx(j)*qsatsrf_x(j) |
869 |
|
|
! |
870 |
|
|
dqsatsrf1 = qsatsrf_w(j) - qsatsrf_x(j) |
871 |
|
|
print *, 'wx_pbl_check: j, qsatsrf_w, qsatsrf_x, dqsatsrf1, dqsatsrf9 ', & |
872 |
|
|
qsatsrf_w(j), qsatsrf_x(j), dqsatsrf1, dqsatsrf9(j) |
873 |
|
|
! |
874 |
|
|
qsurf_x(j) = (1-beta(j))*q1_x(j) + qsatsrf_x(j) |
875 |
|
|
qsurf_w(j) = (1-beta(j))*q1_w(j) + qsatsrf_w(j) |
876 |
|
|
print *, 'wx_pbl_check: j, qsurf_w, qsurf_x ', j, qsurf_w(j), qsurf_x(j) |
877 |
|
|
! |
878 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
879 |
|
|
! Test qsat01 = qsat0 et dqsatdT01 = dqsatdT0 |
880 |
|
|
!------------------------------------------------------------------------------------------------------ |
881 |
|
|
print *, 'wx_pbl_check: j, qsat01(j), qsat0(j) ', j, qsat01(j), qsat0(j) |
882 |
|
|
print *, 'wx_pbl_check: j, dqsatdT01(j), dqsatdT0(j) ', j, dqsatdT01(j), dqsatdT0(j) |
883 |
|
|
! |
884 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
885 |
|
|
! Test Kexh_Q_sw = Kech_q_w/(1.-beta*Kech_q_w*BcoefQ) Kexh_Q_sx = Kech_q_x/(1.-beta*Kech_q_x*BcoefQ) |
886 |
|
|
!------------------------------------------------------------------------------------------------------ |
887 |
|
|
Kech_Q_sx1 = Kech_q_x(j)/(1.-beta(j)*Kech_q_x(j)*BQ_x(j)*dtime) |
888 |
|
|
Kech_Q_sw1 = Kech_q_w(j)/(1.-beta(j)*Kech_q_w(j)*BQ_w(j)*dtime) |
889 |
|
|
print *, 'wx_pbl_check: j, Kech_Q_sx1, Kech_Q_sx(j)', j, Kech_Q_sx1, Kech_Q_sx(j) |
890 |
|
|
print *, 'wx_pbl_check: j, Kech_Q_sw1, Kech_Q_sw(j)', j, Kech_Q_sw1, Kech_Q_sw(j) |
891 |
|
|
! |
892 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
893 |
|
|
! Test phiT_w = Kech_h_w*C_p(j)*(T1_w(j)-Ts_w(j)) phiT_x = Kech_h_x*C_p(j)*(T1_x(j)-Ts_x(j)) |
894 |
|
|
!----------------------------------------------------- |
895 |
|
|
phiT_x1 = Kech_h_x(j)*C_p(j)*(T1_x(j)-Ts_x(j)) |
896 |
|
|
phiT_w1 = Kech_h_w(j)*C_p(j)*(T1_w(j)-Ts_w(j)) |
897 |
|
|
! |
898 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
899 |
|
|
! Test phiT_w = Kech_T_pw*(AcoefT_w(j)-C_p(j)*Ts_w(j)) phiT_x = Kech_T_px*(AcoefT_x(j)-C_p(j)*Ts_x(j)) |
900 |
|
|
!----------------------------------------------------- |
901 |
|
|
phiT_x2 = Kech_T_px(j)*(AcoefT_x(j)-C_p(j)*Ts_x(j)) |
902 |
|
|
phiT_w2 = Kech_T_pw(j)*(AcoefT_w(j)-C_p(j)*Ts_w(j)) |
903 |
|
|
print *, 'wx_pbl_check: j, phiT_w1, phiT_w2, phiT_w9 ', j, phiT_w1, phiT_w2, phiT_w9(j) |
904 |
|
|
print *, 'wx_pbl_check: j, phiT_x1, phiT_x2, phiT_x9 ', j, phiT_x1, phiT_x2, phiT_x9(j) |
905 |
|
|
! |
906 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
907 |
|
|
! Test phiq_w = Kech_q_w ( beta q1_w - qsatsrf_w) phiq_x = Kech_q_x ( beta q1_x - qsatsrf_x)) |
908 |
|
|
!-------------------------------------------------------------- |
909 |
|
|
phiq_x1 = Kech_q_x(j)*( beta(j)*q1_x(j) - qsatsrf_x(j)) |
910 |
|
|
phiq_w1 = Kech_q_w(j)*( beta(j)*q1_w(j) - qsatsrf_w(j)) |
911 |
|
|
! |
912 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
913 |
|
|
! Test phiq_w = Kech_Q_sw (beta AQ_w -qsatsrf_w) phiq_x = Kech_Q_sx (beta AQ_x -qsatsrf_x) |
914 |
|
|
!-------------------------------------------------------------- |
915 |
|
|
phiq_x2 = Kech_Q_sx(j)*(beta(j)*AQ_x(j) -qsatsrf_x(j)) |
916 |
|
|
phiq_w2 = Kech_Q_sw(j)*(beta(j)*AQ_w(j) -qsatsrf_w(j)) |
917 |
|
|
! |
918 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
919 |
|
|
! Test phiq_w = Kech_q_w ( q1_w - qsurf_w) phiq_x = Kech_q_x ( q1_x - qsurf_x)) |
920 |
|
|
!-------------------------------------------------------------- |
921 |
|
|
phiq_x3 = Kech_q_x(j)*( q1_x(j) - qsurf_x(j)) |
922 |
|
|
phiq_w3 = Kech_q_w(j)*( q1_w(j) - qsurf_w(j)) |
923 |
|
|
print *, 'wx_pbl_check: j, phiQ_w1, phiQ_w2, phiQ_w3, phiQ_w9 ', j, phiQ_w1, phiQ_w2, phiQ_w3, phiQ_w9(j) |
924 |
|
|
print *, 'wx_pbl_check: j, phiQ_x1, phiQ_x2, phiQ_x3, phiQ_x9 ', j, phiQ_x1, phiQ_x2, phiQ_x3, phiQ_x9(j) |
925 |
|
|
! |
926 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
927 |
|
|
! Test phiT_b = Kech_h C_p (Ta - Ts_b) |
928 |
|
|
!-------------------------------------------------------------- |
929 |
|
|
phiT_b1 = Kech_h(j)*C_p(j)*(Ta(j) - Ts_b9(j)) |
930 |
|
|
print *, 'wx_pbl_check: j, phiT_b1, PhiT_b9 ', j, phiT_b1, PhiT_b9(j) |
931 |
|
|
! |
932 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
933 |
|
|
! Test phiQ_b = beta Kech_q (qa - qsat_bs) |
934 |
|
|
!-------------------------------------------------------------- |
935 |
|
|
evap_pot = Kech_q(j)*(qa(j) - qsat_bs(j)) |
936 |
|
|
phiQ_b1 = beta(j)*Kech_q(j)*(qa(j) - qsat_bs(j)) |
937 |
|
|
print *, 'wx_pbl_check: j, beta, evap_pot, phiQ_b1, PhiQ_b9 ', j, beta(j), evap_pot, phiQ_b1, PhiQ_b9(j) |
938 |
|
|
! |
939 |
|
|
! |
940 |
|
|
ENDDO ! j = 1, knon |
941 |
|
|
|
942 |
|
|
ENDIF ! (prt_level >=10 ) |
943 |
|
|
!-------------------------------------------------------------------------------------------------- |
944 |
|
|
|
945 |
|
|
RETURN |
946 |
|
|
|
947 |
|
|
END SUBROUTINE wx_pbl_check |
948 |
|
|
|
949 |
|
|
SUBROUTINE wx_pbl_dts_check( knon, dtime, ypplay, ypaprs, & |
950 |
|
|
sigw, beta, iflag_split, & |
951 |
|
|
Ts0_b9, dTs09, & |
952 |
|
|
qs_b9, Ts_b9, & ! yqsurf, Tsurf_new |
953 |
|
|
dqsatsrf9, dTs9, delta_qsurf9, & |
954 |
|
|
AcoefT_x, AcoefT_w, & |
955 |
|
|
BcoefT_x, BcoefT_w, & |
956 |
|
|
AcoefT0, AcoefQ0, BcoefT0, BcoefQ0, & |
957 |
|
|
AcoefT, AcoefQ, BcoefT, BcoefQ, & |
958 |
|
|
HTphiT_b, dd_HTphiT, HTphiQ_b, dd_HTphiQ, HTRn_b, dd_HTRn, & |
959 |
|
|
phiT0_b9, dphiT09, phiQ0_b9, dphiQ09, Rn0_b9, dRn09, & |
960 |
|
|
g_T, g_Q, & |
961 |
|
|
Gamma_phiT, Gamma_phiQ, & |
962 |
|
|
dTs_ins, dqsatsrf_ins, & |
963 |
|
|
phiT_b9, phiQ_b9, & |
964 |
|
|
phiT_x9, phiT_w9, & |
965 |
|
|
phiQ_x9, phiQ_w9 & |
966 |
|
|
) |
967 |
|
|
! |
968 |
|
|
|
969 |
|
|
USE wx_pbl_var_mod |
970 |
|
|
|
971 |
|
|
USE print_control_mod, ONLY: prt_level,lunout |
972 |
|
|
! |
973 |
|
|
INCLUDE "YOMCST.h" |
974 |
|
|
INCLUDE "FCTTRE.h" |
975 |
|
|
INCLUDE "YOETHF.h" |
976 |
|
|
! |
977 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
978 |
|
|
REAL, INTENT(IN) :: dtime ! time step size (s) |
979 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypplay ! mid-layer pressure (Pa) |
980 |
|
|
REAL, DIMENSION(knon,klev), INTENT(IN) :: ypaprs ! pressure at layer interfaces (pa) |
981 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: sigw ! cold pools fractional area |
982 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: beta ! aridity factor |
983 |
|
|
INTEGER, INTENT(IN) :: iflag_split |
984 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: Ts0_b9, dTs09 |
985 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: qs_b9, Ts_b9 ! yqsurf, Tsurf_new |
986 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dTs9, dqsatsrf9 |
987 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: delta_qsurf9 |
988 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT_x, AcoefT_w |
989 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: BcoefT_x, BcoefT_w |
990 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT0, AcoefQ0, BcoefT0, BcoefQ0 |
991 |
|
|
! |
992 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: AcoefT, AcoefQ, BcoefT, BcoefQ |
993 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: HTphiT_b, dd_HTphiT, HTphiQ_b, dd_HTphiQ, HTRn_b, dd_HTRn |
994 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT0_b9, dphiT09, phiQ0_b9, dphiQ09, Rn0_b9, dRn09 |
995 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: g_T, g_Q |
996 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: Gamma_phiT, Gamma_phiQ |
997 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: dTs_ins, dqsatsrf_ins |
998 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT_b9, phiQ_b9 |
999 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiT_x9, phiT_w9 |
1000 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: phiQ_x9, phiQ_w9 |
1001 |
|
|
! |
1002 |
|
|
!! Local variables |
1003 |
|
|
INTEGER :: j |
1004 |
|
|
REAL, DIMENSION(knon) :: sigx ! fractional area of (x) region |
1005 |
|
|
REAL, DIMENSION(knon) :: AcoefT_b, AcoefQ_b ! mean values of AcoefT and AcoefQ |
1006 |
|
|
REAL :: zzt, zzq, zzqsat |
1007 |
|
|
REAL :: zdelta, zcvm5, zcor, qsat |
1008 |
|
|
REAL, DIMENSION(knon) :: qsat_w, qsat_x |
1009 |
|
|
REAL, DIMENSION(knon) :: Ts_x, Ts_w, qs_x, qs_w |
1010 |
|
|
REAL, DIMENSION(knon) :: T1_x, T1_w, q1_x, q1_w |
1011 |
|
|
REAL, DIMENSION(knon) :: Rn_x, Rn_w |
1012 |
|
|
REAL, DIMENSION(knon) :: Rn_b, dRn |
1013 |
|
|
REAL, DIMENSION(knon) :: phiQ0_x, phiQ0_w |
1014 |
|
|
REAL, DIMENSION(knon) :: Ta, qa |
1015 |
|
|
REAL, DIMENSION(knon) :: err_phiT_w, err_phiT_x |
1016 |
|
|
REAL, DIMENSION(knon) :: err_phiq_w, err_phiq_x |
1017 |
|
|
REAL, DIMENSION(knon) :: err_phiT_b |
1018 |
|
|
REAL, DIMENSION(knon) :: err_phiQ_b |
1019 |
|
|
REAL, DIMENSION(knon) :: err2_phiT_b |
1020 |
|
|
REAL :: T1A_x, T1A_w, q1A_x, q1A_w |
1021 |
|
|
REAL :: qsatsrf_w, qsatsrf_x, qsatsrfb, qsbA |
1022 |
|
|
REAL :: dphiT, dphiQ |
1023 |
|
|
REAL :: dphiT_H, dphiQ_H |
1024 |
|
|
REAL :: phiQ_pot |
1025 |
|
|
REAL :: phiQ_w_m_phiQ0_w |
1026 |
|
|
REAL :: phiQ_x_m_phiQ0_x |
1027 |
|
|
REAL :: dphiQ_m_dphiQ0 |
1028 |
|
|
REAL :: dphiT_m_dphiT0 |
1029 |
|
|
REAL :: dRN_m_dRn0 |
1030 |
|
|
REAL :: phiTb_m_phiT0b |
1031 |
|
|
|
1032 |
|
|
!---------------------------------------------------------------------------- |
1033 |
|
|
! Equations to be checked: |
1034 |
|
|
! ----------------------- |
1035 |
|
|
! Input : Ts0_b, dTs0, Ts_b, dTs, qsatsrf_b, dqsatsrf, |
1036 |
|
|
! phiT_b, phiQ_b, phiT_w, phiT_x, phiQ_w, phiQ_x, |
1037 |
|
|
! |
1038 |
|
|
! AcoefT, AcoefQ, AcoefT_w, AcoefQ_w, AcoefT_x, AcoefQ_x, |
1039 |
|
|
! BcoefT, BcoefQ, BcoefT_w, BcoefQ_w, BcoefT_x, BcoefQ_x |
1040 |
|
|
! |
1041 |
|
|
! Ts_w = Ts_b + sigx dTs Ts_x = Ts_b - sigw dTs |
1042 |
|
|
! T1_w = AcoefT_w + BcoefT_w phiT_w Delta t T1_x = AcoefT_x + BcoefT_x phiT_x Delta t |
1043 |
|
|
! q1_w = AcoefQ_w + BcoefQ_w phiQ_w Delta t q1_x = AcoefQ_x + BcoefQ_x phiQ_x Delta t |
1044 |
|
|
! phiT_w = Kech_h_w ( T1_w - Ts_w) phiT_x = Kech_h_x ( T1_x - Ts_x) |
1045 |
|
|
! phiq_w = beta Kech_h_w ( q1_w - qsat(Ts_w)) phiq_x = beta Kech_h_x ( q1_x - qsat(Ts_x)) |
1046 |
|
|
! phiT_b = sigw phiT_w + sigx phiT_x dphiT = phiT_w - phiT_x |
1047 |
|
|
! phiQ_b = sigw phiQ_w + sigx phiQ_x dphiQ = phiQ_w - phiQ_x |
1048 |
|
|
! Ts_b = sigw Ts_w + sigx Ts_x dTs = Ts_w - Ts_x |
1049 |
|
|
! Ta = AcoefT + BcoefT phiT_b Delta t |
1050 |
|
|
! qa = AcoefQ + BcoefQ phiQ_b Delta t |
1051 |
|
|
! phiT_b = Kech_h (Ta - Ts_b) |
1052 |
|
|
! phiQ_b = beta Kech_h (qa - qsat(Ts_b)) |
1053 |
|
|
! dTs = sqrt(tau)/I (dphit + L_v dphiq + dR) |
1054 |
|
|
|
1055 |
|
|
!---------------------------------------------------------------------------- |
1056 |
|
|
! |
1057 |
|
|
!! |
1058 |
|
|
sigx(:) = 1.-sigw(:) |
1059 |
|
|
AcoefT_b(1:knon) = AcoefT_x(1:knon) + sigw(1:knon)*dd_AT(1:knon) |
1060 |
|
|
AcoefQ_b(1:knon) = AQ_x(1:knon) + sigw(1:knon)*dd_AQ(1:knon) |
1061 |
|
|
|
1062 |
|
|
IF (prt_level >=10 ) THEN |
1063 |
|
|
print *,'->wx_pbl_dts_check, HTphiT_b, HTphiQ_b, HTRn_b ', & |
1064 |
|
|
HTphiT_b, HTphiQ_b, HTRn_b |
1065 |
|
|
print *,'->wx_pbl_dts_check, dd_HTphiT, dd_HTphiQ, dd_HTRn ', & |
1066 |
|
|
dd_HTphiT, dd_HTphiQ, dd_HTRn |
1067 |
|
|
ENDIF ! (prt_level >=10 ) |
1068 |
|
|
! |
1069 |
|
|
! Compute the three qsat and dqsatdTs |
1070 |
|
|
! --------------------------------------------- |
1071 |
|
|
!! print *,' AAAA wx_pbl_dts_check, C_p(j), qsat0(j), Ts0(j) : ', & |
1072 |
|
|
!! (C_p(j), qsat0(j), Ts0(j), j = 1,knon) |
1073 |
|
|
! |
1074 |
|
|
! |
1075 |
|
|
!-------------------------------------------------------------------------------------------------- |
1076 |
|
|
IF (prt_level >=10 ) THEN |
1077 |
|
|
! |
1078 |
|
|
DO j = 1, knon |
1079 |
|
|
Ts_x(j) = Ts_b9(j) - sigw(j)*dTs9(j) |
1080 |
|
|
Ts_w(j) = Ts_b9(j) + sigx(j)*dTs9(j) |
1081 |
|
|
print *, 'wx_pbl_dts_check: j, Ts_b9, Ts_w, Ts_x ', j, Ts_b9(j), Ts_w(j), Ts_x(j) |
1082 |
|
|
! |
1083 |
|
|
qsat_x(j) = qsat0_x(j) + dqsatdT0_x(j)*(Ts_x(j)-Ts0_x(j)) |
1084 |
|
|
qsat_w(j) = qsat0_w(j) + dqsatdT0_w(j)*(Ts_w(j)-Ts0_w(j)) |
1085 |
|
|
! |
1086 |
|
|
T1_x(j) = (AcoefT_x(j) + BcoefT_x(j)*phiT_x9(j)*dtime) / C_p(j) |
1087 |
|
|
T1_w(j) = (AcoefT_w(j) + BcoefT_w(j)*phiT_w9(j)*dtime) / C_p(j) |
1088 |
|
|
print *, 'wx_pbl_dts_check: j, T1_w, T1_x ', j, T1_w(j), T1_x(j) |
1089 |
|
|
! |
1090 |
|
|
q1_x(j) = AQ_x(j) + BQ_x(j)*phiQ_x9(j)*dtime |
1091 |
|
|
q1_w(j) = AQ_w(j) + BQ_w(j)*phiQ_w9(j)*dtime |
1092 |
|
|
print *, 'wx_pbl_dts_check: j, q1_w, q1_x ', j, q1_w(j), q1_x(j) |
1093 |
|
|
! |
1094 |
|
|
Rn_x(j) = eps_1*Rsigma*T1_x(j)**4 - Rsigma*Ts_x(j)**4 |
1095 |
|
|
Rn_w(j) = eps_1*Rsigma*T1_w(j)**4 - Rsigma*Ts_w(j)**4 |
1096 |
|
|
Rn_b(j) = sigw(j)*Rn_w(j) + sigx(j)*Rn_x(j) |
1097 |
|
|
dRn(j) = dRn09(j) - ( HTRn_b(j) & |
1098 |
|
|
+(sigx(j)-sigw(j))*dd_HTRn(j) & |
1099 |
|
|
-sigw(j)*sigx(j)*dd_HTRn(j)*dd_HTphiT(j)/HTphiT_b(j) & |
1100 |
|
|
)*(dTs9(j)-dTs09(j)) & |
1101 |
|
|
+ dd_HTRn(j)/HTphiT_b(j)*(phiT_b9(j)-phiT0_b9(j)) |
1102 |
|
|
! |
1103 |
|
|
print *,'wx_pbl_dts_check, dphiT, L_v*dphiQ, dRn, dTs ', & |
1104 |
|
|
phiT_w9(j)-phiT_x9(j), L_v(j)*(phiQ_w9(j)-phiQ_x9(j)), dRn(j), dTs9(j) |
1105 |
|
|
! |
1106 |
|
|
phiQ0_x(j) = PhiQ0_b9(j) - sigw(j)*dphiQ09(j) |
1107 |
|
|
phiQ0_w(j) = PhiQ0_b9(j) + sigx(j)*dphiQ09(j) |
1108 |
|
|
! |
1109 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1110 |
|
|
! Test phiQ_w-phiQ0_w = -beta*Kech_Q_sw*dqsatdT_w*(Ts_w-Ts0_w) |
1111 |
|
|
!-------------------------------------------------------------- |
1112 |
|
|
print *,'wx_pbl_dts_check: beta(j), Kech_Q_sw(j), dqsatdT0_w(j), Ts_w(j), Ts0_w(j) ', & |
1113 |
|
|
beta(j), Kech_Q_sw(j), dqsatdT0_w(j), Ts_w(j), Ts0_w(j) |
1114 |
|
|
phiQ_w_m_phiQ0_w = -beta(j)*Kech_Q_sw(j)*dqsatdT0_w(j)*(Ts_w(j)-Ts0_w(j)) |
1115 |
|
|
print *,'wx_pbl_dts_check: j, phiQ_w9-phiQ0_w, phiQ_w_m_phiQ0_w ', & |
1116 |
|
|
j, phiQ_w9(j)-phiQ0_w(j), phiQ_w_m_phiQ0_w |
1117 |
|
|
! |
1118 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1119 |
|
|
! Test phiQ_x-phiQ0_x = -beta*Kech_Q_sx*dqsatdT_x*(Ts_x-Ts0_x) |
1120 |
|
|
!-------------------------------------------------------------- |
1121 |
|
|
phiQ_x_m_phiQ0_x = -beta(j)*Kech_Q_sx(j)*dqsatdT0_x(j)*(Ts_x(j)-Ts0_x(j)) |
1122 |
|
|
print *,'wx_pbl_dts_check: j, phiQ_x9-phiQ0_x, phiQ_x_m_phiQ0_x ', & |
1123 |
|
|
j, phiQ_x9(j)-phiQ0_x(j), phiQ_x_m_phiQ0_x |
1124 |
|
|
! |
1125 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1126 |
|
|
! Test dphiT-dphiT0 = -(HTphiT_b+(sigx-sigw)*dd_HTphiT)*(dTs-dTs0) - dd_HTphiT*(Ts_b-Ts0_b) |
1127 |
|
|
!------------------------------------------------------------------------------------------- |
1128 |
|
|
dphiT = phiT_w9(j) - phiT_x9(j) |
1129 |
|
|
dphiT_m_dphiT0 = -(HTphiT_b(j)+(sigx(j)-sigw(j))*dd_HTphiT(j))*(dTs9(j)-dTs09(j)) & |
1130 |
|
|
- dd_HTphiT(j)*(Ts_b9(j)-Ts0_b9(j)) |
1131 |
|
|
print *,'wx_pbl_dts_check: j, dphiT-dphiT09, dphiT_m_dphiT0 ',j, dphiT-dphiT09(j), dphiT_m_dphiT0 |
1132 |
|
|
! |
1133 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1134 |
|
|
! Test dphiQ-dphiQ0 = -(HTphiQ_b+(sigx-sigw)*dd_HTphiQ)*(dTs-dTs0) - dd_HTphiQ*(Ts_b-Ts0_b) |
1135 |
|
|
!------------------------------------------------------------------------------------------- |
1136 |
|
|
dphiQ = phiQ_w9(j) - phiQ_x9(j) |
1137 |
|
|
dphiQ_m_dphiQ0 = -(HTphiQ_b(j)+(sigx(j)-sigw(j))*dd_HTphiQ(j))*(dTs9(j)-dTs09(j)) & |
1138 |
|
|
- dd_HTphiQ(j)*(Ts_b9(j)-Ts0_b9(j)) |
1139 |
|
|
print *,'wx_pbl_dts_check: j, dphiQ-dphiQ09, dphiQ_m_dphiQ0 ',j, dphiQ-dphiQ09(j), dphiQ_m_dphiQ0 |
1140 |
|
|
! |
1141 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1142 |
|
|
! Test dRn-dRn0 = -(HTRn_b+(sigx-sigw)*dd_HTRn)*(dTs-dTs0) - dd_HTRn*(Ts_b-Ts0_b) |
1143 |
|
|
!------------------------------------------------------------------------------------------- |
1144 |
|
|
dRn_m_dRn0 = -(HTRn_b(j)+(sigx(j)-sigw(j))*dd_HTRn(j))*(dTs9(j)-dTs09(j)) & |
1145 |
|
|
- dd_HTRn(j)*(Ts_b9(j)-Ts0_b9(j)) |
1146 |
|
|
print *,'wx_pbl_dts_check: j, dRn-dRn09, dRn_m_dRn0 ',j, dRn-dRn09(j), dRn_m_dRn0 |
1147 |
|
|
! |
1148 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1149 |
|
|
! Test phiT_b-phiT0_b = -sigx*sigw*dd_HTphiT*(dTs-dTs0) - HTphiT_b*(Ts_b-Ts0_b) |
1150 |
|
|
!------------------------------------------------------------------------------- |
1151 |
|
|
phiTb_m_phiT0b = -sigx(j)*sigw(j)*dd_HTphiT(j)*(dTs9(j)-dTs09(j)) - HTphiT_b(j)*(Ts_b9(j)-Ts0_b9(j)) |
1152 |
|
|
print *,'wx_pbl_dts_check: j, phiT_b9-phiT0_b9, phiTb_m_phiT0b ',j ,phiT_b9(j)-phiT0_b9(j), phiTb_m_phiT0b |
1153 |
|
|
! |
1154 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1155 |
|
|
! Test phiT_w, phiT_x, dphiT from HTphiT |
1156 |
|
|
!------------------------------------------ |
1157 |
|
|
! phiT_w = Kech_h_w C_p ( T1_w - Ts_w) phiT_x = Kech_h_x C_p ( T1_x - Ts_x) |
1158 |
|
|
err_phiT_x(j) = Kech_h_x(j)*C_p(j)*(T1_x(j) - Ts_x(j)) - phiT_x9(j) |
1159 |
|
|
err_phiT_w(j) = Kech_h_w(j)*C_p(j)*(T1_w(j) - Ts_w(j)) - phiT_w9(j) |
1160 |
|
|
print *, 'wx_pbl_dts_check: j, phiT_w9, phiT_x9, err_phiT_w, err_phiT_x ', & |
1161 |
|
|
j, phiT_w9(j), phiT_x9(j), err_phiT_w(j), err_phiT_x(j) |
1162 |
|
|
dphiT = phiT_w9(j) - phiT_x9(j) |
1163 |
|
|
dphiT_H = dphiT09(j) - ( HTphiT_b(j) & |
1164 |
|
|
+(sigx(j)-sigw(j))*dd_HTphiT(j) & |
1165 |
|
|
-sigw(j)*sigx(j)*dd_HTphiT(j)*dd_HTphiT(j)/HTphiT_b(j) & |
1166 |
|
|
)*(dTs9(j)-dTs09(j)) & |
1167 |
|
|
+ dd_HTphiT(j)/HTphiT_b(j)*(phiT_b9(j)-phiT0_b9(j)) |
1168 |
|
|
print *,'wx_pbl_dts_check: j, dphiT, dphiT_H ', j, dphiT, dphiT_H |
1169 |
|
|
|
1170 |
|
|
! |
1171 |
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
1172 |
|
|
! Test phiq_w, phiq_x, dphiq from HTphiq |
1173 |
|
|
!------------------------------------------ |
1174 |
|
|
! |
1175 |
|
|
! phiq_w = beta Kech_q_w ( q1_w - qsat(Ts_w)) phiq_x = beta Kech_q_x ( q1_x - qsat(Ts_x)) |
1176 |
|
|
err_phiq_x(j) = beta(j)*Kech_q_x(j)*( q1_x(j) - qsat_x(j)) - phiq_x9(j) |
1177 |
|
|
err_phiq_w(j) = beta(j)*Kech_q_w(j)*( q1_w(j) - qsat_w(j)) - phiq_w9(j) |
1178 |
|
|
dphiQ = phiQ_w9(j) - phiQ_x9(j) |
1179 |
|
|
dphiQ_H = dphiQ09(j) - ( HTphiQ_b(j) & |
1180 |
|
|
+(sigx(j)-sigw(j))*dd_HTphiQ(j) & |
1181 |
|
|
-sigw(j)*sigx(j)*dd_HTphiQ(j)*dd_HTphiT(j)/HTphiT_b(j) & |
1182 |
|
|
)*(dTs9(j)-dTs09(j)) & |
1183 |
|
|
+ dd_HTphiQ(j)/HTphiT_b(j)*(phiT_b9(j)-phiT0_b9(j)) |
1184 |
|
|
print *,'wx_pbl_dts_check: j, dphiQ, dphiQ_H ', j, dphiQ, dphiQ_H |
1185 |
|
|
! |
1186 |
|
|
! phiT_b = sigw phiT_w + sigx phiT_x dphiT = phiT_w - phiT_x |
1187 |
|
|
err_phiT_b(j) = sigw(j)*phiT_w9(j) + sigx(j)*phiT_x9(j) - phiT_b9(j) |
1188 |
|
|
! |
1189 |
|
|
! phiQ_b = sigw phiQ_w + sigx phiQ_x dphiQ = phiQ_w - phiQ_x |
1190 |
|
|
err_phiQ_b(j) = sigw(j)*phiQ_w9(j) + sigx(j)*phiQ_x9(j) - phiQ_b9(j) |
1191 |
|
|
! |
1192 |
|
|
! Ta = AcoefT + BcoefT phiT_b Delta t |
1193 |
|
|
! phiT_b = Kech_h C_p (Ta - Ts_b) |
1194 |
|
|
Ta(j) = (AcoefT(j) + BcoefT(j)*phiT_b9(j)*dtime) / C_p(j) |
1195 |
|
|
err2_phiT_b(j) = Kech_h(j)*C_p(j)*(Ta(j) - Ts_b9(j)) - phiT_b9(j) |
1196 |
|
|
print *, 'wx_pbl_dts_check: j, Ta, phiT_b9, err2_phiT_b ', & |
1197 |
|
|
j, Ta(j), phiT_b9(j), err2_phiT_b(j) |
1198 |
|
|
! |
1199 |
|
|
ENDDO ! j = 1, knon |
1200 |
|
|
|
1201 |
|
|
ENDIF ! (prt_level >=10 ) |
1202 |
|
|
!-------------------------------------------------------------------------------------------------- |
1203 |
|
|
RETURN |
1204 |
|
|
|
1205 |
|
|
END SUBROUTINE wx_pbl_dts_check |
1206 |
|
|
|
1207 |
|
|
SUBROUTINE wx_evappot(knon, q1, Ts, evap_pot) |
1208 |
|
|
|
1209 |
|
|
USE wx_pbl_var_mod |
1210 |
|
|
|
1211 |
|
|
INTEGER, INTENT(IN) :: knon ! number of grid cells |
1212 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: q1 ! specific humidity in layer 1 |
1213 |
|
|
REAL, DIMENSION(knon), INTENT(IN) :: Ts ! surface temperature |
1214 |
|
|
! |
1215 |
|
|
REAL, DIMENSION(knon), INTENT(OUT) :: evap_pot ! potential evaporation |
1216 |
|
|
! |
1217 |
|
|
INTEGER :: j |
1218 |
|
|
REAL :: qsat_bs |
1219 |
|
|
! |
1220 |
|
|
DO j = 1,knon |
1221 |
|
|
evap_pot(j) = Kech_q(j)*(qsat0(j)+dqsatdT0(j)*(Ts(j)-Ts0(j))-q1(j)) |
1222 |
|
|
! |
1223 |
|
|
qsat_bs = qsat0(j)+dqsatdT0(j)*(Ts(j)-Ts0(j)) |
1224 |
|
|
!! print *,'wx_evappot : Kech_q, qsat_bs, qa, evap_pot ', Kech_q(j), qsat_bs, q1(j), evap_pot(j) |
1225 |
|
|
ENDDO |
1226 |
|
|
! |
1227 |
|
|
RETURN |
1228 |
|
|
END SUBROUTINE wx_evappot |
1229 |
|
|
|
1230 |
|
|
END MODULE wx_pbl_mod |
1231 |
|
|
|