API Docs¶
Jupyter notebooks with API examples¶
A jupyter notebook with tables of importable variables and equations can be found at https://github.com/environmentalscience/essm/blob/master/docs/examples/importable_variables_equations.ipynb
A jupyter notebook with use examples for the API can be found at https://github.com/environmentalscience/essm/blob/master/docs/examples/api_features.ipynb
Variables¶
Variables module to deal with physical variables and units.
It allows attaching docstrings to variable names, defining their domains (e.g. integer, real or complex), their units and LaTeX representations. You can also provide a default value, which is particularly useful for physical constants.
Creating variables¶
To create custom variables, first import Variable:
>>> from essm.variables import Variable
To define units, you must first import these units from the library:
>>> from essm.variables.units import joule, kelvin, meter
Then you can define a custom variable with its name, description, domain, latex_name, unit, and an optional default value.
Example: .. code-block:: python
from .variables.units import meter
- class demo_chamber_volume1(Variable):
‘’’Volume of Chamber 1.’’’
name = ‘V_c1’ domain = ‘real’ latex_name = ‘V_{c1}’ unit = meter ** 3 default = 1
Now, demo_chamber_volume is displayed as V_c1 and it will be nicely rendered in LaTeX as \(V_{c1}\).
You can type help(demo_chamber_volume) to inspects its metadata.
Variable.__defaults__ returns a dictionary with all variables and their default values, Variable.__units__ returns their units, and demo_chamber_volume.short_unit() can be used to obtain the units in short notation.
This module also contains libraries of pre-defined variables, which can be imported into your session, e.g.:
>>> from essm.variables.physics.thermodynamics import *
>>> from essm.variables.leaf.energy_water import *
Chamber¶
Chamber related variables.
Mass¶
Chamber mass and energy balance.
- 
class essm.variables.chamber.mass.W_c¶
- Bases: - essm.variables._core.Variable- Chamber width. - 
assumptions= {'real': True}¶
 - 
latex_name= 'W_c'¶
 - 
name= 'W_c'¶
 - 
unit= meter¶
 
- 
- 
class essm.variables.chamber.mass.L_c¶
- Bases: - essm.variables._core.Variable- Chamber length. - 
assumptions= {'real': True}¶
 - 
latex_name= 'L_c'¶
 - 
name= 'L_c'¶
 - 
unit= meter¶
 
- 
- 
class essm.variables.chamber.mass.H_c¶
- Bases: - essm.variables._core.Variable- Chamber height. - 
assumptions= {'real': True}¶
 - 
latex_name= 'H_c'¶
 - 
name= 'H_c'¶
 - 
unit= meter¶
 
- 
- 
class essm.variables.chamber.mass.V_c¶
- Bases: - essm.variables._core.Variable- Chamber volume. - 
assumptions= {'real': True}¶
 - 
latex_name= 'V_c'¶
 - 
name= 'V_c'¶
 - 
unit= meter**3¶
 
- 
- 
class essm.variables.chamber.mass.n_c¶
- Bases: - essm.variables._core.Variable- molar mass of gas in chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'n_c'¶
 - 
name= 'n_c'¶
 - 
unit= mole¶
 
- 
- 
class essm.variables.chamber.mass.F_in_v¶
- Bases: - essm.variables._core.Variable- Volumetric flow rate into chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{in,v}'¶
 - 
name= 'F_in_v'¶
 - 
unit= meter**3/second¶
 
- 
- 
class essm.variables.chamber.mass.F_in_mola¶
- Bases: - essm.variables._core.Variable- Molar flow rate of dry air into chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{in,mol,a}'¶
 - 
name= 'F_in_mola'¶
 - 
unit= mole/second¶
 
- 
- 
class essm.variables.chamber.mass.F_in_molw¶
- Bases: - essm.variables._core.Variable- Molar flow rate of water vapour into chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{in,mol,w}'¶
 - 
name= 'F_in_molw'¶
 - 
unit= mole/second¶
 
- 
- 
class essm.variables.chamber.mass.F_out_mola¶
- Bases: - essm.variables._core.Variable- Molar flow rate of dry air out of chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{out,mol,a}'¶
 - 
name= 'F_out_mola'¶
 - 
unit= mole/second¶
 
- 
- 
class essm.variables.chamber.mass.F_out_molw¶
- Bases: - essm.variables._core.Variable- Molar flow rate of water vapour out of chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{out,mol,w}'¶
 - 
name= 'F_out_molw'¶
 - 
unit= mole/second¶
 
- 
- 
class essm.variables.chamber.mass.F_out_v¶
- Bases: - essm.variables._core.Variable- Volumetric flow rate out of chamber. - 
assumptions= {'real': True}¶
 - 
latex_name= 'F_{out,v}'¶
 - 
name= 'F_out_v'¶
 - 
unit= meter**3/second¶
 
- 
- 
class essm.variables.chamber.mass.T_d¶
- Bases: - essm.variables._core.Variable- Dew point temperature of incoming air. - 
assumptions= {'real': True}¶
 - 
latex_name= 'T_d'¶
 - 
name= 'T_d'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.chamber.mass.T_in¶
- Bases: - essm.variables._core.Variable- Temperature of incoming air. - 
assumptions= {'real': True}¶
 - 
latex_name= 'T_{in}'¶
 - 
name= 'T_in'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.chamber.mass.T_out¶
- Bases: - essm.variables._core.Variable- Temperature of outgoing air (= chamber T_a). - 
assumptions= {'real': True}¶
 - 
latex_name= 'T_{out}'¶
 - 
name= 'T_out'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.chamber.mass.T_room¶
- Bases: - essm.variables._core.Variable- Lab air temperature. - 
assumptions= {'real': True}¶
 - 
latex_name= 'T_{room}'¶
 - 
name= 'T_room'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.chamber.mass.P_w_in¶
- Bases: - essm.variables._core.Variable- Vapour pressure of incoming air. - 
assumptions= {'real': True}¶
 - 
latex_name= 'P_{w,in}'¶
 - 
name= 'P_w_in'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.chamber.mass.P_w_out¶
- Bases: - essm.variables._core.Variable- Vapour pressure of outgoing air. - 
assumptions= {'real': True}¶
 - 
latex_name= 'P_{w,out}'¶
 - 
name= 'P_w_out'¶
 - 
unit= pascal¶
 
- 
Insulation¶
Chamber insulation material.
- 
class essm.variables.chamber.insulation.c_pi¶
- Bases: - essm.variables._core.Variable- Heat capacity of insulation material. - 
assumptions= {'real': True}¶
 - 
latex_name= 'c_{pi}'¶
 - 
name= 'c_pi'¶
 - 
unit= joule/(kelvin*kilogram)¶
 
- 
- 
class essm.variables.chamber.insulation.lambda_i¶
- Bases: - essm.variables._core.Variable- Heat conductivity of insulation material. - 
assumptions= {'real': True}¶
 - 
latex_name= 'lambda_i'¶
 - 
name= 'lambda_i'¶
 - 
unit= joule/(kelvin*meter*second)¶
 
- 
- 
class essm.variables.chamber.insulation.rho_i¶
- Bases: - essm.variables._core.Variable- Density of insulation material. - 
assumptions= {'real': True}¶
 - 
latex_name= 'rho_i'¶
 - 
name= 'rho_i'¶
 - 
unit= kilogram/meter**3¶
 
- 
- 
class essm.variables.chamber.insulation.L_i¶
- Bases: - essm.variables._core.Variable- Thickness of insulation material. - 
assumptions= {'real': True}¶
 - 
latex_name= 'L_i'¶
 - 
name= 'L_i'¶
 - 
unit= meter¶
 
- 
- 
class essm.variables.chamber.insulation.A_i¶
- Bases: - essm.variables._core.Variable- Conducting area of insulation material. - 
assumptions= {'real': True}¶
 - 
latex_name= 'A_i'¶
 - 
name= 'A_i'¶
 - 
unit= meter**2¶
 
- 
Leaf¶
Variables related to leaf energy and water balance.
Radiation¶
Leaf radiation balance.
- 
class essm.variables.leaf.radiation.alpha_l¶
- Bases: - essm.variables._core.Variable- Leaf albedo, fraction of shortwave radiation reflected by the leaf. - 
assumptions= {'real': True}¶
 - 
latex_name= 'alpha_l'¶
 - 
name= 'alpha_l'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.radiation.R_d¶
- Bases: - essm.variables._core.Variable- Downwelling global radiation. - 
assumptions= {'real': True}¶
 - 
latex_name= 'R_d'¶
 - 
name= 'R_d'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.radiation.R_la¶
- Bases: - essm.variables._core.Variable- Longwave radiation absorbed by leaf. - 
assumptions= {'real': True}¶
 - 
latex_name= 'R_{la}'¶
 - 
name= 'R_la'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.radiation.R_ld¶
- Bases: - essm.variables._core.Variable- Downwards emitted/reflected global radiation from leaf. - 
assumptions= {'real': True}¶
 - 
latex_name= 'R_{ld}'¶
 - 
name= 'R_ld'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.radiation.R_lu¶
- Bases: - essm.variables._core.Variable- Upwards emitted/reflected global radiation from leaf. - 
assumptions= {'real': True}¶
 - 
latex_name= 'R_{lu}'¶
 - 
name= 'R_lu'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.radiation.R_u¶
- Bases: - essm.variables._core.Variable- Upwelling global radiation. - 
assumptions= {'real': True}¶
 - 
latex_name= 'R_u'¶
 - 
name= 'R_u'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.radiation.S_a¶
- Bases: - essm.variables._core.Variable- Radiation sensor above leaf reading. - 
assumptions= {'real': True}¶
 - 
latex_name= 'S_a'¶
 - 
name= 'S_a'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
Energy and Water¶
Unsorted variables related to leaf model.
- 
class essm.variables.leaf.energy_water.alpha_l¶
- Bases: - essm.variables._core.Variable- Leaf albedo, fraction of shortwave radiation reflected by the leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= '\\alpha_l'¶
 - 
name= 'alpha_l'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.energy_water.a_s¶
- Bases: - essm.variables._core.Variable- Fraction of one-sided leaf area covered by stomata. - (1 if stomata are on one side only, 2 if they are on both sides). - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'a_s'¶
 - 
name= 'a_s'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.energy_water.a_sh¶
- Bases: - essm.variables._core.Variable- Fraction of projected area exchanging sensible heat with the air. - 
assumptions= {'real': True}¶
 - 
default= 2.0¶
 - 
domain= 'real'¶
 - 
latex_name= 'a_{sh}'¶
 - 
name= 'a_sh'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.energy_water.C_wl¶
- Bases: - essm.variables._core.Variable- Concentration of water in the leaf air space. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'C_{wl}'¶
 - 
name= 'C_wl'¶
 - 
unit= mole/meter**3¶
 
- 
- 
class essm.variables.leaf.energy_water.E_lmol¶
- Bases: - essm.variables._core.Variable- Transpiration rate in molar units. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'E_{l,mol}'¶
 - 
name= 'E_lmol'¶
 - 
unit= mole/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.E_l¶
- Bases: - essm.variables._core.Variable- Latent heat flux from leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'E_l'¶
 - 
name= 'E_l'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.epsilon_l¶
- Bases: - essm.variables._core.Variable- Longwave emmissivity of the leaf surface. - 
assumptions= {'real': True}¶
 - 
default= 1.0¶
 - 
domain= 'real'¶
 - 
latex_name= '\\epsilon_l'¶
 - 
name= 'epsilon_l'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.energy_water.g_bw¶
- Bases: - essm.variables._core.Variable- Boundary layer conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{bw}'¶
 - 
name= 'g_bw'¶
 - 
unit= meter/second¶
 
- 
- 
class essm.variables.leaf.energy_water.g_bwmol¶
- Bases: - essm.variables._core.Variable- Boundary layer conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{bw,mol}'¶
 - 
name= 'g_bwmol'¶
 - 
unit= mole/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.Gr¶
- Bases: - essm.variables._core.Variable- Grashof number. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Gr_L}'¶
 - 
name= 'Gr'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.leaf.energy_water.g_sw¶
- Bases: - essm.variables._core.Variable- Stomatal conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{sw}'¶
 - 
name= 'g_sw'¶
 - 
unit= meter/second¶
 
- 
- 
class essm.variables.leaf.energy_water.g_swmol¶
- Bases: - essm.variables._core.Variable- Stomatal conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{sw,mol}'¶
 - 
name= 'g_swmol'¶
 - 
unit= mole/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.g_tw¶
- Bases: - essm.variables._core.Variable- Total leaf conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{tw}'¶
 - 
name= 'g_tw'¶
 - 
unit= meter/second¶
 
- 
- 
class essm.variables.leaf.energy_water.g_twmol¶
- Bases: - essm.variables._core.Variable- Total leaf layer conductance to water vapour. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'g_{tw,mol}'¶
 - 
name= 'g_twmol'¶
 - 
unit= mole/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.h_c¶
- Bases: - essm.variables._core.Variable- Average 1-sided convective heat transfer coefficient. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'h_c'¶
 - 
name= 'h_c'¶
 - 
unit= joule/(kelvin*meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.H_l¶
- Bases: - essm.variables._core.Variable- Sensible heat flux from leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'H_l'¶
 - 
name= 'H_l'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.leaf.energy_water.L_A¶
- Bases: - essm.variables._core.Variable- Leaf area. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'L_A'¶
 - 
name= 'L_A'¶
 - 
unit= meter**2¶
 
- 
- 
class essm.variables.leaf.energy_water.L_l¶
- Bases: - essm.variables._core.Variable- Leaf width as characteristic length scale for convection. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'L_l'¶
 - 
name= 'L_l'¶
 - 
unit= meter¶
 
- 
- 
class essm.variables.leaf.energy_water.P_wl¶
- Bases: - essm.variables._core.Variable- Water vapour pressure inside the leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_{wl}'¶
 - 
name= 'P_wl'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.leaf.energy_water.r_bw¶
- Bases: - essm.variables._core.Variable- Boundary layer resistance to water vapour, inverse of $g_{bw}$. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'r_{bw}'¶
 - 
name= 'r_bw'¶
 - 
unit= second/meter¶
 
- 
- 
class essm.variables.leaf.energy_water.r_sw¶
- Bases: - essm.variables._core.Variable- Stomatal resistance to water vapour, inverse of $g_{sw}$. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'r_{sw}'¶
 - 
name= 'r_sw'¶
 - 
unit= second/meter¶
 
- 
- 
class essm.variables.leaf.energy_water.r_tw¶
- Bases: - essm.variables._core.Variable- Total leaf resistance to water vapour, $r_{bv} + r_{sv}$. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'r_{tw}'¶
 - 
name= 'r_tw'¶
 - 
unit= second/meter¶
 
- 
- 
class essm.variables.leaf.energy_water.rho_al¶
- Bases: - essm.variables._core.Variable- Density of air at the leaf surface. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= '\\rho_{al}'¶
 - 
name= 'rho_al'¶
 - 
unit= kilogram/meter**3¶
 
- 
- 
class essm.variables.leaf.energy_water.R_la¶
- Bases: - essm.variables._core.Variable- Longwave radiation absorbed by leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_{la}'¶
 - 
name= 'R_la'¶
 - 
unit= watt/meter**2¶
 
- 
- 
class essm.variables.leaf.energy_water.R_ll¶
- Bases: - essm.variables._core.Variable- Longwave radiation away from leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_{ll}'¶
 - 
name= 'R_ll'¶
 - 
unit= watt/meter**2¶
 
- 
- 
class essm.variables.leaf.energy_water.R_ld¶
- Bases: - essm.variables._core.Variable- Downwards emitted/reflected global radiation from leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_{ld}'¶
 - 
name= 'R_ld'¶
 - 
unit= watt/meter**2¶
 
- 
- 
class essm.variables.leaf.energy_water.R_lu¶
- Bases: - essm.variables._core.Variable- Upwards emitted/reflected global radiation from leaf. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_{lu}'¶
 - 
name= 'R_lu'¶
 - 
unit= watt/meter**2¶
 
- 
Physics¶
General and atmospheric thermodynamics variables.
- 
class essm.variables.physics.thermodynamics.alpha_a¶
- Bases: - essm.variables._core.Variable- Thermal diffusivity of dry air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= '\\alpha_a'¶
 - 
name= 'alpha_a'¶
 - 
unit= meter**2/second¶
 
- 
- 
class essm.variables.physics.thermodynamics.c_pa¶
- Bases: - essm.variables._core.Variable- Specific heat of dry air. - 
assumptions= {'real': True}¶
 - 
default= 1010.0¶
 - 
domain= 'real'¶
 - 
latex_name= 'c_{pa}'¶
 - 
name= 'c_pa'¶
 - 
unit= joule/(kelvin*kilogram)¶
 
- 
- 
class essm.variables.physics.thermodynamics.c_pamol¶
- Bases: - essm.variables._core.Variable- Molar specific heat of dry air. - https://en.wikipedia.org/wiki/Heat_capacity#Specific_heat_capacity - 
assumptions= {'real': True}¶
 - 
default= 29.19¶
 - 
domain= 'real'¶
 - 
latex_name= 'c_{pa,mol}'¶
 - 
name= 'c_pamol'¶
 - 
unit= joule/(kelvin*mole)¶
 
- 
- 
class essm.variables.physics.thermodynamics.c_pv¶
- Bases: - essm.variables._core.Variable- Specific heat of water vapour at 300 K. - http://www.engineeringtoolbox.com/water-vapor-d_979.html - 
assumptions= {'real': True}¶
 - 
default= 1864¶
 - 
domain= 'real'¶
 - 
latex_name= 'c_{pv}'¶
 - 
name= 'c_pv'¶
 - 
unit= joule/(kelvin*kilogram)¶
 
- 
- 
class essm.variables.physics.thermodynamics.C_wa¶
- Bases: - essm.variables._core.Variable- Concentration of water in air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'C_{wa}'¶
 - 
name= 'C_wa'¶
 - 
unit= mole/meter**3¶
 
- 
- 
class essm.variables.physics.thermodynamics.D_va¶
- Bases: - essm.variables._core.Variable- Binary diffusion coefficient of water vapour in air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'D_{va}'¶
 - 
name= 'D_va'¶
 - 
unit= meter**2/second¶
 
- 
- 
class essm.variables.physics.thermodynamics.g¶
- Bases: - essm.variables._core.Variable- Gravitational acceleration. - 
assumptions= {'real': True}¶
 - 
default= 9.81¶
 - 
domain= 'real'¶
 - 
latex_name= 'g'¶
 - 
name= 'g'¶
 - 
unit= meter/second**2¶
 
- 
- 
class essm.variables.physics.thermodynamics.Gr¶
- Bases: - essm.variables._core.Variable- Grashof number. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Gr_L}'¶
 - 
