CHROMA
central_tprec_logdet_tt_monomial_w.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Even-odd preconditioned log(det(T^\dag T ))
3  */
4 
5 #include "qdp_config.h"
6 
7 #if QDP_NS == 4
8 #if QDP_NC == 3
9 #if QDP_ND == 4
10 
13 
16 
17 namespace Chroma
18 {
19 
20  namespace CentralTimePrecLogDetTTMonomial4DEnv
21  {
22  namespace
23  {
24  //! Callback function for the factory
25  Monomial< multi1d<LatticeColorMatrix>,
26  multi1d<LatticeColorMatrix> >* createMonomial(XMLReader& xml, const std::string& path)
27  {
28  return new CentralTimePrecLogDetTTMonomial4D(CentralTimePrecLogDetTTMonomialParams(xml, path));
29  }
30 
31  //! Local registration flag
32  bool registered = false;
33  }
34 
35  const std::string name = std::string("N_FLAVOR_CENTRAL_TPREC_LOGDET_TT_FERM_MONOMIAL");
36 
37  //! Register all the factories
38  bool registerAll()
39  {
40  bool success = true;
41  if (! registered)
42  {
43  success &= TheMonomialFactory::Instance().registerObject(name, createMonomial);
44  registered = true;
45  }
46  return success;
47  }
48  }
49 
50 
51 
52  CentralTimePrecLogDetTTMonomialParams::CentralTimePrecLogDetTTMonomialParams(XMLReader& in, const std::string& path)
53  {
54  XMLReader paramtop(in, path);
55 
56  fermact = readXMLGroup(paramtop, "FermionAction", "FermAct");
57  read(paramtop,"num_flavors", num_flavors);
58 
59  QDPIO::cout << "CentralTimePrecLogDetTTMonomialParams: read \n" << fermact.id << std::endl;
60  }
61 
62  void read(XMLReader& r, const std::string& path, CentralTimePrecLogDetTTMonomialParams& p)
63  {
64  CentralTimePrecLogDetTTMonomialParams tmp(r, path);
65  p = tmp;
66  }
67 
68  void write(XMLWriter& xml, const std::string& path, const CentralTimePrecLogDetTTMonomialParams& p)
69  {
70  // Not implemented
71  }
72 
73 
74  CentralTimePrecLogDetTTMonomial4D::CentralTimePrecLogDetTTMonomial4D(const CentralTimePrecLogDetTTMonomialParams& p) :
75  num_flavors(p.num_flavors)
76  {
77  START_CODE();
78 
79  // Grok the fermact out of the XML
80  std::istringstream is(p.fermact.xml);
81  XMLReader fermact_reader(is);
82  QDPIO::cout << " CentralTimePrecLogDetTTMonomial4D: construct " << p.fermact.id << std::endl;
83 
84  WilsonTypeFermAct<T,P,Q>* tmp_act =
85  TheWilsonTypeFermActFactory::Instance().createObject(p.fermact.id, fermact_reader, p.fermact.path);
86 
87  CentralTimePrecFermAct<T,P,Q>* downcast =
88  dynamic_cast<CentralTimePrecFermAct<T,P,Q>*>(tmp_act);
89 
90  // Check success of the downcast
91  if( downcast == 0x0 )
92  {
93  QDPIO::cerr << "Unable to downcast FermAct to EvenOddPrecLogDetWilsonTypeFermAct in "
94  << __func__ << std::endl;
95  QDP_abort(1);
96  }
97 
98  fermact = downcast;
99 
100  END_CODE();
101  }
102 
103 
104 } // End namespace
105 
106 
107 #endif
108 #endif
109 #endif
Even-odd preconditioned log(det(A_ee))
#define END_CODE()
Definition: chromabase.h:65
#define START_CODE()
Definition: chromabase.h:64
static T & Instance()
Definition: singleton.h:432
Fermion action factories.
All Wilson-type fermion actions.
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.
GroupXML_t readXMLGroup(XMLReader &xml_in, const std::string &path, const std::string &type_name)
Read group and return as a std::string.
Monomial factories.
bool registerAll()
Register all the factories.
static bool registered
Local registration flag.
const std::string name
Name to be used.
Monomial< multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > * createMonomial(XMLReader &xml, const std::string &path)
Callback function for the factory.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
LatticeFermion tmp
Definition: mespbg5p_w.cc:36
static QDP_ColorVector * in
::std::string string
Definition: gtest.h:1979