src.spyice.models.algae_model#
This module contains functions for modeling sea-ice algae biogeochemistry, including:
Salinity, temperature, and nutrient-dependent growth functions.
Photosynthetically active radiation (PAR) modeling through ice.
Chlorophyll-to-carbon ratio calculations.
Carbon and nutrient uptake dynamics.
Radiation absorption by ice algae.
Bulk tracer and chlorophyll calculations.
ODE-based updates for biologically active layers (BAL).
The module is designed for process-based modeling in ice-ocean systems and supports depth-resolved calculations.
Functions#
fs_salinity#
- fs_salinity(s_br_array)#
Compute the salinity limitation function \(f_s\) for algae growth.
- Parameters:
s_br_array (numpy.ndarray) – Salinity in g kg^-1.
- Returns:
Salinity function \(f_s\).
Formula:
\[f_s = \exp\Big(-(2.16 - a - b)^2\Big), \quad a = 8.3 \cdot 10^{-5} s^{2.11}, \quad b = 0.55 \log s\]
ft_temperature#
- ft_temperature(t_c_array)#
Compute the temperature limitation function \(f_t\).
- Parameters:
t_c_array (numpy.ndarray) – Temperature in Celsius.
- Returns:
Temperature function \(f_t\).
Formula:
\[f_t = \exp(r_g (T - 273.15)), \quad r_g = 0.0633\]
ln_nutrient#
- ln_nutrient(c_n_array, k)#
Compute nutrient limitation function \(l_n\).
- Parameters:
c_n_array (numpy.ndarray) – Nutrient concentration in mmol m^-3.
k (float) – Half-saturation constant (mmol m^-3).
- Returns:
Nutrient limitation function \(l_n\).
Formula:
\[l_n = \frac{c_n}{k + c_n}\]
photosynthetic_active_radiation#
- photosynthetic_active_radiation(z, kappa=1.5, i_0=0.17, albedo=0.58, F_s_w=5)#
Calculate Photosynthetically Active Radiation (PAR) at depth.
- Parameters:
z (float or np.ndarray) – Depth in ice (m).
kappa (float) – Attenuation coefficient (m^-1).
i_0 (float) – Incident solar radiation factor.
albedo (float) – Ice/snow albedo.
F_s_w (float) – Incoming solar irradiance (W m^-2).
- Returns:
PAR in W m^-2.
Formula:
\[I(z) = I_0 \exp(-\kappa z), \quad PAR = 4.91 \cdot I(z)\]
cholorophyl_to_C_ratio_par#
- cholorophyl_to_C_ratio_par(PAR, ln, E=0.5, r_chl_c_max=0.05, r_chl_c_min=0.01)#
Chlorophyll-to-carbon ratio as a function of PAR and nutrients.
- Parameters:
PAR (np.ndarray) – Photosynthetically active radiation.
ln (np.ndarray) – Nutrient limitation function.
E (float) – Half-saturation energy.
r_chl_c_max (float) – Maximum chlorophyll-to-carbon ratio.
r_chl_c_min (float) – Minimum chlorophyll-to-carbon ratio.
- Returns:
Chlorophyll-to-carbon ratio.
Photosynthesis_rate_maximum_light#
- Photosynthesis_rate_maximum_light(mu_m, fs, ft, ln, r_chl_c_par)#
Compute maximum potential photosynthesis rate \(P_m\).
- Parameters:
mu_m (float) – Maximum photosynthesis rate (s^-1).
fs (np.ndarray) – Salinity function.
ft (np.ndarray) – Temperature function.
ln (np.ndarray) – Nutrient function.
r_chl_c_par (np.ndarray) – Chlorophyll-to-carbon ratio.
- Returns:
Maximum photosynthesis rate.
Ek_light#
- Ek_light(Photosynthesis_rate, alpha)#
Light limitation parameter \(E_k\).
- Parameters:
Photosynthesis_rate (np.ndarray) – Maximum photosynthesis rate.
alpha (float) – Photosynthetic efficiency.
- Returns:
Light limitation parameter \(E_k = P_m / \alpha\)
Ek_light_tanh#
- Ek_light_tanh(PAR_arr, Ek_arr)#
Tanh-based light limitation factor.
- Parameters:
PAR_arr (np.ndarray) – Photosynthetically active radiation.
Ek_arr (np.ndarray) – Light limitation parameter.
- Returns:
Light limitation as tanh(PAR / Ek)
photosynthetic_rate#
- photosynthetic_rate(max_mu, fs, ft, ln, lpar)#
Compute actual photosynthetic rate considering light, temperature, salinity, and nutrient limitation.
- Parameters:
max_mu (float) – Maximum photosynthesis rate.
fs (np.ndarray) – Salinity function.
ft (np.ndarray) – Temperature function.
ln (np.ndarray) – Nutrient function.
lpar (np.ndarray) – Light limitation factor.
- Returns:
Photosynthetic rate.
fs_ft / fs_ft_ln#
- fs_ft(f_s, f_t)#
- fs_ft_ln(f_s, f_t, l_n)#
Combine limitation functions multiplicatively:
\(f_s \cdot f_t\)
\(f_s \cdot f_t \cdot l_n\)
model_algae_processes#
- model_algae_processes(s_br_array, t_c_array, c_n_array, z_array, ...)#
High-level function to compute depth-resolved algae growth:
Salinity, temperature, nutrient limitation
PAR calculation
Chlorophyll-to-carbon ratio
Maximum photosynthesis
Light limitation
Actual photosynthetic rate
- Returns:
Tuple (mu, PAR, nutrient_function)
ode_update_carbon_nutrient_uptake#
- ode_update_carbon_nutrient_uptake(dt, salinity_list, temperature_list, nutrient_list, depth_list, cc_old, cn_old, r_n_c=0.12)#
Update carbon and nutrient concentrations for algae over a timestep dt.
chla_algae#
- chla_algae(PAR, nutrient_function, c_bulk_tracer)#
Compute chlorophyll-a bulk concentration from carbon tracer.
radiation_algae#
- radiation_algae(chla_bulk_z, I_array)#
Compute absorbed radiation by algae in ice.
get_bulk_tracer_concentration#
- get_bulk_tracer_concentration(liquid_fraction, brine_concentration)#
Compute bulk tracer concentration considering liquid fraction.
biogeochemical_model / biogeochemical_model_at_alldepths#
- biogeochemical_model(temperature, salinity, liquid_fraction, nutrient_concentration, carbon_concentration, dt, thickness_index, thickness)#
- biogeochemical_model_at_alldepths(temperature, salinity, liquid_fraction, nutrient_concentration, carbon_concentration, dt, thickness, thickness_index)#
Full depth-resolved or interface-level biogeochemical updates for algae:
Photosynthesis
Carbon and nutrient uptake
Bulk tracer and chlorophyll
Radiation absorption
- Returns:
Updated field arrays:
Carbon concentration
Nutrient concentration
Photosynthetic rate
Radiation
Chlorophyll-a bulk