BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SpecularMagneticStrategy_v1 Class Reference

Implements the matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. More...

Inheritance diagram for SpecularMagneticStrategy_v1:
[legend]
Collaboration diagram for SpecularMagneticStrategy_v1:
[legend]

Public Types

using coefficient_pointer_type = std::unique_ptr< const coefficient_type >
 
using coefficient_type = MatrixRTCoefficients_v1
 
using coeffs_t = std::vector< coefficient_pointer_type >
 

Public Member Functions

virtual std::variant< complex_t, Eigen::Matrix2cd > computeTopLayerR (const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const override
 
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 wavevector k. More...
 
ISpecularStrategy::coeffs_t Execute (const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const
 

Detailed Description

Implements the matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization.

Definition at line 34 of file SpecularMagneticStrategy_v1.h.

Member Typedef Documentation

◆ coefficient_pointer_type

◆ coefficient_type

◆ coeffs_t

Member Function Documentation

◆ computeTopLayerR()

std::variant< complex_t, Eigen::Matrix2cd > SpecularMagneticStrategy_v1::computeTopLayerR ( const std::vector< Slice > &  slices,
const std::vector< complex_t > &  kz 
) const
overridevirtual

Implements ISpecularStrategy.

Definition at line 53 of file SpecularMagneticStrategy_v1.cpp.

55 {
56  throw std::runtime_error("Not implemented");
57 }

◆ Execute() [1/2]

ISpecularStrategy::coeffs_t SpecularMagneticStrategy_v1::Execute ( const std::vector< Slice > &  slices,
const kvector_t k 
) const
virtual

Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k.

Implements ISpecularStrategy.

Definition at line 32 of file SpecularMagneticStrategy_v1.cpp.

34 {
35  std::vector<MatrixRTCoefficients_v1> result(slices.size());
36  CalculateEigenvalues(slices, k, result);
37  CalculateTransferAndBoundary(slices, result);
38 
39  ISpecularStrategy::coeffs_t resultConvert;
40  for (auto& coeff : result)
41  resultConvert.push_back(std::make_unique<MatrixRTCoefficients_v1>(coeff));
42 
43  return resultConvert;
44 }
std::vector< std::unique_ptr< const ILayerRTCoefficients > > coeffs_t

◆ Execute() [2/2]

ISpecularStrategy::coeffs_t SpecularMagneticStrategy_v1::Execute ( const std::vector< Slice > &  slices,
const std::vector< complex_t > &  kz 
) const
virtual

Implements ISpecularStrategy.

Definition at line 47 of file SpecularMagneticStrategy_v1.cpp.

48 {
49  throw std::runtime_error("Not implemented");
50 }

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