name= 'Gr'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.h_c¶
- Bases: - essm.variables._core.Variable- Average 1-sided convective heat transfer coefficient. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'h_c'¶
 - 
name= 'h_c'¶
 - 
unit= joule/(kelvin*meter**2*second)¶
 
- 
- 
class essm.variables.physics.thermodynamics.k_a¶
- Bases: - essm.variables._core.Variable- Thermal conductivity of dry air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'k_a'¶
 - 
name= 'k_a'¶
 - 
unit= joule/(kelvin*meter*second)¶
 
- 
- 
class essm.variables.physics.thermodynamics.lambda_E¶
- Bases: - essm.variables._core.Variable- Latent heat of evaporation. - 
assumptions= {'real': True}¶
 - 
default= 2450000.0¶
 - 
domain= 'real'¶
 - 
latex_name= '\\lambda_E'¶
 - 
name= 'lambda_E'¶
 - 
unit= joule/kilogram¶
 
- 
- 
class essm.variables.physics.thermodynamics.Le¶
- Bases: - essm.variables._core.Variable- Lewis number. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Le}'¶
 - 
name= 'Le'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.M_air¶
- Bases: - essm.variables._core.Variable- Molar mass of air. - http://www.engineeringtoolbox.com/molecular-mass-air-d_679.html - 
assumptions= {'real': True}¶
 - 
default= 0.02897¶
 - 
domain= 'real'¶
 - 
latex_name= 'M_{air}'¶
 - 
name= 'M_air'¶
 - 
unit= kilogram/mole¶
 
- 
- 
class essm.variables.physics.thermodynamics.M_N2¶
- Bases: - essm.variables._core.Variable- Molar mass of nitrogen. - 
assumptions= {'real': True}¶
 - 
default= 0.028¶
 - 
domain= 'real'¶
 - 
latex_name= 'M_{N_2}'¶
 - 
name= 'M_N2'¶
 - 
unit= kilogram/mole¶
 
- 
- 
class essm.variables.physics.thermodynamics.M_O2¶
- Bases: - essm.variables._core.Variable- Molar mass of oxygen. - 
assumptions= {'real': True}¶
 - 
default= 0.032¶
 - 
domain= 'real'¶
 - 
latex_name= 'M_{O_2}'¶
 - 
name= 'M_O2'¶
 - 
unit= kilogram/mole¶
 
- 
- 
class essm.variables.physics.thermodynamics.M_w¶
- Bases: - essm.variables._core.Variable- Molar mass of water. - 
assumptions= {'real': True}¶
 - 
default= 0.018¶
 - 
domain= 'real'¶
 - 
latex_name= 'M_w'¶
 - 
name= 'M_w'¶
 - 
unit= kilogram/mole¶
 
- 
- 
class essm.variables.physics.thermodynamics.nu_a¶
- Bases: - essm.variables._core.Variable- Kinematic viscosity of dry air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= '\\nu_a'¶
 - 
name= 'nu_a'¶
 - 
unit= meter**2/second¶
 
- 
- 
class essm.variables.physics.thermodynamics.Nu¶
- Bases: - essm.variables._core.Variable- Average Nusselt number over given length. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Nu_L}'¶
 - 
name= 'Nu'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.P_a¶
- Bases: - essm.variables._core.Variable- Air pressure. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_a'¶
 - 
name= 'P_a'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.physics.thermodynamics.Pr¶
- Bases: - essm.variables._core.Variable- Prandtl number (0.71 for air). - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Pr}'¶
 - 
name= 'Pr'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.P_N2¶
- Bases: - essm.variables._core.Variable- Partial pressure of nitrogen. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_{N2}'¶
 - 
name= 'P_N2'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.physics.thermodynamics.P_O2¶
- Bases: - essm.variables._core.Variable- Partial pressure of oxygen. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_{O2}'¶
 - 
name= 'P_O2'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.physics.thermodynamics.P_wa¶
- Bases: - essm.variables._core.Variable- Water vapour pressure in the atmosphere. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_{wa}'¶
 - 
name= 'P_wa'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.physics.thermodynamics.P_was¶
- Bases: - essm.variables._core.Variable- Saturation water vapour pressure at air temperature. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'P_{was}'¶
 - 
name= 'P_was'¶
 - 
unit= pascal¶
 
- 
- 
class essm.variables.physics.thermodynamics.R_d¶
- Bases: - essm.variables._core.Variable- Downwelling global radiation. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_d'¶
 - 
name= 'R_d'¶
 - 
unit= watt/meter**2¶
 
- 
- 
class essm.variables.physics.thermodynamics.Re_c¶
- Bases: - essm.variables._core.Variable- Critical Reynolds number for the onset of turbulence. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Re_c}'¶
 - 
name= 'Re_c'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.Re¶
- Bases: - essm.variables._core.Variable- Average Reynolds number over given length. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'N_{Re_L}'¶
 - 
name= 'Re'¶
 - 
unit= 1¶
 
- 
- 
class essm.variables.physics.thermodynamics.rho_a¶
- Bases: - essm.variables._core.Variable- Density of dry air. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= '\\rho_a'¶
 - 
name= 'rho_a'¶
 - 
unit= kilogram/meter**3¶
 
- 
- 
class essm.variables.physics.thermodynamics.R_u¶
- Bases: - essm.variables._core.Variable- Upwelling global radiation. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_u'¶
 - 
name= 'R_u'¶
 - 
unit= watt/meter**2¶
 
- 
- 
class essm.variables.physics.thermodynamics.R_mol¶
- Bases: - essm.variables._core.Variable- Molar gas constant. - 
assumptions= {'real': True}¶
 - 
default= 8.314472¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_{mol}'¶
 - 
name= 'R_mol'¶
 - 
unit= joule/(kelvin*mole)¶
 
- 
- 
class essm.variables.physics.thermodynamics.R_s¶
- Bases: - essm.variables._core.Variable- Solar shortwave flux per area. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'R_s'¶
 - 
name= 'R_s'¶
 - 
unit= joule/(meter**2*second)¶
 
- 
- 
class essm.variables.physics.thermodynamics.sigm¶
- Bases: - essm.variables._core.Variable- Stefan-Boltzmann constant. - 
assumptions= {'real': True}¶
 - 
default= 5.67e-08¶
 - 
domain= 'real'¶
 - 
latex_name= '\\sigma'¶
 - 
name= 'sigm'¶
 - 
unit= joule/(kelvin**4*meter**2*second)¶
 
- 
- 
class essm.variables.physics.thermodynamics.T0¶
- Bases: - essm.variables._core.Variable- Freezing point in Kelvin. - 
assumptions= {'real': True}¶
 - 
default= 273.15¶
 - 
domain= 'real'¶
 - 
latex_name= 'T_0'¶
 - 
name= 'T0'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.physics.thermodynamics.T_a¶
- Bases: - essm.variables._core.Variable- Air temperature. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'T_a'¶
 - 
name= 'T_a'¶
 - 
unit= kelvin¶
 
- 
- 
class essm.variables.physics.thermodynamics.v_w¶
- Bases: - essm.variables._core.Variable- Wind velocity. - 
assumptions= {'real': True}¶
 - 
domain= 'real'¶
 - 
latex_name= 'v_w'¶
 - 
name= 'v_w'¶
 - 
unit= meter/second¶
 
- 
Equations¶
Equations module to deal with physical equations.
It allows attaching docstrings to equation names (including references) and defining internal variables.
Creating equations¶
To create custom equations, first import Equation and variables needed:
>>> from essm.equations import Equation
>>> from essm.variables.physics.thermodynamics import *
Importing pre-defined equations¶
You can import pre-defined equations as e.g.:
>>> from essm.equations.physics.thermodynamics import *
Leaf¶
Equations related to leaf energy and water balance.
Energy Water¶
Leaf energy and water balance equations.
- 
class essm.equations.leaf.energy_water.eq_Rs_enbal¶
- Bases: - essm.equations._core.Equation- Calculate R_s from energy balance. - (Eq. 1 in [SO17]) - 
expr= Eq(R_s, E_l + H_l + R_ll)¶
 - 
name= 'eq_Rs_enbal'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Rll¶
- Bases: - essm.equations._core.Equation- R_ll as function of T_l and T_w. - (Eq. 2 in [SO17]) - 
expr= Eq(R_ll, a_sh*epsilon_l*sigm*(T_l**4 - T_w**4))¶
 - 
name= 'eq_Rll'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Hl¶
- Bases: - essm.equations._core.Equation- H_l as function of T_l. - (Eq. 3 in [SO17]) - 
expr= Eq(H_l, a_sh*h_c*(-T_a + T_l))¶
 - 
name= 'eq_Hl'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_El¶
- Bases: - essm.equations._core.Equation- E_l as function of E_lmol. - (Eq. 4 in [SO17]) - 
expr= Eq(E_l, E_lmol*M_w*lambda_E)¶
 - 
name= 'eq_El'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Elmol¶
- Bases: - essm.equations._core.Equation- E_lmol as functino of g_tw and C_wl. - (Eq. 5 in [SO17]) - 
expr= Eq(E_lmol, g_tw*(-C_wa + C_wl))¶
 - 
name= 'eq_Elmol'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_gtw¶
- Bases: - essm.equations._core.Equation- g_tw from g_sw and g_bw. - (Eq. 6 in [SO17]) - 
expr= Eq(g_tw, 1/(1/g_sw + 1/g_bw))¶
 - 
name= 'eq_gtw'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_gbw_hc¶
- Bases: - essm.equations._core.Equation- g_bw as function of h_c. - (Eq. B2 in [SO17]) - 
expr= Eq(g_bw, a_s*h_c/(Le**(2/3)*c_pa*rho_a))¶
 - 
name= 'eq_gbw_hc'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Cwl¶
- Bases: - essm.equations._core.Equation- C_wl as function of P_wl and T_l. - (Eq. B4 in [SO17]) - 
expr= Eq(C_wl, P_wl/(R_mol*T_l))¶
 - 
name= 'eq_Cwl'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Pwl¶
- Bases: - essm.equations._core.Equation- Clausius-Clapeyron P_wl as function of T_l. - (Eq. B3 in [Har94]) - 
expr= Eq(P_wl, p_CC1*exp(-M_w*lambda_E*(-1/p_CC2 + 1/T_l)/R_mol))¶
 - 
name= 'eq_Pwl'¶
 - 
p_CC1= p_CC1¶
 - 
p_CC2= p_CC2¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Elmol_conv¶
- Bases: - essm.equations._core.Equation- E_lmol as function of g_twmol and P_wl. - (Eq. B6 in [SO17]) - 
expr= Eq(E_lmol, g_twmol*(-P_wa + P_wl)/P_a)¶
 - 
name= 'eq_Elmol_conv'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_gtwmol_gtw¶
- Bases: - essm.equations.leaf.energy_water.eq_Elmol,- essm.equations.leaf.energy_water.eq_Cwl,- essm.equations.leaf.energy_water.eq_Elmol_conv- g_twmol as a function of g_tw. - It uses eq_Elmol, eq_Cwl and eq_Elmol_conv. - 
expr= Eq(g_twmol, g_tw*(P_a*P_wa*T_l - P_a*P_wl*T_a)/(R_mol*T_a*T_l*(P_wa - P_wl)))¶
 - 
name= 'eq_gtwmol_gtw'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_gtwmol_gtw_iso¶
- Bases: - essm.equations.leaf.energy_water.eq_gtwmol_gtw- g_twmol as a function of g_tw at isothermal conditions. - 
expr= Eq(g_twmol, P_a*g_tw/(R_mol*T_a))¶
 - 
name= 'eq_gtwmol_gtw_iso'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_hc¶
- Bases: - essm.equations._core.Equation- h_c as a function of Nu and L_l. - (Eq. B10 in [SO17]) - 
expr= Eq(h_c, Nu*k_a/L_l)¶
 - 
name= 'eq_hc'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Re¶
- Bases: - essm.equations._core.Equation- Re as a function of v_w and L_l. - (Eq. B11 in [SO17]) - 
expr= Eq(Re, L_l*v_w/nu_a)¶
 - 
name= 'eq_Re'¶
 
- 
- 
class essm.equations.leaf.energy_water.eq_Gr¶
- Bases: - essm.equations._core.Equation- Gr as function of air density within and outside of leaf. - (Eq. B12 in [SO17]) - 
expr= Eq(Gr, L_l**3*g*(rho_a - rho_al)/(nu_a**2*rho_al))¶
 - 
name= 'eq_Gr'¶
 
- 
Physics¶
General and atmospheric thermodynamics equations.
- 
class essm.equations.physics.thermodynamics.eq_Le¶
- Bases: - essm.equations._core.Equation- Le as function of alpha_a and D_va. - (Eq. B3 in [SO17]) - 
expr= Eq(Le, alpha_a/D_va)¶
 - 
name= 'eq_Le'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_Cwa¶
- Bases: - essm.equations._core.Equation- C_wa as a function of P_wa and T_a. - (Eq. B9 in [SO17]) - 
expr= Eq(C_wa, P_wa/(R_mol*T_a))¶
 - 
name= 'eq_Cwa'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_Nu_forced_all¶
- Bases: - essm.equations._core.Equation- Nu as function of Re and Re_c under forced conditions. - (Eqs. B13–B15 in [SO17]) - 
expr= Eq(Nu, -Pr**(1/3)*(-37*Re**(4/5) + 37*(Re + Re_c - Abs(Re - Re_c)/2)**(4/5) - 664*sqrt(Re + Re_c - Abs(Re - Re_c)/2))/1000)¶
 - 
name= 'eq_Nu_forced_all'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_Dva¶
- Bases: - essm.equations._core.Equation- D_va as a function of air temperature. - (Table A.3 in [MU07]) - 
expr= Eq(D_va, T_a*p_Dva1 - p_Dva2)¶
 - 
name= 'eq_Dva'¶
 - 
p_Dva1= p_Dva1¶
 - 
