AtmosModel

AtmosProblem

AtmosModel balance law

ClimateMachine.Atmos.AtmosModelType
AtmosModel <: BalanceLaw

A BalanceLaw for atmosphere modeling. Users may over-ride prescribed default values for each field.

Usage

AtmosModel(
    param_set,
    problem,
    orientation,
    ref_state,
    turbulence,
    hyperdiffusion,
    spongelayer,
    moisture,
    radiation,
    source,
    tracers,
    data_config,
)

Fields

  • param_set

    Parameter Set (type to dispatch on, e.g., planet parameters. See CLIMAParameters.jl package)

  • problem

    Problem (initial and boundary conditions)

  • orientation

    An orientation model

  • ref_state

    Reference State (For initial conditions, or for linearisation when using implicit solvers)

  • turbulence

    Turbulence Closure (Equations for dynamics of under-resolved turbulent flows)

  • turbconv

    Turbulence Convection Closure (e.g., EDMF)

  • hyperdiffusion

    Hyperdiffusion Model (Equations for dynamics of high-order spatial wave attenuation)

  • viscoussponge

    Viscous sponge layers

  • moisture

    Moisture Model (Equations for dynamics of moist variables)

  • precipitation

    Precipitation Model (Equations for dynamics of precipitating species)

  • radiation

    Radiation Model (Equations for radiative fluxes)

  • source

    Source Terms (Problem specific source terms)

  • tracers

    Tracer Terms (Equations for dynamics of active and passive tracers)

  • data_config

    Data Configuration (Helper field for experiment configuration)

source

AtmosModel methods

ClimateMachine.BalanceLaws.flux_second_order!Method
flux_second_order!(
    atmos::AtmosModel,
    flux::Grad,
    state::Vars,
    diffusive::Vars,
    hyperdiffusive::Vars,
    aux::Vars,
    t::Real
)

Diffusive fluxes in AtmosModel. Viscosity, diffusivity are calculated in the turbulence subcomponent and accessed within the diffusive flux function. Contributions from subcomponents are then assembled (pointwise).

source
ClimateMachine.BalanceLaws.source!Method
source!(
    m::AtmosModel,
    source::Vars,
    state::Vars,
    diffusive::Vars,
    aux::Vars,
    t::Real,
    direction::Direction,
)

Computes (and assembles) source terms S(Y) in:

∂Y
-- = - ∇ • F + S(Y)
∂t
source
ClimateMachine.BalanceLaws.init_state_prognostic!Method
init_state_prognostic!(
    m::AtmosModel,
    state::Vars,
    aux::Vars,
    coords,
    t,
    args...,
)

Initialise state variables. args... provides an option to include configuration data (current use cases include problem constants, spline-interpolants).

source

Reference states

ClimateMachine.Atmos.HydrostaticStateType
HydrostaticState{P,T} <: ReferenceState

A hydrostatic state specified by a virtual temperature profile and relative humidity.

By default, this is a dry hydrostatic reference state.

source
ClimateMachine.Atmos.InitStateBCType
InitStateBC

Set the value at the boundary to match the init_state_prognostic! function. This is mainly useful for cases where the problem has an explicit solution.

TODO: This should be fixed later once BCs are figured out (likely want

different things here?)

source

Thermodynamics

ClimateMachine.Atmos.recover_thermo_stateFunction
recover_thermo_state(atmos::AtmosModel, state::Vars, aux::Vars)

Recover the thermodynamic state, based on the state and the aux state, based on the existing temperature.

Note

This method does not call the iterative saturation adjustment procedure.

source
ClimateMachine.Atmos.new_thermo_stateFunction
new_thermo_state(atmos::AtmosModel, state::Vars, aux::Vars)

Create a new thermodynamic state, based on the state, and not the aux state.

Note

This method calls the iterative saturation adjustment procedure for EquilMoist models.

source

Moisture

Stabilization

ClimateMachine.Atmos.RayleighSpongeType
RayleighSponge{FT} <: Source

Rayleigh Damping (Linear Relaxation) for top wall momentum components Assumes laterally periodic boundary conditions for LES flows. Momentum components are relaxed to reference values (zero velocities) at the top boundary.

source

BCs

ClimateMachine.Atmos.AtmosBCType
AtmosBC(momentum = Impenetrable(FreeSlip())
        energy   = Insulating()
        moisture = Impermeable()
        tracer  = ImpermeableTracer())

The standard boundary condition for AtmosModel. The default options imply a "no flux" boundary condition.

source
ClimateMachine.Atmos.DragLawType
DragLaw(fn) :: MomentumDragBC

Drag law for momentum parallel to the boundary. The drag coefficient is C = fn(state, aux, t, normu_int_tan), where normu_int_tan is the internal speed parallel to the boundary. _int refers to the first interior node.

source
ClimateMachine.Atmos.BulkFormulaMoistureType
BulkFormulaMoisture(fn) :: MoistureBC

Calculate the net inward moisture flux across the boundary using the bulk formula. The drag coefficient is C_q = fn_C_q(state, aux, t, normu_int_tan). The surface qtot at the boundary is `qtot = fnqtot(state, aux, t)`.

Return the flux (in kg m^-2 s^-1).

source
ClimateMachine.Atmos.BulkFormulaEnergyType
BulkFormulaEnergy(fn) :: EnergyBC

Calculate the net inward energy flux across the boundary. The drag coefficient is C_h = fn_C_h(state, aux, t, normu_int_tan). The surface temperature and qtot are `T, qtot = fnTandqtot(state, aux, t)`.

Return the flux (in W m^-2).

source
ClimateMachine.Atmos.ImpenetrableType
Impenetrable(drag::MomentumDragBC) :: MomentumBC

Defines an impenetrable wall model for momentum. This implies:

  • no flow in the direction normal to the boundary, and
  • flow parallel to the boundary is subject to the drag condition.
source
ClimateMachine.Atmos.average_densityFunction
average_density(ρ_sfc, ρ_int)

Average density between the surface and the interior point, given

  • ρ_sfc density at the surface
  • ρ_int density at the interior point
source

Sources

ClimateMachine.Atmos.RemovePrecipitationType
RemovePrecipitation{FT} <: Source

A sink to q_tot when cloud condensate is exceeding a threshold. The threshold is defined either in terms of condensate or supersaturation. The removal rate is implemented as a relaxation term in the Microphysics_0M module. The default thresholds and timescale are defined in CLIMAParameters.jl.

source
ClimateMachine.Atmos.CreateCloudsType
CreateClouds{FT} <: Source

A source/sink to q_liq and q_ice implemented as a relaxation towards equilibrium in the Microphysics module. The default relaxation timescales are defined in CLIMAParameters.jl.

source