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