43 logical,
private :: sst_update
45 logical,
allocatable,
private :: is_ocn(:,:)
57 character(len=*),
intent(in) :: OCEAN_TYPE
63 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[SLAB] / Categ[OCEAN SFC] / Origin[SCALElib]' 65 select case( ocean_type )
68 case (
'SLAB',
'FILE' )
71 write(*,*)
'xxx wrong OCEAN_TYPE. Check!' 76 allocate( is_ocn(
ia,
ja) )
133 atmos_thermodyn_templhv
135 qsat => atmos_saturation_pres2qsat_all
139 real(RP),
intent(out) :: SST_t(
ia,
ja)
140 real(RP),
intent(out) :: ZMFLX(
ia,
ja)
141 real(RP),
intent(out) :: XMFLX(
ia,
ja)
142 real(RP),
intent(out) :: YMFLX(
ia,
ja)
143 real(RP),
intent(out) :: SHFLX(
ia,
ja)
144 real(RP),
intent(out) :: LHFLX(
ia,
ja)
145 real(RP),
intent(out) :: WHFLX(
ia,
ja)
146 real(RP),
intent(out) :: U10 (
ia,
ja)
147 real(RP),
intent(out) :: V10 (
ia,
ja)
148 real(RP),
intent(out) :: T2 (
ia,
ja)
149 real(RP),
intent(out) :: Q2 (
ia,
ja)
151 real(RP),
intent(in) :: TMPA(
ia,
ja)
152 real(RP),
intent(in) :: PRSA(
ia,
ja)
153 real(RP),
intent(in) :: WA (
ia,
ja)
154 real(RP),
intent(in) :: UA (
ia,
ja)
155 real(RP),
intent(in) :: VA (
ia,
ja)
156 real(RP),
intent(in) :: RHOA(
ia,
ja)
157 real(RP),
intent(in) :: QVA (
ia,
ja)
158 real(RP),
intent(in) :: Z1 (
ia,
ja)
159 real(RP),
intent(in) :: PBL (
ia,
ja)
160 real(RP),
intent(in) :: PRSS(
ia,
ja)
161 real(RP),
intent(in) :: LWD (
ia,
ja)
162 real(RP),
intent(in) :: SWD (
ia,
ja)
164 real(RP),
intent(in) :: TW (
ia,
ja)
165 real(RP),
intent(in) :: SST (
ia,
ja)
166 real(RP),
intent(in) :: ALB_LW(
ia,
ja)
167 real(RP),
intent(in) :: ALB_SW(
ia,
ja)
168 real(RP),
intent(in) :: Z0M (
ia,
ja)
169 real(RP),
intent(in) :: Z0H (
ia,
ja)
170 real(RP),
intent(in) :: Z0E (
ia,
ja)
171 real(DP),
intent(in) :: dt
174 real(RP) :: SST1(
ia,
ja)
182 real(RP) :: LHV(
ia,
ja)
194 call atmos_thermodyn_templhv( lhv, tmpa )
199 if( is_ocn(i,j) )
then 225 zmflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * wa(i,j)
226 xmflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * ua(i,j)
227 ymflx(i,j) = -rhoa(i,j) * ustar**2 / uabs * va(i,j)
229 shflx(i,j) = -cpdry * rhoa(i,j) * ustar * tstar
230 lhflx(i,j) = -lhv(i,j) * rhoa(i,j) * ustar * qstar
233 whflx(i,j) = ( 1.0_rp - alb_sw(i,j) ) * swd(i,j) * (-1.0_rp) &
234 - ( 1.0_rp - alb_lw(i,j) ) * ( lwd(i,j) - stb * sst1(i,j)**4 ) &
235 + shflx(i,j) + lhflx(i,j)
238 u10(i,j) = ua(i,j) *
log( 10.0_rp / z0m(i,j) ) /
log( z1(i,j) / z0m(i,j) )
239 v10(i,j) = va(i,j) *
log( 10.0_rp / z0m(i,j) ) /
log( z1(i,j) / z0m(i,j) )
240 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) ) ) &
241 / (
log( z1(i,j) / z0m(i,j) ) *
log( z1(i,j) / z0h(i,j) ) )
242 q2(i,j) = sqv + ( qva(i,j) - sqv ) * (
log( 2.0_rp / z0m(i,j) ) *
log( 2.0_rp / z0e(i,j) ) ) &
243 / (
log( z1(i,j) / z0m(i,j) ) *
log( z1(i,j) / z0e(i,j) ) )
263 if( sst_update )
then 266 sst_t(i,j) = ( sst1(i,j) - sst(i,j) ) / dt
293 real(RP),
intent(out) :: SFC_albedo_t(
ia,
ja,2)
294 real(RP),
intent(in) :: SFC_albedo (
ia,
ja,2)
295 real(RP),
intent(in) :: cosSZA (
ia,
ja)
296 real(DP),
intent(in) :: dt
299 real(RP) :: SFC_albedo1(
ia,
ja,2)
302 real(RP),
parameter :: c_ocean_albedo(3) = (/ -0.747900_rp, &
311 am1 = max( min( cossza(i,j), 0.961_rp ), 0.0349_rp )
314 sfc_albedo1(i,j,i_sw) = exp( ( c_ocean_albedo(3)*am1 + c_ocean_albedo(2) )*am1 + c_ocean_albedo(1) )
321 sfc_albedo_t(i,j,i_lw) = 0.0_rp
322 sfc_albedo_t(i,j,i_sw) = ( sfc_albedo1(i,j,i_sw) - sfc_albedo(i,j,i_sw) ) / dt
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
integer, public const_i_lw
long-wave radiation index
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)
subroutine, public prc_mpistop
Abort MPI.
real(rp), parameter, public const_stb
Stefan-Boltzman constant [W/m2/K4].
logical, public io_l
output log or not? (this process)
subroutine, public ocean_sfc_slab_simplealbedo(SFC_albedo_t, SFC_albedo, cosSZA, dt)
module OCEAN / Surface flux with slab ocean model
integer, public ia
of x whole cells (local, with HALO)
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 log(type, message)
subroutine, public ocean_sfc_slab_setup(OCEAN_TYPE)
Setup.
integer, public ie
end point of inner domain: x, local
module ATMOSPHERE / Thermodynamics
integer, public const_i_sw
short-wave radiation index
integer, public io_fid_log
Log file ID.
integer, public ja
of y whole cells (local, with HALO)