pygetm.radiation module

class pygetm.radiation.Jerlov(*values)[source]

Bases: Enum

Jerlov water types, expressed as fraction of total shortwave in band 1 (non-visible; fast attenuating), the attenuation length (m) of band 1, and the attenuation length (m) of band 2 (visible; slowly attenuating). Taken from Table 2 of Paulson & Simpson (1977).

Type_1 = (0.68, 1.2, 28.0)
Type_I = (0.58, 0.35, 23.0)
Type_IA = (0.62, 0.6, 20.0)
Type_IB = (0.67, 1.0, 17.0)
Type_II = (0.77, 1.5, 14.0)
Type_III = (0.78, 1.4, 7.9)
class pygetm.radiation.Radiation[source]

Bases: object

Base class that provides heating due to shortwave absorption throughout the water column. When using this class directly, heating is effectively prescribed, not calculated. In this case, the heating per layer defaults to zero; assign to swr_abs or call swr_abs.set to change this.

__call__(swr: Array, kc2_add: Array | None = None)[source]

Compute heating due to shortwave radiation throughout the water column

initialize(grid: Grid, logger: Logger)[source]
class pygetm.radiation.TwoBand(jerlov_type: Jerlov | None = None, reflect_at_bottom: bool = False)[source]

Bases: Radiation

Two-band (visible and non-visible) model for shortwave radiation and absorption throughout the water column. It is driven by downwelling shortwave radiation just below the water surface, in combination with the fraction of shortwave radiation that is non-visible, and the attenuation coefficients for the visible and non-visible fractions. All of these can vary spatially, but the non-visible fraction and attenuation coefficients can vary only horizontally, not vertically.

Parameters:
  • jerlov_type – Jerlov water type to infer attenuation coefficients kc1 and kc2 and the non-visible fraction of shortwave radiation A from. If not provided, these quantities are potentially horizontally and temporally variable; they can be set by calling pygetm.core.Array.set() on kc1, kc2 and A.

  • reflect_at_bottom – reflect part of the radiation arriving at the bottom, and track this stream upward, attenuating it along the way. The spatially explicit bottom_albedo can subsequently be set by calling pygetm.core.Array.set() on it. Radiation that is absorbed at the bottom (the fraction that is not reflected) will heat the bottom water layer, as the heat budget of sediments is not modelled.

__call__(swr: Array, kc2_add: Array | None = None)[source]

Compute heating due to shortwave radiation throughout the water column

Parameters:
  • swr – net downwelling shortwave radiation just below the water surface (i.e., what is left after reflection).

  • kc2_add – additional depth-varying attenuation (m-1) of second waveband, typically associated with chlorophyll or suspended matter

initialize(grid: Grid, logger: Logger)[source]
property jerlov_type
set_jerlov_type(jerlov_type: Jerlov)[source]

Derive the non-visible fraction of shortwave radiation (A), the attenuation coefficient of non-visible shortwave radiation (kc1), and the attenuation coefficient of visible shortwave radiation (kc2) from the Jerlov water type. These three coefficients will be constant in time and space.