cloudbox_fieldDisort

Workspace.cloudbox_fieldDisort(self: pyarts.arts._Workspace, cloudbox_field: pyarts.arts.WorkspaceVariable | pyarts.arts.Tensor7 | None = self.cloudbox_field, disort_aux: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfMatrix | None = self.disort_aux, 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, gas_scattering_agenda: pyarts.arts.WorkspaceVariable | pyarts.arts.Agenda | None = self.gas_scattering_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, lat_true: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.lat_true, lon_true: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.lon_true, refellipsoid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.refellipsoid, scat_data: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfArrayOfSingleScatteringData | None = self.scat_data, suns: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfSun | None = self.suns, f_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.f_grid, za_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.za_grid, aa_grid: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.aa_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, surface_skin_t: pyarts.arts.WorkspaceVariable | pyarts.arts.Numeric | None = self.surface_skin_t, surface_scalar_reflectivity: pyarts.arts.WorkspaceVariable | pyarts.arts.Vector | None = self.surface_scalar_reflectivity, gas_scattering_do: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.gas_scattering_do, suns_do: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = self.suns_do, disort_aux_vars: pyarts.arts.WorkspaceVariable | pyarts.arts.ArrayOfString | None = self.disort_aux_vars, nstreams: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 8, Npfct: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 181, only_tro: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 0, quiet: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 0, emission: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 1, intensity_correction: pyarts.arts.WorkspaceVariable | pyarts.arts.Index | None = 1, verbosity: pyarts.arts.WorkspaceVariable | pyarts.arts.Verbosity | None = self.verbosity) None

Interface to the DISORT scattering solver (by Stamnes et al.).

DISCLAIMER: There is a couple of known issues with the current implementation (see below). Use this WSM with care and only if these limitations/requirements are fulfilled. Results might be erroneous otherwise.

DISORT provides the radiation field (cloudbox_field) from a scalar 1D scattering solution assuming a plane-parallel atmosphere (flat Earth). Only totally randomly oriented particles are allowed. Refraction is not taken into account. Only Lambertian surface reflection is handled.

nstreams is the number of polar angles taken into account internally in the scattering solution, za_grid is the polar angle grid on which cloudbox_field is provided. 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 linearly with nstreams. The default value (8) is sufficient for most microwave scattering calculations. It is likely insufficient for IR calculations involving ice clouds, though.

Further, za_grid determines the resolution of the output radiation field. The size of za_grid has no practical impact on computation time in the case of Disort and higher resolution generally improves the interpolation results, hence larger za_grid are recommended. To ensure sufficient interpolation accuracy, we require a (hardcoded) minimum size of 38.

Different sphericity levels are emulated here by embedding DISORT in different ways and using different output. The available options (from low to high sphericity level) are:

  • Cloudbox extends over whole atmosphere (e.g. by setting cloudbox from cloudboxSetFullAtm()).

  • Cloudbox extends over a limited part of the atmosphere only (e.g. by setting cloudbox from cloudboxSetAutomatically() or cloudboxSetManually()). Internally, DISORT is run over the whole atmosphere, but only the radiation field within the cloudbox is passed on and used further in ARTS (e.g. by yCalc()).

Some auxiliary quantities can be obtained. Auxiliary quantities are selected by disort_aux_vars and returned by disort_aux. Valid choices for auxiliary data are:

  • "Layer optical thickness": Matrix [f_grid, size of p_grid - 1] layer optical thickness.

  • "Single scattering albedo": Matrix [f_grid, size of p_grid - 1] layer single” scattering albedo.

  • "Asymmetry parameter": Matrix [f_grid, size of p_grid - 1] layer asymmetry parameter.

  • "Direct beam": Matrix [f_grid, p_grid]. Attenuated direct at level. Zero, if no sun is present

Author(s): Claudia Emde, Jana Mendrok, Manfred Brath

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

  • disort_aux (ArrayOfMatrix, optional) – Auxilary data to the output of the cloudbox_fieldDisort-Methods. See disort_aux, defaults to self.disort_aux [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]

  • gas_scattering_agenda (Agenda, optional) – Calculation of the gas scattering extinction and phase matrix. See gas_scattering_agenda, defaults to self.gas_scattering_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]

  • lat_true (Vector, optional) – Latitudinal geolocation for 1D and 2D data. See lat_true, defaults to self.lat_true [IN]

  • lon_true (Vector, optional) – Longitudinal geolocation for 1D and 2D data. See lon_true, defaults to self.lon_true [IN]

  • refellipsoid (Vector, optional) – Reference ellipsoid. See refellipsoid, defaults to self.refellipsoid [IN]

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

  • suns (ArrayOfSun, optional) – Array of Sun. See suns, defaults to self.suns [IN]

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

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

  • aa_grid (Vector, optional) – Azimuthal angle grid. See aa_grid, defaults to self.aa_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]

  • surface_skin_t (Numeric, optional) – Surface skin temperature. See surface_skin_t, defaults to self.surface_skin_t [IN]

  • surface_scalar_reflectivity (Vector, optional) – Surface reflectivity, assuming it can be described as a scalar value. See surface_scalar_reflectivity, defaults to self.surface_scalar_reflectivity [IN]

  • gas_scattering_do (Index, optional) – Flag to activate gas scattering. See gas_scattering_do, defaults to self.gas_scattering_do [IN]

  • suns_do (Index, optional) – Flag to activate the sun(s). See suns_do, defaults to self.suns_do [IN]

  • disort_aux_vars (ArrayOfString, optional) – Selection of quantities for disort_aux. See disort_aux_vars, defaults to self.disort_aux_vars [IN]

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

  • Npfct (Index, optional) – Number of angular grid points to calculate bulk phase function on (and derive Legendre polynomials from). If <0, the finest za_grid from scat_data will be used. Defaults to 181 [IN]

  • only_tro (Index, optional) – Set to 1 if the scattering data is just of TRO type. Has effect only if Npfct > 3 or Npfct<0, but then leads to much faster calculations. Defaults to 0 [IN]

  • quiet (Index, optional) – Silence C Disort warnings. Defaults to 0 [IN]

  • emission (Index, optional) – Enables blackbody emission. Set to zero, if no Emission e. g. like in visible regime for earth is needed. Defaults to 1 [IN]

  • intensity_correction (Index, optional) – Enables intensity correction. Importantant for low number of streams. Set to zero, if problems encounter or using a high number of streams (>30). Defaults to 1 [IN]

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