"git@jugit.fz-juelich.de:mlz/bornagain.git" did not exist on "9a54c950f10d2d7f0862221a7d804457dfc2bcf6"
Newer
Older
Van Herck, Walter
committed
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file Algorithms/inc/ILayerRTCoefficients.h
//! @brief Defines class ILayerRTCoefficients.
//!
//! @homepage http://apps.jcns.fz-juelich.de/BornAgain
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2013
//! @authors Scientific Computing Group at MLZ Garching
//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
//
// ************************************************************************** //
#ifndef ILAYERRTCOEFFICIENTS_H_
#define ILAYERRTCOEFFICIENTS_H_
Van Herck, Walter
committed
#include "Types.h"
Van Herck, Walter
committed
//! @class ILayerRTCoefficients
//! @ingroup algorithms_internal
//! @brief Interface to access reflection/transmition coefficients
Van Herck, Walter
committed
class ILayerRTCoefficients
{
public:
virtual ~ILayerRTCoefficients() {}
#ifndef GCCXML_SKIP_THIS
Van Herck, Walter
committed
//! The following functions return the transmitted and reflected amplitudes
//! for different incoming beam polarizations and eigenmodes
Van Herck, Walter
committed
virtual Eigen::Vector2cd T1plus() const=0;
virtual Eigen::Vector2cd R1plus() const=0;
virtual Eigen::Vector2cd T2plus() const=0;
virtual Eigen::Vector2cd R2plus() const=0;
virtual Eigen::Vector2cd T1min() const=0;
virtual Eigen::Vector2cd R1min() const=0;
virtual Eigen::Vector2cd T2min() const=0;
virtual Eigen::Vector2cd R2min() const=0;
//! Returns z-part of the two wavevector eigenmodes
virtual Eigen::Vector2cd getKz() const=0;
Van Herck, Walter
committed
//! Scalar value getters; these throw errors by default as they should only
//! be used when the derived object is really scalar
virtual complex_t getScalarT() const {
throw Exceptions::NotImplementedException("ILayerRTCoefficients::"
"getScalarT(): coefficients are not scalar.");
}
virtual complex_t getScalarR() const {
throw Exceptions::NotImplementedException("ILayerRTCoefficients::"
"getScalarR(): coefficients are not scalar.");
}
virtual complex_t getScalarKz() const {
throw Exceptions::NotImplementedException("ILayerRTCoefficients::"
"getScalarKz(): coefficients are not scalar.");
}
#endif
Van Herck, Walter
committed
};
#endif /* ILAYERRTCOEFFICIENTS_H_ */