43 logical :: initialized = .false.
53 if ( initialized )
return 56 log_info(
"CPL_PHY_SFC_FIXED_TEMP_setup",*)
'Setup' 77 ZMFLX, XMFLX, YMFLX, &
87 qsat => atmos_saturation_pres2qsat_all
92 integer,
intent(in) :: ia, is, ie
93 integer,
intent(in) :: JA, JS, JE
94 real(RP),
intent(in) :: TMPA (ia,ja)
95 real(RP),
intent(in) :: PRSA (ia,ja)
96 real(RP),
intent(in) :: WA (ia,ja)
97 real(RP),
intent(in) :: UA (ia,ja)
98 real(RP),
intent(in) :: VA (ia,ja)
99 real(RP),
intent(in) :: RHOA (ia,ja)
100 real(RP),
intent(in) :: QVA (ia,ja)
101 real(RP),
intent(in) :: LH (ia,ja)
102 real(RP),
intent(in) :: Z1 (ia,ja)
103 real(RP),
intent(in) :: PBL (ia,ja)
104 real(RP),
intent(in) :: RHOS (ia,ja)
105 real(RP),
intent(in) :: PRSS (ia,ja)
107 real(RP),
intent(in) :: TMPS (ia,ja)
108 real(RP),
intent(in) :: QVEF (ia,ja)
110 real(RP),
intent(in) :: Rb (ia,ja)
111 real(RP),
intent(in) :: Z0M (ia,ja)
112 real(RP),
intent(in) :: Z0H (ia,ja)
113 real(RP),
intent(in) :: Z0E (ia,ja)
114 logical,
intent(in) :: calc_flag(ia,ja)
115 real(DP),
intent(in) :: dt
116 real(RP),
intent(out) :: ZMFLX (ia,ja)
117 real(RP),
intent(out) :: XMFLX (ia,ja)
118 real(RP),
intent(out) :: YMFLX (ia,ja)
119 real(RP),
intent(out) :: SHFLX (ia,ja)
120 real(RP),
intent(out) :: QVFLX (ia,ja)
121 real(RP),
intent(out) :: GFLX (ia,ja)
122 real(RP),
intent(out) :: U10 (ia,ja)
123 real(RP),
intent(out) :: V10 (ia,ja)
124 real(RP),
intent(out) :: T2 (ia,ja)
125 real(RP),
intent(out) :: Q2 (ia,ja)
152 log_progress(*)
'coupler / physics / surface / FIXED-TEMP' 167 if ( calc_flag(i,j) )
then 169 qdry = 1.0_rp - qva(i,j)
170 rtot = qdry * rdry + qva(i,j) * rvap
172 call qsat( tmps(i,j), prss(i,j), qdry, qvsat )
174 qvs = ( 1.0_rp-qvef(i,j) ) * qva(i,j) &
175 + ( qvef(i,j) ) * qvsat
199 zmflx(i,j) = -rhos(i,j) * ustar * ustar / uabs * wa(i,j)
200 xmflx(i,j) = -rhos(i,j) * ustar * ustar / uabs * ua(i,j)
201 ymflx(i,j) = -rhos(i,j) * ustar * ustar / uabs * va(i,j)
202 shflx(i,j) = -rhos(i,j) * ustar * tstar * cpdry
203 qvflx(i,j) = -rhos(i,j) * ustar * qstar * ra / ( ra+rb(i,j) )
219 res = swd - swu + lwd - lwu - shflx(i,j) - qvflx(i,j) * lh(i,j)
231 u10(i,j) = ua(i,j) * log( 10.0_rp / z0m(i,j) ) / log( z1(i,j) / z0m(i,j) )
232 v10(i,j) = va(i,j) * log( 10.0_rp / z0m(i,j) ) / log( z1(i,j) / z0m(i,j) )
233 t2(i,j) = tmps(i,j) + ( tmpa(i,j) - tmps(i,j) ) * log( 2.0_rp / z0h(i,j) ) / log( z1(i,j) / z0h(i,j) )
234 q2(i,j) = qvs + ( qva(i,j) - qvs ) * log( 2.0_rp / z0e(i,j) ) / log( z1(i,j) / z0e(i,j) )
module coupler / surface fixed temp model
real(rp), public const_cpdry
specific heat (dry air,constant pressure) [J/kg/K]
module atmosphere / saturation
real(rp), parameter, public const_stb
Stefan-Boltzman constant [W/m2/K4].
module coupler / surface-atmospehre
integer, parameter, public i_r_vis
subroutine, public cpl_phy_sfc_fixed_temp_setup
Setup.
integer, parameter, public n_rad_dir
integer, parameter, public n_rad_rgn
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
real(rp), public const_pre00
pressure reference [Pa]
procedure(bc), pointer, public bulkflux
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
integer, parameter, public i_r_direct
integer, parameter, public i_r_nir
integer, parameter, public i_r_ir
integer, parameter, public i_r_diffuse
subroutine, public cpl_phy_sfc_fixed_temp(IA, IS, IE, JA, JS, JE, TMPA, PRSA, WA, UA, VA, RHOA, QVA, LH, Z1, PBL, RHOS, PRSS, RFLXD, TMPS, QVEF, ALBEDO, Rb, Z0M, Z0H, Z0E, calc_flag, dt, ZMFLX, XMFLX, YMFLX, SHFLX, QVFLX, GFLX, U10, V10, T2, Q2)