BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{SpecularMagneticNewStrategy.cpp} Namespace Reference

Functions

double magneticSLD (kvector_t B_field)
 
Eigen::Vector2cd eigenvalues (complex_t kz, double b_mag)
 
Eigen::Vector2cd checkForUnderflow (const Eigen::Vector2cd &eigenvs)
 
const LayerRoughnessGetBottomRoughness (const std::vector< Slice > &slices, const size_t slice_index)
 

Variables

constexpr double magnetic_prefactor
 
const auto eps = std::numeric_limits<double>::epsilon() * 10.
 

Function Documentation

◆ magneticSLD()

double anonymous_namespace{SpecularMagneticNewStrategy.cpp}::magneticSLD ( kvector_t  B_field)

Definition at line 169 of file SpecularMagneticNewStrategy.cpp.

170 {
171  return magnetic_prefactor * B_field.mag();
172 }
constexpr double magnetic_prefactor
double mag() const
Returns magnitude of the vector.

References BasicVector3D< T >::mag(), and magnetic_prefactor.

Referenced by SpecularMagneticNewStrategy::computeTR().

Here is the call graph for this function:

◆ eigenvalues()

Eigen::Vector2cd anonymous_namespace{SpecularMagneticNewStrategy.cpp}::eigenvalues ( complex_t  kz,
double  b_mag 
)

Definition at line 174 of file SpecularMagneticNewStrategy.cpp.

175 {
176  const complex_t a = kz * kz;
177  return {std::sqrt(a - 4. * M_PI * magnetic_SLD), std::sqrt(a + 4. * M_PI * magnetic_SLD)};
178 }
std::complex< double > complex_t
Definition: Complex.h:20
#define M_PI
Definition: MathConstants.h:39

References M_PI.

Referenced by SpecularMagneticNewStrategy::computeTR().

◆ checkForUnderflow()

Eigen::Vector2cd anonymous_namespace{SpecularMagneticNewStrategy.cpp}::checkForUnderflow ( const Eigen::Vector2cd &  eigenvs)

Definition at line 180 of file SpecularMagneticNewStrategy.cpp.

181 {
182  auto lambda = [](complex_t value) { return std::abs(value) < 1e-40 ? 1e-40 : value; };
183  return {lambda(eigenvs(0)), lambda(eigenvs(1))};
184 }

Referenced by SpecularMagneticNewStrategy::computeTR().

◆ GetBottomRoughness()

const LayerRoughness * anonymous_namespace{SpecularMagneticNewStrategy.cpp}::GetBottomRoughness ( const std::vector< Slice > &  slices,
const size_t  slice_index 
)

Definition at line 186 of file SpecularMagneticNewStrategy.cpp.

187 {
188  if (slice_index + 1 < slices.size())
189  return slices[slice_index + 1].topRoughness();
190  return nullptr;
191 }

Referenced by SpecularMagneticNewStrategy::calculateUpwards().

Variable Documentation

◆ magnetic_prefactor

constexpr double anonymous_namespace{SpecularMagneticNewStrategy.cpp}::magnetic_prefactor
constexpr
Initial value:
constexpr double g_factor_n
neutron g-factor
constexpr double h_bar
Reduced Plank constant, J s.
constexpr double m_n
Neutron mass, kg.
constexpr double mu_N
Nuclear magneton ( ), J/T.

Definition at line 28 of file SpecularMagneticNewStrategy.cpp.

◆ eps

const auto anonymous_namespace{SpecularMagneticNewStrategy.cpp}::eps = std::numeric_limits<double>::epsilon() * 10.