particle_bulkpropRadarOnionPeeling

Workspace.particle_bulkpropRadarOnionPeeling(self: pyarts.arts._Workspace, particle_bulkprop_field: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Tensor4]] = self.particle_bulkprop_field, particle_bulkprop_names: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.ArrayOfString]] = self.particle_bulkprop_names, atmosphere_dim: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = self.atmosphere_dim, p_grid: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Vector]] = self.p_grid, lat_grid: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Vector]] = self.lat_grid, lon_grid: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Vector]] = self.lon_grid, t_field: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Tensor3]] = self.t_field, z_field: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Tensor3]] = self.z_field, vmr_field: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Tensor4]] = self.vmr_field, z_surface: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Matrix]] = self.z_surface, atmfields_checked: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = self.atmfields_checked, atmgeom_checked: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = self.atmgeom_checked, f_grid: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Vector]] = self.f_grid, propmat_clearsky_agenda: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Agenda]] = self.propmat_clearsky_agenda, scat_species: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.ArrayOfString]] = self.scat_species, invtable: Union[pyarts.arts.WorkspaceVariable, pyarts.arts.ArrayOfGriddedField3], incangles: Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Matrix], dBZe: Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Tensor3], dbze_noise: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = -99, h_clutter: Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Matrix], fill_clutter: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = 0, t_phase: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = 273.15, wc_max: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = 10e-3, wc_clip: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = 5e-3, do_atten_abs: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = 1, do_atten_hyd: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Index]] = 1, atten_hyd_scaling: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = 0.5, atten_hyd_max: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Numeric]] = 3, verbosity: Optional[Union[pyarts.arts.WorkspaceVariable, pyarts.arts.Verbosity]] = self.verbosity) None

Inverts radar reflectivities by in an onion peeling manner.

The method assumes space-based measurements and invert one altitude at the time, based on a pre-calculated inversion table (invtable) and starting at the top of the atmosphere. If attenuation is completely ignored, the table is effectively used as a look-up table to map dBZe to hydrometeor values. The method considers attenuation by default, where extinction due to hydrometeors is taken from the table and the one due to abs_species is obtained by propmat_clearsky_agenda.

The inversion table consists of two GriddedField3. The first field shall match liquid hydrometeors and is applied for temperatures above t_phase. The second field is applied for lower temperatures and shall thus correspond to ice hydrometeors.

The size of each field is (2,ndb,nt). The two page dimensions match the hydrometeor property to retrieve and extinction, respectively. The table shall hold the 10-logarithm of the property, such as log10(IWC). ndb is the number of dBZe values in the table and nt the number of temperatures. The table is interpolated in temperature in a nearest neighbour fashion, while in a linear interpolation is applied in the dBZe dimension.

The field of radar reflectivities (dBZe) shall cover the complete atmosphere and then match e.g. t_field in size. The observation geometry is here specified by giving the incidence angle for each profile of dBZe values (by incangles). A flat Earth approximation is applied inside the method.

All values below dbze_noise are treated as pure noise and particle_bulkprop_field is set to zero for these positions. The comparison to dbze_noise is done with uncorrected values.

Further, all values at altitudes below z_surface + h_clutter are assumed to be surface clutter and are rejected. If fill_clutter is set to 1, the retrieval just above the clutter zone is assumed valid also below and is copied to all altitudes below (also for altitudes below the surface).

Unfiltered clutter can cause extremely high retrived water contents. The GIN wc_max defines an upper limit for reasonable water contents. Retrievals ending up above this value are set to zero. Values below wc_max but above wc_clip, are set to wc_clip.

Significant radar echos (>dbze_noise and above clutter zone) are assumed to match liquid hydrometeors for temperatures >= t_phase and ice ones for lower temperatures.

Default is to consider attenuation of both hydrometeors and absorption species. These two sources to attenuation can be ignored by setting do_atten_hyd and do_atten_abs to zero, respectively.

Default is to consider hydrometeor attenuation, but there could be two reasons to ignore it. It can cause a “run away” effect in the retrievals. Ignoring it can also compensate for impact of multiple scattering in space-based observations, as shown by: Matrosov and Battaglia, GRL, 2009. However, ignoring the hydrometeor attenuation totally gives a too high compensating effect and the GIN atten_hyd_scaling allows to test intermediate compensations. This GIN matches the GIN pext_scaling of iyRadarSingleScat(), but they have different default values. The default in this method follows the results for CloudSat in Matrosov and Battaglia. Please note that do_atten_hyd must be true to apply atten_hyd_scaling.

Even with atten_hyd_scaling below 1, there could be a run-away in the estimated attenuation, and atten_hyd_max stops this by setting a maximum value to the hydrometeor attenuation.

Author(s): Patrick Eriksson

Parameters:
  • particle_bulkprop_field (Tensor4, optional) – Container for various data that describes scattering bulk properties. See particle_bulkprop_field, defaults to self.particle_bulkprop_field [OUT]

  • particle_bulkprop_names (ArrayOfString, optional) – Identification of the data in particle_bulkprop_field. See particle_bulkprop_names, defaults to self.particle_bulkprop_names [OUT]

  • atmosphere_dim (Index, optional) – The atmospheric dimensionality (1-3). See atmosphere_dim, defaults to self.atmosphere_dim [IN]

  • p_grid (Vector, optional) – The pressure grid. See p_grid, defaults to self.p_grid [IN]

  • lat_grid (Vector, optional) – The latitude grid. See lat_grid, defaults to self.lat_grid [IN]

  • lon_grid (Vector, optional) – The longitude grid. See lon_grid, defaults to self.lon_grid [IN]

  • t_field (Tensor3, optional) – The field of atmospheric temperatures. See t_field, defaults to self.t_field [IN]

  • z_field (Tensor3, optional) – The field of geometrical altitudes. See z_field, defaults to self.z_field [IN]

  • vmr_field (Tensor4, optional) – VMR field. See vmr_field, defaults to self.vmr_field [IN]

  • z_surface (Matrix, optional) – The surface altitude. See z_surface, defaults to self.z_surface [IN]

  • atmfields_checked (Index, optional) – OK-flag for atmospheric grids and (physical) fields. See atmfields_checked, defaults to self.atmfields_checked [IN]

  • atmgeom_checked (Index, optional) – OK-flag for the geometry of the model atmosphere. See atmgeom_checked, defaults to self.atmgeom_checked [IN]

  • f_grid (Vector, optional) – The frequency grid for monochromatic pencil beam calculations. See f_grid, defaults to self.f_grid [IN]

  • propmat_clearsky_agenda (Agenda, optional) – Calculate the absorption coefficient matrix. See propmat_clearsky_agenda, defaults to self.propmat_clearsky_agenda [IN]

  • scat_species (ArrayOfString, optional) – Array of Strings defining the scattering species to consider. See scat_species, defaults to self.scat_species [IN]

  • invtable (ArrayOfGriddedField3) – Inversion table, see above. [IN]

  • incangles (Matrix) – Incidence angles. [IN]

  • dBZe (Tensor3) – Field of radar reflectivities, in dBZe. [IN]

  • dbze_noise (Numeric, optional) – Noise level. See above. Defaults to -99 [IN]

  • h_clutter (Matrix) – Height of clutter zone. Either same size as z_surface or a single value. In the later case, that value is applied at all positions. [IN]

  • fill_clutter (Index, optional) – Flag to fill clutter zone, by copying retrieval just above it. Defaults to 0 [IN]

  • t_phase (Numeric, optional) – Phase boundary temperature. See above. Defaults to 273.15 [IN]

  • wc_max (Numeric, optional) – Max reasonable water content. Defaults to 10e-3 [IN]

  • wc_clip (Numeric, optional) – Clip value for water content retrievals. Defaults to 5e-3 [IN]

  • do_atten_abs (Index, optional) – Flag to consider attenuation due to hydrometeors. Defaults to 1 [IN]

  • do_atten_hyd (Index, optional) – Flag to consider attenuation due to absorption species. Defaults to 1 [IN]

  • atten_hyd_scaling (Numeric, optional) – Hydrometeor attenuation scaling factor. Defaults to 0.5 [IN]

  • atten_hyd_max (Numeric, optional) – Hydrometeor attenuation not allowed to pass this value [dB]. Defaults to 3 [IN]

  • verbosity (Verbosity) – ARTS verbosity. See verbosity, defaults to self.verbosity [IN]