mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-25 05:05:56 +01:00
Moving the code to SchurFactorizedFermionOperator
This commit is contained in:
parent
d7a887baf1
commit
e009a37f6e
@ -47,7 +47,6 @@ public:
|
||||
typedef Lattice<LorentzScalarType> LatticeLorentzScalarType;
|
||||
typedef Lattice<ScalarType> LatticeScalarType;
|
||||
|
||||
Coordinate Block;
|
||||
DDHMCFilter Filter;
|
||||
const int Omega=0;
|
||||
const int OmegaBar=1;
|
||||
@ -160,36 +159,6 @@ public:
|
||||
Op.M(tmp,out);
|
||||
ProjectOmegaBar(out);
|
||||
};
|
||||
|
||||
void SolveOmega (FermionOperator<Impl> &Op,FermionField &in,FermionField &out){ assert(0); };
|
||||
void SolveOmegaBar(FermionOperator<Impl> &Op,FermionField &in,FermionField &out){ assert(0); };
|
||||
void SolveOmegaAndOmegaBar(FermionOperator<Impl> &Op,FermionField &in,FermionField &out){ assert(0); };
|
||||
void dInverse (FermionOperator<Impl> &Op,FermionField &in,FermionField &out){ assert(0); };
|
||||
|
||||
// R = Pdbar - Pdbar DomegaInv Dd DomegabarInv Ddbar
|
||||
void R(FermionOperator<Impl> &Op,FermionOperator<Impl> &OpDirichlet,FermionField &in,FermionField &out)
|
||||
{
|
||||
FermionField tmp1(Op.FermionGrid());
|
||||
FermionField tmp2(Op.FermionGrid());
|
||||
dBoundaryBar(Op,in,tmp1);
|
||||
SolveOmegaBar(OpDirichlet,tmp1,tmp2); // 1/2 cost
|
||||
dBoundary(Op,tmp2,tmp1);
|
||||
SolveOmega(OpDirichlet,tmp1,tmp2); // 1/2 cost
|
||||
out = in - tmp2 ;
|
||||
ProjectBoundaryBar(out);
|
||||
};
|
||||
|
||||
// R = Pdbar - Pdbar Dinv Ddbar
|
||||
void Rinverse(FermionField &in,FermionField &out)
|
||||
{
|
||||
FermionField tmp1(NumOp.FermionGrid());
|
||||
out = in;
|
||||
ProjectBoundaryBar(out);
|
||||
dInverse(out,tmp1);
|
||||
ProjectBoundaryBar(tmp1);
|
||||
out = out -tmp1;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
template<class Impl>
|
||||
|
Loading…
x
Reference in New Issue
Block a user