15 #ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
16 #define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
30 unsigned size_1,
unsigned size_2);
41 unsigned size_1,
unsigned size_2);
43 unsigned size_1,
unsigned size_2);
46 unsigned domainSize1()
const {
return m_size_1; }
47 unsigned domainSize2()
const {
return m_size_2; }
49 void setIntegrationOverXi(
bool integrate_xi);
50 bool integrationOverXi()
const {
return m_integrate_xi; }
54 std::vector<const INode*>
getChildren() const override final;
57 double iff_without_dw(const
kvector_t q) const override final;
58 void setLattice(const
Lattice2D& lattice);
60 double interferenceForXi(
double xi) const;
65 unsigned m_size_1, m_size_2;
66 mutable
double m_outer_iff;
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.
Interference function of a 2D superlattice with a configurable interference function for each lattice...
double evaluate(const kvector_t q, double outer_iff=1.0) const override final
Evaluates the interference function for a given wavevector transfer.
static InterferenceFunction2DSuperLattice * createHexagonal(double lattice_length, double xi, unsigned size_1, unsigned size_2)
Creates hexagonal lattice.
static InterferenceFunction2DSuperLattice * createSquare(double lattice_length, double xi, unsigned size_1, unsigned size_2)
Creates square lattice.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
InterferenceFunction2DSuperLattice * clone() const override final
Returns a clone of this ISample object.
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).