SpinParser  1.0
LatticeModelFactory.hpp
Go to the documentation of this file.
1 
9 #pragma once
10 #include <string>
11 #include <map>
12 #include <set>
13 #include "Lattice.hpp"
14 #include "SpinModel.hpp"
15 
16 namespace LatticeModelFactory
17 {
21  struct LatticeSite
22  {
23  public:
27  LatticeSite();
28 
37  LatticeSite(const int a0, const int a1, const int a2, const int b);
38 
45  bool operator==(const LatticeSite& rhs) const;
46 
53  bool operator!=(const LatticeSite& rhs) const;
54 
55  int a0;
56  int a1;
57  int a2;
58  int b;
59  };
60 
64  struct LatticeBond
65  {
66  public:
76  LatticeBond(const int fromB, const int toB, const int da0, const int da1, const int da2);
77 
84  bool isAttachedToSite(const LatticeSite& site) const;
85 
93  bool isConnectingSites(const LatticeSite& site1, const LatticeSite& site2) const;
94 
102  bool isConnectingFromTo(const LatticeSite& siteFrom, const LatticeSite& siteTo) const;
103 
111  std::vector<LatticeSite> getOtherEnd(const LatticeSite& site) const;
112 
113  int fromB;
114  int toB;
115  int da0;
116  int da1;
117  int da2;
118  };
119 
124  {
125  public:
129  LatticeUnitCell();
130 
138  LatticeUnitCell(const std::string &latticeName, const std::string &bundle);
139 
140  std::vector<geometry::Vec3<double> > latticeVectors;
141  std::vector<geometry::Vec3<double> > basisSites;
142  std::vector<LatticeBond> latticeBonds;
143 
144  private:
152  bool _initFromResBundle(const std::string &latticeName, const std::string &bundle);
153  };
154 
159  {
160  public:
164  SpinInteraction();
165 
173 
181  bool isConnectingFromTo(const LatticeSite& siteFrom, const LatticeSite& siteTo) const;
182 
190  int isConnectingSites(const LatticeSite& site1, const LatticeSite& site2) const;
191 
200 
203  float interactionStrength[3][3];
204  };
205 
210  {
211  public:
216 
225  SpinModelUnitCell(const std::string &modelName, const std::string &bundle, const std::map<std::string, std::string> &modelOptions);
226 
227  std::vector<SpinInteraction> interactions;
228  std::set<std::string> interactionParameters;
229 
230  private:
240  bool _initFromResBundle(const std::string &modelName, const std::string &bundle, const std::map<std::string, std::string> &modelOptions);
241  };
242 
252  std::pair<Lattice *, SpinModel *> newLatticeModel(const LatticeUnitCell &uc, const SpinModelUnitCell &spinModelDefinition, const int latticeRange, const std::string &ldfPath = "");
253 };
LatticeModelFactory::SpinInteraction
Representation of a two-spin interaction.
Definition: LatticeModelFactory.hpp:158
LatticeModelFactory::SpinInteraction::to
LatticeSite to
Site to which the interaction couples.
Definition: LatticeModelFactory.hpp:202
LatticeModelFactory::LatticeUnitCell
Representation of a lattice unit cell.
Definition: LatticeModelFactory.hpp:123
LatticeModelFactory::LatticeUnitCell::basisSites
std::vector< geometry::Vec3< double > > basisSites
List of all basis site positions.
Definition: LatticeModelFactory.hpp:141
LatticeModelFactory::LatticeUnitCell::LatticeUnitCell
LatticeUnitCell()
Construct an unitialized lattice unit cell.
Definition: LatticeModelFactory.cpp:100
LatticeModelFactory::SpinModelUnitCell::SpinModelUnitCell
SpinModelUnitCell()
Construct an uninitialized spin model unit cell.
Definition: LatticeModelFactory.cpp:237
LatticeModelFactory::SpinInteraction::interactionStrength
float interactionStrength[3][3]
Interaction strength, encoded as interactionStrength[s1][s2], where s1 is the x, y,...
Definition: LatticeModelFactory.hpp:203
LatticeModelFactory::LatticeBond::getOtherEnd
std::vector< LatticeSite > getOtherEnd(const LatticeSite &site) const
Given one lattice site, determine the other site which the bond is connected to. If the site is conne...
Definition: LatticeModelFactory.cpp:84
LatticeModelFactory::LatticeBond::isAttachedToSite
bool isAttachedToSite(const LatticeSite &site) const
Determine whether the lattice bond is attached to a specified site.
Definition: LatticeModelFactory.cpp:65
LatticeModelFactory::LatticeBond::da2
int da2
Difference of the two connecting sites in units of the third Bravais lattice vector.
Definition: LatticeModelFactory.hpp:117
LatticeModelFactory::SpinInteraction::SpinInteraction
SpinInteraction()
Construct an uninitialized spin interaction object.
Definition: LatticeModelFactory.cpp:185
LatticeModelFactory::LatticeBond::toB
int toB
Basis index of the site which the bond connects to.
Definition: LatticeModelFactory.hpp:114
LatticeModelFactory::LatticeBond::fromB
int fromB
Basis index of the site from which the bond emanates.
Definition: LatticeModelFactory.hpp:113
Lattice.hpp
Representation of a physical lattice.
LatticeModelFactory::SpinInteraction::operator+=
SpinInteraction & operator+=(const SpinInteraction &rhs)
Addition assignment operator. Adds the interaction strength of a second SpinInteraction object descri...
Definition: LatticeModelFactory.cpp:208
LatticeModelFactory::LatticeSite::operator==
bool operator==(const LatticeSite &rhs) const
Comparison operator.
Definition: LatticeModelFactory.cpp:43
LatticeModelFactory::LatticeSite::a2
int a2
Coordinate in units of the third Bravais lattice vector.
Definition: LatticeModelFactory.hpp:57
LatticeModelFactory::LatticeBond::isConnectingFromTo
bool isConnectingFromTo(const LatticeSite &siteFrom, const LatticeSite &siteTo) const
Determine whether the lattice bond is connecting two specified sites, checking also the orientation o...
Definition: LatticeModelFactory.cpp:78
LatticeModelFactory::LatticeBond::LatticeBond
LatticeBond(const int fromB, const int toB, const int da0, const int da1, const int da2)
Construct a well-defined lattice bond object.
Definition: LatticeModelFactory.cpp:56
LatticeModelFactory::LatticeSite::a0
int a0
Coordinate in units of the first Bravais lattice vector.
Definition: LatticeModelFactory.hpp:55
LatticeModelFactory::LatticeSite::LatticeSite
LatticeSite()
Construct an uninitialized lattice site object.
Definition: LatticeModelFactory.cpp:27
SpinModel.hpp
Representation of a spin model with two-spin interactions.
LatticeModelFactory::SpinInteraction::isConnectingSites
int isConnectingSites(const LatticeSite &site1, const LatticeSite &site2) const
Determine whether the spin interaction couples two lattice sites, neglecting its orientation.
Definition: LatticeModelFactory.cpp:201
LatticeModelFactory::LatticeBond::da1
int da1
Difference of the two connecting sites in units of the second Bravais lattice vector.
Definition: LatticeModelFactory.hpp:116
LatticeModelFactory::LatticeSite::b
int b
Basis site index.
Definition: LatticeModelFactory.hpp:58
LatticeModelFactory::newLatticeModel
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
LatticeModelFactory::LatticeBond
Representation of a lattice bond.
Definition: LatticeModelFactory.hpp:64
LatticeModelFactory::SpinInteraction::isConnectingFromTo
bool isConnectingFromTo(const LatticeSite &siteFrom, const LatticeSite &siteTo) const
Determine whether the spin interaction couples two lattice sites.
Definition: LatticeModelFactory.cpp:195
LatticeModelFactory::SpinInteraction::from
LatticeSite from
Site from which the interaction emanates.
Definition: LatticeModelFactory.hpp:201
LatticeModelFactory::LatticeSite::a1
int a1
Coordinate in units of the second Bravais lattice vector.
Definition: LatticeModelFactory.hpp:56
LatticeModelFactory::SpinModelUnitCell::interactions
std::vector< SpinInteraction > interactions
List of spin interactions in the unit cell.
Definition: LatticeModelFactory.hpp:227
LatticeModelFactory::LatticeSite
Representation of a Lattice site.
Definition: LatticeModelFactory.hpp:21
LatticeModelFactory::LatticeBond::isConnectingSites
bool isConnectingSites(const LatticeSite &site1, const LatticeSite &site2) const
Determine whether the lattice bond is connecting two specified sites, ignoring the orientation of the...
Definition: LatticeModelFactory.cpp:71
LatticeModelFactory::SpinModelUnitCell::interactionParameters
std::set< std::string > interactionParameters
List of interaction parameter names as used in the specification file.
Definition: LatticeModelFactory.hpp:228
LatticeModelFactory::LatticeSite::operator!=
bool operator!=(const LatticeSite &rhs) const
Negative comparison operator.
Definition: LatticeModelFactory.cpp:49
LatticeModelFactory::LatticeBond::da0
int da0
Difference of the two connecting sites in units of the first Bravais lattice vector.
Definition: LatticeModelFactory.hpp:115
LatticeModelFactory::LatticeUnitCell::latticeVectors
std::vector< geometry::Vec3< double > > latticeVectors
List of the three Bravais lattice vectors.
Definition: LatticeModelFactory.hpp:140
LatticeModelFactory::LatticeUnitCell::latticeBonds
std::vector< LatticeBond > latticeBonds
List of all lattice bonds.
Definition: LatticeModelFactory.hpp:142
LatticeModelFactory::SpinModelUnitCell
Spin model unit cell representation.
Definition: LatticeModelFactory.hpp:209