43 logical,
private :: LAND_PHY_UPDATE_BOTTOM_TEMP = .false.
44 logical,
private :: LAND_PHY_UPDATE_BOTTOM_WATER = .false.
46 real(RP),
private :: WATER_DENSCS
60 character(len=*),
intent(in) :: land_type
62 namelist / param_land_phy_slab / &
63 land_phy_update_bottom_temp, &
64 land_phy_update_bottom_water
70 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[SLAB] / Categ[LAND PHY] / Origin[SCALElib]' 74 read(
io_fid_conf,nml=param_land_phy_slab,iostat=ierr)
76 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 77 elseif( ierr > 0 )
then 78 write(*,*)
'xxx Not appropriate names in namelist PARAM_LAND_PHY_SLAB. Check!' 83 water_denscs = dwatr * cl
86 if(
io_l )
write(
io_fid_log,*)
'*** Update soil temperature of bottom layer? : ', land_phy_update_bottom_temp
87 if(
io_l )
write(
io_fid_log,*)
'*** Update soil moisture of bottom layer? : ', land_phy_update_bottom_water
113 matrix_solver_tridiagonal
117 real(RP),
intent(out) :: temp_t (
lkmax,
ia,
ja)
118 real(RP),
intent(out) :: water_t (
lkmax,
ia,
ja)
120 real(RP),
intent(in) :: temp (
lkmax,
ia,
ja)
121 real(RP),
intent(in) :: water (
lkmax,
ia,
ja)
122 real(RP),
intent(in) :: waterlimit (
ia,
ja)
123 real(RP),
intent(in) :: thermalcond (
ia,
ja)
124 real(RP),
intent(in) :: heatcapacity(
ia,
ja)
125 real(RP),
intent(in) :: waterdiff (
ia,
ja)
126 real(RP),
intent(in) :: sflx_gh (
ia,
ja)
127 real(RP),
intent(in) :: sflx_prec (
ia,
ja)
128 real(RP),
intent(in) :: sflx_evap (
ia,
ja)
129 real(RP),
intent(in) :: cdz (
lkmax)
130 real(DP),
intent(in) :: dt
155 u(
lks,i,j) = -2.0_rp * waterdiff(i,j) / ( cdz(
lks) * ( cdz(
lks) + cdz(
lks+1) ) ) * dt
156 l(
lke,i,j) = -2.0_rp * waterdiff(i,j) / ( cdz(
lke) * ( cdz(
lke) + cdz(
lke-1) ) ) * dt
159 m(
lks,i,j) = 1.0_rp - l(
lks,i,j) - u(
lks,i,j)
160 m(
lke,i,j) = 1.0_rp - l(
lke,i,j) - u(
lke,i,j)
167 l(k,i,j) = -2.0_rp * waterdiff(i,j) / ( cdz(k) * ( cdz(k) + cdz(k-1) ) ) * dt
168 u(k,i,j) = -2.0_rp * waterdiff(i,j) / ( cdz(k) * ( cdz(k) + cdz(k+1) ) ) * dt
169 m(k,i,j) = 1.0_rp - l(k,i,j) - u(k,i,j)
177 v(
lks,i,j) = water(
lks,i,j) + ( sflx_prec(i,j) - sflx_evap(i,j) ) / ( cdz(
lks) * dwatr ) * dt
184 v(k,i,j) = water(k,i,j)
189 call matrix_solver_tridiagonal(
lkmax, &
198 if ( .not. land_phy_update_bottom_water )
then 201 water1(
lke,i,j) = water(
lke,i,j)
212 water1(k,i,j) = min( water1(k,i,j), waterlimit(i,j) )
221 land_denscs(k,i,j) = ( 1.0_rp - waterlimit(i,j) ) * heatcapacity(i,j) + water_denscs * water1(k,i,j)
222 thermaldiff(k,i,j) = thermalcond(i,j) / land_denscs(k,i,j)
231 u(
lks,i,j) = -2.0_rp * thermaldiff(
lks,i,j) / ( cdz(
lks) * ( cdz(
lks) + cdz(
lks+1) ) ) * dt
232 l(
lke,i,j) = -2.0_rp * thermaldiff(
lke,i,j) / ( cdz(
lke) * ( cdz(
lke) + cdz(
lke-1) ) ) * dt
235 m(
lks,i,j) = 1.0_rp - l(
lks,i,j) - u(
lks,i,j)
236 m(
lke,i,j) = 1.0_rp - l(
lke,i,j) - u(
lke,i,j)
243 l(k,i,j) = -2.0_rp * thermaldiff(k,i,j) / ( cdz(k) * ( cdz(k) + cdz(k-1) ) ) * dt
244 u(k,i,j) = -2.0_rp * thermaldiff(k,i,j) / ( cdz(k) * ( cdz(k) + cdz(k+1) ) ) * dt
245 m(k,i,j) = 1.0_rp - l(k,i,j) - u(k,i,j)
253 v(
lks,i,j) = temp(
lks,i,j) - sflx_gh(i,j) / ( land_denscs(
lks,i,j) * cdz(
lks) ) * dt
260 v(k,i,j) = temp(k,i,j)
265 call matrix_solver_tridiagonal(
lkmax, &
274 if ( .not. land_phy_update_bottom_temp )
then 277 temp1(
lke,i,j) = temp(
lke,i,j)
287 temp_t(k,i,j) = ( temp1(k,i,j) - temp(k,i,j) ) / dt
288 water_t(k,i,j) = ( water1(k,i,j) - water(k,i,j) ) / dt
290 temp_t(k,i,j) = 0.0_rp
291 water_t(k,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 land_phy_slab_setup(LAND_TYPE)
Setup.
logical, public io_nml
output log or not? (for namelist, this process)
integer, public ia
of whole cells: x, local, with HALO
subroutine, public land_phy_slab(TEMP_t, WATER_t, TEMP, WATER, WaterLimit, ThermalCond, HeatCapacity, WaterDiff, SFLX_GH, SFLX_prec, SFLX_evap, CDZ, dt)
Physical processes for land submodel.
integer, public js
start point of inner domain: y, local
integer, public ie
end point of inner domain: x, local
module LAND / Physics Slab model
integer, public io_fid_conf
Config file ID.
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
integer, public io_fid_log
Log file ID.
integer, public io_fid_nml
Log file ID (only for output namelist)
integer, public ja
of whole cells: y, local, with HALO