ARTS 2.5.0 (git: 9ee3ac6c)
PropagationMatrix Class Reference

#include <propagationmatrix.h>

Inheritance diagram for PropagationMatrix:
StokesVector

Public Member Functions

 PropagationMatrix (const Index nr_frequencies=0, const Index stokes_dim=1, const Index nr_za=1, const Index nr_aa=1, const Numeric v=0.0)
 Initialize variable sizes. More...
 
 PropagationMatrix (const PropagationMatrix &pm)=default
 Construct a new Propagation Matrix object. More...
 
 PropagationMatrix (PropagationMatrix &&pm) noexcept
 Construct a new Propagation Matrix object. More...
 
 PropagationMatrix (Tensor4 x)
 Construct a new Propagation Matrix object. More...
 
 PropagationMatrix (const ConstMatrixView &x, const bool &assume_fit=false)
 Initialize from single stokes_dim-by-stokes_dim matrix. More...
 
Index StokesDimensions () const
 The stokes dimension of the propagation matrix. More...
 
Index NumberOfFrequencies () const
 The number of frequencies of the propagation matrix. More...
 
Index NumberOfZenithAngles () const
 The number of zenith angles of the propagation matrix. More...
 
Index NumberOfAzimuthAngles () const
 The number of azimuth angles of the propagation matrix. More...
 
bool OK () const
 
bool IsEmpty () const
 Asks if the class is empty. More...
 
bool IsZero (const Index iv=0, const Index iz=0, const Index ia=0) const
 False if any non-zeroes in internal Matrix representation. More...
 
bool IsRotational (const Index iv=0, const Index iz=0, const Index ia=0) const
 False if diagonal element is non-zero in internal Matrix representation. More...
 
Index NumberOfNeededVectors () const
 The number of required vectors to fill this PropagationMatrix. More...
 
Numeric operator() (const Index iv=0, const Index is1=0, const Index is2=0, const Index iz=0, const Index ia=0) const
 access operator. More...
 
void AddFaraday (const Numeric &rot, const Index iv=0, const Index iz=0, const Index ia=0)
 Adds the Faraday rotation to the PropagationMatrix at required position. More...
 
void SetFaraday (const Numeric &rot, const Index iv=0, const Index iz=0, const Index ia=0)
 Sets the Faraday rotation to the PropagationMatrix at required position. More...
 
void MatrixAtPosition (MatrixView ret, const Index iv=0, const Index iz=0, const Index ia=0) const
 Sets the dense matrix. More...
 
PropagationMatrixoperator= (PropagationMatrix &&pm) noexcept
 Move operator. More...
 
PropagationMatrixoperator= (const LazyScale< PropagationMatrix > &lpms)
 Laze equal to opeartor. More...
 
PropagationMatrixoperator= (const PropagationMatrix &other)=default
 Copy operator. More...
 
PropagationMatrixoperator= (const Numeric &x)
 Sets all data to constant. More...
 
