15 #ifndef BORNAGAIN_CORE_LATTICE_LATTICE_H
16 #define BORNAGAIN_CORE_LATTICE_LATTICE_H
101 void registerBasisVectors();
103 std::vector<kvector_t> vectorsWithinRadius(
const kvector_t input_vector,
104 const ivector_t& nearest_coords,
double radius,
109 void computeReciprocalVectors()
const;
116 mutable bool m_cache_ok;
Visitor interface to visit ISample objects.
Base class for tree-like structures containing parameterized objects.
Pure virtual base class for selection rules.
A lattice with three basis vectors.
void resetBasis(const kvector_t a1, const kvector_t a2, const kvector_t a3)
Resets the basis vectors.
ivector_t getNearestLatticeVectorCoordinates(const kvector_t vector_in) const
Returns the nearest lattice point from a given vector.
ivector_t getNearestReciprocalLatticeVectorCoordinates(const kvector_t vector_in) const
Returns the nearest reciprocal lattice point from a given vector.
void setSelectionRule(const ISelectionRule &p_selection_rule)
Sets a selection rule for the reciprocal vectors.
kvector_t getMillerDirection(double h, double k, double l) const
Returns normalized direction corresponding to the given Miller indices.
static Lattice createHCPLattice(double a, double c)
TODO: Clarify how this is meant: HCP is not a Bravais lattice.
void initialize() const
Initializes cached data.
kvector_t getBasisVectorB() const
Returns basis vector b.
static Lattice createBCTLattice(double a, double c)
Returns a body-centered cubic (cI) lattice with edge length a.
std::vector< kvector_t > reciprocalLatticeVectorsWithinRadius(const kvector_t input_vector, double radius) const
Computes a list of reciprocal lattice vectors within a specified distance of a given vector.
kvector_t getBasisVectorC() const
Returns basis vector c.
void accept(INodeVisitor *visitor) const override
Calls the INodeVisitor's visit method.
Lattice createTransformedLattice(const Transform3D &transform) const
Creates transformed lattice.
double volume() const
Returns the volume of the unit cell.
static Lattice createTetragonalLattice(double a, double c)
Returns a primitive tetragonal (tP) lattice with square base edge a and height c.
kvector_t getBasisVectorA() const
Returns basis vector a.
static Lattice createFCCLattice(double a)
Returns a face-centered cubic (cF) lattice with edge length a.
static Lattice createHexagonalLattice(double a, double c)
Returns a primitive hexagonal (hP) lattice with hexagonal edge a and height c.
static Lattice createCubicLattice(double a)
Returns a primitive cubic (cP) lattice with edge length a.
void getReciprocalLatticeBasis(kvector_t &b1, kvector_t &b2, kvector_t &b3) const
Returns the reciprocal basis vectors.
void onChange() override
Action to be taken in inherited class when a parameter has changed.