CHROMA
deriv_quark_displacement_s.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Staggered Derivative displacements
4  *
5  * There are a few variants of derivatives. One is
6  *
7  * \f$\nabla_\mu f(x) = U_\mu(x)f(x+\mu) - U_{-\mu}(x)f(x-\mu)\f$
8  */
9 
10 #ifndef __deriv_quark_displacement_s_h__
11 #define __deriv_quark_displacement_s_h__
12 
14 
15 namespace Chroma
16 {
17 
18  //! Name and registration
19  /*! @ingroup smear */
20  namespace StaggeredDerivQuarkDisplacementEnv
21  {
22  bool registerAll();
23 
24 
25  //! Params for derivative quark displacement
26  /*! @ingroup smear */
27  struct Params
28  {
29  Params();
30  Params(XMLReader& in, const std::string& path);
31  void writeXML(XMLWriter& in, const std::string& path) const;
32 
33  std::string displacement_type; /*!< displacement type */
34 
35  int deriv_length; /*!< Displacement length in derivative */
36  };
37 
38  //! Deriv meson source parameters
39  /*! @ingroup sources */
40  struct ParamsDir
41  {
42  ParamsDir();
43  ParamsDir(XMLReader& in, const std::string& path);
44  void writeXML(XMLWriter& in, const std::string& path) const;
45 
46  std::string displacement_type; /*!< displacement type */
47 
48  int deriv_dir; /*!< Polarization direction */
49  int deriv_length; /*!< Displacement length in derivative */
50  };
51 
52 
53  //! Construct (right Nabla) source
54  /*!
55  * \ingroup sources
56  *
57  * Operator is Nabla
58  * The sink interpolator structure is
59  * \f$\Gamma_f \equiv \nabla_i\f$
60  */
61  template<typename T>
63  {
64  public:
65  //! Full constructor
67 
68  //! Displace the quark
69  void operator()(T& quark,
70  const multi1d<LatticeColorMatrix>& u,
71  enum PlusMinus isign) const;
72 
73  private:
74  ParamsDir params; /*!< source params */
75  };
76 
77  } // end namespace
78 
79 
80  //! Reader
81  /*! @ingroup sources */
82  void read(XMLReader& xml, const std::string& path, StaggeredDerivQuarkDisplacementEnv::Params& param);
83 
84  //! Writer
85  /*! @ingroup sources */
86  void write(XMLWriter& xml, const std::string& path, const StaggeredDerivQuarkDisplacementEnv::Params& param);
87 
88 
89  //! Reader
90  /*! @ingroup sources */
91  void read(XMLReader& xml, const std::string& path, StaggeredDerivQuarkDisplacementEnv::ParamsDir& param);
92 
93  //! Writer
94  /*! @ingroup sources */
95  void write(XMLWriter& xml, const std::string& path, const StaggeredDerivQuarkDisplacementEnv::ParamsDir& param);
96 
97 
98 } // end namespace Chroma
99 
100 #endif
Base class for quark displacement.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
Register all the possible deriv mesons bool registerAll()
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::T T
static QDP_ColorVector * in
::std::string string
Definition: gtest.h:1979
Quark displacement.
void writeXML(XMLWriter &in, const std::string &path) const
void writeXML(XMLWriter &in, const std::string &path) const