CHROMA
fuzglue.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Compute 'fuzzy' (blocked) glueball correlation functions
3  */
4 
5 #include "chromabase.h"
6 #include "meas/glue/block.h"
7 #include "meas/glue/fuzglue.h"
8 #include "meas/glue/gluecor.h"
9 #include "meas/glue/polycor.h"
10 #include "util/ft/sftmom.h"
11 
12 namespace Chroma
13 {
14  //! Compute 'fuzzy' (blocked) glueball correlation functions
15  /*!
16  * \ingroup glue
17  *
18  * Driver for computation of 'fuzzy' (blocked) glueball correlation functions
19  * using Tepers 'fuzzying' method.
20  *
21  * Warning: this works only for Nd = 4 ! (Construction of glueball states)
22  * Warning: this works only for Nc = 2 and 3 ! (Projection of blocked links)
23  *
24  * \param xml_out xml file object ( Write )
25  * \param xml_group std::string used for writing xml data ( Read )
26  * \param u gauge field ( Read )
27  * \param j_decay direction along which the exponentrial is allowed to decay ( Read )
28  * \param BlkAccu accuracy in fuzzy link projection ( Read )
29  * \param BlkMax maximum number of iterations in fuzzy link projection ( Read )
30  */
31 
32  void fuzglue(XMLWriter& xml_out, const std::string& xml_group,
33  const multi1d<LatticeColorMatrix>& u,
34  int j_decay, const Real& BlkAccu, int BlkMax)
35  {
36  START_CODE();
37 
38  multi1d<LatticeColorMatrix> u_fuz(Nd);
39  multi1d<LatticeColorMatrix> u_tmp(Nd);
40 
41  int bl_level_max;
42  int bl_level;
43  int block_latt;
44  int mu;
45 
46  if( Nd != 4 )
47  {
48  QDPIO::cout << " Glueball construction works only for Nd = 4 !" << std::endl;
49  END_CODE();
50  return;
51  }
52 
53  // Initialize the slow Fourier transform phases
54  SftMom phases(0, true, j_decay);
55 
56  /* Determine the maximum blocklevel possible orthogonal to direction j_decay */
57  bl_level_max = QDP::Layout::lattSize()[0];
58  for(mu = 0; mu < Nd; ++mu)
59  {
60  if ( mu != j_decay )
61  {
62  block_latt = QDP::Layout::lattSize()[mu];
63  bl_level = 0;
64  while( (block_latt > 2) && ((block_latt & 1) == 0) )
65  {
66  block_latt = block_latt / 2;
67  bl_level = bl_level + 1;
68  }
69  if ( bl_level < bl_level_max )
70  bl_level_max = bl_level;
71  }
72  }
73 
74 
75  /* Copy u's to u_fuz */
76  u_fuz = u;
77 
78  /* Do unblocked measurements */
79  bl_level = 0;
80  gluecor(xml_out, "GlueCorr", u_fuz, phases, bl_level);
81  polycor(xml_out, "PolyCorr", u_fuz, phases, bl_level);
82 
83  /* Loop over blocking levels */
84  while( bl_level < bl_level_max )
85  {
86  /* Do the blocking of links perpendicular to direction j_decay */
87  for(mu = 0; mu < Nd; ++mu)
88  {
89  if( mu != j_decay )
90  block(u_tmp[mu], u_fuz, mu, bl_level, BlkAccu, BlkMax, j_decay);
91  }
92 
93  u_fuz = u_tmp;
94 
95  /* Advance bl_level, after blocking is complete */
96  bl_level = bl_level + 1;
97 
98  /* Do blocked measurements */
99  gluecor(xml_out, "GlueCorr", u_fuz, phases, bl_level);
100  polycor(xml_out, "PolyCorr", u_fuz, phases, bl_level);
101  }
102 
103  END_CODE();
104  }
105 
106 }
Construct "block" links.
Primary include file for CHROMA library code.
Fourier transform phase factor support.
Definition: sftmom.h:35
int mu
Definition: cool.cc:24
Compute 'fuzzy' (blocked) glueball correlation functions.
Construct 0++, 2++ and 1+- glueball correlation functions from fuzzy links.
void block(LatticeColorMatrix &u_block, const multi1d< LatticeColorMatrix > &u, int mu, int bl_level, const Real &BlkAccu, int BlkMax, int j_decay)
Construct block links.
Definition: block.cc:42
void polycor(XMLWriter &xml_out, const std::string &xml_group, const multi1d< LatticeColorMatrix > &u, const SftMom &phases, int bl_level)
Construct Polyakov loop correlation functions from fuzzy links.
Definition: polycor.cc:28
void gluecor(XMLWriter &xml_out, const std::string &xml_group, const multi1d< LatticeColorMatrix > &u, const SftMom &phases, int bl_level)
Construct 0++, 2++ and 1+- glueball correlation functions from fuzzy links.
Definition: gluecor.cc:29
void fuzglue(XMLWriter &xml_out, const std::string &xml_group, const multi1d< LatticeColorMatrix > &u, int j_decay, const Real &BlkAccu, int BlkMax)
Compute 'fuzzy' (blocked) glueball correlation functions.
Definition: fuzglue.cc:32
int j_decay
Definition: meslate.cc:22
Nd
Definition: meslate.cc:74
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
START_CODE()
::std::string string
Definition: gtest.h:1979
Construct Polyakov loop correlation functions from fuzzy links.
Fourier transform phase factor support.