mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Added a Hadrons module that computes the all-to-all v and w vectors
This commit is contained in:
		
							
								
								
									
										296
									
								
								extras/Hadrons/AllToAllVectors.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										296
									
								
								extras/Hadrons/AllToAllVectors.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,296 @@
 | 
			
		||||
#ifndef A2A_Vectors_hpp_
 | 
			
		||||
#define A2A_Vectors_hpp_
 | 
			
		||||
 | 
			
		||||
#include <Grid/Hadrons/Global.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Environment.hpp>
 | 
			
		||||
 | 
			
		||||
BEGIN_HADRONS_NAMESPACE
 | 
			
		||||
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
// A2A Modes
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
 | 
			
		||||
template <class Field, class Matrix>
 | 
			
		||||
class A2AModesSchurDiagTwo
 | 
			
		||||
{
 | 
			
		||||
  public:
 | 
			
		||||
    A2AModesSchurDiagTwo(void) = default;
 | 
			
		||||
    virtual ~A2AModesSchurDiagTwo(void) = default;
 | 
			
		||||
 | 
			
		||||
    void low_mode_v(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &vout)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        GridBase *grid = _Matrix.RedBlackGrid();
 | 
			
		||||
 | 
			
		||||
        Field src_o(grid);
 | 
			
		||||
        Field sol_e(grid);
 | 
			
		||||
        Field sol_o(grid);
 | 
			
		||||
        Field tmp(grid);
 | 
			
		||||
 | 
			
		||||
        pickCheckerboard(Odd, src_o, evec);
 | 
			
		||||
        pickCheckerboard(Even, sol_e, vout);
 | 
			
		||||
        pickCheckerboard(Odd, sol_o, vout);
 | 
			
		||||
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        // v_ie = -(1/eval_i)* Mee Meo MooInv evec_i
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        _Matrix.MooeeInv(src_o, tmp);
 | 
			
		||||
        assert(tmp.checkerboard == Odd);
 | 
			
		||||
        _Matrix.Meooe(tmp, sol_e);
 | 
			
		||||
        assert(sol_e.checkerboard == Even);
 | 
			
		||||
        _Matrix.Mooee(sol_e, tmp);
 | 
			
		||||
        assert(tmp.checkerboard == Even);
 | 
			
		||||
        sol_e = -(1.0 / eval) * tmp;
 | 
			
		||||
        assert(sol_e.checkerboard == Even);
 | 
			
		||||
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        // v_io = -(1/eval_i)* MooInv evec_i
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        _Matrix.MooeeInv(src_o, tmp);
 | 
			
		||||
        assert(tmp.checkerboard == Odd);
 | 
			
		||||
        sol_o = -(1.0 / eval) * tmp;
 | 
			
		||||
        assert(sol_o.checkerboard == Odd);
 | 
			
		||||
 | 
			
		||||
        setCheckerboard(vout, sol_e);
 | 
			
		||||
        assert(sol_e.checkerboard == Even);
 | 
			
		||||
        setCheckerboard(vout, sol_o);
 | 
			
		||||
        assert(sol_o.checkerboard == Odd);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void low_mode_w(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
        GridBase *grid = _Matrix.RedBlackGrid();
 | 
			
		||||
        SchurDiagTwoOperator<Matrix, Field> _HermOpEO(_Matrix);
 | 
			
		||||
 | 
			
		||||
        Field src_o(grid);
 | 
			
		||||
        Field sol_e(grid);
 | 
			
		||||
        Field sol_o(grid);
 | 
			
		||||
        Field tmp(grid);
 | 
			
		||||
 | 
			
		||||
        GridBase *fgrid = _Matrix.Grid();
 | 
			
		||||
        Field tmp_out(fgrid);
 | 
			
		||||
 | 
			
		||||
        pickCheckerboard(Odd, src_o, evec);
 | 
			
		||||
        pickCheckerboard(Even, sol_e, wout);
 | 
			
		||||
        pickCheckerboard(Odd, sol_o, wout);
 | 
			
		||||
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        // w_ie = MeeInvDag MoeDag Doo evec_i
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        _HermOpEO.Mpc(src_o, sol_e);
 | 
			
		||||
        assert(sol_e.checkerboard == Odd);
 | 
			
		||||
        _Matrix.MeooeDag(sol_e, tmp);
 | 
			
		||||
        assert(tmp.checkerboard == Even);
 | 
			
		||||
        _Matrix.MooeeInvDag(tmp, sol_e);
 | 
			
		||||
        assert(sol_e.checkerboard == Even);
 | 
			
		||||
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        // w_io = Doo evec_i
 | 
			
		||||
        /////////////////////////////////////////////////////
 | 
			
		||||
        _HermOpEO.Mpc(src_o, sol_o);
 | 
			
		||||
        assert(sol_o.checkerboard == Odd);
 | 
			
		||||
 | 
			
		||||
        setCheckerboard(tmp_out, sol_e);
 | 
			
		||||
        assert(sol_e.checkerboard == Even);
 | 
			
		||||
        setCheckerboard(tmp_out, sol_o);
 | 
			
		||||
        assert(sol_o.checkerboard == Odd);
 | 
			
		||||
 | 
			
		||||
        _Matrix.Dminus(tmp_out, wout);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void high_mode_v(Matrix &_Matrix, std::function<void(Field &, const Field &)> &Solver, const Field &source, Field &vout)
 | 
			
		||||
    {
 | 
			
		||||
        GridBase *fgrid = _Matrix.Grid();
 | 
			
		||||
        Field tmp(fgrid);
 | 
			
		||||
 | 
			
		||||
        _Matrix.Dminus(source, tmp);
 | 
			
		||||
        Solver(vout, tmp);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void high_mode_w(Matrix &_Matrix, const Field &source, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
        wout = source;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
// Low Modes
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
 | 
			
		||||
template <class Field, class Matrix>
 | 
			
		||||
class A2ALMSchurDiagTwo : public A2AModesSchurDiagTwo<Field, Matrix>
 | 
			
		||||
{
 | 
			
		||||
  private:
 | 
			
		||||
    const std::vector<Field> &evec;
 | 
			
		||||
    const std::vector<RealD> &eval;
 | 
			
		||||
    Matrix                   &action;
 | 
			
		||||
 | 
			
		||||
  public:
 | 
			
		||||
    A2ALMSchurDiagTwo(const std::vector<Field> &_evec, const std::vector<RealD> &_eval, Matrix &_action) : evec(_evec), eval(_eval), action(_action){};
 | 
			
		||||
    void operator()(int i, Field &vout, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
        this->low_mode_v(action, evec[i], eval[i], vout);
 | 
			
		||||
        this->low_mode_w(action, evec[i], eval[i], wout);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <class FineField, class CoarseField, class Matrix>
 | 
			
		||||
class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo<FineField, Matrix>
 | 
			
		||||
{
 | 
			
		||||
  private:
 | 
			
		||||
    const std::vector<FineField>   &subspace;
 | 
			
		||||
    const std::vector<CoarseField> &evec_coarse;
 | 
			
		||||
    const std::vector<RealD>       &eval_coarse;
 | 
			
		||||
    Matrix                         &action;
 | 
			
		||||
 | 
			
		||||
  public:
 | 
			
		||||
    A2ALMSchurDiagTwoCoarse(const std::vector<FineField> &_subspace, const std::vector<CoarseField> &_evec_coarse, const std::vector<RealD> &_eval_coarse, Matrix &_action)
 | 
			
		||||
        : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){};
 | 
			
		||||
 | 
			
		||||
    void operator()(int i, FineField &vout, FineField &wout)
 | 
			
		||||
    {
 | 
			
		||||
        FineField prom_evec(subspace[0]._grid);
 | 
			
		||||
        blockPromote(evec_coarse[i], prom_evec, subspace);
 | 
			
		||||
        this->low_mode_v(action, prom_evec, eval_coarse[i], vout);
 | 
			
		||||
        this->low_mode_w(action, prom_evec, eval_coarse[i], wout);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
// High Modes
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
 | 
			
		||||
template <class Field, class Matrix>
 | 
			
		||||
class A2AHMSchurDiagTwo : virtual public A2AModesSchurDiagTwo<Field, Matrix>
 | 
			
		||||
{
 | 
			
		||||
  public:
 | 
			
		||||
    void operator()(Matrix &_Matrix, std::function<void(Field &, const Field &)> &Solver, const Field &source, Field &vout, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
        this->high_mode_v(_Matrix, Solver, source, vout);
 | 
			
		||||
        this->high_mode_w(_Matrix, source, wout);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <class Field, class Matrix>
 | 
			
		||||
class A2AVectorsReturnHigh : public A2AModesSchurDiagTwo<Field, Matrix>
 | 
			
		||||
{
 | 
			
		||||
  private:
 | 
			
		||||
    Matrix &action;
 | 
			
		||||
    std::function<void(Field &, const Field &)> &Solver;
 | 
			
		||||
    const int Nh, Ls;
 | 
			
		||||
 | 
			
		||||
  public:
 | 
			
		||||
    std::vector<Field> w_high, v_high;
 | 
			
		||||
    A2AVectorsReturnHigh(Matrix &_action,
 | 
			
		||||
                         std::function<void(Field &, const Field &)> &_Solver,
 | 
			
		||||
                         const int _Nh, const int _Ls)
 | 
			
		||||
        : action(_action),
 | 
			
		||||
          Solver(_Solver),
 | 
			
		||||
          Nh(_Nh), Ls(_Ls)
 | 
			
		||||
    {
 | 
			
		||||
        GridBase *fgrid = action.Grid();
 | 
			
		||||
        resize(Nh, fgrid);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    void resize(const size_t size, GridBase *grid)
 | 
			
		||||
    {
 | 
			
		||||
        w_high.resize(size, grid);
 | 
			
		||||
        v_high.resize(size, grid);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void high_modes(Field &source, int i)
 | 
			
		||||
    {
 | 
			
		||||
        this->high_mode_v(action, Solver, source, v_high[i]);
 | 
			
		||||
        this->high_mode_w(action, source, w_high[i]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void operator()(int i, Field &vout, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
        if (Ls > 1)
 | 
			
		||||
        {
 | 
			
		||||
            vout = v_high[i];
 | 
			
		||||
            wout = w_high[i];
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            action.ExportPhysicalFermionSolution(v_high[i], vout);
 | 
			
		||||
            action.ExportPhysicalFermionSolution(w_high[i], wout);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
// Both Modes
 | 
			
		||||
////////////////////////////////
 | 
			
		||||
 | 
			
		||||
template <class Field, class Matrix>
 | 
			
		||||
class A2AVectorsReturn : public A2AModesSchurDiagTwo<Field, Matrix>
 | 
			
		||||
{
 | 
			
		||||
  private:
 | 
			
		||||
    const std::vector<Field> &evec;
 | 
			
		||||
    const std::vector<RealD> &eval;
 | 
			
		||||
    Matrix &action;
 | 
			
		||||
    std::function<void(Field &, const Field &)> &Solver;
 | 
			
		||||
    const int Nl, Nh, Ls;
 | 
			
		||||
 | 
			
		||||
  public:
 | 
			
		||||
    std::vector<Field> w_high, v_high;
 | 
			
		||||
 | 
			
		||||
    A2AVectorsReturn(const std::vector<Field> &_evec, const std::vector<RealD> &_eval,
 | 
			
		||||
                     Matrix &_action,
 | 
			
		||||
                     std::function<void(Field &, const Field &)> &_Solver,
 | 
			
		||||
                     const int _Nl, const int _Nh, const int _Ls)
 | 
			
		||||
        : evec(_evec), eval(_eval),
 | 
			
		||||
          action(_action),
 | 
			
		||||
          Solver(_Solver),
 | 
			
		||||
          Nl(_Nl), Nh(_Nh), Ls(_Ls)
 | 
			
		||||
    {
 | 
			
		||||
        GridBase *fgrid = action.Grid();
 | 
			
		||||
        resize(Nh, fgrid);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    void resize(const size_t size, GridBase *grid)
 | 
			
		||||
    {
 | 
			
		||||
        w_high.resize(size, grid);
 | 
			
		||||
        v_high.resize(size, grid);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void high_modes(Field &source, int i)
 | 
			
		||||
    {
 | 
			
		||||
        this->high_mode_v(action, Solver, source, v_high[i]);
 | 
			
		||||
        this->high_mode_w(action, source, w_high[i]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void operator()(int i, Field &vout, Field &wout)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        GridBase *fgrid = action.Grid();
 | 
			
		||||
        Field vtmp(fgrid);
 | 
			
		||||
        Field wtmp(fgrid);
 | 
			
		||||
        if (i < Nl)
 | 
			
		||||
        {   
 | 
			
		||||
            this->low_mode_v(action, evec[i], eval[i], vtmp);
 | 
			
		||||
            this->low_mode_w(action, evec[i], eval[i], wtmp);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            vtmp = v_high[i-Nl];
 | 
			
		||||
            wtmp = w_high[i-Nl];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (Ls > 1)
 | 
			
		||||
        {
 | 
			
		||||
            vout = vtmp;
 | 
			
		||||
            wout = wtmp;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            action.ExportPhysicalFermionSolution(vtmp, vout);
 | 
			
		||||
            action.ExportPhysicalFermionSolution(wtmp, wout);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
END_HADRONS_NAMESPACE
 | 
			
		||||
 | 
			
		||||
#endif // A2A_Vectors_hpp_
 | 
			
		||||
@@ -14,6 +14,7 @@ libHadrons_a_SOURCES = \
 | 
			
		||||
libHadrons_adir = $(pkgincludedir)/Hadrons
 | 
			
		||||
nobase_libHadrons_a_HEADERS = \
 | 
			
		||||
	$(modules_hpp)            \
 | 
			
		||||
	AllToAllVectors.hpp       \
 | 
			
		||||
	Application.hpp           \
 | 
			
		||||
	Environment.hpp           \
 | 
			
		||||
	Exceptions.hpp            \
 | 
			
		||||
 
 | 
			
		||||
@@ -1,51 +1,52 @@
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/DiscLoop.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonian.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WardIdentity.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/Gamma3pt.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/Baryon.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/Meson.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonian.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/DiscLoop.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/Gamma3pt.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WardIdentity.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MFermion/FreeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MFermion/GaugeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/SeqGamma.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Point.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Wall.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Z2.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/SeqConserved.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSink/Smear.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSink/Point.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/RBPrecCG.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MGauge/Unit.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MGauge/Random.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MGauge/FundtoHirep.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MGauge/StochEm.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MGauge/Unit.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Wall.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Point.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/Z2.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/SeqConserved.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSource/SeqGamma.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MUtilities/TestSeqGamma.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MUtilities/TestSeqConserved.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MLoop/NoiseLoop.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/FreeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/Scalar.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/ChargedProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/DWF.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/Wilson.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/WilsonClover.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/ZMobiusDWF.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/StochFreeField.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/Div.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TrMag.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/Grad.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/EMT.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TwoPoint.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TrKinetic.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/Div.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/StochFreeField.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TrPhi.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/Utils.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TransProj.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/Grad.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalarSUN/TrKinetic.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadEigenPack.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/ChargedProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/Scalar.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MScalar/FreeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadNersc.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadEigenPack.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadBinary.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MFermion/GaugeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MFermion/FreeProp.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/RBPrecCG.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/A2AVectors.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/Wilson.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/ZMobiusDWF.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/WilsonClover.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MAction/DWF.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSink/Point.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSink/Smear.hpp>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								extras/Hadrons/Modules/MSolver/A2AVectors.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								extras/Hadrons/Modules/MSolver/A2AVectors.cc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
#include <Grid/Hadrons/Modules/MSolver/A2AVectors.hpp>
 | 
			
		||||
 | 
			
		||||
using namespace Grid;
 | 
			
		||||
using namespace Hadrons;
 | 
			
		||||
using namespace MSolver;
 | 
			
		||||
 | 
			
		||||
template class Grid::Hadrons::MSolver::TA2AVectors<FIMPL, HADRONS_DEFAULT_LANCZOS_NBASIS>;
 | 
			
		||||
template class Grid::Hadrons::MSolver::TA2AVectors<ZFIMPL, HADRONS_DEFAULT_LANCZOS_NBASIS>;
 | 
			
		||||
							
								
								
									
										206
									
								
								extras/Hadrons/Modules/MSolver/A2AVectors.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								extras/Hadrons/Modules/MSolver/A2AVectors.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,206 @@
 | 
			
		||||
#ifndef Hadrons_MSolver_A2AVectors_hpp_
 | 
			
		||||
#define Hadrons_MSolver_A2AVectors_hpp_
 | 
			
		||||
 | 
			
		||||
#include <Grid/Hadrons/Global.hpp>
 | 
			
		||||
#include <Grid/Hadrons/Module.hpp>
 | 
			
		||||
#include <Grid/Hadrons/ModuleFactory.hpp>
 | 
			
		||||
#include <Grid/Hadrons/EigenPack.hpp>
 | 
			
		||||
#include <Grid/Hadrons/AllToAllVectors.hpp>
 | 
			
		||||
 | 
			
		||||
BEGIN_HADRONS_NAMESPACE
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 *                         A2AVectors                                 *
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
BEGIN_MODULE_NAMESPACE(MSolver)
 | 
			
		||||
 | 
			
		||||
class A2AVectorsPar: Serializable
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
  GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar,
 | 
			
		||||
                                  int, Ls,
 | 
			
		||||
                                  int, Nl,
 | 
			
		||||
                                  int, N,
 | 
			
		||||
                                  std::vector<std::string>, sources,
 | 
			
		||||
                                  std::string, action,
 | 
			
		||||
                                  std::string, eigenpack,
 | 
			
		||||
                                  std::string, solver);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
class TA2AVectors : public Module<A2AVectorsPar>
 | 
			
		||||
{
 | 
			
		||||
  public:
 | 
			
		||||
    FERM_TYPE_ALIASES(FImpl,);
 | 
			
		||||
    SOLVER_TYPE_ALIASES(FImpl,);
 | 
			
		||||
 | 
			
		||||
    typedef FermionEigenPack<FImpl> EPack;
 | 
			
		||||
    typedef CoarseFermionEigenPack<FImpl, nBasis> CoarseEPack;
 | 
			
		||||
 | 
			
		||||
    typedef A2AModesSchurDiagTwo<typename FImpl::FermionField, FMat> A2ABase;
 | 
			
		||||
    typedef A2AVectorsReturn<typename FImpl::FermionField, FMat> A2AReturn;
 | 
			
		||||
    typedef A2AVectorsReturnHigh<typename FImpl::FermionField, FMat> A2AReturnHigh;
 | 
			
		||||
 | 
			
		||||
  public:
 | 
			
		||||
    // constructor
 | 
			
		||||
    TA2AVectors(const std::string name);
 | 
			
		||||
    // destructor
 | 
			
		||||
    virtual ~TA2AVectors(void) {};
 | 
			
		||||
    // dependency relation
 | 
			
		||||
    virtual std::vector<std::string> getInput(void);
 | 
			
		||||
    virtual std::vector<std::string> getOutput(void);
 | 
			
		||||
    // setup
 | 
			
		||||
    virtual void setup(void);
 | 
			
		||||
    // execution
 | 
			
		||||
    virtual void execute(void);
 | 
			
		||||
 | 
			
		||||
  private:
 | 
			
		||||
    unsigned int Ls_;
 | 
			
		||||
    std::string retName_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors<FIMPL, HADRONS_DEFAULT_LANCZOS_NBASIS>), MSolver);
 | 
			
		||||
MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors<ZFIMPL, HADRONS_DEFAULT_LANCZOS_NBASIS>), MSolver);
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 *                 TA2AVectors implementation                             *
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
// constructor /////////////////////////////////////////////////////////////////
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
TA2AVectors<FImpl, nBasis>::TA2AVectors(const std::string name)
 | 
			
		||||
: Module<A2AVectorsPar>(name)
 | 
			
		||||
, retName_ (name + "_ret")
 | 
			
		||||
{}
 | 
			
		||||
 | 
			
		||||
// dependencies/products ///////////////////////////////////////////////////////
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
std::vector<std::string> TA2AVectors<FImpl, nBasis>::getInput(void)
 | 
			
		||||
{
 | 
			
		||||
    std::vector<std::string> in = {par().action, par().solver + "_subtract"};
 | 
			
		||||
 | 
			
		||||
    int n = par().sources.size();
 | 
			
		||||
 | 
			
		||||
    for (unsigned int t = 0; t < n; t += 1)
 | 
			
		||||
    {
 | 
			
		||||
        in.push_back(par().sources[t]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return in;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
std::vector<std::string> TA2AVectors<FImpl, nBasis>::getOutput(void)
 | 
			
		||||
{
 | 
			
		||||
    std::vector<std::string> out = {getName(), retName_};
 | 
			
		||||
 | 
			
		||||
    return out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// setup ///////////////////////////////////////////////////////////////////////
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
void TA2AVectors<FImpl, nBasis>::setup(void)
 | 
			
		||||
{
 | 
			
		||||
    int N = par().N;
 | 
			
		||||
    int Nl = par().Nl;
 | 
			
		||||
    int Nh = N - Nl;
 | 
			
		||||
    int Ls = par().Ls;
 | 
			
		||||
    Ls_ = env().getObjectLs(par().solver + "_subtract");
 | 
			
		||||
 | 
			
		||||
    auto &action = envGet(FMat, par().action);
 | 
			
		||||
    auto &solver = envGet(SolverFn, par().solver + "_subtract");
 | 
			
		||||
 | 
			
		||||
    GridBase *fgrid = action.Grid();
 | 
			
		||||
 | 
			
		||||
    envTmpLat(FermionField, "ferm_src", Ls_);
 | 
			
		||||
    envTmpLat(FermionField, "tmp");
 | 
			
		||||
 | 
			
		||||
    if (Nl > 0)
 | 
			
		||||
    {
 | 
			
		||||
        // Low modes
 | 
			
		||||
        auto &epack = envGet(EPack, par().eigenpack);
 | 
			
		||||
 | 
			
		||||
        LOG(Message) << "using a2a with eigenpack '"
 | 
			
		||||
                     << par().eigenpack << "' ("
 | 
			
		||||
                     << epack.evec.size() << " modes)" << std::endl;
 | 
			
		||||
 | 
			
		||||
        envCreateDerived(A2ABase, A2AReturn, retName_, Ls,
 | 
			
		||||
                         epack.evec, epack.eval,
 | 
			
		||||
                         action,
 | 
			
		||||
                         solver,
 | 
			
		||||
                         Nl, Nh, Ls);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        LOG(Message) << "using a2a with high modes only" << std::endl;
 | 
			
		||||
        envCreateDerived(A2ABase, A2AReturnHigh, retName_, Ls, action,
 | 
			
		||||
                         solver,
 | 
			
		||||
                         Nh, Ls);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// execution ///////////////////////////////////////////////////////////////////
 | 
			
		||||
template <typename FImpl, int nBasis>
 | 
			
		||||
void TA2AVectors<FImpl, nBasis>::execute(void)
 | 
			
		||||
{
 | 
			
		||||
    auto &action = envGet(FMat, par().action);
 | 
			
		||||
 | 
			
		||||
    int Nt = env().getDim(Tp);
 | 
			
		||||
    int Nl = par().Nl; // Number of low modes
 | 
			
		||||
    int Nc = FImpl::Dimension;
 | 
			
		||||
 | 
			
		||||
    // High modes
 | 
			
		||||
    auto sources = par().sources;
 | 
			
		||||
 | 
			
		||||
    envGetTmp(FermionField, ferm_src);
 | 
			
		||||
    envGetTmp(FermionField, tmp);
 | 
			
		||||
    int N_count = 0;
 | 
			
		||||
    for (unsigned int s = 0; s < Ns; ++s)
 | 
			
		||||
        for (unsigned int c = 0; c < Nc; ++c)
 | 
			
		||||
        for (unsigned int T = 0; T < Nt; T++)
 | 
			
		||||
        {
 | 
			
		||||
            auto &fullSrc = envGet(PropagatorField, sources[T]);
 | 
			
		||||
            // source conversion for 4D sources
 | 
			
		||||
            if (!env().isObject5d(sources[T]))
 | 
			
		||||
            {
 | 
			
		||||
                if (Ls_ == 1)
 | 
			
		||||
                {
 | 
			
		||||
                    PropToFerm<FImpl>(ferm_src, fullSrc, s, c);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    PropToFerm<FImpl>(tmp, fullSrc, s, c);
 | 
			
		||||
                    action.ImportPhysicalFermionSource(tmp, ferm_src);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // source conversion for 5D sources
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (Ls_ != env().getObjectLs(sources[T]))
 | 
			
		||||
                {
 | 
			
		||||
                    HADRONS_ERROR(Size, "Ls mismatch between quark action and source");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    PropToFerm<FImpl>(ferm_src, fullSrc, s, c);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (Nl > 0)
 | 
			
		||||
            {
 | 
			
		||||
                auto a2areturn = envGetDerived(A2ABase, A2AReturn, retName_);
 | 
			
		||||
                a2areturn.high_modes(ferm_src, N_count);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                auto a2areturnhigh = envGetDerived(A2ABase, A2AReturnHigh, retName_);
 | 
			
		||||
                a2areturnhigh.high_modes(ferm_src, N_count);
 | 
			
		||||
            }
 | 
			
		||||
            N_count++;
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
END_MODULE_NAMESPACE
 | 
			
		||||
 | 
			
		||||
END_HADRONS_NAMESPACE
 | 
			
		||||
 | 
			
		||||
#endif // Hadrons_MSolver_A2AVectors_hpp_
 | 
			
		||||
@@ -1,103 +1,105 @@
 | 
			
		||||
modules_cc =\
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianEye.cc \
 | 
			
		||||
  Modules/MContraction/Baryon.cc \
 | 
			
		||||
  Modules/MContraction/Meson.cc \
 | 
			
		||||
  Modules/MContraction/WeakNeutral4ptDisc.cc \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianNonEye.cc \
 | 
			
		||||
  Modules/MContraction/WardIdentity.cc \
 | 
			
		||||
  Modules/MContraction/DiscLoop.cc \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianNonEye.cc \
 | 
			
		||||
  Modules/MContraction/Meson.cc \
 | 
			
		||||
  Modules/MContraction/WardIdentity.cc \
 | 
			
		||||
  Modules/MContraction/Gamma3pt.cc \
 | 
			
		||||
  Modules/MFermion/FreeProp.cc \
 | 
			
		||||
  Modules/MFermion/GaugeProp.cc \
 | 
			
		||||
  Modules/MSource/Point.cc \
 | 
			
		||||
  Modules/MSource/Wall.cc \
 | 
			
		||||
  Modules/MSource/SeqConserved.cc \
 | 
			
		||||
  Modules/MSource/SeqGamma.cc \
 | 
			
		||||
  Modules/MSource/Z2.cc \
 | 
			
		||||
  Modules/MSink/Point.cc \
 | 
			
		||||
  Modules/MSink/Smear.cc \
 | 
			
		||||
  Modules/MSolver/RBPrecCG.cc \
 | 
			
		||||
  Modules/MSolver/LocalCoherenceLanczos.cc \
 | 
			
		||||
  Modules/MGauge/Unit.cc \
 | 
			
		||||
  Modules/MGauge/FundtoHirep.cc \
 | 
			
		||||
  Modules/MGauge/StochEm.cc \
 | 
			
		||||
  Modules/MGauge/Random.cc \
 | 
			
		||||
  Modules/MGauge/FundtoHirep.cc \
 | 
			
		||||
  Modules/MUtilities/TestSeqGamma.cc \
 | 
			
		||||
  Modules/MSource/Wall.cc \
 | 
			
		||||
  Modules/MSource/SeqConserved.cc \
 | 
			
		||||
  Modules/MSource/Z2.cc \
 | 
			
		||||
  Modules/MSource/SeqGamma.cc \
 | 
			
		||||
  Modules/MSource/Point.cc \
 | 
			
		||||
  Modules/MUtilities/TestSeqConserved.cc \
 | 
			
		||||
  Modules/MUtilities/TestSeqGamma.cc \
 | 
			
		||||
  Modules/MLoop/NoiseLoop.cc \
 | 
			
		||||
  Modules/MScalar/FreeProp.cc \
 | 
			
		||||
  Modules/MScalar/ChargedProp.cc \
 | 
			
		||||
  Modules/MAction/Wilson.cc \
 | 
			
		||||
  Modules/MAction/ZMobiusDWF.cc \
 | 
			
		||||
  Modules/MAction/WilsonClover.cc \
 | 
			
		||||
  Modules/MAction/DWF.cc \
 | 
			
		||||
  Modules/MScalarSUN/TrPhi.cc \
 | 
			
		||||
  Modules/MScalarSUN/Grad.cc \
 | 
			
		||||
  Modules/MScalarSUN/TimeMomProbe.cc \
 | 
			
		||||
  Modules/MScalarSUN/TrMag.cc \
 | 
			
		||||
  Modules/MScalarSUN/TrKinetic.cc \
 | 
			
		||||
  Modules/MScalarSUN/EMT.cc \
 | 
			
		||||
  Modules/MScalarSUN/ShiftProbe.cc \
 | 
			
		||||
  Modules/MScalarSUN/Grad.cc \
 | 
			
		||||
  Modules/MScalarSUN/TransProj.cc \
 | 
			
		||||
  Modules/MScalarSUN/StochFreeField.cc \
 | 
			
		||||
  Modules/MScalarSUN/TwoPoint.cc \
 | 
			
		||||
  Modules/MScalarSUN/TwoPointNPR.cc \
 | 
			
		||||
  Modules/MScalarSUN/EMT.cc \
 | 
			
		||||
  Modules/MScalarSUN/ShiftProbe.cc \
 | 
			
		||||
  Modules/MScalarSUN/TrKinetic.cc \
 | 
			
		||||
  Modules/MScalarSUN/Div.cc \
 | 
			
		||||
  Modules/MScalarSUN/TimeMomProbe.cc \
 | 
			
		||||
  Modules/MScalar/FreeProp.cc \
 | 
			
		||||
  Modules/MScalar/ChargedProp.cc \
 | 
			
		||||
  Modules/MIO/LoadCoarseEigenPack.cc \
 | 
			
		||||
  Modules/MIO/LoadNersc.cc \
 | 
			
		||||
  Modules/MIO/LoadEigenPack.cc \
 | 
			
		||||
  Modules/MIO/LoadBinary.cc \
 | 
			
		||||
  Modules/MIO/LoadNersc.cc \
 | 
			
		||||
  Modules/MIO/LoadCoarseEigenPack.cc
 | 
			
		||||
  Modules/MFermion/FreeProp.cc \
 | 
			
		||||
  Modules/MFermion/GaugeProp.cc \
 | 
			
		||||
  Modules/MSolver/LocalCoherenceLanczos.cc \
 | 
			
		||||
  Modules/MSolver/A2AVectors.cc \
 | 
			
		||||
  Modules/MSolver/RBPrecCG.cc \
 | 
			
		||||
  Modules/MAction/WilsonClover.cc \
 | 
			
		||||
  Modules/MAction/Wilson.cc \
 | 
			
		||||
  Modules/MAction/DWF.cc \
 | 
			
		||||
  Modules/MAction/ZMobiusDWF.cc \
 | 
			
		||||
  Modules/MSink/Point.cc \
 | 
			
		||||
  Modules/MSink/Smear.cc
 | 
			
		||||
 | 
			
		||||
modules_hpp =\
 | 
			
		||||
  Modules/MContraction/WeakNeutral4ptDisc.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianEye.hpp \
 | 
			
		||||
  Modules/MContraction/DiscLoop.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianNonEye.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonian.hpp \
 | 
			
		||||
  Modules/MContraction/WardIdentity.hpp \
 | 
			
		||||
  Modules/MContraction/Gamma3pt.hpp \
 | 
			
		||||
  Modules/MContraction/Baryon.hpp \
 | 
			
		||||
  Modules/MContraction/Meson.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonian.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianNonEye.hpp \
 | 
			
		||||
  Modules/MContraction/DiscLoop.hpp \
 | 
			
		||||
  Modules/MContraction/WeakNeutral4ptDisc.hpp \
 | 
			
		||||
  Modules/MContraction/Gamma3pt.hpp \
 | 
			
		||||
  Modules/MContraction/WardIdentity.hpp \
 | 
			
		||||
  Modules/MContraction/WeakHamiltonianEye.hpp \
 | 
			
		||||
  Modules/MFermion/FreeProp.hpp \
 | 
			
		||||
  Modules/MFermion/GaugeProp.hpp \
 | 
			
		||||
  Modules/MSource/SeqGamma.hpp \
 | 
			
		||||
  Modules/MSource/Point.hpp \
 | 
			
		||||
  Modules/MSource/Wall.hpp \
 | 
			
		||||
  Modules/MSource/Z2.hpp \
 | 
			
		||||
  Modules/MSource/SeqConserved.hpp \
 | 
			
		||||
  Modules/MSink/Smear.hpp \
 | 
			
		||||
  Modules/MSink/Point.hpp \
 | 
			
		||||
  Modules/MSolver/LocalCoherenceLanczos.hpp \
 | 
			
		||||
  Modules/MSolver/RBPrecCG.hpp \
 | 
			
		||||
  Modules/MGauge/Unit.hpp \
 | 
			
		||||
  Modules/MGauge/Random.hpp \
 | 
			
		||||
  Modules/MGauge/FundtoHirep.hpp \
 | 
			
		||||
  Modules/MGauge/StochEm.hpp \
 | 
			
		||||
  Modules/MGauge/Unit.hpp \
 | 
			
		||||
  Modules/MSource/Wall.hpp \
 | 
			
		||||
  Modules/MSource/Point.hpp \
 | 
			
		||||
  Modules/MSource/Z2.hpp \
 | 
			
		||||
  Modules/MSource/SeqConserved.hpp \
 | 
			
		||||
  Modules/MSource/SeqGamma.hpp \
 | 
			
		||||
  Modules/MUtilities/TestSeqGamma.hpp \
 | 
			
		||||
  Modules/MUtilities/TestSeqConserved.hpp \
 | 
			
		||||
  Modules/MLoop/NoiseLoop.hpp \
 | 
			
		||||
  Modules/MScalar/FreeProp.hpp \
 | 
			
		||||
  Modules/MScalar/Scalar.hpp \
 | 
			
		||||
  Modules/MScalar/ChargedProp.hpp \
 | 
			
		||||
  Modules/MAction/DWF.hpp \
 | 
			
		||||
  Modules/MAction/Wilson.hpp \
 | 
			
		||||
  Modules/MAction/WilsonClover.hpp \
 | 
			
		||||
  Modules/MAction/ZMobiusDWF.hpp \
 | 
			
		||||
  Modules/MScalarSUN/StochFreeField.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TwoPointNPR.hpp \
 | 
			
		||||
  Modules/MScalarSUN/ShiftProbe.hpp \
 | 
			
		||||
  Modules/MScalarSUN/Div.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TimeMomProbe.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TrMag.hpp \
 | 
			
		||||
  Modules/MScalarSUN/Grad.hpp \
 | 
			
		||||
  Modules/MScalarSUN/EMT.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TwoPoint.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TimeMomProbe.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TrKinetic.hpp \
 | 
			
		||||
  Modules/MScalarSUN/Div.hpp \
 | 
			
		||||
  Modules/MScalarSUN/ShiftProbe.hpp \
 | 
			
		||||
  Modules/MScalarSUN/StochFreeField.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TrPhi.hpp \
 | 
			
		||||
  Modules/MScalarSUN/Utils.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TransProj.hpp \
 | 
			
		||||
  Modules/MScalarSUN/Grad.hpp \
 | 
			
		||||
  Modules/MScalarSUN/TrKinetic.hpp \
 | 
			
		||||
  Modules/MIO/LoadEigenPack.hpp \
 | 
			
		||||
  Modules/MScalar/ChargedProp.hpp \
 | 
			
		||||
  Modules/MScalar/Scalar.hpp \
 | 
			
		||||
  Modules/MScalar/FreeProp.hpp \
 | 
			
		||||
  Modules/MIO/LoadNersc.hpp \
 | 
			
		||||
  Modules/MIO/LoadEigenPack.hpp \
 | 
			
		||||
  Modules/MIO/LoadBinary.hpp \
 | 
			
		||||
  Modules/MIO/LoadCoarseEigenPack.hpp \
 | 
			
		||||
  Modules/MIO/LoadBinary.hpp
 | 
			
		||||
  Modules/MFermion/GaugeProp.hpp \
 | 
			
		||||
  Modules/MFermion/FreeProp.hpp \
 | 
			
		||||
  Modules/MSolver/LocalCoherenceLanczos.hpp \
 | 
			
		||||
  Modules/MSolver/RBPrecCG.hpp \
 | 
			
		||||
  Modules/MSolver/A2AVectors.hpp \
 | 
			
		||||
  Modules/MAction/Wilson.hpp \
 | 
			
		||||
  Modules/MAction/ZMobiusDWF.hpp \
 | 
			
		||||
  Modules/MAction/WilsonClover.hpp \
 | 
			
		||||
  Modules/MAction/DWF.hpp \
 | 
			
		||||
  Modules/MSink/Point.hpp \
 | 
			
		||||
  Modules/MSink/Smear.hpp
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user