ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_RadStruct.H File Reference

Radiation model type and control parameters. More...

#include <cmath>
#include <string>
#include <iostream>
#include <AMReX_ParmParse.H>
#include <AMReX_ParallelDescriptor.H>
#include <AMReX_Print.H>
#include <AMReX_Gpu.H>
#include <ERF_IndexDefines.H>
#include <ERF_TurbStruct.H>
#include <ERF_NoahMPSoilTable.H>
#include <ERF_NoahMPVegetationTable.H>
#include <ERF_SimplifiedSEB.H>
#include <cstdio>
Include dependency graph for ERF_RadStruct.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  RadChoice
 Container holding radiation-related choices and parameters. More...
 

Functions

 AMREX_ENUM (TauProfileType, Constant, CloudLayer)
 Optical depth profile type for the two-stream solver. More...
 
 AMREX_ENUM (AerosolProfileType, Constant, Exponential, Table)
 Aerosol optical depth profile type for the two-stream solver. More...
 
 AMREX_ENUM (TauModel, PerLayer, Mass)
 How the clear-sky optical depth of a layer is obtained. More...
 
 AMREX_ENUM (SEBTurbulentFluxSource, SurfaceLayer, Defaults)
 Where the simplified surface energy balance takes its sensible (H) and latent (LE) heat fluxes from when no land-surface model supplies them. More...
 

Detailed Description

Radiation model type and control parameters.

Function Documentation

◆ AMREX_ENUM() [1/4]

AMREX_ENUM ( AerosolProfileType  ,
Constant  ,
Exponential  ,
Table   
)

Aerosol optical depth profile type for the two-stream solver.

  • Constant: uniform aerosol tau_per_layer applied at every level.
  • Exponential: aerosol tau decays exponentially with height via tau_aerosol(k) = tau_surface * exp(-z(k) / scale_height).
  • Table: aerosol tau prescribed per level via lookup (future extension).

◆ AMREX_ENUM() [2/4]

AMREX_ENUM ( SEBTurbulentFluxSource  ,
SurfaceLayer  ,
Defaults   
)

Where the simplified surface energy balance takes its sensible (H) and latent (LE) heat fluxes from when no land-surface model supplies them.

  • SurfaceLayer: the fluxes the lower surface layer applies to the air, in W/m^2 (the same conversion as the sensible_heat_flux / latent_heat_flux 2D outputs), so the ground loses what the air receives. Used only where a zlo surface layer exists and applies a flux; otherwise the scalar defaults.
  • Defaults: the constants seb_hfx_default and seb_lh_default everywhere.

◆ AMREX_ENUM() [3/4]

AMREX_ENUM ( TauModel  ,
PerLayer  ,
Mass   
)

How the clear-sky optical depth of a layer is obtained.

  • PerLayer: the fixed tau_per_layer / tau_lw_per_layer for every layer regardless of its thickness (the original model; the column optical depth then scales with the number of vertical cells).
  • Mass: from the layer mass path, tau = rho dz (k_dry + k_vapor qv + ...), so the column optical depth is set by the atmosphere, not by the grid. Shortwave uses sw_kabs_dry, sw_kscat_dry (Rayleigh, scattering), sw_kabs_vapor and sw_kext_cloud with sw_cloud_omega / sw_cloud_g; longwave uses lw_kabs_dry, lw_kabs_vapor and lw_kabs_cloud.

◆ AMREX_ENUM() [4/4]

AMREX_ENUM ( TauProfileType  ,
Constant  ,
CloudLayer   
)

Optical depth profile type for the two-stream solver.

  • Constant: tau_per_layer / tau_lw_per_layer applied uniformly at every level, independent of layer thickness.
  • CloudLayer: an additional cloud optical depth is added within [cloud_base_height_m, cloud_top_height_m], on top of the clear-sky background tau_per_layer / tau_lw_per_layer.