GLAC  1.0
flow.h
Go to the documentation of this file.
1 
13 #ifndef FLOW_H
14 #define FLOW_H
15 
16 #include "math/lattice.h"
17 #include "math/flowexpfunctions.h"
18 #include "actions/action.h"
19 
20 class Flow
21 {
22 private:
23  // Flow update step
24  double m_epsilon = 0.02;
25  // Lattice constants
26  std::vector<unsigned int> m_N;
27  unsigned long int m_subLatticeSize;
28  // Temporary lattice to use when flowing
29  Lattice<SU3> * m_tempLattice;
30  Lattice<SU3> m_tempExpLattice;
31  // Updates the lattice with the exponantiated lattice values using move semantics
32  inline Lattice<SU3> matrixExp(const Lattice<SU3> &lattice);
33  inline Lattice<SU3> matrixExp(Lattice<SU3> &&lattice);
34  // SU3 exponentiation function
35  SU3Exp *m_SU3ExpFunc = nullptr;
36  void setSU3ExpFunc();
37  // Action pointer
38  Action *m_S = nullptr;
39 public:
40  Flow(Action *S);
41  ~Flow();
42  void flowField(Lattice<SU3> *lattice);
43 };
44 
45 #endif // FLOW_H
SU3 matrix exponentiation method that uses the method from https://journals.aps.org/prd/abstract/10....
Definition: su3exp.h:18
Class for applying gradient flow on lattice.
Definition: flow.h:20
The Action class.
Definition: action.h:22
~Flow()
Flow::~Flow.
Definition: flow.cpp:33
Flow(Action *S)
Flow::Flow.
Definition: flow.cpp:14
void flowField(Lattice< SU3 > *lattice)
Flow::flowField method for flowing the lattice one step ahead.
Definition: flow.cpp:43