void SetAtPosition (const PropagationMatrix &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Set the At Position object. More...
 
void SetAtPosition (const ConstMatrixView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Set the At Position object. More...
 
void SetAtPosition (const Numeric &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Set the At Position object. More...
 
PropagationMatrixoperator/= (const PropagationMatrix &other)
 Divide operator. More...
 
PropagationMatrixoperator/= (const ConstVectorView &x)
 Divide operator. More...
 
PropagationMatrixoperator/= (const Numeric &x)
 Divide operator. More...
 
void DivideAtPosition (const PropagationMatrix &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Divide at position. More...
 
void DivideAtPosition (const ConstMatrixView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Divide at position. More...
 
void DivideAtPosition (const Numeric &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Divide at position. More...
 
PropagationMatrixoperator*= (const PropagationMatrix &other)
 Multiply operator. More...
 
PropagationMatrixoperator*= (const ConstVectorView &x)
 Multiply operator. More...
 
PropagationMatrixoperator*= (const Numeric &x)
 Multiply operator. More...
 
void MultiplyAtPosition (const PropagationMatrix &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Multiply operator at position. More...
 
void MultiplyAtPosition (const ConstMatrixView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Multiply operator at position. More...
 
void MultiplyAtPosition (const Numeric &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Multiply operator at position. More...
 
PropagationMatrixoperator+= (const PropagationMatrix &other)
 Addition operator. More...
 
PropagationMatrixoperator+= (const LazyScale< PropagationMatrix > &lpms)
 Addition operator. More...
 
PropagationMatrixoperator+= (const ConstVectorView &x)
 Addition operator. More...
 
PropagationMatrixoperator+= (const Numeric &x)
 Addition operator. More...
 
void AddAtPosition (const PropagationMatrix &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Addition at position operator. More...
 
void AddAtPosition (const ConstMatrixView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Addition at position operator. More...
 
void AddAtPosition (const Numeric &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Addition at position operator. More...
 
PropagationMatrixoperator-= (const PropagationMatrix &other)
 Subtraction operator. More...
 
PropagationMatrixoperator-= (const ConstVectorView &x)
 Subtraction operator. More...
 
PropagationMatrixoperator-= (const Numeric &x)
 Subtraction operator. More...
 
void RemoveAtPosition (const PropagationMatrix &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Subtraction at position. More...
 
void RemoveAtPosition (const ConstMatrixView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Subtraction at position. More...
 
void RemoveAtPosition (const Numeric &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Subtraction at position. More...
 
void AddAbsorptionVectorAtPosition (const ConstVectorView &x, const Index iv=0, const Index iz=0, const Index ia=0)
 Adds as a Stokes vector at position. More...
 
void AddAverageAtPosition (const ConstMatrixView &mat1, const ConstMatrixView &mat2, const Index iv=0, const Index iz=0, const Index ia=0)
 Add the average of the two input at position. More...
 
void MultiplyAndAdd (const Numeric x, const PropagationMatrix &y)
 Multiply input by scalar and add to this. More...
 
void MatrixInverseAtPosition (MatrixView ret, const Index iv=0, const Index iz=0, const Index ia=0) const
 Return the matrix inverse at the position. More...
 
bool FittingShape (const ConstMatrixView &x) const
 Tests of the input matrix fits Propagation Matrix style. More...
 
void GetTensor3 (Tensor3View tensor3, const Index iz=0, const Index ia=0)
 Get a Tensor3 object from this. More...
 
VectorView Kjj (const Index iz=0, const Index ia=0)
 Vector view to diagonal elements. More...
 
VectorView K12 (const Index iz=0, const Index ia=0)
 Vector view to K(0, 1) elements. More...
 
VectorView K13 (const Index iz=0, const Index ia=0)
 Vector view to K(0, 2) elements. More...
 
VectorView K14 (const Index iz=0, const Index ia=0)
 Vector view to K(0, 3) elements. More...
 
VectorView K23 (const Index iz=0, const Index ia=0)
 Vector view to K(1, 2) elements. More...
 
VectorView K24 (const Index iz=0, const Index ia=0)
 Vector view to K(1, 3) elements. More...
 
VectorView K34 (const Index iz=0, const Index ia=0)
 Vector view to K(2, 3) elements. More...
 
ConstVectorView Kjj (const Index iz=0, const Index ia=0) const
 Vector view to diagonal elements. More...
 
ConstVectorView K12 (const Index iz=0, const Index ia=0) const
 Vector view to K(0, 1) elements. More...
 
ConstVectorView K13 (const Index iz=0, const Index ia=0) const
 Vector view to K(0, 2) elements. More...
 
ConstVectorView K14 (const Index iz=0, const Index ia=0) const
 Vector view to K(0, 3) elements. More...
 
ConstVectorView K23 (const Index iz=0, const Index ia=0) const
 Vector view to K(1, 3) elements. More...
 
ConstVectorView K24 (const Index iz=0, const Index ia=0) const
 Vector view to K(1, 3) elements. More...
 
ConstVectorView K34 (const Index iz=0, const Index ia=0) const
 Vector view to diagonal elements. More...
 
void SetZero ()
 Sets all data to zero. More...
 
Tensor4Data ()
 Get full view to data. More...
 
const Tensor4Data () const
 Get full const view to data. More...
 
void LeftMultiplyAtPosition (MatrixView out, const ConstMatrixView &in, const Index iv=0, const Index iz=0, const Index ia=0) const
 Multiply the matrix input from the left of this at position. More...
 
void RightMultiplyAtPosition (MatrixView out, const ConstMatrixView &in, const Index iv=0, const Index iz=0, const Index ia=0) const
 Multiply the matrix input from the right of this at position. More...
 

Protected Attributes

Index mfreqs
 
Index mstokes_dim
 
Index mza
 
Index maa
 
Tensor4 mdata
 
bool mvectortype {false}
 

Detailed Description

Propagation Matrix Holder Class With Some Computational Capabilities

The idea comes from the fact that the propagation matrix has the looks

/ \ | a b c d | | b a u v | | c -u a w | | d -v -w a | \ /

So we instead store the inner parts of the matrix linearly as [a b c d u v w], and all computations happens on these variables instead. Note that the variables changes with the Stokes dimension

Stokes Dim 4: [a b c d u v w] Stokes Dim 3: [a b c u] Stokes Dim 2: [a b] Stokes Dim 1: [a]

And for devs: the u-variable is at vector position of the Stokes Dim in case 4 and 3, and that the other variables never change their positions, which is why the switch cases are all consistently fall-through-able in this class

Definition at line 232 of file propagationmatrix.h.

Constructor & Destructor Documentation

◆ PropagationMatrix() [1/5]

PropagationMatrix::PropagationMatrix ( const Index  nr_frequencies = 0,
const Index  stokes_dim = 1,
const Index  nr_za = 1,
const Index  nr_aa = 1,
const Numeric  v = 0.0 
)
inline

Initialize variable sizes.

Will create a Tensor4 of the size and order (nr_aa, nr_za, NumberOfNeededVectors(), nr_frequencies)

Parameters
[in]nr_frequenciesNumber of Dirac frequencies
[in]stokes_dimStokes dimensionality
[in]nr_zaNumber of Dirac Zeniths
[in]nr_aaNumber of Dirac Azimuths
[in]vInitial values of things in the created Tensor4

Definition at line 245 of file propagationmatrix.h.

References ARTS_ASSERT, maa, mdata, mfreqs, mza, NumberOfNeededVectors(), and v.

◆ PropagationMatrix() [2/5]

PropagationMatrix::PropagationMatrix ( const PropagationMatrix pm)
default

Construct a new Propagation Matrix object.

Parameters
[in]pmOld propagation matrix object to copy

◆ PropagationMatrix() [3/5]

PropagationMatrix::PropagationMatrix ( PropagationMatrix &&  pm)
inlinenoexcept

Construct a new Propagation Matrix object.

Parameters
[in]pmold Propagation Matrix object to move from

Definition at line 268 of file propagationmatrix.h.

◆ PropagationMatrix() [4/5]

PropagationMatrix::PropagationMatrix ( Tensor4  x)
inlineexplicit

Construct a new Propagation Matrix object.

Parameters
[in]xTensor4 object to use to initialize from

Definition at line 280 of file propagationmatrix.h.

References ARTS_ASSERT, mstokes_dim, and ConstTensor4View::ncols().

◆ PropagationMatrix() [5/5]

PropagationMatrix::PropagationMatrix ( const ConstMatrixView x,
const bool &  assume_fit = false 
)
inlineexplicit

Initialize from single stokes_dim-by-stokes_dim matrix.

Parameters
[in]xThe matrix
[in]assume_fitAssume a correct fit? Do not set this in manual interface

Definition at line 308 of file propagationmatrix.h.

References ARTS_ASSERT, FittingShape(), mdata, mstokes_dim, mvectortype, NumberOfNeededVectors(), and Tensor4::resize().

Member Function Documentation

◆ AddAbsorptionVectorAtPosition()

void PropagationMatrix::AddAbsorptionVectorAtPosition ( const ConstVectorView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Adds as a Stokes vector at position.

Parameters
[in]x
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 845 of file propagationmatrix.h.

References mdata, and mstokes_dim.

Referenced by propmat_clearskyAddParticles().

◆ AddAtPosition() [1/3]

void PropagationMatrix::AddAtPosition ( const ConstMatrixView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Addition at position operator.

Parameters
[in]otherAddition by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1850 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ AddAtPosition() [2/3]

void PropagationMatrix::AddAtPosition ( const Numeric x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Addition at position operator.

Parameters
[in]otherAddition by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 755 of file propagationmatrix.h.

References joker, and mdata.

◆ AddAtPosition() [3/3]

void PropagationMatrix::AddAtPosition ( const PropagationMatrix x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Addition at position operator.

Parameters
[in]otherAddition by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 729 of file propagationmatrix.h.

References joker, and mdata.

◆ AddAverageAtPosition()

void PropagationMatrix::AddAverageAtPosition ( const ConstMatrixView mat1,
const ConstMatrixView mat2,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Add the average of the two input at position.

Parameters
[in]mat1input 1
[in]mat2input 2
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1610 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ AddFaraday()

void PropagationMatrix::AddFaraday ( const Numeric rot,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Adds the Faraday rotation to the PropagationMatrix at required position.

No vector function exists since rot is a function of frequency

Parameters
[in]rotrotation
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 411 of file propagationmatrix.h.

References mdata, and mstokes_dim.

Referenced by propmat_clearskyAddFaraday().

◆ Data() [1/2]

Tensor4 & PropagationMatrix::Data ( )
inline

◆ Data() [2/2]

const Tensor4 & PropagationMatrix::Data ( ) const
inline

Get full const view to data.

Definition at line 1046 of file propagationmatrix.h.

References mdata.

◆ DivideAtPosition() [1/3]

void PropagationMatrix::DivideAtPosition ( const ConstMatrixView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Divide at position.

Parameters
[in]otherDivide by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1888 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ DivideAtPosition() [2/3]

void PropagationMatrix::DivideAtPosition ( const Numeric x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Divide at position.

Parameters
[in]otherDivide by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 601 of file propagationmatrix.h.

References joker, and mdata.

◆ DivideAtPosition() [3/3]

void PropagationMatrix::DivideAtPosition ( const PropagationMatrix x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Divide at position.

Parameters
[in]otherDivide by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 575 of file propagationmatrix.h.

References joker, and mdata.

◆ FittingShape()

bool PropagationMatrix::FittingShape ( const ConstMatrixView x) const

Tests of the input matrix fits Propagation Matrix style.

Parameters
[in]xInput matrix

Definition at line 1640 of file propagationmatrix.cc.

References ARTS_ASSERT, mstokes_dim, ConstMatrixView::ncols(), Absorption::nelem(), and ConstMatrixView::nrows().

Referenced by PropagationMatrix().

◆ GetTensor3()

void PropagationMatrix::GetTensor3 ( Tensor3View  tensor3,
const Index  iz = 0,
const Index  ia = 0 
)

Get a Tensor3 object from this.

Parameters
[in,out]tensor3New tensor
[in]izZenith index
[in]iaAzimuth index

Definition at line 1673 of file propagationmatrix.cc.

References ARTS_ASSERT, joker, mdata, and mstokes_dim.

◆ IsEmpty()

bool PropagationMatrix::IsEmpty ( ) const
inline

Asks if the class is empty.

Definition at line 350 of file propagationmatrix.h.

References maa, mfreqs, and mza.

Referenced by get_stepwise_effective_source(), and RadiationVector::setSource().

◆ IsRotational()

bool PropagationMatrix::IsRotational ( const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const
inline

False if diagonal element is non-zero in internal Matrix representation.

Parameters
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index
Returns
False if diagonal is non-zero

Definition at line 376 of file propagationmatrix.h.

References mdata.

Referenced by get_stepwise_effective_source(), and stepwise_source().

◆ IsZero()

bool PropagationMatrix::IsZero ( const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const
inline

False if any non-zeroes in internal Matrix representation.

Parameters
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index
Returns
False if any non-zeroes

Definition at line 359 of file propagationmatrix.h.

References joker, and mdata.

◆ K12() [1/2]

◆ K12() [2/2]

ConstVectorView PropagationMatrix::K12 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to K(0, 1) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(0, 1) elements

Definition at line 985 of file propagationmatrix.h.

References joker, and mdata.

◆ K13() [1/2]

VectorView PropagationMatrix::K13 ( const Index  iz = 0,
const Index  ia = 0 
)
inline

◆ K13() [2/2]

ConstVectorView PropagationMatrix::K13 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to K(0, 2) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(0, 2) elements

Definition at line 995 of file propagationmatrix.h.

References joker, and mdata.

◆ K14() [1/2]

VectorView PropagationMatrix::K14 ( const Index  iz = 0,
const Index  ia = 0 
)
inline

Vector view to K(0, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(0, 3) elements

Definition at line 935 of file propagationmatrix.h.

References joker, and mdata.

Referenced by dtransmat4(), StokesVector::IsPolarized(), LeftMultiplyAtPosition(), MatrixInverseAtPosition(), RightMultiplyAtPosition(), RadiationVector::setSource(), source_vector(), and transmat4().

◆ K14() [2/2]

ConstVectorView PropagationMatrix::K14 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to K(0, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(0, 3) elements

Definition at line 1005 of file propagationmatrix.h.

References joker, and mdata.

◆ K23() [1/2]

VectorView PropagationMatrix::K23 ( const Index  iz = 0,
const Index  ia = 0 
)
inline

◆ K23() [2/2]

ConstVectorView PropagationMatrix::K23 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to K(1, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(1, 3) elements

Definition at line 1015 of file propagationmatrix.h.

References joker, mdata, and mstokes_dim.

◆ K24() [1/2]

VectorView PropagationMatrix::K24 ( const Index  iz = 0,
const Index  ia = 0 
)
inline

Vector view to K(1, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(1, 3) elements

Definition at line 955 of file propagationmatrix.h.

References joker, and mdata.

Referenced by dtransmat4(), LeftMultiplyAtPosition(), MatrixInverseAtPosition(), RightMultiplyAtPosition(), and transmat4().

◆ K24() [2/2]

ConstVectorView PropagationMatrix::K24 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to K(1, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(1, 3) elements

Definition at line 1025 of file propagationmatrix.h.

References joker, and mdata.

◆ K34() [1/2]

VectorView PropagationMatrix::K34 ( const Index  iz = 0,
const Index  ia = 0 
)
inline

Vector view to K(2, 3) elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView K(2, 3) elements

Definition at line 965 of file propagationmatrix.h.

References joker, and mdata.

Referenced by dtransmat4(), ext_matTransform(), LeftMultiplyAtPosition(), MatrixInverseAtPosition(), RightMultiplyAtPosition(), and transmat4().

◆ K34() [2/2]

ConstVectorView PropagationMatrix::K34 ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to diagonal elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView Diagonal elements

Definition at line 1035 of file propagationmatrix.h.

References joker, and mdata.

◆ Kjj() [1/2]

◆ Kjj() [2/2]

ConstVectorView PropagationMatrix::Kjj ( const Index  iz = 0,
const Index  ia = 0 
) const
inline

Vector view to diagonal elements.

Parameters
[in]izZenith index
[in]iaAzimuth index
Returns
VectorView Diagonal elements

Definition at line 975 of file propagationmatrix.h.

References joker, and mdata.

◆ LeftMultiplyAtPosition()

void PropagationMatrix::LeftMultiplyAtPosition ( MatrixView  out,
const ConstMatrixView in,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const

Multiply the matrix input from the left of this at position.

Parameters
[in,out]outOutgoing matrix
[in]inIncoming matrix
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1705 of file propagationmatrix.cc.

References a, b, c, d, K12(), K13(), K14(), K23(), K24(), K34(), Kjj(), mstokes_dim, u, v, and w.

◆ MatrixAtPosition()

void PropagationMatrix::MatrixAtPosition ( MatrixView  ret,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const

Sets the dense matrix.

Avoid using if possible.

Parameters
[in,out]Fullpropagation matrix
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1926 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

Referenced by clear_rt_vars_at_gp(), cloud_fieldsCalc(), and cloudy_rt_vars_at_gp().

◆ MatrixInverseAtPosition()

void PropagationMatrix::MatrixInverseAtPosition ( MatrixView  ret,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const

Return the matrix inverse at the position.

Parameters
[in,out]retInversed matrix
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1506 of file propagationmatrix.cc.

References a, a2, b, b2, c, d, K12(), K13(), K14(), K23(), K24(), K34(), Kjj(), mstokes_dim, u, v, and w.

Referenced by get_stepwise_effective_source(), and rte_step_doit_replacement().

◆ MultiplyAndAdd()

void PropagationMatrix::MultiplyAndAdd ( const Numeric  x,
const PropagationMatrix y 
)

Multiply input by scalar and add to this.

Parameters
xscalar
yinput

Definition at line 1631 of file propagationmatrix.cc.

References maa, and mza.

Referenced by operator+=(), and opt_prop_bulkCalc().

◆ MultiplyAtPosition() [1/3]

void PropagationMatrix::MultiplyAtPosition ( const ConstMatrixView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Multiply operator at position.

Parameters
[in]otherMultiply by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1869 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ MultiplyAtPosition() [2/3]

void PropagationMatrix::MultiplyAtPosition ( const Numeric x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Multiply operator at position.

Parameters
[in]otherMultiply by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 673 of file propagationmatrix.h.

References joker, and mdata.

◆ MultiplyAtPosition() [3/3]

void PropagationMatrix::MultiplyAtPosition ( const PropagationMatrix x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Multiply operator at position.

Parameters
[in]otherMultiply by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 647 of file propagationmatrix.h.

References joker, and mdata.

◆ NumberOfAzimuthAngles()

Index PropagationMatrix::NumberOfAzimuthAngles ( ) const
inline

The number of azimuth angles of the propagation matrix.

Definition at line 345 of file propagationmatrix.h.

References maa.

Referenced by StokesVector::MultiplyAndAdd(), StokesVector::operator=(), and RadiationVector::setSource().

◆ NumberOfFrequencies()

◆ NumberOfNeededVectors()

Index PropagationMatrix::NumberOfNeededVectors ( ) const
inline

The number of required vectors to fill this PropagationMatrix.

Definition at line 387 of file propagationmatrix.h.

References mstokes_dim, and mvectortype.

Referenced by OK(), operator*=(), operator+=(), operator-=(), operator/=(), and PropagationMatrix().

◆ NumberOfZenithAngles()

Index PropagationMatrix::NumberOfZenithAngles ( ) const
inline

The number of zenith angles of the propagation matrix.

Definition at line 342 of file propagationmatrix.h.

References mza.

Referenced by StokesVector::MultiplyAndAdd(), StokesVector::operator=(), and RadiationVector::setSource().

◆ OK()

◆ operator()()

Numeric PropagationMatrix::operator() ( const Index  iv = 0,
const Index  is1 = 0,
const Index  is2 = 0,
const Index  iz = 0,
const Index  ia = 0 
) const

access operator.

Please refrain from using this if possible since it copies

Definition at line 1953 of file propagationmatrix.cc.

References ARTS_ASSERT, mdata, and mstokes_dim.

◆ operator*=() [1/3]

PropagationMatrix & PropagationMatrix::operator*= ( const ConstVectorView x)
inline

Multiply operator.

Parameters
[in]otherMultiply by other
Returns
PropagationMatrix& *this

Definition at line 623 of file propagationmatrix.h.

References mza, and NumberOfNeededVectors().

◆ operator*=() [2/3]

PropagationMatrix & PropagationMatrix::operator*= ( const Numeric x)
inline

Multiply operator.

Parameters
[in]otherMultiply by other
Returns
PropagationMatrix& *this

Definition at line 635 of file propagationmatrix.h.

References mdata.

◆ operator*=() [3/3]

PropagationMatrix & PropagationMatrix::operator*= ( const PropagationMatrix other)
inline

Multiply operator.

Parameters
[in]otherMultiply by other
Returns
PropagationMatrix& *this

Definition at line 613 of file propagationmatrix.h.

References mdata.

◆ operator+=() [1/4]

PropagationMatrix & PropagationMatrix::operator+= ( const ConstVectorView x)
inline

Addition operator.

Parameters
[in]otherAddition by other
Returns
PropagationMatrix& *this

Definition at line 705 of file propagationmatrix.h.

References mza, and NumberOfNeededVectors().

◆ operator+=() [2/4]

PropagationMatrix & PropagationMatrix::operator+= ( const LazyScale< PropagationMatrix > &  lpms)
inline

Addition operator.

Parameters
[in]otherAddition by other
Returns
PropagationMatrix& *this

Definition at line 695 of file propagationmatrix.h.

References LazyScale< base >::bas, MultiplyAndAdd(), and LazyScale< base >::scale.

◆ operator+=() [3/4]

PropagationMatrix & PropagationMatrix::operator+= ( const Numeric x)
inline

Addition operator.

Parameters
[in]otherAddition by other
Returns
PropagationMatrix& *this

Definition at line 717 of file propagationmatrix.h.

References mdata.

◆ operator+=() [4/4]

PropagationMatrix & PropagationMatrix::operator+= ( const PropagationMatrix other)
inline

Addition operator.

Parameters
[in]otherAddition by other
Returns
PropagationMatrix& *this

Definition at line 685 of file propagationmatrix.h.

References mdata.

◆ operator-=() [1/3]

PropagationMatrix & PropagationMatrix::operator-= ( const ConstVectorView x)
inline

Subtraction operator.

Parameters
[in]otherSubtract by other
Returns
PropagationMatrix& *this

Definition at line 777 of file propagationmatrix.h.

References mza, and NumberOfNeededVectors().

◆ operator-=() [2/3]

PropagationMatrix & PropagationMatrix::operator-= ( const Numeric x)
inline

Subtraction operator.

Parameters
[in]otherSubtract by other
Returns
PropagationMatrix& *this

Definition at line 793 of file propagationmatrix.h.

References mdata.

◆ operator-=() [3/3]

PropagationMatrix & PropagationMatrix::operator-= ( const PropagationMatrix other)
inline

Subtraction operator.

Parameters
[in]otherSubtract by other
Returns
PropagationMatrix& *this

Definition at line 767 of file propagationmatrix.h.

References mdata.

◆ operator/=() [1/3]

PropagationMatrix & PropagationMatrix::operator/= ( const ConstVectorView x)
inline

Divide operator.

Parameters
[in]otherDivide by other
Returns
PropagationMatrix& *this

Definition at line 547 of file propagationmatrix.h.

References mza, and NumberOfNeededVectors().

◆ operator/=() [2/3]

PropagationMatrix & PropagationMatrix::operator/= ( const Numeric x)
inline

Divide operator.

Parameters
[in]otherDivide by other
Returns
PropagationMatrix& *this

Definition at line 563 of file propagationmatrix.h.

References mdata.

◆ operator/=() [3/3]

PropagationMatrix & PropagationMatrix::operator/= ( const PropagationMatrix other)
inline

Divide operator.

Parameters
[in]otherDivide by other
Returns
PropagationMatrix& *this

Definition at line 537 of file propagationmatrix.h.

References mdata.

◆ operator=() [1/4]

PropagationMatrix & PropagationMatrix::operator= ( const LazyScale< PropagationMatrix > &  lpms)
inline

Laze equal to opeartor.

Parameters
[in]lpmslazified propagation matrix
Returns
PropagationMatrix& *this

Definition at line 468 of file propagationmatrix.h.

References LazyScale< base >::bas, mdata, operator=(), and LazyScale< base >::scale.

◆ operator=() [2/4]

PropagationMatrix & PropagationMatrix::operator= ( const Numeric x)
inline

Sets all data to constant.

Parameters
[in]xnew constant value
Returns
PropagationMatrix& *this

Definition at line 486 of file propagationmatrix.h.

References mdata.

◆ operator=() [3/4]

PropagationMatrix & PropagationMatrix::operator= ( const PropagationMatrix other)
default

Copy operator.

Parameters
[in]otherPropagationMatrix to copy
Returns
PropagationMatrix& *this

◆ operator=() [4/4]

PropagationMatrix & PropagationMatrix::operator= ( PropagationMatrix &&  pm)
inlinenoexcept

Move operator.

Parameters
[in]pmPropagationMatrix to move from
Returns
PropagationMatrix& *this

Definition at line 451 of file propagationmatrix.h.

References maa, mdata, mfreqs, mstokes_dim, mvectortype, and mza.

Referenced by operator=().

◆ RemoveAtPosition() [1/3]

void PropagationMatrix::RemoveAtPosition ( const ConstMatrixView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Subtraction at position.

Parameters
[in]otherSubtract by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1831 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ RemoveAtPosition() [2/3]

void PropagationMatrix::RemoveAtPosition ( const Numeric x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Subtraction at position.

Parameters
[in]otherSubtract by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 831 of file propagationmatrix.h.

References joker, and mdata.

◆ RemoveAtPosition() [3/3]

void PropagationMatrix::RemoveAtPosition ( const PropagationMatrix x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Subtraction at position.

Parameters
[in]otherSubtract by other
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 805 of file propagationmatrix.h.

References joker, and mdata.

◆ RightMultiplyAtPosition()

void PropagationMatrix::RightMultiplyAtPosition ( MatrixView  out,
const ConstMatrixView in,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
) const

Multiply the matrix input from the right of this at position.

Parameters
[in,out]outOutgoing matrix
[in]inIncoming matrix
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1768 of file propagationmatrix.cc.

References a, b, c, d, K12(), K13(), K14(), K23(), K24(), K34(), Kjj(), mstokes_dim, u, v, and w.

◆ SetAtPosition() [1/3]

void PropagationMatrix::SetAtPosition ( const ConstMatrixView x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)

Set the At Position object.

Parameters
[in]xObject to set
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 1907 of file propagationmatrix.cc.

References mdata, and mstokes_dim.

◆ SetAtPosition() [2/3]

void PropagationMatrix::SetAtPosition ( const Numeric x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Set the At Position object.

Parameters
[in]xObject to set
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 525 of file propagationmatrix.h.

References joker, and mdata.

◆ SetAtPosition() [3/3]

void PropagationMatrix::SetAtPosition ( const PropagationMatrix x,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Set the At Position object.

Parameters
[in]xObject to set
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 498 of file propagationmatrix.h.

References joker, and mdata.

Referenced by get_stepwise_scattersky_propmat(), propmat_clearskyAddParticles(), and propmat_clearskyForceNegativeToZero().

◆ SetFaraday()

void PropagationMatrix::SetFaraday ( const Numeric rot,
const Index  iv = 0,
const Index  iz = 0,
const Index  ia = 0 
)
inline

Sets the Faraday rotation to the PropagationMatrix at required position.

No vector function exists since rot is a function of frequency

Parameters
[in]rotrotation
[in]ivFrequency index
[in]izZenith index
[in]iaAzimuth index

Definition at line 427 of file propagationmatrix.h.

References mdata, and mstokes_dim.

◆ SetZero()

void PropagationMatrix::SetZero ( )
inline

◆ StokesDimensions()

Member Data Documentation

◆ maa

◆ mdata

◆ mfreqs

◆ mstokes_dim

◆ mvectortype

bool PropagationMatrix::mvectortype {false}
protected

◆ mza


The documentation for this class was generated from the following files: