Definition at line 102 of file IPositionBuilder.h.
|
std::unique_ptr< InterferenceFinite2DLattice > | m_iff |
|
◆ Finite2DLatticePositionBuilder()
Finite2DLatticePositionBuilder::Finite2DLatticePositionBuilder |
( |
const InterferenceFinite2DLattice * |
p_iff | ) |
|
◆ ~Finite2DLatticePositionBuilder()
Finite2DLatticePositionBuilder::~Finite2DLatticePositionBuilder |
( |
| ) |
|
|
overridedefault |
◆ generatePositions()
std::vector< std::vector< double > > IPositionBuilder::generatePositions |
( |
double |
layer_size, |
|
|
double |
density = 0.0 |
|
) |
| const |
|
inherited |
Definition at line 29 of file IPositionBuilder.cpp.
36 std::random_device rd;
37 std::mt19937 gen(rd());
38 std::normal_distribution<double> dis(0.0, std::sqrt(pos_var));
39 for (
auto& position : positions) {
40 for (
auto& coordinate : position)
41 coordinate += dis(gen);
virtual std::vector< std::vector< double > > generatePositionsImpl(double layer_size, double density=0.0) const =0
virtual double positionVariance() const =0
References IPositionBuilder::generatePositionsImpl(), and IPositionBuilder::positionVariance().
◆ generatePositionsImpl()
std::vector< std::vector< double > > Finite2DLatticePositionBuilder::generatePositionsImpl |
( |
double |
layer_size, |
|
|
double |
density = 0.0 |
|
) |
| const |
|
overrideprivatevirtual |
Implements IPositionBuilder.
Definition at line 185 of file IPositionBuilder.cpp.
187 const auto& lattice =
m_iff->lattice();
188 double l1 = lattice.length1();
189 double l2 = lattice.length2();
190 double alpha = lattice.latticeAngle();
191 double xi = lattice.rotationAngle();
194 double sina = std::abs(std::sin(alpha));
196 n1 = l1 == 0.0 ? 2 :
static_cast<unsigned>(2.0 * layer_size * std::sqrt(2.0) / l1);
197 n2 = l2 == 0.0 ? 2 :
static_cast<unsigned>(2.0 * layer_size * std::sqrt(2.0) / l2);
199 n1 = l1 == 0.0 ? 2 :
static_cast<unsigned>(2.0 * layer_size * std::sqrt(2.0) / l1 / sina);
200 n2 = l2 == 0.0 ? 2 :
static_cast<unsigned>(2.0 * layer_size * std::sqrt(2.0) / l2 / sina);
202 n1 = std::min(n1,
m_iff->numberUnitCells1());
203 n2 = std::min(n2,
m_iff->numberUnitCells2());
205 return Generate2DLatticePoints(l1, l2, alpha, xi, n1, n2);
References m_iff.
◆ positionVariance()
double Finite2DLatticePositionBuilder::positionVariance |
( |
| ) |
const |
|
overrideprivatevirtual |
◆ m_iff
std::unique_ptr<InterferenceFinite2DLattice> Finite2DLatticePositionBuilder::m_iff |
|
private |
The documentation for this class was generated from the following files: