ARTS 2.5.11 (git: 6827797f)
|
Class to keep track of Transmission Matrices for Stokes Dim 1-4. More...
#include <transmissionmatrix.h>
Public Member Functions | |
TransmissionMatrix (Index nf=0, Index stokes=1) | |
Construct a new Transmission Matrix object. | |
TransmissionMatrix (TransmissionMatrix &&tm) noexcept=default | |
Construct a new Transmission Matrix object. | |
TransmissionMatrix (const TransmissionMatrix &tm)=default | |
Construct a new Transmission Matrix object. | |
TransmissionMatrix & | operator= (const TransmissionMatrix &tm)=default |
Assignment operator. | |
TransmissionMatrix & | operator= (TransmissionMatrix &&tm) noexcept=default |
Move operator. | |
TransmissionMatrix (const PropagationMatrix &pm, const Numeric &r=1.0) | |
Construct a new Transmission Matrix from a Propagation Matrix. | |
operator Tensor3 () const | |
TransmissionMatrix (const ConstMatrixView &mat) | |
const Eigen::Matrix4d & | Mat4 (size_t i) const |
Get Matrix at position. | |
const Eigen::Matrix3d & | Mat3 (size_t i) const |
Get Matrix at position. | |
const Eigen::Matrix2d & | Mat2 (size_t i) const |
Get Matrix at position. | |
const Eigen::Matrix< double, 1, 1 > & | Mat1 (size_t i) const |
Get Matrix at position. | |
Eigen::MatrixXd | Mat (size_t i) const |
Get Matrix at position by copy. | |
Eigen::Matrix4d & | Mat4 (size_t i) |
Get Matrix at position. | |
Eigen::Matrix3d & | Mat3 (size_t i) |
Get Matrix at position. | |
Eigen::Matrix2d & | Mat2 (size_t i) |
Get Matrix at position. | |
Eigen::Matrix< double, 1, 1 > & | Mat1 (size_t i) |
Get Matrix at position. | |
void | setIdentity () |
Set to identity matrix. | |
void | setZero () |
Set to zero matrix. | |
void | mul (const TransmissionMatrix &A, const TransmissionMatrix &B) |
Set this to a multiple of A by B. | |
void | mul_aliased (const TransmissionMatrix &A, const TransmissionMatrix &B) |
Set this to a multiple of A by B. | |
Numeric | operator() (const Index i, const Index j, const Index k) const |
Access value in matrix. | |
Numeric & | operator() (const Index i, const Index j, const Index k) |
Access value in matrix. | |
Index | Frequencies () const |
Number of frequencies. | |
TransmissionMatrix & | operator+= (const LazyScale< TransmissionMatrix > &lstm) |
Assign to *this lazily. | |
TransmissionMatrix & | operator*= (const Numeric &scale) |
Scale self. | |
TransmissionMatrix & | operator= (const LazyScale< TransmissionMatrix > &lstm) |
Assign lazily. | |
template<int N> | |
auto & | TraMat (size_t i) noexcept |
Simple template access for the transmission. | |
template<int N> | |
auto & | TraMat (size_t i) const noexcept |
Simple template access for the transmission. | |
template<int N> | |
Eigen::Matrix< Numeric, N, N > | OptDepth (size_t i) const noexcept |
Simple template access for the optical depth. | |
template<int N> | |
Eigen::Matrix< Numeric, N, 1 > | second_order_integration_source (const Eigen::Matrix< Numeric, N, N > T, const Eigen::Matrix< Numeric, N, 1 > far, const Eigen::Matrix< Numeric, N, 1 > close, const Eigen::Matrix< Numeric, N, N > Kfar, const Eigen::Matrix< Numeric, N, N > Kclose, const Numeric r) const noexcept |
template<int N> | |
Eigen::Matrix< Numeric, N, 1 > | second_order_integration_dsource (size_t i, const TransmissionMatrix &dx, const Eigen::Matrix< Numeric, N, 1 > far, const Eigen::Matrix< Numeric, N, 1 > close, const Eigen::Matrix< Numeric, N, 1 > d, bool isfar) const noexcept |
Public Attributes | |
Index | stokes_dim |
std::vector< Eigen::Matrix4d > | T4 |
std::vector< Eigen::Matrix3d > | T3 |
std::vector< Eigen::Matrix2d > | T2 |
std::vector< Eigen::Matrix< double, 1, 1 > > | T1 |
Friends | |
std::ostream & | operator<< (std::ostream &os, const TransmissionMatrix &tm) |
Output operator. | |
std::istream & | operator>> (std::istream &data, TransmissionMatrix &tm) |
Input operator. | |
Class to keep track of Transmission Matrices for Stokes Dim 1-4.
Definition at line 148 of file transmissionmatrix.h.
TransmissionMatrix::TransmissionMatrix | ( | Index | nf = 0 , |
Index | stokes = 1 |
||
) |
Construct a new Transmission Matrix object.
[in] | nf | Number of frequencies |
[in] | stokes | Stokes dimension |
Definition at line 16 of file transmissionmatrix.cc.
References ARTS_ASSERT.
|
defaultnoexcept |
Construct a new Transmission Matrix object.
[in] | tm | Matrix to move from |
|
default |
Construct a new Transmission Matrix object.
[in] | tm | matrix to copy |
|
explicit |
Construct a new Transmission Matrix from a Propagation Matrix.
[in] | pm | Propagation Matrix |
[in] | r | Distance |
Definition at line 2305 of file transmissionmatrix.cc.
References transmat().
|
explicit |
Definition at line 144 of file transmissionmatrix.cc.
References ARTS_ASSERT, and stokes_dim.
Index TransmissionMatrix::Frequencies | ( | ) | const |
Number of frequencies.
Definition at line 131 of file transmissionmatrix.cc.
References stokes_dim, T1, T2, T3, and T4.
Referenced by xml_write_to_stream().
Eigen::MatrixXd TransmissionMatrix::Mat | ( | size_t | i | ) | const |
Get Matrix at position by copy.
[in] | i | Position |
Definition at line 59 of file transmissionmatrix.cc.
References Mat1(), Mat2(), Mat3(), Mat4(), and stokes_dim.
Eigen::Matrix< double, 1, 1 > & TransmissionMatrix::Mat1 | ( | size_t | i | ) |
Get Matrix at position.
[in] | i | Position |
Definition at line 33 of file transmissionmatrix.cc.
References T1.
const Eigen::Matrix< double, 1, 1 > & TransmissionMatrix::Mat1 | ( | size_t | i | ) | const |
Get Matrix at position.
[in] | i | Position |
Definition at line 28 of file transmissionmatrix.cc.
References T1.
Referenced by RadiationVector::addDerivEmission(), RadiationVector::addDerivTransmission(), RadiationVector::addMultiplied(), RadiationVector::addWeightedDerivEmission(), RadiationVector::leftMul(), Mat(), RadiationVector::setBackscatterTransmission(), RadiationVector::setBackscatterTransmissionDerivative(), RadiationVector::setDerivReflection(), and transmat1().
Eigen::Matrix2d & TransmissionMatrix::Mat2 | ( | size_t | i | ) |
Get Matrix at position.
[in] | i | Position |
Definition at line 32 of file transmissionmatrix.cc.
References T2.
const Eigen::Matrix2d & TransmissionMatrix::Mat2 | ( | size_t | i | ) | const |
Get Matrix at position.
[in] | i | Position |
Definition at line 27 of file transmissionmatrix.cc.
References T2.
Referenced by RadiationVector::addDerivEmission(), RadiationVector::addDerivTransmission(), RadiationVector::addMultiplied(), RadiationVector::addWeightedDerivEmission(), RadiationVector::leftMul(), Mat(), RadiationVector::setBackscatterTransmission(), RadiationVector::setBackscatterTransmissionDerivative(), RadiationVector::setDerivReflection(), and transmat2().
Eigen::Matrix3d & TransmissionMatrix::Mat3 | ( | size_t | i | ) |
Get Matrix at position.
[in] | i | Position |
Definition at line 31 of file transmissionmatrix.cc.
References T3.
const Eigen::Matrix3d & TransmissionMatrix::Mat3 | ( | size_t | i | ) | const |
Get Matrix at position.
[in] | i | Position |
Definition at line 26 of file transmissionmatrix.cc.
References T3.
Referenced by RadiationVector::addDerivEmission(), RadiationVector::addDerivTransmission(), RadiationVector::addMultiplied(), RadiationVector::addWeightedDerivEmission(), RadiationVector::leftMul(), Mat(), RadiationVector::setBackscatterTransmission(), RadiationVector::setBackscatterTransmissionDerivative(), RadiationVector::setDerivReflection(), and transmat3().
Eigen::Matrix4d & TransmissionMatrix::Mat4 | ( | size_t | i | ) |
Get Matrix at position.
[in] |
Position
Definition at line 30 of file transmissionmatrix.cc.
References T4.
const Eigen::Matrix4d & TransmissionMatrix::Mat4 | ( | size_t | i | ) | const |
Get Matrix at position.
[in] | i | Position |
Definition at line 25 of file transmissionmatrix.cc.
References T4.
Referenced by RadiationVector::addDerivEmission(), RadiationVector::addDerivTransmission(), RadiationVector::addMultiplied(), RadiationVector::addWeightedDerivEmission(), RadiationVector::leftMul(), Mat(), RadiationVector::setBackscatterTransmission(), RadiationVector::setBackscatterTransmissionDerivative(), RadiationVector::setDerivReflection(), and transmat4().
void TransmissionMatrix::mul | ( | const TransmissionMatrix & | A, |
const TransmissionMatrix & | B | ||
) |
void TransmissionMatrix::mul_aliased | ( | const TransmissionMatrix & | A, |
const TransmissionMatrix & | B | ||
) |
TransmissionMatrix::operator Tensor3 | ( | ) | const |
Definition at line 42 of file transmissionmatrix.cc.
Numeric & TransmissionMatrix::operator() | ( | const Index | i, |
const Index | j, | ||
const Index | k | ||
) |
Access value in matrix.
[in] | i | Position in vector |
[in] | j | Row in matrix |
[in] | k | Col in matrix |
Definition at line 118 of file transmissionmatrix.cc.
References stokes_dim, T1, T2, T3, and T4.
Numeric TransmissionMatrix::operator() | ( | const Index | i, |
const Index | j, | ||
const Index | k | ||
) | const |
Access value in matrix.
[in] | i | Position in vector |
[in] | j | Row in matrix |
[in] | k | Col in matrix |
Definition at line 103 of file transmissionmatrix.cc.
References stokes_dim, T1, T2, T3, and T4.
TransmissionMatrix & TransmissionMatrix::operator*= | ( | const Numeric & | scale | ) |
Scale self.
[in] | scale | To scale with |
Definition at line 164 of file transmissionmatrix.cc.
References T1, T2, T3, and T4.
Referenced by operator=().
TransmissionMatrix & TransmissionMatrix::operator+= | ( | const LazyScale< TransmissionMatrix > & | lstm | ) |
Assign to *this lazily.
[in] | lstm | Lazy matrix |
Definition at line 151 of file transmissionmatrix.cc.
TransmissionMatrix & TransmissionMatrix::operator= | ( | const LazyScale< TransmissionMatrix > & | lstm | ) |
Assign lazily.
[in] | lstm | Lazy value |
Definition at line 35 of file transmissionmatrix.cc.
References operator*=(), and operator=().
|
default |
Assignment operator.
[in] | tm | matrix to copy |
Referenced by operator=().
|
defaultnoexcept |
|
inlinenoexcept |
Simple template access for the optical depth.
Definition at line 368 of file transmissionmatrix.h.
|
inlinenoexcept |
Definition at line 425 of file transmissionmatrix.h.
References d.
Referenced by RadiationVector::addWeightedDerivEmission().
|
inlinenoexcept |
Return the weighted source term using second order integration
\[ far = \frac{1-\left(1+\log{T_{00}}\right) T}{\log{T_{00}}} \]
\[ close = \frac{\log{T_{00}} - 1 + T}{\log{T_{00}}} \]
This follows definition of equation 3.34 of http://www.ita.uni-heidelberg.de/~dullemond/lectures/radtrans_2013/Chapter_3.pdf.
One key change is that we consider polarization but only based on unpolarized radiation
FIXME: This function is not done properly for Stokes Dim > 1. The results might be correct but the derivation is not understood.
[in] | T | The transmission matrix |
[in] | far | The source at the destination of the RT step |
[in] | close | The source at the start of the RT step |
[in] | Kfar | The propagation matrix at the destination of the RT step |
[in] | Kclose | The propagation matrix at the start of the RT step |
[in] | r | The distance of the RT step |
Definition at line 392 of file transmissionmatrix.h.
Referenced by RadiationVector::add_weighted().
void TransmissionMatrix::setIdentity | ( | ) |
Set to identity matrix.
Definition at line 73 of file transmissionmatrix.cc.
References T1, T2, T3, and T4.
Referenced by gas_scattering_matIsotropic().
void TransmissionMatrix::setZero | ( | ) |
|
inlinenoexcept |
|
inlinenoexcept |
Simple template access for the transmission.
Definition at line 340 of file transmissionmatrix.h.
References T1, T2, T3, and T4.
Referenced by RadiationVector::add_weighted().
|
friend |
Output operator.
Definition at line 2266 of file transmissionmatrix.cc.
|
friend |
Input operator.
Definition at line 2283 of file transmissionmatrix.cc.
Index TransmissionMatrix::stokes_dim |
Definition at line 149 of file transmissionmatrix.h.
Referenced by Frequencies(), Mat(), operator()(), TransmissionMatrix(), and xml_write_to_stream().
std::vector<Eigen::Matrix<double, 1, 1> > TransmissionMatrix::T1 |
Definition at line 153 of file transmissionmatrix.h.
Referenced by Frequencies(), Mat1(), mul(), mul_aliased(), operator()(), operator*=(), operator+=(), setIdentity(), setZero(), and TraMat().
std::vector<Eigen::Matrix2d> TransmissionMatrix::T2 |
Definition at line 152 of file transmissionmatrix.h.
Referenced by Frequencies(), Mat2(), mul(), mul_aliased(), operator()(), operator*=(), operator+=(), setIdentity(), setZero(), and TraMat().
std::vector<Eigen::Matrix3d> TransmissionMatrix::T3 |
Definition at line 151 of file transmissionmatrix.h.
Referenced by Frequencies(), Mat3(), mul(), mul_aliased(), operator()(), operator*=(), operator+=(), setIdentity(), setZero(), and TraMat().
std::vector<Eigen::Matrix4d> TransmissionMatrix::T4 |
Definition at line 150 of file transmissionmatrix.h.
Referenced by Frequencies(), Mat4(), mul(), mul_aliased(), operator()(), operator*=(), operator+=(), setIdentity(), setZero(), and TraMat().