pysiral.frb

@author: Stefan Hendricks

A python module dedicated to freeboard estimation.

Classes

SnowGeometricCorrection

Computes the freeboard from radar freeboard by application of geometric corrections for snow wave progagation

SnowFreeboardAssumption

Assumes the altimeter freeboard is the snow freeboard

RadarFreeboardDefault

Default Class for computing radar freeboard based on elevation, mean sea surface and

LaforgeTFMR50PPCorrection

Class implementing the pulse-peakiness based range correction for the

Module Contents

class pysiral.frb.SnowGeometricCorrection(*args, **kwargs)

Bases: pysiral.l2proc.procsteps.Level2ProcessorStep

Computes the freeboard from radar freeboard by application of geometric corrections for snow wave progagation only. No form of penetration correction is applied based on the assumption that radar freeboard is the sea-ice freeboard with missing correction for the slower wave propagation speed inside the snow layer.

The correction can be computed in two cases:

  1. [Static Correction] A correction factor 0 < c < 1 need to be supplied that describes the fraction of slower wave propagation speed in the snow layer compared to the vacuum speed. In this case the geometric correction is c * snow_depth which will be added to the radar freeboard.

  2. [Density Dependend Correction] In this case, the string “mallett2020” indicates that the geometric correction should be computed as function of density according to Mallett et al., 2020.

Reference:

Mallett, R. D. C., Lawrence, I. R., Stroeve, J. C., Landy, J. C., and Tsamados, M.: Brief communication: Conventional assumptions involving the speed of radar waves in snow introduce systematic underestimates to sea ice thickness and seasonal growth rate estimates, The Cryosphere, 14, 251–260, https://doi.org/10.5194/tc-14-251-2020, 2020.

Updates:

  • [July 2020] added the option to use density-dependent formulation from Mallett et al., 2020.

Configuration Example (Level-2 Processor Definition):

frb:

pyclass: SnowGeometricCorrection options:

vacuum_light_speed_reduction: [0.22|mallett2020]

execute_procstep(l1b, l2)

Compute and apply the geometric correction to the radar freeboard to compute sea-ice freeboard. Only l2 data is needed for this class and the object will be modified in-place :param l1b: The Level-1b data class :param l2: The Level-2 data class :return: error status flag

get_correction_factor(l2)

Returns the correction factor that is multiplied by snow depth. The difference between the possible options (see class docstring) is implemented in this method :param l2: Level-2 data class :return: Correction factor c (correction = c * snow_depth). Scalar or array

property l2_input_vars
property l2_output_vars
property error_bit
class pysiral.frb.SnowFreeboardAssumption(*args, **kwargs)

Bases: pysiral.l2proc.procsteps.Level2ProcessorStep

Assumes the altimeter freeboard is the snow freeboard

execute_procstep(l1b, l2)

Compute the freeboard and its uncertainty :param l1b: :param l2: :return:

property l2_input_vars
property l2_output_vars
class pysiral.frb.RadarFreeboardDefault(*args, **kwargs)

Bases: pysiral.l2proc.procsteps.Level2ProcessorStep

Default Class for computing radar freeboard based on elevation, mean sea surface and sea level anomaly

execute_procstep(l1b, l2)

Compute the radar freeboard and its uncertainty and modifies the Level-2 data object in-place :param l1b: :param l2: :return:

property l2_input_vars
property l2_output_vars
property error_bit
class pysiral.frb.LaforgeTFMR50PPCorrection(*args, **kwargs)

Bases: pysiral.l2proc.procsteps.Level2ProcessorStep

Class implementing the pulse-peakiness based range correction for the TFMRA50 described in

> Laforge, A., Fleury, S., Dinardo, S., Garnier, F., Remy, F., Benveniste, J., Bouffard, J., & Verley, J. (2021).

Toward improved sea ice freeboard observation with SAR altimetry using the physical retracker SAMOSA+. In Advances in Space Research (Vol. 68, Issue 2, pp. 732–745). Elsevier BV. https://doi.org/10.1016/j.asr.2020.02.001

NOTE: This range correction is not applicable for CryoSat-2 data and the use of a TFMRA50

execute_procstep(l1b: pysiral.l1data.Level1bData, l2: pysiral.l2data.Level2Data) numpy.typing.NDArray

Correct range values based on pulse peakiness according the Laforge et al. 2010.

NOTE: The valid range for this fit is only for 0.0 <= pp <= 0.1 & pp > 0.33.

The gap between 0.1 and 0.33 are accounted as ambiguous waveforms and no correction term is given. This implementation does not want to act as a filter, since it cannot be guaranteed that the surface type classfication (or any other filter) will reliably remove all waveforms with 0.1 << pp << 0.33. Therefore the gap in the Laforge et al. 2020 range correction term is filled by linear interpolation.

Parameters:
  • l1b – The Level-1 data object

  • l2 – The Level-2 data object

Raises:

AttributeError – When Level-2 data object does not have a pulse_peakiniess_normed variable

Returns:

error status

static get_correction(pp: float) float
static get_correction(pp: numpy.typing.NDArray) numpy.typing.NDArray

Compute the polynomial fit of 3rd order for the range correction between for 0.0 << pp << 0.1

Parameters:

pp – normed pulse peakiness

Returns:

correction term

property l2_input_vars
property l2_output_vars
property error_bit