15 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
16 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
29 unsigned N_1,
unsigned N_2);
37 unsigned N_1,
unsigned N_2);
39 unsigned N_1,
unsigned N_2);
Defines and implements the interface class IInterferenceFunction.
Defines classes of Lattice2D family.
Pure virtual base class of interference functions.
Visitor interface to visit ISample objects.
Base class for tree-like structures containing parameterized objects.
Interference function of a finite 2D lattice.
void setIntegrationOverXi(bool integrate_xi)
bool m_integrate_xi
Integrate over the orientation xi.
bool integrationOverXi() const
unsigned m_N_2
Size of the finite lattice in lattice units.
InterferenceFunctionFinite2DLattice(const Lattice2D &lattice, unsigned N_1, unsigned N_2)
Constructor of two-dimensional finite lattice interference function.
const Lattice2D & lattice() const
double interferenceForXi(double xi) const
void setLattice(const Lattice2D &lattice)
~InterferenceFunctionFinite2DLattice() final
InterferenceFunctionFinite2DLattice * clone() const override final
Returns a clone of this ISample object.
unsigned numberUnitCells1() const
std::unique_ptr< Lattice2D > mP_lattice
double getParticleDensity() const override final
Returns the particle density associated with this 2d lattice.
unsigned numberUnitCells2() const
static InterferenceFunctionFinite2DLattice * createSquare(double lattice_length, double xi, unsigned N_1, unsigned N_2)
Creates square lattice.
static InterferenceFunctionFinite2DLattice * createHexagonal(double lattice_length, double xi, unsigned N_1, unsigned N_2)
Creates hexagonal lattice.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
double iff_without_dw(const kvector_t q) const override final
Calculates the structure factor without Debye-Waller factor.