101 IA, IS, IE, JA, JS, JE, &
102 ATM_W, ATM_U, ATM_V, ATM_TEMP, ATM_PRES, ATM_QV, &
103 SFC_DENS, SFC_TEMP, SFC_PRES, &
105 SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_LH, &
108 use scale_const,
only: &
110 use scale_atmos_hydrometeor,
only: &
111 hydrometeor_lhv => atmos_hydrometeor_lhv
112 use scale_atmos_saturation,
only: &
113 saturation_psat_all => atmos_saturation_psat_all
114 use scale_time,
only: &
117 integer,
intent(in) :: ia, is, ie
118 integer,
intent(in) :: ja, js, je
120 real(rp),
intent(in) :: atm_w (ia,ja)
121 real(rp),
intent(in) :: atm_u (ia,ja)
122 real(rp),
intent(in) :: atm_v (ia,ja)
123 real(rp),
intent(in) :: atm_temp(ia,ja)
124 real(rp),
intent(in) :: atm_pres(ia,ja)
125 real(rp),
intent(in) :: atm_qv (ia,ja)
126 real(rp),
intent(in) :: sfc_dens(ia,ja)
127 real(rp),
intent(in) :: sfc_temp(ia,ja)
128 real(rp),
intent(in) :: sfc_pres(ia,ja)
129 real(rp),
intent(in) :: atm_z1 (ia,ja)
131 real(rp),
intent(out) :: sflx_mw(ia,ja)
132 real(rp),
intent(out) :: sflx_mu(ia,ja)
133 real(rp),
intent(out) :: sflx_mv(ia,ja)
134 real(rp),
intent(out) :: sflx_sh(ia,ja)
135 real(rp),
intent(out) :: sflx_lh(ia,ja)
136 real(rp),
intent(out) :: sflx_qv(ia,ja)
137 real(rp),
intent(out) :: u10 (ia,ja)
138 real(rp),
intent(out) :: v10 (ia,ja)
140 real(rp) :: atm_uabs(ia,ja)
143 real(rp) :: sfc_psat (ia,ja)
144 real(rp) :: lhv(ia,ja)
147 real(rp) :: sfc_qv(ia,ja)
152 log_progress(*)
'atmosphere / physics / surface flux / simple'
157 atm_uabs(i,j) = min( atmos_phy_sf_u_maxm, max( atmos_phy_sf_u_minm, &
158 sqrt( atm_w(i,j)**2 + atm_u(i,j)**2 + atm_v(i,j)**2 ) ) )
167 sflx_mw(i,j) = - atmos_phy_sf_const_cm * atm_uabs(i,j) * sfc_dens(i,j) * atm_w(i,j)
168 sflx_mu(i,j) = - atmos_phy_sf_const_cm * atm_uabs(i,j) * sfc_dens(i,j) * atm_u(i,j)
169 sflx_mv(i,j) = - atmos_phy_sf_const_cm * atm_uabs(i,j) * sfc_dens(i,j) * atm_v(i,j)
174 call saturation_psat_all( ia, is, ie, ja, js, je, &
178 call hydrometeor_lhv( &
179 ia, is, ie, ja, js, je, &
186 sfc_qsat = epsvap * sfc_psat(i,j) / ( sfc_pres(i,j) - ( 1.0_rp-epsvap ) * sfc_psat(i,j) )
187 sfc_qv(i,j) = ( 1.0_rp - atmos_phy_sf_bulk_beta ) * atm_qv(i,j) + atmos_phy_sf_bulk_beta * sfc_qsat
189 sflx_sh(i,j) = atmos_phy_sf_const_ch * atm_uabs(i,j) * sfc_dens(i,j) * cpdry * ( sfc_temp(i,j) - atm_temp(i,j) )
190 sflx_lh(i,j) = atmos_phy_sf_const_ce * atm_uabs(i,j) * sfc_dens(i,j) * lhv(i,j) * ( sfc_qv(i,j) - atm_qv(i,j) )
192 sflx_qv(i,j) = sflx_lh(i,j) / lhv(i,j)
202 r10 = 10.0_rp / atm_z1(i,j)
204 u10(i,j) = r10 * atm_u(i,j)
205 v10(i,j) = r10 * atm_v(i,j)
subroutine, public atmos_phy_sf_simple_flux(ia, is, ie, ja, js, je, atm_w, atm_u, atm_v, atm_temp, atm_pres, atm_qv, sfc_dens, sfc_temp, sfc_pres, atm_z1, sflx_mw, sflx_mu, sflx_mv, sflx_sh, sflx_lh, sflx_qv, u10, v10)
Calculate surface fluxes with constant bulk coefficients.