RT4Calc

Workspace.RT4Calc(self: pyarts.arts._Workspace, cloudbox_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor7 | None = self.cloudbox_field, za_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.za_grid, aa_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.aa_grid, atmfields_checked: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.atmfields_checked, atmgeom_checked: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.atmgeom_checked, scat_data_checked: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.scat_data_checked, cloudbox_checked: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.cloudbox_checked, cloudbox_on: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.cloudbox_on, cloudbox_limits: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfIndex | None = self.cloudbox_limits, propmat_clearsky_agenda: pyarts.arts.WorkspaceVariable | pyarts.arts.Agenda | None = self.propmat_clearsky_agenda, surface_rtprop_agenda: pyarts.arts.WorkspaceVariable | pyarts.arts.Agenda | None = self.surface_rtprop_agenda, atmosphere_dim: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.atmosphere_dim, pnd_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor4 | None = self.pnd_field, t_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor3 | None = self.t_field, z_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor3 | None = self.z_field, vmr_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor4 | None = self.vmr_field, p_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.p_grid, scat_data: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfArrayOfSingleScatteringData | None = self.scat_data, f_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.f_grid, stokes_dim: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.stokes_dim, z_surface: pyarts.arts.WorkspaceVariable | pyarts.arts.Matrix | None = self.z_surface, nstreams: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 16, pfct_method: pyarts.arts.WorkspaceVariable | pyarts.arts.String | None = 'median', quad_type: pyarts.arts.WorkspaceVariable | pyarts.arts.String | None = 'D', add_straight_angles: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 1, pfct_aa_grid_size: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 19, auto_inc_nstreams: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 0, robust: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 0, za_interp_order: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 1, cos_za_interp: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 0, max_delta_tau: pyarts.arts.WorkspaceVariable | pyarts.arts.Numeric | None = 1e-6, verbosity: pyarts.arts.WorkspaceVariable | pyarts.arts.Verbosity | None = self.verbosity) None

Interface to the PolRadTran RT4 scattering solver (by F. Evans).

RT4 provides the radiation field (cloudbox_field) from a vector 1D scattering solution assuming a plane-parallel atmosphere (flat Earth). It calculates up to two Stokes parameters (stokes_dim <= 2), i.e., all azimuthally randomly oriented particles are allowed (this also includes macroscopically isotropic particles). Refraction is not taken into account.

The scattering solution is internally obtained over the full (plane-parallel) atmosphere, i.e. not confined to the cloudbox. However, the radiation field output is limited to the cloudbox. This allows to consider clearsky RT through a non-spherical atmosphere outside the cloudbox improving the RT solution for non-plane-parallel media compared to the plain RT4 output.

nstreams is the number of polar angles taken into account internally in the scattering solution. That is, nstreams determines the angular resolution, hence the accuracy, of the scattering solution. The more anisotropic the bulk scattering matrix, the more streams are required. The computational burden increases approximately with the third power of nstreams. The default value (nstreams = 16) was found to be sufficient for most microwave scattering calculations. It is likely insufficient for IR calculations involving ice clouds, though.

Here, za_grid is NOT an input parameter, but output, and its size equals nstreams or nstreams + 2 (Gauss-Legendre and Double Gauss quadratures in case add_straight_angles = 1) (the reason is that the computational burden is high for additional angles, regardless whether they are quadrature angles or not; hence the quadrature angles supplemented with 0 and 180deg are considered to provide the best radiation field for a given effort).

The auto_inc_nstreams feature can be used to increase the number of streams used internally in the scattering solution when found necessary. NOTE: this number-of-streams increase is only internally - the angular dimension of the output cloudbox_field is fixed to the nstreams given as input to this WSM.

Quadrature methods available are: ‘L’obatto, ‘G’auss-Legendre and ‘D’ouble Gauss quadrature.

This WSM applies surface_rtprop_agenda to derive reflection matrix and surface emission vector that are directly feed into RT4’s core solver (instead of their RT4-internal calculation as used by RT4CalcWithRT4Surface()).

Known issues of ARTS implementation:

  • TOA incoming radiation is so far assumed as blackbody cosmic background (temperature taken from the ARTS-internal constant).

The keyword pfct_method allows to choose how to extract the scattering matrix, by chosing one specific temperature grid point from the single scattering data: ‘low’ choses the lowest T-point, ‘high’ the highest T-point, and ‘median’ the median T-point. As different scattering elements can have different temperature grids, the actual temperature value used can differ between the scattering elements. Note that this keyword solely affects the scattering matrix; extinction matrix and absorption vector are always interpolated to the actual temperature.

Author(s): Jana Mendrok

Parameters:
  • cloudbox_field (Tensor7, optional) – The spectral radiance field inside the cloudbx. See cloudbox_field, defaults to self.cloudbox_field [OUT]

  • za_grid (Vector, optional) – Zenith angle grid. See za_grid, defaults to self.za_grid [OUT]

  • aa_grid (Vector, optional) – Azimuthal angle grid. See aa_grid, defaults to self.aa_grid [OUT]

  • 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]

  • scat_data_checked (Index, optional) – OK-flag for scat_data. See scat_data_checked, defaults to self.scat_data_checked [IN]

  • cloudbox_checked (Index, optional) – OK-flag for variables associated with the cloudbox. See cloudbox_checked, defaults to self.cloudbox_checked [IN]

  • cloudbox_on (Index, optional) – Flag to activate the cloud box. See cloudbox_on, defaults to self.cloudbox_on [IN]

  • cloudbox_limits (ArrayOfIndex, optional) – The limits of the cloud box. See cloudbox_limits, defaults to self.cloudbox_limits [IN]

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

  • surface_rtprop_agenda (Agenda, optional) – Provides radiative properties of the surface. . See surface_rtprop_agenda, defaults to self.surface_rtprop_agenda [IN]

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

  • pnd_field (Tensor4, optional) – Particle number density field. See pnd_field, defaults to self.pnd_field [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]

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

  • scat_data (ArrayOfArrayOfSingleScatteringData, optional) – Array of single scattering data. See scat_data, defaults to self.scat_data [IN]

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

  • stokes_dim (Index, optional) – The dimensionality of the Stokes vector (1-4). See stokes_dim, defaults to self.stokes_dim [IN]

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

  • nstreams (Index, optional) – Number of polar angle directions (streams) in RT4 solution (must be an even number). Defaults to 16 [IN]

  • pfct_method (String, optional) – Flag which method to apply to derive phase function (for available options see above). Defaults to "median" [IN]

  • quad_type (String, optional) – Flag which quadrature to apply in RT4 solution (for available options see above). Defaults to "D" [IN]

  • add_straight_angles (Index, optional) – Flag whether to include nadir and zenith as explicit directions (only effective for quad_type G and D). Defaults to 1 [IN]

  • pfct_aa_grid_size (Index, optional) – Number of azimuthal angle grid points to consider in Fourier series decomposition of scattering matrix (only applied for randomly oriented scattering elements). Defaults to 19 [IN]

  • auto_inc_nstreams (Index, optional) – Flag whether to internally increase nstreams (individually per frequency) if norm of (bulk) scattering matrix is not preserved properly. If 0, no adaptation is done. Else auto_inc_nstreams gives the maximum number of streams to increase to. Note that the output cloudbox_field remains with angular dimension of nstreams, only the internal solution is adapted (and then interpolated to the lower-resolution output angular grid). Defaults to 0 [IN]

  • robust (Index, optional) – For auto_inc_nstreams>0, flag whether to not fail even if scattering matrix norm is not preserved when maximum stream number is reached. Internal RT4 calculations is then performed with nstreams=``auto_inc_nstreams``. Defaults to 0 [IN]

  • za_interp_order (Index, optional) – For auto_inc_nstreams>0, polar angle interpolation order for interpolation from internal increased stream to originally requested nstreams-ifield. Defaults to 1 [IN]

  • cos_za_interp (Index, optional) – For auto_inc_nstreams>0, flag whether to do polar angle interpolation in cosine (=’mu’) space. Defaults to 0 [IN]

  • max_delta_tau (Numeric, optional) – Maximum optical depth of infinitesimal layer (where single scattering approximation is assumed to apply). Defaults to 1e-6 [IN]

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