Go to the documentation of this file.
76 log_info(
"LAND_driver_setup",*)
'Setup'
86 log_error(
"LAND_driver_setup",*)
'LAND_DYN_TYPE is invalid: ', trim(
land_dyn_type)
96 log_error(
"LAND_driver_setup",*)
'LAND_SFC_TYPE is invalid: ', trim(
land_sfc_type)
101 case (
'NONE',
'OFF' )
103 log_warn(
"LAND_driver_setup",*)
'SNOW model is enabled'
104 log_warn(
"LAND_driver_setup",*)
'SNOW model is on experimental stage.'
105 log_warn(
"LAND_driver_setup",*)
'Use this with your own risk.'
108 log_error(
"LAND_driver_setup",*)
'SNOW_TYPE is invalid: ', trim(
snow_type)
128 log_info(
"LAND_driver_finalize",*)
'Finalize'
138 case (
'NONE',
'OFF' )
162 hydrometeor_lhv => atmos_hydrometeor_lhv, &
163 hydrometeor_lhs => atmos_hydrometeor_lhs, &
181 bulkflux_diagnose_scales
260 logical,
intent(in) :: force
263 real(
rp),
parameter :: beta_max = 1.0_rp
279 real(
rp) :: snow_atmos_sflx_sh (
lia,
lja)
280 real(
rp) :: snow_atmos_sflx_lh (
lia,
lja)
281 real(
rp) :: snow_atmos_sflx_gh (
lia,
lja)
282 real(
rp) :: snow_atmos_sflx_qv (
lia,
lja)
283 real(
rp) :: snow_land_sflx_gh (
lia,
lja)
284 real(
rp) :: snow_land_sflx_water(
lia,
lja)
285 real(
rp) :: snow_land_sflx_engi (
lia,
lja)
288 real(
rp) :: snow_atmos_sflx_mw (
lia,
lja)
289 real(
rp) :: snow_atmos_sflx_mu (
lia,
lja)
290 real(
rp) :: snow_atmos_sflx_mv (
lia,
lja)
307 integer ::
k, i, j, iq, idir
348 atmos_w(i,j) =
atmos_u(i,j) * tansl_x(i,j) +
atmos_v(i,j) * tansl_y(i,j)
389 exists_land(:,:), dt, &
393 snow_albedo(:,:,:), &
394 snow_atmos_sflx_sh(:,:), &
395 snow_atmos_sflx_lh(:,:), snow_atmos_sflx_qv(:,:), &
397 snow_atmos_sflx_gh(:,:), snow_land_sflx_gh(:,:), &
398 snow_land_sflx_water(:,:), &
405 if ( exists_land(i,j) )
then
430 snow_qvef(i,j) = 1.0_rp
446 snow_atmos_sflx_mw(:,:), &
447 snow_atmos_sflx_mu(:,:), &
448 snow_atmos_sflx_mv(:,:), &
452 snow_u10(:,:), snow_v10(:,:), &
453 snow_t2(:,:), snow_q2(:,:) )
455 call file_history_in( snow_frac(:,:),
'LAND_SNOW_frac',
'Snow fraction on land subgrid',
'1' )
456 call file_history_in( snow_albedo(:,:,i_sw),
'LAND_SNOW_ALB_SW',
'Snow surface albedo (short wave)',
'1' )
457 call file_history_in( snow_albedo(:,:,i_lw),
'LAND_SNOW_ALB_LW',
'Snow surface albedo (long wave)',
'1' )
458 call file_history_in( snow_atmos_sflx_sh(:,:),
'LAND_SNOW_SFLX_SH',
'Snow surface sensible heat flux',
'J/m2/s' )
459 call file_history_in( snow_atmos_sflx_lh(:,:),
'LAND_SNOW_SFLX_LH',
'Snow surface latent heat flux',
'J/m2/s' )
460 call file_history_in( snow_atmos_sflx_gh(:,:),
'LAND_SNOW_SFLX_GH',
'Snowpack received heat flux',
'J/m2/s' )
461 call file_history_in( snow_atmos_sflx_mw(:,:),
'LAND_SNOW_SFLX_MW',
'Snow surface w-momentum flux',
'J/m2/s' )
462 call file_history_in( snow_atmos_sflx_mu(:,:),
'LAND_SNOW_SFLX_MU',
'Snow surface u-momentum flux',
'J/m2/s' )
463 call file_history_in( snow_atmos_sflx_mv(:,:),
'LAND_SNOW_SFLX_MV',
'Snow surface v-momentum flux',
'J/m2/s' )
464 call file_history_in( snow_u10(:,:),
'LAND_SNOW_U10',
'Wind velocity u at 10 m on snow surface',
'm/s' )
465 call file_history_in( snow_v10(:,:),
'LAND_SNOW_V10',
'Wind velocity v at 10 m on snow surface',
'm/s' )
466 call file_history_in( snow_t2(:,:),
'LAND_SNOW_T2',
'Air temperature at 2m on snow surface',
'K' )
467 call file_history_in( snow_q2(:,:),
'LAND_SNOW_Q2',
'Specific humidity at 2m on snow surface',
'kg/kg' )
469 call file_history_in( snow_land_sflx_gh(:,:),
'LAND_SNOW_LAND_SFLX_GH',
'land surface ground heat flux under snow',
'J/m2/s' )
470 call file_history_in( snow_land_sflx_water(:,:),
'LAND_SNOW_LAND_SFLX_water',
'land surface water mass flux under snow',
'kg/m2/s' )
471 call file_history_in( snow_land_sflx_engi(:,:),
'LAND_SNOW_LAND_SFLX_ENGI',
'land surface internal energy flux under snow',
'kg/m2/s' )
481 if ( exists_land(i,j) )
then
483 land_wstr(i,j) = total * cdz(
lks) &
488 land_qvef(i,j) = 0.0_rp
513 if ( exists_land(i,j) )
then
532 if ( exists_land(i,j) )
then
553 land_temp1(:,:), land_wstr(:,:), land_qvef(:,:), &
560 exists_land(:,:), dt, &
571 case (
'FIXED-TEMP' )
577 if ( exists_land(i,j) )
then
588 if ( exists_land(i,j) )
then
613 exists_land(:,:), dt, &
628 if ( exists_land(i,j) )
then
645 if ( exists_land(i,j) )
then
656 call file_history_in(
land_sflx_mw(:,:),
'SOIL_SFLX_MW',
'soil surface w-momentum flux (upward)',
'kg/m2/s' )
657 call file_history_in(
land_sflx_mu(:,:),
'SOIL_SFLX_MU',
'soil surface u-momentum flux (upward)',
'kg/m2/s' )
658 call file_history_in(
land_sflx_mv(:,:),
'SOIL_SFLX_MV',
'soil surface v-momentum flux (upward)',
'kg/m2/s' )
659 call file_history_in(
land_sflx_sh(:,:),
'SOIL_SFLX_SH',
'soil surface sensible heat flux (upward)',
'J/m2/s' )
660 call file_history_in(
land_sflx_lh(:,:),
'SOIL_SFLX_LH',
'soil surface latent heat flux (upward)',
'J/m2/s' )
661 call file_history_in(
land_u10(:,:),
'LAND_SOIL_U10',
'Wind velocity u at 10 m on soil surface',
'm/s' )
662 call file_history_in(
land_v10(:,:),
'LAND_SOIL_V10',
'Wind velocity v at 10 m on soil surface',
'm/s' )
663 call file_history_in(
land_t2(:,:),
'LAND_SOIL_T2',
'Air temperature at 2m on soil surface',
'K' )
664 call file_history_in(
land_q2(:,:),
'LAND_SOIL_Q2',
'Specific humidity at 2m on soil surface',
'kg/kg' )
671 if ( exists_land(i,j) )
then
686 land_sflx_gh(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_gh(i,j) &
688 land_sflx_water(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_water(i,j) &
690 land_sflx_engi(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_engi(i,j) &
693 land_sflx_mw(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_mw(i,j) &
695 land_sflx_mu(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_mu(i,j) &
697 land_sflx_mv(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_mv(i,j) &
699 land_sflx_sh(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_sh(i,j) &
701 land_sflx_lh(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_lh(i,j) &
703 sflx_qv(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_qv(i,j) &
704 + ( 1.0_rp-snow_frac(i,j) ) * sflx_qv(i,j)
706 land_u10(i,j) = ( snow_frac(i,j) ) * snow_u10(i,j) &
707 + ( 1.0_rp-snow_frac(i,j) ) *
land_u10(i,j)
708 land_v10(i,j) = ( snow_frac(i,j) ) * snow_v10(i,j) &
709 + ( 1.0_rp-snow_frac(i,j) ) *
land_v10(i,j)
710 land_t2(i,j) = ( snow_frac(i,j) ) * snow_t2(i,j) &
711 + ( 1.0_rp-snow_frac(i,j) ) *
land_t2(i,j)
712 land_q2(i,j) = ( snow_frac(i,j) ) * snow_q2(i,j) &
713 + ( 1.0_rp-snow_frac(i,j) ) *
land_q2(i,j)
726 mask = exists_land(:,:) )
735 if ( exists_land(i,j) )
then
820 exists_land(:,:), lcdz(:), &
834 if ( exists_land(i,j) )
then
930 logical,
intent(in) :: countup
real(rp), dimension(:,:,:), allocatable, public land_temp
temperature of each soil layer [K]
real(dp), public time_nowdaysec
second of current time [sec]
subroutine, public prc_abort
Abort Process.
integer, parameter, public i_r_direct
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
real(rp), dimension(:,:), allocatable, public atmos_temp
real(rp), dimension(:,:), allocatable, public snow_sfc_temp
snow surface temperature [K]
real(rp), dimension(:,:), allocatable, public atmos_qv
integer, parameter, public i_stomataresist
real(rp), dimension(:,:), allocatable, public land_sflx_mu
land surface u-momentum flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, target, public land_tstar
temperature scale [K]
real(rp), dimension(:), allocatable, public land_grid_cartesc_cdz
z-length of control volume [m]
real(rp), dimension(:,:,:,:), allocatable, public land_sfc_albedo
land surface albedo (direct/diffuse,IR/near-IR/VIS) (0-1)
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_z1
Height of the lowermost grid from surface (cell center) [m].
integer, parameter, public i_r_diffuse
real(rp), dimension(:,:), allocatable, public topography_tansl_y
tan(slope_y)
real(rp), dimension(:,:), allocatable, public land_sflx_engi
land surface internal energy flux [J/m2/s]
integer, parameter, public i_alblw
character(len=h_short), public land_sfc_type
integer, parameter, public i_albsw
real(rp), dimension(:,:), allocatable, public atmos_w
real(rp), dimension(:,:), pointer, public soil_ustar
real(rp), dimension(:,:,:), allocatable, public land_water_t
tendency of LAND_WATER
real(rp), dimension(:,:,:), allocatable, public land_water
moisture of each soil layer [m3/m3]
real(rp), dimension(:,:), allocatable, public land_runoff
runoff of the land water [kg/m2/s]
integer, parameter, public i_r_ir
real(rp), dimension(:,:), allocatable, public atmos_u
subroutine, public prof_rapstart(rapname_base, level, disable_barrier)
Start raptime.
module atmosphere / hydrometeor
real(rp), dimension(:,:), allocatable, public land_sflx_mv
land surface v-momentum flux [kg/m2/s]
integer, parameter, public i_waterdiff
real(rp), dimension(:,:), allocatable, public atmos_cossza
integer, parameter, public i_z0m
real(rp), dimension(:,:,:,:), allocatable, public atmos_sflx_rad_dn
real(rp), dimension(:,:,:), allocatable, public land_ice_t
tendency of LAND_ICE
real(rp), dimension(:,:), allocatable, public snow_wstar
logical, dimension(:,:), allocatable, public landuse_exists_land
land calculation flag
logical, public atmos_hydrometeor_dry
subroutine, public cpl_phy_sfc_fixed_temp_setup
Setup.
subroutine, public land_phy_snow_ky90(LIA, LIS, LIE, LJA, LJS, LJE, SFLX_water, SFLX_ENGI, PRSA, TA, QA, WA, UA, VA, DENS, SFLX_RAD_dn, exists_land, dt, TSNOW, SWE, SDepth, SDzero, nosnowsec, Salbedo, SFLX_SH, SFLX_LH, SFLX_QV, SFLX_QV_ENGI, SFLX_GH, SNOW_LAND_GH, SNOW_LAND_Water, SNOW_frac)
Main routine for land submodel.
real(rp), dimension(:,:), allocatable, public atmos_sflx_water
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), pointer, public soil_rlmo
character(len=h_short), public snow_type
real(rp), dimension(:,:), allocatable, target, public land_rlmo
inversed Obukhov length [1/m]
real(rp), dimension(:,:), allocatable, public snow_tstar
real(rp), dimension(:,:), pointer, public soil_tstar
module land / grid / cartesianC / index
integer, public const_i_sw
short-wave radiation index
subroutine, public land_phy_snow_ky90_setup
Setup.
character(len=h_short), public land_dyn_type
real(rp), dimension(:,:), allocatable, public land_sflx_gh
land surface heat flux [J/m2/s]
real(rp), dimension(:,:), allocatable, public land_sflx_mw
land surface w-momentum flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public atmos_pres
integer, parameter, public rp
integer, parameter, public i_r_nir
real(rp), dimension(:,:), pointer, public soil_wstar
subroutine, public land_surface_set(countup)
Put surface boundary to other model.
real(rp), dimension(:,:), allocatable, public land_sflx_sh
land surface sensible heat flux [J/m2/s]
real(rp), dimension(:,:), allocatable, target, public land_wstar
convective velocity scale [m/s]
real(rp), dimension(:,:), allocatable, target, public land_ustar
friction velocity [m/s]
real(rp), dimension(:,:,:), allocatable, public land_property
land surface property
real(rp), dimension(:,:,:), allocatable, public land_temp_t
tendency of LAND_TEMP
real(rp), dimension(:,:), allocatable, public snow_ustar
real(rp), dimension(:,:), allocatable, target, public land_qstar
moisture scale [kg/kg]
real(rp), dimension(:,:), allocatable, public topography_tansl_x
tan(slope_x)
module land / physics / snow / diagnostics
real(rp), dimension(:,:), allocatable, public land_sflx_water
land surface water flux [kg/m2/s]
subroutine, public land_driver_setup
Setup.
real(rp), dimension(:,:), allocatable, public snow_nosnowsec
sec while no snow [s]
subroutine, public land_phy_snow_diags(LIA, LIS, LIE, LJA, LJS, LJE, SNOW_frac, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, RHOS, PRSS, LST1, QVEF, Z0M, Z0H, Z0E, ZMFLX, XMFLX, YMFLX, Ustar, Tstar, Qstar, Wstar, RLmo, U10, V10, T2, Q2)
subroutine, public cpl_phy_sfc_skin(IA, IS, IE, JA, JS, JE, TMPA, PRSA, WA, UA, VA, RHOA, QVA, LH, Z1, PBL, RHOS, PRSS, RFLXD, TG, WSTR, QVEF, ALBEDO, Rb, TC_dZ, Z0M, Z0H, Z0E, calc_flag, dt_DP, model_name, TMPS, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, QVFLX, GFLX, Ustar, Tstar, Qstar, Wstar, RLmo, U10, V10, T2, Q2)
logical, public atmos_sw_phy_ch
integer, parameter, public i_thermalcond
subroutine, public land_dyn_bucket(LKMAX, LKS, LKE, LIA, LIS, LIE, LJA, LJS, LJE, TEMP_t, WATER_t, ICE_t, WaterLimit, ThermalCond, HeatCapacity, WaterDiff, SFLX_GH, SFLX_water, SFLX_RHOE, exists_land, CDZ, dt, NOWDAYSEC, TEMP, WATER, ICE, RUNOFF, RUNOFF_ENGI)
Physical processes for land submodel.
real(rp), dimension(:,:), allocatable, public land_runoff_engi
internal energy of the runoff [J/m2/s]
subroutine, public land_driver_update
Land step.
integer, parameter, public i_heatcapacity
real(rp), dimension(:,:), pointer, public soil_qstar
module coupler / physics / surface skin
real(rp), dimension(:,:), allocatable, public snow_swe
snow water equivalent [kg/m2]
integer, public const_i_lw
long-wave radiation index
integer, parameter, public i_waterlimit
real(rp), dimension(:), allocatable, public land_grid_cartesc_cz
center coordinate [m]: z, local=global
integer, parameter, public i_z0h
real(rp), dimension(:,:), allocatable, public land_q2
land surface water vapor at 2m [kg/kg]
integer, parameter, public i_z0e
subroutine, public land_vars_check(force)
Budget monitor for land.
real(rp), dimension(:,:), allocatable, public atmos_dens
real(rp), dimension(:,:), allocatable, public land_sfc_temp
land surface skin temperature [K]
real(rp), dimension(:,:), allocatable, public snow_qstar
module ATMOSPHERE / Physics Chemistry
real(rp), parameter, public const_tem00
temperature reference (0C) [K]
subroutine, public land_driver_calc_tendency(force)
Calculate tendency.
module coupler / surface-atmospehre
subroutine, public land_driver_finalize
finalize
real(rp), dimension(:,:), allocatable, public snow_depth
snow depth [m]
real(dp), public time_dtsec_land
time interval of land step [sec]
real(rp), dimension(:,:), allocatable, public land_u10
land surface velocity u at 10m [m/s]
integer, parameter, public i_r_vis
logical, public snow_flag
real(rp), dimension(:,:), allocatable, public atmos_sfc_dens
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, WSTR, QVEF, ALBEDO, Rb, Z0M, Z0H, Z0E, calc_flag, dt, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, QVFLX, GFLX, Ustar, Tstar, Qstar, Wstar, RLmo, U10, V10, T2, Q2)
module land / dynamics / bucket
real(rp), public lhf
latent heat of fusion for use [J/kg]
real(rp), dimension(:,:), allocatable, public land_sflx_lh
land surface latent heat flux [J/m2/s]
subroutine, public land_dyn_bucket_setup
Setup.
real(rp), dimension(:,:), allocatable, public land_v10
land surface velocity v at 10m [m/s]
subroutine, public cpl_phy_sfc_skin_setup
Setup.
subroutine, public prof_rapend(rapname_base, level, disable_barrier)
Save raptime.
module land / grid / cartesianC
subroutine, public land_surface_get
Get surface boundary from other model.
subroutine, public atmos_phy_ch_driver_land_flux(SFLX_QTRC)
Driver.
real(rp), dimension(:,:,:), allocatable, public land_ice
ice of each soil layer [m3/m3]
real(rp), dimension(:,:), allocatable, public land_t2
land surface temperature at 2m [K]
real(rp), dimension(:,:), allocatable, public atmos_sflx_engi
subroutine, public cpl_putlnd(SFC_TEMP, SFC_albedo, SFC_Z0M, SFC_Z0H, SFC_Z0E, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_LH, SFLX_GH, SFLX_QTRC, U10, V10, T2, Q2, mask, countup)
real(rp), dimension(:,:), allocatable, public snow_rlmo
real(rp), dimension(:,:), allocatable, public atmos_pbl
integer, parameter, public i_watercritical
subroutine, public cpl_getatm_lnd(TEMP, PRES, W, U, V, DENS, QV, PBL, SFC_DENS, SFC_PRES, SFLX_rad_dn, cosSZA, SFLX_water, SFLX_ENGI)
module land / physics / snow / ky90
real(rp), public cv_water
CV for water [J/kg/K].
real(rp), dimension(:,:), allocatable, public snow_dzero
snow depth at melting point [m]
real(rp), dimension(:,:), allocatable, public atmos_v
real(rp), dimension(:,:,:), allocatable, public land_sflx_qtrc
land surface tracer flux [kg/m2/s]
real(rp), public cv_ice
CV for ice [J/kg/K].
module coupler / surface fixed temp model