Go to the documentation of this file.
29 template<
typename AFIELD>
55 unique_ptr<APrecond_MG<AFIELD, AFIELD2> >
m_prec_mg;
121 void set_parameters(
const int Niter,
const real_t Stop_cond,
const std::vector<int>& sap_block_size,
const int nvec);
124 const std::vector<int>& sap_block_size,
const int nvec,
const int nsetup,
125 const int coarse_niter,
const real_t coarse_stop_cond,
const std::string& coarse_vlevel,
126 const int smoother_niter,
const real_t smoother_stop_cond);
149 void set_lattice(
const vector<int>& sap_block_size);
186 #endif // include gurad
AFopr< AFIELD2 > * get_fopr_coarse()
int m_nvec
number of testvectors
void set_lattice(const vector< int > &sap_block_size)
Multigrid preconditionor (SIMD version)
static constexpr int m_min_res_iter
AFopr< AFIELD > * get_fopr()
returns the pointer to the fermion operator.
int m_Niter
maximum iteration number.
void solve_MG_init(real_t &rrp, real_t &rr)
void set_parameters_level0(const Parameters ¶ms)
setting parameters by a Parameter object.
std::vector< int > m_coarse_lattice
void set_parameters(const Parameters ¶ms)
setting parameters by a Parameter object.
double flop_count_setup()
returns the floating point operation count [setup].
void set_parameters_level1(const Parameters ¶ms)
setting parameters by a Parameter object.
AFopr< AFIELD > * m_afopr_fineD
Parameters m_params_asolver_coarse
parameters for coarse grid solver
Base class of fermion operator family.
unique_ptr< MultiGrid< AFIELD2, AFIELD2 > > m_multigrid
void run_setup_iterative(int niter, std::vector< AFIELD2 > &testvec_work)
void set_foprD(AFopr< AFIELD > *foprD)
void solve_MG_step(real_t &rrp, real_t &rr)
unique_ptr< ASolver< AFIELD2 > > m_asolver_coarse
unique_ptr< APrecond_MG< AFIELD, AFIELD2 > > m_prec_mg
double flop_count()
returns the floating point operation count.
static const std::string class_name
int m_nsetup
setup iterations
unique_ptr< ASolver< AFIELD > > m_outer_solver
void run_setup_initial(std::vector< AFIELD2 > &testvec_work)
void set_foprF(AFopr_dd< AFIELD2 > *foprF)
int m_Nconv
iteratoin number to calculate flop
real_t m_Stop_cond
stopping criterion (squared).
void solve(AFIELD &xq, const AFIELD &b, int &nconv, real_t &diff)
solver main.
std::vector< int > m_sap_block_size
unique_ptr< ASolver< AFIELD2 > > m_asolver_smoother
ASolver_MG_double()
constructor.
unique_ptr< AFopr< AFIELD2 > > m_afopr_coarse
AFIELD m_x
calling constructor without fermion operator is forbidden.
Parameters m_params_asolver_outer
parameters for outer solver
AFopr_dd< AFIELD2 > * get_foprF()
unique_ptr< Timer > m_timer_generate_coarse_op
Container of Field-type object.
unique_ptr< Timer > m_timer_gramschmidt
~ASolver_MG_double()
destructor.
int m_nconv
set "D" for colver (default), "DdagD" for domainwall
AFopr< AFIELD > * get_foprD()
AFopr_dd< AFIELD2 > * m_afopr_fineF