p_Dva2= p_Dva2¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_alphaa¶
- Bases: - essm.equations._core.Equation- alpha_a as a function of air temperature. - (Table A.3 in [MU07]) - 
expr= Eq(alpha_a, T_a*p_alpha1 - p_alpha2)¶
 - 
name= 'eq_alphaa'¶
 - 
p_alpha1= p_alpha1¶
 - 
p_alpha2= p_alpha2¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_ka¶
- Bases: - essm.equations._core.Equation- k_a as a function of air temperature. - (Table A.3 in [MU07]) - 
expr= Eq(k_a, T_a*p_ka1 + p_ka2)¶
 - 
name= 'eq_ka'¶
 - 
p_ka1= p_ka1¶
 - 
p_ka2= p_ka2¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_nua¶
- Bases: - essm.equations._core.Equation- nu_a as a function of air temperature. - (Table A.3 in [MU07]) - 
expr= Eq(nu_a, T_a*p_nua1 - p_nua2)¶
 - 
name= 'eq_nua'¶
 - 
p_nua1= p_nua1¶
 - 
p_nua2= p_nua2¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_rhoa_Pwa_Ta¶
- Bases: - essm.equations._core.Equation- rho_a as a function of P_wa and T_a. - (Eq. B20 in [SO17]) - 
expr= Eq(rho_a, (M_N2*P_N2 + M_O2*P_O2 + M_w*P_wa)/(R_mol*T_a))¶
 - 
name= 'eq_rhoa_Pwa_Ta'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_Pa¶
- Bases: - essm.equations._core.Equation- Calculate air pressure. - From partial pressures of N2, O2 and H2O, following Dalton’s law of partial pressures. - 
expr= Eq(P_a, P_N2 + P_O2 + P_wa)¶
 - 
name= 'eq_Pa'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_PN2_PO2¶
- Bases: - essm.equations._core.Equation- Calculate P_N2 as a function of P_O2. - It follows Dalton’s law of partial pressures. - 
expr= Eq(P_N2, P_O2*x_N2/x_O2)¶
 - 
name= 'eq_PN2_PO2'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_PO2¶
- Bases: - essm.equations.physics.thermodynamics.eq_Pa,- essm.equations.physics.thermodynamics.eq_PN2_PO2- Calculate P_O2 as a function of P_a, P_N2 and P_wa. - 
expr= Eq(P_O2, (P_a*x_O2 - P_wa*x_O2)/(x_N2 + x_O2))¶
 - 
name= 'eq_PO2'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_PN2¶
- Bases: - essm.equations.physics.thermodynamics.eq_Pa,- essm.equations.physics.thermodynamics.eq_PN2_PO2- Calculate P_N2 as a function of P_a, P_O2 and P_wa. - 
expr= Eq(P_N2, (P_a*x_N2 - P_wa*x_N2)/(x_N2 + x_O2))¶
 - 
name= 'eq_PN2'¶
 
- 
- 
class essm.equations.physics.thermodynamics.eq_rhoa¶
- Bases: - essm.equations.physics.thermodynamics.eq_rhoa_Pwa_Ta,- essm.equations.physics.thermodynamics.eq_PN2,- essm.equations.physics.thermodynamics.eq_PO2- Calculate rho_a from T_a, P_a and P_wa. - 
expr= Eq(rho_a, (x_N2*(M_N2*P_a - P_wa*(M_N2 - M_w)) + x_O2*(M_O2*P_a - P_wa*(M_O2 - M_w)))/(R_mol*T_a*x_N2 + R_mol*T_a*x_O2))¶
 - 
name= 'eq_rhoa'¶
 
- 
Internals¶
Core variable type.
- 
class essm.variables._core.Variable[source]¶
- Bases: - object- Base type for all physical variables. - 
static check_unit(expr)[source]¶
- Check if base dimensions of expression are consistent. - Checks for dimension mismatches of the addends, thus preventing expressions like meter + second to be created. 
 
- 
static 
Core equation type. Contains class definitions related to equations.
- 
class essm.equations._core.EquationMeta[source]¶
- Bases: - essm.bases.RegistryType- Equation interface. - Defines an equation with a docstring and internal variables, if needed. - Example: - from ..variables.units import meter, second class test(Equation): '''Test equation.''' class d(Variable): '''Internal variable.''' unit = meter class t(Variable): '''Internal variable.''' unit = second class v(Variable): '''Internal variable.''' unit = meter/second expr = v == d / t - Raises: - ValueError – if the units are inconsistent. - Example: - from ..variables.units import meter, second class test(Equation): '''Test equation with inconsistent units.''' class d(Variable): '''Internal variable.''' unit = meter class t(Variable): '''Internal variable.''' unit = second class v(Variable): '''Internal variable.''' unit = meter/second expr = v == d * t - Since the units of v and d*t are not the same, this returns: - ValueError: Invalid expression units: meter/second == meter*second - Build and register new variable. 
 
    
  