32template <
class Fieldi,
class Fieldo,IfNotSame<Fieldi,Fieldo> X=0>
33inline void convert(
const Fieldi &from,Fieldo &to)
37template <
class Fieldi,
class Fieldo,IfSame<Fieldi,Fieldo> X=0>
38inline void convert(
const Fieldi &from,Fieldo &to)
48template<
class Matrixo,
class Matrixi,
class PVinverter,
class SchurSolver,
class Guesser>
72 PVinverter &_PauliVillarsSolvero,
73 SchurSolver &_SchurSolveri,
90 std::cout <<
GridLogMessage<<
" ************************************************" << std::endl;
91 std::cout <<
GridLogMessage<<
" MADWF-like algorithm " << std::endl;
92 std::cout <<
GridLogMessage<<
" ************************************************" << std::endl;
119 assert( (src_grid ==
Mato.GaugeGrid()) || (src_grid ==
Mato.FermionGrid()));
121 if ( src_grid ==
Mato.GaugeGrid() ) {
122 Mato.ImportPhysicalFermionSource(src,b);
183 std::cout <<
GridLogMessage <<
"***************************************" <<std::endl;
185 std::cout <<
GridLogMessage <<
"***************************************" <<std::endl;
196 std::cout <<
GridLogMessage <<
"Residual " << i <<
": " << resid << std::endl;
197 std::cout <<
GridLogMessage <<
"***************************************" <<std::endl;
199 if(
callback != NULL) (*callback)(resid);
206 std::cout <<
GridLogMessage <<
"MADWF : Exceeded maxiter "<<std::endl;
accelerator_inline Grid_simd< S, V > sqrt(const Grid_simd< S, V > &r)
RealD norm2(const Lattice< vobj > &arg)
void InsertSlice(const Lattice< vobj > &lowDim, Lattice< vobj > &higherDim, int slice, int orthog)
void ExtractSlice(Lattice< vobj > &lowDim, const Lattice< vobj > &higherDim, int slice, int orthog)
void precisionChange(Lattice< VobjOut > &out, const Lattice< VobjIn > &in, const precisionChangeWorkspace &workspace)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
void convert(const Fieldi &from, Fieldo &to)
#define NAMESPACE_BEGIN(A)
Matrixo::FermionField FermionFieldo
void operator()(const FermionFieldo &src, FermionFieldo &sol5)
MADWF(Matrixo &_Mato, Matrixi &_Mati, PVinverter &_PauliVillarsSolvero, SchurSolver &_SchurSolveri, Guesser &_Guesseri, RealD resid, int _maxiter, MADWFinnerIterCallbackBase *_callback=NULL)
SchurSolver & SchurSolveri
Matrixi::FermionField FermionFieldi
MADWFinnerIterCallbackBase * callback
PVinverter & PauliVillarsSolvero
virtual ~MADWFinnerIterCallbackBase()
virtual void operator()(const RealD current_resid)