src.spyice.models.radiative_model#

Module: spyice.models.brine_flux_radiation

This module contains functions for modeling radiative fluxes, brine fluxes, and salinity transport in sea ice. It is designed for process-based simulations of ice-ocean interactions, focusing on:

  • Radiative source terms from algae, ice, and organic matter.

  • Calculation of Photosynthetically Active Radiation (PAR) in ice.

  • Brine flux driven by Rayleigh number instabilities.

  • Salinity source terms from brine advection.

  • Permeability and local Rayleigh number calculations.

Functions#

radiative_source_term#

radiative_source_term(radiative_algae=0.0, radiative_ice=0.0, radiative_organicmatter=0.0)#

Compute the total radiative source term for the ice-algae system.

Parameters:
  • radiative_algae (float) – Radiative contribution from algae.

  • radiative_ice (float) – Radiative contribution from ice.

  • radiative_organicmatter (float) – Radiative contribution from organic matter.

Returns:

Total radiative source term.

radiative_ice#

radiative_ice(depth)#

Compute radiative attenuation through ice.

Parameters:

depth (float or np.ndarray) – Depth in ice (m).

Returns:

Radiative flux contribution from ice.

Formula:

\[I_0 = i_0 (1 - \alpha) F_{sw}, \quad I(z) = I_0 \exp(-\kappa z), \quad R_\text{ice} = I(z) \kappa\]

radiative_organicmatter#

radiative_organicmatter(depth)#

Compute radiative flux attenuation due to organic matter in ice.

Parameters:

depth (float or np.ndarray) – Depth in ice (m).

Returns:

Radiative flux contribution from organic matter.

calculate_radiative_terms#

calculate_radiative_terms(depth, thickness_index, radiative_algae=0.0, algae_model_depth_type='single')#

Combine radiative contributions from algae, ice, and organic matter for the given depth.

Parameters:
  • depth (np.ndarray) – Depth array in ice.

  • thickness_index (int) – Index corresponding to interface layer.

  • radiative_algae (float) – Radiative flux from algae.

  • algae_model_depth_type (str) – ‘single’ or ‘all’ for biologically active layer modeling.

Returns:

Total radiative source term.

calculate_local_rayleigh_number#

calculate_local_rayleigh_number(thickness_index, thickness, salinity, phi, grid_size)#

Calculate the local Rayleigh number for brine convection in sea ice.

Parameters:
  • thickness_index (int) – Index at the ice-ocean interface.

  • thickness (np.ndarray) – Ice thickness array.

  • salinity (np.ndarray) – Salinity profile in sea ice.

  • phi (np.ndarray) – Porosity profile.

  • grid_size (float) – Grid spacing (dz).

Returns:

Array of local Rayleigh numbers.

calculate_salinity_flux#

calculate_salinity_flux(dz, dt, Ra_c, thickness_index, thickness, salinity, phi)#

Compute brine-driven salinity flux based on Rayleigh number exceeding critical value.

Parameters:
  • dz (float) – Grid spacing in ice.

  • dt (float) – Time step.

  • Ra_c (float) – Critical Rayleigh number.

  • thickness_index (int) – Interface index.

  • thickness (np.ndarray) – Ice thickness array.

  • salinity (np.ndarray) – Salinity profile.

  • phi (np.ndarray) – Porosity profile.

Returns:

Salinity flux array.

calculate_permeability#

calculate_permeability(phi_i)#

Compute brine permeability as a function of porosity.

Parameters:

phi_i (np.ndarray) – Porosity array.

Returns:

Permeability array.

Formula:

\[\Pi = 10^{-17} (1000 \phi)^{3.1}\]

calculate_brine_flux#

calculate_brine_flux(thickness_index, thickness, interface_depth, salinity, phi, dt, dz, Ra_c=10)#

Calculate brine flux in the ice column.

Parameters:
  • thickness_index (int) – Interface layer index.

  • thickness (np.ndarray) – Ice thickness array.

  • interface_depth (float) – Depth at ice-ocean interface.

  • salinity (np.ndarray) – Salinity profile.

  • phi (np.ndarray) – Porosity profile.

  • dt (float) – Time step.

  • dz (float) – Grid spacing.

  • Ra_c (float) – Critical Rayleigh number.

Returns:

Brine flux array.

calculate_in_out_brine_flux#

calculate_in_out_brine_flux(thickness_index, flux, phi)#

Compute incoming and outgoing brine fluxes for each layer.

Parameters:
  • thickness_index (int) – Interface layer index.

  • flux (np.ndarray) – Brine flux array.

  • phi (np.ndarray) – Porosity profile.

Returns:

Tuple (flux_in, flux_out)

calculate_salinity_source_term_from_brineflux#

calculate_salinity_source_term_from_brineflux(salinity, flux_in, flux_out, flux_channel)#

Compute the salinity source term from brine fluxes.

Parameters:
  • salinity (np.ndarray) – Salinity profile.

  • flux_in (np.ndarray) – Incoming brine flux.

  • flux_out (np.ndarray) – Outgoing brine flux.

  • flux_channel (np.ndarray) – Total brine flux channel.

Returns:

Salinity source term array.

get_salinity_source_term#

get_salinity_source_term(thickness_index, thickness, salinity, phi, dt, dz)#

High-level function to calculate salinity source term from brine flux for a given ice column.

Parameters:
  • thickness_index (int) – Index at ice-ocean interface.

  • thickness (np.ndarray) – Ice thickness array.

  • salinity (np.ndarray) – Salinity profile.

  • phi (np.ndarray) – Porosity profile.

  • dt (float) – Time step.

  • dz (float) – Grid spacing.

Returns:

Salinity source term array.