ARTS 2.5.4 (git: 31ce4f0e)
propagationmatrix.cc File Reference

Stuff related to the propagation matrix. More...

#include "propagationmatrix.h"
#include "arts_omp.h"
#include "lin_alg.h"

Go to the source code of this file.

## Functions

void compute_transmission_matrix (Tensor3View T, const Numeric &r, const PropagationMatrix &upper_level, const PropagationMatrix &lower_level, const Index iz, const Index ia)
Compute the matrix exponent as the transmission matrix of this propagation matrix. More...

void compute_transmission_matrix_from_averaged_matrix_at_frequency (MatrixView T, const Numeric &r, const PropagationMatrix &averaged_propagation_matrix, const Index iv, const Index iz, const Index ia)
Compute the matrix exponent as the transmission matrix of this propagation matrix. More...

void compute_transmission_matrix_and_derivative (Tensor3View T, Tensor4View dT_dx_upper_level, Tensor4View dT_dx_lower_level, const Numeric &r, const PropagationMatrix &upper_level, const PropagationMatrix &lower_level, const ArrayOfPropagationMatrix &dupper_level_dx, const ArrayOfPropagationMatrix &dlower_level_dx, const Numeric &dr_dTu, const Numeric &dr_dTl, const Index it, const Index iz, const Index ia)

std::ostream & operator<< (std::ostream &os, const PropagationMatrix &pm)

std::ostream & operator<< (std::ostream &os, const StokesVector &sv)

## Detailed Description

Stuff related to the propagation matrix.

Date
2017-06-23

The reason is that the naive approach to keep the full propagation matrix is memory intensive and slow

Definition in file propagationmatrix.cc.

## ◆ compute_transmission_matrix()

 void compute_transmission_matrix ( Tensor3View T, const Numeric & r, const PropagationMatrix & upper_level, const PropagationMatrix & lower_level, const Index iz = 0, const Index ia = 0 )

Compute the matrix exponent as the transmission matrix of this propagation matrix.

The propagation matrix is multiplied by -r and level-averaged before exponent is applied.

upper_level and lower_level propagation matrices should thus be the level matrices and r the distance between these levels. The same is true for the derivative matrices.

Stokes dim 1 and 4 have been tested more. Stokes dim 2 and 3 have been found to work but could still have hidden errors for uncommon cases

Parameters
 [in,out] T transmission tensor with outmost dimension being frequency [in] r the distance over which the propagation matrix causes the transmission [in] upper_level The upper level propagation matrix [in] lower_level The lower level propagation matrix [in] iz Zenith index [in] ia Azimuth index

Definition at line 33 of file propagationmatrix.cc.

## ◆ compute_transmission_matrix_and_derivative()

 void compute_transmission_matrix_and_derivative ( Tensor3View T, Tensor4View dT_upper_level, Tensor4View dT_lower_level, const Numeric & r, const PropagationMatrix & upper_level, const PropagationMatrix & lower_level, const Array< PropagationMatrix > & dprop_mat_upper_level, const Array< PropagationMatrix > & dprop_mat_lower_level, const Numeric & dr_dTu = 0.0, const Numeric & dr_dTl = 0.0, const Index it = -1, const Index iz = 0, const Index ia = 0 )

Compute the matrix exponent as the transmission matrix of this propagation matrix

The propagation matrix is multiplied by -r and level-averaged before exponent is applied.

upper_level and lower_level propagation matrices should thus be the level matrices and r the distance between these levels. The same is true for the derivative matrices.

Stokes dim 1 and 4 have been tested more. Stokes dim 2 and 3 have been found to work but could still have hidden errors for uncommon cases

Parameters
 [in,out] T transmission tensor with outmost dimension being frequency [in,out] dT_upp transmission tensors derivative with respect to derivatives of the propagation matrix for upper level [in,out] dT_low transmission tensors derivative with respect to derivatives of the propagation matrix for lower level [in] r the distance over which the propagation matrix causes the transmission [in] upper_level The upper level propagation matrix [in] lower_level The lower level propagation matrix [in] dprop_mat_upp derivatives of the upper propagation matrix with respect to some parameter (is multiplied by -0.5 r) [in] dprop_mat_low derivatives of the lower propagation matrix with respect to some parameter (is multiplied by -0.5 r) [in] dr_dTu Distance temperature derivative for upper level [in] dr_dTl Distance temperature derivative for lower level [in] it Position of temperature derivative (ignored at -1) [in] iz Zenith index [in] ia Azimuth index

Definition at line 478 of file propagationmatrix.cc.

## ◆ compute_transmission_matrix_from_averaged_matrix_at_frequency()

 void compute_transmission_matrix_from_averaged_matrix_at_frequency ( MatrixView T, const Numeric & r, const PropagationMatrix & averaged_propagation_matrix, const Index iv, const Index iz = 0, const Index ia = 0 )

Compute the matrix exponent as the transmission matrix of this propagation matrix.

The propagation matrix is multiplied by -r and level-averaged before exponent is applied.

Stokes dim 1 and 4 have been tested more. Stokes dim 2 and 3 have been found to work but could still have hidden errors for uncommon cases

Parameters
 [in,out] T transmission matrix at the position [in] r the distance over which the propagation matrix causes the transmission [in] averaged_propagation_matrix The propagation matrix [in] iv Frequency index [in] iz Zenith index [in] ia Azimuth index

Definition at line 272 of file propagationmatrix.cc.

Referenced by rte_step_doit_replacement().

## ◆ operator<<() [1/2]

 std::ostream & operator<< ( std::ostream & os, const PropagationMatrix & pm )

Definition at line 2037 of file propagationmatrix.cc.

## ◆ operator<<() [2/2]

 std::ostream & operator<< ( std::ostream & os, const StokesVector & sv )

Definition at line 2043 of file propagationmatrix.cc.