52 assert(zdata->db==
Ls);
60 for(
int i=0; i <
Ls ; i++){
61 Beta[i] = zdata -> beta[i];
67 for(
int i=0; i < Ls-1 ; i++){
68 sqrt_cc[i]= std::sqrt(cc[i]*cc[i+1]);
70 sqrt_cc[Ls-2]=std::sqrt(cc[Ls-2]);
73 ZoloHiInv =1.0/zolo_hi;
74 dw_diag = (4.0-this->M5)*ZoloHiInv;
79 for(
int s=0;s<Ls;s++){
80 Aee[s] = sign * Beta[s] * dw_diag;
86 for(
int s=1;s<Ls;s++){
87 See[s] = Aee[s] - 1.0/See[s-1];
89 for(
int s=0;s<Ls;s++){
90 std::cout<<
GridLogMessage <<
"s = "<<s<<
" Beta "<<Beta[s]<<
" Aee "<<Aee[s] <<
" See "<<See[s] <<std::endl;
101 FermionField D(psi.Grid());
106 for(
int s=0;s<
Ls;s++){
109 }
else if ( s==(Ls-1) ){
110 RealD R=(1.0+mass)/(1.0-mass);
111 ag5xpby_ssp(chi,Beta[s]*ZoloHiInv,D,sqrt_cc[s-1],psi,s,s-1);
114 ag5xpby_ssp(chi,cc[s]*Beta[s]*sign*ZoloHiInv,D,sqrt_cc[s],psi,s,s+1);
115 axpby_ssp(chi,1.0,chi,sqrt_cc[s-1],psi,s,s-1);
132 this->
DhopDir(psi,chi,dir,disp);
135 for(
int s=0;s<
Ls;s++){
139 ag5xpby_ssp(chi,cc[s]*Beta[s]*sign*ZoloHiInv,chi,0.0,chi,s,s);
151 for(
int p=0;p<chi.size();p++){
153 for(
int s=0;s<
Ls;s++){
169 if ( psi.Checkerboard() ==
Odd ) {
176 for(
int s=0;s<
Ls;s++){
188 this->
Meooe(psi,chi);
196 for(
int s=0;s<
Ls;s++){
199 }
else if ( s==(
Ls-1) ){
215 this->
Mooee(psi,chi);
224 for(
int s=1;s<
Ls;s++){
228 for(
int s=0;s<
Ls;s++){
233 for(
int s=
Ls-2;s>=0;s--){
249 FermionField D(V.Grid());
252 for(
int s=0;s<
Ls;s++){
267 FermionField D(V.Grid());
270 for(
int s=0;s<
Ls;s++){
285 FermionField D(V.Grid());
288 for(
int s=0;s<
Ls;s++){
309 FiveDimGrid, FiveDimRedBlackGrid,
310 FourDimGrid, FourDimRedBlackGrid,
M5,p),
321 conformable(solution5d.Grid(),this->FermionGrid());
329 conformable(imported5d.Grid(),this->FermionGrid());
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 ag5xpby_ssp(Lattice< vobj > &z, Coeff a, const Lattice< vobj > &x, Coeff b, const Lattice< vobj > &y, int s, int sp)
void axpby_ssp(Lattice< vobj > &z, Coeff a, const Lattice< vobj > &x, Coeff b, const Lattice< vobj > &y, int s, int sp)
void axpbg5y_ssp(Lattice< vobj > &z, Coeff a, const Lattice< vobj > &x, Coeff b, const Lattice< vobj > &y, int s, int sp)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
static constexpr int DaggerNo
static INTERNAL_PRECISION U
virtual void Mdir(const FermionField &in, FermionField &out, int dir, int disp)
virtual void Meooe(const FermionField &in, FermionField &out)
virtual void MdirAll(const FermionField &in, std::vector< FermionField > &out)
virtual void MeoDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
std::vector< double > cc_d
virtual void M(const FermionField &in, FermionField &out)
virtual void MooeeInvDag(const FermionField &in, FermionField &out)
virtual void Mooee(const FermionField &in, FermionField &out)
std::vector< double > Beta
std::vector< double > See
virtual void Mdag(const FermionField &in, FermionField &out)
virtual void ImportPhysicalFermionSource(const FermionField &input4d, FermionField &imported5d)
void SetCoefficientsZolotarev(RealD zolo_hi, Approx::zolotarev_data *zdata)
std::vector< double > sqrt_cc
virtual void MoeDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
virtual void MooeeDag(const FermionField &in, FermionField &out)
virtual void ExportPhysicalFermionSolution(const FermionField &solution5d, FermionField &exported4d)
void SetCoefficientsTanh(Approx::zolotarev_data *zdata, RealD scale)
ContinuedFractionFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, RealD _mass, RealD M5, const ImplParams &p=ImplParams())
virtual void MeooeDag(const FermionField &in, FermionField &out)
virtual void MDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
virtual void MooeeInv(const FermionField &in, FermionField &out)
virtual void Dminus(const FermionField &psi, FermionField &chi)
GridBase * FermionGrid(void)
virtual void DhopDerivEO(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void DW(const FermionField &in, FermionField &out, int dag)
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp)
void DhopDirAll(const FermionField &in, std::vector< FermionField > &out)
WilsonFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, double _M5, const ImplParams &p=ImplParams())
virtual void DhopDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void DhopEO(const FermionField &in, FermionField &out, int dag)
virtual void DhopDerivOE(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void DhopOE(const FermionField &in, FermionField &out, int dag)