ARTS
2.4.0(git:4fb77825)
|
Workspace functions related to application of scattering solver RT4. More...
#include <complex.h>
#include <stdexcept>
#include "auto_md.h"
#include "disort.h"
#include "m_xml.h"
#include "messages.h"
#include "rt4.h"
Go to the source code of this file.
Functions | |
void | RT4Calc (Workspace &, Tensor7 &, Vector &, Vector &, const Index &, const Index &, const Index &, const Index &, const Index &, const ArrayOfIndex &, const Agenda &, const Agenda &, const Index &, const Tensor4 &, const Tensor3 &, const Tensor3 &, const Tensor4 &, const Vector &, const ArrayOfArrayOfSingleScatteringData &, const Vector &, const Index &, const Matrix &, const Index &, const String &, const String &, const Index &, const Index &, const Index &, const Index &, const Index &, const Index &, const Numeric &, const Verbosity &) |
WORKSPACE METHOD: RT4Calc. More... | |
void | RT4CalcWithRT4Surface (Workspace &, Tensor7 &, Vector &, Vector &, const Index &, const Index &, const Index &, const Index &, const Index &, const ArrayOfIndex &, const Agenda &, const Index &, const Tensor4 &, const Tensor3 &, const Tensor3 &, const Tensor4 &, const Vector &, const ArrayOfArrayOfSingleScatteringData &, const Vector &, const Index &, const Matrix &, const Numeric &, const Vector &, const Tensor3 &, const GriddedField3 &, const Index &, const String &, const String &, const String &, const Index &, const Index &, const Index &, const Index &, const Index &, const Index &, const Numeric &, const Verbosity &) |
WORKSPACE METHOD: RT4CalcWithRT4Surface. More... | |
void | RT4Test (Tensor4 &, const String &, const Verbosity &) |
WORKSPACE METHOD: RT4Test. More... | |
Workspace functions related to application of scattering solver RT4.
These functions are listed in the doxygen documentation as entries of the file auto_md.h
Definition in file m_rt4.cc.
void RT4Calc | ( | Workspace & | ws, |
Tensor7 & | cloudbox_field, | ||
Vector & | za_grid, | ||
Vector & | aa_grid, | ||
const Index & | atmfields_checked, | ||
const Index & | atmgeom_checked, | ||
const Index & | scat_data_checked, | ||
const Index & | cloudbox_checked, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Index & | atmosphere_dim, | ||
const Tensor4 & | pnd_field, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Vector & | p_grid, | ||
const ArrayOfArrayOfSingleScatteringData & | scat_data, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Matrix & | z_surface, | ||
const Index & | nstreams, | ||
const String & | pfct_method, | ||
const String & | quad_type, | ||
const Index & | add_straight_angles, | ||
const Index & | pfct_aa_grid_size, | ||
const Index & | auto_inc_nstreams, | ||
const Index & | robust, | ||
const Index & | za_interp_order, | ||
const Index & | cos_za_interp, | ||
const Numeric & | max_delta_tau, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: RT4Calc.
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:
The keyword pfct_method allows to choose the method to extract the scattering matrix. 'interpolate' considers temperature dependence, others neglect it 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.
[in,out] | ws | Workspace |
[out] | cloudbox_field | WS Output |
[out] | za_grid | WS Output |
[out] | aa_grid | WS Output |
[in] | atmfields_checked | WS Input |
[in] | atmgeom_checked | WS Input |
[in] | scat_data_checked | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | surface_rtprop_agenda | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | pnd_field | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | p_grid | WS Input |
[in] | scat_data | WS Input |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | z_surface | WS Input |
[in] | nstreams | Generic Input (Default: "16") |
[in] | pfct_method | Generic Input (Default: "median") |
[in] | quad_type | Generic Input (Default: "D") |
[in] | add_straight_angles | Generic Input (Default: "1") |
[in] | pfct_aa_grid_size | Generic Input (Default: "19") |
[in] | auto_inc_nstreams | Generic Input (Default: "0") |
[in] | robust | Generic Input (Default: "0") |
[in] | za_interp_order | Generic Input (Default: "1") |
[in] | cos_za_interp | Generic Input (Default: "0") |
[in] | max_delta_tau | Generic Input (Default: "1e-6") |
Definition at line 362 of file m_rt4.cc.
Referenced by RT4Calc_g().
void RT4CalcWithRT4Surface | ( | Workspace & | ws, |
Tensor7 & | cloudbox_field, | ||
Vector & | za_grid, | ||
Vector & | aa_grid, | ||
const Index & | atmfields_checked, | ||
const Index & | atmgeom_checked, | ||
const Index & | scat_data_checked, | ||
const Index & | cloudbox_checked, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Index & | atmosphere_dim, | ||
const Tensor4 & | pnd_field, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Vector & | p_grid, | ||
const ArrayOfArrayOfSingleScatteringData & | scat_data, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Matrix & | z_surface, | ||
const Numeric & | surface_skin_t, | ||
const Vector & | surface_scalar_reflectivity, | ||
const Tensor3 & | surface_reflectivity, | ||
const GriddedField3 & | surface_complex_refr_index, | ||
const Index & | nstreams, | ||
const String & | pfct_method, | ||
const String & | ground_type, | ||
const String & | quad_type, | ||
const Index & | add_straight_angles, | ||
const Index & | pfct_aa_grid_size, | ||
const Index & | auto_inc_nstreams, | ||
const Index & | robust, | ||
const Index & | za_interp_order, | ||
const Index & | cos_za_interp, | ||
const Numeric & | max_delta_tau, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: RT4CalcWithRT4Surface.
As RT4Calc except for using RT4's proprietary surface type handling.
This WSM is only indented for testing purposes.
The following surface type/property methods are available and require the the following input:
'S'pecular: surface_reflectivity, surface_skin_t 'L' and 'F' use proprietary RT4 methods, 'S' uses RT4's Fresnel methods modified to behave similar to ARTS' surfaceFlatReflectivity*.
[in,out] | ws | Workspace |
[out] | cloudbox_field | WS Output |
[out] | za_grid | WS Output |
[out] | aa_grid | WS Output |
[in] | atmfields_checked | WS Input |
[in] | atmgeom_checked | WS Input |
[in] | scat_data_checked | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | pnd_field | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | p_grid | WS Input |
[in] | scat_data | WS Input |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | z_surface | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_scalar_reflectivity | WS Input |
[in] | surface_reflectivity | WS Input |
[in] | surface_complex_refr_index | WS Input |
[in] | nstreams | Generic Input (Default: "16") |
[in] | pfct_method | Generic Input (Default: "median") |
[in] | ground_type | Generic Input (Default: "A") |
[in] | quad_type | Generic Input (Default: "D") |
[in] | add_straight_angles | Generic Input (Default: "1") |
[in] | pfct_aa_grid_size | Generic Input (Default: "19") |
[in] | auto_inc_nstreams | Generic Input (Default: "0") |
[in] | robust | Generic Input (Default: "0") |
[in] | za_interp_order | Generic Input (Default: "1") |
[in] | cos_za_interp | Generic Input (Default: "0") |
[in] | max_delta_tau | Generic Input (Default: "1e-6") |
Definition at line 401 of file m_rt4.cc.
Referenced by RT4CalcWithRT4Surface_g().
WORKSPACE METHOD: RT4Test.
RT4 validation test.
Executes test case testc shipped with PolRadTran/RT4 code (but uses data files converted to arts-xml). Output written to (xml-)file.
[out] | out_rad | Generic output |
[in] | datapath | Generic Input (Default: "artscomponents/polradtran/testdata/") |
Definition at line 454 of file m_rt4.cc.
Referenced by RT4Test_g().