FMS Coupler  2022.03
Data Types | Functions/Subroutines | Variables
atm_land_ice_flux_exchange_mod Module Reference

Data Types

type  tracer_ind_type
 
type  tracer_exch_ind_type
 
interface  put_logical_to_real
 

Functions/Subroutines

subroutine, public atm_land_ice_flux_exchange_init (Time, Atm, Land, Ice, atmos_ice_boundary, land_ice_atmos_boundary, Dt_atm_in, Dt_cpl_in, z_ref_heat_in, z_ref_mom_in, do_area_weighted_flux_in, do_forecast_in, partition_fprec_from_lprec_in, scale_precip_2d_in, nblocks_in, cplClock_in, ex_gas_fields_atm_in, ex_gas_fields_ice_in, ex_gas_fluxes_in)
 Initialization routine. More...
 
subroutine, public sfc_boundary_layer (dt, Time, Atm, Land, Ice, Land_Ice_Atmos_Boundary)
 Computes explicit fluxes as well as derivatives that will be used to compute an implicit flux correction. More...
 
subroutine, public flux_down_from_atmos (Time, Atm, Land, Ice, Atmos_boundary, Land_boundary, Ice_boundary)
 Returns fluxes and derivatives corrected for the implicit treatment of atmospheric diffusive fluxes, as well as the increments in the temperature and specific humidity of the lowest atmospheric layer due to all explicit processes as well as the diffusive fluxes through the top of this layer. More...
 
subroutine, public generate_sfc_xgrid (Land, Ice)
 Optimizes the exchange grids by eliminating land and ice partitions with no data. More...
 
subroutine, public flux_up_to_atmos (Time, Land, Ice, Land_Ice_Atmos_Boundary, Land_boundary, Ice_boundary)
 Corrects the fluxes for consistency with the new surface temperatures in land and ice models. More...
 
subroutine, public flux_ex_arrays_dealloc
 
subroutine, public flux_atmos_to_ocean (Time, Atm, Ice_boundary, Ice)
 
subroutine put_logical_to_real_sg (mask, id, ex_mask, xmap)
 Puts land or ice model masks (with partitions) onto the exchange grid as a real array (1.=true, 0.=false) More...
 
subroutine put_logical_to_real_ug (mask, id, ex_mask, xmap)
 Puts land or ice model masks (with partitions) onto the exchange grid as a real array (1.=true, 0.=false) More...
 
subroutine diag_field_init (Time, atmos_axes, land_axes, land_pe)
 Initializes diagnostic fields that may be output from this module (the ID numbers may be referenced anywhere in this module) More...
 
subroutine divide_by_area (data, area)
 Divide data by area while avoiding zero area elements. More...
 
subroutine, public send_ice_mask_sic (Time)
 Send out the ice_mask and/or sic data. This was called inside flux_ocean_to_ice. Why? More...
 
subroutine, public atm_stock_integrate (Atm, res)
 

Variables

character(len=128) version = '$Id$'
 
character(len=128) tag = '$Name$'
 
type(fmsxgridxmap_type), save xmap_sfc
 
integer n_xgrid_sfc =0
 
character(len=4), parameter mod_name = 'flux'
 
integer id_drag_moist
 
integer id_drag_heat
 
integer id_drag_mom
 
integer id_rough_moist
 
integer id_rough_heat
 
integer id_rough_mom
 
integer id_land_mask
 
integer id_ice_mask
 
integer id_u_star
 
integer id_b_star
 
integer id_q_star
 
integer id_u_flux
 
integer id_v_flux
 
integer id_t_surf
 
integer id_t_flux
 
integer id_r_flux
 
integer id_q_flux
 
integer id_slp
 
integer id_t_atm
 
integer id_u_atm
 
integer id_v_atm
 
integer id_wind
 
integer id_thv_atm
 
integer id_thv_surf
 
integer id_t_ref
 
integer id_rh_ref
 
integer id_u_ref
 
integer id_v_ref
 
integer id_wind_ref
 
integer id_del_h
 
integer id_del_m
 
integer id_del_q
 
integer id_rough_scale
 
integer id_t_ca
 
integer id_q_surf
 
integer id_q_atm
 
integer id_z_atm
 
integer id_p_atm
 
integer id_gust
 
integer id_t_ref_land
 
integer id_rh_ref_land
 
integer id_u_ref_land
 
integer id_v_ref_land
 
integer id_q_ref
 
integer id_q_ref_land
 
integer id_q_flux_land
 
integer id_rh_ref_cmip
 
integer id_husslut_land
 
integer id_taslut_land
 
integer id_t_flux_land
 
integer id_co2_atm_dvmr
 
integer id_co2_surf_dvmr
 
integer id_co2_bot
 
integer id_co2_flux_pcair_atm
 
integer id_o2_flux_pcair_atm
 
integer, dimension(:), allocatable id_tr_atm
 
integer, dimension(:), allocatable id_tr_surf
 
integer, dimension(:), allocatable id_tr_flux
 
integer, dimension(:), allocatable id_tr_mol_flux
 
integer, dimension(:), allocatable id_tr_mol_flux0
 
integer, dimension(:), allocatable id_tr_flux_land
 
integer, dimension(:), allocatable id_tr_mol_flux_land
 
integer id_tas
 
integer id_uas
 
integer id_vas
 
integer id_ts
 
integer id_psl
 
integer id_sfcwind
 
integer id_tauu
 
integer id_tauv
 
integer id_hurs
 
integer id_huss
 
integer id_evspsbl
 
integer id_hfls
 
integer id_hfss
 
integer id_rhs
 
integer id_sftlf
 
integer id_tos
 
integer id_sic
 
integer id_tslsi
 
integer id_height2m
 
integer id_height10m
 
integer id_evspsbl_g
 
integer id_ts_g
 
integer id_tas_g
 
integer id_tasl_g
 
integer id_hfss_g
 
integer id_hfls_g
 
integer id_rls_g
 
logical first_static = .true.
 
logical do_init = .true.
 
integer remap_method = 1
 
real, parameter bound_tol = 1e-7
 
real, parameter d622 = rdgas/rvgas
 
real, parameter d378 = 1.0-d622
 
real, parameter tfreeze = 273.15
 
real, dimension(:,:), allocatable frac_precip
 
real z_ref_heat = 2.
 Reference height (meters) for temperature and relative humidity diagnostics (t_ref, rh_ref, del_h, del_q) More...
 
real z_ref_mom = 10.
 Reference height (meters) for mementum diagnostics (u_ref, v_ref, del_m) More...
 
logical do_area_weighted_flux = .FALSE.
 
logical do_forecast = .false.
 
integer nblocks = 1
 
logical partition_fprec_from_lprec = .FALSE.
 option for ATM override experiments where liquid+frozen precip are combined. This option will convert liquid precip to snow when t_ref is less than tfreeze parameter More...
 
logical scale_precip_2d = .false.
 
integer my_nblocks = 1
 
integer, dimension(:), allocatable block_start
 
integer, dimension(:), allocatable block_end
 
real, dimension(:), allocatable ex_t_surf
 surface temperature for radiation calc, degK More...
 
real, dimension(:), allocatable ex_t_surf_miz
 miz More...
 
real, dimension(:), allocatable ex_t_ca
 near-surface (canopy) air temperature, degK More...
 
real, dimension(:), allocatable ex_p_surf
 surface pressure More...
 
real, dimension(:), allocatable ex_slp
 surface pressure More...
 
real, dimension(:), allocatable ex_flux_t
 sens heat flux More...
 
real, dimension(:), allocatable ex_flux_lw
 longwave radiation flux More...
 
real, dimension(:), allocatable ex_dhdt_surf
 d(sens.heat.flux)/d(T canopy) More...
 
real, dimension(:), allocatable ex_dedt_surf
 d(water.vap.flux)/d(T canopy) More...
 
real, dimension(:), allocatable ex_dqsatdt_surf
 d(water.vap.flux)/d(q canopy) More...
 
real, dimension(:), allocatable ex_e_q_n
 
real, dimension(:), allocatable ex_drdt_surf
 d(LW flux)/d(T surf) More...
 
real, dimension(:), allocatable ex_dhdt_atm
 d(sens.heat.flux)/d(T atm) More...
 
real, dimension(:), allocatable ex_flux_u
 u stress on atmosphere More...
 
real, dimension(:), allocatable ex_flux_v
 v stress on atmosphere More...
 
real, dimension(:), allocatable ex_dtaudu_atm
 d(stress)/d(u) More...
 
real, dimension(:), allocatable ex_dtaudv_atm
 d(stress)/d(v) More...
 
real, dimension(:), allocatable ex_seawater
 
real, dimension(:), allocatable ex_albedo_fix
 
real, dimension(:), allocatable ex_albedo_vis_dir_fix
 
real, dimension(:), allocatable ex_albedo_nir_dir_fix
 
real, dimension(:), allocatable ex_albedo_vis_dif_fix
 
real, dimension(:), allocatable ex_albedo_nir_dif_fix
 
real, dimension(:), allocatable ex_old_albedo
 old value of albedo for downward flux calculations More...
 
real, dimension(:), allocatable ex_drag_q
 q drag.coeff. More...
 
real, dimension(:), allocatable ex_cd_t
 
real, dimension(:), allocatable ex_cd_m
 
real, dimension(:), allocatable ex_b_star
 
real, dimension(:), allocatable ex_u_star
 
real, dimension(:), allocatable ex_wind
 
real, dimension(:), allocatable ex_z_atm
 
real, dimension(:), allocatable ex_dhdt_surf_forland
 
real, dimension(:), allocatable ex_dedt_surf_forland
 
real, dimension(:), allocatable ex_dedq_surf_forland
 
real, dimension(:,:), allocatable ex_tr_surf
 near-surface tracer fields More...
 
real, dimension(:,:), allocatable ex_flux_tr
 tracer fluxes More...
 
real, dimension(:,:), allocatable ex_dfdtr_surf
 d(tracer flux)/d(surf tracer) More...
 
real, dimension(:,:), allocatable ex_dfdtr_atm
 d(tracer flux)/d(atm tracer) More...
 
real, dimension(:,:), allocatable ex_e_tr_n
 coefficient in implicit scheme More...
 
real, dimension(:,:), allocatable ex_f_tr_delt_n
 coefficient in implicit scheme More...
 
logical, dimension(:), allocatable ex_avail
 true where data on exchange grid are available More...
 
logical, dimension(:), allocatable ex_land
 true if exchange grid cell is over land More...
 
real, dimension(:), allocatable ex_e_t_n
 
real, dimension(:), allocatable ex_f_t_delt_n
 
integer n_atm_tr
 number of prognostic tracers in the atmos model More...
 
integer n_atm_tr_tot
 number of prognostic tracers in the atmos model More...
 
integer n_lnd_tr
 number of prognostic tracers in the land model More...
 
integer n_lnd_tr_tot
 number of prognostic tracers in the land model More...
 
integer n_exch_tr
 number of tracers exchanged between models More...
 
type(tracer_ind_type), dimension(:), allocatable tr_table
 table of tracer indices More...
 
type(tracer_exch_ind_type), dimension(:), allocatable tr_table_map
 map atm tracers to exchange, ice and land variables More...
 
integer isphum = NO_TRACER
 index of specific humidity tracer in tracer table More...
 
integer ico2 = NO_TRACER
 index of co2 tracer in tracer table More...
 
integer inh3 = NO_TRACER
 index of nh3 tracer in tracer table More...
 
type(fmscoupler1dbc_type), pointer ex_gas_fields_atm =>NULL()
 gas fields in atm Place holder for various atmospheric fields. More...
 
type(fmscoupler1dbc_type), pointer ex_gas_fields_ice =>NULL()
 
type(fmscoupler1dbc_type), pointer ex_gas_fluxes =>NULL()
 Place holder of intermediate calculations, such as piston velocities etc. More...
 
integer ni_atm
 
integer nj_atm
 to do atmos diagnostic from flux_ocean_to_ice More...
 
real, dimension(3) ccc
 for conservation checks More...
 
integer, parameter regrid =1
 
integer, parameter redist =2
 
integer, parameter direct =3
 
integer cplclock
 
integer sfcclock
 
integer fluxatmdnclock
 
integer regenclock
 
integer fluxatmupclock
 
integer x1_grid_atm
 
integer x1_grid_ice
 
integer x1_grid_lnd
 
real dt_atm
 
real dt_cpl
 
integer nxc_ice =0
 
integer nyc_ice =0
 
integer nk_ice =0
 
integer nxc_lnd =0
 
integer nyc_lnd =0
 

Function/Subroutine Documentation

◆ atm_land_ice_flux_exchange_init()

subroutine, public atm_land_ice_flux_exchange_mod::atm_land_ice_flux_exchange_init ( type(fmstime_type), intent(in)  Time,
type(atmos_data_type), intent(inout)  Atm,
type(land_data_type), intent(in)  Land,
type(ice_data_type), intent(inout)  Ice,
type(atmos_ice_boundary_type), intent(inout)  atmos_ice_boundary,
type(land_ice_atmos_boundary_type), intent(inout)  land_ice_atmos_boundary,
real, intent(in)  Dt_atm_in,
real, intent(in)  Dt_cpl_in,
real, intent(in)  z_ref_heat_in,
real, intent(in)  z_ref_mom_in,
logical, intent(in)  do_area_weighted_flux_in,
logical, intent(in)  do_forecast_in,
logical, intent(in)  partition_fprec_from_lprec_in,
logical, intent(in)  scale_precip_2d_in,
integer, intent(in)  nblocks_in,
integer, intent(in)  cplClock_in,
type(fmscoupler1dbc_type), intent(in), target  ex_gas_fields_atm_in,
type(fmscoupler1dbc_type), intent(in), target  ex_gas_fields_ice_in,
type(fmscoupler1dbc_type), intent(in), target  ex_gas_fluxes_in 
)

Initialization routine.

Initializes the interpolation routines,diagnostics and boundary data

Exceptions
FATAL,grid_spec.nc incompatible with atmosphere resolutionThe atmosphere grid size from file grid_spec.nc is not compatible with the atmosphere resolution from atmosphere model.
FATAL,grid_spec.nc incompatible with atmosphere longitudes (see xba.dat and yba.dat)The longitude from file grid_spec.nc ( from field yba ) is different from the longitude from atmosphere model.
FATAL,grid_spec.nc incompatible with atmosphere longitudes (see xba.dat and yba.dat)The longitude from file grid_spec.nc ( from field xba ) is different from the longitude from atmosphere model.
FATAL,grid_spec.nc incompatible with atmosphere latitudes (see grid_spec.nc)The latitude from file grid_spec.nc is different from the latitude from atmosphere model.
Parameters
[in]timeThe model's current time
[in,out]atmA derived data type to specify atmosphere boundary data
[in]landA derived data type to specify land boundary data
[in,out]iceA derived data type to specify ice boundary data
[in,out]atmos_ice_boundaryA derived data type to specify properties and fluxes passed from atmosphere to ice
[in,out]land_ice_atmos_boundaryA derived data type to specify properties and fluxes passed from exchange grid to the atmosphere, land and ice
[in]dt_atm_inAtmosphere time step in seconds
[in]dt_cpl_inCoupled time step in seconds

◆ atm_stock_integrate()

subroutine, public atm_land_ice_flux_exchange_mod::atm_stock_integrate ( type(atmos_data_type), intent(in)  Atm,
real, intent(out)  res 
)

◆ diag_field_init()

subroutine atm_land_ice_flux_exchange_mod::diag_field_init ( type(fmstime_type), intent(in)  Time,
integer, dimension(2), intent(in)  atmos_axes,
integer, dimension(:), intent(in)  land_axes,
logical, intent(in)  land_pe 
)
private

Initializes diagnostic fields that may be output from this module (the ID numbers may be referenced anywhere in this module)

◆ divide_by_area()

subroutine atm_land_ice_flux_exchange_mod::divide_by_area ( real, dimension(:,:), intent(inout)  data,
real, dimension(:,:), intent(in)  area 
)
private

Divide data by area while avoiding zero area elements.

◆ flux_atmos_to_ocean()

