CHROMA
aniso_sym_temporal_gaugeact.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Temporal Part of Tree Level LW gauge action
4  *
5  */
6 
7 #ifndef __aniso_sym_temporal_gaugeact_h__
8 #define __aniso_sym_temporal_gaugeact_h__
9 
10 #include "gaugeact.h"
11 #include "gaugebc.h"
15 
16 
17 namespace Chroma
18 {
19 
20  /*! @ingroup gaugeacts */
21  namespace AnisoSymTemporalGaugeActEnv
22  {
23  extern const std::string name;
24  bool registerAll();
25  }
26 
27  //! Temporal anisotropic Symanzik improved gauge action
28  /*! \ingroup gaugeacts
29  *
30  * Contains space-space plaquette and space space rectangle terms
31  * only. Useful for when one wants to split the spatial and temporal
32  * parts of the general Symanzik gauge action onto different timescales
33  * in an (R)HMC simulation.
34  */
35 
37  {
38  public:
39  // Typedefs to save typing
40  typedef multi1d<LatticeColorMatrix> P;
41  typedef multi1d<LatticeColorMatrix> Q;
42 
43  //! Read beta from a param struct
45  const AnisoSymGaugeActParams& p) :
46  cgs(cgs_), param(p) {init();}
47 
48  //! Is anisotropy used?
49  bool anisoP() const {return param.aniso.anisoP; }
50 
51  //! Anisotropy factor
52  const Real anisoFactor() const {return param.aniso.xi_0;}
53 
54  //! Anisotropic direction
55  int tDir() const {return param.aniso.t_dir;}
56 
57  //! Return the set on which the gauge action is defined
58  /*! Defined on the even-off (red/black) set */
59  const Set& getSet() const {return rb;}
60 
61  //! Compute staple
62  /*! Default version. Derived class should override this if needed. */
63  void staple(LatticeColorMatrix& result,
64  const Handle< GaugeState<P,Q> >& state,
65  int mu, int cb) const
66  {
67  QDPIO::cerr << "This function is not implemented" << std::endl;
68  QDP_abort(1);
69 
70  }
71 
72  //! Compute dS/dU
73  void deriv(multi1d<LatticeColorMatrix>& result,
74  const Handle< GaugeState<P,Q> >& state) const;
75 
76  //! Compute the actions
77  Double S(const Handle< GaugeState<P,Q> >& state) const;
78 
79 
80  //! Produce a gauge create state object
81  const CreateGaugeState<P,Q>& getCreateState() const {return *cgs; }
82 
83  //! Destructor is automatic
85 
86  // Accessors -- non mutable members.
87  const Real getBeta(void) const { return param.beta; }
88 
89  const Real getUS(void) const { return param.u_s; }
90 
91  const Real getUT(void) const { return param.u_t; }
92 
93  protected:
94  //! Private initializer
95  void init(void);
96 
97  //! Hide assignment
99 
100  private:
102  AnisoSymGaugeActParams param; /*!< The couplings and anisotropy*/
103  Real plaq_c_t; /*!< Temporal plaquette coupling */
104  Real rect_c_t_2; /*!< Temporal \mu x 2\nu rectangle coupling */
105 
106  };
107 
108 }
109 
110 
111 #endif
Params for Anisotropic Symanzik Gauge Action.
Temporal anisotropic Symanzik improved gauge action.
const Real anisoFactor() const
Anisotropy factor.
void deriv(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state) const
Compute dS/dU.
const Handle< CreateGaugeState< P, Q > > cgs
bool anisoP() const
Is anisotropy used?
AnisoSymTemporalGaugeAct(Handle< CreateGaugeState< P, Q > > cgs_, const AnisoSymGaugeActParams &p)
Read beta from a param struct.
Double S(const Handle< GaugeState< P, Q > > &state) const
Compute the actions.
const Set & getSet() const
Return the set on which the gauge action is defined.
void operator=(const AnisoSymTemporalGaugeAct &a)
Hide assignment.
void staple(LatticeColorMatrix &result, const Handle< GaugeState< P, Q > > &state, int mu, int cb) const
Compute staple.
const CreateGaugeState< P, Q > & getCreateState() const
Produce a gauge create state object.
int tDir() const
Anisotropic direction.
~AnisoSymTemporalGaugeAct()
Destructor is automatic.
Create a gauge connection state.
Definition: create_state.h:47
Support class for fermion actions and linear operators.
Definition: state.h:74
Class for counted reference semantics.
Definition: handle.h:33
Base class for gauge actions with links appearing linearly in the action.
Definition: gaugeact.h:80
int mu
Definition: cool.cc:24
Class structure for gauge actions.
Gauge boundary conditions.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
Complex a
Definition: invbicg.cc:95
int cb
Definition: invbicg.cc:120
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
FloatingPoint< double > Double
Definition: gtest.h:7351
::std::string string
Definition: gtest.h:1979
Plaquette gauge action.
Rectangle gauge action.
Real u_t
Temporal Tadpole coupling.
Real u_s
Spatial Tadpole coupling.