Handle atm2lnd, lnd2atm mapping/downscaling/upscaling/data
USES:
use clm_varpar , only : numrad, ndst !ndst = number of dust bins. use clm_varcon , only : rair, grav, cpair, hfus, tfrz use clm_varctl , only : iulog use decompMod , only : get_proc_bounds, get_proc_bounds_atm use shr_kind_mod, only : r8 => shr_kind_r8 use nanMod , only : nan use spmdMod , only : masterproc use abortutils , only : endrun use seq_drydep_mod, only : n_drydep, drydep_method, DD_XLND use clm_varpar , only : nvocPUBLIC TYPES:
implicit none
----------------------------------------------------
atmosphere -> land variables structure
----------------------------------------------------
type atm2lnd_type
real(r8), pointer :: forc_t(:) !atmospheric temperature (Kelvin)
real(r8), pointer :: forc_u(:) !atm wind speed, east direction (m/s)
real(r8), pointer :: forc_v(:) !atm wind speed, north direction (m/s)
real(r8), pointer :: forc_wind(:) !atmospheric wind speed
real(r8), pointer :: forc_q(:) !atmospheric specific humidity (kg/kg)
real(r8), pointer :: forc_hgt(:) !atmospheric reference height (m)
real(r8), pointer :: forc_hgt_u(:) !obs height of wind [m] (new)
real(r8), pointer :: forc_hgt_t(:) !obs height of temperature [m] (new)
real(r8), pointer :: forc_hgt_q(:) !obs height of humidity [m] (new)
real(r8), pointer :: forc_pbot(:) !atmospheric pressure (Pa)
real(r8), pointer :: forc_th(:) !atm potential temperature (Kelvin)
real(r8), pointer :: forc_vp(:) !atmospheric vapor pressure (Pa)
real(r8), pointer :: forc_rho(:) !density (kg/m**3)
real(r8), pointer :: forc_rh(:) !atmospheric relative humidity (%)
real(r8), pointer :: forc_psrf(:) !surface pressure (Pa)
real(r8), pointer :: forc_pco2(:) !CO2 partial pressure (Pa)
real(r8), pointer :: forc_lwrad(:) !downwrd IR longwave radiation (W/m**2)
real(r8), pointer :: forc_solad(:,:) !direct beam radiation (numrad) (vis=forc_sols , nir=forc_soll )
real(r8), pointer :: forc_solai(:,:) !diffuse radiation (numrad) (vis=forc_solsd, nir=forc_solld)
real(r8), pointer :: forc_solar(:) !incident solar radiation
real(r8), pointer :: forc_rain(:) !rain rate [mm/s]
real(r8), pointer :: forc_snow(:) !snow rate [mm/s]
real(r8), pointer :: forc_ndep(:) !nitrogen deposition rate (gN/m2/s)
real(r8), pointer :: rainf(:) !ALMA rain+snow [mm/s]
#ifdef C13
real(r8), pointer :: forc_pc13o2(:) !C13O2 partial pressure (Pa)
#endif
real(r8), pointer :: forc_po2(:) !O2 partial pressure (Pa)
real(r8), pointer :: forc_aer(:,:) ! aerosol deposition array
end type atm2lnd_type
----------------------------------------------------
land -> atmosphere variables structure
----------------------------------------------------
type lnd2atm_type
real(r8), pointer :: t_rad(:) !radiative temperature (Kelvin)
real(r8), pointer :: t_ref2m(:) !2m surface air temperature (Kelvin)
real(r8), pointer :: q_ref2m(:) !2m surface specific humidity (kg/kg)
real(r8), pointer :: u_ref10m(:) !10m surface wind speed (m/sec)
real(r8), pointer :: h2osno(:) !snow water (mm H2O)
real(r8), pointer :: albd(:,:) !(numrad) surface albedo (direct)
real(r8), pointer :: albi(:,:) !(numrad) surface albedo (diffuse)
real(r8), pointer :: taux(:) !wind stress: e-w (kg/m/s**2)
real(r8), pointer :: tauy(:) !wind stress: n-s (kg/m/s**2)
real(r8), pointer :: eflx_lh_tot(:) !total latent HF (W/m**2) [+ to atm]
real(r8), pointer :: eflx_sh_tot(:) !total sensible HF (W/m**2) [+ to atm]
real(r8), pointer :: eflx_lwrad_out(:) !IR (longwave) radiation (W/m**2)
real(r8), pointer :: qflx_evap_tot(:)!qflx_evap_soi + qflx_evap_can + qflx_tran_veg
real(r8), pointer :: fsa(:) !solar rad absorbed (total) (W/m**2)
real(r8), pointer :: nee(:) !net CO2 flux (kg CO2/m**2/s) [+ to atm]
real(r8), pointer :: ram1(:) !aerodynamical resistance (s/m)
real(r8), pointer :: fv(:) !friction velocity (m/s) (for dust model)
real(r8), pointer :: flxdst(:,:) !dust flux (size bins)
real(r8), pointer :: ddvel(:,:) !dry deposition velocities
real(r8), pointer :: flxvoc(:,:) ! VOC flux (size bins)
end type lnd2atm_type
type(atm2lnd_type),public,target :: atm_a2l ! a2l fields on atm grid
type(lnd2atm_type),public,target :: atm_l2a ! l2a fields on atm grid
type(atm2lnd_type),public,target :: clm_a2l ! a2l fields on clm grid
type(lnd2atm_type),public,target :: clm_l2a ! l2a fields on clm grid
real(r8), pointer, public :: adiag_arain(:)
real(r8), pointer, public :: adiag_asnow(:)
real(r8), pointer, public :: adiag_aflux(:)
real(r8), pointer, public :: adiag_lflux(:)
PUBLIC MEMBER FUNCTIONS:
public :: init_adiag_type public :: init_atm2lnd_type public :: init_lnd2atm_type public :: clm_downscale_a2l public :: clm_map2gcellREVISION HISTORY:
Created by Mariana Vertenstein and Tony Craig, 2006-01-10PRIVATE MEMBER FUNCTIONS: