ARTS
2.2.66
|
This file contains definitions and functions related to the optical properties of particles. More...
#include <cmath>
#include <stdexcept>
#include "arts.h"
#include "matpackVII.h"
#include "array.h"
#include "math_funcs.h"
#include "messages.h"
#include "logic.h"
#include "interpolation.h"
#include "optproperties.h"
#include "xml_io.h"
Go to the source code of this file.
Macros | |
#define | F11 pha_mat_int[0] |
#define | F12 pha_mat_int[1] |
#define | F22 pha_mat_int[2] |
#define | F33 pha_mat_int[3] |
#define | F34 pha_mat_int[4] |
#define | F44 pha_mat_int[5] |
Functions | |
void | abs_vecTransform (VectorView abs_vec_lab, ConstTensor3View abs_vec_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const ParticleType &particle_type, const Numeric &za_sca, const Numeric &aa_sca, const Verbosity &verbosity) |
Transformation of absorption vector. More... | |
void | ext_matTransform (MatrixView ext_mat_lab, ConstTensor3View ext_mat_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const ParticleType &particle_type, const Numeric &za_sca, const Numeric &aa_sca, const Verbosity &verbosity) |
Transformation of extinction matrix. More... | |
void | pha_matTransform (MatrixView pha_mat_lab, ConstTensor5View pha_mat_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const ParticleType &particle_type, const Index &za_sca_idx, const Index &aa_sca_idx, const Index &za_inc_idx, const Index &aa_inc_idx, ConstVectorView scat_za_grid, ConstVectorView scat_aa_grid, const Verbosity &verbosity) |
Transformation of phase matrix. More... | |
void | ext_matFromabs_vec (MatrixView ext_mat, ConstVectorView abs_vec, const Index &stokes_dim) |
Derive extinction matrix from absorption vector. More... | |
void | interpolate_scat_angleDOIT (VectorView pha_mat_int, ConstTensor5View pha_mat_data, const Index &za_sca_idx, const Index &aa_sca_idx, const Index &za_inc_idx, const Index &aa_inc_idx, const ArrayOfArrayOfArrayOfArrayOfGridPos &scat_theta_gps, ConstTensor5View scat_theta_itws) |
Interpolate data on the scattering angle. More... | |
void | interpolate_scat_angle (VectorView pha_mat_int, Numeric &theta_rad, ConstTensor5View pha_mat_data, ConstVectorView za_datagrid, const Numeric &za_sca, const Numeric &aa_sca, const Numeric &za_inc, const Numeric &aa_inc) |
Interpolate data on the scattering angle. More... | |
void | pha_mat_labCalc (MatrixView pha_mat_lab, ConstVectorView pha_mat_int, const Numeric &za_sca, const Numeric &aa_sca, const Numeric &za_inc, const Numeric &aa_inc, const Numeric &theta_rad) |
Calculate phase matrix in laboratory coordinate system. More... | |
ostream & | operator<< (ostream &os, const SingleScatteringData &) |
ostream & | operator<< (ostream &os, const ArrayOfSingleScatteringData &) |
ostream & | operator<< (ostream &os, const ScatteringMetaData &) |
ostream & | operator<< (ostream &os, const ArrayOfScatteringMetaData &) |
void | opt_prop_sum_propmat_clearsky (Tensor3 &ext_mat, Matrix &abs_vec, const Tensor4 propmat_clearsky) |
Get optical properties from propmat_clearsky. More... | |
ParticleType | ParticleTypeFromString (const String &particle_type_string) |
Convert particle name to enum value. More... | |
String | ParticleTypeToString (const ParticleType &particle_type) |
Convert particle type enum value to String. More... | |
ParticleSSDMethod | ParticleSSDMethodFromString (const String &particle_ssdmethod_string) |
Convert particle ssd method name to enum value. More... | |
String | ParticleTypeToString (const ParticleSSDMethod &particle_ssdmethod) |
Convert particle type enum value to String. More... | |
Variables | |
const Numeric | DEG2RAD |
const Numeric | RAD2DEG |
const Numeric | PI |
This file contains definitions and functions related to the optical properties of particles.
Definition in file optproperties.cc.
#define F11 pha_mat_int[0] |
Definition at line 56 of file optproperties.cc.
Referenced by pha_mat_labCalc().
#define F12 pha_mat_int[1] |
Definition at line 57 of file optproperties.cc.
Referenced by pha_mat_labCalc().
#define F22 pha_mat_int[2] |
Definition at line 58 of file optproperties.cc.
Referenced by pha_mat_labCalc().
#define F33 pha_mat_int[3] |
Definition at line 59 of file optproperties.cc.
Referenced by pha_mat_labCalc().
#define F34 pha_mat_int[4] |
Definition at line 60 of file optproperties.cc.
Referenced by pha_mat_labCalc().
#define F44 pha_mat_int[5] |
Definition at line 61 of file optproperties.cc.
Referenced by pha_mat_labCalc().
void abs_vecTransform | ( | VectorView | abs_vec_lab, |
ConstTensor3View | abs_vec_data, | ||
ConstVectorView | za_datagrid, | ||
ConstVectorView | aa_datagrid, | ||
const ParticleType & | particle_type, | ||
const Numeric & | za_sca, | ||
const Numeric & | aa_sca, | ||
const Verbosity & | verbosity | ||
) |
Transformation of absorption vector.
In the single scattering database the data of the absorption vector is stored in different coordinate systems, depending on the type of hydrometeor species.
See AUG for information about different classifications of the hydrometeor species.
Output and Input:
abs_vec_lab | Absorption vector in Laboratory frame. Input: |
abs_vec_data | Absorption vector in database. |
za_datagrid | Zenith angle grid in the database. |
aa_datagrid | Zenith angle grid in the database. |
particle_type | Clasiification of the hydometeor species. |
za_sca | Zenith angle of scattered direction. |
aa_sca | Azimuth angle of scattered direction. |
Definition at line 85 of file optproperties.cc.
References CREATE_OUT0, gridpos(), interp(), interpweights(), joker, ConstTensor3View::ncols(), ConstVectorView::nelem(), ConstTensor3View::npages(), PARTICLE_TYPE_GENERAL, PARTICLE_TYPE_HORIZ_AL, and PARTICLE_TYPE_MACROS_ISO.
Referenced by opt_prop_sptFromData(), and opt_prop_sptFromMonoData().
void ext_matFromabs_vec | ( | MatrixView | ext_mat, |
ConstVectorView | abs_vec, | ||
const Index & | stokes_dim | ||
) |
Derive extinction matrix from absorption vector.
In case, when only absorption of a particle shall be considered, and the scattering is negelected, the extinction matrix is set from the absorption vector only.
Extinction matrix is set the following way:
K11 = K22 = K33 = K44 = a1 K12 = K21 = a2 K13 = K31 = a3 K14 = K41 = a4
Other elements remain 0. However, note that the other elements might be supposed to contain non-zero values as well. We couldn't find an appropriate solution yet, though, and these elements are expected to be rather small. Also, using the absorption part only is anyway only a rough approximation. Hence, we deem the assumption of setting the remaining elements to zero reasonable.
Output and Input:
ext_mat | Extinction matrix. Input: |
abs_vec | Absorption vector. |
stokes_dim | as the WSV. |
Definition at line 568 of file optproperties.cc.
References ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().
Referenced by fos(), and propmat_clearskyAddParticles().
void ext_matTransform | ( | MatrixView | ext_mat_lab, |
ConstTensor3View | ext_mat_data, | ||
ConstVectorView | za_datagrid, | ||
ConstVectorView | aa_datagrid, | ||
const ParticleType & | particle_type, | ||
const Numeric & | za_sca, | ||
const Numeric & | aa_sca, | ||
const Verbosity & | verbosity | ||
) |
Transformation of extinction matrix.
In the single scattering database the data of the extinction matrix is stored in different coordinate systems, depending on the type of hydrometeor species.
See AUG for information about different classifications of the hydrometeor species.
Output and Input:
ext_mat_lab | Extinction matrix in Laboratory frame. Input: |
ext_mat_data | Extinction matrix in database. |
za_datagrid | Zenith angle grid in the database. |
aa_datagrid | Zenith angle grid in the database. |
particle_type | Clasiification of the hydometeor species. |
za_sca | Zenith angle of scattered direction. |
aa_sca | Azimuth angle of scattered direction. |
Definition at line 190 of file optproperties.cc.
References CREATE_OUT0, gridpos(), interp(), interpweights(), joker, ConstTensor3View::ncols(), ConstMatrixView::ncols(), ConstTensor3View::npages(), PARTICLE_TYPE_GENERAL, PARTICLE_TYPE_HORIZ_AL, and PARTICLE_TYPE_MACROS_ISO.
Referenced by opt_prop_sptFromData(), and opt_prop_sptFromMonoData().
void interpolate_scat_angle | ( | VectorView | pha_mat_int, |
Numeric & | theta_rad, | ||
ConstTensor5View | pha_mat_data, | ||
ConstVectorView | za_datagrid, | ||
const Numeric & | za_sca, | ||
const Numeric & | aa_sca, | ||
const Numeric & | za_inc, | ||
const Numeric & | aa_inc | ||
) |
Interpolate data on the scattering angle.
This function is used for the transformation of the phase matrix from scattering frame to the laboratory frame for randomly oriented scattering media (case PTYPE_MACRO_ISO).
The scattering angle is calculated from the angles defining the directions of the incoming and scattered radiation. After that the data (which is stored in the data files as a function of the scattering angle) is interpolated on the calculated scattering angle.
[out] | pha_mat_int | Interpolated phase matrix. |
[out] | theta_rad | Scattering angle [rad]. |
[in] | pha_mat_data | Phase matrix in database. |
[in] | za_datagrid | Zenith angle grid in the database. |
[in] | za_sca | Zenith angle of scattered direction [rad]. |
[in] | aa_sca | Azimuth angle of scattered direction [rad]. |
[in] | za_inc | Zenith angle of incoming direction [rad]. |
[in] | aa_inc | Azimuth angle of incoming direction [rad]. |
Definition at line 668 of file optproperties.cc.
References abs, DEG2RAD, gridpos(), interp(), interpweights(), joker, ConstTensor5View::ncols(), PI, and RAD2DEG.
Referenced by pha_matTransform().
void interpolate_scat_angleDOIT | ( | VectorView | pha_mat_int, |
ConstTensor5View | pha_mat_data, | ||
const Index & | za_sca_idx, | ||
const Index & | aa_sca_idx, | ||
const Index & | za_inc_idx, | ||
const Index & | aa_inc_idx, | ||
const ArrayOfArrayOfArrayOfArrayOfGridPos & | scat_theta_gps, | ||
ConstTensor5View | scat_theta_itws | ||
) |
Interpolate data on the scattering angle.
This function is used for the transformation of the phase matrix from scattering frame to the laboratory frame for randomly oriented scattering media (case PTYPE_MACRO_ISO).
The scattering angle is calculated from the angles defining the directions of the incoming and scattered radiation. After that the data (which is stored in the data files as a function of the scattering angle) is interpolated on the calculated scattering angle.
[out] | pha_mat_int | Interpolated phase matrix. |
[in] | pha_mat_data | Phase matrix in database. |
[in] | za_sca_idx | Index of zenith angle of scattered direction. |
[in] | aa_sca_idx | Index of azimuth angle of scattered direction. |
[in] | za_inc_idx | Zenith angle of incoming direction. |
[in] | aa_inc_idx | Azimuth angle of incoming direction. |
[in] | scat_theta_gps | Array of gridposizions for scattering angle. |
[in] | scat_theta_itws | Interpolation weights belonging to the scattering angles. |
Definition at line 619 of file optproperties.cc.
ostream& operator<< | ( | ostream & | os, |
const SingleScatteringData & | |||
) |
Definition at line 944 of file optproperties.cc.
ostream& operator<< | ( | ostream & | os, |
const ArrayOfSingleScatteringData & | |||
) |
Definition at line 951 of file optproperties.cc.
ostream& operator<< | ( | ostream & | os, |
const ScatteringMetaData & | |||
) |
Definition at line 957 of file optproperties.cc.
ostream& operator<< | ( | ostream & | os, |
const ArrayOfScatteringMetaData & | |||
) |
Definition at line 964 of file optproperties.cc.
void opt_prop_sum_propmat_clearsky | ( | Tensor3 & | ext_mat, |
Matrix & | abs_vec, | ||
const Tensor4 | propmat_clearsky | ||
) |
Get optical properties from propmat_clearsky.
This turns propmat_clearsky into the extinction matrix and absorption vector for use when these are important.
Internal function to replace the old opt_prop_gas_agenda.
Output and Input:
ext_mat | Extinction matrix. |
abs_vec | Absorption vector. Input: |
propmat_clearsky | as the WSV. |
Definition at line 987 of file optproperties.cc.
References joker, ConstTensor4View::ncols(), ConstTensor4View::npages(), Tensor3::resize(), and Matrix::resize().
Referenced by clear_rt_vars_at_gp(), cloud_ppath_update1D_planeparallel(), cloud_RT_no_background(), and cloudy_rt_vars_at_gp().
ParticleSSDMethod ParticleSSDMethodFromString | ( | const String & | particle_ssdmethod_string | ) |
Convert particle ssd method name to enum value.
Returns the ParticleSSDMethod enum value for the given String.
[in] | particle_ssdmethod_string | Particle SSD method name |
Definition at line 1097 of file optproperties.cc.
References PARTICLE_SSDMETHOD_TMATRIX.
ParticleType ParticleTypeFromString | ( | const String & | particle_type_string | ) |
Convert particle name to enum value.
Returns the ParticleType enum value for the given String.
[in] | particle_type_string | Particle type name |
Definition at line 1026 of file optproperties.cc.
References PARTICLE_TYPE_GENERAL, PARTICLE_TYPE_HORIZ_AL, PARTICLE_TYPE_MACROS_ISO, and PARTICLE_TYPE_SPHERICAL.
Referenced by scat_meta_arrayAddTmatrix(), scat_meta_arrayAddTmatrixOldVersion(), and xml_read_from_stream().
String ParticleTypeToString | ( | const ParticleType & | particle_type | ) |
Convert particle type enum value to String.
Returns the ParticleType enum value for the given String.
[in] | particle_type | Particle type |
Definition at line 1059 of file optproperties.cc.
References PARTICLE_TYPE_GENERAL, PARTICLE_TYPE_HORIZ_AL, PARTICLE_TYPE_MACROS_ISO, and PARTICLE_TYPE_SPHERICAL.
Referenced by xml_write_to_stream().
String ParticleTypeToString | ( | const ParticleSSDMethod & | particle_ssdmethod | ) |
Convert particle type enum value to String.
Returns the ParticleType enum value for the given String.
[in] | particle_type | Particle type |
Definition at line 1123 of file optproperties.cc.
References PARTICLE_SSDMETHOD_TMATRIX.
void pha_mat_labCalc | ( | MatrixView | pha_mat_lab, |
ConstVectorView | pha_mat_int, | ||
const Numeric & | za_sca, | ||
const Numeric & | aa_sca, | ||
const Numeric & | za_inc, | ||
const Numeric & | aa_inc, | ||
const Numeric & | theta_rad | ||
) |
Calculate phase matrix in laboratory coordinate system.
Transformation function for the phase matrix for the case of randomly oriented particles (case PTYPE_MACRO_ISO).
Some of the formulas can be found in
Mishchenkho: "Scattering, Absorption and Emission of Light by Small Particles", Cambridge University Press, 2002 Capter 4
The full set of formulas will be documented in AUG.
Output and Input:
pha_mat_lab | Phase matrix in laboratory frame. Input: |
pha_mat_int | Interpolated phase matrix. |
za_sca | Zenith angle of scattered direction. |
aa_sca | Azimuth angle of scattered direction. |
za_inc | Zenith angle of incoming direction. |
aa_inc | Azimuth angle of incoming direction. |
theta_rad | Scattering angle [rad]. |
Definition at line 759 of file optproperties.cc.
References abs, ANGTOL, DEG2RAD, F11, F12, F22, F33, F34, F44, ConstMatrixView::ncols(), PI, and RAD2DEG.
Referenced by pha_mat_singleExtract(), and pha_matTransform().
void pha_matTransform | ( | MatrixView | pha_mat_lab, |
ConstTensor5View | pha_mat_data, | ||
ConstVectorView | za_datagrid, | ||
ConstVectorView | aa_datagrid, | ||
const ParticleType & | particle_type, | ||
const Index & | za_sca_idx, | ||
const Index & | aa_sca_idx, | ||
const Index & | za_inc_idx, | ||
const Index & | aa_inc_idx, | ||
ConstVectorView | scat_za_grid, | ||
ConstVectorView | scat_aa_grid, | ||
const Verbosity & | verbosity | ||
) |
Transformation of phase matrix.
In the single scattering database the data of the phase matrix is stored in different coordinate systems, depending on the type of hydrometeor species.
See AUG for information about different classifications of the hydrometeor species.
[in,out] | pha_mat_lab | Phase matrix in Laboratory frame. |
[in] | pha_mat_data | Phase matrix in database. |
[in] | za_datagrid | Zenith angle grid in the database. |
[in] | aa_datagrid | Zenith angle grid in the database. |
[in] | particle_type | Classification of the hydometeor species. |
[in] | za_sca_idx | Index of zenith angle of scattered direction. |
[in] | aa_sca_idx | Index of azimuth angle of scattered direction. |
[in] | za_inc_idx | Index of zenith angle of incoming direction. |
[in] | aa_inc_idx | Index of azimuth angle of incoming direction. |
[in] | scat_za_grid | FIXME: DOC |
[in] | scat_aa_grid | FIXME: DOC |
Definition at line 345 of file optproperties.cc.
References abs, CREATE_OUT0, gridpos(), interp(), interpolate_scat_angle(), interpweights(), joker, ConstTensor5View::ncols(), ConstMatrixView::ncols(), ConstTensor5View::npages(), PARTICLE_TYPE_GENERAL, PARTICLE_TYPE_HORIZ_AL, PARTICLE_TYPE_MACROS_ISO, and pha_mat_labCalc().
Referenced by DoitScatteringDataPrepare(), pha_mat_sptFromData(), and pha_mat_sptFromMonoData().
const Numeric DEG2RAD |
Referenced by interpolate_scat_angle(), and pha_mat_labCalc().
const Numeric PI |
Referenced by interpolate_scat_angle(), and pha_mat_labCalc().
const Numeric RAD2DEG |
Referenced by interpolate_scat_angle(), and pha_mat_labCalc().