CHROMA
etensor.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Tensor used for E representations
3  */
4 
5 #include "chromabase.h"
6 #include "util/ferm/etensor.h"
7 
8 namespace Chroma
9 {
10 
11  //! Anonymous namespace
12  /*! \ingroup ferm */
13  namespace
14  {
15  multi3d<Real> E_tensor3d;
16  bool initP = false;
17 
18 
19  //! Init E table factors
20  /*!
21  * \ingroup ferm
22  */
23  void ETensor3dInit()
24  {
25  START_CODE();
26 
27  E_tensor3d.resize(2,3,3);
28  E_tensor3d = zero;
29 
30  // \f$Q_{\alpha jk} = 0\quad j\ne k, Q_{111}=1/sqrt(2),Q_{122}=-1/sqrt(2), Q_{211}=-1/sqrt(6), Q_{222}=-1/sqrt(6), Q_{233}=2/sqrt(6)\f$
31  E_tensor3d(0,0,0) = 1.0/sqrt(Real(2));
32  E_tensor3d(0,1,1) = -1.0/sqrt(Real(2));
33 
34  E_tensor3d(1,0,0) = -1.0/sqrt(Real(6));
35  E_tensor3d(1,1,1) = -1.0/sqrt(Real(6));
36  E_tensor3d(1,2,2) = 2.0/sqrt(Real(6));
37 
38  initP = true;
39 
40  END_CODE();
41  }
42  } // end namespace
43 
44 
45  //! Return E antisymmetric tensor
46  /*!
47  * \ingroup ferm
48  *
49  * \return \f$Q_{\alpha jk} = 0\quad j\ne k, Q_{111}=1/sqrt(2),Q_{122}=-1/sqrt(2), Q_{211}=-1/sqrt(6), Q_{222}=-1/sqrt(6), Q_{233}=2/sqrt(6)\f$
50  */
51  Real ETensor3d(int alpha, int j, int k)
52  {
53  if (! initP)
54  ETensor3dInit();
55 
56  if (alpha < 0 || alpha > 1 || j < 0 || j > 2 || k < 0 || k > 2)
57  {
58  QDPIO::cerr << __func__ << ": indices out of bounds: alpha,j,k="
59  << alpha << " " << j << " " << k << std::endl;
60  QDP_abort(1);
61  }
62 
63  return E_tensor3d(alpha,j,k);
64  }
65 
66 } // end namespace Chroma
Primary include file for CHROMA library code.
Tensor used for E representations.
Real ETensor3d(int alpha, int j, int k)
Return E antisymmetric tensor.
Definition: etensor.cc:51
unsigned j
Definition: ldumul_w.cc:35
static const LatticeInteger & alpha(const int dim)
Definition: stag_phases_s.h:43
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
START_CODE()
Double zero
Definition: invbicg.cc:106
int k
Definition: invbicg.cc:119