Go to the documentation of this file.
18 namespace LatticeModelFactory {
19 struct LatticeUnitCell;
20 struct SpinModelUnitCell;
52 LatticeOverlap() : rid1(
nullptr), rid2(
nullptr), transformedX1(
nullptr), transformedY1(
nullptr), transformedZ1(
nullptr), transformedX2(
nullptr), transformedY2(
nullptr), transformedZ2(
nullptr),
size(0) {}
78 memcpy(rid1, rhs.rid1,
size *
sizeof(
int));
79 memcpy(rid2, rhs.rid2,
size *
sizeof(
int));
106 delete[] transformedX1;
107 delete[] transformedY1;
108 delete[] transformedZ1;
109 delete[] transformedX2;
110 delete[] transformedY2;
111 delete[] transformedZ2;
124 rid1 =
new int[
size];
125 memcpy(rid1, rhs.rid1,
size *
sizeof(
int));
127 rid2 =
new int[
size];
128 memcpy(rid2, rhs.rid2,
size *
sizeof(
int));
129 delete[] transformedX1;
132 delete[] transformedY1;
135 delete[] transformedZ1;
138 delete[] transformedX2;
141 delete[] transformedY2;
144 delete[] transformedZ2;
432 ASSERT(&spinComponent1 != &spinComponent2);
453 ASSERT(&spinComponent1 != &spinComponent2);
454 ASSERT(&spinComponent2 != &spinComponent3);
455 ASSERT(&spinComponent1 != &spinComponent3);
536 std::vector<geometry::Vec3<double> >
_basis;
#define ASSERT(...)
Ensure that the first argument is true. Optionally provide a message as the second argument,...
Definition: Assert.hpp:26
SpinComponent spinPermutation[3]
Spin permutation involved in the transformation.
Definition: Lattice.hpp:160
LatticeOverlap & operator=(const LatticeOverlap &rhs)
Assignment operator.
Definition: Lattice.hpp:120
LatticeIterator zero() const
Retrieve iterator to the lattice site i1=(0,0,0,0).
Definition: Lattice.hpp:338
int * allowedIds
List of representative ids that make up the sublattice. Memory is not owned by the iterator.
Definition: Lattice.hpp:282
~LatticeOverlap()
Destroy the LatticeOverlap object.
Definition: Lattice.hpp:102
Representation of a lattice unit cell.
Definition: LatticeModelFactory.hpp:123
~Lattice()
Destroy the Lattice object.
Definition: Lattice.hpp:312
SpinComponent
Component of a spin operator.
Definition: Lattice.hpp:28
int symmetryTransform(const LatticeIterator &i1, const LatticeIterator &i2) const
Transform a pair of lattice sites (i1,i2) and transform it to (0,i2'). The transformation may involve...
Definition: Lattice.hpp:397
LatticeSiteDescriptor * _bufferSites
List of transformed sites (0, rid), for all representatives rid.
Definition: Lattice.hpp:546
@ None
No spin component specified.
virtual LatticeIterator & operator--()
Prefix decrement operator.
Definition: Lattice.hpp:232
std::vector< std::tuple< int, int, int, int > > _geometryTable
Internal storage of real space lattice site positions, stored as tuples (a0, a1, a2,...
Definition: Lattice.hpp:541
int offset
Offset relative to the first entry of SublatticeIterator::allowedIds.
Definition: Lattice.hpp:281
SublatticeIterator(int *allowedIds)
Construct a new SublatticeIterator object over a list of representative ids.
Definition: Lattice.hpp:256
@ Z
z-component of a spin.
SublatticeIterator & operator--()
Prefix decrement operator.
Definition: Lattice.hpp:274
LatticeIterator begin() const
Retrieve iterator to first lattice site.
Definition: Lattice.hpp:328
Lattice()
Create an uninitialized lattice object.
Definition: Lattice.hpp:306
LatticeSiteDescriptor * _symmetryTable
List of symmetry reductions of spin pairs (id1, id2) linearized as id1*_dataSize+id2....
Definition: Lattice.hpp:545
std::tuple< int, int, int, int > getSiteParameters(const LatticeIterator &site) const
Get the coordinates of a specified lattice site, in units of a1, a2, a3, and b.
Definition: Lattice.hpp:371
SublatticeIterator getRange(const int b) const
Retrieve an iterator over all sites which are within range of the lattice site (0,...
Definition: Lattice.hpp:519
int _dataSize
Total number of all lattice that we store information about (equivalent to size of Lattice::_geometry...
Definition: Lattice.hpp:543
LatticeOverlap(const int size)
Construct a new LatticeOverlap object for a given number of sites.
Definition: Lattice.hpp:59
Structure to describe the portion of the lattice that is relevant in terms of the form sum_j v(i1,...
Definition: Lattice.hpp:46
Three-dimensional vector.
Definition: Geometry.hpp:21
int * _bufferBasis
List of representative ids of all basis sites.
Definition: Lattice.hpp:550
LatticeIterator(int id)
Construct a new LatticeIterator object and initialize it to any representative id.
Definition: Lattice.hpp:181
LatticeIterator fromParametrization(const int rid) const
Retrieve iterator to the specified representative.
Definition: Lattice.hpp:359
LatticeOverlap(const LatticeOverlap &rhs)
Construct a new LatticeOverlap object from an existing one.
Definition: Lattice.hpp:76
SublatticeIterator getBasis() const
Retrieve iterator over all basis sites.
Definition: Lattice.hpp:530
virtual LatticeIterator & operator++()
Prefix increment operator.
Definition: Lattice.hpp:221
SublatticeIterator & operator++()
Prefix increment operator.
Definition: Lattice.hpp:263
LatticeIterator()
Construct a new LatticeIterator object, which points to the representative id 0 per default.
Definition: Lattice.hpp:174
Lightweight macro library for assertions.
LatticeSiteDescriptor * _bufferInvertedSites
List of transformed sites (rid, 0), for all representatives rid.
Definition: Lattice.hpp:547
Implementation of three- and four-dimensional vectors and matrices for geometric operations.
geometry::Vec3< double > getSitePosition(const LatticeIterator &site) const
Get the position of a lattice site in real space.
Definition: Lattice.hpp:383
int symmetryTransform(const LatticeIterator &i1, const LatticeIterator &i2, SpinComponent &spinComponent) const
Transform a pair of lattice sites (i1,i2) and transform it to (0,i2'). The transformation may involve...
Definition: Lattice.hpp:412
const LatticeOverlap & getOverlap(const int rid) const
Retrieve the lattice overlap of the reference site i1=(0,0,0,0) with some other representative lattic...
Definition: Lattice.hpp:470
Spin model representation.
Definition: SpinModel.hpp:19
Sublattice iterator object.
Definition: Lattice.hpp:245
LatticeOverlap * _bufferOverlapMatrices
List of lattice overlaps, where the i-th entry is the overlap of the two tuples (0,...
Definition: Lattice.hpp:548
LatticeIterator end() const
Retrieve iterator to the last+1 lattice site.
Definition: Lattice.hpp:348
@ Y
y-component of a spin.
Lattice iterator object.
Definition: Lattice.hpp:166
Representation of a physical lattice, with symmetry information on two-point correlators.
Definition: Lattice.hpp:297
const LatticeSiteDescriptor * getInvertedSites() const
List of two-spin correlators (i2,i1), where i1=(0,0,0,0) is the reference site and the list includes ...
Definition: Lattice.hpp:481
int id
Representative id which the iterator points to.
Definition: Lattice.hpp:239
std::pair< Lattice *, SpinModel * > newLatticeModel(const LatticeModelFactory::LatticeUnitCell &uc, const LatticeModelFactory::SpinModelUnitCell &spinModelDefinition, const int latticeRange, const std::string &ldfPath)
Create and return lattice and spin model objects from given unit cell definitions.
Definition: LatticeModelFactory.cpp:733
bool operator!=(const LatticeIterator &rhs) const
Negative comparison operator.
Definition: Lattice.hpp:200
std::vector< geometry::Vec3< double > > _basis
List of the positions of all basis sites within a lattice unit cell.
Definition: Lattice.hpp:536
int size
Number representative sites.
Definition: Lattice.hpp:538
Structure to specify a symmetry-transformed lattice site.
Definition: Lattice.hpp:157
std::vector< geometry::Vec3< double > > _bravaisLattice
List of the three bravais lattice vectors.
Definition: Lattice.hpp:535
const LatticeSiteDescriptor * getSites() const
List of two-spin correlators (i1,i2), where i1=(0,0,0,0) is the reference site and the list includes ...
Definition: Lattice.hpp:491
int operator-(const LatticeIterator &rhs) const
Subtraction operator.
Definition: Lattice.hpp:211
int ** _bufferLatticeRange
Table of lists of all site ids in range of site (0,0,0,b).
Definition: Lattice.hpp:551
int symmetryTransform(const LatticeIterator &i1, const LatticeIterator &i2, SpinComponent &spinComponent1, SpinComponent &spinComponent2) const
Transform a pair of lattice sites (i1,i2) and transform it to (0,i2'). The transformation may involve...
Definition: Lattice.hpp:429
int rid
Representative id of the transformed lattice site.
Definition: Lattice.hpp:159
SublatticeIterator getRange(const LatticeIterator &b) const
Retrieve an iterator over all sites which are within range of the lattice site b, where b must descri...
Definition: Lattice.hpp:503
int symmetryTransform(const LatticeIterator &i1, const LatticeIterator &i2, SpinComponent &spinComponent1, SpinComponent &spinComponent2, SpinComponent &spinComponent3) const
Transform a pair of lattice sites (i1,i2) and transform it to (0,i2'). The transformation may involve...
Definition: Lattice.hpp:450
Spin model unit cell representation.
Definition: LatticeModelFactory.hpp:209
@ X
x-component of a spin.
bool operator==(const LatticeIterator &rhs) const
Comparison operator.
Definition: Lattice.hpp:189