Skip to content
Snippets Groups Projects
Commit e6926882 authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Refactoring: leaf material implementations renamed

Redmine: #1871
parent 6c6e01e5
Branches
Tags
No related merge requests found
#include "WavelengthIndependentMaterial.h" #include "MaterialBySLDImpl.h"
#include "WavevectorInfo.h" #include "WavevectorInfo.h"
namespace namespace
...@@ -16,41 +16,41 @@ inline double getWlPrefactor(double wavelength) ...@@ -16,41 +16,41 @@ inline double getWlPrefactor(double wavelength)
} }
} }
WavelengthIndependentMaterial::WavelengthIndependentMaterial(const std::string& name, double sld, MaterialBySLDImpl::MaterialBySLDImpl(const std::string& name, double sld,
double abs_term, double abs_term,
kvector_t magnetization) kvector_t magnetization)
: MagneticMaterialImpl(name, magnetization), m_sld(sld), m_abs_term(abs_term) : MagneticMaterialImpl(name, magnetization), m_sld(sld), m_abs_term(abs_term)
{} {}
WavelengthIndependentMaterial* WavelengthIndependentMaterial::clone() const MaterialBySLDImpl* MaterialBySLDImpl::clone() const
{ {
return new WavelengthIndependentMaterial(*this); return new MaterialBySLDImpl(*this);
} }
complex_t WavelengthIndependentMaterial::refractiveIndex(double wavelength) const complex_t MaterialBySLDImpl::refractiveIndex(double wavelength) const
{ {
return std::sqrt(refractiveIndex2(wavelength)); return std::sqrt(refractiveIndex2(wavelength));
} }
complex_t WavelengthIndependentMaterial::refractiveIndex2(double wavelength) const complex_t MaterialBySLDImpl::refractiveIndex2(double wavelength) const
{ {
return 1.0 - getWlPrefactor(wavelength) * getSLD(m_sld, m_abs_term); return 1.0 - getWlPrefactor(wavelength) * getSLD(m_sld, m_abs_term);
} }
complex_t WavelengthIndependentMaterial::materialData() const complex_t MaterialBySLDImpl::materialData() const
{ {
return complex_t(m_sld, m_abs_term); return complex_t(m_sld, m_abs_term);
} }
complex_t WavelengthIndependentMaterial::scalarSubtrSLD(const WavevectorInfo& wavevectors) const complex_t MaterialBySLDImpl::scalarSubtrSLD(const WavevectorInfo& wavevectors) const
{ {
double wavelength = wavevectors.getWavelength(); double wavelength = wavevectors.getWavelength();
return 1.0 / getWlPrefactor(wavelength) - getSLD(m_sld, m_abs_term); return 1.0 / getWlPrefactor(wavelength) - getSLD(m_sld, m_abs_term);
} }
void WavelengthIndependentMaterial::print(std::ostream& ostr) const void MaterialBySLDImpl::print(std::ostream& ostr) const
{ {
ostr << "WavelengthIndependentMaterial:" << getName() << "<" << this << ">{ " ostr << "MaterialBySLD:" << getName() << "<" << this << ">{ "
<< "sld=" << m_sld << ", absorp_term=" << m_abs_term << "sld=" << m_sld << ", absorp_term=" << m_abs_term
<< ", B=" << magnetization() << "}"; << ", B=" << magnetization() << "}";
} }
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// //
// BornAgain: simulate and fit scattering at grazing incidence // BornAgain: simulate and fit scattering at grazing incidence
// //
//! @file Core/Material/WavelengthIndependentMaterial.h //! @file Core/Material/MaterialBySLDImpl.h
//! @brief Defines class WavelengthIndependentMaterial. //! @brief Defines class MaterialBySLDImpl.
//! //!
//! @homepage http://www.bornagainproject.org //! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING) //! @license GNU General Public License v3 or higher (see COPYING)
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
// //
// ************************************************************************** // // ************************************************************************** //
#ifndef WAVELENGTHINDEPENDENTMATERIAL_H_ #ifndef MATERIALBYSLDIMPL_H_
#define WAVELENGTHINDEPENDENTMATERIAL_H_ #define MATERIALBYSLDIMPL_H_
#include "MagneticMaterialImpl.h" #include "MagneticMaterialImpl.h"
#include "Material.h" #include "Material.h"
...@@ -22,15 +22,15 @@ ...@@ -22,15 +22,15 @@
//! Material implementation based on wavelength-independent data (valid for a range of wavelengths) //! Material implementation based on wavelength-independent data (valid for a range of wavelengths)
//! @ingroup materials //! @ingroup materials
class BA_CORE_API_ WavelengthIndependentMaterial : public MagneticMaterialImpl class BA_CORE_API_ MaterialBySLDImpl : public MagneticMaterialImpl
{ {
public: public:
friend BA_CORE_API_ Material MaterialBySLD(const std::string&, double, double, kvector_t); friend BA_CORE_API_ Material MaterialBySLD(const std::string&, double, double, kvector_t);
virtual ~WavelengthIndependentMaterial() = default; virtual ~MaterialBySLDImpl() = default;
//! Returns pointer to a copy of material //! Returns pointer to a copy of material
virtual WavelengthIndependentMaterial* clone() const override; virtual MaterialBySLDImpl* clone() const override;
//! Returns refractive index //! Returns refractive index
virtual complex_t refractiveIndex(double wavelength) const override; virtual complex_t refractiveIndex(double wavelength) const override;
...@@ -54,7 +54,7 @@ public: ...@@ -54,7 +54,7 @@ public:
virtual void print(std::ostream &ostr) const override; virtual void print(std::ostream &ostr) const override;
private: private:
WavelengthIndependentMaterial(const std::string& name, double sld, double abs_term, MaterialBySLDImpl(const std::string& name, double sld, double abs_term,
kvector_t magnetization); kvector_t magnetization);
double m_sld; //!< product of number density and coherent scattering length double m_sld; //!< product of number density and coherent scattering length
...@@ -63,4 +63,4 @@ private: ...@@ -63,4 +63,4 @@ private:
//!< absorption cross-section normalized to wavelength //!< absorption cross-section normalized to wavelength
}; };
#endif /* WAVELENGTHINDEPENDENTMATERIAL_H_ */ #endif /* MATERIALBYSLDIMPL_H_ */
#include "MaterialFactoryFuncs.h" #include "MaterialFactoryFuncs.h"
#include "RefractiveCoefMaterial.h" #include "MaterialBySLDImpl.h"
#include "WavelengthIndependentMaterial.h" #include "RefractiveMaterialImpl.h"
Material HomogeneousMaterial(const std::string& name, complex_t refractive_index, Material HomogeneousMaterial(const std::string& name, complex_t refractive_index,
kvector_t magnetization) kvector_t magnetization)
...@@ -13,8 +13,8 @@ Material HomogeneousMaterial(const std::string& name, complex_t refractive_index ...@@ -13,8 +13,8 @@ Material HomogeneousMaterial(const std::string& name, complex_t refractive_index
Material HomogeneousMaterial(const std::string& name, double delta, double beta, Material HomogeneousMaterial(const std::string& name, double delta, double beta,
kvector_t magnetization) kvector_t magnetization)
{ {
std::unique_ptr<RefractiveCoefMaterial> mat_impl( std::unique_ptr<RefractiveMaterialImpl> mat_impl(
new RefractiveCoefMaterial(name, delta, beta, magnetization)); new RefractiveMaterialImpl(name, delta, beta, magnetization));
return Material(std::move(mat_impl)); return Material(std::move(mat_impl));
} }
...@@ -26,8 +26,8 @@ Material HomogeneousMaterial() ...@@ -26,8 +26,8 @@ Material HomogeneousMaterial()
Material MaterialBySLD(const std::string& name, double sld, double abs_term, Material MaterialBySLD(const std::string& name, double sld, double abs_term,
kvector_t magnetization) kvector_t magnetization)
{ {
std::unique_ptr<WavelengthIndependentMaterial> mat_impl( std::unique_ptr<MaterialBySLDImpl> mat_impl(
new WavelengthIndependentMaterial(name, sld, abs_term, magnetization)); new MaterialBySLDImpl(name, sld, abs_term, magnetization));
return Material(std::move(mat_impl)); return Material(std::move(mat_impl));
} }
......
#include "RefractiveCoefMaterial.h" #include "RefractiveMaterialImpl.h"
#include "WavevectorInfo.h" #include "WavevectorInfo.h"
RefractiveCoefMaterial::RefractiveCoefMaterial(const std::string& name, double delta, double beta, RefractiveMaterialImpl::RefractiveMaterialImpl(const std::string& name, double delta, double beta,
kvector_t magnetization) kvector_t magnetization)
: MagneticMaterialImpl(name, magnetization) : MagneticMaterialImpl(name, magnetization)
, m_delta(delta) , m_delta(delta)
, m_beta(beta) , m_beta(beta)
{} {}
RefractiveCoefMaterial* RefractiveCoefMaterial::clone() const RefractiveMaterialImpl* RefractiveMaterialImpl::clone() const
{ {
return new RefractiveCoefMaterial(*this); return new RefractiveMaterialImpl(*this);
} }
complex_t RefractiveCoefMaterial::refractiveIndex(double) const complex_t RefractiveMaterialImpl::refractiveIndex(double) const
{ {
return complex_t(1.0 - m_delta, m_beta); return complex_t(1.0 - m_delta, m_beta);
} }
complex_t RefractiveCoefMaterial::refractiveIndex2(double) const complex_t RefractiveMaterialImpl::refractiveIndex2(double) const
{ {
complex_t result(1.0 - m_delta, m_beta); complex_t result(1.0 - m_delta, m_beta);
return result * result; return result * result;
} }
complex_t RefractiveCoefMaterial::materialData() const complex_t RefractiveMaterialImpl::materialData() const
{ {
return complex_t(m_delta, m_beta); return complex_t(m_delta, m_beta);
} }
complex_t RefractiveCoefMaterial::scalarSubtrSLD(const WavevectorInfo& wavevectors) const complex_t RefractiveMaterialImpl::scalarSubtrSLD(const WavevectorInfo& wavevectors) const
{ {
double wavelength = wavevectors.getWavelength(); double wavelength = wavevectors.getWavelength();
double prefactor = M_PI/wavelength/wavelength; double prefactor = M_PI/wavelength/wavelength;
return prefactor * refractiveIndex2(wavelength); return prefactor * refractiveIndex2(wavelength);
} }
void RefractiveCoefMaterial::print(std::ostream& ostr) const void RefractiveMaterialImpl::print(std::ostream& ostr) const
{ {
ostr << "RefractiveCoefMaterial:" << getName() << "<" << this << ">{ " ostr << "RefractiveMaterial:" << getName() << "<" << this << ">{ "
<< "delta=" << m_delta << ", beta=" << m_beta << "delta=" << m_delta << ", beta=" << m_beta
<< ", B=" << magnetization() << "}"; << ", B=" << magnetization() << "}";
} }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// //
// BornAgain: simulate and fit scattering at grazing incidence // BornAgain: simulate and fit scattering at grazing incidence
// //
//! @file Core/Material/RefractiveCoefMaterial.h //! @file Core/Material/RefractiveMaterialImpl.h
//! @brief Defines class RefractiveCoefMaterial. //! @brief Defines class RefractiveMaterialImpl.
//! //!
//! @homepage http://www.bornagainproject.org //! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING) //! @license GNU General Public License v3 or higher (see COPYING)
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
// //
// ************************************************************************** // // ************************************************************************** //
#ifndef REFRACTIVECOEFMATERIAL_H_ #ifndef REFRACTIVEMATERIALIMPL_H_
#define REFRACTIVECOEFMATERIAL_H_ #define REFRACTIVEMATERIALIMPL_H_
#include "MagneticMaterialImpl.h" #include "MagneticMaterialImpl.h"
#include "Material.h" #include "Material.h"
...@@ -22,16 +22,16 @@ ...@@ -22,16 +22,16 @@
//! Material implementation based on refractive coefficiencts (valid for one wavelength value only) //! Material implementation based on refractive coefficiencts (valid for one wavelength value only)
//! @ingroup materials //! @ingroup materials
class BA_CORE_API_ RefractiveCoefMaterial : public MagneticMaterialImpl class BA_CORE_API_ RefractiveMaterialImpl : public MagneticMaterialImpl
{ {
public: public:
friend BA_CORE_API_ Material HomogeneousMaterial(const std::string&, double, double, friend BA_CORE_API_ Material HomogeneousMaterial(const std::string&, double, double,
kvector_t); kvector_t);
virtual ~RefractiveCoefMaterial() = default; virtual ~RefractiveMaterialImpl() = default;
//! Returns pointer to a copy of material //! Returns pointer to a copy of material
virtual RefractiveCoefMaterial* clone() const override; virtual RefractiveMaterialImpl* clone() const override;
//! Returns refractive index //! Returns refractive index
//! For this particular implementation returned value does not depend //! For this particular implementation returned value does not depend
...@@ -62,11 +62,11 @@ public: ...@@ -62,11 +62,11 @@ public:
virtual void print(std::ostream &ostr) const override; virtual void print(std::ostream &ostr) const override;
private: private:
RefractiveCoefMaterial(const std::string& name, double delta, double beta, RefractiveMaterialImpl(const std::string& name, double delta, double beta,
kvector_t magnetization); kvector_t magnetization);
double m_delta; //!< \f$\delta\f$ coefficient for refractive index \f$n = 1 - \delta + i \beta\f$ double m_delta; //!< \f$\delta\f$ coefficient for refractive index \f$n = 1 - \delta + i \beta\f$
double m_beta; //!< \f$\beta\f$ coefficient for refractive index \f$n = 1 - \delta + i \beta\f$ double m_beta; //!< \f$\beta\f$ coefficient for refractive index \f$n = 1 - \delta + i \beta\f$
}; };
#endif /* REFRACTIVECOEFMATERIAL_H_ */ #endif /* REFRACTIVEMATERIALIMPL_H_ */
#include "MaterialFactoryFuncs.h" #include "MaterialFactoryFuncs.h"
#include "WavelengthIndependentMaterial.h" #include "MaterialBySLDImpl.h"
#include "RefractiveCoefMaterial.h" #include "RefractiveMaterialImpl.h"
#include "WavevectorInfo.h" #include "WavevectorInfo.h"
#include "Rotations.h" #include "Rotations.h"
#include "Units.h" #include "Units.h"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment