CHROMA
polylp.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Calculate the global normalized sum of the Polyakov loop
3  */
4 
5 #include "chromabase.h"
6 #include "meas/glue/polylp.h"
7 
8 namespace Chroma
9 {
10 
11  //! Compute Polyakov loop
12  /*!
13  * \ingroup glue
14  *
15  * \param u gauge field (Read)
16  * \param poly_loop Polyakov loop average in direction mu (Write)
17  * \param mu direction of Polyakov loop (Read)
18  */
19  template<typename Q>
20  void polylp_t(const multi1d<Q>& u, DComplex& poly_loop, int mu)
21  {
22  START_CODE();
23 
24  // Initial Polyakov loop
25  LatticeColorMatrix poly = u[mu];
26 
27  for(int n = 1; n < Layout::lattSize()[mu]; ++n) // run over all links in mu dir
28  {
29  LatticeColorMatrix tmp = shift(poly, FORWARD, mu);
30  poly = u[mu] * tmp;
31  }
32 
33  /* Take the trace and sum up */
34  poly_loop = sum(trace(poly)) / Double(Nc*Layout::vol());
35 
36  END_CODE();
37  }
38 
39 
40  void polylp(const multi1d<LatticeColorMatrixF3>& u, DComplex& poly_loop, int mu)
41  {
42  polylp_t( u, poly_loop, mu);
43  }
44 
45  void polylp(const multi1d<LatticeColorMatrixD3>& u, DComplex& poly_loop, int mu)
46  {
47  polylp_t(u, poly_loop, mu);
48  }
49 
50  //! Compute Polyakov loop
51  /*!
52  * \ingroup glue
53  *
54  * \param u gauge field (Read)
55  * \param poly_loop Polyakov loop average (Write)
56  */
57  template<typename Q>
58  void polylp_t(const multi1d<Q>& u, multi1d<DComplex>& poly_loop)
59  {
60  START_CODE();
61 
62  poly_loop.resize(Nd);
63 
64  for(int mu = 0; mu < Nd; ++mu)
65  polylp(u, poly_loop[mu], mu);
66 
67  END_CODE();
68  }
69 
70 
71  void polylp(const multi1d<LatticeColorMatrixF3>& u, multi1d<DComplex>& poly_loop)
72  {
73  polylp_t(u,poly_loop);
74  }
75 
76  void polylp(const multi1d<LatticeColorMatrixD3>& u, multi1d<DComplex>& poly_loop)
77  {
78  polylp_t(u,poly_loop);
79  }
80 } // end namespace Chroma
Primary include file for CHROMA library code.
int mu
Definition: cool.cc:24
void polylp(const multi1d< LatticeColorMatrixF3 > &u, DComplex &poly_loop, int mu)
Compute Polyakov loop.
Definition: polylp.cc:40
void polylp_t(const multi1d< Q > &u, DComplex &poly_loop, int mu)
Compute Polyakov loop.
Definition: polylp.cc:20
unsigned n
Definition: ldumul_w.cc:36
Nd
Definition: meslate.cc:74
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
LatticeFermion tmp
Definition: mespbg5p_w.cc:36
START_CODE()
FloatingPoint< double > Double
Definition: gtest.h:7351
Calculate the global normalized sum of the Polyakov loop.
#define FORWARD
Definition: primitives.h:82
Double sum
Definition: qtopcor.cc:37