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