QMCPACK
SymmetryGroup Struct Reference
+ Collaboration diagram for SymmetryGroup:

Public Member Functions

 SymmetryGroup (std::string nm="invalid")
 
 ~SymmetryGroup ()
 
void addOperator (Matrix< double > op, std::vector< double > characterlist, int cls)
 
void putClassCharacterTable (std::vector< std::vector< double >> cct)
 
double getsymmetryCharacter (int symmetryOperation, int irrep)
 
double getclassCharacter (int clss, int irrep)
 
int getClass (int symmetryOperation)
 
int getSymmetriesSize ()
 
int getClassesSize ()
 
void TransformSinglePosition (ParticleSet::ParticlePos &oldPos, int symNumber, int el=0)
 
void TransformAllPositions (ParticleSet::ParticlePos &oldPos, int symNumber)
 

Private Attributes

std::vector< Matrix< double > > SymOps
 
std::vector< std::vector< double > > Characters
 
std::vector< std::vector< double > > CharacterTableByClass
 
std::vector< int > Classes
 
std::string name
 
int nClasses
 
int nSymmetries
 

Detailed Description

Definition at line 21 of file SymmetryOperations.h.

Constructor & Destructor Documentation

◆ SymmetryGroup()

SymmetryGroup ( std::string  nm = "invalid")
inline

◆ ~SymmetryGroup()

~SymmetryGroup ( )
inline

Definition at line 26 of file SymmetryOperations.h.

26 {}

Member Function Documentation

◆ addOperator()

void addOperator ( Matrix< double >  op,
std::vector< double >  characterlist,
int  cls 
)
inline

Definition at line 28 of file SymmetryOperations.h.

References APP_ABORT, qmcplusplus::app_log(), SymmetryGroup::Characters, SymmetryGroup::Classes, SymmetryGroup::nClasses, SymmetryGroup::nSymmetries, and SymmetryGroup::SymOps.

Referenced by SymmetryBuilder::buildByHand(), SymmetryBuilder::buildC2Vx(), SymmetryBuilder::buildC2Vy(), SymmetryBuilder::buildC2Vz(), SymmetryBuilder::buildD2Hx(), SymmetryBuilder::buildD2Hy(), and SymmetryBuilder::buildD2Hz().

29  {
30  SymOps.push_back(op);
31  nSymmetries++;
32  Characters.push_back(characterlist);
33  Classes.push_back(cls);
34  nClasses = std::max(nClasses, cls);
35  if (nClasses > characterlist.size())
36  {
37  app_log() << " Character table size or class number is wrong." << std::endl;
38  APP_ABORT("SymmetryGroup::addOperator");
39  }
40  }
std::ostream & app_log()
Definition: OutputManager.h:65
std::vector< Matrix< double > > SymOps
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
Definition: AppAbort.h:27
std::vector< std::vector< double > > Characters

◆ getClass()

int getClass ( int  symmetryOperation)
inline

Definition at line 48 of file SymmetryOperations.h.

References SymmetryGroup::Classes.

48 { return Classes[symmetryOperation]; }

◆ getclassCharacter()

double getclassCharacter ( int  clss,
int  irrep 
)
inline

Definition at line 46 of file SymmetryOperations.h.

References SymmetryGroup::CharacterTableByClass.

46 { return CharacterTableByClass[clss][irrep]; }
std::vector< std::vector< double > > CharacterTableByClass

◆ getClassesSize()

int getClassesSize ( )
inline

Definition at line 51 of file SymmetryOperations.h.

References SymmetryGroup::nClasses.

◆ getSymmetriesSize()

int getSymmetriesSize ( )
inline

Definition at line 50 of file SymmetryOperations.h.

References SymmetryGroup::nSymmetries.

◆ getsymmetryCharacter()

double getsymmetryCharacter ( int  symmetryOperation,
int  irrep 
)
inline

Definition at line 44 of file SymmetryOperations.h.

References SymmetryGroup::Characters.

44 { return Characters[symmetryOperation][irrep]; }
std::vector< std::vector< double > > Characters

◆ putClassCharacterTable()

void putClassCharacterTable ( std::vector< std::vector< double >>  cct)
inline

◆ TransformAllPositions()

void TransformAllPositions ( ParticleSet::ParticlePos oldPos,
int  symNumber 
)
inline

Definition at line 62 of file SymmetryOperations.h.

References Vector< T, Alloc >::size(), and SymmetryGroup::SymOps.

63  {
64  ParticleSet::ParticlePos rv(oldPos.size());
65  for (int k = 0; k < oldPos.size(); k++)
66  for (int i = 0; i < 3; i++)
67  for (int j = 0; j < 3; j++)
68  rv[k][i] += SymOps[symNumber][i][j] * oldPos[k][j];
69  oldPos = rv;
70  }
std::vector< Matrix< double > > SymOps
ParticleAttrib< SingleParticlePos > ParticlePos
Definition: Configuration.h:92

◆ TransformSinglePosition()

void TransformSinglePosition ( ParticleSet::ParticlePos oldPos,
int  symNumber,
int  el = 0 
)
inline

Definition at line 53 of file SymmetryOperations.h.

References SymmetryGroup::SymOps.

54  {
56  for (int i = 0; i < 3; i++)
57  for (int j = 0; j < 3; j++)
58  rv[0][i] += SymOps[symNumber][i][j] * oldPos[el][j];
59  oldPos[el] = rv[0];
60  }
std::vector< Matrix< double > > SymOps
ParticleAttrib< SingleParticlePos > ParticlePos
Definition: Configuration.h:92

Member Data Documentation

◆ Characters

std::vector<std::vector<double> > Characters
private

◆ CharacterTableByClass

std::vector<std::vector<double> > CharacterTableByClass
private

◆ Classes

std::vector<int> Classes
private

Definition at line 76 of file SymmetryOperations.h.

Referenced by SymmetryGroup::addOperator(), and SymmetryGroup::getClass().

◆ name

std::string name
private

Definition at line 77 of file SymmetryOperations.h.

◆ nClasses

int nClasses
private

◆ nSymmetries

int nSymmetries
private

◆ SymOps

std::vector<Matrix<double> > SymOps
private

The documentation for this struct was generated from the following file: