58 assert(NvolF == Nvol);
63 Field xi(NinF, NvolF, NexF);
69 Field v2(NinF, NvolF, NexF);
73 Field v1(NinF, NvolF, NexF);
83 const double H_psf = xi.
norm2();
108 Field v1(NinF, NvolF, NexF);
112 Field v2(NinF, NvolF, NexF);
119 const double H_psf =
dot(v1, v2);
131 const int Nin =
m_U->
nin();
133 const int Nex =
m_U->
nex();
137 assert(force.
nin() == Nin);
138 assert(force.
nvol() == Nvol);
139 assert(force.
nex() == Nex);
152 Field v1(NinF, NvolF, NexF);
156 Field v2(NinF, NvolF, NexF);
161 vout.
general(
m_vl,
" Solver: Nconv = %6d diff = %12.6e\n", Nconv, diff);
165 Field force_tmp(Nin, Nvol, Nex);
168 axpy(force, -1.0, force_tmp);
172 axpy(force, -1.0, force_tmp);
174 double Fave, Fmax, Fdev;
175 force.
stat(Fave, Fmax, Fdev);
176 vout.
general(
m_vl,
" Fratio_ave = %12.6f Fratio_max = %12.6f Fratio_dev = %12.6f\n",
double dot(const Field &y, const Field &x)
virtual void set_config(Field *)=0
static const std::string class_name
double calcH()
calculate Hamiltonian of this action term.
void general(const char *format,...)
virtual void set_mode(const std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
virtual void set_config(Field *)=0
setting pointer to the gauge configuration.
Container of Field-type object.
virtual void set_config(Field *)=0
void set_config(Field *U)
setting pointer to the gauge configuration.
virtual void force_core1(Field &, const Field &, const Field &)
Force * m_fopr_prec_force
virtual void gauss_lex_global(Field &)
gaussian random number defined on global lattice.
virtual int field_nin()=0
returns the on-site d.o.f. for which the fermion operator is defined.
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
double langevin(RandomNumbers *)
Langevis step.
virtual void set_mode(const std::string &mode)
in Force, setting the mode is optional when H is nonhermitian.
virtual void invert_DdagD(Field &, const Field &, int &, double &)=0
virtual int field_nex()=0
returns the external d.o.f. for which the fermion operator is defined.
virtual void force_core(Field &, const Field &)
Bridge::VerboseLevel get_VerboseLevel() const
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Bridge::VerboseLevel m_vl
Base class of random number generators.
virtual void mult(Field &, const Field &)=0
multiplies fermion operator to a given field (2nd argument)
void stat(double &Fave, double &Fmax, double &Fdev) const
determines the statistics of the field. average, maximum value, and deviation is determined over glob...
void force(Field &)
returns force for molcular dynamical update of conjugate momenta.
virtual void mult_dag(Field &, const Field &)
hermitian conjugate of mult(Field&, const Field&).
virtual int field_nvol()=0
returns the volume for which the fermion operator is defined.