Go to the documentation of this file.
9 #ifndef AFOPR_DOMAINWALL_INCLUDED
10 #define AFOPR_DOMAINWALL_INCLUDED
37 template<
typename AFIELD>
51 std::vector<real_t>
m_b;
52 std::vector<real_t>
m_c;
74 std::vector<real_t>
m_e;
75 std::vector<real_t>
m_f;
86 {
init(fopr, params); }
95 const int Ns,
const std::vector<int> bc,
100 const int Ns,
const std::vector<int> bc,
101 const std::vector<real_t> vec_b,
102 const std::vector<real_t> vec_c);
114 const std::vector<real_t> c);
209 static bool register_factory()
212 init &= AFOPR::Factory_params::Register(
213 "Domainwall", create_object_with_params);
215 init &= AFOPR::Factory_fopr::Register(
216 "Domainwall", create_object);
218 init &= AFOPR::Factory_fopr_params::Register(
219 "Domainwall", create_object_with_params2);
void Precdag(AFIELD &, const AFIELD &)
std::vector< real_t > m_dp
void mult_gm5(AFIELD &, const AFIELD &)
multiplies gamma_5 matrix.
void DDdag(AFIELD &, const AFIELD &)
std::vector< real_t > m_c
coefficient c (array)
void U_inv(AFIELD &, const AFIELD &)
AFopr_Domainwall(const Parameters ¶ms)
Bridge::VerboseLevel m_vl
verbose level
AFopr_Domainwall(AFOPR *fopr, const Parameters ¶ms)
constructor.
void Udag_inv(AFIELD &, const AFIELD &)
void DdagD(AFIELD &, const AFIELD &)
void reverse(Field &, const AFIELD &)
reverse AField to Field.
bool needs_convert()
this class needs convert of fermion field.
std::vector< real_t > m_f
bool m_kernel_created
whether kernel is created in this object
AFIELD m_v2
working 5d vectors.
Domain-wall fermion operator.
void set_config(unique_ptr< Field_G > &U)
void tidyup()
final tidyup.
void mult(AFIELD &v, const AFIELD &w)
multiplies fermion operator to a given field.
void Prec(AFIELD &, const AFIELD &)
void DdagD_prec(AFIELD &, const AFIELD &)
std::vector< int > m_boundary
boundary conditions
void Ddag_prec(AFIELD &, const AFIELD &)
double flop_count()
this returns the number of floating point number operations.
virtual void set_config(Field *)=0
sets the gauge configuration.
void set_kernel_parameters(const Parameters ¶ms)
set parameters of kernel operaotr.
void convert(AFIELD &, const Field &)
convert Field to AField for this class.
real_t m_M0
domain-wall height
virtual bool needs_convert()
returns true if additional field conversion is needed.
void mult_gm5_4d(AFIELD &, const AFIELD &)
void Ldag_inv(AFIELD &, const AFIELD &)
void get_parameters(Parameters ¶ms) const
gets parameters by a Parameter object: to be implemented in a subclass.
int m_Ns
size of fifth-dimension
void set_precond_parameters()
set parameters for preconditioning.
~AFopr_Domainwall()
destructor.
std::string m_kernel_type
std::vector< real_t > m_dm
void D_prec(AFIELD &, const AFIELD &)
int field_nvol()
returns the volume of the fermion field.
static const std::string class_name
int field_nex()
returns the external degree of freedom of the fermion field.
std::vector< real_t > m_b
coefficient b (array)
int field_nin()
returns the on-site degree of freedom of the fermion field.
AFopr_Domainwall(AFOPR *fopr)
constructor.
void set_coefficients(const std::vector< real_t > b, const std::vector< real_t > c)
set coefficients if they depend in s.
AFIELD m_y4
working 4d vectors.
void set_config(Field *U)
sets the gauge configuration.
std::string get_mode() const
returns the current mult mode.
void mult_dag(AFIELD &v, const AFIELD &w)
hermitian conjugate of mult.
void set_parameters(const Parameters ¶ms)
sets parameters by a Parameter object: to be implemented in a subclass.
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
std::vector< real_t > m_e
Container of Field-type object.
void Hdag(AFIELD &, const AFIELD &)
void mult_R(AFIELD &, const AFIELD &)
void mult_gm5R(AFIELD &, const AFIELD &)
void D(AFIELD &, const AFIELD &)
void Ddag(AFIELD &, const AFIELD &)
void H(AFIELD &, const AFIELD &)
void L_inv(AFIELD &, const AFIELD &)
void mult_chproj_4d(AFIELD &, const AFIELD &, const int ipm)
void init(const Parameters ¶ms)
initial setup.