35 #include "Utils/clusterspecifier.h" 66 m_tauFinal = tauFinal;
73 for(
auto& obs :
m_obs)
74 obs->initObservable(
m_lat);
76 m_obsValues.resize(m_obs.size());
99 if(Parallel::isActive()){
100 for(
auto& conf : m_inputConfList){
102 MPI_Barrier(Parallel::cartCoordComm());
116 std::vector<std::vector<double>> flowObsMatrix;
117 flowObsMatrix.resize(
int(m_tauFinal/m_epsilon));
118 for(
auto& slice : flowObsMatrix)
120 flowObsMatrix[0][0] = 0.0;
121 flowObsMatrix[0][1] =
m_obs[0]->plaq;
122 flowObsMatrix[0][2] =
m_obs[0]->topc;
123 flowObsMatrix[0][3] =
m_obs[0]->energy;
124 for(
int t = 1; t < flowObsMatrix.size(); t++){
126 flowObsMatrix[t][0] = flowObsMatrix[t-1][0] + m_epsilon;
130 flowObsMatrix[t][1] =
m_obs[0]->plaq;
131 flowObsMatrix[t][2] =
m_obs[0]->topc;
132 flowObsMatrix[t][3] =
m_obs[0]->energy;
143 for(
int mu = 0; mu < 4; mu++)
147 for(
int mu = 0; mu < 4; mu++){
148 (*m_lat)[mu] =
exp((*m_Z)[mu] * m_epsilon * (1.0/4.0))* (*m_lat)[mu];
152 for(
int mu = 0; mu < 4; mu++)
154 - (*m_Z)[mu]*(17.0/36.0);
158 for(
int mu = 0; mu < 4; mu++){
159 (*m_lat)[mu] =
exp((*m_Z)[mu]*m_epsilon)* (*m_lat)[mu];
163 for(
int mu = 0; mu < 4; mu++)
169 for(
int mu = 0; mu < 4; mu++){
170 (*m_lat)[mu] =
exp((*m_Z)[mu] *m_epsilon)* (*m_lat)[mu];
179 for(
auto& obs :
m_obs)
void flowConfigurations()
applies the gradient flow to all the configurations given as input
void computeObservables()
computes all observables in the Observable vector
std::vector< Observable * > m_obs
Vector of pointers to Observable instances.
WilsonFlow(double tauFinal, double epsilon)
constructor of the class
static void printInitialConditions()
Prints basic info about the system.
void applyWilsonFlow(int confNum)
applies the gradient flow to one configuration
void initialize()
runs the initializers of the subclasses.
void createLattice(std::array< int, 4 > latticeSize)
creates the GluonField object and the temporary lattice for the action derivative.
static void writeFlowObs(double flowTime, std::vector< Observable * > &obsList)
Prints information about a flow time evolution step.
void execute()
Executes the App. First initializes the system then applies the gradient flow to the configurations...
static void writeFlowObs(int confNum, std::vector< Observable * > &obsList, std::vector< std::vector< double >> &obsMatrix)
Writes the observables for given flow step.
Main include file for all headers.
GluonField * m_lat
Pointer to the GluonField instance.
std::array< int, 4 > m_size
Size of the sublattice.
void initAction(GluonField *field)
Links the action to a given field and initializes.
void flowStep()
applies one step of the integration scheme, described in paper
Action * m_act
Pointer to the Action instance.
SU3 exp(const SU3 &Q)
exponential of a SU3 algebra matrix
Field< SU3, 4 > GluonField
virtual Lattice< SU3 > computeDerivative(int mu)=0
Computes the derivative in a given direction around all links.
static void writeObs(int confNum, std::vector< Observable * > &obsList)
Prints the status of the current object list for a given conf.
static void initialize(std::vector< Observable * > &obsList)
Opens the files and writes needed headers.