The Intermediate Complexity Atmospheric Research model (ICAR)
A computationally efficient atmospheric model for downscaling.
 All Classes Files Functions Variables
Public Member Functions | Private Member Functions | Private Attributes | List of all members
land_surface Module Reference


This module provides a wrapper to call various land surface models More...

Public Member Functions

subroutine, public lsm_init (domain, options)
 
subroutine, public lsm (domain, options, dt, model_time)
 

Private Member Functions

real function sat_mr (t, p)
 
subroutine calc_exchange_coefficient (wind, tskin, airt, exchange_C)
 
subroutine f2_formula (F2, z_atm, zo, Ri)
 
subroutine calc_mahrt_holtslag_exchange_coefficient (wind, tskin, airt, znt, exchange_C)
 
subroutine surface_diagnostics (HFX, QFX, TSK, QSFC, CHS2, CQS2, T2, Q2, PSFC)
 
subroutine apply_fluxes (domain, dt)
 
subroutine allocate_noah_data (ime, jme, kme, num_soil_layers)
 

Private Attributes

integer ids
 
integer ide
 
integer jds
 
integer jde
 
integer kds
 
integer kde
 
integer ims
 
integer ime
 
integer jms
 
integer jme
 
integer kms
 
integer kme
 
integer its
 
integer ite
 
integer jts
 
integer jte
 
integer kts
 
integer kte
 
real, dimension(:,:), allocatable smstav
 
real, dimension(:,:), allocatable sfcrunoff
 
real, dimension(:,:), allocatable udrunoff
 
real, dimension(:,:), allocatable snow
 
real, dimension(:,:), allocatable snowc
 
real, dimension(:,:), allocatable snowh
 
real, dimension(:,:), allocatable acsnow
 
real, dimension(:,:), allocatable acsnom
 
real, dimension(:,:), allocatable snoalb
 
real, dimension(:,:), allocatable qfx
 
real, dimension(:,:), allocatable qgh
 
real, dimension(:,:), allocatable gsw
 
real, dimension(:,:), allocatable albedo
 
real, dimension(:,:), allocatable albbck
 
real, dimension(:,:), allocatable z0
 
real, dimension(:,:), allocatable xice
 
real, dimension(:,:), allocatable emiss
 
real, dimension(:,:), allocatable embck
 
real, dimension(:,:), allocatable qsfc
 
real, dimension(:,:), allocatable rainbl
 
real, dimension(:,:), allocatable chs
 
real, dimension(:,:), allocatable chs2
 
real, dimension(:,:), allocatable cqs2
 
real, dimension(:,:), allocatable cpm
 
real, dimension(:,:), allocatable sr
 
real, dimension(:,:), allocatable chklowq
 
real, dimension(:,:), allocatable lai
 
real, dimension(:,:), allocatable qz0
 
real, dimension(:,:), allocatable vegfrac
 
real, dimension(:,:), allocatable shdmin
 
real, dimension(:,:), allocatable shdmax
 
real, dimension(:,:), allocatable snotime
 
real, dimension(:,:), allocatable snopcx
 
real, dimension(:,:), allocatable potevp
 
real, dimension(:,:), allocatable rib
 
real, dimension(:,:), allocatable noahres
 
real, dimension(:,:), allocatable flx4_2d
 
real, dimension(:,:), allocatable fvb_2d
 
real, dimension(:,:), allocatable fbur_2d
 
real, dimension(:,:), allocatable fgsn_2d
 
real, dimension(:,:), allocatable z_atm
 
real, dimension(:,:), allocatable lnz_atm_term
 
real, dimension(:,:), allocatable ri
 
real, dimension(:,:), allocatable base_exchange_term
 
integer, dimension(:,:),
allocatable 
rain_bucket
 
logical myj
 
logical frpcpn
 
logical ua_phys
 
logical rdlai2d
 
logical usemonalb
 
real, dimension(:,:,:), allocatable sh2o
 
real, dimension(:,:,:), allocatable smcrel
 
real, dimension(:,:), allocatable dtemp
 
real, dimension(:,:), allocatable lhdqv
 
real, dimension(:,:), allocatable windspd
 
real, dimension(:), allocatable zs
 
real, dimension(:), allocatable dzs
 
real xice_threshold
 
integer, dimension(:,:),
allocatable 
ivgtyp
 
integer, dimension(:,:),
allocatable 
isltyp
 
integer itimestep
 
integer update_interval
 
integer cur_vegmonth
 
real, parameter freezing_threshold =273.15
 
real, parameter small_pressure =0.1
 
real, parameter small_qv =1e-10
 
real, parameter max_exchange_c = 0.5
 
real, parameter min_exchange_c = 0.0009
 
character(len=maxvarlength) mminlu
 
logical fndsoilw
 
logical fndsnowh
 
logical rdmaxalb
 
integer num_soil_layers
 
integer isurban
 
integer isice
 
integer iswater
 
integer exchange_term
 
real *8 last_model_time
 

Detailed Description


This module provides a wrapper to call various land surface models

It sets up variables specific to the LSM to be used including both history variables not currently stored in the domain level data structure, and runtime parameters

The main entry point to the code is lsm(domain,options,dt,model_time)

 Call tree graph :
  lsm_init->[ allocate_noah_data,
              external initialization routines]
  lsm->[  sat_mr,
          calc_exchange_coefficient,
          external LSM routines]
 High level routine descriptions / purpose
   lsm_init           - allocates module data and initializes physics package
   lsm                - sets up and calls main physics package
  calc_exchange_coefficient - calculates surface exchange coefficient (for Noah)
  allocate_noah_data  - allocate module level data for Noah LSM
  apply_fluxes        - apply LSM fluxes (e.g. sensible and latent heat fluxes) to atmosphere
  sat_mr              - calculate saturated mixing ratio (should be moved to )
 Inputs: domain, options, dt, model_time
      domain,options  = as defined in data_structures
      dt              = time step (seconds)
      model_time      = time since beginning date (seconds)
 
Author
Ethan Gutmann (gutma.nosp@m.nn@u.nosp@m.car.e.nosp@m.du)

Member Function/Subroutine Documentation

subroutine land_surface::allocate_noah_data ( integer, intent(in)  ime,
integer, intent(in)  jme,
integer, intent(in)  kme,
integer, intent(in)  num_soil_layers 
)
private

Here is the caller graph for this function:

subroutine land_surface::apply_fluxes ( type(domain_type), intent(inout)  domain,
real, intent(in)  dt 
)
private

Here is the caller graph for this function:

subroutine land_surface::calc_exchange_coefficient ( real, dimension(:,:), intent(inout)  wind,
real, dimension(:,:), intent(inout)  tskin,
real, dimension(:,:,:), intent(inout)  airt,
real, dimension(:,:), intent(inout)  exchange_C 
)
private

Here is the caller graph for this function:

subroutine land_surface::calc_mahrt_holtslag_exchange_coefficient ( real, dimension(:,:), intent(inout)  wind,
real, dimension(:,:), intent(inout)  tskin,
real, dimension(:,:,:), intent(inout)  airt,
real, dimension(:,:), intent(inout)  znt,
real, dimension(:,:), intent(inout)  exchange_C 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine land_surface::f2_formula ( real, dimension(:,:), intent(inout)  F2,
real, dimension(:,:), intent(inout)  z_atm,
real, dimension(:,:), intent(inout)  zo,
real, dimension(:,:), intent(inout)  Ri 
)
private

Here is the caller graph for this function:

subroutine, public land_surface::lsm ( type(domain_type), intent(inout)  domain,
type(options_type), intent(in)  options,
real, intent(in)  dt,
double precision, intent(in)  model_time 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public land_surface::lsm_init ( type(domain_type), intent(inout)  domain,
type(options_type), intent(in)  options 
)

Here is the call graph for this function:

Here is the caller graph for this function:

real function land_surface::sat_mr ( real, intent(in)  t,
real, intent(in)  p 
)
private

Here is the caller graph for this function:

subroutine land_surface::surface_diagnostics ( real, dimension( :,: ), intent(in)  HFX,
real, dimension( :,: ), intent(in)  QFX,
real, dimension( :,: ), intent(in)  TSK,
real, dimension( :,: ), intent(in)  QSFC,
real, dimension( :,: ), intent(in)  CHS2,
real, dimension( :,: ), intent(in)  CQS2,
real, dimension( :,: ), intent(inout)  T2,
real, dimension( :,: ), intent(inout)  Q2,
real, dimension( :,: ), intent(in)  PSFC 
)
private

Here is the caller graph for this function:

Member Data Documentation

real, dimension(:,:), allocatable land_surface::acsnom
private
real, dimension(:,:), allocatable land_surface::acsnow
private
real, dimension(:,:), allocatable land_surface::albbck
private
real, dimension(:,:), allocatable land_surface::albedo
private
real, dimension(:,:), allocatable land_surface::base_exchange_term
private
real, dimension(:,:), allocatable land_surface::chklowq
private
real, dimension(:,:), allocatable land_surface::chs
private
real, dimension(:,:), allocatable land_surface::chs2
private
real, dimension(:,:), allocatable land_surface::cpm
private
real, dimension(:,:), allocatable land_surface::cqs2
private
integer land_surface::cur_vegmonth
private
real, dimension(:,:), allocatable land_surface::dtemp
private
real, dimension(:), allocatable land_surface::dzs
private
real, dimension(:,:), allocatable land_surface::embck
private
real, dimension(:,:), allocatable land_surface::emiss
private
integer land_surface::exchange_term
private
real, dimension(:,:), allocatable land_surface::fbur_2d
private
real, dimension(:,:), allocatable land_surface::fgsn_2d
private
real, dimension(:,:), allocatable land_surface::flx4_2d
private
logical land_surface::fndsnowh
private
logical land_surface::fndsoilw
private
real, parameter land_surface::freezing_threshold =273.15
private
logical land_surface::frpcpn
private
real, dimension(:,:), allocatable land_surface::fvb_2d
private
real, dimension(:,:), allocatable land_surface::gsw
private
integer land_surface::ide
private
integer land_surface::ids
private
integer land_surface::ime
private
integer land_surface::ims
private
integer land_surface::isice
private
integer, dimension(:,:), allocatable land_surface::isltyp
private
integer land_surface::isurban
private
integer land_surface::iswater
private
integer land_surface::ite
private
integer land_surface::itimestep
private
integer land_surface::its
private
integer, dimension(:,:), allocatable land_surface::ivgtyp
private
integer land_surface::jde
private
integer land_surface::jds
private
integer land_surface::jme
private
integer land_surface::jms
private
integer land_surface::jte
private
integer land_surface::jts
private
integer land_surface::kde
private
integer land_surface::kds
private
integer land_surface::kme
private
integer land_surface::kms
private
integer land_surface::kte
private
integer land_surface::kts
private
real, dimension(:,:), allocatable land_surface::lai
private
real*8 land_surface::last_model_time
private
real, dimension(:,:), allocatable land_surface::lhdqv
private
real, dimension(:,:), allocatable land_surface::lnz_atm_term
private
real, parameter land_surface::max_exchange_c = 0.5
private
real, parameter land_surface::min_exchange_c = 0.0009
private
character(len=maxvarlength) land_surface::mminlu
private
logical land_surface::myj
private
real, dimension(:,:), allocatable land_surface::noahres
private
integer land_surface::num_soil_layers
private
real, dimension(:,:), allocatable land_surface::potevp
private
real, dimension(:,:), allocatable land_surface::qfx
private
real, dimension(:,:), allocatable land_surface::qgh
private
real, dimension(:,:), allocatable land_surface::qsfc
private
real, dimension(:,:), allocatable land_surface::qz0
private
integer, dimension(:,:), allocatable land_surface::rain_bucket
private
real, dimension(:,:), allocatable land_surface::rainbl
private
logical land_surface::rdlai2d
private
logical land_surface::rdmaxalb
private
real, dimension(:,:), allocatable land_surface::ri
private
real, dimension(:,:), allocatable land_surface::rib
private
real, dimension(:,:), allocatable land_surface::sfcrunoff
private
real, dimension(:,:,:), allocatable land_surface::sh2o
private
real, dimension(:,:), allocatable land_surface::shdmax
private
real, dimension(:,:), allocatable land_surface::shdmin
private
real, parameter land_surface::small_pressure =0.1
private
real, parameter land_surface::small_qv =1e-10
private
real, dimension(:,:,:), allocatable land_surface::smcrel
private
real, dimension(:,:), allocatable land_surface::smstav
private
real, dimension(:,:), allocatable land_surface::snoalb
private
real, dimension(:,:), allocatable land_surface::snopcx
private
real, dimension(:,:), allocatable land_surface::snotime
private
real, dimension(:,:), allocatable land_surface::snow
private
real, dimension(:,:), allocatable land_surface::snowc
private
real, dimension(:,:), allocatable land_surface::snowh
private
real, dimension(:,:), allocatable land_surface::sr
private
logical land_surface::ua_phys
private
real, dimension(:,:), allocatable land_surface::udrunoff
private
integer land_surface::update_interval
private
logical land_surface::usemonalb
private
real, dimension(:,:), allocatable land_surface::vegfrac
private
real, dimension(:,:), allocatable land_surface::windspd
private
real, dimension(:,:), allocatable land_surface::xice
private
real land_surface::xice_threshold
private
real, dimension(:,:), allocatable land_surface::z0
private
real, dimension(:,:), allocatable land_surface::z_atm
private
real, dimension(:), allocatable land_surface::zs
private

The documentation for this module was generated from the following file: