pysiral.frb
@author: Stefan Hendricks
A python module dedicated to freeboard estimation.
Classes
Computes the freeboard from radar freeboard by application of geometric corrections for snow wave progagation |
|
Assumes the altimeter freeboard is the snow freeboard |
|
Default Class for computing radar freeboard based on elevation, mean sea surface and |
|
Class implementing the pulse-peakiness based range correction for the |
Module Contents
- class pysiral.frb.SnowGeometricCorrection(*args, **kwargs)
Bases:
pysiral.l2proc.procsteps.Level2ProcessorStepComputes 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:
[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.
[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.Level2ProcessorStepAssumes 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.Level2ProcessorStepDefault 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.Level2ProcessorStepClass 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