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);
54 std::vector<const INode*>
getChildren() const override final;
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...
void setLattice(const Lattice2D &lattice)
const Lattice2D & lattice() const
bool integrationOverXi() const
std::unique_ptr< Lattice2D > mP_lattice
unsigned m_size_2
Size of the finite lattice in lattice units.
InterferenceFunction2DSuperLattice(const Lattice2D &lattice, unsigned size_1, unsigned size_2)
std::unique_ptr< IInterferenceFunction > mP_substructure
IFF of substructure.
unsigned domainSize1() const
void setSubstructureIFF(const IInterferenceFunction &sub_iff)
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.
double interferenceForXi(double xi) const
bool m_integrate_xi
Integrate over the orientation xi.
double iff_without_dw(const kvector_t q) const override final
Calculates the structure factor without Debye-Waller factor.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
void setIntegrationOverXi(bool integrate_xi)
unsigned domainSize2() const
InterferenceFunction2DSuperLattice * clone() const override final
Returns a clone of this ISample object.
~InterferenceFunction2DSuperLattice() final
const IInterferenceFunction & substructureIFF() const
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).