15 #ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCE2DSUPERLATTICE_H
16 #define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCE2DSUPERLATTICE_H
29 unsigned size_1,
unsigned size_2);
33 std::string
className() const final {
return "Interference2DSuperLattice"; }
34 std::vector<ParaMeta>
parDefs() const final
36 return {{
"Length1",
"nm",
"lattice constant 1", 0, +
INF, 0},
37 {
"Length2",
"nm",
"lattice constant 2", 0, +
INF, 0},
38 {
"Alpha",
"rad",
"angle between lattice vectors 1 and 2", -
INF, +
INF, 0},
39 {
"Xi",
"rad",
"angle between x axis and lattice vector 1", -
INF, +
INF, 0}};
60 double interferenceForXi(
double xi,
double qx,
double qy,
double outer_iff)
const;
Defines and implements the interface class IInterference.
Defines classes of Lattice2D family.
Abstract base class of interference functions.
Interference function of a 2D superlattice with a configurable interference function for each lattice...
~Interference2DSuperLattice() override
void setSubstructureIFF(const IInterference &sub_iff)
std::vector< const INode * > nodeChildren() const override
Returns all children.
unsigned domainSize2() const
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
unsigned domainSize1() const
double iff_without_dw(R3 q) const override
Calculates the structure factor without Debye-Waller factor.
Interference2DSuperLattice * clone() const override
std::unique_ptr< IInterference > m_substructure
IFF of substructure.
void setIntegrationOverXi(bool integrate_xi)
const Lattice2D & lattice() const
unsigned m_size_2
Size of the finite lattice in lattice units.
bool m_integrate_xi
Integrate over the orientation xi.
double interferenceForXi(double xi, double qx, double qy, double outer_iff) const
const IInterference & substructureIFF() const
Interference2DSuperLattice(const Lattice2D &lattice, unsigned size_1, unsigned size_2)
bool integrationOverXi() const
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
std::unique_ptr< Lattice2D > m_lattice
double structureFactor(R3 q, double outer_iff=1.0) const override
The interference function for a given wavevector transfer.
A two-dimensional Bravais lattice.