2015-04-26 15:51:09 +01:00
|
|
|
#ifndef GRID_QCD_WILSON_DOP_H
|
2015-04-25 14:33:02 +01:00
|
|
|
#define GRID_QCD_WILSON_DOP_H
|
|
|
|
|
2015-05-13 10:59:22 +01:00
|
|
|
|
2015-04-25 14:33:02 +01:00
|
|
|
namespace Grid {
|
|
|
|
|
|
|
|
namespace QCD {
|
|
|
|
|
2015-05-18 07:47:05 +01:00
|
|
|
class WilsonMatrix : public CheckerBoardedSparseMatrixBase<LatticeFermion>
|
2015-04-25 14:33:02 +01:00
|
|
|
{
|
|
|
|
//NB r=1;
|
|
|
|
public:
|
|
|
|
double mass;
|
|
|
|
GridBase *grid;
|
|
|
|
|
|
|
|
// Copy of the gauge field
|
2015-04-26 15:51:09 +01:00
|
|
|
LatticeDoubledGaugeField Umu;
|
2015-04-25 14:33:02 +01:00
|
|
|
|
|
|
|
//Defines the stencil
|
|
|
|
CartesianStencil Stencil;
|
|
|
|
static const int npoint=9;
|
|
|
|
static const std::vector<int> directions ;
|
|
|
|
static const std::vector<int> displacements;
|
|
|
|
static const int Xp,Xm,Yp,Ym,Zp,Zm,Tp,Tm;
|
|
|
|
|
|
|
|
// Comms buffer
|
2015-04-26 15:51:09 +01:00
|
|
|
std::vector<vHalfSpinColourVector,alignedAllocator<vHalfSpinColourVector> > comm_buf;
|
2015-04-25 14:33:02 +01:00
|
|
|
|
|
|
|
// Constructor
|
2015-04-26 15:51:09 +01:00
|
|
|
WilsonMatrix(LatticeGaugeField &Umu,double mass);
|
|
|
|
|
|
|
|
// DoubleStore
|
|
|
|
void DoubleStore(LatticeDoubledGaugeField &Uds,const LatticeGaugeField &Umu);
|
2015-04-25 14:33:02 +01:00
|
|
|
|
|
|
|
// override multiply
|
2015-05-18 07:47:05 +01:00
|
|
|
virtual RealD M (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual RealD Mdag (const LatticeFermion &in, LatticeFermion &out);
|
2015-04-25 14:33:02 +01:00
|
|
|
|
2015-05-16 23:35:08 +01:00
|
|
|
// half checkerboard operaions
|
2015-05-18 07:47:05 +01:00
|
|
|
virtual void Meooe (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual void MeooeDag (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual void Mooee (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual void MooeeDag (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual void MooeeInv (const LatticeFermion &in, LatticeFermion &out);
|
|
|
|
virtual void MooeeInvDag (const LatticeFermion &in, LatticeFermion &out);
|
2015-05-16 23:35:08 +01:00
|
|
|
|
2015-04-25 14:33:02 +01:00
|
|
|
// non-hermitian hopping term; half cb or both
|
2015-05-19 13:57:35 +01:00
|
|
|
void Dhop(const LatticeFermion &in, LatticeFermion &out,int dag);
|
2015-04-25 14:33:02 +01:00
|
|
|
|
2015-04-30 16:39:06 +01:00
|
|
|
typedef iScalar<iMatrix<vComplex, Nc> > matrix;
|
|
|
|
|
2015-04-25 14:33:02 +01:00
|
|
|
|
|
|
|
};
|
|
|
|
|
2015-05-16 23:35:08 +01:00
|
|
|
|
2015-04-25 14:33:02 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|