51 logical,
private :: snow_flag
76 log_info(
"LAND_driver_setup",*)
'Setup' 88 log_error(
"LAND_driver_setup",*)
'LAND_DYN_TYPE is invalid: ', trim(
land_dyn_type)
98 log_error(
"LAND_driver_setup",*)
'LAND_SFC_TYPE is invalid: ', trim(
land_sfc_type)
103 case (
'NONE',
'OFF' )
105 log_info(
"LAND_driver_setup",*)
'SNOW model is enabled' 106 log_info(
"LAND_driver_setup",*)
'SNOW model is on experimental stage.' 107 log_info(
"LAND_driver_setup",*)
'Use this with your own risk.' 111 log_error(
"LAND_driver_setup",*)
'SNOW_TYPE is invalid: ', trim(
snow_type)
130 hydrometeor_lhv => atmos_hydrometeor_lhv, &
205 logical,
intent(in) :: force
208 real(RP),
parameter :: BETA_MAX = 1.0_rp
211 real(RP) :: SNOW_QVEF (
lia,
lja)
212 real(RP) :: LAND_QVEF (
lia,
lja)
213 real(RP) :: LAND_TC_dZ(
lia,
lja)
214 real(RP) :: SFLX_QV (
lia,
lja)
215 real(RP) :: SFLX_GH (
lia,
lja)
219 real(RP) :: SNOW_albedo (
lia,
lja,2)
220 real(RP) :: SNOW_ATMOS_SFLX_SH (
lia,
lja)
221 real(RP) :: SNOW_ATMOS_SFLX_LH (
lia,
lja)
222 real(RP) :: SNOW_ATMOS_SFLX_GH (
lia,
lja)
224 real(RP) :: SNOW_LAND_SFLX_GH (
lia,
lja)
225 real(RP) :: SNOW_LAND_SFLX_water(
lia,
lja)
226 real(RP) :: SNOW_LAND_SFLX_ice (
lia,
lja)
227 real(RP) :: SNOW_frac (
lia,
lja)
229 real(RP) :: SNOW_ATMOS_SFLX_MW (
lia,
lja)
230 real(RP) :: SNOW_ATMOS_SFLX_MU (
lia,
lja)
231 real(RP) :: SNOW_ATMOS_SFLX_MV (
lia,
lja)
232 real(RP) :: SNOW_U10 (
lia,
lja)
233 real(RP) :: SNOW_V10 (
lia,
lja)
234 real(RP) :: SNOW_T2 (
lia,
lja)
235 real(RP) :: SNOW_Q2 (
lia,
lja)
248 integer :: k, i, j, iq, idir
280 if ( snow_flag )
then 317 snow_albedo(:,:,:), &
318 snow_atmos_sflx_sh(:,:), snow_atmos_sflx_lh(:,:), &
319 snow_atmos_sflx_gh(:,:), snow_land_sflx_gh(:,:), &
320 snow_land_sflx_water(:,:), &
327 snow_land_sflx_ice(i,j) = 0.0_rp
356 snow_qvef(i,j) = 1.0_rp
372 snow_atmos_sflx_mw(:,:), &
373 snow_atmos_sflx_mu(:,:), &
374 snow_atmos_sflx_mv(:,:), &
375 snow_u10(:,:), snow_v10(:,:), &
376 snow_t2(:,:), snow_q2(:,:) )
378 call file_history_in( snow_albedo(:,:,i_sw),
'SNOW_ALB_SW',
'Snow surface albedo (short wave)',
'1', dim_type=
'XY' )
379 call file_history_in( snow_albedo(:,:,i_lw),
'SNOW_ALB_LW',
'Snow surface albedo (long wave)',
'1', dim_type=
'XY' )
380 call file_history_in( snow_atmos_sflx_sh(:,:),
'SNOW_ATMOS_SFLX_SH',
'Snow surface sensible heat flux',
'J/m2/s', dim_type=
'XY' )
381 call file_history_in( snow_atmos_sflx_lh(:,:),
'SNOW_ATMOS_SFLX_LH',
'Snow surface latent heat flux',
'J/m2/s', dim_type=
'XY' )
382 call file_history_in( snow_atmos_sflx_gh(:,:),
'SNOW_ATMOS_SFLX_GH',
'Snowpack received heat flux',
'J/m2/s', dim_type=
'XY' )
383 call file_history_in( snow_land_sflx_gh(:,:),
'SNOW_LAND_SFLX_GH',
'land surface ground heat flux under snow',
'J/m2/s', dim_type=
'XY' )
384 call file_history_in( snow_land_sflx_water(:,:),
'SNOW_LAND_SFLX_water',
'land surface liquid water flux under snow',
'kg/m2/s',dim_type=
'XY' )
385 call file_history_in( snow_land_sflx_water(:,:),
'SNOW_LAND_SFLX_ice',
'land surface ice water flux under snow',
'kg/m2/s',dim_type=
'XY' )
386 call file_history_in( snow_frac(:,:),
'SNOW_frac',
'Snow fraction on land subgrid',
'1', dim_type=
'XY' )
387 call file_history_in( snow_atmos_sflx_mw(:,:),
'SNOW_ATMOS_SFLX_MW',
'Snow surface w-momentum flux',
'J/m2/s', dim_type=
'XY' )
388 call file_history_in( snow_atmos_sflx_mu(:,:),
'SNOW_ATMOS_SFLX_MU',
'Snow surface u-momentum flux',
'J/m2/s', dim_type=
'XY' )
389 call file_history_in( snow_atmos_sflx_mv(:,:),
'SNOW_ATMOS_SFLX_MV',
'Snow surface v-momentum flux',
'J/m2/s', dim_type=
'XY' )
390 call file_history_in( snow_u10(:,:),
'SNOW_U10',
'Wind velocity u at 10 m on snow surface',
'm/s', dim_type=
'XY' )
391 call file_history_in( snow_v10(:,:),
'SNOW_V10',
'Wind velocity v at 10 m on snow surface',
'm/s', dim_type=
'XY' )
392 call file_history_in( snow_t2(:,:),
'SNOW_T2',
'Air temperature at 2m on snow surface',
'K', dim_type=
'XY' )
393 call file_history_in( snow_q2(:,:),
'SNOW_Q2',
'Specific humidity at 2m on snow surface',
'kg/kg', dim_type=
'XY' )
453 case (
'FIXED-TEMP' )
522 if ( snow_flag )
then 542 land_sflx_gh(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_gh(i,j) &
544 land_sflx_water(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_water(i,j) &
546 land_sflx_ice(i,j) = ( snow_frac(i,j) ) * snow_land_sflx_ice(i,j) &
549 land_sflx_sh(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_sh(i,j) &
551 land_sflx_lh(i,j) = ( snow_frac(i,j) ) * snow_atmos_sflx_lh(i,j) &
555 land_u10(i,j) = ( snow_frac(i,j) ) * snow_u10(i,j) &
556 + ( 1.0_rp-snow_frac(i,j) ) *
land_u10(i,j)
557 land_v10(i,j) = ( snow_frac(i,j) ) * snow_v10(i,j) &
558 + ( 1.0_rp-snow_frac(i,j) ) *
land_v10(i,j)
559 land_t2(i,j) = ( snow_frac(i,j) ) * snow_t2(i,j) &
560 + ( 1.0_rp-snow_frac(i,j) ) *
land_t2(i,j)
561 land_q2(i,j) = ( snow_frac(i,j) ) * snow_q2(i,j) &
562 + ( 1.0_rp-snow_frac(i,j) ) *
land_q2(i,j)
625 real(RP) :: RUNOFF(
lia,
lja)
650 call file_history_in( runoff(:,:),
'RUNOFF',
'runoff water',
'kg', dim_type=
'XY' )
753 logical,
intent(in) :: countup
real(rp), dimension(:,:), allocatable, public snow_swe
snow water equivalent [kg/m2]
real(rp), dimension(:,:), allocatable, public land_sflx_water
land surface water flux [kg/m2/s]
real(rp), dimension(:), allocatable, public land_grid_cartesc_cz
center coordinate [m]: z, local=global
module coupler / surface fixed temp model
real(rp), dimension(:,:), allocatable, public atmos_pres
integer, public const_i_lw
long-wave radiation index
real(rp), dimension(:,:), allocatable, public land_sflx_ice
land surface ice flux [kg/m2/s]
module coupler / surface-atmospehre
integer, parameter, public i_heatcapacity
subroutine, public land_driver_update
Land step.
module land / physics / snow / ky90
integer, parameter, public i_waterlimit
real(rp), dimension(:,:), allocatable, public atmos_dens
real(rp), dimension(:,:,:), allocatable, public land_property
land surface property
integer, parameter, public i_r_vis
module land / grid / cartesianC / index
real(rp), dimension(:,:), allocatable, public snow_sfc_temp
snow surface temperature [K]
subroutine, public cpl_phy_sfc_fixed_temp_setup
Setup.
real(dp), public time_nowdaysec
second of current time [sec]
module coupler / physics / surface skin
integer, parameter, public i_watercritical
module ATMOSPHERE / Physics Chemistry
real(rp), dimension(:,:), allocatable, public atmos_sfc_dens
real(rp), dimension(:,:), allocatable, public atmos_v
real(rp), dimension(:,:), allocatable, public atmos_sflx_snow
real(rp), dimension(:,:), allocatable, public land_q2
land surface water vapor at 2m [kg/kg]
real(dp), public time_dtsec_land
time interval of land step [sec]
real(rp), dimension(:,:), allocatable, public snow_depth
snow depth [m]
integer, parameter, public i_z0h
integer, parameter, public i_z0e
subroutine, public land_surface_get
Get surface boundary from other model.
logical, dimension(:,:), allocatable, public landuse_exists_land
land calculation flag
real(rp), dimension(:,:,:), allocatable, public land_sflx_qtrc
land surface tracer flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public land_sflx_mu
land surface u-momentum flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public snow_nosnowsec
sec while no snow [s]
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_z1
Height of the lowermost grid from surface (cell center) [m].
real(rp), dimension(:,:), allocatable, public atmos_temp
real(rp), dimension(:,:), allocatable, public land_sfc_temp
land surface skin temperature [K]
real(rp), dimension(:,:), allocatable, public atmos_sflx_rain
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, U10, V10, T2, Q2)
real(rp), dimension(:,:), allocatable, public land_v10
land surface velocity v at 10m [m/s]
module land / dynamics / bucket
real(rp), dimension(:,:), allocatable, public atmos_pbl
logical, public atmos_hydrometeor_dry
module atmosphere / hydrometeor
real(rp), dimension(:,:,:,:), allocatable, public land_sfc_albedo
land surface albedo (direct/diffuse,IR/near-IR/VIS) (0-1)
character(len=h_short), public snow_type
real(rp), dimension(:,:), allocatable, public land_t2
land surface temperature at 2m [K]
module land / physics / snow / diagnostics
subroutine, public land_driver_setup
Setup.
real(rp), dimension(:,:,:), allocatable, public land_water_t
tendency of LAND_WATER
subroutine, public land_phy_snow_ky90_setup
Setup.
real(rp), dimension(:,:,:), allocatable, public land_temp
temperature of each soil layer [K]
real(rp), dimension(:,:), allocatable, public land_sflx_lh
land surface latent heat flux [J/m2/s]
subroutine, public cpl_phy_sfc_skin_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_qv
integer, parameter, public i_stomataresist
logical, public atmos_sw_phy_ch
real(rp), dimension(:,:), allocatable, public land_u10
land surface velocity u at 10m [m/s]
subroutine, public prc_abort
Abort Process.
real(rp), dimension(:,:,:), allocatable, public land_temp_t
tendency of LAND_TEMP
subroutine, public land_driver_calc_tendency(force)
Calculate tendency.
integer, parameter, public i_r_direct
real(rp), dimension(:,:), allocatable, public land_sflx_gh
land surface heat flux [J/m2/s]
module land / grid / cartesianC
real(rp), dimension(:,:), allocatable, public snow_dzero
snow depth at melting point [m]
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
subroutine, public land_dyn_bucket(LKMAX, LKS, LKE, LIA, LIS, LIE, LJA, LJS, LJE, TEMP_t, WATER_t, WaterLimit, ThermalCond, HeatCapacity, WaterDiff, SFLX_GH, SFLX_water, SFLX_ice, fact_land, CDZ, dt, NOWDAYSEC, TEMP, WATER, RUNOFF)
Physical processes for land submodel.
character(len=h_short), public land_dyn_type
real(rp), dimension(:,:,:), allocatable, public land_water
moisture of each soil layer [m3/m3]
real(rp), dimension(:,:), allocatable, public atmos_u
subroutine, public atmos_phy_ch_driver_land_flux(SFLX_QTRC)
Driver.
subroutine, public land_vars_total
Budget monitor for land.
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_G, SFLX_QTRC, U10, V10, T2, Q2, countup)
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
subroutine, public cpl_getatm_lnd(TEMP, PRES, W, U, V, DENS, QV, PBL, SFC_DENS, SFC_PRES, SFLX_rad_dn, cosSZA, SFLX_rain, SFLX_snow)
real(rp), dimension(:,:), allocatable, public atmos_cossza
integer, parameter, public i_r_nir
module Atmosphere GRID CartesC Real(real space)
integer, parameter, public i_z0m
real(rp), dimension(:,:,:,:), allocatable, public atmos_sflx_rad_dn
integer, public const_i_sw
short-wave radiation index
real(rp), dimension(:,:), allocatable, public land_sflx_mw
land surface w-momentum flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public land_sflx_mv
land surface v-momentum flux [kg/m2/s]
subroutine, public land_vars_history
History output set for land variables.
integer, parameter, public i_alblw
integer, parameter, public i_r_ir
real(rp), dimension(:,:), allocatable, public land_sflx_sh
land surface sensible heat flux [J/m2/s]
integer, parameter, public i_albsw
subroutine, public land_phy_snow_ky90(LIA, LIS, LIE, LJA, LJS, LJE, SFLX_rain, SFLX_snow, PRSA, TA, QA, WA, UA, VA, DENS, SFLX_RAD_dn, LANDUSE_fact_land, dt, TSNOW, SWE, SDepth, SDzero, nosnowsec, Salbedo, SFLX_SH, SFLX_LH, SFLX_GH, SNOW_LAND_GH, SNOW_LAND_Water, SNOW_frac)
Main routine for land submodel.
real(rp), dimension(:,:), allocatable, public atmos_w
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
integer, parameter, public i_r_diffuse
integer, parameter, public i_thermalcond
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, QVEF, ALBEDO, Rb, TC_dZ, Z0M, Z0H, Z0E, calc_flag, dt, model_name, TMPS, ZMFLX, XMFLX, YMFLX, SHFLX, QVFLX, GFLX, U10, V10, T2, Q2)
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
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, QVEF, ALBEDO, Rb, Z0M, Z0H, Z0E, calc_flag, dt, ZMFLX, XMFLX, YMFLX, SHFLX, QVFLX, GFLX, U10, V10, T2, Q2)
character(len=h_short), public land_sfc_type
integer, parameter, public i_waterdiff
subroutine, public land_surface_set(countup)
Put surface boundary to other model.
subroutine, public land_dyn_bucket_setup
Setup.
real(rp), dimension(:), allocatable, public land_grid_cartesc_cdz
z-length of control volume [m]