BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
MaterialBySLDImpl.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sample/Material/MaterialBySLDImpl.h
6 //! @brief Defines class MaterialBySLDImpl.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifdef SWIG
16 #error no need to expose this header to Swig
17 #endif
18 
19 #ifndef USER_API
20 #ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
21 #define BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
22 
25 
26 //! Material implementation based on wavelength-independent data (valid for a range of wavelengths)
27 //! @ingroup materials
28 
30 public:
31  friend Material MaterialBySLD(const std::string& name, double sld_real, double sld_imag,
32  R3 magnetization);
33 
34  ~MaterialBySLDImpl() override = default;
35 
36  //! Returns pointer to a copy of material
37  MaterialBySLDImpl* clone() const override;
38 
39  //! Returns refractive index
40  complex_t refractiveIndex(double wavelength) const override;
41 
42  //! Returns squared refractive index
43  complex_t refractiveIndex2(double wavelength) const override;
44 
45  //! Returns underlying material data
46  complex_t materialData() const override;
47 
48  //! Returns type of material implementation
50 
51  //! Returns (\f$ \pi/\lambda^2 \f$ - sld), sld (in \f$nm^{-2}\f$) being the scattering length
52  //! density
53  complex_t scalarSubtrSLD(double lambda0) const override;
54 
55  //! Prints object data
56  std::string print() const override;
57 
58 private:
59  //! Constructs a wavelength-independent material with a given complex-valued
60  //! scattering length density (SLD). SLD units are \f$ nm^{-2} \f$.
61  MaterialBySLDImpl(const std::string& name, double sld_real, double sld_imag, R3 magnetization);
62  //! Returns the scattering length density
63  complex_t sld() const;
64 
65  const double m_sld_real; //!< complex-valued scattering length density
66  const double m_sld_imag; //!< imaginary part of scattering length density (negative by default)
67 };
68 
69 #endif // BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
70 #endif // USER_API
MATERIAL_TYPES
Defines magnetic material base implementation.
Factory functions used to create material instances.
Basic implementation for magnetized material. Inherited by RefractiveMaterialImpl and MaterialBySLDIm...
R3 magnetization() const override
Returns the magnetization (in A/m)
Material implementation based on wavelength-independent data (valid for a range of wavelengths)
complex_t sld() const
Returns the scattering length density.
~MaterialBySLDImpl() override=default
MATERIAL_TYPES typeID() const override
Returns type of material implementation.
const double m_sld_imag
imaginary part of scattering length density (negative by default)
complex_t refractiveIndex2(double wavelength) const override
Returns squared refractive index.
complex_t scalarSubtrSLD(double lambda0) const override
Returns ( - sld), sld (in ) being the scattering length density.
const double m_sld_real
complex-valued scattering length density
std::string print() const override
Prints object data.
MaterialBySLDImpl(const std::string &name, double sld_real, double sld_imag, R3 magnetization)
Constructs a wavelength-independent material with a given complex-valued scattering length density (S...
complex_t refractiveIndex(double wavelength) const override
Returns refractive index.
friend Material MaterialBySLD(const std::string &name, double sld_real, double sld_imag, R3 magnetization)
complex_t materialData() const override
Returns underlying material data.
MaterialBySLDImpl * clone() const override
Returns pointer to a copy of material.
A wrapper for underlying material implementation.
Definition: Material.h:35