Plant utils functions

AUTHORS: Julien Ruffault (julien.ruff@gmail.com), Nicolas Martin-StPaul (nicolas.martin@inrae.fr)

source

rs_comp

 rs_comp (pi_ft:float, e_symp:float, p_min:float)

Compute Rs from pmin (resolution from Bartlet et al 2012 EcolLett and email Herve Cochard 19/06/2015)

Type Details
pi_ft float Osmotic potential at full turgor (MPa)
e_symp float Modulus of elastoicoty of the Symplasm (MPa/%)
p_min float Unknown parameter definition
Returns float

source

turgor_comp

 turgor_comp (pi_ft:float, e_symp:float, r_stemp:float)

Turgor pressure

Type Details
pi_ft float Osmotic potential at full turgor (MPa)
e_symp float Modulus of elastoicoty of the Symplasm (MPa/%)
r_stemp float Unknown parameter definition
Returns float

source

compute_turgor_from_psi

 compute_turgor_from_psi (pi_ft:float, e_symp:float, psi:List)

Computes Turgor pressure from Pressure-Volume curves parameters and water potential

Type Details
pi_ft float Osmotic potential at full turgor (MPa)
e_symp float Modulus of elastoicoty of the Symplasm (MPa/%)
psi typing.List List of Water potential of the organ (MPa)
Returns array

Example: Compute turgor

compute_turgor_from_psi(pi_ft=2, e_symp=3, psi=[1, 2, 3])
array([0., 0., 0.])
Error: Function only return zeros
for each_psi in range(1, 10):
    print(compute_turgor_from_psi(pi_ft=2, e_symp=3, psi=[each_psi]))
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]

source

osmo_comp

 osmo_comp (pi_ft:float, r_stemp:float)

Compute osmotic potential

Type Details
pi_ft float Osmotic potential at full turgor (MPa)
r_stemp float Unknown parameter definition
Returns float

source

psi_total_symp_comp

 psi_total_symp_comp (pi_ft:float, e_symp:float, r_stemp:float)

Compute Total potential

Type Details
pi_ft float Osmotic potential at full turgor (MPa)
e_symp float Modulus of elastoicoty of the Symplasm (MPa/%)
r_stemp float Unknown parameter definition
Returns float

source

stomatal_regulation_turgor

 stomatal_regulation_turgor (turgor_pressure:float,
                             max_turgor_pressure:float, e_max:float,
                             e_cuti:float)

This function computes stomatal regulation if stomatal closure is limited (linearly) by turgor pressure

Type Details
turgor_pressure float Turgor pressure
max_turgor_pressure float Maximum turgor pressure,
e_max float Unknown parameter definition
e_cuti float Residual Transpiration
Returns array

Example: Compute Stomatal Regulation

stomatal_regulation_turgor(
    turgor_pressure=1, max_turgor_pressure=2, e_max=3, e_cuti=4
)
array([1.5, 3. ])

source

plc_comp

 plc_comp (p_min:float, slope:float, p50:float)

Compute Percentage loss of conductivity

Type Details
p_min float Unknown parameter definition
slope float Unknown parameter definition
p50 float Unknown parameter definition
Returns float

source

plc_prime_comp

 plc_prime_comp (plc:float, slope:float)

This function computes PLC Prime from PLC current value

Type Details
plc float Computed using the plc_comp function
slope float Unknown parameter definition
Returns float

source

gs_curve

 gs_curve (x:float, slope_gs:float, p50_gs:float, psi_start_closing:float,
           psi_close:float, pi_ft:float, e_symp:float,
           turgor_pressure_at_gs_max:float, gs_max:float,
           transpiration_model:str=['jarvis', 'granier'],
           stomatal_reg_formulation:str=['sigmoid', 'piecewise_linear',
           'turgor'])

To obtain plots of the gs regulation curve

Type Default Details
x float Unknown parameter definition
slope_gs float Unknown parameter definition
p50_gs float Unknown parameter definition
psi_start_closing float Unknown parameter definition
psi_close float Unknown parameter definition
pi_ft float Osmotic potential at full turgor (MPa)
e_symp float Modulus of elastoicoty of the Symplasm (MPa/%)
turgor_pressure_at_gs_max float Unknown parameter definition
gs_max float Unknown parameter definition
transpiration_model str [‘jarvis’, ‘granier’] Transpiration model type
stomatal_reg_formulation str [‘sigmoid’, ‘piecewise_linear’, ‘turgor’]
Returns float type of regulation to be used for stomatal response to leaf symplasmic water potential, either sigmoid or piecewise_linear

source

compute_gmin

 compute_gmin (leaf_temp:float, gmin_20:float, t_phase:float, q10_1:float,
               q10_2:float, gmin_temp_off=False)

Calculate minimum conductance (gmin) following Cochard et al. (2019)

Type Default Details
leaf_temp float Temperature of the leaf (degC)
gmin_20 float leaf conductance at 20 degC
t_phase float Temperature for phase transition of gmin
q10_1 float Q10 values for g_min= f(T) below T_phase
q10_2 float Q10 values for g_cuti = f(T) above T_phase
gmin_temp_off bool False Unknown parameter definition
Returns float

source

compute_emin

 compute_emin (gmin:float, vpd:float, g_bl:float, g_crown:float,
               air_pressure:float=101.3)

Calculate minimum transpiration (emin)

Type Default Details
gmin float minimum conductance
vpd float Vapor Pressure Deficit (kPa)
g_bl float Unknown parameter definition
g_crown float Unknown parameter definition. Use compute_g_crown
air_pressure float 101.3 Surface air pressure (kPa)
Returns float

source

compute_dfmc

 compute_dfmc (vpd:float, fm0=5.43, fm1=52.91, m=0.64)

Compute dead fuel moisture content from VPD following De Dios et al. (2015)

Type Default Details
vpd float Vapor pressure deficit (kPA)
fm0 float 5.43 Minimum fuel moisture content (% dry weight)
fm1 float 52.91 Maximum fuel moisture content (% dry weight)
m float 0.64 Rate of decay
Returns float Fuel moisture content (% dry weight)

source

distribute_conductances

 distribute_conductances (k_plant_init:float, ri:float,
                          frac_leaf_sym:float=0.4)

Calcultate hydraulic conductances in the different portions of the plant (trunk, leaf and root) according to predetermined rules

Type Default Details
k_plant_init float Conductance of the plant from root to leaf
ri float Root distribution within the soil layers.
frac_leaf_sym float 0.4 Proportion of k_plant_init assigned to the leaf (apoplasm to symplasm pathway)
Returns typing.Dict

Example: Distribute conductances

distribute_conductances(k_plant_init=1, ri=2, frac_leaf_sym=0.4)
defaultdict(list,
            {'k_slapo_init': 5.0,
             'k_lsym_init': 2.5,
             'k_rsapo_init': 5.0,
             'k_plant_init': 1})

source

compute_g_crown

 compute_g_crown (g_crown0:float, wind_speed:float)

Calcultate g_crown

Type Details
g_crown0 float Unknown parameter definition
wind_speed float Unknown parameter definition
Returns float

source

convert_flux_from_mmolm2s_to_mm

 convert_flux_from_mmolm2s_to_mm (x:float, time_step:float, lai:float)

Convert an instantaneous flux in mmol.m-2Leaf.s-1 to a amount in mm (L.m2soil) over a defined time period

Type Details
x float The amount of water in mm (L.m-2soil)
time_step float Time step (in hours)
lai float Leaf area index of the stand (m2leaf.m-2soil)
Returns float

source

convert_flux_from_mm_to_mmolm2s

 convert_flux_from_mm_to_mmolm2s (x:float, time_step:float, lai:float)

Convert flux in L.m-2soil to an instantaneous flux in mmol/m-2leaf.s-1 over a defined time period

Type Details
x float The amount of water in mm (L.m-2soil)
time_step float Time step (in hours)
lai float Leaf area index of the stand (m2leaf.m-2soil)
Returns float

source

calculate_ebound_mm_granier

 calculate_ebound_mm_granier (etp:float, lai:float, a:float=-0.006,
                              b:float=0.134, c:float=0)

No description found in R source code

Type Default Details
etp float Unknown parameter definition
lai float Leaf area index of the stand (m2leaf.m-2soil)
a float -0.006 Unknown parameter definition
b float 0.134 Unknown parameter definition
c float 0 Unknown parameter definition
Returns float

source

calculate_ebound_granier

 calculate_ebound_granier (etp:float, lai:float, time_step:float)

No description found in R source code

Type Details
etp float Unknown parameter definition
lai float Leaf area index of the stand (m2leaf.m-2soil)
time_step float Time step (in hours)
Returns float

Example: Calculate ebound

calculate_ebound_granier(etp=1, lai=2, time_step=3)
0.6275720164609054

source

convert_f_cm3_to_v_mm

 convert_f_cm3_to_v_mm (x:float, rock_fragment_content:float,
                        layer_thickness:float)

Convert soil parameter from from cm3.cm-3 to mm according to thickness and rock fragment content

Type Details
x float Soil value to be converted (in m3.m-3)
rock_fragment_content float Rock fragment content of the soil layer (%)
layer_thickness float Thickness of the soil layer (in m)
Returns float y soil parameter in mm

source

compute_tleaf

 compute_tleaf (t_air:float, par:float, potential_par:float,
                wind_speed:float, relative_humidity:int, gs:float,
                g_cuti:float, e_inst:float, psi_leaf:float,
                leaf_size:float=50, leaf_angle:int=45,
                turn_off_eb:bool=False, transpiration_model:str=['jarvis',
                'granier'])

Compute leaf temperature and Vapour Pressure deficit

Type Default Details
t_air float Air temperature (degC)
par float Unknown parameter definition
potential_par float Unknown parameter definition. Calculated using potential_par function?
wind_speed float Unknown parameter definition (m/s)
relative_humidity int Air relative_humidity(%)
gs float Stomatal conductance
g_cuti float leaf conductance
e_inst float Unknown parameter definition
psi_leaf float Unknown parameter definition
leaf_size float 50 Characteristic dimension from vegetation params in mm i.e. 1 (pine needle) to 3000 (banana leaf)
leaf_angle int 45 Leaf angle (depuis le plan horizontal : 0-90 deg)
turn_off_eb bool False Unknown parameter definition. Tleaf Energy balance?
transpiration_model str [‘jarvis’, ‘granier’] Transpiration model type
Returns typing.Dict Dictionary with parameters

Example: Compute tleaf

compute_tleaf(
    t_air=60,
    par=100,
    potential_par=1,
    wind_speed=3,
    relative_humidity=60,
    gs=1,
    g_cuti=2,
    e_inst=3,
    psi_leaf=4,
    leaf_size=50,
    leaf_angle=45,
    turn_off_eb=False,
    transpiration_model="jarvis",
)
defaultdict(list,
            {'t_leaf': 60.394042704329365,
             'g_bl': 3076.697970227172,
             'vpd_leaf': 8.880103411681098,
             'vpd_air': 7.978058190496631,
             'delta_t': 0.39404270432936683})

source

read_vegetation_file

 read_vegetation_file (file_path:pathlib.Path, modeling_options:Dict,
                       sep:str=';')

Function for reading a data frame containing information about vegetation characteristics

Type Default Details
file_path Path Path to a csv file containing parameter values i.e path/to/file_name.csv
modeling_options typing.Dict Dictionary created using the create_modeling_options function
sep str ; CSV file separator can be ‘,’ or ‘;’
Returns typing.Dict

source

VegetationFile

 VegetationFile (*args, **kwargs)

Schema for validating the input CSV spreadsheet with trait parameters.

List of traits required:

term_in_code term_in_paper Definition Units
P50_VC_Leaf ψ50,L Water potential causing 50% Cavitation in the vulnerability curve MPa
slope_VC_Leaf slopeL Slope of rate of leaf embolism spread at ψ50,L %/MPa
epsilonSym_Leaf εL Modulus of elasticity of the leaf symplasm MPa
PiFullTurgor_Leaf π0L Osmotic potential at full turgor of the leaf symplasm MPa
apoFrac_Leaf αLApo Apoplasmic Fraction in leaves/Leaf apoplasmic fraction Unitless
LDMC LDMC Leaf dry matter content (dry mass over saturated mass) mgMS/g??
LMA LMA Leaf mass per area g/m2leaf
K k Light extinction coefficient of the vegetation layer unitless
k_PlantInit not found Hydaulic conductance of the plant from soil to leaves mmol/MPa/s/m2leaf?
gmin20 gcuti20 Minimum conductance (gmin) at the reference temperature. mmol/m2leaf/s-1
TPhase_gmin TPhase Temperature for phase transition of minimum conductance/Temperature for transition phase of gcuti degC
Q10_1_gmin Q10a Q10 value for gmin = f(T) <= Tphase_gmin/ Temperature dependance of gcuti when T ≤ TPhase unitless
Q10_2_gmin Q10b Q10 value for gmin = f(T) > Tphase_gmin/ Temperature dependance of gcuti when T > TPhase unitless
gmin_S not found conductance (gmin) of the stem Unitless??
canopyStorageParam cws Depth of water that can be retained by leaves and trunks per unit of leaf area index (used to compute the canopy water storage capacity as a function of LAI l/m2leaf
rootRadius dR radius of roots meters
fRootToLeaf RaLa Root-to-leaf area ratio unitless
betaRootProfile β parameter for the distribution of roots in the soil unitless
PiFullTurgor_Stem π0S Osmotic potential at full turgor of the stem symplasm MPa
epsilonSym_Stem εS Modulus of elasticity of the stem symplasm MPa
apoFrac_Stem αSApo Stem apoplasmic fraction of the wood water volume Unitless
symFrac_Stem αSSym Stem symplasmic fraction of the wood water volume Unitless
vol_Stem VS Volume of tissue of the stem (includes the root, trunk and branches) L m−2 soil
fTRBToLeaf not found Definition not found
C_LApoInit CLApo Capacitance of the leaf apoplasm mmol m−2 leaf MPa−1
C_SApoInit CSApo Capacitance of the stem apoplasm mmol m−2 leaf MPa−1
P50_VC_Stem ψ50,S Water potential causing 50 % loss of stem hydraulic conductance MPa
slope_VC_Stem slopeS Slope of rate of stem embolism spread at ψ50,S % MPa−1
k_SSymInit not found Definition not found not found
foliage not found Definition not found Not applicable
not found t0 Initial date of the forcing period for leaf phenology DOY
not found TD Minimum temperature to start cumulating temperature for budburst ◦C
not found F∗ Amount of forcing temperature to reach budburst ◦C
RAI RLAI LAI growth rate per day LAI d−1
k_RSApoInit KR-SApo,max Maximum conductance from the root surface to the stem apoplasm mmol m−2 leaf s −1 MPa−1
k_SLApoInit KSApo−LApo,max Maximum conductance from trunk apoplasm to the leaf apoplasm mmol m−2 leaf s −1 MPa−1
not found KSSym Conductance from the stem apoplasm to stem symplasm mmol m−2 leaf s −1 MPa−1
k_LSymInit KLSym Conductance from the leaf apoplasm to leaf symplasm mmol m−2 leaf s −1 MPa−1
not found Succulence Leaf succulence (water content per unit of leaf area) g m−2 leaf
P50_gs ψgs50 Water potential causing 50 % stomatal closure MPa
not found slopegs Rate of decrease in stomatal conductance at ψgs,50 % MPa−1
not found gstom_min Minimum stomatal conductance mmol m−2 leaf s −1
not found gstom_max Maximum stomatal conductance mmol m−2 leaf s −1
not found δ Response of gstom to light unitless
not found Toptim Temperature at maximal stomatal conductance ◦C
not found Tsens Stomatal sensitivity to temperature ◦C
not found θs Soil water content at saturation unitless
not found θr Residual soil water content unitless
not found α Inverse of the air entry potential 1/MPa
not found n Pore size distribution index unitless
not found I Shape parameter for the Van Genuchten equation unitless
not found ksat Soil hydraulic conductivity at saturation mmol m−1 soil s −1 MPa−1
not found gsoil0 Reference soil conductance to water vapor mmol m−2 soil s −1

Example: Read vegetation CSV file

modeling_options_dict = create_modeling_options(
    time_step_for_evapo=2,
    reset_swc=True,
    avoid_water_soil_transfer=True,
    constant_climate=False,
    defoliation=True,
    soil_evapo=True,
    threshold_mortality=51,
    etp_formulation="pt",
    rn_formulation="linear",
    comp_options_for_evapo="custom",
    stomatal_reg_formulation="turgor",
    transpiration_model="jarvis",
    numerical_scheme="implicit",
    pedo_transfer_formulation="vg",
)
read_vegetation_file(
    file_path="./sample_data/vegetation_example_wide.csv",
    modeling_options=modeling_options_dict,
    sep=",",
)
frac_leaf_sym' set to 0.4
/tmp/ipykernel_37992/2639462457.py:235: UserWarning: Foliage evergreen has no params
  warnings.warn("Foliage evergreen has no params")
defaultdict(list,
            {'c_lapoinit': 1e-05,
             'c_sapoinit': 2e-05,
             'fcrit': 450,
             'foliage': 'evergreen',
             'jarvis_par': 0.006,
             'k': 0.5,
             'k_plantinit': 0.62,
             'k_ssyminit': 0.26,
             'ldmc': 570,
             'lma': 106,
             'p12_gs': -2.07,
             'p50_vc_leaf': -3.4,
             'p50_vc_stem': -3.4,
             'p88_gs': -2.62,
             'pt_coeff': 1.14,
             'pifullturgor_leaf': -2.1,
             'pifullturgor_stem': -2.1,
             'psi_close': -2,
             'psi_start_closing': -0.5,
             'q10_1_gmin': 1.2,
             'q10_2_gmin': 4.8,
             'tphase_gmin': 37.5,
             'tbase': 3,
             'tgs_optim': 25,
             'tgs_sens': 17,
             'apofrac_leaf': 0.4,
             'apofrac_stem': 0.4,
             'betarootprofile': 0.97,
             'canopystorageparam': 1.5,
             'daystart': 55,
             'epsilonsym_leaf': 10,
             'epsilonsym_stem': 10,
             'froottoleaf': 1,
             'ftrbtoleaf': 0.8,
             'g_crown0': 45,
             'gmin20': 4,
             'gmin_s': 3,
             'gs_max': 200,
             'gs_night': 20,
             'nbdaylai': 21,
             'rootradius': 0.0002,
             'slope_vc_leaf': 60,
             'slope_vc_stem': 60,
             'symfrac_stem': 0.2,
             'turgor_pressure_at_gs_max': 2,
             'vol_stem': 40,
             'frac_leaf_sym': 0.4})