48 subroutine gfs_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav, dry, icy, wet, &
49 lsm, lsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, &
50 adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, &
51 adjvisbmu, adjvisdfu, t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, pahi, &
52 epi, gfluxi, t1, q1, u1, v1, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, &
53 dvisdfi_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, nlwsfci_cpl, nlwsfc_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, &
54 v10mi_cpl, tsfci_cpl, psurfi_cpl, nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, nswsfci_cpl, nswsfc_cpl, nnirbm_cpl, &
55 nnirdf_cpl, nvisbm_cpl, nvisdf_cpl, gflux, evbsa, evcwa, transa, sbsnoa, snowca, snohfa, paha, ep, ecan, etran, edir, waxy, &
56 runoff, srunoff, runof, drain, tecan, tetran, tedir, twa, lheatstrg, h0facu, h0facs, zvfun, hflx, evap, hflxq, hffac, &
57 isot, ivegsrc, islmsk, vtype, stype,scolor, slope, vtype_save, stype_save,scolor_save, slope_save, errmsg, errflg)
61 integer,
intent(in) :: im
62 logical,
intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav
63 logical,
dimension(:),
intent(in) :: dry, icy, wet
64 integer,
intent(in) :: lsm, lsm_noahmp
65 real(kind=kind_phys),
intent(in) :: dtf
67 real(kind=kind_phys),
dimension(:),
intent(in) :: ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, adjsfcdlw, adjsfcdsw, &
68 adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, adjvisbmu, adjvisdfu, &
69 t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, ecan, etran, edir
70 real(kind=kind_phys),
dimension(:),
intent(in),
optional :: &
73 real(kind=kind_phys),
dimension(:),
intent(inout) :: epi, gfluxi, t1, q1, u1, v1,gflux, evbsa, &
74 evcwa, transa, sbsnoa, snowca, snohfa, ep, tecan, tetran, tedir
75 real(kind=kind_phys),
dimension(:),
intent(inout),
optional :: pahi, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, &
76 dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, &
77 nlwsfci_cpl, nlwsfc_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, v10mi_cpl, tsfci_cpl, psurfi_cpl, nnirbmi_cpl, nnirdfi_cpl, &
78 nvisbmi_cpl, nvisdfi_cpl, nswsfci_cpl, nswsfc_cpl, nnirbm_cpl, nnirdf_cpl, nvisbm_cpl, nvisdf_cpl, paha, twa
80 real(kind=kind_phys),
dimension(:),
intent(inout) :: runoff, srunoff
81 real(kind=kind_phys),
dimension(:),
intent(in) :: drain, runof
84 logical,
intent(in) :: lheatstrg
85 real(kind=kind_phys),
intent(in) :: h0facu, h0facs
86 real(kind=kind_phys),
dimension(:),
intent(in) :: zvfun
87 real(kind=kind_phys),
dimension(:),
intent(in) :: hflx, evap
88 real(kind=kind_phys),
dimension(:),
intent(out) :: hflxq
89 real(kind=kind_phys),
dimension(:),
intent(out) :: hffac
91 integer,
intent(in) :: isot, ivegsrc, islmsk(:), vtype_save(:), stype_save(:),scolor_save(:), slope_save(:)
92 integer,
intent(out) :: vtype(:), stype(:),scolor(:), slope(:)
95 character(len=*),
intent(out) :: errmsg
96 integer,
intent(out) :: errflg
99 real(kind=kind_phys),
parameter :: albdf = 0.06_kind_phys
102 real(kind=kind_phys) :: xcosz_loc, ocalnirdf_cpl, ocalnirbm_cpl, ocalvisdf_cpl, ocalvisbm_cpl
111 if (lsm == lsm_noahmp)
then
120 if (cplflx .or. cplchm .or. cplwav)
then
122 u10mi_cpl(i) = u10m(i)
123 v10mi_cpl(i) = v10m(i)
127 if (cplflx .or. cplchm .or. cpllnd)
then
129 tsfci_cpl(i) = tsfc(i)
133 if (cplflx .or. cpllnd)
then
135 dlwsfci_cpl(i) = adjsfcdlw(i)
136 dswsfci_cpl(i) = adjsfcdsw(i)
137 dlwsfc_cpl(i) = dlwsfc_cpl(i) + adjsfcdlw(i)*dtf
138 dswsfc_cpl(i) = dswsfc_cpl(i) + adjsfcdsw(i)*dtf
139 psurfi_cpl(i) = pgr(i)
145 dnirbmi_cpl(i) = adjnirbmd(i)
146 dnirdfi_cpl(i) = adjnirdfd(i)
147 dvisbmi_cpl(i) = adjvisbmd(i)
148 dvisdfi_cpl(i) = adjvisdfd(i)
149 dnirbm_cpl(i) = dnirbm_cpl(i) + adjnirbmd(i)*dtf
150 dnirdf_cpl(i) = dnirdf_cpl(i) + adjnirdfd(i)*dtf
151 dvisbm_cpl(i) = dvisbm_cpl(i) + adjvisbmd(i)*dtf
152 dvisdf_cpl(i) = dvisdf_cpl(i) + adjvisdfd(i)*dtf
153 nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw(i)
155 nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw_wat(i)
157 nlwsfc_cpl(i) = nlwsfc_cpl(i) + nlwsfci_cpl(i)*dtf
166 if (cplflx .or. cpllnd)
then
171 xcosz_loc = max( zero, min( one, xcosz(i) ))
172 ocalnirdf_cpl = 0.06_kind_phys
173 ocalnirbm_cpl = max(albdf, 0.026_kind_phys/(xcosz_loc**1.7_kind_phys+0.065_kind_phys) &
174 & + 0.15_kind_phys * (xcosz_loc-0.1_kind_phys) * (xcosz_loc-0.5_kind_phys) &
176 ocalvisdf_cpl = 0.06_kind_phys
177 ocalvisbm_cpl = ocalnirbm_cpl
179 nnirbmi_cpl(i) = adjnirbmd(i) * (one-ocalnirbm_cpl)
180 nnirdfi_cpl(i) = adjnirdfd(i) * (one-ocalnirdf_cpl)
181 nvisbmi_cpl(i) = adjvisbmd(i) * (one-ocalvisbm_cpl)
182 nvisdfi_cpl(i) = adjvisdfd(i) * (one-ocalvisdf_cpl)
184 nnirbmi_cpl(i) = adjnirbmd(i) - adjnirbmu(i)
185 nnirdfi_cpl(i) = adjnirdfd(i) - adjnirdfu(i)
186 nvisbmi_cpl(i) = adjvisbmd(i) - adjvisbmu(i)
187 nvisdfi_cpl(i) = adjvisdfd(i) - adjvisdfu(i)
189 nswsfci_cpl(i) = nnirbmi_cpl(i) + nnirdfi_cpl(i) &
190 + nvisbmi_cpl(i) + nvisdfi_cpl(i)
191 nswsfc_cpl(i) = nswsfc_cpl(i) + nswsfci_cpl(i)*dtf
192 nnirbm_cpl(i) = nnirbm_cpl(i) + nnirbmi_cpl(i)*dtf
193 nnirdf_cpl(i) = nnirdf_cpl(i) + nnirdfi_cpl(i)*dtf
194 nvisbm_cpl(i) = nvisbm_cpl(i) + nvisbmi_cpl(i)*dtf
195 nvisdf_cpl(i) = nvisdf_cpl(i) + nvisdfi_cpl(i)*dtf
199 if (cplaqm .and. .not.cplflx)
then
203 psurfi_cpl(i) = pgr(i)
206 xcosz_loc = max( zero, min( one, xcosz(i) ))
207 ocalnirdf_cpl = 0.06_kind_phys
208 ocalnirbm_cpl = max(albdf, 0.026_kind_phys/(xcosz_loc**1.7_kind_phys+0.065_kind_phys) &
209 & + 0.15_kind_phys * (xcosz_loc-0.1_kind_phys) * (xcosz_loc-0.5_kind_phys) &
211 ocalvisdf_cpl = 0.06_kind_phys
212 ocalvisbm_cpl = ocalnirbm_cpl
214 nswsfci_cpl(i) = adjnirbmd(i) * (one-ocalnirbm_cpl) + &
215 adjnirdfd(i) * (one-ocalnirdf_cpl) + &
216 adjvisbmd(i) * (one-ocalvisbm_cpl) + &
217 adjvisdfd(i) * (one-ocalvisdf_cpl)
219 nswsfci_cpl(i) = adjnirbmd(i) - adjnirbmu(i) + &
220 adjnirdfd(i) - adjnirdfu(i) + &
221 adjvisbmd(i) - adjvisbmu(i) + &
222 adjvisdfd(i) - adjvisdfu(i)
229 gflux(i) = gflux(i) + gflx(i) * dtf
230 evbsa(i) = evbsa(i) + evbs(i) * dtf
231 evcwa(i) = evcwa(i) + evcw(i) * dtf
232 transa(i) = transa(i) + trans(i) * dtf
233 sbsnoa(i) = sbsnoa(i) + sbsno(i) * dtf
234 snowca(i) = snowca(i) + snowc(i) * dtf
235 snohfa(i) = snohfa(i) + snohf(i) * dtf
236 ep(i) = ep(i) + ep1d(i) * dtf
240 runoff(i) = runoff(i) + (drain(i)+runof(i)) * dtf
241 srunoff(i) = srunoff(i) + runof(i) * dtf
242 tecan(i) = tecan(i) + ecan(i) * dtf
243 tetran(i) = tetran(i) + etran(i) * dtf
244 tedir(i) = tedir(i) + edir(i) * dtf
245 if (lsm == lsm_noahmp)
then
246 paha(i) = paha(i) + pah(i) * dtf
266 if(hflx(i) > 0.)
then
267 hffac(i) = h0facu * zvfun(i)
269 hffac(i) = h0facs * zvfun(i)
271 hffac(i) = 1. + hffac(i)
272 hflxq(i) = hflx(i) / hffac(i)
278 vtype(:) = vtype_save(:)
279 stype(:) = stype_save(:)
280 scolor(:) = scolor_save(:)
281 slope(:) = slope_save(:)
subroutine, public gfs_surface_generic_post_run(im, cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav, dry, icy, wet, lsm, lsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, adjvisbmu, adjvisdfu, t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, pahi, epi, gfluxi, t1, q1, u1, v1, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, nlwsfci_cpl, nlwsfc_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, v10mi_cpl, tsfci_cpl, psurfi_cpl, nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, nswsfci_cpl, nswsfc_cpl, nnirbm_cpl, nnirdf_cpl, nvisbm_cpl, nvisdf_cpl, gflux, evbsa, evcwa, transa, sbsnoa, snowca, snohfa, paha, ep, ecan, etran, edir, waxy, runoff, srunoff, runof, drain, tecan, tetran, tedir, twa, lheatstrg, h0facu, h0facs, zvfun, hflx, evap, hflxq, hffac, isot, ivegsrc, islmsk, vtype, stype, scolor, slope, vtype_save, stype_save, scolor_save, slope_save, errmsg, errflg)