43 real(RP),
private :: ocean_phy_slab_depth = 10.0_rp
44 logical,
private :: ocean_phy_slab_fixedsst = .false.
45 real(RP),
private :: ocean_phy_slab_heatcapacity
47 logical,
allocatable,
private :: is_ocn(:,:)
63 character(len=*),
intent(in) :: OCEAN_TYPE
65 namelist / param_ocean_phy_slab / &
73 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[SLAB] / Categ[OCEAN PHY] / Origin[SCALElib]' 77 read(
io_fid_conf,nml=param_ocean_phy_slab,iostat=ierr)
79 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 80 elseif( ierr > 0 )
then 81 write(*,*)
'xxx Not appropriate names in namelist PARAM_OCEAN_PHY_SLAB. Check!' 86 if( ocean_type ==
'CONST' )
then 87 ocean_phy_slab_fixedsst = .true.
88 else if( ocean_type ==
'SLAB' )
then 89 ocean_phy_slab_fixedsst = .false.
91 write(*,*)
'xxx wrong OCEAN_TYPE. Check!' 95 ocean_phy_slab_heatcapacity = dwatr * cl * ocean_phy_slab_depth
98 if(
io_l )
write(
io_fid_log,*)
'*** Prevent SST change? : ', ocean_phy_slab_fixedsst
99 if(
io_l )
write(
io_fid_log,*)
'*** Slab ocean depth [m] : ', ocean_phy_slab_depth
100 if(
io_l )
write(
io_fid_log,*)
'*** Ocean heat capacity [J/K/m2] : ', ocean_phy_slab_heatcapacity
103 allocate( is_ocn(
ia,
ja) )
110 is_ocn(i,j) = .false.
130 real(RP),
intent(out) :: OCEAN_TEMP_t (
ia,
ja)
131 real(RP),
intent(in) :: OCEAN_TEMP (
ia,
ja)
132 real(RP),
intent(in) :: OCEAN_SFLX_WH (
ia,
ja)
133 real(RP),
intent(in) :: OCEAN_SFLX_prec(
ia,
ja)
134 real(RP),
intent(in) :: OCEAN_SFLX_evap(
ia,
ja)
135 real(DP),
intent(in) :: dt
142 if( ocean_phy_slab_fixedsst )
then 145 ocean_temp_t(i,j) = 0.0_rp
151 if( is_ocn(i,j) )
then 152 ocean_temp_t(i,j) = - ocean_sflx_wh(i,j) / ocean_phy_slab_heatcapacity
154 ocean_temp_t(i,j) = 0.0_rp
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
subroutine, public prc_mpistop
Abort MPI.
real(rp), parameter, public const_dwatr
density of water [kg/m3]
logical, public io_l
output log or not? (this process)
real(rp), parameter, public const_cl
specific heat (liquid water) [J/kg/K]
subroutine, public ocean_phy_slab_setup(OCEAN_TYPE)
Setup.
module OCEAN / Physics Slab model
integer, public ia
of x whole cells (local, with HALO)
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
integer, public js
start point of inner domain: y, local
integer, public ie
end point of inner domain: x, local
logical, public io_lnml
output log or not? (for namelist, this process)
subroutine, public ocean_phy_slab(OCEAN_TEMP_t, OCEAN_TEMP, OCEAN_SFLX_WH, OCEAN_SFLX_prec, OCEAN_SFLX_evap, dt)
Slab ocean model.
integer, public io_fid_conf
Config file ID.
integer, public io_fid_log
Log file ID.
integer, public ja
of y whole cells (local, with HALO)