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

Functions

kvector_t magneticImpact (kvector_t B_field)
 
Eigen::Vector2cd eigenvalues (complex_t kz, double b_mag)
 
Eigen::Vector2cd checkForUnderflow (const Eigen::Vector2cd &eigenvs)
 
complex_t GetImExponential (complex_t exponent)
 

Variables

constexpr double magnetic_prefactor
 

Function Documentation

◆ magneticImpact()

kvector_t anonymous_namespace{SpecularMagneticStrategy.cpp}::magneticImpact ( kvector_t  B_field)

Definition at line 265 of file SpecularMagneticStrategy.cpp.

266 {
267  return -magnetic_prefactor * B_field;
268 }
constexpr double magnetic_prefactor

References magnetic_prefactor.

Referenced by SpecularMagneticStrategy::computeTR().

◆ eigenvalues()

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

Definition at line 270 of file SpecularMagneticStrategy.cpp.

271 {
272  const complex_t a = kz * kz;
273  return {I * std::sqrt(a + b_mag), I * std::sqrt(a - b_mag)};
274 }
constexpr complex_t I
Definition: Complex.h:21
std::complex< double > complex_t
Definition: Complex.h:20

References I.

Referenced by SpecularMagneticStrategy::computeTR().

◆ checkForUnderflow()

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

Definition at line 276 of file SpecularMagneticStrategy.cpp.

277 {
278  auto lambda = [](complex_t value) { return std::abs(value) < 1e-40 ? 1e-40 : value; };
279  return {lambda(eigenvs(0)), lambda(eigenvs(1))};
280 }

Referenced by SpecularMagneticStrategy::computeTR().

◆ GetImExponential()

complex_t anonymous_namespace{SpecularMagneticStrategy.cpp}::GetImExponential ( complex_t  exponent)

Definition at line 282 of file SpecularMagneticStrategy.cpp.

283 {
284  if (exponent.imag() > -std::log(std::numeric_limits<double>::min()))
285  return 0.0;
286  return std::exp(I * exponent);
287 }

References I.

Referenced by SpecularMagneticStrategy::propagateBackwardsForwards().

Variable Documentation

◆ magnetic_prefactor

constexpr double anonymous_namespace{SpecularMagneticStrategy.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 SpecularMagneticStrategy.cpp.