BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
LatticeUtils Namespace Reference

Functions

Lattice createFCCLattice (double lattice_constant, const ILatticeOrientation &orientation)
 
Lattice createHCPLattice (double a, double c, const ILatticeOrientation &orientation)
 
Lattice createBCTLattice (double a, double c, const ILatticeOrientation &orientation)
 

Function Documentation

◆ createFCCLattice()

Lattice LatticeUtils::createFCCLattice ( double  lattice_constant,
const ILatticeOrientation orientation 
)

Definition at line 18 of file LatticeUtils.cpp.

20 {
21  Lattice prim_cubic = Lattice::createCubicLattice(1.0);
22  std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone());
23  P_orientation->usePrimitiveLattice(prim_cubic);
24  auto rotation = P_orientation->transformationMatrix();
25  Lattice fcc = Lattice::createFCCLattice(lattice_constant);
26  return fcc.createTransformedLattice(rotation);
27 }
virtual ILatticeOrientation * clone() const =0
A lattice with three basis vectors.
Definition: Lattice.h:28
Lattice createTransformedLattice(const Transform3D &transform) const
Creates transformed lattice.
Definition: Lattice.cpp:55
static Lattice createFCCLattice(double a)
Returns a face-centered cubic (cF) lattice with edge length a.
Definition: Lattice.cpp:144
static Lattice createCubicLattice(double a)
Returns a primitive cubic (cP) lattice with edge length a.
Definition: Lattice.cpp:136

References ILatticeOrientation::clone(), Lattice::createCubicLattice(), Lattice::createFCCLattice(), and Lattice::createTransformedLattice().

Here is the call graph for this function:

◆ createHCPLattice()

Lattice LatticeUtils::createHCPLattice ( double  a,
double  c,
const ILatticeOrientation orientation 
)

Definition at line 29 of file LatticeUtils.cpp.

30 {
31  Lattice prim_hexagonal = Lattice::createHexagonalLattice(1.0, c / a);
32  std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone());
33  P_orientation->usePrimitiveLattice(prim_hexagonal);
34  auto rotation = P_orientation->transformationMatrix();
36  return hcp.createTransformedLattice(rotation);
37 }
static Lattice createHCPLattice(double a, double c)
TODO: Clarify how this is meant: HCP is not a Bravais lattice.
Definition: Lattice.cpp:161
static Lattice createHexagonalLattice(double a, double c)
Returns a primitive hexagonal (hP) lattice with hexagonal edge a and height c.
Definition: Lattice.cpp:153

References ILatticeOrientation::clone(), Lattice::createHCPLattice(), Lattice::createHexagonalLattice(), and Lattice::createTransformedLattice().

Here is the call graph for this function:

◆ createBCTLattice()

Lattice LatticeUtils::createBCTLattice ( double  a,
double  c,
const ILatticeOrientation orientation 
)

Definition at line 39 of file LatticeUtils.cpp.

40 {
41  Lattice prim_tetragonal = Lattice::createTetragonalLattice(1.0, c / a);
42  std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone());
43  P_orientation->usePrimitiveLattice(prim_tetragonal);
44  auto rotation = P_orientation->transformationMatrix();
46  return hcp.createTransformedLattice(rotation);
47 }
static Lattice createBCTLattice(double a, double c)
Returns a body-centered cubic (cI) lattice with edge length a.
Definition: Lattice.cpp:177
static Lattice createTetragonalLattice(double a, double c)
Returns a primitive tetragonal (tP) lattice with square base edge a and height c.
Definition: Lattice.cpp:169

References ILatticeOrientation::clone(), Lattice::createBCTLattice(), Lattice::createTetragonalLattice(), and Lattice::createTransformedLattice().

Here is the call graph for this function: