CHROMA
mg_proto_qphix_helpers.h
Go to the documentation of this file.
1 /*
2  * mg_proto_helpers.h
3  *
4  * Created on: Mar 24, 2017
5  * Author: bjoo
6  */
7 
8 #ifndef LIB_ACTIONS_FERM_INVERT_MG_PROTO_MG_PROTO_QPHIX_HELPERS_H_
9 #define LIB_ACTIONS_FERM_INVERT_MG_PROTO_MG_PROTO_QPHIX_HELPERS_H_
10 
11 #include <memory>
12 #include <string>
13 #include <lattice/lattice_info.h>
14 #include <lattice/qphix/mg_level_qphix.h>
15 #include <lattice/qphix/vcycle_recursive_qphix.h>
17 #include <lattice/lattice_info.h>
18 #include <lattice/qphix/qphix_clover_linear_operator.h>
19 #include <lattice/qphix/qphix_eo_clover_linear_operator.h>
20 
21 namespace Chroma {
22 
23 namespace MGProtoHelpersQPhiX {
24 
25 template<typename MyLevelT, typename MyVCycleT, typename MyLinOpT, typename MyLinOpFT>
27 {
28  using LevelT = MyLevelT;
29  using VCycleT = MyVCycleT;
30  using LinOpT = MyLinOpT;
31  using LinOpFT = MyLinOpFT;
32 
33  std::shared_ptr<LevelT> mg_levels;
34  std::shared_ptr<VCycleT> v_cycle;
35  std::shared_ptr<LinOpT> M;
36 };
37 
40 
41 
42 // for testing
43 std::shared_ptr<MG::QPhiXWilsonCloverLinearOperator>
44 createFineLinOp( const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u,
45  const MG::LatticeInfo& info);
46 
47 std::shared_ptr<MG::QPhiXWilsonCloverLinearOperatorF>
48 createFineLinOpF( const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u,
49  const MG::LatticeInfo& info);
50 
51 void createMGPreconditioner(const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u);
52 void deleteMGPreconditioner(const std::string& subspaceID);
53 std::shared_ptr<MGPreconditioner> getMGPreconditioner(const std::string& subspaceId);
54 
55 
56 // EO versions
57 std::shared_ptr<MG::QPhiXWilsonCloverEOLinearOperator>
58 createFineEOLinOp( const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u,
59  const MG::LatticeInfo& info);
60 
61 std::shared_ptr<MG::QPhiXWilsonCloverEOLinearOperatorF>
62 createFineEOLinOpF( const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u,
63  const MG::LatticeInfo& info);
64 
65 void createMGPreconditionerEO(const MGProtoSolverParams& params, const multi1d<LatticeColorMatrix>& u);
66 void deleteMGPreconditionerEO(const std::string& subspaceID);
67 std::shared_ptr<MGPreconditionerEO> getMGPreconditionerEO(const std::string& subspaceId);
68 
69 } // Namespace MGProtoHelpers
70 
71 
72 } // Namespace Chroma
73 
74 
75 
76 
77 
78 
79 #endif /* LIB_ACTIONS_FERM_INVERT_MG_PROTO_MG_PROTO_HELPERS_H_ */
Params params
std::shared_ptr< MGPreconditionerEO::LinOpFT > createFineEOLinOpF(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u, const MG::LatticeInfo &info)
void createMGPreconditioner(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u)
shared_ptr< MGPreconditionerEO > getMGPreconditionerEO(const std::string &subspaceId)
void deleteMGPreconditionerEO(const std::string &subspaceId)
std::shared_ptr< MGPreconditioner::LinOpFT > createFineLinOpF(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u, const MG::LatticeInfo &info)
void deleteMGPreconditioner(const std::string &subspaceId)
std::shared_ptr< MGPreconditioner::LinOpT > createFineLinOp(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u, const MG::LatticeInfo &info)
shared_ptr< MGPreconditioner > getMGPreconditioner(const std::string &subspaceId)
std::shared_ptr< MGPreconditionerEO::LinOpT > createFineEOLinOp(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u, const MG::LatticeInfo &info)
void createMGPreconditionerEO(const MGProtoSolverParams &params, const multi1d< LatticeColorMatrix > &u)
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
static QOP_info_t info
::std::string string
Definition: gtest.h:1979