48 character(len=*),
intent(in) :: ocean_type
52 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[SLAB] / Categ[OCEAN SFC] / Origin[SCALElib]' 100 hydrometeor_lhv => atmos_hydrometeor_lhv
102 qsat => atmos_saturation_pres2qsat_all
106 real(RP),
intent(out) :: sst_t(
ia,
ja)
107 real(RP),
intent(out) :: zmflx(
ia,
ja)
108 real(RP),
intent(out) :: xmflx(
ia,
ja)
109 real(RP),
intent(out) :: ymflx(
ia,
ja)
110 real(RP),
intent(out) :: shflx(
ia,
ja)
111 real(RP),
intent(out) :: lhflx(
ia,
ja)
112 real(RP),
intent(out) :: whflx(
ia,
ja)
113 real(RP),
intent(out) :: u10 (
ia,
ja)
114 real(RP),
intent(out) :: v10 (
ia,
ja)
115 real(RP),
intent(out) :: t2 (
ia,
ja)
116 real(RP),
intent(out) :: q2 (
ia,
ja)
118 real(RP),
intent(in) :: tmpa(
ia,
ja)
119 real(RP),
intent(in) :: prsa(
ia,
ja)
120 real(RP),
intent(in) :: wa (
ia,
ja)
121 real(RP),
intent(in) :: ua (
ia,
ja)
122 real(RP),
intent(in) :: va (
ia,
ja)
123 real(RP),
intent(in) :: rhoa(
ia,
ja)
124 real(RP),
intent(in) :: qva (
ia,
ja)
125 real(RP),
intent(in) :: z1 (
ia,
ja)
126 real(RP),
intent(in) :: pbl (
ia,
ja)
127 real(RP),
intent(in) :: prss(
ia,
ja)
128 real(RP),
intent(in) :: lwd (
ia,
ja)
129 real(RP),
intent(in) :: swd (
ia,
ja)
131 real(RP),
intent(in) :: tw (
ia,
ja)
132 real(RP),
intent(in) :: sst (
ia,
ja)
133 real(RP),
intent(in) :: alb_lw(
ia,
ja)
134 real(RP),
intent(in) :: alb_sw(
ia,
ja)
135 real(RP),
intent(in) :: z0m (
ia,
ja)
136 real(RP),
intent(in) :: z0h (
ia,
ja)
137 real(RP),
intent(in) :: z0e (
ia,
ja)
138 real(DP),
intent(in) :: dt
141 real(RP) :: sst1(
ia,
ja)
149 real(RP) :: lhv(
ia,
ja)
160 call hydrometeor_lhv( lhv(:,:), tmpa(:,:) )
166 sst_t(i,j) = ( sst1(i,j) - sst(i,j) ) / dt
203 zmflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * wa(i,j)
204 xmflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * ua(i,j)
205 ymflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * va(i,j)
207 shflx(i,j) = - rhoa(i,j) * ustar * tstar &
208 * cpdry * ( prss(i,j) / pre00 )**( rdry/cpdry )
209 lhflx(i,j) = - rhoa(i,j) * ustar * qstar * lhv(i,j)
212 whflx(i,j) = ( 1.0_rp - alb_sw(i,j) ) * swd(i,j) * (-1.0_rp) &
213 - ( 1.0_rp - alb_lw(i,j) ) * ( lwd(i,j) - stb * sst1(i,j)**4 ) &
214 + shflx(i,j) + lhflx(i,j)
223 u10(i,j) = ua(i,j) * log( 10.0_rp / z0m(i,j) ) / log( z1(i,j) / z0m(i,j) )
224 v10(i,j) = va(i,j) * log( 10.0_rp / z0m(i,j) ) / log( z1(i,j) / z0m(i,j) )
225 t2(i,j) = sst1(i,j) + ( tmpa(i,j) - sst1(i,j) ) * ( log( 2.0_rp / z0m(i,j) ) * log( 2.0_rp / z0h(i,j) ) ) &
226 / ( log( z1(i,j) / z0m(i,j) ) * log( z1(i,j) / z0h(i,j) ) )
227 q2(i,j) = qvsat + ( qva(i,j) - qvsat ) * ( log( 2.0_rp / z0m(i,j) ) * log( 2.0_rp / z0e(i,j) ) ) &
228 / ( log( z1(i,j) / z0m(i,j) ) * log( z1(i,j) / z0e(i,j) ) )
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
real(rp), public const_cpdry
specific heat (dry air,constant pressure) [J/kg/K]
module ATMOSPHERE / Saturation adjustment
subroutine, public ocean_sfc_slab(SST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, WHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TW, SST, ALB_LW, ALB_SW, Z0M, Z0H, Z0E, dt)
real(rp), parameter, public const_stb
Stefan-Boltzman constant [W/m2/K4].
logical, public io_l
output log or not? (this process)
module OCEAN / Surface flux with slab ocean model
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
integer, public ia
of whole cells: x, local, with HALO
real(rp), public const_pre00
pressure reference [Pa]
procedure(bc), pointer, public bulkflux
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
integer, public js
start point of inner domain: y, local
subroutine, public ocean_sfc_slab_setup(OCEAN_TYPE)
Setup.
integer, public ie
end point of inner domain: x, local
integer, public io_fid_log
Log file ID.
integer, public ja
of whole cells: y, local, with HALO