mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-27 14:15:55 +01:00
Namespace, formatting emacs style
This commit is contained in:
parent
ccd75c039a
commit
7747b95430
@ -28,117 +28,116 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
See the full license in the file "LICENSE" in the top level distribution
|
See the full license in the file "LICENSE" in the top level distribution
|
||||||
directory
|
directory
|
||||||
*************************************************************************************/
|
*************************************************************************************/
|
||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#ifndef GRID_QCD_FERMION_OPERATOR_IMPL_H
|
#ifndef GRID_QCD_FERMION_OPERATOR_IMPL_H
|
||||||
#define GRID_QCD_FERMION_OPERATOR_IMPL_H
|
#define GRID_QCD_FERMION_OPERATOR_IMPL_H
|
||||||
|
|
||||||
namespace Grid {
|
NAMESPACE_BEGIN(Grid);
|
||||||
namespace QCD {
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Template parameter class constructs to package
|
// Template parameter class constructs to package
|
||||||
// externally control Fermion implementations
|
// externally control Fermion implementations
|
||||||
// in orthogonal directions
|
// in orthogonal directions
|
||||||
//
|
//
|
||||||
// Ultimately need Impl to always define types where XXX is opaque
|
// Ultimately need Impl to always define types where XXX is opaque
|
||||||
//
|
//
|
||||||
// typedef typename XXX Simd;
|
// typedef typename XXX Simd;
|
||||||
// typedef typename XXX GaugeLinkField;
|
// typedef typename XXX GaugeLinkField;
|
||||||
// typedef typename XXX GaugeField;
|
// typedef typename XXX GaugeField;
|
||||||
// typedef typename XXX GaugeActField;
|
// typedef typename XXX GaugeActField;
|
||||||
// typedef typename XXX FermionField;
|
// typedef typename XXX FermionField;
|
||||||
// typedef typename XXX PropagatorField;
|
// typedef typename XXX PropagatorField;
|
||||||
// typedef typename XXX DoubledGaugeField;
|
// typedef typename XXX DoubledGaugeField;
|
||||||
// typedef typename XXX SiteSpinor;
|
// typedef typename XXX SiteSpinor;
|
||||||
// typedef typename XXX SitePropagator;
|
// typedef typename XXX SitePropagator;
|
||||||
// typedef typename XXX SiteHalfSpinor;
|
// typedef typename XXX SiteHalfSpinor;
|
||||||
// typedef typename XXX Compressor;
|
// typedef typename XXX Compressor;
|
||||||
//
|
//
|
||||||
// and Methods:
|
// and Methods:
|
||||||
// void ImportGauge(GridBase *GaugeGrid,DoubledGaugeField &Uds,const GaugeField &Umu)
|
// void ImportGauge(GridBase *GaugeGrid,DoubledGaugeField &Uds,const GaugeField &Umu)
|
||||||
// void DoubleStore(GridBase *GaugeGrid,DoubledGaugeField &Uds,const GaugeField &Umu)
|
// void DoubleStore(GridBase *GaugeGrid,DoubledGaugeField &Uds,const GaugeField &Umu)
|
||||||
// void multLink(SiteHalfSpinor &phi,const SiteDoubledGaugeField &U,const SiteHalfSpinor &chi,int mu,StencilEntry *SE,StencilImpl &St)
|
// void multLink(SiteHalfSpinor &phi,const SiteDoubledGaugeField &U,const SiteHalfSpinor &chi,int mu,StencilEntry *SE,StencilImpl &St)
|
||||||
// void InsertForce4D(GaugeField &mat,const FermionField &Btilde,const FermionField &A,int mu)
|
// void InsertForce4D(GaugeField &mat,const FermionField &Btilde,const FermionField &A,int mu)
|
||||||
// void InsertForce5D(GaugeField &mat,const FermionField &Btilde,const FermionField &A,int mu)
|
// void InsertForce5D(GaugeField &mat,const FermionField &Btilde,const FermionField &A,int mu)
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// To acquire the typedefs from "Base" (either a base class or template param) use:
|
// To acquire the typedefs from "Base" (either a base class or template param) use:
|
||||||
//
|
//
|
||||||
// INHERIT_GIMPL_TYPES(Base)
|
// INHERIT_GIMPL_TYPES(Base)
|
||||||
// INHERIT_FIMPL_TYPES(Base)
|
// INHERIT_FIMPL_TYPES(Base)
|
||||||
// INHERIT_IMPL_TYPES(Base)
|
// INHERIT_IMPL_TYPES(Base)
|
||||||
//
|
//
|
||||||
// The Fermion operators will do the following:
|
// The Fermion operators will do the following:
|
||||||
//
|
//
|
||||||
// struct MyOpParams {
|
// struct MyOpParams {
|
||||||
// RealD mass;
|
// RealD mass;
|
||||||
// };
|
// };
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// template<class Impl>
|
// template<class Impl>
|
||||||
// class MyOp : public<Impl> {
|
// class MyOp : public<Impl> {
|
||||||
// public:
|
// public:
|
||||||
//
|
//
|
||||||
// INHERIT_ALL_IMPL_TYPES(Impl);
|
// INHERIT_ALL_IMPL_TYPES(Impl);
|
||||||
//
|
//
|
||||||
// MyOp(MyOpParams Myparm, ImplParams &ImplParam) : Impl(ImplParam)
|
// MyOp(MyOpParams Myparm, ImplParams &ImplParam) : Impl(ImplParam)
|
||||||
// {
|
// {
|
||||||
//
|
//
|
||||||
// };
|
// };
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
template <class T> struct SamePrecisionMapper {
|
template <class T> struct SamePrecisionMapper {
|
||||||
typedef T HigherPrecVector ;
|
typedef T HigherPrecVector ;
|
||||||
typedef T LowerPrecVector ;
|
typedef T LowerPrecVector ;
|
||||||
};
|
};
|
||||||
template <class T> struct LowerPrecisionMapper { };
|
template <class T> struct LowerPrecisionMapper { };
|
||||||
template <> struct LowerPrecisionMapper<vRealF> {
|
template <> struct LowerPrecisionMapper<vRealF> {
|
||||||
typedef vRealF HigherPrecVector ;
|
typedef vRealF HigherPrecVector ;
|
||||||
typedef vRealH LowerPrecVector ;
|
typedef vRealH LowerPrecVector ;
|
||||||
};
|
};
|
||||||
template <> struct LowerPrecisionMapper<vRealD> {
|
template <> struct LowerPrecisionMapper<vRealD> {
|
||||||
typedef vRealD HigherPrecVector ;
|
typedef vRealD HigherPrecVector ;
|
||||||
typedef vRealF LowerPrecVector ;
|
typedef vRealF LowerPrecVector ;
|
||||||
};
|
};
|
||||||
template <> struct LowerPrecisionMapper<vComplexF> {
|
template <> struct LowerPrecisionMapper<vComplexF> {
|
||||||
typedef vComplexF HigherPrecVector ;
|
typedef vComplexF HigherPrecVector ;
|
||||||
typedef vComplexH LowerPrecVector ;
|
typedef vComplexH LowerPrecVector ;
|
||||||
};
|
};
|
||||||
template <> struct LowerPrecisionMapper<vComplexD> {
|
template <> struct LowerPrecisionMapper<vComplexD> {
|
||||||
typedef vComplexD HigherPrecVector ;
|
typedef vComplexD HigherPrecVector ;
|
||||||
typedef vComplexF LowerPrecVector ;
|
typedef vComplexF LowerPrecVector ;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CoeffReal {
|
struct CoeffReal {
|
||||||
public:
|
public:
|
||||||
typedef RealD _Coeff_t;
|
typedef RealD _Coeff_t;
|
||||||
static const int Nhcs = 2;
|
static const int Nhcs = 2;
|
||||||
template<class Simd> using PrecisionMapper = SamePrecisionMapper<Simd>;
|
template<class Simd> using PrecisionMapper = SamePrecisionMapper<Simd>;
|
||||||
};
|
};
|
||||||
struct CoeffRealHalfComms {
|
struct CoeffRealHalfComms {
|
||||||
public:
|
public:
|
||||||
typedef RealD _Coeff_t;
|
typedef RealD _Coeff_t;
|
||||||
static const int Nhcs = 1;
|
static const int Nhcs = 1;
|
||||||
template<class Simd> using PrecisionMapper = LowerPrecisionMapper<Simd>;
|
template<class Simd> using PrecisionMapper = LowerPrecisionMapper<Simd>;
|
||||||
};
|
};
|
||||||
struct CoeffComplex {
|
struct CoeffComplex {
|
||||||
public:
|
public:
|
||||||
typedef ComplexD _Coeff_t;
|
typedef ComplexD _Coeff_t;
|
||||||
static const int Nhcs = 2;
|
static const int Nhcs = 2;
|
||||||
template<class Simd> using PrecisionMapper = SamePrecisionMapper<Simd>;
|
template<class Simd> using PrecisionMapper = SamePrecisionMapper<Simd>;
|
||||||
};
|
};
|
||||||
struct CoeffComplexHalfComms {
|
struct CoeffComplexHalfComms {
|
||||||
public:
|
public:
|
||||||
typedef ComplexD _Coeff_t;
|
typedef ComplexD _Coeff_t;
|
||||||
static const int Nhcs = 1;
|
static const int Nhcs = 1;
|
||||||
template<class Simd> using PrecisionMapper = LowerPrecisionMapper<Simd>;
|
template<class Simd> using PrecisionMapper = LowerPrecisionMapper<Simd>;
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Implementation dependent fermion types
|
// Implementation dependent fermion types
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#define INHERIT_FIMPL_TYPES(Impl)\
|
#define INHERIT_FIMPL_TYPES(Impl)\
|
||||||
typedef typename Impl::FermionField FermionField; \
|
typedef typename Impl::FermionField FermionField; \
|
||||||
@ -156,12 +155,12 @@ namespace QCD {
|
|||||||
INHERIT_GIMPL_TYPES(Base) \
|
INHERIT_GIMPL_TYPES(Base) \
|
||||||
INHERIT_FIMPL_TYPES(Base)
|
INHERIT_FIMPL_TYPES(Base)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Single flavour four spinors with colour index
|
// Single flavour four spinors with colour index
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
template <class S, class Representation = FundamentalRepresentation,class Options = CoeffReal >
|
template <class S, class Representation = FundamentalRepresentation,class Options = CoeffReal >
|
||||||
class WilsonImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
class WilsonImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static const int Dimension = Representation::Dimension;
|
static const int Dimension = Representation::Dimension;
|
||||||
static const bool LsVectorised=false;
|
static const bool LsVectorised=false;
|
||||||
@ -279,14 +278,14 @@ namespace QCD {
|
|||||||
PokeIndex<LorentzIndex>(mat,tmp,mu);
|
PokeIndex<LorentzIndex>(mat,tmp,mu);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Single flavour four spinors with colour index, 5d redblack
|
// Single flavour four spinors with colour index, 5d redblack
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
template<class S,int Nrepresentation=Nc, class Options=CoeffReal>
|
template<class S,int Nrepresentation=Nc, class Options=CoeffReal>
|
||||||
class DomainWallVec5dImpl : public PeriodicGaugeImpl< GaugeImplTypes< S,Nrepresentation> > {
|
class DomainWallVec5dImpl : public PeriodicGaugeImpl< GaugeImplTypes< S,Nrepresentation> > {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef PeriodicGaugeImpl<GaugeImplTypes<S, Nrepresentation> > Gimpl;
|
typedef PeriodicGaugeImpl<GaugeImplTypes<S, Nrepresentation> > Gimpl;
|
||||||
INHERIT_GIMPL_TYPES(Gimpl);
|
INHERIT_GIMPL_TYPES(Gimpl);
|
||||||
@ -442,12 +441,12 @@ class DomainWallVec5dImpl : public PeriodicGaugeImpl< GaugeImplTypes< S,Nrepres
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Flavour doubled spinors; is Gparity the only? what about C*?
|
// Flavour doubled spinors; is Gparity the only? what about C*?
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
template <class S, int Nrepresentation, class Options=CoeffReal>
|
template <class S, int Nrepresentation, class Options=CoeffReal>
|
||||||
class GparityWilsonImpl : public ConjugateGaugeImpl<GaugeImplTypes<S, Nrepresentation> > {
|
class GparityWilsonImpl : public ConjugateGaugeImpl<GaugeImplTypes<S, Nrepresentation> > {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static const int Dimension = Nrepresentation;
|
static const int Dimension = Nrepresentation;
|
||||||
static const int Nhcs = Options::Nhcs;
|
static const int Nhcs = Options::Nhcs;
|
||||||
@ -661,7 +660,7 @@ class GparityWilsonImpl : public ConjugateGaugeImpl<GaugeImplTypes<S, Nrepresent
|
|||||||
template <class S, class Representation = FundamentalRepresentation >
|
template <class S, class Representation = FundamentalRepresentation >
|
||||||
class StaggeredImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
class StaggeredImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef RealD _Coeff_t ;
|
typedef RealD _Coeff_t ;
|
||||||
static const int Dimension = Representation::Dimension;
|
static const int Dimension = Representation::Dimension;
|
||||||
@ -782,15 +781,15 @@ class StaggeredImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation:
|
|||||||
assert (0);
|
assert (0);
|
||||||
// Must never hit
|
// Must never hit
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Single flavour one component spinors with colour index. 5d vec
|
// Single flavour one component spinors with colour index. 5d vec
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
template <class S, class Representation = FundamentalRepresentation >
|
template <class S, class Representation = FundamentalRepresentation >
|
||||||
class StaggeredVec5dImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
class StaggeredVec5dImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation::Dimension > > {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static const int Dimension = Representation::Dimension;
|
static const int Dimension = Representation::Dimension;
|
||||||
static const bool LsVectorised=true;
|
static const bool LsVectorised=true;
|
||||||
@ -957,7 +956,7 @@ class StaggeredImpl : public PeriodicGaugeImpl<GaugeImplTypes<S, Representation:
|
|||||||
inline void InsertForce5D(GaugeField &mat, FermionField &Btilde, FermionField Ã,int mu){
|
inline void InsertForce5D(GaugeField &mat, FermionField &Btilde, FermionField Ã,int mu){
|
||||||
assert (0);
|
assert (0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef WilsonImpl<vComplex, FundamentalRepresentation, CoeffReal > WilsonImplR; // Real.. whichever prec
|
typedef WilsonImpl<vComplex, FundamentalRepresentation, CoeffReal > WilsonImplR; // Real.. whichever prec
|
||||||
typedef WilsonImpl<vComplexF, FundamentalRepresentation, CoeffReal > WilsonImplF; // Float
|
typedef WilsonImpl<vComplexF, FundamentalRepresentation, CoeffReal > WilsonImplF; // Float
|
||||||
@ -1015,6 +1014,6 @@ typedef StaggeredVec5dImpl<vComplex, FundamentalRepresentation > StaggeredVec5d
|
|||||||
typedef StaggeredVec5dImpl<vComplexF, FundamentalRepresentation > StaggeredVec5dImplF; // Float
|
typedef StaggeredVec5dImpl<vComplexF, FundamentalRepresentation > StaggeredVec5dImplF; // Float
|
||||||
typedef StaggeredVec5dImpl<vComplexD, FundamentalRepresentation > StaggeredVec5dImplD; // Double
|
typedef StaggeredVec5dImpl<vComplexD, FundamentalRepresentation > StaggeredVec5dImplD; // Double
|
||||||
|
|
||||||
}}
|
NAMESPACE_END(Grid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user