00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __aniso_sym_temporal_gaugeact_h__
00009 #define __aniso_sym_temporal_gaugeact_h__
00010
00011 #include "gaugeact.h"
00012 #include "gaugebc.h"
00013 #include "actions/gauge/gaugeacts/plaq_gaugeact.h"
00014 #include "actions/gauge/gaugeacts/rect_gaugeact.h"
00015 #include "actions/gauge/gaugeacts/aniso_sym_gaugeact_params.h"
00016
00017
00018 namespace Chroma
00019 {
00020
00021
00022 namespace AnisoSymTemporalGaugeActEnv
00023 {
00024 extern const string name;
00025 bool registerAll();
00026 }
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 class AnisoSymTemporalGaugeAct : public LinearGaugeAction
00038 {
00039 public:
00040
00041 typedef multi1d<LatticeColorMatrix> P;
00042 typedef multi1d<LatticeColorMatrix> Q;
00043
00044
00045 AnisoSymTemporalGaugeAct(Handle< CreateGaugeState<P,Q> > cgs_,
00046 const AnisoSymGaugeActParams& p) :
00047 cgs(cgs_), param(p) {init();}
00048
00049
00050 bool anisoP() const {return param.aniso.anisoP; }
00051
00052
00053 const Real anisoFactor() const {return param.aniso.xi_0;}
00054
00055
00056 int tDir() const {return param.aniso.t_dir;}
00057
00058
00059
00060 const Set& getSet() const {return rb;}
00061
00062
00063
00064 void staple(LatticeColorMatrix& result,
00065 const Handle< GaugeState<P,Q> >& state,
00066 int mu, int cb) const
00067 {
00068 QDPIO::cerr << "This function is not implemented" << endl;
00069 QDP_abort(1);
00070
00071 }
00072
00073
00074 void deriv(multi1d<LatticeColorMatrix>& result,
00075 const Handle< GaugeState<P,Q> >& state) const;
00076
00077
00078 Double S(const Handle< GaugeState<P,Q> >& state) const;
00079
00080
00081
00082 const CreateGaugeState<P,Q>& getCreateState() const {return *cgs; }
00083
00084
00085 ~AnisoSymTemporalGaugeAct() {}
00086
00087
00088 const Real getBeta(void) const { return param.beta; }
00089
00090 const Real getUS(void) const { return param.u_s; }
00091
00092 const Real getUT(void) const { return param.u_t; }
00093
00094 protected:
00095
00096 void init(void);
00097
00098
00099 void operator=(const AnisoSymTemporalGaugeAct& a) {}
00100
00101 private:
00102 const Handle< CreateGaugeState<P,Q> > cgs;
00103 AnisoSymGaugeActParams param;
00104 Real plaq_c_t;
00105 Real rect_c_t_2;
00106
00107 };
00108
00109 };
00110
00111
00112 #endif