FMS Coupler  2022.03
Data Types | Modules | Functions/Subroutines | Variables
atm_land_ice_flux_exchange.F90 File Reference

(f306ac155bd99a9741acab4c7fcdcacd0f526ea4)

Performs flux calculations and exchange grid operations for atmosphere, land and ice. More...

Data Types

type  atm_land_ice_flux_exchange_mod::tracer_ind_type
 
type  atm_land_ice_flux_exchange_mod::tracer_exch_ind_type
 
interface  atm_land_ice_flux_exchange_mod::put_logical_to_real
 

Modules

module  atm_land_ice_flux_exchange_mod
 

Functions/Subroutines

subroutine, public atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::generate_sfc_xgrid (Land, Ice)
 Optimizes the exchange grids by eliminating land and ice partitions with no data. More...
 
subroutine, public atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::flux_ex_arrays_dealloc
 
subroutine, public atm_land_ice_flux_exchange_mod::flux_atmos_to_ocean (Time, Atm, Ice_boundary, Ice)
 
subroutine atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::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 atm_land_ice_flux_exchange_mod::divide_by_area (data, area)
 Divide data by area while avoiding zero area elements. More...
 
subroutine, public atm_land_ice_flux_exchange_mod::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_land_ice_flux_exchange_mod::atm_stock_integrate (Atm, res)
 

Variables

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

Detailed Description

Performs flux calculations and exchange grid operations for atmosphere, land and ice.