subroutine, public atm_land_ice_flux_exchange_mod::flux_atmos_to_ocean ( type(fmstime_type), intent(in)  Time,
type(atmos_data_type), intent(inout)  Atm,
type(atmos_ice_boundary_type), intent(inout)  Ice_boundary,
type(ice_data_type), intent(inout)  Ice 
)
Parameters
[in]timeCurrent time
[in,out]atmA derived data type to specify atmosphere boundary data
[in,out]ice_boundaryA derived data type to specify properties and fluxes passed from atmosphere to ice

◆ flux_down_from_atmos()

subroutine, public atm_land_ice_flux_exchange_mod::flux_down_from_atmos ( type(fmstime_type), intent(in)  Time,
type(atmos_data_type), intent(inout)  Atm,
type(land_data_type), intent(in)  Land,
type(ice_data_type), intent(in)  Ice,
type(land_ice_atmos_boundary_type), intent(in)  Atmos_boundary,
type(atmos_land_boundary_type), intent(inout)  Land_boundary,
type(atmos_ice_boundary_type), intent(inout)  Ice_boundary 
)

Returns fluxes and derivatives corrected for the implicit treatment of atmospheric diffusive fluxes, as well as the increments in the temperature and specific humidity of the lowest atmospheric layer due to all explicit processes as well as the diffusive fluxes through the top of this layer.

The following elements from Atmos_boundary are used as input:

        flux_u_atm = zonal wind stress (Pa)
        flux_v_atm = meridional wind stress (Pa)
 

The following elements of Land_boundary are output:

       flux_t_land = sensible heat flux (W/m2)
       flux_q_land = specific humidity flux (Kg/(m2 s)
      flux_lw_land = net longwave flux (W/m2), uncorrected for
                     changes in surface temperature
      flux_sw_land = net shortwave flux (W/m2)
         dhdt_land = derivative of sensible heat flux w.r.t.
                     surface temperature (on land model grid)  (W/(m2 K)
         dedt_land = derivative of specific humidity flux w.r.t.
                     surface temperature (on land model grid)  (Kg/(m2 s K)
         drdt_land = derivative of upward longwave flux w.r.t.
                     surface temperature (on land model grid) (W/(m2 K)
        lprec_land = liquid precipitation, mass for one time step
                      (Kg/m2)
        fprec_land = frozen precipitation, mass for one time step
                      (Kg/m2)
 

The following elements of Ice_boundary are output:

        flux_u_ice = zonal wind stress (Pa)
        flux_v_ice = meridional wind stress (Pa)
        coszen_ice = cosine of the zenith angle
 
Parameters
[in]timeCurrent time
[in,out]atmA derived data type to specify atmosphere boundary data
[in]landA derived data type to specify land boundary data
[in]iceA derived data type to specify ice boundary data
[in]atmos_boundaryA derived data type to specify properties and fluxes passed from exchange grid to the atmosphere land and ice
[in,out]land_boundaryA derived data type to specify properties and fluxes passed from atmosphere to land
[in,out]ice_boundaryA derived data type to specify properties and fluxes passed from atmosphere to ice

◆ flux_ex_arrays_dealloc()

subroutine, public atm_land_ice_flux_exchange_mod::flux_ex_arrays_dealloc

◆ flux_up_to_atmos()

subroutine, public atm_land_ice_flux_exchange_mod::flux_up_to_atmos ( type(fmstime_type), intent(in)  Time,
type(land_data_type), intent(inout)  Land,
type(ice_data_type), intent(inout)  Ice,
type(land_ice_atmos_boundary_type), intent(inout)  Land_Ice_Atmos_Boundary,
type(atmos_land_boundary_type), intent(inout)  Land_boundary,
type(atmos_ice_boundary_type), intent(inout)  Ice_boundary 
)

Corrects the fluxes for consistency with the new surface temperatures in land and ice models.

Corrects the fluxes for consistency with the new surface temperatures in land and ice models. Final increments for temperature and specific humidity in the lowest atmospheric layer are computed and returned to the atmospheric model so that it can finalize the increments in the rest of the atmosphere.

The following elements of the land_ice_atmos_boundary_type are computed:

        dt_t  = temperature change at the lowest
                 atmospheric level (deg k)
        dt_q  = specific humidity change at the lowest
                 atmospheric level (kg/kg)
 
Parameters
[in]timeCurrent time
[in,out]landA derived data type to specify ice boundary data
[in,out]iceA derived data type to specify ice boundary data
[in,out]land_ice_atmos_boundaryA derived data type to specify properties and fluxes passed from exchange grid to the atmosphere, land and ice

◆ generate_sfc_xgrid()

subroutine, public atm_land_ice_flux_exchange_mod::generate_sfc_xgrid ( type(land_data_type), intent(in)  Land,
type(ice_data_type), intent(in)  Ice 
)

Optimizes the exchange grids by eliminating land and ice partitions with no data.

Optimizes the exchange grids by eliminating land and ice partitions with no data.

Parameters
[in]landA derived data type to specify land boundary data
[in]iceA derived data type to specify ice boundary data

◆ put_logical_to_real_sg()

subroutine atm_land_ice_flux_exchange_mod::put_logical_to_real_sg ( logical, dimension(:,:,:), intent(in)  mask,
character(len=3), intent(in)  id,
real, dimension(:), intent(inout)  ex_mask,
type(fmsxgridxmap_type), intent(inout)  xmap 
)
private

Puts land or ice model masks (with partitions) onto the exchange grid as a real array (1.=true, 0.=false)

◆ put_logical_to_real_ug()

subroutine atm_land_ice_flux_exchange_mod::put_logical_to_real_ug ( logical, dimension(:,:), intent(in)  mask,
character(len=3), intent(in)  id,
real, dimension(:), intent(inout)  ex_mask,
type(fmsxgridxmap_type), intent(inout)  xmap 
)
private

Puts land or ice model masks (with partitions) onto the exchange grid as a real array (1.=true, 0.=false)

◆ send_ice_mask_sic()

subroutine, public atm_land_ice_flux_exchange_mod::send_ice_mask_sic ( type(fmstime_type), intent(in)  Time)

Send out the ice_mask and/or sic data. This was called inside flux_ocean_to_ice. Why?

Parameters
[in]timeCurrent time

◆ sfc_boundary_layer()

subroutine, public atm_land_ice_flux_exchange_mod::sfc_boundary_layer ( real, intent(in)  dt,
type(fmstime_type), intent(in)  Time,
type(atmos_data_type), intent(inout)  Atm,
type(land_data_type), intent(inout)  Land,
type(ice_data_type), intent(inout)  Ice,
type(land_ice_atmos_boundary_type), intent(inout)  Land_Ice_Atmos_Boundary 
)

Computes explicit fluxes as well as derivatives that will be used to compute an implicit flux correction.

The following quantities in the land_ice_atmos_boundary_type are computed:

         t_surf_atm = surface temperature (used for radiation)    (K)
         albedo_atm = surface albedo      (used for radiation)    (nondimensional)
      rough_mom_atm = surface roughness for momentum (m)
      land_frac_atm = fractional area of land beneath an atmospheric
                      grid box
         dtaudu_atm, dtaudv_atm = derivatives of wind stress w.r.t. the
                                  lowest level wind speed  (Pa/(m/s))
         flux_u_atm = zonal wind stress  (Pa)
         flux_v_atm = meridional wind stress (Pa)
         u_star_atm = friction velocity (m/s)
         b_star_atm = buoyancy scale    (m2/s)
 
Note
u_star and b_star are defined so that u_star**2 is the magnitude of surface stress divided by density of air at the surface, and u_star*b_star is the buoyancy flux at the surface.
Exceptions
FATAL,must call atm_land_ice_flux_exchange_init firstatm_land_ice_flux_exchange_init has not been called before calling sfc_boundary_layer.
Parameters
[in]dtTime step
[in]timeCurrent time
[in,out]atmA derived data type to specify atmosphere boundary data
[in,out]landA derived data type to specify land boundary data
[in,out]iceA derived data type to specify ice boundary data
[in,out]land_ice_atmos_boundaryA derived data type to specify properties and fluxes passed from exchange grid to the atmosphere, land and ice

Variable Documentation

◆ block_end

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::block_end
private

◆ block_start

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::block_start
private

◆ bound_tol

real, parameter atm_land_ice_flux_exchange_mod::bound_tol = 1e-7
private

◆ ccc

real, dimension(3) atm_land_ice_flux_exchange_mod::ccc
private

for conservation checks

◆ cplclock

integer atm_land_ice_flux_exchange_mod::cplclock
private

◆ d378

real, parameter atm_land_ice_flux_exchange_mod::d378 = 1.0-d622
private

◆ d622

real, parameter atm_land_ice_flux_exchange_mod::d622 = rdgas/rvgas
private

◆ direct

integer, parameter atm_land_ice_flux_exchange_mod::direct =3
private

◆ do_area_weighted_flux

logical atm_land_ice_flux_exchange_mod::do_area_weighted_flux = .FALSE.
private

◆ do_forecast

logical atm_land_ice_flux_exchange_mod::do_forecast = .false.
private

◆ do_init

logical atm_land_ice_flux_exchange_mod::do_init = .true.
private

◆ dt_atm

real atm_land_ice_flux_exchange_mod::dt_atm
private

◆ dt_cpl

real atm_land_ice_flux_exchange_mod::dt_cpl
private

◆ ex_albedo_fix

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_albedo_fix
private

◆ ex_albedo_nir_dif_fix

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_albedo_nir_dif_fix
private

◆ ex_albedo_nir_dir_fix

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_albedo_nir_dir_fix
private

◆ ex_albedo_vis_dif_fix

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_albedo_vis_dif_fix
private

◆ ex_albedo_vis_dir_fix

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_albedo_vis_dir_fix
private

◆ ex_avail

logical, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_avail
private

true where data on exchange grid are available

◆ ex_b_star

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_b_star
private

◆ ex_cd_m

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_cd_m
private

◆ ex_cd_t

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_cd_t
private

◆ ex_dedq_surf_forland

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dedq_surf_forland
private

◆ ex_dedt_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dedt_surf
private

d(water.vap.flux)/d(T canopy)

◆ ex_dedt_surf_forland

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dedt_surf_forland
private

◆ ex_dfdtr_atm

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_dfdtr_atm
private

d(tracer flux)/d(atm tracer)

◆ ex_dfdtr_surf

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_dfdtr_surf
private

d(tracer flux)/d(surf tracer)

◆ ex_dhdt_atm

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dhdt_atm
private

d(sens.heat.flux)/d(T atm)

◆ ex_dhdt_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dhdt_surf
private

d(sens.heat.flux)/d(T canopy)

◆ ex_dhdt_surf_forland

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dhdt_surf_forland
private

◆ ex_dqsatdt_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dqsatdt_surf
private

d(water.vap.flux)/d(q canopy)

◆ ex_drag_q

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_drag_q
private

q drag.coeff.

◆ ex_drdt_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_drdt_surf
private

d(LW flux)/d(T surf)

◆ ex_dtaudu_atm

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dtaudu_atm
private

d(stress)/d(u)

◆ ex_dtaudv_atm

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_dtaudv_atm
private

d(stress)/d(v)

◆ ex_e_q_n

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_e_q_n
private

◆ ex_e_t_n

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_e_t_n
private

◆ ex_e_tr_n

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_e_tr_n
private

coefficient in implicit scheme

◆ ex_f_t_delt_n

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_f_t_delt_n
private

◆ ex_f_tr_delt_n

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_f_tr_delt_n
private

coefficient in implicit scheme

◆ ex_flux_lw

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_flux_lw
private

longwave radiation flux

◆ ex_flux_t

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_flux_t
private

sens heat flux

◆ ex_flux_tr

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_flux_tr
private

tracer fluxes

◆ ex_flux_u

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_flux_u
private

u stress on atmosphere

◆ ex_flux_v

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_flux_v
private

v stress on atmosphere

◆ ex_gas_fields_atm

type(fmscoupler1dbc_type), pointer atm_land_ice_flux_exchange_mod::ex_gas_fields_atm =>NULL()
private

gas fields in atm Place holder for various atmospheric fields.

◆ ex_gas_fields_ice

type(fmscoupler1dbc_type), pointer atm_land_ice_flux_exchange_mod::ex_gas_fields_ice =>NULL()
private

◆ ex_gas_fluxes

type(fmscoupler1dbc_type), pointer atm_land_ice_flux_exchange_mod::ex_gas_fluxes =>NULL()
private

Place holder of intermediate calculations, such as piston velocities etc.

◆ ex_land

logical, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_land
private

true if exchange grid cell is over land

◆ ex_old_albedo

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_old_albedo
private

old value of albedo for downward flux calculations

◆ ex_p_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_p_surf
private

surface pressure

◆ ex_seawater

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_seawater
private

◆ ex_slp

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_slp
private

surface pressure

◆ ex_t_ca

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_t_ca
private

near-surface (canopy) air temperature, degK

◆ ex_t_surf

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_t_surf
private

surface temperature for radiation calc, degK

◆ ex_t_surf_miz

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_t_surf_miz
private

miz

◆ ex_tr_surf

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::ex_tr_surf
private

near-surface tracer fields

◆ ex_u_star

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_u_star
private

◆ ex_wind

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_wind
private

◆ ex_z_atm

real, dimension(:), allocatable atm_land_ice_flux_exchange_mod::ex_z_atm
private

◆ first_static

logical atm_land_ice_flux_exchange_mod::first_static = .true.
private

◆ fluxatmdnclock

integer atm_land_ice_flux_exchange_mod::fluxatmdnclock
private

◆ fluxatmupclock

integer atm_land_ice_flux_exchange_mod::fluxatmupclock
private

◆ frac_precip

real, dimension(:,:), allocatable atm_land_ice_flux_exchange_mod::frac_precip
private

◆ ico2

integer atm_land_ice_flux_exchange_mod::ico2 = NO_TRACER
private

index of co2 tracer in tracer table

◆ id_b_star

integer atm_land_ice_flux_exchange_mod::id_b_star
private

◆ id_co2_atm_dvmr

integer atm_land_ice_flux_exchange_mod::id_co2_atm_dvmr
private

◆ id_co2_bot

integer atm_land_ice_flux_exchange_mod::id_co2_bot
private

◆ id_co2_flux_pcair_atm

integer atm_land_ice_flux_exchange_mod::id_co2_flux_pcair_atm
private

◆ id_co2_surf_dvmr

integer atm_land_ice_flux_exchange_mod::id_co2_surf_dvmr
private

◆ id_del_h

integer atm_land_ice_flux_exchange_mod::id_del_h
private

◆ id_del_m

integer atm_land_ice_flux_exchange_mod::id_del_m
private

◆ id_del_q

integer atm_land_ice_flux_exchange_mod::id_del_q
private

◆ id_drag_heat

integer atm_land_ice_flux_exchange_mod::id_drag_heat
private

◆ id_drag_moist

integer atm_land_ice_flux_exchange_mod::id_drag_moist
private

◆ id_drag_mom

integer atm_land_ice_flux_exchange_mod::id_drag_mom
private

◆ id_evspsbl

integer atm_land_ice_flux_exchange_mod::id_evspsbl
private

◆ id_evspsbl_g

integer atm_land_ice_flux_exchange_mod::id_evspsbl_g
private

◆ id_gust

integer atm_land_ice_flux_exchange_mod::id_gust
private

◆ id_height10m

integer atm_land_ice_flux_exchange_mod::id_height10m
private

◆ id_height2m

integer atm_land_ice_flux_exchange_mod::id_height2m
private

◆ id_hfls

integer atm_land_ice_flux_exchange_mod::id_hfls
private

◆ id_hfls_g

integer atm_land_ice_flux_exchange_mod::id_hfls_g
private

◆ id_hfss

integer atm_land_ice_flux_exchange_mod::id_hfss
private

◆ id_hfss_g

integer atm_land_ice_flux_exchange_mod::id_hfss_g
private

◆ id_hurs

integer atm_land_ice_flux_exchange_mod::id_hurs
private

◆ id_huss

integer atm_land_ice_flux_exchange_mod::id_huss
private

◆ id_husslut_land

integer atm_land_ice_flux_exchange_mod::id_husslut_land
private

◆ id_ice_mask

integer atm_land_ice_flux_exchange_mod::id_ice_mask
private

◆ id_land_mask

integer atm_land_ice_flux_exchange_mod::id_land_mask
private

◆ id_o2_flux_pcair_atm

integer atm_land_ice_flux_exchange_mod::id_o2_flux_pcair_atm
private

◆ id_p_atm

integer atm_land_ice_flux_exchange_mod::id_p_atm
private

◆ id_psl

integer atm_land_ice_flux_exchange_mod::id_psl
private

◆ id_q_atm

integer atm_land_ice_flux_exchange_mod::id_q_atm
private

◆ id_q_flux

integer atm_land_ice_flux_exchange_mod::id_q_flux
private

◆ id_q_flux_land

integer atm_land_ice_flux_exchange_mod::id_q_flux_land
private

◆ id_q_ref

integer atm_land_ice_flux_exchange_mod::id_q_ref
private

◆ id_q_ref_land

integer atm_land_ice_flux_exchange_mod::id_q_ref_land
private

◆ id_q_star

integer atm_land_ice_flux_exchange_mod::id_q_star
private

◆ id_q_surf

integer atm_land_ice_flux_exchange_mod::id_q_surf
private

◆ id_r_flux

integer atm_land_ice_flux_exchange_mod::id_r_flux
private

◆ id_rh_ref

integer atm_land_ice_flux_exchange_mod::id_rh_ref
private

◆ id_rh_ref_cmip

integer atm_land_ice_flux_exchange_mod::id_rh_ref_cmip
private

◆ id_rh_ref_land

integer atm_land_ice_flux_exchange_mod::id_rh_ref_land
private

◆ id_rhs

integer atm_land_ice_flux_exchange_mod::id_rhs
private

◆ id_rls_g

integer atm_land_ice_flux_exchange_mod::id_rls_g
private

◆ id_rough_heat

integer atm_land_ice_flux_exchange_mod::id_rough_heat
private

◆ id_rough_moist

integer atm_land_ice_flux_exchange_mod::id_rough_moist
private

◆ id_rough_mom

integer atm_land_ice_flux_exchange_mod::id_rough_mom
private

◆ id_rough_scale

integer atm_land_ice_flux_exchange_mod::id_rough_scale
private

◆ id_sfcwind

integer atm_land_ice_flux_exchange_mod::id_sfcwind
private

◆ id_sftlf

integer atm_land_ice_flux_exchange_mod::id_sftlf
private

◆ id_sic

integer atm_land_ice_flux_exchange_mod::id_sic
private

◆ id_slp

integer atm_land_ice_flux_exchange_mod::id_slp
private

◆ id_t_atm

integer atm_land_ice_flux_exchange_mod::id_t_atm
private

◆ id_t_ca

integer atm_land_ice_flux_exchange_mod::id_t_ca
private

◆ id_t_flux

integer atm_land_ice_flux_exchange_mod::id_t_flux
private

◆ id_t_flux_land

integer atm_land_ice_flux_exchange_mod::id_t_flux_land
private

◆ id_t_ref

integer atm_land_ice_flux_exchange_mod::id_t_ref
private

◆ id_t_ref_land

integer atm_land_ice_flux_exchange_mod::id_t_ref_land
private

◆ id_t_surf

integer atm_land_ice_flux_exchange_mod::id_t_surf
private

◆ id_tas

integer atm_land_ice_flux_exchange_mod::id_tas
private

◆ id_tas_g

integer atm_land_ice_flux_exchange_mod::id_tas_g
private

◆ id_tasl_g

integer atm_land_ice_flux_exchange_mod::id_tasl_g
private

◆ id_taslut_land

integer atm_land_ice_flux_exchange_mod::id_taslut_land
private

◆ id_tauu

integer atm_land_ice_flux_exchange_mod::id_tauu
private

◆ id_tauv

integer atm_land_ice_flux_exchange_mod::id_tauv
private

◆ id_thv_atm

integer atm_land_ice_flux_exchange_mod::id_thv_atm
private

◆ id_thv_surf

integer atm_land_ice_flux_exchange_mod::id_thv_surf
private

◆ id_tos

integer atm_land_ice_flux_exchange_mod::id_tos
private

◆ id_tr_atm

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_atm
private

◆ id_tr_flux

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_flux
private

◆ id_tr_flux_land

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_flux_land
private

◆ id_tr_mol_flux

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_mol_flux
private

◆ id_tr_mol_flux0

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_mol_flux0
private

◆ id_tr_mol_flux_land

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_mol_flux_land
private

◆ id_tr_surf

integer, dimension(:), allocatable atm_land_ice_flux_exchange_mod::id_tr_surf
private

◆ id_ts

integer atm_land_ice_flux_exchange_mod::id_ts
private

◆ id_ts_g

integer atm_land_ice_flux_exchange_mod::id_ts_g
private

◆ id_tslsi

integer atm_land_ice_flux_exchange_mod::id_tslsi
private

◆ id_u_atm

integer atm_land_ice_flux_exchange_mod::id_u_atm
private

◆ id_u_flux

integer atm_land_ice_flux_exchange_mod::id_u_flux
private

◆ id_u_ref

integer atm_land_ice_flux_exchange_mod::id_u_ref
private

◆ id_u_ref_land

integer atm_land_ice_flux_exchange_mod::id_u_ref_land
private

◆ id_u_star

integer atm_land_ice_flux_exchange_mod::id_u_star
private

◆ id_uas

integer atm_land_ice_flux_exchange_mod::id_uas
private

◆ id_v_atm

integer atm_land_ice_flux_exchange_mod::id_v_atm
private

◆ id_v_flux

integer atm_land_ice_flux_exchange_mod::id_v_flux
private

◆ id_v_ref

integer atm_land_ice_flux_exchange_mod::id_v_ref
private

◆ id_v_ref_land

integer atm_land_ice_flux_exchange_mod::id_v_ref_land
private

◆ id_vas

integer atm_land_ice_flux_exchange_mod::id_vas
private

◆ id_wind

integer atm_land_ice_flux_exchange_mod::id_wind
private

◆ id_wind_ref

integer atm_land_ice_flux_exchange_mod::id_wind_ref
private

◆ id_z_atm

integer atm_land_ice_flux_exchange_mod::id_z_atm
private

◆ inh3

integer atm_land_ice_flux_exchange_mod::inh3 = NO_TRACER
private

index of nh3 tracer in tracer table

◆ isphum

integer atm_land_ice_flux_exchange_mod::isphum = NO_TRACER
private

index of specific humidity tracer in tracer table

◆ mod_name

character(len=4), parameter atm_land_ice_flux_exchange_mod::mod_name = 'flux'
private

◆ my_nblocks

integer atm_land_ice_flux_exchange_mod::my_nblocks = 1
private

◆ n_atm_tr

integer atm_land_ice_flux_exchange_mod::n_atm_tr
private

number of prognostic tracers in the atmos model

◆ n_atm_tr_tot

integer atm_land_ice_flux_exchange_mod::n_atm_tr_tot
private

number of prognostic tracers in the atmos model

◆ n_exch_tr

integer atm_land_ice_flux_exchange_mod::n_exch_tr
private

number of tracers exchanged between models

◆ n_lnd_tr

integer atm_land_ice_flux_exchange_mod::n_lnd_tr
private

number of prognostic tracers in the land model

◆ n_lnd_tr_tot

integer atm_land_ice_flux_exchange_mod::n_lnd_tr_tot
private

number of prognostic tracers in the land model

◆ n_xgrid_sfc

integer atm_land_ice_flux_exchange_mod::n_xgrid_sfc =0
private

◆ nblocks

integer atm_land_ice_flux_exchange_mod::nblocks = 1
private

◆ ni_atm

integer atm_land_ice_flux_exchange_mod::ni_atm
private

◆ nj_atm

integer atm_land_ice_flux_exchange_mod::nj_atm
private

to do atmos diagnostic from flux_ocean_to_ice

◆ nk_ice

integer atm_land_ice_flux_exchange_mod::nk_ice =0
private

◆ nxc_ice

integer atm_land_ice_flux_exchange_mod::nxc_ice =0
private

◆ nxc_lnd

integer atm_land_ice_flux_exchange_mod::nxc_lnd =0
private

◆ nyc_ice

integer atm_land_ice_flux_exchange_mod::nyc_ice =0
private

◆ nyc_lnd

integer atm_land_ice_flux_exchange_mod::nyc_lnd =0
private

◆ partition_fprec_from_lprec

logical atm_land_ice_flux_exchange_mod::partition_fprec_from_lprec = .FALSE.
private

option for ATM override experiments where liquid+frozen precip are combined. This option will convert liquid precip to snow when t_ref is less than tfreeze parameter

◆ redist

integer, parameter atm_land_ice_flux_exchange_mod::redist =2
private

◆ regenclock

integer atm_land_ice_flux_exchange_mod::regenclock
private

◆ regrid

integer, parameter atm_land_ice_flux_exchange_mod::regrid =1
private

◆ remap_method

integer atm_land_ice_flux_exchange_mod::remap_method = 1
private

◆ scale_precip_2d

logical atm_land_ice_flux_exchange_mod::scale_precip_2d = .false.
private

◆ sfcclock

integer atm_land_ice_flux_exchange_mod::sfcclock
private

◆ tag

character(len=128) atm_land_ice_flux_exchange_mod::tag = '$Name$'
private

◆ tfreeze

real, parameter atm_land_ice_flux_exchange_mod::tfreeze = 273.15
private

◆ tr_table

type(tracer_ind_type), dimension(:), allocatable atm_land_ice_flux_exchange_mod::tr_table
private

table of tracer indices

◆ tr_table_map

type(tracer_exch_ind_type), dimension(:), allocatable atm_land_ice_flux_exchange_mod::tr_table_map
private

map atm tracers to exchange, ice and land variables

◆ version

character(len=128) atm_land_ice_flux_exchange_mod::version = '$Id$'
private

◆ x1_grid_atm

integer atm_land_ice_flux_exchange_mod::x1_grid_atm
private

◆ x1_grid_ice

integer atm_land_ice_flux_exchange_mod::x1_grid_ice
private

◆ x1_grid_lnd

integer atm_land_ice_flux_exchange_mod::x1_grid_lnd
private

◆ xmap_sfc

type(fmsxgridxmap_type), save atm_land_ice_flux_exchange_mod::xmap_sfc
private

◆ z_ref_heat

real atm_land_ice_flux_exchange_mod::z_ref_heat = 2.
private

Reference height (meters) for temperature and relative humidity diagnostics (t_ref, rh_ref, del_h, del_q)

◆ z_ref_mom

real atm_land_ice_flux_exchange_mod::z_ref_mom = 10.
private

Reference height (meters) for mementum diagnostics (u_ref, v_ref, del_m)