mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Namespace, emacs fmt
This commit is contained in:
parent
0ce4ecfc84
commit
229baf3aba
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*************************************************************************************
|
/*************************************************************************************
|
||||||
|
|
||||||
Grid physics library, www.github.com/paboyle/Grid
|
Grid physics library, www.github.com/paboyle/Grid
|
||||||
|
|
||||||
@ -25,168 +25,167 @@ Author: AzusaYamaguchi <ayamaguc@staffmail.ed.ac.uk>
|
|||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
See the full license in the file "LICENSE" in the top level distribution directory
|
See the full license in the file "LICENSE" in the top level distribution directory
|
||||||
*************************************************************************************/
|
*************************************************************************************/
|
||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#ifndef GRID_QCD_IMPROVED_STAGGERED_FERMION_5D_H
|
#ifndef GRID_QCD_IMPROVED_STAGGERED_FERMION_5D_H
|
||||||
#define GRID_QCD_IMPROVED_STAGGERED_FERMION_5D_H
|
#define GRID_QCD_IMPROVED_STAGGERED_FERMION_5D_H
|
||||||
|
|
||||||
namespace Grid {
|
NAMESPACE_BEGIN(Grid);
|
||||||
namespace QCD {
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// This is the 4d red black case appropriate to support
|
// This is the 4d red black case appropriate to support
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class ImprovedStaggeredFermion5DStatic {
|
class ImprovedStaggeredFermion5DStatic {
|
||||||
public:
|
public:
|
||||||
// S-direction is INNERMOST and takes no part in the parity.
|
// S-direction is INNERMOST and takes no part in the parity.
|
||||||
static const std::vector<int> directions;
|
static const std::vector<int> directions;
|
||||||
static const std::vector<int> displacements;
|
static const std::vector<int> displacements;
|
||||||
const int npoint = 16;
|
const int npoint = 16;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
class ImprovedStaggeredFermion5D : public StaggeredKernels<Impl>, public ImprovedStaggeredFermion5DStatic
|
class ImprovedStaggeredFermion5D : public StaggeredKernels<Impl>, public ImprovedStaggeredFermion5DStatic
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
INHERIT_IMPL_TYPES(Impl);
|
INHERIT_IMPL_TYPES(Impl);
|
||||||
typedef StaggeredKernels<Impl> Kernels;
|
typedef StaggeredKernels<Impl> Kernels;
|
||||||
|
|
||||||
FermionField _tmp;
|
FermionField _tmp;
|
||||||
FermionField &tmp(void) { return _tmp; }
|
FermionField &tmp(void) { return _tmp; }
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
// Performance monitoring
|
// Performance monitoring
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
void Report(void);
|
void Report(void);
|
||||||
void ZeroCounters(void);
|
void ZeroCounters(void);
|
||||||
double DhopTotalTime;
|
double DhopTotalTime;
|
||||||
double DhopCalls;
|
double DhopCalls;
|
||||||
double DhopCommTime;
|
double DhopCommTime;
|
||||||
double DhopComputeTime;
|
double DhopComputeTime;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// Implement the abstract base
|
// Implement the abstract base
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
GridBase *GaugeGrid(void) { return _FourDimGrid ;}
|
GridBase *GaugeGrid(void) { return _FourDimGrid ;}
|
||||||
GridBase *GaugeRedBlackGrid(void) { return _FourDimRedBlackGrid ;}
|
GridBase *GaugeRedBlackGrid(void) { return _FourDimRedBlackGrid ;}
|
||||||
GridBase *FermionGrid(void) { return _FiveDimGrid;}
|
GridBase *FermionGrid(void) { return _FiveDimGrid;}
|
||||||
GridBase *FermionRedBlackGrid(void) { return _FiveDimRedBlackGrid;}
|
GridBase *FermionRedBlackGrid(void) { return _FiveDimRedBlackGrid;}
|
||||||
|
|
||||||
// full checkerboard operations; leave unimplemented as abstract for now
|
// full checkerboard operations; leave unimplemented as abstract for now
|
||||||
RealD M (const FermionField &in, FermionField &out);
|
RealD M (const FermionField &in, FermionField &out);
|
||||||
RealD Mdag (const FermionField &in, FermionField &out);
|
RealD Mdag (const FermionField &in, FermionField &out);
|
||||||
|
|
||||||
// half checkerboard operations
|
// half checkerboard operations
|
||||||
void Meooe (const FermionField &in, FermionField &out);
|
void Meooe (const FermionField &in, FermionField &out);
|
||||||
void Mooee (const FermionField &in, FermionField &out);
|
void Mooee (const FermionField &in, FermionField &out);
|
||||||
void MooeeInv (const FermionField &in, FermionField &out);
|
void MooeeInv (const FermionField &in, FermionField &out);
|
||||||
|
|
||||||
void MeooeDag (const FermionField &in, FermionField &out);
|
void MeooeDag (const FermionField &in, FermionField &out);
|
||||||
void MooeeDag (const FermionField &in, FermionField &out);
|
void MooeeDag (const FermionField &in, FermionField &out);
|
||||||
void MooeeInvDag (const FermionField &in, FermionField &out);
|
void MooeeInvDag (const FermionField &in, FermionField &out);
|
||||||
|
|
||||||
void Mdir (const FermionField &in, FermionField &out,int dir,int disp);
|
void Mdir (const FermionField &in, FermionField &out,int dir,int disp);
|
||||||
void DhopDir(const FermionField &in, FermionField &out,int dir,int disp);
|
void DhopDir(const FermionField &in, FermionField &out,int dir,int disp);
|
||||||
|
|
||||||
// These can be overridden by fancy 5d chiral action
|
// These can be overridden by fancy 5d chiral action
|
||||||
void DhopDeriv (GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
void DhopDeriv (GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
||||||
void DhopDerivEO(GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
void DhopDerivEO(GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
||||||
void DhopDerivOE(GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
void DhopDerivOE(GaugeField &mat,const FermionField &U,const FermionField &V,int dag);
|
||||||
|
|
||||||
// Implement hopping term non-hermitian hopping term; half cb or both
|
// Implement hopping term non-hermitian hopping term; half cb or both
|
||||||
void Dhop (const FermionField &in, FermionField &out,int dag);
|
void Dhop (const FermionField &in, FermionField &out,int dag);
|
||||||
void DhopOE(const FermionField &in, FermionField &out,int dag);
|
void DhopOE(const FermionField &in, FermionField &out,int dag);
|
||||||
void DhopEO(const FermionField &in, FermionField &out,int dag);
|
void DhopEO(const FermionField &in, FermionField &out,int dag);
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// New methods added
|
// New methods added
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
void DerivInternal(StencilImpl & st,
|
void DerivInternal(StencilImpl & st,
|
||||||
DoubledGaugeField & U,
|
DoubledGaugeField & U,
|
||||||
DoubledGaugeField & UUU,
|
DoubledGaugeField & UUU,
|
||||||
GaugeField &mat,
|
GaugeField &mat,
|
||||||
const FermionField &A,
|
const FermionField &A,
|
||||||
const FermionField &B,
|
const FermionField &B,
|
||||||
int dag);
|
int dag);
|
||||||
|
|
||||||
void DhopInternal(StencilImpl & st,
|
void DhopInternal(StencilImpl & st,
|
||||||
LebesgueOrder &lo,
|
LebesgueOrder &lo,
|
||||||
DoubledGaugeField &U,
|
DoubledGaugeField &U,
|
||||||
DoubledGaugeField &UUU,
|
DoubledGaugeField &UUU,
|
||||||
const FermionField &in,
|
const FermionField &in,
|
||||||
FermionField &out,
|
FermionField &out,
|
||||||
int dag);
|
int dag);
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
ImprovedStaggeredFermion5D(GaugeField &_Uthin,
|
ImprovedStaggeredFermion5D(GaugeField &_Uthin,
|
||||||
GaugeField &_Ufat,
|
GaugeField &_Ufat,
|
||||||
GridCartesian &FiveDimGrid,
|
GridCartesian &FiveDimGrid,
|
||||||
GridRedBlackCartesian &FiveDimRedBlackGrid,
|
GridRedBlackCartesian &FiveDimRedBlackGrid,
|
||||||
GridCartesian &FourDimGrid,
|
GridCartesian &FourDimGrid,
|
||||||
GridRedBlackCartesian &FourDimRedBlackGrid,
|
GridRedBlackCartesian &FourDimRedBlackGrid,
|
||||||
double _mass,
|
double _mass,
|
||||||
RealD _c1=9.0/8.0, RealD _c2=-1.0/24.0,RealD _u0=1.0,
|
RealD _c1=9.0/8.0, RealD _c2=-1.0/24.0,RealD _u0=1.0,
|
||||||
const ImplParams &p= ImplParams());
|
const ImplParams &p= ImplParams());
|
||||||
|
|
||||||
// DoubleStore
|
// DoubleStore
|
||||||
void ImportGauge(const GaugeField &_U);
|
void ImportGauge(const GaugeField &_U);
|
||||||
void ImportGauge(const GaugeField &_Uthin,const GaugeField &_Ufat);
|
void ImportGauge(const GaugeField &_Uthin,const GaugeField &_Ufat);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// Data members require to support the functionality
|
// Data members require to support the functionality
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GridBase *_FourDimGrid;
|
GridBase *_FourDimGrid;
|
||||||
GridBase *_FourDimRedBlackGrid;
|
GridBase *_FourDimRedBlackGrid;
|
||||||
GridBase *_FiveDimGrid;
|
GridBase *_FiveDimGrid;
|
||||||
GridBase *_FiveDimRedBlackGrid;
|
GridBase *_FiveDimRedBlackGrid;
|
||||||
|
|
||||||
RealD mass;
|
RealD mass;
|
||||||
RealD c1;
|
RealD c1;
|
||||||
RealD c2;
|
RealD c2;
|
||||||
RealD u0;
|
RealD u0;
|
||||||
int Ls;
|
int Ls;
|
||||||
|
|
||||||
//Defines the stencils for even and odd
|
//Defines the stencils for even and odd
|
||||||
StencilImpl Stencil;
|
StencilImpl Stencil;
|
||||||
StencilImpl StencilEven;
|
StencilImpl StencilEven;
|
||||||
StencilImpl StencilOdd;
|
StencilImpl StencilOdd;
|
||||||
|
|
||||||
// Copy of the gauge field , with even and odd subsets
|
// Copy of the gauge field , with even and odd subsets
|
||||||
DoubledGaugeField Umu;
|
DoubledGaugeField Umu;
|
||||||
DoubledGaugeField UmuEven;
|
DoubledGaugeField UmuEven;
|
||||||
DoubledGaugeField UmuOdd;
|
DoubledGaugeField UmuOdd;
|
||||||
|
|
||||||
DoubledGaugeField UUUmu;
|
DoubledGaugeField UUUmu;
|
||||||
DoubledGaugeField UUUmuEven;
|
DoubledGaugeField UUUmuEven;
|
||||||
DoubledGaugeField UUUmuOdd;
|
DoubledGaugeField UUUmuOdd;
|
||||||
|
|
||||||
LebesgueOrder Lebesgue;
|
LebesgueOrder Lebesgue;
|
||||||
LebesgueOrder LebesgueEvenOdd;
|
LebesgueOrder LebesgueEvenOdd;
|
||||||
|
|
||||||
// Comms buffer
|
// Comms buffer
|
||||||
std::vector<SiteHalfSpinor,alignedAllocator<SiteHalfSpinor> > comm_buf;
|
std::vector<SiteHalfSpinor,alignedAllocator<SiteHalfSpinor> > comm_buf;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// Conserved current utilities
|
// Conserved current utilities
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
void ContractConservedCurrent(PropagatorField &q_in_1,
|
void ContractConservedCurrent(PropagatorField &q_in_1,
|
||||||
PropagatorField &q_in_2,
|
PropagatorField &q_in_2,
|
||||||
PropagatorField &q_out,
|
PropagatorField &q_out,
|
||||||
Current curr_type,
|
Current curr_type,
|
||||||
unsigned int mu);
|
unsigned int mu);
|
||||||
void SeqConservedCurrent(PropagatorField &q_in,
|
void SeqConservedCurrent(PropagatorField &q_in,
|
||||||
PropagatorField &q_out,
|
PropagatorField &q_out,
|
||||||
Current curr_type,
|
Current curr_type,
|
||||||
unsigned int mu,
|
unsigned int mu,
|
||||||
std::vector<Real> mom,
|
std::vector<Real> mom,
|
||||||
unsigned int tmin,
|
unsigned int tmin,
|
||||||
unsigned int tmax);
|
unsigned int tmax);
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
NAMESPACE_END(Grid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user