Soil Water Parameterizations
Water functions
ClimateMachine.Land.SoilWaterParameterizations.AbstractImpedanceFactor
— TypeAbstractImpedanceFactor{FT <: AbstractFloat}
ClimateMachine.Land.SoilWaterParameterizations.NoImpedance
— TypeNoImpedance{FT} <: AbstractImpedanceFactor{FT}
A model to indicate to dependence on ice for the hydraulic conductivity.
ClimateMachine.Land.SoilWaterParameterizations.IceImpedance
— TypeIceImpedance{FT} <: AbstractImpedanceFactor{FT}
The necessary parameters for the empirical impedance factor due to ice.
Fields
Ω
Empirical coefficient from Hansson 2014.
ClimateMachine.Land.SoilWaterParameterizations.impedance_factor
— Functionimpedance_factor(
imp::NoImpedance{FT},
f_i::FT,
) where {FT}
Returns the impedance factor when no effect due to ice is desired. Returns 1.
The other arguments are included to unify the function call.
impedance_factor(
imp::IceImpedance{FT},
f_i::FT,
) where {FT}
Returns the impedance factor when an effect due to the fraction of ice is desired.
ClimateMachine.Land.SoilWaterParameterizations.AbstractViscosityFactor
— TypeAbstractViscosityFactor{FT <: AbstractFloat}
ClimateMachine.Land.SoilWaterParameterizations.ConstantViscosity
— TypeConstantViscosity{FT} <: AbstractViscosityFactor{FT}
A model to indicate a constant viscosity - independent of temperature - factor in hydraulic conductivity.
ClimateMachine.Land.SoilWaterParameterizations.TemperatureDependentViscosity
— TypeTemperatureDependentViscosity{FT} <: AbstractViscosityFactor{FT}
The necessary parameters for the temperature dependent portion of hydraulic conductivity.
Fields
γ
Empirical coefficient
T_ref
Reference temperature
ClimateMachine.Land.SoilWaterParameterizations.viscosity_factor
— Functionviscosity_factor(
vm::ConstantViscosity{FT},
T::FT,
) where {FT}
Returns the viscosity factor when we choose no temperature dependence, i.e. a constant viscosity. Returns 1.
T is included as an argument to unify the function call.
viscosity_factor(
vm::TemperatureDependentViscosity{FT},
T::FT,
) where {FT}
Returns the viscosity factor when we choose a TemperatureDependentViscosity.
ClimateMachine.Land.SoilWaterParameterizations.AbstractMoistureFactor
— TypeAbstractMoistureFactor{FT <:AbstractFloat}
ClimateMachine.Land.SoilWaterParameterizations.MoistureDependent
— TypeMoistureDependent{FT} <: AbstractMoistureFactor{FT} end
Moisture dependent moisture factor.
ClimateMachine.Land.SoilWaterParameterizations.MoistureIndependent
— TypeMoistureIndependent{FT} <: AbstractMoistureFactor{FT} end
Moisture independent moisture factor.
ClimateMachine.Land.SoilWaterParameterizations.moisture_factor
— Functionmoisture_factor(
mm::MoistureDependent,
hm::vanGenuchten{FT},
S_l::FT,
) where {FT}
Returns the moisture factor of the hydraulic conductivy assuming a MoistureDependent and van Genuchten hydraulic model.
This is intended to be used with an instance of vanGenuchten
that has float parameters.
moisture_factor(
mm::MoistureDependent,
hm::BrooksCorey{FT},
S_l::FT,
) where {FT}
Returns the moisture factor of the hydraulic conductivy assuming a MoistureDependent and Brooks/Corey hydraulic model.
This is intended to be used with an instance of BrooksCorey
that has float parameters.
moisture_factor(
mm::MoistureDependent,
hm::Haverkamp{FT},
S_l::FT,
) where {FT}
Returns the moisture factor of the hydraulic conductivy assuming a MoistureDependent and Haverkamp hydraulic model.
This is intended to be used with an instance of Haverkamp
that has float parameters.
moisture_factor(mm::MoistureIndependent,
hm::AbstractHydraulicsModel{FT},
S_l::FT,
) where {FT}
Returns the moisture factor in hydraulic conductivity when a MoistureIndependent model is chosen. Returns 1.
Note that the hydraulics model and S_l are not used, but are included as arguments to unify the function call.
ClimateMachine.Land.SoilWaterParameterizations.AbstractHydraulicsModel
— TypeAbstractsHydraulicsModel{FT <: AbstractFloat}
Hydraulics model is used in the moisture factor in hydraulic conductivity and in the matric potential. The single hydraulics model choice sets both of these.
ClimateMachine.Land.SoilWaterParameterizations.vanGenuchten
— TypevanGenuchten{FT} <: AbstractHydraulicsModel{FT}
The necessary parameters for the van Genuchten hydraulic model; defaults are for Yolo light clay.
The user can supply either floats or functions of aux
(aux.x
, aux.y
, aux.z
), which return a scalar float. Internally, the parameters will be converted to type FT and the functions altered to return type FT, so the parameters must be abstract floats or functions that return abstract floats.
Fields
n
Exponent parameter - used in matric potential
α
used in matric potential. The inverse of this carries units in the expression for matric potential (specify in inverse meters).
m
Exponent parameter - determined by n, used in hydraulic conductivity
ClimateMachine.Land.SoilWaterParameterizations.BrooksCorey
— TypeBrooksCorey{FT,T1,T2} <: AbstractHydraulicsModel{FT}
The necessary parameters for the Brooks and Corey hydraulic model.
Defaults are chosen to somewhat mirror the Havercamp/vG Yolo light clay hydraulic conductivity/matric potential. The user can supply either floats or functions of aux
(aux.x
, aux.y
, aux.z
), which return a scalar float. Internally, the parameters will be converted to type FT and the functions altered to return type FT, so the parameters must be abstract floats or functions that return abstract floats.
Fields
ψb
ψ_b - used in matric potential. Units of meters.
m
Exponent used in matric potential and hydraulic conductivity.
ClimateMachine.Land.SoilWaterParameterizations.Haverkamp
— TypeHaverkamp{FT,T1,T2,T3,T4,T5} <: AbstractHydraulicsModel{FT}
The necessary parameters for the Haverkamp hydraulic model for Yolo light clay.
Note that this only is used in creating a hydraulic conductivity function, and another formulation for matric potential must be used. The user can supply either floats or functions of aux
(aux.x
, aux.y
, aux.z
), which return a scalar float. Internally, the parameters will be converted to type FT and the functions altered to return type FT, so the parameters must be abstract floats or functions that return abstract floats.
Fields
k
exponent in conductivity
A
constant A (units of cm^k) using in conductivity. Our sim is in meters
n
Exponent parameter - using in matric potential
α
used in matric potential. The inverse of this carries units in the expression for matric potential (specify in inverse meters).
m
Exponent parameter - determined by n, used in hydraulic conductivity
ClimateMachine.Land.SoilWaterParameterizations.hydraulic_conductivity
— Functionhydraulic_conductivity(
Ksat::FT,
impedance::FT,
viscosity::FT,
moisture::FT,
) where {FT}
Returns the hydraulic conductivity.
ClimateMachine.Land.SoilWaterParameterizations.effective_saturation
— Functioneffective_saturation(
porosity::FT,
ϑ_l::FT,
θ_r::FT,
) where {FT}
Compute the effective saturation of soil.
ϑ_l
is defined to be larger than θ_r
. If ϑ_l-θ_r
is negative, hydraulic functions that take it as an argument will return imaginary numbers, resulting in domain errors. Exit in this case with an error.
ClimateMachine.Land.SoilWaterParameterizations.pressure_head
— Functionpressure_head(
model::AbstractHydraulicsModel{FT},
ν::FT,
S_s::FT,
θ_r::FT,
ϑ_l::FT,
θ_i::FT,
) where {FT,PS}
Determine the pressure head in both saturated and unsaturated soil.
If ice is present, it reduces the volume available for liquid water. The augmented liquid fraction changes behavior depending on if this volume is full of liquid water vs not. Therefore, the region of saturated vs unsaturated soil depends on porosity - θ_i, not just on porosity. If the liquid water is unsaturated, the usual matric potential expression is treated as unaffected by the presence of ice.
ClimateMachine.Land.SoilWaterParameterizations.hydraulic_head
— Functionhydraulic_head(z,ψ)
Return the hydraulic head.
The hydraulic head is defined as the sum of vertical height z and pressure head ψ; meters.
ClimateMachine.Land.SoilWaterParameterizations.matric_potential
— Functionmatric_potential(
model::vanGenuchten{FT},
S_l::FT
) where {FT}
Wrapper function which computes the van Genuchten function for matric potential.
matric_potential(
model::Haverkamp{FT},
S_l::FT
) where {FT}
Compute the van Genuchten function as a proxy for the Haverkamp model matric potential (for testing purposes).
matric_potential(
model::BrooksCorey{FT},
S_l::FT
) where {FT}
Compute the Brooks and Corey function for matric potential.
ClimateMachine.Land.SoilWaterParameterizations.volumetric_liquid_fraction
— Functionvolumetric_liquid_fraction(
ϑ_l::FT,
eff_porosity::FT,
) where {FT}
Compute the volumetric liquid fraction from the effective porosity and the augmented liquid fraction.
ClimateMachine.Land.SoilWaterParameterizations.inverse_matric_potential
— Functioninverse_matric_potential(
model::vanGenuchten{FT},
ψ::FT
) where {FT}
Compute the effective saturation given the matric potential, using the van Genuchten formulation.
inverse_matric_potential(
model::Haverkamp{FT}
ψ::FT
) where {FT}
Compute the effective saturation given the matric potential using the Haverkamp hydraulics model. This model uses the van Genuchten formulation for matric potential.
inverse_matric_potential(
model::BrooksCorey{FT}
ψ::FT
) where {FT}
Compute the effective saturation given the matric potential using the Brooks and Corey formulation.