16 #error no need to expose this header to Swig
20 #ifndef BORNAGAIN_SAMPLE_RT_ILAYERRTCOEFFICIENTS_H
21 #define BORNAGAIN_SAMPLE_RT_ILAYERRTCOEFFICIENTS_H
38 virtual Eigen::Vector2cd
T1plus()
const = 0;
39 virtual Eigen::Vector2cd
R1plus()
const = 0;
40 virtual Eigen::Vector2cd
T2plus()
const = 0;
41 virtual Eigen::Vector2cd
R2plus()
const = 0;
42 virtual Eigen::Vector2cd
T1min()
const = 0;
43 virtual Eigen::Vector2cd
R1min()
const = 0;
44 virtual Eigen::Vector2cd
T2min()
const = 0;
45 virtual Eigen::Vector2cd
R2min()
const = 0;
47 virtual Eigen::Vector2cd
getKz()
const = 0;
53 throw std::runtime_error(
"ILayerRTCoefficients::"
54 "getScalarT(): coefficients are not scalar.");
58 throw std::runtime_error(
"ILayerRTCoefficients::"
59 "getScalarR(): coefficients are not scalar.");
63 throw std::runtime_error(
"ILayerRTCoefficients::"
64 "getScalarKz(): coefficients are not scalar.");
69 throw std::runtime_error(
"Only defined for Matrix coefficeints");
Defines complex_t, and a few elementary functions.
std::complex< double > complex_t
Include to deal with Eigen alignment centrally.
Interface to access reflection/transmission coefficients.
virtual Eigen::Matrix2cd getReflectionMatrix() const
virtual Eigen::Vector2cd T1plus() const =0
The following functions return the transmitted and reflected amplitudes for different incoming beam p...
virtual ILayerRTCoefficients * clone() const =0
virtual Eigen::Vector2cd R2plus() const =0
virtual Eigen::Vector2cd R1min() const =0
virtual complex_t getScalarT() const
Scalar value getters; these throw errors by default as they should only be used when the derived obje...
virtual Eigen::Vector2cd getKz() const =0
Returns z-part of the two wavevector eigenmodes.
virtual Eigen::Vector2cd R2min() const =0
virtual Eigen::Vector2cd R1plus() const =0
virtual Eigen::Vector2cd T1min() const =0
virtual Eigen::Vector2cd T2plus() const =0
virtual complex_t getScalarKz() const
virtual complex_t getScalarR() const
virtual ~ILayerRTCoefficients()
virtual Eigen::Vector2cd T2min() const =0