7 hprogram, hcoupling, ptimec, ptstep, kyear, kmonth, kday, ptime, &
8 ki, ksv, ksw, ptsun, pzenith, pzenith2, pazim, pzref, puref, pu, pv, &
9 pqa, pta, prhoa, psv, pco2, hsv,prain, psnow, plw, pdir_sw, psca_sw, &
10 psw_bands, pps, ppa, psftq, psfth, psfts, psfco2, psfu, psfv, &
11 ptrad, pdir_alb, psca_alb, pemis, ptsurf, pz0, pz0h, pqsurf, &
12 ppew_a_coef, ppew_b_coef, ppet_a_coef, ppeq_a_coef, ppet_b_coef, &
52 USE modi_init_water_sbl
55 USE modi_canopy_grid_update
57 USE modi_coupling_watflux_n
59 USE yomhook
,ONLY : lhook, dr_hook
60 USE parkind1
,ONLY : jprb
68 TYPE(dst_t),
INTENT(INOUT) :: dst
69 TYPE(slt_t),
INTENT(INOUT) :: slt
71 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
72 CHARACTER(LEN=1),
INTENT(IN) :: hcoupling
75 REAL,
INTENT(IN) :: ptimec
76 INTEGER,
INTENT(IN) :: kyear
77 INTEGER,
INTENT(IN) :: kmonth
78 INTEGER,
INTENT(IN) :: kday
79 REAL,
INTENT(IN) :: ptime
80 INTEGER,
INTENT(IN) :: ki
81 INTEGER,
INTENT(IN) :: ksv
82 INTEGER,
INTENT(IN) :: ksw
83 REAL,
DIMENSION(KI),
INTENT(IN) :: ptsun
84 REAL,
INTENT(IN) :: ptstep
85 REAL,
DIMENSION(KI),
INTENT(IN) :: pzref
86 REAL,
DIMENSION(KI),
INTENT(IN) :: puref
88 REAL,
DIMENSION(KI),
INTENT(IN) :: pta
89 REAL,
DIMENSION(KI),
INTENT(IN) :: pqa
90 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
91 REAL,
DIMENSION(KI,KSV),
INTENT(IN) :: psv
94 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN):: hsv
95 REAL,
DIMENSION(KI),
INTENT(IN) :: pu
96 REAL,
DIMENSION(KI),
INTENT(IN) :: pv
97 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: pdir_sw
99 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: psca_sw
101 REAL,
DIMENSION(KSW),
INTENT(IN) :: psw_bands
102 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith
103 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith2
104 REAL,
DIMENSION(KI),
INTENT(IN) :: pazim
105 REAL,
DIMENSION(KI),
INTENT(IN) :: plw
107 REAL,
DIMENSION(KI),
INTENT(IN) :: pps
108 REAL,
DIMENSION(KI),
INTENT(IN) :: ppa
109 REAL,
DIMENSION(KI),
INTENT(IN) :: pco2
110 REAL,
DIMENSION(KI),
INTENT(IN) :: psnow
111 REAL,
DIMENSION(KI),
INTENT(IN) :: prain
114 REAL,
DIMENSION(KI),
INTENT(OUT) :: psfth
115 REAL,
DIMENSION(KI),
INTENT(OUT) :: psftq
116 REAL,
DIMENSION(KI),
INTENT(OUT) :: psfu
117 REAL,
DIMENSION(KI),
INTENT(OUT) :: psfv
118 REAL,
DIMENSION(KI),
INTENT(OUT) :: psfco2
119 REAL,
DIMENSION(KI,KSV),
INTENT(OUT):: psfts
121 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptrad
122 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: pdir_alb
123 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: psca_alb
124 REAL,
DIMENSION(KI),
INTENT(OUT) :: pemis
126 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsurf
127 REAL,
DIMENSION(KI),
INTENT(OUT) :: pz0
128 REAL,
DIMENSION(KI),
INTENT(OUT) :: pz0h
129 REAL,
DIMENSION(KI),
INTENT(OUT) :: pqsurf
131 REAL,
DIMENSION(KI),
INTENT(IN) :: ppew_a_coef
132 REAL,
DIMENSION(KI),
INTENT(IN) :: ppew_b_coef
133 REAL,
DIMENSION(KI),
INTENT(IN) :: ppet_a_coef
134 REAL,
DIMENSION(KI),
INTENT(IN) :: ppeq_a_coef
135 REAL,
DIMENSION(KI),
INTENT(IN) :: ppet_b_coef
136 REAL,
DIMENSION(KI),
INTENT(IN) :: ppeq_b_coef
137 CHARACTER(LEN=2),
INTENT(IN) :: htest
143 REAL,
DIMENSION(KI) :: zwind
144 REAL,
DIMENSION(KI) :: zexna
145 REAL,
DIMENSION(KI) :: zta
146 REAL,
DIMENSION(KI) :: zpa
147 REAL,
DIMENSION(KI) :: zzref
148 REAL,
DIMENSION(KI) :: zuref
149 REAL,
DIMENSION(KI) :: zu
150 REAL,
DIMENSION(KI) :: zv
151 REAL,
DIMENSION(KI) :: zqa
152 REAL,
DIMENSION(KI) :: zpeq_a_coef
153 REAL,
DIMENSION(KI) :: zpeq_b_coef
158 REAL,
DIMENSION(KI) :: zsflux_u
159 REAL,
DIMENSION(KI) :: zsflux_t
160 REAL,
DIMENSION(KI) :: zsflux_q
161 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zforc_u
162 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zdforc_udu
164 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zforc_e
165 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zdforc_ede
167 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zforc_t
168 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zdforc_tdt
170 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zforc_q
171 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zdforc_qdq
173 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zlmo
174 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zlm
175 REAL,
DIMENSION(KI,WM%WSB%NLVL) :: zleps
176 REAL,
DIMENSION(KI) :: zh
177 REAL,
DIMENSION(KI) :: zustar
179 REAL,
DIMENSION(KI) :: zpet_a_coef
180 REAL,
DIMENSION(KI) :: zpet_b_coef
181 REAL,
DIMENSION(KI) :: zpew_a_coef
182 REAL,
DIMENSION(KI) :: zpew_b_coef
184 REAL,
DIMENSION(KI) :: zalfau
185 REAL,
DIMENSION(KI) :: zbetau
186 REAL,
DIMENSION(KI) :: zalfath
187 REAL,
DIMENSION(KI) :: zbetath
188 REAL,
DIMENSION(KI) :: zalfaq
189 REAL,
DIMENSION(KI) :: zbetaq
191 CHARACTER(LEN=1) :: gcoupling
192 REAL(KIND=JPRB) :: zhook_handle
199 IF (lhook) CALL dr_hook(
'COUPLING_WATFLUX_SBL_N',0,zhook_handle)
209 wm%WSB%XZ,wm%WSB%XZF,wm%WSB%XDZ,wm%WSB%XDZF)
216 IF(any(wm%WSB%XT(:,:) == xundef))
THEN
217 CALL
init_water_sbl(wm%WSB%NLVL, ppa, pps, pta, pqa, prhoa, pu, pv, prain, psnow, &
218 psfth, psftq, pzref, puref, wm%W%XTS, wm%W%XZ0, wm%WSB%XZ, &
219 wm%WSB%XT, wm%WSB%XQ, wm%WSB%XU, wm%WSB%XTKE, wm%WSB%XP)
226 CALL
init_forc( zforc_u, zdforc_udu, zforc_e, zdforc_ede, &
227 zforc_t, zdforc_tdt, zforc_q, zdforc_qdq )
233 zlmo = spread(wm%WSB%XLMO,2,wm%WSB%NLVL)
238 zwind = sqrt(pu**2+pv**2)
239 CALL
canopy_evol(ki,wm%WSB%NLVL,ptstep,1,wm%WSB%XZ,zwind,pta,pqa,ppa,prhoa, &
240 zsflux_u,zsflux_t,zsflux_q, &
241 zforc_u,zdforc_udu,zforc_e,zdforc_ede, &
242 zforc_t,zdforc_tdt,zforc_q,zdforc_qdq, &
243 wm%WSB%XZ,wm%WSB%XZF,wm%WSB%XDZ,wm%WSB%XDZF, &
244 wm%WSB%XU,wm%WSB%XTKE,wm%WSB%XT, &
245 wm%WSB%XQ,zlmo,zlm,zleps,wm%WSB%XP,zustar, &
246 zalfau,zbetau,zalfath,zbetath,zalfaq,zbetaq )
255 wm%WSB%XQ(:,1), pu, pv, wm%WSB%XZ(:,1), &
257 prhoa, zalfau, zbetau, zalfath, &
258 zbetath, zalfaq, zbetaq, &
259 zpa, zta, zqa, zu, zv, &
260 zuref, zzref, zexna, &
261 zpew_a_coef, zpew_b_coef, &
262 zpet_a_coef, zpet_b_coef, &
263 zpeq_a_coef, zpeq_b_coef )
272 gcoupling = hcoupling
275 pps, ppa, pta, pqa, pu, pv, &
277 ppew_a_coef, ppew_b_coef, &
278 ppet_a_coef, ppet_b_coef, &
279 ppeq_a_coef, ppeq_b_coef, &
280 zpa, zta, zqa, zu, zv, &
282 zpew_a_coef, zpew_b_coef, &
283 zpet_a_coef, zpet_b_coef, &
284 zpeq_a_coef, zpeq_b_coef )
294 hprogram, gcoupling, ptimec, &
295 ptstep, kyear, kmonth, kday, ptime, &
297 ptsun, pzenith, pzenith2, pazim, &
298 zzref, zuref, zu, zv, zqa, zta, prhoa, psv, pco2, hsv, &
299 prain, psnow, plw, pdir_sw, psca_sw, psw_bands, pps, zpa, &
300 psftq, psfth, psfts, psfco2, psfu, psfv, &
301 ptrad, pdir_alb, psca_alb, pemis, ptsurf, pz0, pz0h, pqsurf, &
302 zpew_a_coef, zpew_b_coef, &
303 zpet_a_coef, zpeq_a_coef, zpet_b_coef, zpeq_b_coef, &
311 IF (.NOT. wm%W%LSBL .AND. lhook) CALL dr_hook(
'COUPLING_WATFLUX_SBL_N',1,zhook_handle)
312 IF (.NOT. wm%W%LSBL)
RETURN
319 CALL
init_forc( zforc_u, zdforc_udu, zforc_e, zdforc_ede, &
320 zforc_t, zdforc_tdt, zforc_q, zdforc_qdq )
322 zsflux_u = - sqrt(psfu(:)**2+psfv(:)**2) / prhoa(:)
323 zsflux_t(:) = psfth(:) / xcpd * zexna(:) / prhoa(:)
324 zsflux_q(:) = psftq(:)
331 zwind = sqrt(pu**2+pv**2)
332 CALL
canopy_evol(ki,wm%WSB%NLVL,ptstep,2,wm%WSB%XZ,zwind,pta,pqa,ppa,prhoa, &
333 zsflux_u,zsflux_t,zsflux_q, &
334 zforc_u,zdforc_udu,zforc_e,zdforc_ede, &
335 zforc_t,zdforc_tdt,zforc_q,zdforc_qdq, &
336 wm%WSB%XZ,wm%WSB%XZF,wm%WSB%XDZ,wm%WSB%XDZF, &
337 wm%WSB%XU,wm%WSB%XTKE,wm%WSB%XT, &
338 wm%WSB%XQ,zlmo,zlm,zleps,wm%WSB%XP,zustar, &
339 zalfau,zbetau,zalfath,zbetath,zalfaq,zbetaq )
341 wm%WSB%XLMO(:) = zlmo(:,wm%WSB%NLVL)
349 IF (wm%W%LSBL .AND. wm%DGW%N2M>=1) CALL
init_2m_10m( wm%WSB%XP(:,2), wm%WSB%XT(:,2), &
350 wm%WSB%XQ(:,2), wm%WSB%XU, wm%WSB%XZ, &
351 pu, pv, zwind, prhoa, &
352 wm%DGW%XT2M, wm%DGW%XQ2M, wm%DGW%XHU2M, &
353 wm%DGW%XZON10M, wm%DGW%XMER10M,&
354 wm%DGW%XWIND10M, wm%DGW%XWIND10M_MAX, wm%DGW%XT2M_MIN, &
355 wm%DGW%XT2M_MAX, wm%DGW%XHU2M_MIN, wm%DGW%XHU2M_MAX )
357 IF (lhook) CALL dr_hook(
'COUPLING_WATFLUX_SBL_N',1,zhook_handle)
subroutine init_coupling_canopy(PP, PPA, PT, PQ, PU, PV, PZ, PXU, PRHOA, PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, PPPA, PTTA, PQQA, PUU, PVV, PUUREF, PZZREF, PEXNA, PPEW_AA_COEF, PPEW_BB_COEF, PPET_AA_COEF, PPET_BB_COEF, PPEQ_AA_COEF, PPEQ_BB_COEF)
subroutine coupling_watflux_n(WM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine canopy_grid_update(KI, KLVL, PH, PZFORC, PZ, PZF, PDZ, PDZF)
subroutine init_coupling(HCOUPLING, PPS, PPA, PTA, PQA, PU, PV, PUREF, PZREF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPET_B_COEF, PPEQ_A_COEF, PPEQ_B_COEF, PPPA, PTTA, PQQA, PUU, PVV, PUUREF, PZZREF, PPEW_AA_COEF, PPEW_BB_COEF, PPET_AA_COEF, PPET_BB_COEF, PPEQ_AA_COEF, PPEQ_BB_COEF)
subroutine coupling_watflux_sbl_n(WM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine init_2m_10m(PP, PT, PQ, PXU, PXZ, PU, PV, PWIND, PRHOA, PT2M, PQ2M, PHU2M, PZON10M, PMER10M, PWIND10M, PWIND10M_MAX, PT2M_MIN, PT2M_MAX, PHU2M_MIN, PHU2M_MAX)
subroutine init_forc(PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ)
subroutine init_water_sbl(KLVL, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW, PSFTH, PSFTQ, PZREF, PUREF, PTS, PZ0, PZ, PT, PQ, PWIND, PTKE, PP)
subroutine canopy_evol(KI, KLVL, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA, PPA, PRHOA, PSFLUX_U, PSFLUX_T, PSFLUX_Q, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ, PZ, PZF, PDZ, PDZF, PU, PTKE, PT, PQ, PLMO, PLM, PLEPS, PP, PUSTAR, PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, ONEUTRAL)