Skip to content
Snippets Groups Projects
Commit 89efbc9b authored by Beerwerth, Randolf's avatar Beerwerth, Randolf
Browse files

Switch Specular Strategies to consistend use of ISpecularStrategy::coeffs_t

parent 585142a4
No related branches found
No related tags found
No related merge requests found
......@@ -29,19 +29,19 @@ constexpr double magnetic_prefactor = PhysConsts::m_n * PhysConsts::g_factor_n *
constexpr complex_t I(0.0, 1.0);
}
SpecularMagneticStrategy::coeffs_t
ISpecularStrategy::coeffs_t
SpecularMagneticStrategy::Execute(const std::vector<Slice>& slices, const kvector_t& k) const
{
return Execute(slices, KzComputation::computeReducedKz(slices, k));
}
SpecularMagneticStrategy::coeffs_t
ISpecularStrategy::coeffs_t
SpecularMagneticStrategy::Execute(const std::vector<Slice>& slices, const std::vector<complex_t>& kz) const
{
if(slices.size() != kz.size())
throw std::runtime_error("Number of slices does not match the size of the kz-vector");
SpecularMagneticStrategy::coeffs_t result;
ISpecularStrategy::coeffs_t result;
for(auto& coeff : computeTR(slices, kz))
result.push_back( std::make_unique<MatrixRTCoefficients_v2>(coeff) );
......
......@@ -31,12 +31,12 @@ class BA_CORE_API_ SpecularMagneticStrategy : public ISpecularStrategy
public:
//! Computes refraction angle reflection/transmission coefficients
//! for given sliced multilayer and wavevector k
coeffs_t
ISpecularStrategy::coeffs_t
Execute(const std::vector<Slice>& slices, const kvector_t& k) const;
//! Computes refraction angle reflection/transmission coefficients
//! for given sliced multilayer and a set of kz projections corresponding to each slice
coeffs_t
ISpecularStrategy::coeffs_t
Execute(const std::vector<Slice>& slices, const std::vector<complex_t>& kz) const;
static std::vector<MatrixRTCoefficients_v2> computeTR(const std::vector<Slice>& slices,
......
......@@ -42,20 +42,20 @@ const LayerRoughness* GetBottomRoughness(const std::vector<Slice>& slices,
const double pi2_15 = std::pow(M_PI_2, 1.5);
} // namespace
SpecularScalarStrategy::coeffs_t
ISpecularStrategy::coeffs_t
SpecularScalarStrategy::Execute(const std::vector<Slice>& slices, const kvector_t& k) const
{
std::vector<complex_t> kz = KzComputation::computeReducedKz(slices, k);
return Execute(slices, kz);
}
SpecularScalarStrategy::coeffs_t
ISpecularStrategy::coeffs_t
SpecularScalarStrategy::Execute(const std::vector<Slice>& slices, const std::vector<complex_t>& kz) const
{
if(slices.size() != kz.size())
throw std::runtime_error("Number of slices does not match the size of the kz-vector");
SpecularScalarStrategy::coeffs_t result;
ISpecularStrategy::coeffs_t result;
for(auto& coeff : computeTR(slices, kz))
result.push_back( std::make_unique<ScalarRTCoefficients>(coeff) );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment