Minimal#

class abcmodel.land.minimal.MinimalLandSurfaceState(alpha, surf_temp, rs, wg=<factory>, wl=<factory>, esat=<factory>, qsat=<factory>, dqsatdT=<factory>, e=<factory>, qsatsurf=<factory>, wtheta=<factory>, wq=<factory>, wCO2=<factory>)[source]#

Bases: AbstractLandState

Minimal land surface model state.

alpha: Array#

surface albedo [-], range 0 to 1.

surf_temp: Array#

Surface temperature [K].

rs: Array#

Surface resistance [s m-1].

wg: Array#

No moisture content in the root zone [m3 m-3].

wl: Array#

No water content in the canopy [m].

esat: Array#

Saturation vapor pressure [Pa].

qsat: Array#

Saturation specific humidity [kg/kg].

dqsatdT: Array#

Derivative of saturation specific humidity with respect to temperature [kg/kg/K].

e: Array#

Vapor pressure [Pa].

qsatsurf: Array#

Saturation specific humidity at surface temperature [kg/kg].

wtheta: Array#

Kinematic heat flux [K m/s].

wq: Array#

Kinematic moisture flux [kg/kg m/s].

wCO2: Array#

Kinematic CO2 flux [kg/kg m/s] or [mol m-2 s-1].

class abcmodel.land.minimal.MinimalLandSurfaceModel(*args: Any, **kwargs: Any)[source]#

Bases: AbstractLandModel

Minimal land surface model with fixed surface properties.

init_state(alpha=0.25, surf_temp=290.0, rs=1000000.0, wg=0.0, wl=0.0, wtheta=0.0)[source]#

Initialize the model state.

Parameters:
  • alpha (float) – surface albedo [-], range 0 to 1. Default is 0.25.

  • surf_temp (float) – Surface temperature [K]. Default is 290.0.

  • rs (float) – Surface resistance [s m-1]. Default is 1.0e6.

  • wg (float) – Volumetric soil moisture [m3 m-3]. Default is 0.0.

  • wl (float) – Canopy water content [m]. Default is 0.0.

  • wtheta (float) – Kinematic heat flux [K m/s]. Default is 0.0.

Returns:

The initial land state.

run(state)[source]#

Run the model.

Parameters:

state (AbstractCoupledState) – CoupledState.

Returns:

The updated land state object.

compute_dqsatdT(esat, theta, surf_pressure)[source]#

Compute the derivative of saturation vapor pressure with respect to temperature dqsatdT.

Notes

Using compute_esat(), the derivative of the saturated vapor pressure \(e_\text{sat}\) with respect to temperature \(T\) is given by

\[\frac{\text{d}e_\text{sat}}{\text{d} T} = e_\text{sat}\frac{17.2694(T-237.16)}{(T-35.86)^2},\]

which combined with compute_qsat() can be used to get

\[\frac{\text{d}q_{\text{sat}}}{\text{d} T} \approx \epsilon \frac{\frac{\text{d}e_\text{sat}}{\text{d} T}}{p}.\]
compute_e(q, surf_pressure)[source]#

Compute the vapor pressure e.

Notes

This function uses the same formula used in compute_esat(), but now factoring the vapor pressure \(e\) as a function of specific humidity \(q\) and surface pressure \(p\), which give us

\[e = q \cdot p / 0.622.\]
integrate(state, dt)[source]#

Integrate the model forward in time.

Parameters:
Returns:

The updated state object.