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);
41 unsigned numberUnitCells1()
const {
return m_N_1; }
42 unsigned numberUnitCells2()
const {
return m_N_2; }
44 void setIntegrationOverXi(
bool integrate_xi);
45 bool integrationOverXi()
const {
return m_integrate_xi; }
55 double iff_without_dw(const
kvector_t q) const override final;
56 void setLattice(const
Lattice2D& lattice);
58 double interferenceForXi(
double xi) const;
62 unsigned m_N_1, m_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.
InterferenceFunctionFinite2DLattice(const Lattice2D &lattice, unsigned N_1, unsigned N_2)
Constructor of two-dimensional finite lattice interference function.
InterferenceFunctionFinite2DLattice * clone() const override final
Returns a clone of this ISample object.
double getParticleDensity() const override final
Returns the particle density associated with this 2d lattice.
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).