Public Documentation

Documentation for ClimaSeaIce.jl's public interfaces.

See the Internals section of the manual for internal package docs covering all submodules.

ClimaSeaIce

ClimaSeaIce.SeaIceThermodynamics

ClimaSeaIce.SeaIceThermodynamics.PhaseTransitionsType
PhaseTransitions(FT=Float64,
                 ice_density           = 917,   # kg m⁻³
                 ice_heat_capacity     = 2000,  # J / (kg ᵒC)
                 liquid_density        = 999.8, # kg m⁻³
                 liquid_heat_capacity  = 4186,  # J / (kg ᵒC)
                 reference_latent_heat = 334e3  # J kg⁻³
                 liquidus = LinearLiquidus(FT)) # default assumes psu, ᵒC

Return a representation of transitions between the solid and liquid phases of salty water: in other words, the freezing and melting of sea ice.

The latent heat of fusion $ℒ(T)$ (more simply just "latent heat") is a function of temperature $T$ via

\[ρᵢ ℒ(T) = ρᵢ ℒ₀ + (ρ_ℓ c_ℓ - ρᵢ cᵢ) (T - T₀) \]

where $ρᵢ$ is the ice_density, $ρ_ℓ$ is the liquid density, $cᵢ$ is the heat capacity of ice, and $c_ℓ$ is the heat capacity of liquid, and $T₀$ is a reference temperature, all of which are assumed constant.

The default liquidus assumes that salinity has practical salinity units (psu) and that temperature is degrees Celsius.

source

ClimaSeaIce.SeaIceThermodynamics.HeatBoundaryConditions

ClimaSeaIce.SeaIceThermodynamics.HeatBoundaryConditions.FluxFunctionMethod
FluxFunction(func; parameters=nothing, top_temperature_dependent=false)

Return FluxFunction representing a flux across an air-ice, air-snow, or ice-water interface. The flux is computed by func with the signature

flux = func(i, j, grid, clock, top_temperature, model_fields)

if isnothing(parameters), or

flux = func(i, j, grid, clock, top_temperature, model_fields, parameters)

if !isnothing(parameters). If func is top_temperature_dependent, then it will be recomputed during a diagnostic solve for the top temperature.

source
ClimaSeaIce.SeaIceThermodynamics.HeatBoundaryConditions.MeltingConstrainedFluxBalanceMethod
MeltingConstrainedFluxBalance(top_surface_temperature_solver=NonlinearSurfaceTemperatureSolver())

Return a boundary condition that determines the top (or "upper surface") temperature $Tᵤ$ to equilibrate the top heat fluxes,

\[Qₓ₁(Tᵤ) + Qₓ₂(Tᵤ) + ⋯ - Qᵢ = Σᴺ Qₓₙ(Tᵤ) - Qᵢ = δQ ,\]

where $Qᵢ$ is the intrinsic flux into the top from within the ice (typically, a conductive flux), $Qₓₙ$ represent external fluxes into the air above the ice, $δQ$ is the residual flux, and $Tᵤ$ is the (upper) top temperature. $Tᵤ$ is evaluated under the constraint that

\[Tᵤ ≤ Tₘ(S),\]

where $Tₘ(S)$ is the melting temperature, which is a function of the ice salinity at the top, $S$. When $Tᵤ < Tₘ(S)$, the top is frozen and $δQ = 0$. When the constraint operates, such that $Tᵤ = Tₘ(S)$, the top is melting and the residual flux is non-zero.

\[δQ ≡ Σᴺ Qₙ(Tₘ) - Qᵢ(Tₘ).\]

The residual flux is consumed by the cost of transforming ice into liquid water, and is related to the rate of change of ice thickness, $h$, by

\[\frac{dhₛ}{dt} = δQ / ℒ(Tᵤ)\]

where $ℒ(Tᵤ)$ is the latent heat, equal to the different between the higher internal energy of liquid water and the lower internal energy of solid ice, at the temperature $Tᵤ$.

source

ClimaSeaIce.EnthalpyMethodSeaIceModels