6 SUBROUTINE flag_diag_update (CHF, CHI, CHS, CHT, CHW, DGEI, DGF, DGI, DGMF, DGMI, DGMTO, &
7 dgo, dgs, dgsi, dgu, dgt, dgw, i, u, &
8 ofrac, odiag_grid, k2m, osurf_budget, orad_budget, ocoef, &
9 osurf_vars, kbeq, kdsteq, odiag_ocean, odiag_seaice, &
11 osurf_evap_budget, oflood, opgd_isba, och_no_flux_isba, &
12 osurf_misc_budget_isba, opgd_teb, osurf_misc_budget_teb )
73 USE yomhook
,ONLY : lhook, dr_hook
74 USE parkind1
,ONLY : jprb
99 TYPE(isba_t
),
INTENT(INOUT) :: i
102 LOGICAL,
INTENT(IN) :: ofrac
103 LOGICAL,
INTENT(IN) :: odiag_grid
104 INTEGER,
INTENT(IN) :: k2m
105 LOGICAL,
INTENT(IN) :: osurf_budget
106 LOGICAL,
INTENT(IN) :: orad_budget
107 LOGICAL,
INTENT(IN) :: ocoef
108 LOGICAL,
INTENT(IN) :: osurf_vars
110 INTEGER,
INTENT(IN) :: kbeq
111 INTEGER,
INTENT(IN) :: kdsteq
113 LOGICAL,
INTENT(IN) :: odiag_ocean
114 LOGICAL,
INTENT(IN) :: odiag_seaice
115 LOGICAL,
INTENT(IN) :: owater_profile
116 LOGICAL,
INTENT(IN) :: osurf_evap_budget
117 LOGICAL,
INTENT(IN) :: oflood
118 LOGICAL,
INTENT(IN) :: osurf_misc_budget_isba
119 LOGICAL,
INTENT(IN) :: och_no_flux_isba
120 LOGICAL,
INTENT(IN) :: opgd_isba
121 LOGICAL,
INTENT(IN) :: osurf_misc_budget_teb
122 LOGICAL,
INTENT(IN) :: opgd_teb
127 REAL(KIND=JPRB) :: zhook_handle
129 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE',0,zhook_handle)
132 dgu%LDIAG_GRID = odiag_grid
134 dgu%LSURF_BUDGET = osurf_budget
135 dgu%LRAD_BUDGET = orad_budget
137 dgu%LSURF_VARS = osurf_vars
139 dgu%LSURF_BUDGETC = .false.
140 IF (.NOT.dgu%LRESET_BUDGETC) dgu%LSURF_BUDGETC = .true.
142 IF (u%CSEA ==
'SEAFLX') CALL
flag_sea_update(kbeq, odiag_ocean, odiag_seaice, &
143 dgu%LSURF_BUDGETC, dgu%LRAD_BUDGET, k2m)
144 IF (u%CWATER ==
'FLAKE ') CALL
flag_flake_update(kbeq, owater_profile, dgu%LSURF_BUDGETC, dgu%LRAD_BUDGET, k2m)
145 IF (u%CWATER ==
'WATFLX') CALL
flag_water_update(kbeq, dgu%LSURF_BUDGETC, dgu%LRAD_BUDGET, k2m)
146 IF (u%CNATURE==
'ISBA ') CALL
flag_isba_update(kbeq, kdsteq, osurf_evap_budget, oflood, &
147 opgd_isba, och_no_flux_isba, osurf_misc_budget_isba,&
148 dgu%LSURF_BUDGETC, dgu%LRAD_BUDGET, k2m)
149 IF (u%CTOWN ==
'TEB ') CALL
flag_teb_update(kbeq, opgd_teb, osurf_misc_budget_teb, dgu%LRAD_BUDGET, k2m)
151 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE',1,zhook_handle)
155 SUBROUTINE flag_sea_update(KBEQ, ODIAG_OCEAN, ODIAG_SEAICE, OSURF_BUDGETC, ORAD_BUDGET, K2M)
160 INTEGER,
INTENT(IN) :: kbeq
161 LOGICAL,
INTENT(IN) :: odiag_ocean
162 LOGICAL,
INTENT(IN) :: odiag_seaice
163 LOGICAL,
INTENT(IN) :: osurf_budgetc
164 LOGICAL,
INTENT(IN) :: orad_budget
165 INTEGER,
INTENT(IN) :: k2m
167 REAL(KIND=JPRB) :: zhook_handle
169 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_SEA_UPDATE',0,zhook_handle)
171 dgo%LDIAG_OCEAN = odiag_ocean
172 dgsi%LDIAG_SEAICE = odiag_seaice
173 dgs%LSURF_BUDGETC = osurf_budgetc
174 dgs%LRAD_BUDGET = orad_budget
176 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_SEA_UPDATE',1,zhook_handle)
185 INTEGER,
INTENT(IN) :: kbeq
186 LOGICAL,
INTENT(IN) :: osurf_budgetc
187 LOGICAL,
INTENT(IN) :: orad_budget
188 INTEGER,
INTENT(IN) :: k2m
190 REAL(KIND=JPRB) :: zhook_handle
192 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_WATER_UPDATE',0,zhook_handle)
194 dgw%LSURF_BUDGETC = osurf_budgetc
195 dgw%LRAD_BUDGET = orad_budget
197 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_WATER_UPDATE',1,zhook_handle)
206 INTEGER,
INTENT(IN) :: kbeq
207 LOGICAL,
INTENT(IN) :: owater_profile
208 LOGICAL,
INTENT(IN) :: osurf_budgetc
209 LOGICAL,
INTENT(IN) :: orad_budget
210 INTEGER,
INTENT(IN) :: k2m
212 REAL(KIND=JPRB) :: zhook_handle
214 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_FLAKE_UPDATE',0,zhook_handle)
216 dgmf%LWATER_PROFILE = owater_profile
217 dgf%LSURF_BUDGETC = osurf_budgetc
218 dgf%LRAD_BUDGET = orad_budget
220 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_FLAKE_UPDATE',1,zhook_handle)
226 opgd, och_no_flux, osurf_misc_budget, &
227 osurf_budgetc, orad_budget, k2m)
232 INTEGER,
INTENT(IN) :: kbeq
233 INTEGER,
INTENT(IN) :: kdsteq
234 LOGICAL,
INTENT(IN) :: osurf_evap_budget
235 LOGICAL,
INTENT(IN) :: oflood
236 LOGICAL,
INTENT(IN) :: opgd
237 LOGICAL,
INTENT(IN) :: och_no_flux
238 LOGICAL,
INTENT(IN) :: osurf_misc_budget
239 LOGICAL,
INTENT(IN) :: osurf_budgetc
240 LOGICAL,
INTENT(IN) :: orad_budget
241 INTEGER,
INTENT(IN) :: k2m
243 REAL(KIND=JPRB) :: zhook_handle
245 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_ISBA_UPDATE',0,zhook_handle)
247 chi%SVI%NDSTEQ = kdsteq
248 dgei%LSURF_EVAP_BUDGET = osurf_evap_budget
251 chi%LCH_NO_FLUX = och_no_flux
252 dgmi%LSURF_MISC_BUDGET = osurf_misc_budget
253 dgei%LSURF_BUDGETC = osurf_budgetc
254 dgi%LPATCH_BUDGET = osurf_budgetc
255 dgi%LRAD_BUDGET = orad_budget
257 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_ISBA_UPDATE',1,zhook_handle)
266 INTEGER,
INTENT(IN) :: kbeq
267 LOGICAL,
INTENT(IN) :: opgd
268 LOGICAL,
INTENT(IN) :: osurf_misc_budget
269 LOGICAL,
INTENT(IN) :: orad_budget
270 INTEGER,
INTENT(IN) :: k2m
272 REAL(KIND=JPRB) :: zhook_handle
274 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_TEB_UPDATE',0,zhook_handle)
277 dgmto%LSURF_MISC_BUDGET = osurf_misc_budget
278 dgt%LRAD_BUDGET = orad_budget
280 IF (lhook) CALL dr_hook(
'FLAG_DIAG_UPDATE:FLAG_TEB_UPDATE',1,zhook_handle)
subroutine flag_isba_update(KBEQ, KDSTEQ, OSURF_EVAP_BUDGET, OFLOOD, OPGD, OCH_NO_FLUX, OSURF_MISC_BUDGET, OSURF_BUDGETC, ORAD_BUDGET, K2M)
subroutine flag_sea_update(KBEQ, ODIAG_OCEAN, ODIAG_SEAICE, OSURF_BUDGETC, ORAD_BUDGET, K2M)
subroutine flag_diag_update(CHF, CHI, CHS, CHT, CHW, DGEI, DGF, DGI, DGMF, DGMI, DGMTO, DGO, DGS, DGSI, DGU, DGT, DGW, I, U, OFRAC, ODIAG_GRID, K2M, OSURF_BUDGET, ORAD_BUDGET, OCOEF, OSURF_VARS, KBEQ, KDSTEQ, ODIAG_OCEAN, ODIAG_SEAICE, OWATER_PROFILE, OSURF_EVAP_BUDGET, OFLOOD, OPGD_ISBA, OCH_NO_FLUX_ISBA, OSURF_MISC_BUDGET_ISBA, OPGD_TEB, OSURF_MISC_BUDGET_TEB)
subroutine flag_flake_update(KBEQ, OWATER_PROFILE, OSURF_BUDGETC, ORAD_BUDGET, K2M)
subroutine flag_teb_update(KBEQ, OPGD, OSURF_MISC_BUDGET, ORAD_BUDGET, K2M)
subroutine flag_water_update(KBEQ, OSURF_BUDGETC, ORAD_BUDGET, K2M)