00001 // -*- C++ -*- 00002 // $Id: ape_link_smearing.h,v 3.3 2008/11/04 18:43:57 edwards Exp $ 00003 /*! \file 00004 * \brief APE link smearing 00005 */ 00006 00007 #ifndef __ape_link_smearing_h__ 00008 #define __ape_link_smearing_h__ 00009 00010 #include "meas/smear/link_smearing.h" 00011 00012 namespace Chroma 00013 { 00014 00015 //! Name and registration 00016 namespace APELinkSmearingEnv 00017 { 00018 bool registerAll(); 00019 00020 //! Return the name 00021 std::string getName(); 00022 00023 //! Params for APE link smearing 00024 /*! @ingroup smear */ 00025 struct Params 00026 { 00027 Params() {} 00028 Params(XMLReader& in, const std::string& path); 00029 void writeXML(XMLWriter& in, const std::string& path) const; 00030 00031 int link_smear_num; /*!< Smearing hits */ 00032 Real link_smear_fact; /*!< Smearing parameters */ 00033 int no_smear_dir; /*!< Direction to not smear */ 00034 int BlkMax; /*!< Max number of iterations */ 00035 Real BlkAccu; /*!< Relative error to maximize trace */ 00036 }; 00037 00038 00039 //! APE link smearing 00040 /*! @ingroup smear 00041 * 00042 * APE link smearing object 00043 */ 00044 class LinkSmear : public LinkSmearing 00045 { 00046 public: 00047 //! Full constructor 00048 LinkSmear(const Params& p) : params(p) {} 00049 00050 //! Smear the links 00051 void operator()(multi1d<LatticeColorMatrix>& u) const; 00052 00053 private: 00054 //! Hide partial constructor 00055 LinkSmear() {} 00056 00057 private: 00058 Params params; /*!< smearing params */ 00059 }; 00060 00061 } // end namespace 00062 00063 00064 //! Reader 00065 /*! @ingroup smear */ 00066 void read(XMLReader& xml, const string& path, APELinkSmearingEnv::Params& param); 00067 00068 //! Writer 00069 /*! @ingroup smear */ 00070 void write(XMLWriter& xml, const string& path, const APELinkSmearingEnv::Params& param); 00071 00072 } // end namespace Chroma 00073 00074 00075 #endif
1.4.7