mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Hadrons: cleaning cleaning...
This commit is contained in:
parent
dcdd891d7d
commit
d0244a059f
@ -35,10 +35,9 @@ See the full license in the file "LICENSE" in the top level distribution directo
|
|||||||
|
|
||||||
BEGIN_HADRONS_NAMESPACE
|
BEGIN_HADRONS_NAMESPACE
|
||||||
|
|
||||||
////////////////////////////////
|
/******************************************************************************
|
||||||
// A2A Modes
|
* Classes to generate V & W all-to-all vectors *
|
||||||
////////////////////////////////
|
******************************************************************************/
|
||||||
|
|
||||||
template <typename FImpl>
|
template <typename FImpl>
|
||||||
class A2AVectorsSchurDiagTwo
|
class A2AVectorsSchurDiagTwo
|
||||||
{
|
{
|
||||||
@ -48,14 +47,20 @@ public:
|
|||||||
public:
|
public:
|
||||||
A2AVectorsSchurDiagTwo(FMat &action, Solver &solver);
|
A2AVectorsSchurDiagTwo(FMat &action, Solver &solver);
|
||||||
virtual ~A2AVectorsSchurDiagTwo(void) = default;
|
virtual ~A2AVectorsSchurDiagTwo(void) = default;
|
||||||
void makeLowModeV(FermionField &vout, const FermionField &evec, const Real &eval);
|
void makeLowModeV(FermionField &vout,
|
||||||
void makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &evec, const Real &eval);
|
const FermionField &evec, const Real &eval);
|
||||||
void makeLowModeW(FermionField &wout, const FermionField &evec, const Real &eval);
|
void makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d,
|
||||||
void makeLowModeW5D(FermionField &wout_4d, FermionField &wout_5d, const FermionField &evec, const Real &eval);
|
const FermionField &evec, const Real &eval);
|
||||||
|
void makeLowModeW(FermionField &wout,
|
||||||
|
const FermionField &evec, const Real &eval);
|
||||||
|
void makeLowModeW5D(FermionField &wout_4d, FermionField &wout_5d,
|
||||||
|
const FermionField &evec, const Real &eval);
|
||||||
void makeHighModeV(FermionField &vout, const FermionField &noise);
|
void makeHighModeV(FermionField &vout, const FermionField &noise);
|
||||||
void makeHighModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &noise_5d);
|
void makeHighModeV5D(FermionField &vout_4d, FermionField &vout_5d,
|
||||||
|
const FermionField &noise_5d);
|
||||||
void makeHighModeW(FermionField &wout, const FermionField &noise);
|
void makeHighModeW(FermionField &wout, const FermionField &noise);
|
||||||
void makeHighModeW5D(FermionField &vout_5d, FermionField &wout_5d, const FermionField &noise_5d);
|
void makeHighModeW5D(FermionField &vout_5d, FermionField &wout_5d,
|
||||||
|
const FermionField &noise_5d);
|
||||||
private:
|
private:
|
||||||
FMat &action_;
|
FMat &action_;
|
||||||
Solver &solver_;
|
Solver &solver_;
|
||||||
@ -65,6 +70,9 @@ private:
|
|||||||
SchurDiagTwoOperator<FMat, FermionField> op_;
|
SchurDiagTwoOperator<FMat, FermionField> op_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* A2AVectorsSchurDiagTwo template implementation *
|
||||||
|
******************************************************************************/
|
||||||
template <typename FImpl>
|
template <typename FImpl>
|
||||||
A2AVectorsSchurDiagTwo<FImpl>::A2AVectorsSchurDiagTwo(FMat &action, Solver &solver)
|
A2AVectorsSchurDiagTwo<FImpl>::A2AVectorsSchurDiagTwo(FMat &action, Solver &solver)
|
||||||
: action_(action)
|
: action_(action)
|
||||||
@ -107,7 +115,6 @@ void A2AVectorsSchurDiagTwo<FImpl>::makeLowModeV(FermionField &vout, const Fermi
|
|||||||
assert(tmp_.checkerboard == Odd);
|
assert(tmp_.checkerboard == Odd);
|
||||||
sol_o_ = (1.0 / eval) * tmp_;
|
sol_o_ = (1.0 / eval) * tmp_;
|
||||||
assert(sol_o_.checkerboard == Odd);
|
assert(sol_o_.checkerboard == Odd);
|
||||||
|
|
||||||
setCheckerboard(vout, sol_e_);
|
setCheckerboard(vout, sol_e_);
|
||||||
assert(sol_e_.checkerboard == Even);
|
assert(sol_e_.checkerboard == Even);
|
||||||
setCheckerboard(vout, sol_o_);
|
setCheckerboard(vout, sol_o_);
|
||||||
@ -145,7 +152,6 @@ void A2AVectorsSchurDiagTwo<FImpl>::makeLowModeW(FermionField &wout, const Fermi
|
|||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
op_.Mpc(src_o_, sol_o_);
|
op_.Mpc(src_o_, sol_o_);
|
||||||
assert(sol_o_.checkerboard == Odd);
|
assert(sol_o_.checkerboard == Odd);
|
||||||
|
|
||||||
setCheckerboard(wout, sol_e_);
|
setCheckerboard(wout, sol_e_);
|
||||||
assert(sol_e_.checkerboard == Even);
|
assert(sol_e_.checkerboard == Even);
|
||||||
setCheckerboard(wout, sol_o_);
|
setCheckerboard(wout, sol_o_);
|
||||||
|
@ -206,6 +206,9 @@ void makeFileDir(const std::string filename, GridBase *g);
|
|||||||
#define _HADRONS_SCHUR_SOLVE_(conv) SchurRedBlack##conv##Solve
|
#define _HADRONS_SCHUR_SOLVE_(conv) SchurRedBlack##conv##Solve
|
||||||
#define HADRONS_SCHUR_SOLVE(conv) _HADRONS_SCHUR_SOLVE_(conv)
|
#define HADRONS_SCHUR_SOLVE(conv) _HADRONS_SCHUR_SOLVE_(conv)
|
||||||
#define HADRONS_DEFAULT_SCHUR_SOLVE HADRONS_SCHUR_SOLVE(HADRONS_DEFAULT_SCHUR)
|
#define HADRONS_DEFAULT_SCHUR_SOLVE HADRONS_SCHUR_SOLVE(HADRONS_DEFAULT_SCHUR)
|
||||||
|
#define _HADRONS_SCHUR_A2A_(conv) A2AVectorsSchur##conv
|
||||||
|
#define HADRONS_SCHUR_A2A(conv) _HADRONS_SCHUR_A2A_(conv)
|
||||||
|
#define HADRONS_DEFAULT_SCHUR_A2A HADRONS_SCHUR_A2A(HADRONS_DEFAULT_SCHUR)
|
||||||
|
|
||||||
// stringify macro
|
// stringify macro
|
||||||
#define _HADRONS_STR(x) #x
|
#define _HADRONS_STR(x) #x
|
||||||
|
@ -60,7 +60,7 @@ class TA2AVectors : public Module<A2AVectorsPar>
|
|||||||
public:
|
public:
|
||||||
FERM_TYPE_ALIASES(FImpl,);
|
FERM_TYPE_ALIASES(FImpl,);
|
||||||
SOLVER_TYPE_ALIASES(FImpl,);
|
SOLVER_TYPE_ALIASES(FImpl,);
|
||||||
typedef A2AVectorsSchurDiagTwo<FImpl> A2A;
|
typedef HADRONS_DEFAULT_SCHUR_A2A<FImpl> A2A;
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
TA2AVectors(const std::string name);
|
TA2AVectors(const std::string name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user