mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
Tests clean build on HIP
This commit is contained in:
parent
e51eaedc56
commit
3dbfce5223
@ -324,9 +324,9 @@ public:
|
|||||||
GridBase* _cbgrid;
|
GridBase* _cbgrid;
|
||||||
int hermitian;
|
int hermitian;
|
||||||
|
|
||||||
CartesianStencil<siteVector,siteVector,int> Stencil;
|
CartesianStencil<siteVector,siteVector,DefaultImplParams> Stencil;
|
||||||
CartesianStencil<siteVector,siteVector,int> StencilEven;
|
CartesianStencil<siteVector,siteVector,DefaultImplParams> StencilEven;
|
||||||
CartesianStencil<siteVector,siteVector,int> StencilOdd;
|
CartesianStencil<siteVector,siteVector,DefaultImplParams> StencilOdd;
|
||||||
|
|
||||||
std::vector<CoarseMatrix> A;
|
std::vector<CoarseMatrix> A;
|
||||||
std::vector<CoarseMatrix> Aeven;
|
std::vector<CoarseMatrix> Aeven;
|
||||||
@ -631,7 +631,7 @@ public:
|
|||||||
assert(Aself != nullptr);
|
assert(Aself != nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DselfInternal(CartesianStencil<siteVector,siteVector,int> &st, CoarseMatrix &a,
|
void DselfInternal(CartesianStencil<siteVector,siteVector,DefaultImplParams> &st, CoarseMatrix &a,
|
||||||
const CoarseVector &in, CoarseVector &out, int dag) {
|
const CoarseVector &in, CoarseVector &out, int dag) {
|
||||||
int point = geom.npoint-1;
|
int point = geom.npoint-1;
|
||||||
autoView( out_v, out, AcceleratorWrite);
|
autoView( out_v, out, AcceleratorWrite);
|
||||||
@ -694,7 +694,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DhopInternal(CartesianStencil<siteVector,siteVector,int> &st, std::vector<CoarseMatrix> &a,
|
void DhopInternal(CartesianStencil<siteVector,siteVector,DefaultImplParams> &st, std::vector<CoarseMatrix> &a,
|
||||||
const CoarseVector &in, CoarseVector &out, int dag) {
|
const CoarseVector &in, CoarseVector &out, int dag) {
|
||||||
SimpleCompressor<siteVector> compressor;
|
SimpleCompressor<siteVector> compressor;
|
||||||
|
|
||||||
@ -784,9 +784,9 @@ public:
|
|||||||
_cbgrid(new GridRedBlackCartesian(&CoarseGrid)),
|
_cbgrid(new GridRedBlackCartesian(&CoarseGrid)),
|
||||||
geom(CoarseGrid._ndimension),
|
geom(CoarseGrid._ndimension),
|
||||||
hermitian(hermitian_),
|
hermitian(hermitian_),
|
||||||
Stencil(&CoarseGrid,geom.npoint,Even,geom.directions,geom.displacements,0),
|
Stencil(&CoarseGrid,geom.npoint,Even,geom.directions,geom.displacements),
|
||||||
StencilEven(_cbgrid,geom.npoint,Even,geom.directions,geom.displacements,0),
|
StencilEven(_cbgrid,geom.npoint,Even,geom.directions,geom.displacements),
|
||||||
StencilOdd(_cbgrid,geom.npoint,Odd,geom.directions,geom.displacements,0),
|
StencilOdd(_cbgrid,geom.npoint,Odd,geom.directions,geom.displacements),
|
||||||
A(geom.npoint,&CoarseGrid),
|
A(geom.npoint,&CoarseGrid),
|
||||||
Aeven(geom.npoint,_cbgrid),
|
Aeven(geom.npoint,_cbgrid),
|
||||||
Aodd(geom.npoint,_cbgrid),
|
Aodd(geom.npoint,_cbgrid),
|
||||||
@ -804,9 +804,9 @@ public:
|
|||||||
_cbgrid(&CoarseRBGrid),
|
_cbgrid(&CoarseRBGrid),
|
||||||
geom(CoarseGrid._ndimension),
|
geom(CoarseGrid._ndimension),
|
||||||
hermitian(hermitian_),
|
hermitian(hermitian_),
|
||||||
Stencil(&CoarseGrid,geom.npoint,Even,geom.directions,geom.displacements,0),
|
Stencil(&CoarseGrid,geom.npoint,Even,geom.directions,geom.displacements),
|
||||||
StencilEven(&CoarseRBGrid,geom.npoint,Even,geom.directions,geom.displacements,0),
|
StencilEven(&CoarseRBGrid,geom.npoint,Even,geom.directions,geom.displacements),
|
||||||
StencilOdd(&CoarseRBGrid,geom.npoint,Odd,geom.directions,geom.displacements,0),
|
StencilOdd(&CoarseRBGrid,geom.npoint,Odd,geom.directions,geom.displacements),
|
||||||
A(geom.npoint,&CoarseGrid),
|
A(geom.npoint,&CoarseGrid),
|
||||||
Aeven(geom.npoint,&CoarseRBGrid),
|
Aeven(geom.npoint,&CoarseRBGrid),
|
||||||
Aodd(geom.npoint,&CoarseRBGrid),
|
Aodd(geom.npoint,&CoarseRBGrid),
|
||||||
|
@ -526,6 +526,7 @@ public:
|
|||||||
(*this)(Linop,in[k],out[k]);
|
(*this)(Linop,in[k],out[k]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
virtual ~OperatorFunction(){};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Field> class LinearFunction {
|
template<class Field> class LinearFunction {
|
||||||
|
@ -34,15 +34,6 @@ directory
|
|||||||
|
|
||||||
NAMESPACE_BEGIN(Grid);
|
NAMESPACE_BEGIN(Grid);
|
||||||
|
|
||||||
// These can move into a params header and be given MacroMagic serialisation
|
|
||||||
struct DefaultImplParams {
|
|
||||||
Coordinate dirichlet; // Blocksize of dirichlet BCs
|
|
||||||
int partialDirichlet;
|
|
||||||
DefaultImplParams() {
|
|
||||||
dirichlet.resize(0);
|
|
||||||
partialDirichlet=0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct GparityWilsonImplParams {
|
struct GparityWilsonImplParams {
|
||||||
Coordinate twists;
|
Coordinate twists;
|
||||||
|
@ -52,6 +52,16 @@
|
|||||||
|
|
||||||
NAMESPACE_BEGIN(Grid);
|
NAMESPACE_BEGIN(Grid);
|
||||||
|
|
||||||
|
// These can move into a params header and be given MacroMagic serialisation
|
||||||
|
struct DefaultImplParams {
|
||||||
|
Coordinate dirichlet; // Blocksize of dirichlet BCs
|
||||||
|
int partialDirichlet;
|
||||||
|
DefaultImplParams() {
|
||||||
|
dirichlet.resize(0);
|
||||||
|
partialDirichlet=0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
// Gather for when there *is* need to SIMD split with compression
|
// Gather for when there *is* need to SIMD split with compression
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
|
@ -143,7 +143,7 @@ NAMESPACE_BEGIN(Grid);
|
|||||||
typedef ComplexD DoublePrecision2;
|
typedef ComplexD DoublePrecision2;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef GRID_CUDA
|
#if defined(GRID_CUDA) || defined(GRID_HIP)
|
||||||
template<> struct GridTypeMapper<std::complex<float> > : public GridTypeMapper_Base {
|
template<> struct GridTypeMapper<std::complex<float> > : public GridTypeMapper_Base {
|
||||||
typedef std::complex<float> scalar_type;
|
typedef std::complex<float> scalar_type;
|
||||||
typedef std::complex<double> scalar_typeD;
|
typedef std::complex<double> scalar_typeD;
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
CLIME=`spack find --paths c-lime@2-3-9 | grep c-lime| cut -c 15-`
|
||||||
../../configure --enable-comms=mpi-auto \
|
../../configure --enable-comms=mpi-auto \
|
||||||
|
--with-lime=$CLIME \
|
||||||
--enable-unified=no \
|
--enable-unified=no \
|
||||||
--enable-shm=nvlink \
|
--enable-shm=nvlink \
|
||||||
--enable-accelerator=hip \
|
--enable-accelerator=hip \
|
||||||
@ -7,7 +9,7 @@
|
|||||||
--with-gmp=$OLCF_GMP_ROOT \
|
--with-gmp=$OLCF_GMP_ROOT \
|
||||||
--with-fftw=$FFTW_DIR/.. \
|
--with-fftw=$FFTW_DIR/.. \
|
||||||
--with-mpfr=/opt/cray/pe/gcc/mpfr/3.1.4/ \
|
--with-mpfr=/opt/cray/pe/gcc/mpfr/3.1.4/ \
|
||||||
--disable-gparity \
|
--disable-fermion-reps \
|
||||||
CXX=hipcc MPICXX=mpicxx \
|
CXX=hipcc MPICXX=mpicxx \
|
||||||
CXXFLAGS="-fPIC -I{$ROCM_PATH}/include/ -std=c++14 -I${MPICH_DIR}/include -L/lib64 " \
|
CXXFLAGS="-fPIC -I{$ROCM_PATH}/include/ -std=c++14 -I${MPICH_DIR}/include -L/lib64 " \
|
||||||
LDFLAGS="-L/lib64 -L/opt/rocm-5.2.0/lib/ -L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_hsa -lamdhip64 "
|
LDFLAGS="-L/lib64 -L/opt/rocm-5.2.0/lib/ -L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_hsa -lamdhip64 "
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
. /autofs/nccs-svm1_home1/paboyle/Crusher/Grid/spack/share/spack/setup-env.sh
|
||||||
|
spack load c-lime
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sw/crusher/spack-envs/base/opt/cray-sles15-zen3/gcc-11.2.0/gperftools-2.9.1-72ubwtuc5wcz2meqltbfdb76epufgzo2/lib
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sw/crusher/spack-envs/base/opt/cray-sles15-zen3/gcc-11.2.0/gperftools-2.9.1-72ubwtuc5wcz2meqltbfdb76epufgzo2/lib
|
||||||
module load emacs
|
module load emacs
|
||||||
#module load gperftools
|
#module load gperftools
|
||||||
|
@ -125,10 +125,10 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
DomainWallFermionF DdwfF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5);
|
DomainWallFermionF DdwfF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5);
|
||||||
TestCGinversions<DomainWallFermionR>(Ddwf,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<DomainWallFermionD>(Ddwf,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5DFA<DomainWallFermionR,DomainWallFermionF>(Ddwf,DdwfF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5DFA<DomainWallFermionD,DomainWallFermionF>(Ddwf,DdwfF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
||||||
RealD c=0.5;
|
RealD c=0.5;
|
||||||
@ -137,54 +137,54 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
MobiusFermionR Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
MobiusFermionD Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
||||||
MobiusFermionF DmobF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,b,c);
|
MobiusFermionF DmobF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,b,c);
|
||||||
TestCGinversions<MobiusFermionR>(Dmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<MobiusFermionD>(Dmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5DFA<MobiusFermionR,MobiusFermionF>(Dmob,DmobF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5DFA<MobiusFermionD,MobiusFermionF>(Dmob,DmobF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
ZMobiusFermionR ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,gamma,b,c);
|
ZMobiusFermionD ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,gamma,b,c);
|
||||||
TestCGinversions<ZMobiusFermionR>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<ZMobiusFermionD>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5D<ZMobiusFermionR>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5D<ZMobiusFermionD>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"MobiusZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"MobiusZolotarevFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
MobiusZolotarevFermionR Dzolo(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c,0.1,2.0);
|
MobiusZolotarevFermionD Dzolo(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c,0.1,2.0);
|
||||||
TestCGinversions<MobiusZolotarevFermionR>(Dzolo,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<MobiusZolotarevFermionD>(Dzolo,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5D<MobiusZolotarevFermionR>(Dzolo,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5D<MobiusZolotarevFermionD>(Dzolo,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
ScaledShamirFermionR Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
ScaledShamirFermionD Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
||||||
ScaledShamirFermionF DshamF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,2.0);
|
ScaledShamirFermionF DshamF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,2.0);
|
||||||
TestCGinversions<ScaledShamirFermionR>(Dsham,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<ScaledShamirFermionD>(Dsham,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5DFA<ScaledShamirFermionR,ScaledShamirFermionF>(Dsham,DshamF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5DFA<ScaledShamirFermionD,ScaledShamirFermionF>(Dsham,DshamF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"ShamirZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ShamirZolotarevFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
ShamirZolotarevFermionR Dshamz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
ShamirZolotarevFermionD Dshamz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
||||||
TestCGinversions<ShamirZolotarevFermionR>(Dshamz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<ShamirZolotarevFermionD>(Dshamz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5D<ShamirZolotarevFermionR>(Dshamz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5D<ShamirZolotarevFermionD>(Dshamz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonCayleyTanhFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonCayleyTanhFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
OverlapWilsonCayleyTanhFermionR Dov(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
OverlapWilsonCayleyTanhFermionD Dov(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
||||||
OverlapWilsonCayleyTanhFermionF DovF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,1.0);
|
OverlapWilsonCayleyTanhFermionF DovF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5,1.0);
|
||||||
TestCGinversions<OverlapWilsonCayleyTanhFermionR>(Dov,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonCayleyTanhFermionD>(Dov,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5DFA<OverlapWilsonCayleyTanhFermionR,OverlapWilsonCayleyTanhFermionF>(Dov,DovF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5DFA<OverlapWilsonCayleyTanhFermionD,OverlapWilsonCayleyTanhFermionF>(Dov,DovF,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonCayleyZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonCayleyZolotarevFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
OverlapWilsonCayleyZolotarevFermionR Dovz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
OverlapWilsonCayleyZolotarevFermionD Dovz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
||||||
TestCGinversions<OverlapWilsonCayleyZolotarevFermionR>(Dovz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonCayleyZolotarevFermionD>(Dovz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
TestReconstruct5D<OverlapWilsonCayleyZolotarevFermionR>(Dovz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestReconstruct5D<OverlapWilsonCayleyZolotarevFermionD>(Dovz,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
|
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
HermIndefOp.Op(src,ref);
|
HermIndefOp.Op(src,ref);
|
||||||
HermIndefOp.OpDiag(src,result);
|
HermIndefOp.OpDiag(src,result);
|
||||||
@ -118,7 +118,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
std::cout<<GridLogMessage<<"Calling Aggregation class" <<std::endl;
|
std::cout<<GridLogMessage<<"Calling Aggregation class" <<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,cb);
|
Subspace Aggregates(Coarse5d,FGrid,cb);
|
||||||
|
@ -76,41 +76,41 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass=0.1;
|
RealD mass=0.1;
|
||||||
RealD M5 =1.8;
|
RealD M5 =1.8;
|
||||||
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
TestWhat<DomainWallFermionR>(Ddwf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<DomainWallFermionD>(Ddwf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
||||||
RealD c=0.5;
|
RealD c=0.5;
|
||||||
std::vector<ComplexD> gamma(Ls,ComplexD(1.0,0.1));
|
std::vector<ComplexD> gamma(Ls,ComplexD(1.0,0.1));
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
||||||
MobiusFermionR Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
MobiusFermionD Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
||||||
TestWhat<MobiusFermionR>(Dmob,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<MobiusFermionD>(Dmob,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
||||||
ZMobiusFermionR ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,gamma,b,c);
|
ZMobiusFermionD ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,gamma,b,c);
|
||||||
TestWhat<ZMobiusFermionR>(ZDmob,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<ZMobiusFermionD>(ZDmob,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"MobiusZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"MobiusZolotarevFermion test"<<std::endl;
|
||||||
MobiusZolotarevFermionR Dzolo(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c,0.1,2.0);
|
MobiusZolotarevFermionD Dzolo(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c,0.1,2.0);
|
||||||
TestWhat<MobiusZolotarevFermionR>(Dzolo,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<MobiusZolotarevFermionD>(Dzolo,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
||||||
ScaledShamirFermionR Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
ScaledShamirFermionD Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
||||||
TestWhat<ScaledShamirFermionR>(Dsham,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<ScaledShamirFermionD>(Dsham,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"ShamirZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ShamirZolotarevFermion test"<<std::endl;
|
||||||
ShamirZolotarevFermionR Dshamz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
ShamirZolotarevFermionD Dshamz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
||||||
TestWhat<ShamirZolotarevFermionR>(Dshamz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<ShamirZolotarevFermionD>(Dshamz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonCayleyTanhFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonCayleyTanhFermion test"<<std::endl;
|
||||||
OverlapWilsonCayleyTanhFermionR Dov(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
OverlapWilsonCayleyTanhFermionD Dov(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
||||||
TestWhat<OverlapWilsonCayleyTanhFermionR>(Dov,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<OverlapWilsonCayleyTanhFermionD>(Dov,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonCayleyZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonCayleyZolotarevFermion test"<<std::endl;
|
||||||
OverlapWilsonCayleyZolotarevFermionR Dovz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
OverlapWilsonCayleyZolotarevFermionD Dovz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,2.0);
|
||||||
TestWhat<OverlapWilsonCayleyZolotarevFermionR>(Dovz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestWhat<OverlapWilsonCayleyZolotarevFermionD>(Dovz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -83,8 +83,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building g5R5 hermitian DWF operator" <<std::endl;
|
std::cout<<GridLogMessage << "Building g5R5 hermitian DWF operator" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
const int nbasis = 8;
|
const int nbasis = 8;
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
Subspace Aggregates(Coarse5d,FGrid,cb);
|
Subspace Aggregates(Coarse5d,FGrid,cb);
|
||||||
Aggregates.CreateSubspace(RNG5,HermDefOp);
|
Aggregates.CreateSubspace(RNG5,HermDefOp);
|
||||||
|
|
||||||
|
@ -128,8 +128,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"DomainWallFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
TestConserved<DomainWallFermionR>(Ddwf,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestConserved<DomainWallFermionD>(Ddwf,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
RealD b=1.5;// Scale factor b+c=2, b-c=1
|
||||||
RealD c=0.5;
|
RealD c=0.5;
|
||||||
@ -138,23 +138,23 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"MobiusFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
MobiusFermionR Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
MobiusFermionD Dmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,b,c);
|
||||||
TestConserved<MobiusFermionR>(Dmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestConserved<MobiusFermionD>(Dmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ScaledShamirFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
ScaledShamirFermionR Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
ScaledShamirFermionD Dsham(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,2.0);
|
||||||
TestConserved<ScaledShamirFermionR>(Dsham,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestConserved<ScaledShamirFermionD>(Dsham,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"ZMobiusFermion test"<<std::endl;
|
||||||
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
std::cout<<GridLogMessage <<"======================"<<std::endl;
|
||||||
for(int s=0;s<Ls;s++) omegasrev[s]=conjugate(omegas[Ls-1-s]);
|
for(int s=0;s<Ls;s++) omegasrev[s]=conjugate(omegas[Ls-1-s]);
|
||||||
// for(int s=0;s<Ls;s++) omegasrev[s]=omegas[Ls-1-s];
|
// for(int s=0;s<Ls;s++) omegasrev[s]=omegas[Ls-1-s];
|
||||||
ZMobiusFermionR ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,omegas,b,c);
|
ZMobiusFermionD ZDmob(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,omegas,b,c);
|
||||||
ZMobiusFermionR ZDmobrev(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,omegasrev,b,c);
|
ZMobiusFermionD ZDmobrev(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,omegasrev,b,c);
|
||||||
TestConserved<ZMobiusFermionR>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5,&ZDmobrev);
|
TestConserved<ZMobiusFermionD>(ZDmob,Umu,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5,&ZDmobrev);
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
@ -290,7 +290,7 @@ void TestConserved(Action & Ddwf,
|
|||||||
const RealD DmuPAmu{real(TensorRemove(sumPA[t]-sumPA[(t-1+Nt)%Nt]))};
|
const RealD DmuPAmu{real(TensorRemove(sumPA[t]-sumPA[(t-1+Nt)%Nt]))};
|
||||||
std::cout<<GridLogMessage<<" t "<<t<<" DmuPAmu "<<DmuPAmu
|
std::cout<<GridLogMessage<<" t "<<t<<" DmuPAmu "<<DmuPAmu
|
||||||
<<" PP "<<real(TensorRemove(sumPP[t]))<<" PJ5q "<<real(TensorRemove(sumPJ5q[t]))
|
<<" PP "<<real(TensorRemove(sumPP[t]))<<" PJ5q "<<real(TensorRemove(sumPJ5q[t]))
|
||||||
<<" Ward Identity defect " <<(DmuPAmu - 2.*real(TensorRemove(Ddwf.mass*sumPP[t] + sumPJ5q[t])))<<std::endl;
|
<<" Ward Identity defect " <<(DmuPAmu - 2.*real(TensorRemove(Ddwf.Mass()*sumPP[t] + sumPJ5q[t])))<<std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
@ -539,7 +539,7 @@ void TestConserved1(Action & Ddwf, Action & Ddwfrev,
|
|||||||
PA = trace(g5*Axial_mu);
|
PA = trace(g5*Axial_mu);
|
||||||
PP = trace(adj(prop4)*prop4);
|
PP = trace(adj(prop4)*prop4);
|
||||||
|
|
||||||
Defect = Defect - 2.0*Ddwf.mass* PP;
|
Defect = Defect - 2.0*Ddwf.Mass()* PP;
|
||||||
Defect = Defect - 2.0*PJ5q;
|
Defect = Defect - 2.0*PJ5q;
|
||||||
|
|
||||||
std::vector<TComplex> sumPAref;
|
std::vector<TComplex> sumPAref;
|
||||||
@ -565,8 +565,8 @@ void TestConserved1(Action & Ddwf, Action & Ddwfrev,
|
|||||||
std::cout <<" PAc action "<<real(TensorRemove(sumPA[t]));
|
std::cout <<" PAc action "<<real(TensorRemove(sumPA[t]));
|
||||||
std::cout <<" PJ5q ref "<<real(TensorRemove(sumPJ5qref[t]));
|
std::cout <<" PJ5q ref "<<real(TensorRemove(sumPJ5qref[t]));
|
||||||
std::cout <<" PJ5q action "<<real(TensorRemove(sumPJ5q[t]));
|
std::cout <<" PJ5q action "<<real(TensorRemove(sumPJ5q[t]));
|
||||||
std::cout <<"WTI defects "<<real(TensorRemove(sumPAref[t]-sumPAref[(t-1+Nt)%Nt] - 2.0*(Ddwf.mass*sumPP[t] + sumPJ5q[t]) ))<<",";
|
std::cout <<"WTI defects "<<real(TensorRemove(sumPAref[t]-sumPAref[(t-1+Nt)%Nt] - 2.0*(Ddwf.Mass()*sumPP[t] + sumPJ5q[t]) ))<<",";
|
||||||
std::cout <<real(TensorRemove(sumPA[t]-sumPA[(t-1+Nt)%Nt] - 2.0*(Ddwf.mass*sumPP[t] + sumPJ5q[t]) ))<<"\n";
|
std::cout <<real(TensorRemove(sumPA[t]-sumPA[(t-1+Nt)%Nt] - 2.0*(Ddwf.Mass()*sumPP[t] + sumPJ5q[t]) ))<<"\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -600,7 +600,7 @@ void TestConserved1(Action & Ddwf, Action & Ddwfrev,
|
|||||||
// Dperp
|
// Dperp
|
||||||
{
|
{
|
||||||
RealD diag = 5.0 - Ddwf.M5;
|
RealD diag = 5.0 - Ddwf.M5;
|
||||||
mass = Ddwf.mass;
|
mass = Ddwf.Mass();
|
||||||
autoView( psi,result5,CpuRead);
|
autoView( psi,result5,CpuRead);
|
||||||
autoView( chi,tmp, CpuWrite);
|
autoView( chi,tmp, CpuWrite);
|
||||||
thread_for(sss,UGrid->oSites(),{
|
thread_for(sss,UGrid->oSites(),{
|
||||||
|
@ -77,8 +77,8 @@ int main(int argc, char** argv)
|
|||||||
LatticeGaugeField Umu(UGrid);
|
LatticeGaugeField Umu(UGrid);
|
||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
DomainWallEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5);
|
DomainWallEOFAFermionD Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5);
|
||||||
DomainWallEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5);
|
DomainWallEOFAFermionD Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5);
|
||||||
|
|
||||||
// Construct the action and test the heatbath (zero initial guess)
|
// Construct the action and test the heatbath (zero initial guess)
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ using namespace Grid;
|
|||||||
;
|
;
|
||||||
|
|
||||||
typedef GparityWilsonImplR FermionImplPolicy;
|
typedef GparityWilsonImplR FermionImplPolicy;
|
||||||
typedef GparityDomainWallEOFAFermionR FermionAction;
|
typedef GparityDomainWallEOFAFermionD FermionAction;
|
||||||
typedef typename FermionAction::FermionField FermionField;
|
typedef typename FermionAction::FermionField FermionField;
|
||||||
|
|
||||||
// Parameters for test
|
// Parameters for test
|
||||||
@ -82,7 +82,7 @@ int main(int argc, char** argv)
|
|||||||
LatticeGaugeField Umu(UGrid);
|
LatticeGaugeField Umu(UGrid);
|
||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
// GparityDomainWallFermionR::ImplParams params;
|
// GparityDomainWallFermionD::ImplParams params;
|
||||||
FermionAction::ImplParams params;
|
FermionAction::ImplParams params;
|
||||||
FermionAction Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5, params);
|
FermionAction Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5, params);
|
||||||
FermionAction Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5, params);
|
FermionAction Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5, params);
|
||||||
|
@ -79,8 +79,8 @@ int main(int argc, char** argv)
|
|||||||
LatticeGaugeField Umu(UGrid);
|
LatticeGaugeField Umu(UGrid);
|
||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
MobiusEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5, b, c);
|
MobiusEOFAFermionD Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mpv, 0.0, -1, M5, b, c);
|
||||||
MobiusEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5, b, c);
|
MobiusEOFAFermionD Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0, 1, M5, b, c);
|
||||||
|
|
||||||
// Construct the action and test the heatbath (zero initial guess)
|
// Construct the action and test the heatbath (zero initial guess)
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ using namespace Grid;
|
|||||||
;
|
;
|
||||||
|
|
||||||
typedef GparityWilsonImplR FermionImplPolicy;
|
typedef GparityWilsonImplR FermionImplPolicy;
|
||||||
typedef GparityMobiusEOFAFermionR FermionAction;
|
typedef GparityMobiusEOFAFermionD FermionAction;
|
||||||
typedef typename FermionAction::FermionField FermionField;
|
typedef typename FermionAction::FermionField FermionField;
|
||||||
|
|
||||||
// Parameters for test
|
// Parameters for test
|
||||||
|
@ -105,10 +105,10 @@ int main(int argc, char **argv)
|
|||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
// Initialize RHMC fermion operators
|
// Initialize RHMC fermion operators
|
||||||
DomainWallFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5);
|
DomainWallFermionD Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5);
|
||||||
DomainWallFermionR Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5);
|
DomainWallFermionD Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5);
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR, LatticeFermion> MdagM(Ddwf_f);
|
SchurDiagMooeeOperator<DomainWallFermionD, LatticeFermion> MdagM(Ddwf_f);
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR, LatticeFermion> VdagV(Ddwf_b);
|
SchurDiagMooeeOperator<DomainWallFermionD, LatticeFermion> VdagV(Ddwf_b);
|
||||||
|
|
||||||
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
||||||
double lo = 0.0001;
|
double lo = 0.0001;
|
||||||
@ -153,10 +153,10 @@ int main(int argc, char **argv)
|
|||||||
RealD shift_L = 0.0;
|
RealD shift_L = 0.0;
|
||||||
RealD shift_R = -1.0;
|
RealD shift_R = -1.0;
|
||||||
int pm = 1;
|
int pm = 1;
|
||||||
DomainWallEOFAFermionR Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5);
|
DomainWallEOFAFermionD Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5);
|
||||||
DomainWallEOFAFermionR Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5);
|
DomainWallEOFAFermionD Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5);
|
||||||
MdagMLinearOperator<DomainWallEOFAFermionR, LatticeFermion> LdagL(Deofa_L);
|
MdagMLinearOperator<DomainWallEOFAFermionD, LatticeFermion> LdagL(Deofa_L);
|
||||||
MdagMLinearOperator<DomainWallEOFAFermionR, LatticeFermion> RdagR(Deofa_R);
|
MdagMLinearOperator<DomainWallEOFAFermionD, LatticeFermion> RdagR(Deofa_R);
|
||||||
|
|
||||||
// Stochastically estimate reweighting factor via EOFA
|
// Stochastically estimate reweighting factor via EOFA
|
||||||
RealD k = Deofa_L.k;
|
RealD k = Deofa_L.k;
|
||||||
|
@ -33,7 +33,7 @@ using namespace std;
|
|||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
;
|
||||||
|
|
||||||
typedef typename GparityDomainWallFermionR::FermionField FermionField;
|
typedef typename GparityDomainWallFermionD::FermionField FermionField;
|
||||||
|
|
||||||
// parameters for test
|
// parameters for test
|
||||||
const std::vector<int> grid_dim = { 8, 8, 8, 8 };
|
const std::vector<int> grid_dim = { 8, 8, 8, 8 };
|
||||||
@ -107,11 +107,11 @@ int main(int argc, char **argv)
|
|||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
// Initialize RHMC fermion operators
|
// Initialize RHMC fermion operators
|
||||||
GparityDomainWallFermionR::ImplParams params;
|
GparityDomainWallFermionD::ImplParams params;
|
||||||
GparityDomainWallFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, params);
|
GparityDomainWallFermionD Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, params);
|
||||||
GparityDomainWallFermionR Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, params);
|
GparityDomainWallFermionD Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, params);
|
||||||
SchurDiagMooeeOperator<GparityDomainWallFermionR, FermionField> MdagM(Ddwf_f);
|
SchurDiagMooeeOperator<GparityDomainWallFermionD, FermionField> MdagM(Ddwf_f);
|
||||||
SchurDiagMooeeOperator<GparityDomainWallFermionR, FermionField> VdagV(Ddwf_b);
|
SchurDiagMooeeOperator<GparityDomainWallFermionD, FermionField> VdagV(Ddwf_b);
|
||||||
|
|
||||||
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
||||||
double lo = 0.0001;
|
double lo = 0.0001;
|
||||||
@ -156,10 +156,10 @@ int main(int argc, char **argv)
|
|||||||
RealD shift_L = 0.0;
|
RealD shift_L = 0.0;
|
||||||
RealD shift_R = -1.0;
|
RealD shift_R = -1.0;
|
||||||
int pm = 1;
|
int pm = 1;
|
||||||
GparityDomainWallEOFAFermionR Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, params);
|
GparityDomainWallEOFAFermionD Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, params);
|
||||||
GparityDomainWallEOFAFermionR Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, params);
|
GparityDomainWallEOFAFermionD Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, params);
|
||||||
MdagMLinearOperator<GparityDomainWallEOFAFermionR, FermionField> LdagL(Deofa_L);
|
MdagMLinearOperator<GparityDomainWallEOFAFermionD, FermionField> LdagL(Deofa_L);
|
||||||
MdagMLinearOperator<GparityDomainWallEOFAFermionR, FermionField> RdagR(Deofa_R);
|
MdagMLinearOperator<GparityDomainWallEOFAFermionD, FermionField> RdagR(Deofa_R);
|
||||||
|
|
||||||
// Stochastically estimate reweighting factor via EOFA
|
// Stochastically estimate reweighting factor via EOFA
|
||||||
RealD k = Deofa_L.k;
|
RealD k = Deofa_L.k;
|
||||||
|
@ -107,10 +107,10 @@ int main(int argc, char **argv)
|
|||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
// Initialize RHMC fermion operators
|
// Initialize RHMC fermion operators
|
||||||
MobiusFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c);
|
MobiusFermionD Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c);
|
||||||
MobiusFermionR Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, b, c);
|
MobiusFermionD Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, b, c);
|
||||||
SchurDiagMooeeOperator<MobiusFermionR, LatticeFermion> MdagM(Ddwf_f);
|
SchurDiagMooeeOperator<MobiusFermionD, LatticeFermion> MdagM(Ddwf_f);
|
||||||
SchurDiagMooeeOperator<MobiusFermionR, LatticeFermion> VdagV(Ddwf_b);
|
SchurDiagMooeeOperator<MobiusFermionD, LatticeFermion> VdagV(Ddwf_b);
|
||||||
|
|
||||||
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
||||||
double lo = 0.0001;
|
double lo = 0.0001;
|
||||||
@ -155,10 +155,10 @@ int main(int argc, char **argv)
|
|||||||
RealD shift_L = 0.0;
|
RealD shift_L = 0.0;
|
||||||
RealD shift_R = -1.0;
|
RealD shift_R = -1.0;
|
||||||
int pm = 1;
|
int pm = 1;
|
||||||
MobiusEOFAFermionR Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, b, c);
|
MobiusEOFAFermionD Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, b, c);
|
||||||
MobiusEOFAFermionR Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, b, c);
|
MobiusEOFAFermionD Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, b, c);
|
||||||
MdagMLinearOperator<MobiusEOFAFermionR, LatticeFermion> LdagL(Deofa_L);
|
MdagMLinearOperator<MobiusEOFAFermionD, LatticeFermion> LdagL(Deofa_L);
|
||||||
MdagMLinearOperator<MobiusEOFAFermionR, LatticeFermion> RdagR(Deofa_R);
|
MdagMLinearOperator<MobiusEOFAFermionD, LatticeFermion> RdagR(Deofa_R);
|
||||||
|
|
||||||
// Stochastically estimate reweighting factor via EOFA
|
// Stochastically estimate reweighting factor via EOFA
|
||||||
RealD k = Deofa_L.k;
|
RealD k = Deofa_L.k;
|
||||||
|
@ -33,7 +33,7 @@ using namespace std;
|
|||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
;
|
||||||
|
|
||||||
typedef typename GparityDomainWallFermionR::FermionField FermionField;
|
typedef typename GparityDomainWallFermionD::FermionField FermionField;
|
||||||
|
|
||||||
// parameters for test
|
// parameters for test
|
||||||
const std::vector<int> grid_dim = { 8, 8, 8, 8 };
|
const std::vector<int> grid_dim = { 8, 8, 8, 8 };
|
||||||
@ -109,11 +109,11 @@ int main(int argc, char **argv)
|
|||||||
SU<Nc>::HotConfiguration(RNG4, Umu);
|
SU<Nc>::HotConfiguration(RNG4, Umu);
|
||||||
|
|
||||||
// Initialize RHMC fermion operators
|
// Initialize RHMC fermion operators
|
||||||
GparityDomainWallFermionR::ImplParams params;
|
GparityDomainWallFermionD::ImplParams params;
|
||||||
GparityMobiusFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c, params);
|
GparityMobiusFermionD Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c, params);
|
||||||
GparityMobiusFermionR Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, b, c, params);
|
GparityMobiusFermionD Ddwf_b(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, M5, b, c, params);
|
||||||
SchurDiagMooeeOperator<GparityMobiusFermionR, FermionField> MdagM(Ddwf_f);
|
SchurDiagMooeeOperator<GparityMobiusFermionD, FermionField> MdagM(Ddwf_f);
|
||||||
SchurDiagMooeeOperator<GparityMobiusFermionR, FermionField> VdagV(Ddwf_b);
|
SchurDiagMooeeOperator<GparityMobiusFermionD, FermionField> VdagV(Ddwf_b);
|
||||||
|
|
||||||
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
// Degree 12 rational approximations to x^(1/4) and x^(-1/4)
|
||||||
double lo = 0.0001;
|
double lo = 0.0001;
|
||||||
@ -158,10 +158,10 @@ int main(int argc, char **argv)
|
|||||||
RealD shift_L = 0.0;
|
RealD shift_L = 0.0;
|
||||||
RealD shift_R = -1.0;
|
RealD shift_R = -1.0;
|
||||||
int pm = 1;
|
int pm = 1;
|
||||||
GparityMobiusEOFAFermionR Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, b, c, params);
|
GparityMobiusEOFAFermionD Deofa_L(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, shift_L, pm, M5, b, c, params);
|
||||||
GparityMobiusEOFAFermionR Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, b, c, params);
|
GparityMobiusEOFAFermionD Deofa_R(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, shift_R, pm, M5, b, c, params);
|
||||||
MdagMLinearOperator<GparityMobiusEOFAFermionR, FermionField> LdagL(Deofa_L);
|
MdagMLinearOperator<GparityMobiusEOFAFermionD, FermionField> LdagL(Deofa_L);
|
||||||
MdagMLinearOperator<GparityMobiusEOFAFermionR, FermionField> RdagR(Deofa_R);
|
MdagMLinearOperator<GparityMobiusEOFAFermionD, FermionField> RdagR(Deofa_R);
|
||||||
|
|
||||||
// Stochastically estimate reweighting factor via EOFA
|
// Stochastically estimate reweighting factor via EOFA
|
||||||
RealD k = Deofa_L.k;
|
RealD k = Deofa_L.k;
|
||||||
|
@ -28,7 +28,7 @@ directory
|
|||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#include <Grid/Grid.h>
|
#include <Grid/Grid.h>
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
namespace Grid{
|
namespace Grid{
|
||||||
struct FermionParameters: Serializable {
|
struct FermionParameters: Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
||||||
@ -210,4 +210,6 @@ int main(int argc, char **argv)
|
|||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
|
||||||
} // main
|
} // main
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -29,6 +29,7 @@ directory
|
|||||||
#include <Grid/Grid.h>
|
#include <Grid/Grid.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
namespace Grid{
|
namespace Grid{
|
||||||
struct FermionParameters: Serializable {
|
struct FermionParameters: Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
||||||
@ -211,3 +212,6 @@ int main(int argc, char **argv)
|
|||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
|
||||||
} // main
|
} // main
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -32,6 +32,7 @@ directory
|
|||||||
#include "Grid/Grid.h"
|
#include "Grid/Grid.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
namespace Grid{
|
namespace Grid{
|
||||||
struct FermionParameters: Serializable {
|
struct FermionParameters: Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
||||||
@ -222,3 +223,6 @@ int main(int argc, char **argv) {
|
|||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
|
||||||
} // main
|
} // main
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -29,6 +29,7 @@ directory
|
|||||||
#include <Grid/Grid.h>
|
#include <Grid/Grid.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
namespace Grid{
|
namespace Grid{
|
||||||
struct FermionParameters: Serializable {
|
struct FermionParameters: Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(FermionParameters,
|
||||||
@ -211,3 +212,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
} // main
|
} // main
|
||||||
|
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -31,9 +31,10 @@ directory
|
|||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#include "Grid/Grid.h"
|
#include "Grid/Grid.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
|
||||||
|
|
||||||
// Here change the allowed (higher) representations
|
// Here change the allowed (higher) representations
|
||||||
typedef Representations< FundamentalRepresentation, AdjointRepresentation > TheRepresentations;
|
typedef Representations< FundamentalRepresentation, AdjointRepresentation > TheRepresentations;
|
||||||
@ -127,3 +128,6 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
} // main
|
} // main
|
||||||
|
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -33,6 +33,7 @@ directory
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
#ifndef GRID_CUDA
|
#ifndef GRID_CUDA
|
||||||
@ -138,3 +139,6 @@ int main(int argc, char **argv) {
|
|||||||
} // main
|
} // main
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -29,6 +29,7 @@ directory
|
|||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#include "Grid/Grid.h"
|
#include "Grid/Grid.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
;
|
||||||
@ -127,3 +128,6 @@ int main(int argc, char **argv) {
|
|||||||
} // main
|
} // main
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv){}
|
||||||
|
#endif
|
||||||
|
@ -28,19 +28,21 @@ directory
|
|||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#include <Grid/Grid.h>
|
#include <Grid/Grid.h>
|
||||||
|
|
||||||
|
#ifdef ENABLE_FERMION_REPS
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
|
|
||||||
|
|
||||||
//typedef WilsonCloverFermionR FermionOp;
|
//typedef WilsonCloverFermionD FermionOp;
|
||||||
//typedef typename WilsonFermionR::FermionField FermionField;
|
//typedef typename WilsonFermionD::FermionField FermionField;
|
||||||
|
|
||||||
typedef WilsonImplR FundImplPolicy;
|
typedef WilsonImplR FundImplPolicy;
|
||||||
typedef WilsonCloverFermionR FundFermionAction;
|
typedef WilsonCloverFermionD FundFermionAction;
|
||||||
typedef typename FundFermionAction::FermionField FundFermionField;
|
typedef typename FundFermionAction::FermionField FundFermionField;
|
||||||
|
|
||||||
typedef WilsonTwoIndexAntiSymmetricImplR ASymmImplPolicy;
|
typedef WilsonTwoIndexAntiSymmetricImplR ASymmImplPolicy;
|
||||||
typedef WilsonCloverTwoIndexAntiSymmetricFermionR ASymmFermionAction;
|
typedef WilsonCloverTwoIndexAntiSymmetricFermionD ASymmFermionAction;
|
||||||
typedef typename ASymmFermionAction::FermionField ASymmFermionField;
|
typedef typename ASymmFermionAction::FermionField ASymmFermionField;
|
||||||
|
|
||||||
|
|
||||||
@ -175,3 +177,6 @@ NerscHmcCheckpointer<PeriodicGimplR> Checkpoint(CPparams);
|
|||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int main(int argc,char **argv){ return 0;};
|
||||||
|
#endif
|
||||||
|
@ -188,8 +188,8 @@ int main (int argc, char ** argv) {
|
|||||||
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
||||||
|
|
||||||
// ZMobius EO Operator
|
// ZMobius EO Operator
|
||||||
ZMobiusFermionR Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
ZMobiusFermionD Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
||||||
SchurDiagTwoOperator<ZMobiusFermionR,LatticeFermion> HermOp(Ddwf);
|
SchurDiagTwoOperator<ZMobiusFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
|
|
||||||
// Eigenvector storage
|
// Eigenvector storage
|
||||||
LanczosParams fine =Params.FineParams;
|
LanczosParams fine =Params.FineParams;
|
||||||
|
@ -188,8 +188,8 @@ int main (int argc, char ** argv) {
|
|||||||
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
||||||
|
|
||||||
// ZMobius EO Operator
|
// ZMobius EO Operator
|
||||||
ZMobiusFermionR Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
ZMobiusFermionD Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
||||||
SchurDiagTwoOperator<ZMobiusFermionR,LatticeFermion> HermOp(Ddwf);
|
SchurDiagTwoOperator<ZMobiusFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
|
|
||||||
// Eigenvector storage
|
// Eigenvector storage
|
||||||
LanczosParams fine =Params.FineParams;
|
LanczosParams fine =Params.FineParams;
|
||||||
|
@ -301,8 +301,8 @@ int main (int argc, char ** argv) {
|
|||||||
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << " Ls: " << Ls << std::endl;
|
||||||
|
|
||||||
// ZMobius EO Operator
|
// ZMobius EO Operator
|
||||||
ZMobiusFermionR Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
ZMobiusFermionD Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, Params.omega,1.,0.);
|
||||||
SchurDiagTwoOperator<ZMobiusFermionR,LatticeFermion> HermOp(Ddwf);
|
SchurDiagTwoOperator<ZMobiusFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
|
|
||||||
// Eigenvector storage
|
// Eigenvector storage
|
||||||
LanczosParams fine =Params.FineParams;
|
LanczosParams fine =Params.FineParams;
|
||||||
|
@ -35,8 +35,8 @@ template<typename Action>
|
|||||||
struct Setup{};
|
struct Setup{};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct Setup<GparityMobiusFermionR>{
|
struct Setup<GparityMobiusFermionD>{
|
||||||
static GparityMobiusFermionR* getAction(LatticeGaugeField &Umu,
|
static GparityMobiusFermionD* getAction(LatticeGaugeField &Umu,
|
||||||
GridCartesian* FGrid, GridRedBlackCartesian* FrbGrid, GridCartesian* UGrid, GridRedBlackCartesian* UrbGrid){
|
GridCartesian* FGrid, GridRedBlackCartesian* FrbGrid, GridCartesian* UGrid, GridRedBlackCartesian* UrbGrid){
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
@ -44,17 +44,17 @@ struct Setup<GparityMobiusFermionR>{
|
|||||||
GparityMobiusFermionD ::ImplParams params;
|
GparityMobiusFermionD ::ImplParams params;
|
||||||
std::vector<int> twists({1,1,1,0});
|
std::vector<int> twists({1,1,1,0});
|
||||||
params.twists = twists;
|
params.twists = twists;
|
||||||
return new GparityMobiusFermionR(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,mob_b,mob_b-1.,params);
|
return new GparityMobiusFermionD(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,mob_b,mob_b-1.,params);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct Setup<DomainWallFermionR>{
|
struct Setup<DomainWallFermionD>{
|
||||||
static DomainWallFermionR* getAction(LatticeGaugeField &Umu,
|
static DomainWallFermionD* getAction(LatticeGaugeField &Umu,
|
||||||
GridCartesian* FGrid, GridRedBlackCartesian* FrbGrid, GridCartesian* UGrid, GridRedBlackCartesian* UrbGrid){
|
GridCartesian* FGrid, GridRedBlackCartesian* FrbGrid, GridCartesian* UGrid, GridRedBlackCartesian* UrbGrid){
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
return new DomainWallFermionR(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
return new DomainWallFermionD(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -127,9 +127,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(action == "GparityMobius"){
|
if(action == "GparityMobius"){
|
||||||
run<GparityMobiusFermionR>();
|
run<GparityMobiusFermionD>();
|
||||||
}else if(action == "DWF"){
|
}else if(action == "DWF"){
|
||||||
run<DomainWallFermionR>();
|
run<DomainWallFermionD>();
|
||||||
}else{
|
}else{
|
||||||
std::cout << "Unknown action" << std::endl;
|
std::cout << "Unknown action" << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -32,8 +32,8 @@ using namespace std;
|
|||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
;
|
||||||
|
|
||||||
typedef WilsonFermionR FermionOp;
|
typedef WilsonFermionD FermionOp;
|
||||||
typedef typename WilsonFermionR::FermionField FermionField;
|
typedef typename WilsonFermionD::FermionField FermionField;
|
||||||
|
|
||||||
|
|
||||||
RealD AllZero(RealD x) { return 0.; }
|
RealD AllZero(RealD x) { return 0.; }
|
||||||
|
@ -96,13 +96,16 @@ int main(int argc, char **argv) {
|
|||||||
std::cout << GridLogMessage << "Initial plaquette: "
|
std::cout << GridLogMessage << "Initial plaquette: "
|
||||||
<< WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu) << std::endl;
|
<< WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu) << std::endl;
|
||||||
|
|
||||||
WilsonFlow<PeriodicGimplR> WF(WFPar.steps, WFPar.step_size, WFPar.meas_interval);
|
int t=WFPar.maxTau;
|
||||||
|
WilsonFlowAdaptive<PeriodicGimplR> WF(WFPar.step_size, WFPar.maxTau,
|
||||||
|
1.0e-4,
|
||||||
|
WFPar.meas_interval);
|
||||||
|
|
||||||
WF.smear_adaptive(Uflow, Umu, WFPar.maxTau);
|
WF.smear(Uflow, Umu);
|
||||||
|
|
||||||
RealD WFlow_plaq = WilsonLoops<PeriodicGimplR>::avgPlaquette(Uflow);
|
RealD WFlow_plaq = WilsonLoops<PeriodicGimplR>::avgPlaquette(Uflow);
|
||||||
RealD WFlow_TC = WilsonLoops<PeriodicGimplR>::TopologicalCharge(Uflow);
|
RealD WFlow_TC = WilsonLoops<PeriodicGimplR>::TopologicalCharge(Uflow);
|
||||||
RealD WFlow_T0 = WF.energyDensityPlaquette(Uflow);
|
RealD WFlow_T0 = WF.energyDensityPlaquette(t,Uflow);
|
||||||
std::cout << GridLogMessage << "Plaquette "<< conf << " " << WFlow_plaq << std::endl;
|
std::cout << GridLogMessage << "Plaquette "<< conf << " " << WFlow_plaq << std::endl;
|
||||||
std::cout << GridLogMessage << "T0 "<< conf << " " << WFlow_T0 << std::endl;
|
std::cout << GridLogMessage << "T0 "<< conf << " " << WFlow_T0 << std::endl;
|
||||||
std::cout << GridLogMessage << "TopologicalCharge "<< conf << " " << WFlow_TC << std::endl;
|
std::cout << GridLogMessage << "TopologicalCharge "<< conf << " " << WFlow_TC << std::endl;
|
||||||
|
@ -71,14 +71,14 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass=0.1;
|
RealD mass=0.1;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
|
|
||||||
OverlapWilsonContFracTanhFermionR Dcf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
OverlapWilsonContFracTanhFermionD Dcf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
||||||
|
|
||||||
ConjugateResidual<LatticeFermion> MCR(1.0e-8,10000);
|
ConjugateResidual<LatticeFermion> MCR(1.0e-8,10000);
|
||||||
|
|
||||||
MdagMLinearOperator<OverlapWilsonContFracTanhFermionR,LatticeFermion> HermPosDefOp(Dcf);
|
MdagMLinearOperator<OverlapWilsonContFracTanhFermionD,LatticeFermion> HermPosDefOp(Dcf);
|
||||||
MCR(HermPosDefOp,src,result);
|
MCR(HermPosDefOp,src,result);
|
||||||
|
|
||||||
HermitianLinearOperator<OverlapWilsonContFracTanhFermionR,LatticeFermion> HermIndefOp(Dcf);
|
HermitianLinearOperator<OverlapWilsonContFracTanhFermionD,LatticeFermion> HermIndefOp(Dcf);
|
||||||
MCR(HermIndefOp,src,result);
|
MCR(HermIndefOp,src,result);
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -108,8 +108,8 @@ int main(int argc, char** argv) {
|
|||||||
RealD mass = -0.30;
|
RealD mass = -0.30;
|
||||||
RealD csw = 1.9192;
|
RealD csw = 1.9192;
|
||||||
|
|
||||||
WilsonCloverFermionR Dwc(Umu, *Grid_f, *RBGrid_f, mass, csw, csw);
|
WilsonCloverFermionD Dwc(Umu, *Grid_f, *RBGrid_f, mass, csw, csw);
|
||||||
MdagMLinearOperator<WilsonCloverFermionR, LatticeFermion> MdagMOp_Dwc(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD, LatticeFermion> MdagMOp_Dwc(Dwc);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Type definitions //
|
// Type definitions //
|
||||||
|
@ -102,21 +102,21 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonContFracTanhFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonContFracTanhFermion test"<<std::endl;
|
||||||
OverlapWilsonContFracTanhFermionR Dcf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
OverlapWilsonContFracTanhFermionD Dcf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
||||||
TestCGinversions<OverlapWilsonContFracTanhFermionR>(Dcf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonContFracTanhFermionD>(Dcf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonContFracZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonContFracZolotarevFermion test"<<std::endl;
|
||||||
OverlapWilsonContFracZolotarevFermionR Dcfz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,6.0);
|
OverlapWilsonContFracZolotarevFermionD Dcfz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,6.0);
|
||||||
TestCGinversions<OverlapWilsonContFracZolotarevFermionR>(Dcfz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonContFracZolotarevFermionD>(Dcfz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonPartialFractionTanhFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonPartialFractionTanhFermion test"<<std::endl;
|
||||||
OverlapWilsonPartialFractionTanhFermionR Dpf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
OverlapWilsonPartialFractionTanhFermionD Dpf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,1.0);
|
||||||
TestCGinversions<OverlapWilsonPartialFractionTanhFermionR>(Dpf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonPartialFractionTanhFermionD>(Dpf,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage <<"OverlapWilsonPartialFractionZolotarevFermion test"<<std::endl;
|
std::cout<<GridLogMessage <<"OverlapWilsonPartialFractionZolotarevFermion test"<<std::endl;
|
||||||
OverlapWilsonPartialFractionZolotarevFermionR Dpfz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,6.0);
|
OverlapWilsonPartialFractionZolotarevFermionD Dpfz(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,0.1,6.0);
|
||||||
TestCGinversions<OverlapWilsonPartialFractionZolotarevFermionR>(Dpfz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
TestCGinversions<OverlapWilsonPartialFractionZolotarevFermionD>(Dpfz,FGrid,FrbGrid,UGrid,UrbGrid,mass,M5,&RNG4,&RNG5);
|
||||||
|
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -79,7 +79,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
RealD mass = 0.01;
|
RealD mass = 0.01;
|
||||||
RealD M5 = 1.8;
|
RealD M5 = 1.8;
|
||||||
DomainWallFermionR Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5);
|
DomainWallFermionD Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5);
|
||||||
|
|
||||||
LatticeFermion src_o(FrbGrid);
|
LatticeFermion src_o(FrbGrid);
|
||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
@ -88,7 +88,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
GridStopWatch CGTimer;
|
GridStopWatch CGTimer;
|
||||||
|
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR, LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<DomainWallFermionD, LatticeFermion> HermOpEO(Ddwf);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-5, 10000, 0);// switch off the assert
|
ConjugateGradient<LatticeFermion> CG(1.0e-5, 10000, 0);// switch off the assert
|
||||||
|
|
||||||
CGTimer.Start();
|
CGTimer.Start();
|
||||||
@ -98,8 +98,5 @@ int main(int argc, char** argv) {
|
|||||||
std::cout << GridLogMessage << "Total CG time : " << CGTimer.Elapsed()
|
std::cout << GridLogMessage << "Total CG time : " << CGTimer.Elapsed()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
std::cout << GridLogMessage << "######## Dhop calls summary" << std::endl;
|
|
||||||
Ddwf.Report();
|
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.1;
|
RealD mass=0.1;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
SchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
SchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
||||||
|
@ -70,9 +70,9 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.1;
|
RealD mass=0.1;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-6,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-6,10000);
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -77,12 +77,12 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
MCR(HermOp,src,result);
|
MCR(HermOp,src,result);
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> g5HermOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> g5HermOp(Ddwf);
|
||||||
MCR(g5HermOp,src,result);
|
MCR(g5HermOp,src,result);
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,12 +77,12 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||||
std::cout<<GridLogMessage<<"* Solving with MdagM VPGCR "<<std::endl;
|
std::cout<<GridLogMessage<<"* Solving with MdagM VPGCR "<<std::endl;
|
||||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
TrivialPrecon<LatticeFermion> simple;
|
TrivialPrecon<LatticeFermion> simple;
|
||||||
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR(1.0e-6,10000,HermOp,simple,4,160);
|
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR(1.0e-6,10000,HermOp,simple,4,160);
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||||
std::cout<<GridLogMessage<<"* Solving with g5-VPGCR "<<std::endl;
|
std::cout<<GridLogMessage<<"* Solving with g5-VPGCR "<<std::endl;
|
||||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> g5HermOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> g5HermOp(Ddwf);
|
||||||
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR5(1.0e-6,10000,g5HermOp,simple,4,160);
|
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR5(1.0e-6,10000,g5HermOp,simple,4,160);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
PGCR5(src,result);
|
PGCR5(src,result);
|
||||||
|
@ -254,7 +254,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.001;
|
RealD mass=0.001;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -263,7 +263,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
Level1Op LDOp(*Coarse5d,*Coarse5dRB,1); LDOp.CoarsenOperator(FGrid,HermIndefOp,Aggregates);
|
Level1Op LDOp(*Coarse5d,*Coarse5dRB,1); LDOp.CoarsenOperator(FGrid,HermIndefOp,Aggregates);
|
||||||
|
|
||||||
@ -351,16 +351,16 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
||||||
|
|
||||||
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
||||||
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,12.0,3,L1LinOp,LDOp);
|
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,12.0,3,L1LinOp,LDOp);
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf);
|
||||||
|
|
||||||
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
||||||
// MirsSmoother<LatticeFermion,DomainWallFermionR> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
// MirsSmoother<LatticeFermion,DomainWallFermionD> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
||||||
|
|
||||||
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
||||||
L1LinOp,LDOp,
|
L1LinOp,LDOp,
|
||||||
|
@ -268,7 +268,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.001;
|
RealD mass=0.001;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -277,7 +277,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -311,7 +311,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
|
|
||||||
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
||||||
@ -338,11 +338,11 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector> , SolverWrapper<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector> , SolverWrapper<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
||||||
|
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,12,HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,12,HermIndefOp,Ddwf);
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling 2 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Calling 2 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
@ -382,7 +382,7 @@ int main (int argc, char ** argv)
|
|||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> HermOpEO(Ddwf);
|
||||||
// pCG(HermOpEO,src_o,result_o);
|
// pCG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
@ -250,7 +250,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.00078;
|
RealD mass=0.00078;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -259,7 +259,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -292,7 +292,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
|
|
||||||
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
||||||
@ -391,18 +391,18 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
// typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
// typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
||||||
|
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.25,60.0,12,HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.25,60.0,12,HermIndefOp,Ddwf);
|
||||||
/*
|
/*
|
||||||
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
||||||
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,15.0,3,L1LinOp,LDOp);
|
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,15.0,3,L1LinOp,LDOp);
|
||||||
|
|
||||||
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
||||||
// MirsSmoother<LatticeFermion,DomainWallFermionR> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
// MirsSmoother<LatticeFermion,DomainWallFermionD> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
||||||
|
|
||||||
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
||||||
L1LinOp,LDOp,
|
L1LinOp,LDOp,
|
||||||
@ -463,7 +463,7 @@ int main (int argc, char ** argv)
|
|||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> HermOpEO(Ddwf);
|
||||||
// pCG(HermOpEO,src_o,result_o);
|
// pCG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
@ -288,7 +288,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.001;
|
RealD mass=0.001;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -297,7 +297,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
Level1Op LDOp(*Coarse5d,*Coarse5dRB,1); LDOp.CoarsenOperator(FGrid,HermIndefOp,Aggregates);
|
Level1Op LDOp(*Coarse5d,*Coarse5dRB,1); LDOp.CoarsenOperator(FGrid,HermIndefOp,Aggregates);
|
||||||
|
|
||||||
@ -375,21 +375,21 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building 2 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 2 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
|
|
||||||
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,14,HermIndefOp,Ddwf); // 72 iter 63s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,14,HermIndefOp,Ddwf); // 72 iter 63s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.1,60.0,20,HermIndefOp,Ddwf); // 66 iter 69s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.1,60.0,20,HermIndefOp,Ddwf); // 66 iter 69s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,20,HermIndefOp,Ddwf); // 63 iter 65 s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,20,HermIndefOp,Ddwf); // 63 iter 65 s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(1.0,60.0,20,HermIndefOp,Ddwf); // 69, 70
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(1.0,60.0,20,HermIndefOp,Ddwf); // 69, 70
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(1.0,60.0,14,HermIndefOp,Ddwf); // 77
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(1.0,60.0,14,HermIndefOp,Ddwf); // 77
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf); // 23 iter 15.9s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf); // 23 iter 15.9s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,14,HermIndefOp,Ddwf); // 20, 16.9s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,14,HermIndefOp,Ddwf); // 20, 16.9s
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,12,HermIndefOp,Ddwf); // 21, 15.6s
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,12,HermIndefOp,Ddwf); // 21, 15.6s
|
||||||
|
|
||||||
// MirsSmoother<LatticeFermion,DomainWallFermionR> FineCGSmoother(0.05,0.01,20,HermIndefOp,Ddwf);
|
// MirsSmoother<LatticeFermion,DomainWallFermionD> FineCGSmoother(0.05,0.01,20,HermIndefOp,Ddwf);
|
||||||
// RedBlackSmoother<LatticeFermion,DomainWallFermionR> FineRBSmoother(0.00,0.001,100,Ddwf);
|
// RedBlackSmoother<LatticeFermion,DomainWallFermionD> FineRBSmoother(0.00,0.001,100,Ddwf);
|
||||||
|
|
||||||
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
||||||
// ZeroGuesser<CoarseVector> CoarseZeroGuesser;
|
// ZeroGuesser<CoarseVector> CoarseZeroGuesser;
|
||||||
@ -416,7 +416,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
|
|
||||||
ConjugateGradient<LatticeFermion> FineCG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> FineCG(1.0e-8,10000);
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> FineDiagMooee(Ddwf); // M_ee - Meo Moo^-1 Moe
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> FineDiagMooee(Ddwf); // M_ee - Meo Moo^-1 Moe
|
||||||
LatticeFermion f_src_e(FrbGrid); f_src_e=1.0;
|
LatticeFermion f_src_e(FrbGrid); f_src_e=1.0;
|
||||||
LatticeFermion f_res_e(FrbGrid); f_res_e=Zero();
|
LatticeFermion f_res_e(FrbGrid); f_res_e=Zero();
|
||||||
FineCG(FineDiagMooee,f_src_e,f_res_e);
|
FineCG(FineDiagMooee,f_src_e,f_res_e);
|
||||||
|
@ -264,7 +264,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.00078;
|
RealD mass=0.00078;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -273,7 +273,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -306,7 +306,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
|
|
||||||
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
||||||
@ -332,9 +332,9 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector> , SolverWrapper<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector> , SolverWrapper<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling 2 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Calling 2 level Multigrid "<< std::endl;
|
||||||
@ -349,7 +349,7 @@ int main (int argc, char ** argv)
|
|||||||
result=Zero();
|
result=Zero();
|
||||||
|
|
||||||
std::cout << GridLogMessage <<" tol " << tols[t] << " cheby order " <<ords[o]<< " lo "<<los[l] <<std::endl;
|
std::cout << GridLogMessage <<" tol " << tols[t] << " cheby order " <<ords[o]<< " lo "<<los[l] <<std::endl;
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(los[l],60.0,ords[o],HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(los[l],60.0,ords[o],HermIndefOp,Ddwf);
|
||||||
ZeroGuesser<CoarseVector> CoarseZeroGuesser;
|
ZeroGuesser<CoarseVector> CoarseZeroGuesser;
|
||||||
ConjugateGradient<CoarseVector> CoarseCG(tols[t],10000);
|
ConjugateGradient<CoarseVector> CoarseCG(tols[t],10000);
|
||||||
SchurRedBlackDiagMooeeSolve<CoarseVector> CoarseRBCG(CoarseCG);
|
SchurRedBlackDiagMooeeSolve<CoarseVector> CoarseRBCG(CoarseCG);
|
||||||
@ -376,7 +376,7 @@ int main (int argc, char ** argv)
|
|||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> HermOpEO(Ddwf);
|
||||||
pCG(HermOpEO,src_o,result_o);
|
pCG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
@ -248,7 +248,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.00078;
|
RealD mass=0.00078;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -257,7 +257,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
|
|
||||||
|
|
||||||
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
GridRedBlackCartesian * Coarse4dRB = SpaceTimeGrid::makeFourDimRedBlackGrid(Coarse4d);
|
||||||
@ -386,18 +386,18 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
std::cout<<GridLogMessage << "Building 3 level Multigrid "<< std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
// typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
// typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,DeflatedGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector> , NormalEquations<CoarseVector> > TwoLevelMG;
|
||||||
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
typedef MultiGridPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,Level1Op, DeflatedGuesser<CoarseCoarseVector>, NormalEquations<CoarseCoarseVector> > CoarseMG;
|
||||||
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionR,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
typedef MultiGridPreconditioner<vSpinColourVector, vTComplex,nbasis, DomainWallFermionD,ZeroGuesser<CoarseVector>, LinearFunction<CoarseVector> > ThreeLevelMG;
|
||||||
|
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.25,60.0,12,HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.25,60.0,12,HermIndefOp,Ddwf);
|
||||||
/*
|
/*
|
||||||
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
// MultiGrid preconditioner acting on the coarse space <-> coarsecoarse space
|
||||||
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,15.0,3,L1LinOp,LDOp);
|
ChebyshevSmoother<CoarseVector, Level1Op > CoarseSmoother(0.1,15.0,3,L1LinOp,LDOp);
|
||||||
|
|
||||||
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
// MirsSmoother<CoarseVector, Level1Op > CoarseCGSmoother(0.1,0.1,4,L1LinOp,LDOp);
|
||||||
// MirsSmoother<LatticeFermion,DomainWallFermionR> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
// MirsSmoother<LatticeFermion,DomainWallFermionD> FineCGSmoother(0.0,0.01,8,HermIndefOp,Ddwf);
|
||||||
|
|
||||||
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
CoarseMG Level2Precon (CoarseAggregates, L2Op,
|
||||||
L1LinOp,LDOp,
|
L1LinOp,LDOp,
|
||||||
@ -458,7 +458,7 @@ int main (int argc, char ** argv)
|
|||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> HermOpEO(Ddwf);
|
||||||
pCG(HermOpEO,src_o,result_o);
|
pCG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
@ -35,9 +35,9 @@ using namespace Grid;
|
|||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_LIME
|
#ifdef HAVE_LIME
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=4;
|
const int Ls=4;
|
||||||
|
|
||||||
@ -194,15 +194,15 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
DomainWallFermionD Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
||||||
DomainWallFermionR Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOpCk(Dchk);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOpCk(Dchk);
|
||||||
ConjugateGradient<FermionField> CG((1.0e-5/(me+1)),10000);
|
ConjugateGradient<FermionField> CG((1.0e-5/(me+1)),10000);
|
||||||
s_res = Zero();
|
s_res = Zero();
|
||||||
CG(HermOp,s_src,s_res);
|
CG(HermOp,s_src,s_res);
|
||||||
|
@ -34,9 +34,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
double stp=1.0e-5;
|
double stp=1.0e-5;
|
||||||
const int Ls=4;
|
const int Ls=4;
|
||||||
@ -189,15 +189,15 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
DomainWallFermionD Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
||||||
DomainWallFermionR Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOpCk(Dchk);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOpCk(Dchk);
|
||||||
ConjugateGradient<FermionField> CG((stp),10000);
|
ConjugateGradient<FermionField> CG((stp),10000);
|
||||||
s_res = Zero();
|
s_res = Zero();
|
||||||
CG(HermOp,s_src,s_res);
|
CG(HermOp,s_src,s_res);
|
||||||
|
@ -34,9 +34,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=4;
|
const int Ls=4;
|
||||||
|
|
||||||
@ -124,15 +124,15 @@ int main (int argc, char ** argv)
|
|||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
DomainWallFermionD Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
||||||
DomainWallFermionR Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOpCk(Dchk);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOpCk(Dchk);
|
||||||
ConjugateGradient<FermionField> CG((1.0e-8/(me+1)),10000);
|
ConjugateGradient<FermionField> CG((1.0e-8/(me+1)),10000);
|
||||||
s_res = Zero();
|
s_res = Zero();
|
||||||
CG(HermOp,s_src,s_res);
|
CG(HermOp,s_src,s_res);
|
||||||
|
@ -397,8 +397,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.001;
|
RealD mass=0.001;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
DomainWallFermionR Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
DomainWallFermionD Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -407,7 +407,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermDefOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermDefOp(Ddwf);
|
||||||
|
|
||||||
Subspace Aggregates(Coarse5d,FGrid,0);
|
Subspace Aggregates(Coarse5d,FGrid,0);
|
||||||
|
|
||||||
@ -435,8 +435,8 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
typedef CoarsenedMatrix<siteVector,iScalar<vTComplex>,nbasisc> Level2Op;
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOp(Ddwf);
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> HermIndefOpPV(Dpv);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> HermIndefOpPV(Dpv);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Building coarse representation of Indef operator" <<std::endl;
|
std::cout<<GridLogMessage << "Building coarse representation of Indef operator" <<std::endl;
|
||||||
@ -470,10 +470,10 @@ int main (int argc, char ** argv)
|
|||||||
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
||||||
// GeneralisedMinimalResidual<LatticeFermion> FineGMRES(tol,MaxIt,20);
|
// GeneralisedMinimalResidual<LatticeFermion> FineGMRES(tol,MaxIt,20);
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
||||||
PVdagMLinearOperator<DomainWallFermionR,LatticeFermion> FinePVdagM(Ddwf,Dpv);// M_{pv}^\dag M
|
PVdagMLinearOperator<DomainWallFermionD,LatticeFermion> FinePVdagM(Ddwf,Dpv);// M_{pv}^\dag M
|
||||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> FineDiagMooee(Ddwf); // M_ee - Meo Moo^-1 Moe
|
SchurDiagMooeeOperator<DomainWallFermionD,LatticeFermion> FineDiagMooee(Ddwf); // M_ee - Meo Moo^-1 Moe
|
||||||
SchurDiagOneOperator<DomainWallFermionR,LatticeFermion> FineDiagOne(Ddwf); // 1 - M_ee^{-1} Meo Moo^{-1} Moe e
|
SchurDiagOneOperator<DomainWallFermionD,LatticeFermion> FineDiagOne(Ddwf); // 1 - M_ee^{-1} Meo Moo^{-1} Moe e
|
||||||
|
|
||||||
MdagMLinearOperator<Level1Op,CoarseVector> CoarseMdagM(LDOp);
|
MdagMLinearOperator<Level1Op,CoarseVector> CoarseMdagM(LDOp);
|
||||||
PVdagMLinearOperator<Level1Op,CoarseVector> CoarsePVdagM(LDOp,LDOpPV);
|
PVdagMLinearOperator<Level1Op,CoarseVector> CoarsePVdagM(LDOp,LDOpPV);
|
||||||
@ -552,7 +552,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
|
|
||||||
ConjugateGradient<CoarseVector> CoarseMgridCG(0.001,1000);
|
ConjugateGradient<CoarseVector> CoarseMgridCG(0.001,1000);
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(0.5,60.0,10,HermIndefOp,Ddwf);
|
||||||
|
|
||||||
typedef HDCRPreconditioner<vSpinColourVector, vTComplex,nbasis, NormalEquations<CoarseVector> > TwoLevelHDCR;
|
typedef HDCRPreconditioner<vSpinColourVector, vTComplex,nbasis, NormalEquations<CoarseVector> > TwoLevelHDCR;
|
||||||
TwoLevelHDCR TwoLevelPrecon(Aggregates,
|
TwoLevelHDCR TwoLevelPrecon(Aggregates,
|
||||||
|
@ -66,17 +66,17 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.0;
|
RealD mass=0.0;
|
||||||
RealD M5=-1.8;
|
RealD M5=-1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
|
|
||||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> g5HermOp(Ddwf);
|
Gamma5R5HermitianLinearOperator<DomainWallFermionD,LatticeFermion> g5HermOp(Ddwf);
|
||||||
QMR(g5HermOp,src,result);
|
QMR(g5HermOp,src,result);
|
||||||
GMR(g5HermOp,src,result);
|
GMR(g5HermOp,src,result);
|
||||||
|
|
||||||
NonHermitianLinearOperator<DomainWallFermionR,LatticeFermion> NonHermOp(Ddwf);
|
NonHermitianLinearOperator<DomainWallFermionD,LatticeFermion> NonHermOp(Ddwf);
|
||||||
QMR(NonHermOp,src,result);
|
QMR(NonHermOp,src,result);
|
||||||
GMR(NonHermOp,src,result);
|
GMR(NonHermOp,src,result);
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> HermOp(Ddwf);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -83,8 +83,8 @@ int main (int argc, char** argv)
|
|||||||
RealD mf = 0.01;
|
RealD mf = 0.01;
|
||||||
RealD mb = 1.0;
|
RealD mb = 1.0;
|
||||||
RealD M5 = 1.8;
|
RealD M5 = 1.8;
|
||||||
MobiusEOFAFermionR Lop(U, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, 0.0, -1, M5, b, c);
|
MobiusEOFAFermionD Lop(U, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, mf, mb, 0.0, -1, M5, b, c);
|
||||||
MobiusEOFAFermionR Rop(U, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, -1.0, 1, M5, b, c);
|
MobiusEOFAFermionD Rop(U, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mb, mf, mb, -1.0, 1, M5, b, c);
|
||||||
OneFlavourRationalParams Params(0.95, 100.0, 5000, 1.0e-10, 12);
|
OneFlavourRationalParams Params(0.95, 100.0, 5000, 1.0e-10, 12);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-10, 5000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-10, 5000);
|
||||||
ExactOneFlavourRatioPseudoFermionAction<WilsonImplR> Meofa(Lop, Rop, CG, CG, CG, CG, CG, Params, false);
|
ExactOneFlavourRatioPseudoFermionAction<WilsonImplR> Meofa(Lop, Rop, CG, CG, CG, CG, CG, Params, false);
|
||||||
|
@ -292,9 +292,9 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
RealD mass=0.001;
|
RealD mass=0.001;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
WilsonFermionR Dw(Umu,*UGrid,*UrbGrid,-M5);
|
WilsonFermionD Dw(Umu,*UGrid,*UrbGrid,-M5);
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
DomainWallFermionR Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
DomainWallFermionD Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -304,7 +304,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> SubspaceOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> SubspaceOp(Dw);
|
||||||
|
|
||||||
Subspace Aggregates4D(Coarse4d,UGrid,0);
|
Subspace Aggregates4D(Coarse4d,UGrid,0);
|
||||||
Subspace Aggregates5D(Coarse5d,FGrid,0);
|
Subspace Aggregates5D(Coarse5d,FGrid,0);
|
||||||
@ -335,7 +335,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op;
|
||||||
|
|
||||||
NonHermitianLinearOperator<DomainWallFermionR,LatticeFermion> LinOpDwf(Ddwf);
|
NonHermitianLinearOperator<DomainWallFermionD,LatticeFermion> LinOpDwf(Ddwf);
|
||||||
|
|
||||||
Level1Op LDOp (*Coarse5d,*Coarse5dRB,0);
|
Level1Op LDOp (*Coarse5d,*Coarse5dRB,0);
|
||||||
|
|
||||||
|
@ -395,7 +395,7 @@ public:
|
|||||||
Geometry geom;
|
Geometry geom;
|
||||||
GridBase *Coarse5D;
|
GridBase *Coarse5D;
|
||||||
GridBase *Coarse4D;
|
GridBase *Coarse4D;
|
||||||
CartesianStencil<siteVector,siteVector,int> Stencil;
|
CartesianStencil<siteVector,siteVector,DefaultImplParams> Stencil;
|
||||||
CoarsenedMatrix<Fobj,CComplex,nbasis> &Dw;
|
CoarsenedMatrix<Fobj,CComplex,nbasis> &Dw;
|
||||||
|
|
||||||
GridBase * Grid(void) { return Coarse5D; }; // this is all the linalg routines need to know
|
GridBase * Grid(void) { return Coarse5D; }; // this is all the linalg routines need to know
|
||||||
@ -409,7 +409,7 @@ public:
|
|||||||
Coarse5D(&CoarseGrid5),
|
Coarse5D(&CoarseGrid5),
|
||||||
Dw(_Dw),
|
Dw(_Dw),
|
||||||
geom(CoarseGrid5._ndimension),
|
geom(CoarseGrid5._ndimension),
|
||||||
Stencil( &CoarseGrid5,geom.npoint,Even,geom.directions,geom.displacements,0)
|
Stencil( &CoarseGrid5,geom.npoint,Even,geom.directions,geom.displacements,DefaultImplParams())
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -981,9 +981,9 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.00078;
|
RealD mass=0.00078;
|
||||||
|
|
||||||
WilsonFermionR Dw(Umu,*UGrid,*UrbGrid,-M5);
|
WilsonFermionD Dw(Umu,*UGrid,*UrbGrid,-M5);
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
DomainWallFermionR Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
DomainWallFermionD Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -994,21 +994,21 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
// How to find criticall mass?
|
// How to find criticall mass?
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.75); // 600 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.75); // 600 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.80); // 800 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.80); // 800 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.82); // 1023 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.82); // 1023 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.85); // 1428 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.85); // 1428 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.87); // 1900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.87); // 1900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.90); // 3900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.90); // 3900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.92); // 6200 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.92); // 6200 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.94); // 8882 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.94); // 8882 iters
|
||||||
WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.95); // 9170 iters
|
WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.95); // 9170 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.96); // 8882 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.96); // 8882 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.97); // 8406 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.97); // 8406 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.99); // 6900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.99); // 6900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-1.01); // 6397 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-1.01); // 6397 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-1.00); // 5900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-1.00); // 5900 iters
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> MdagM_Dw(Dw_null);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> MdagM_Dw(Dw_null);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Testing Wilson criticality " <<std::endl;
|
std::cout<<GridLogMessage << "Testing Wilson criticality " <<std::endl;
|
||||||
@ -1057,7 +1057,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op4;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op4;
|
||||||
typedef CoarseCayleyFermion<vSpinColourVector,vTComplex,nbasis> Level1Op5;
|
typedef CoarseCayleyFermion<vSpinColourVector,vTComplex,nbasis> Level1Op5;
|
||||||
Level1Op4 c_Dw (*Coarse4d,0);
|
Level1Op4 c_Dw (*Coarse4d,0);
|
||||||
NonHermitianLinearOperator<WilsonFermionR,LatticeFermion> LinOpDw(Dw);
|
NonHermitianLinearOperator<WilsonFermionD,LatticeFermion> LinOpDw(Dw);
|
||||||
c_Dw.CoarsenOperator(UGrid,LinOpDw,Aggregates4D); // contains the M5 from Dw(-M5)
|
c_Dw.CoarsenOperator(UGrid,LinOpDw,Aggregates4D); // contains the M5 from Dw(-M5)
|
||||||
// c_Dw.Test(Aggregates4D,UGrid,LinOpDw);
|
// c_Dw.Test(Aggregates4D,UGrid,LinOpDw);
|
||||||
|
|
||||||
@ -1127,8 +1127,8 @@ int main (int argc, char ** argv)
|
|||||||
ConjugateGradient<CoarseVector> CoarseCG(tol,MaxIt);
|
ConjugateGradient<CoarseVector> CoarseCG(tol,MaxIt);
|
||||||
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
||||||
|
|
||||||
NonHermitianLinearOperator<DomainWallFermionR,LatticeFermion> FineM(Ddwf);
|
NonHermitianLinearOperator<DomainWallFermionD,LatticeFermion> FineM(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
||||||
|
|
||||||
NonHermitianLinearOperator<Level1Op5,CoarseVector> CoarseM(c_Dwf);
|
NonHermitianLinearOperator<Level1Op5,CoarseVector> CoarseM(c_Dwf);
|
||||||
MdagMLinearOperator<Level1Op5,CoarseVector> CoarseMdagM(c_Dwf);
|
MdagMLinearOperator<Level1Op5,CoarseVector> CoarseMdagM(c_Dwf);
|
||||||
@ -1233,39 +1233,39 @@ typedef HDCRPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,NormalEquations
|
|||||||
|
|
||||||
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,14,FineM,Ddwf); // 26 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,14,FineM,Ddwf); // 26 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,14,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,14,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 38s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 38s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,16,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,16,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 23 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 23 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,20,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,20,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,10,FineM,Ddwf);24 iter, 44s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,10,FineM,Ddwf);24 iter, 44s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,24,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,24,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // odd convergence tail at 10^-9 ish
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // odd convergence tail at 10^-9 ish
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.1,60.0,24,FineM,Ddwf); // 33 iter, waas O(10-9 by 26)
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.1,60.0,24,FineM,Ddwf); // 33 iter, waas O(10-9 by 26)
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,18,FineM,Ddwf); //
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,18,FineM,Ddwf); //
|
||||||
|
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,16,FineM,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,16,FineM,Ddwf);
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,16,FineM,Ddwf); //
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,16,FineM,Ddwf); //
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,11,FineM,Ddwf); // 33 iter, 49s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,11,FineM,Ddwf); // 33 iter, 49s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,11,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,11,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 26 iter, 37s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 26 iter, 37s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.4,60.0,12,FineM,Ddwf); // iter 26 no change in final residual
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.4,60.0,12,FineM,Ddwf); // iter 26 no change in final residual
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.4,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.4,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.3,60.0,12,FineM,Ddwf); // 27 iter 39s.
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.3,60.0,12,FineM,Ddwf); // 27 iter 39s.
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.3,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.3,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.3,60.0,13,FineM,Ddwf); // 26 iter, but slower
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.3,60.0,13,FineM,Ddwf); // 26 iter, but slower
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.3,60.0,13,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.3,60.0,13,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(1.0,60.0,12,FineM,Ddwf); // 34 iter, slower
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(1.0,60.0,12,FineM,Ddwf); // 34 iter, slower
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(1.0,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(1.0,60.0,12,FineM,Ddwf);
|
||||||
|
|
||||||
ThreeLevelMG ThreeLevelPrecon(Aggregates4D,
|
ThreeLevelMG ThreeLevelPrecon(Aggregates4D,
|
||||||
FineM,
|
FineM,
|
||||||
|
@ -395,7 +395,7 @@ public:
|
|||||||
Geometry geom;
|
Geometry geom;
|
||||||
GridBase *Coarse5D;
|
GridBase *Coarse5D;
|
||||||
GridBase *Coarse4D;
|
GridBase *Coarse4D;
|
||||||
CartesianStencil<siteVector,siteVector,int> Stencil;
|
CartesianStencil<siteVector,siteVector,DefaultImplParams> Stencil;
|
||||||
CoarsenedMatrix<Fobj,CComplex,nbasis> &Dw;
|
CoarsenedMatrix<Fobj,CComplex,nbasis> &Dw;
|
||||||
|
|
||||||
GridBase * Grid(void) { return Coarse5D; }; // this is all the linalg routines need to know
|
GridBase * Grid(void) { return Coarse5D; }; // this is all the linalg routines need to know
|
||||||
@ -409,7 +409,7 @@ public:
|
|||||||
Coarse5D(&CoarseGrid5),
|
Coarse5D(&CoarseGrid5),
|
||||||
Dw(_Dw),
|
Dw(_Dw),
|
||||||
geom(CoarseGrid5._ndimension),
|
geom(CoarseGrid5._ndimension),
|
||||||
Stencil( &CoarseGrid5,geom.npoint,Even,geom.directions,geom.displacements,0)
|
Stencil( &CoarseGrid5,geom.npoint,Even,geom.directions,geom.displacements,DefaultImplParams())
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1005,9 +1005,9 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
RealD mass=0.00078;
|
RealD mass=0.00078;
|
||||||
|
|
||||||
WilsonFermionR Dw(Umu,*UGrid,*UrbGrid,-M5);
|
WilsonFermionD Dw(Umu,*UGrid,*UrbGrid,-M5);
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
|
||||||
DomainWallFermionR Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
DomainWallFermionD Dpv (Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5);
|
||||||
|
|
||||||
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
typedef Aggregation<vSpinColourVector,vTComplex,nbasis> Subspace;
|
||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> CoarseOperator;
|
||||||
@ -1018,21 +1018,21 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
std::cout<<GridLogMessage << "Calling Aggregation class to build subspace" <<std::endl;
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
// How to find criticall mass?
|
// How to find criticall mass?
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.75); // 600 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.75); // 600 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.80); // 800 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.80); // 800 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.82); // 1023 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.82); // 1023 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.85); // 1428 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.85); // 1428 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.87); // 1900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.87); // 1900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.90); // 3900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.90); // 3900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.92); // 6200 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.92); // 6200 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.94); // 8882 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.94); // 8882 iters
|
||||||
WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.95); // 9170 iters
|
WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.95); // 9170 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.96); // 8882 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.96); // 8882 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.97); // 8406 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.97); // 8406 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-0.99); // 6900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-0.99); // 6900 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-1.01); // 6397 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-1.01); // 6397 iters
|
||||||
// WilsonFermionR Dw_null(Umu,*UGrid,*UrbGrid,-1.00); // 5900 iters
|
// WilsonFermionD Dw_null(Umu,*UGrid,*UrbGrid,-1.00); // 5900 iters
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> MdagM_Dw(Dw_null);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> MdagM_Dw(Dw_null);
|
||||||
|
|
||||||
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
std::cout<<GridLogMessage << "**************************************************"<< std::endl;
|
||||||
std::cout<<GridLogMessage << "Testing Wilson criticality " <<std::endl;
|
std::cout<<GridLogMessage << "Testing Wilson criticality " <<std::endl;
|
||||||
@ -1081,7 +1081,7 @@ int main (int argc, char ** argv)
|
|||||||
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op4;
|
typedef CoarsenedMatrix<vSpinColourVector,vTComplex,nbasis> Level1Op4;
|
||||||
typedef CoarseCayleyFermion<vSpinColourVector,vTComplex,nbasis> Level1Op5;
|
typedef CoarseCayleyFermion<vSpinColourVector,vTComplex,nbasis> Level1Op5;
|
||||||
Level1Op4 c_Dw (*Coarse4d,0);
|
Level1Op4 c_Dw (*Coarse4d,0);
|
||||||
NonHermitianLinearOperator<WilsonFermionR,LatticeFermion> LinOpDw(Dw);
|
NonHermitianLinearOperator<WilsonFermionD,LatticeFermion> LinOpDw(Dw);
|
||||||
c_Dw.CoarsenOperator(UGrid,LinOpDw,Aggregates4D); // contains the M5 from Dw(-M5)
|
c_Dw.CoarsenOperator(UGrid,LinOpDw,Aggregates4D); // contains the M5 from Dw(-M5)
|
||||||
// c_Dw.Test(Aggregates4D,UGrid,LinOpDw);
|
// c_Dw.Test(Aggregates4D,UGrid,LinOpDw);
|
||||||
|
|
||||||
@ -1148,8 +1148,8 @@ int main (int argc, char ** argv)
|
|||||||
ConjugateGradient<CoarseVector> CoarseCG(tol,MaxIt);
|
ConjugateGradient<CoarseVector> CoarseCG(tol,MaxIt);
|
||||||
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
ConjugateGradient<LatticeFermion> FineCG(tol,MaxIt);
|
||||||
|
|
||||||
NonHermitianLinearOperator<DomainWallFermionR,LatticeFermion> FineM(Ddwf);
|
NonHermitianLinearOperator<DomainWallFermionD,LatticeFermion> FineM(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
MdagMLinearOperator<DomainWallFermionD,LatticeFermion> FineMdagM(Ddwf); // M^\dag M
|
||||||
|
|
||||||
NonHermitianLinearOperator<Level1Op5,CoarseVector> CoarseM(c_Dwf);
|
NonHermitianLinearOperator<Level1Op5,CoarseVector> CoarseM(c_Dwf);
|
||||||
MdagMLinearOperator<Level1Op5,CoarseVector> CoarseMdagM(c_Dwf);
|
MdagMLinearOperator<Level1Op5,CoarseVector> CoarseMdagM(c_Dwf);
|
||||||
@ -1272,38 +1272,38 @@ typedef HDCRPreconditioner<siteVector,iScalar<vTComplex>,nbasisc,LinearFunction<
|
|||||||
|
|
||||||
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
// Wrap the 2nd level solver in a MultiGrid preconditioner acting on the fine space
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,14,FineM,Ddwf); // 26 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,14,FineM,Ddwf); // 26 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,14,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,14,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 38s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 38s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,16,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,16,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 23 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 23 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,20,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,20,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,10,FineM,Ddwf);24 iter, 44s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,10,FineM,Ddwf);24 iter, 44s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,24,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,24,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // odd convergence tail at 10^-9 ish
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // odd convergence tail at 10^-9 ish
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.1,60.0,24,FineM,Ddwf); // 33 iter, waas O(10-9 by 26)
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.1,60.0,24,FineM,Ddwf); // 33 iter, waas O(10-9 by 26)
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 39s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 25 iter, 39s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,18,FineM,Ddwf); //
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,18,FineM,Ddwf); //
|
||||||
|
|
||||||
ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother(f_lo,f_hi,f_ord,FineM,Ddwf);
|
ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother(f_lo,f_hi,f_ord,FineM,Ddwf);
|
||||||
|
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,11,FineM,Ddwf); // 33 iter, 49s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,11,FineM,Ddwf); // 33 iter, 49s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,11,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,11,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 26 iter, 37s
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.5,60.0,12,FineM,Ddwf); // 26 iter, 37s
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.5,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.5,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.4,60.0,12,FineM,Ddwf); // iter 26 no change in final residual
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.4,60.0,12,FineM,Ddwf); // iter 26 no change in final residual
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.4,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.4,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.3,60.0,12,FineM,Ddwf); // 27 iter 39s.
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.3,60.0,12,FineM,Ddwf); // 27 iter 39s.
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.3,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.3,60.0,12,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(0.3,60.0,13,FineM,Ddwf); // 26 iter, but slower
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(0.3,60.0,13,FineM,Ddwf); // 26 iter, but slower
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(0.3,60.0,13,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(0.3,60.0,13,FineM,Ddwf);
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother1(1.0,60.0,12,FineM,Ddwf); // 34 iter, slower
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother1(1.0,60.0,12,FineM,Ddwf); // 34 iter, slower
|
||||||
// ChebyshevSmoother<LatticeFermion,DomainWallFermionR> FineSmoother2(1.0,60.0,12,FineM,Ddwf);
|
// ChebyshevSmoother<LatticeFermion,DomainWallFermionD> FineSmoother2(1.0,60.0,12,FineM,Ddwf);
|
||||||
|
|
||||||
ThreeLevelMG ThreeLevelPrecon(Aggregates4D,
|
ThreeLevelMG ThreeLevelPrecon(Aggregates4D,
|
||||||
FineM,
|
FineM,
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename MobiusFermionR::FermionField FermionField;
|
typedef typename MobiusFermionD::FermionField FermionField;
|
||||||
typedef typename MobiusFermionR::ComplexField ComplexField;
|
typedef typename MobiusFermionD::ComplexField ComplexField;
|
||||||
typename MobiusFermionR::ImplParams params;
|
typename MobiusFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=12;
|
const int Ls=12;
|
||||||
|
|
||||||
@ -158,15 +158,15 @@ int main (int argc, char ** argv)
|
|||||||
RealD mobius_factor=32./12.;
|
RealD mobius_factor=32./12.;
|
||||||
RealD mobius_b=0.5*(mobius_factor+1.);
|
RealD mobius_b=0.5*(mobius_factor+1.);
|
||||||
RealD mobius_c=0.5*(mobius_factor-1.);
|
RealD mobius_c=0.5*(mobius_factor-1.);
|
||||||
MobiusFermionR Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,mobius_b,mobius_c,params);
|
MobiusFermionD Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,mobius_b,mobius_c,params);
|
||||||
MobiusFermionR Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5,mobius_b,mobius_c,params);
|
MobiusFermionD Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5,mobius_b,mobius_c,params);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<MobiusFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<MobiusFermionD,FermionField> HermOp(Ddwf);
|
||||||
MdagMLinearOperator<MobiusFermionR,FermionField> HermOpCk(Dchk);
|
MdagMLinearOperator<MobiusFermionD,FermionField> HermOpCk(Dchk);
|
||||||
ConjugateGradient<FermionField> CG((stp),100000);
|
ConjugateGradient<FermionField> CG((stp),100000);
|
||||||
s_res = Zero();
|
s_res = Zero();
|
||||||
|
|
||||||
|
@ -35,9 +35,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=16;
|
const int Ls=16;
|
||||||
|
|
||||||
@ -106,13 +106,13 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
ConjugateGradient<FermionField> CG((stp),100000);
|
ConjugateGradient<FermionField> CG((stp),100000);
|
||||||
|
|
||||||
for(int rhs=0;rhs<1;rhs++){
|
for(int rhs=0;rhs<1;rhs++){
|
||||||
|
@ -35,9 +35,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=16;
|
const int Ls=16;
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
||||||
for(int s=0;s<nrhs;s++) {
|
for(int s=0;s<nrhs;s++) {
|
||||||
Ddwf.ImportPhysicalFermionSource(src4[s],src[s]);
|
Ddwf.ImportPhysicalFermionSource(src4[s],src[s]);
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
ConjugateGradient<FermionField> CG((stp),100000);
|
ConjugateGradient<FermionField> CG((stp),100000);
|
||||||
|
|
||||||
for(int rhs=0;rhs<1;rhs++){
|
for(int rhs=0;rhs<1;rhs++){
|
||||||
|
@ -35,9 +35,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=16;
|
const int Ls=16;
|
||||||
|
|
||||||
@ -106,13 +106,13 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
std::cout << GridLogMessage << " Building the solvers"<<std::endl;
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
DomainWallFermionD Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5,params);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
ConjugateGradient<FermionField> CG((stp),100000);
|
ConjugateGradient<FermionField> CG((stp),100000);
|
||||||
|
|
||||||
for(int rhs=0;rhs<1;rhs++){
|
for(int rhs=0;rhs<1;rhs++){
|
||||||
|
@ -34,9 +34,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename DomainWallFermionR::FermionField FermionField;
|
typedef typename DomainWallFermionD::FermionField FermionField;
|
||||||
typedef typename DomainWallFermionR::ComplexField ComplexField;
|
typedef typename DomainWallFermionD::ComplexField ComplexField;
|
||||||
typename DomainWallFermionR::ImplParams params;
|
typename DomainWallFermionD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=4;
|
const int Ls=4;
|
||||||
|
|
||||||
@ -117,15 +117,15 @@ int main (int argc, char ** argv)
|
|||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
RealD mass=0.01;
|
RealD mass=0.01;
|
||||||
RealD M5=1.8;
|
RealD M5=1.8;
|
||||||
DomainWallFermionR Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
DomainWallFermionD Dchk(Umu,*FGrid,*FrbGrid,*UGrid,*rbGrid,mass,M5);
|
||||||
DomainWallFermionR Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
DomainWallFermionD Ddwf(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling DWF CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
|
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOp(Ddwf);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOp(Ddwf);
|
||||||
MdagMLinearOperator<DomainWallFermionR,FermionField> HermOpCk(Dchk);
|
MdagMLinearOperator<DomainWallFermionD,FermionField> HermOpCk(Dchk);
|
||||||
ConjugateGradient<FermionField> CG((1.0e-8/(me+1)),10000);
|
ConjugateGradient<FermionField> CG((1.0e-8/(me+1)),10000);
|
||||||
s_res = Zero();
|
s_res = Zero();
|
||||||
CG(HermOp,s_src,s_res);
|
CG(HermOp,s_src,s_res);
|
||||||
|
@ -46,9 +46,9 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermion5DR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermion5DD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermion5DR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermion5DD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermion5DR::ImplParams params;
|
typename ImprovedStaggeredFermion5DD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=8;
|
const int Ls=8;
|
||||||
|
|
||||||
@ -98,8 +98,8 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermion5DR Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermion5DD Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
||||||
SchurStaggeredOperator<ImprovedStaggeredFermion5DR,FermionField> HermOp(Ds);
|
SchurStaggeredOperator<ImprovedStaggeredFermion5DD,FermionField> HermOp(Ds);
|
||||||
|
|
||||||
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
||||||
int blockDim = 0;
|
int blockDim = 0;
|
||||||
@ -111,8 +111,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling 4d CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling 4d CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
ImprovedStaggeredFermionR Ds4d(Umu,Umu,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds4d(Umu,Umu,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
||||||
SchurStaggeredOperator<ImprovedStaggeredFermionR,FermionField> HermOp4d(Ds4d);
|
SchurStaggeredOperator<ImprovedStaggeredFermionD,FermionField> HermOp4d(Ds4d);
|
||||||
FermionField src4d(UGrid); random(pRNG,src4d);
|
FermionField src4d(UGrid); random(pRNG,src4d);
|
||||||
FermionField src4d_o(UrbGrid); pickCheckerboard(Odd,src4d_o,src4d);
|
FermionField src4d_o(UrbGrid); pickCheckerboard(Odd,src4d_o,src4d);
|
||||||
FermionField result4d_o(UrbGrid);
|
FermionField result4d_o(UrbGrid);
|
||||||
@ -135,7 +135,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling 5d CG for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling 5d CG for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
Ds.ZeroCounters();
|
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
@ -152,7 +151,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling multiRHS CG for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling multiRHS CG for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
Ds.ZeroCounters();
|
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
@ -170,7 +168,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling Block CGrQ for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling Block CGrQ for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
Ds.ZeroCounters();
|
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
@ -187,7 +184,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling Block CG for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling Block CG for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
Ds.ZeroCounters();
|
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
|
@ -30,12 +30,6 @@ Author: Peter Boyle <paboyle@ph.ed.ac.uk>
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
;
|
|
||||||
|
|
||||||
template<class d>
|
|
||||||
struct scal {
|
|
||||||
d internal;
|
|
||||||
};
|
|
||||||
|
|
||||||
Gamma::Algebra Gmu [] = {
|
Gamma::Algebra Gmu [] = {
|
||||||
Gamma::Algebra::GammaX,
|
Gamma::Algebra::GammaX,
|
||||||
@ -46,9 +40,9 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermion5DR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermion5DD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermion5DR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermion5DD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermion5DR::ImplParams params;
|
typename ImprovedStaggeredFermion5DD::ImplParams params;
|
||||||
|
|
||||||
const int Ls=8;
|
const int Ls=8;
|
||||||
|
|
||||||
@ -83,8 +77,8 @@ int main (int argc, char ** argv)
|
|||||||
volume=volume*latt_size[mu];
|
volume=volume*latt_size[mu];
|
||||||
}
|
}
|
||||||
|
|
||||||
ImprovedStaggeredFermion5DR Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermion5DD Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermion5DR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermion5DD,FermionField> HermOp(Ds);
|
||||||
|
|
||||||
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
||||||
int blockDim = 0;
|
int blockDim = 0;
|
||||||
@ -95,8 +89,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling 4d CG "<<std::endl;
|
std::cout << GridLogMessage << " Calling 4d CG "<<std::endl;
|
||||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||||
ImprovedStaggeredFermionR Ds4d(Umu,Umu,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds4d(Umu,Umu,*UGrid,*UrbGrid,mass,c1,c2,u0);
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp4d(Ds4d);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp4d(Ds4d);
|
||||||
FermionField src4d(UGrid); random(pRNG,src4d);
|
FermionField src4d(UGrid); random(pRNG,src4d);
|
||||||
FermionField result4d(UGrid); result4d=Zero();
|
FermionField result4d(UGrid); result4d=Zero();
|
||||||
|
|
||||||
@ -120,7 +114,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
result=Zero();
|
result=Zero();
|
||||||
{
|
{
|
||||||
Ds.ZeroCounters();
|
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
double t2=usecond();
|
double t2=usecond();
|
||||||
@ -129,7 +122,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||||
Ds.Report();
|
|
||||||
}
|
}
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
|
|
||||||
@ -137,7 +129,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Calling multiRHS CG for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling multiRHS CG for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
result=Zero();
|
result=Zero();
|
||||||
Ds.ZeroCounters();
|
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
mCG(HermOp,src,result);
|
mCG(HermOp,src,result);
|
||||||
@ -148,14 +139,12 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||||
}
|
}
|
||||||
Ds.Report();
|
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
|
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
std::cout << GridLogMessage << " Calling Block CG for "<<Ls <<" right hand sides" <<std::endl;
|
std::cout << GridLogMessage << " Calling Block CG for "<<Ls <<" right hand sides" <<std::endl;
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
result=Zero();
|
result=Zero();
|
||||||
Ds.ZeroCounters();
|
|
||||||
{
|
{
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
BCGrQ(HermOp,src,result);
|
BCGrQ(HermOp,src,result);
|
||||||
@ -166,7 +155,6 @@ int main (int argc, char ** argv)
|
|||||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||||
}
|
}
|
||||||
Ds.Report();
|
|
||||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
CommunicationAvoidingGeneralisedMinimalResidual<FermionField> CAGMRES(1.0e-8, 10000, 25);
|
CommunicationAvoidingGeneralisedMinimalResidual<FermionField> CAGMRES(1.0e-8, 10000, 25);
|
||||||
CAGMRES(HermOp,src,result);
|
CAGMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -47,8 +47,8 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -74,14 +74,14 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
FermionField res_o(&RBGrid);
|
FermionField res_o(&RBGrid);
|
||||||
FermionField src_o(&RBGrid);
|
FermionField src_o(&RBGrid);
|
||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
res_o=Zero();
|
res_o=Zero();
|
||||||
|
|
||||||
SchurStaggeredOperator<ImprovedStaggeredFermionR,FermionField> HermOpEO(Ds);
|
SchurStaggeredOperator<ImprovedStaggeredFermionD,FermionField> HermOpEO(Ds);
|
||||||
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
||||||
double t1=usecond();
|
double t1=usecond();
|
||||||
CG(HermOpEO,src_o,res_o);
|
CG(HermOpEO,src_o,res_o);
|
||||||
|
@ -45,8 +45,8 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
Coordinate latt_size = GridDefaultLatt();
|
Coordinate latt_size = GridDefaultLatt();
|
||||||
@ -68,7 +68,7 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
ConjugateGradient<FermionField> CG(1.0e-8,10000);
|
||||||
SchurRedBlackStaggeredSolve<FermionField> SchurSolver(CG);
|
SchurRedBlackStaggeredSolve<FermionField> SchurSolver(CG);
|
||||||
|
@ -47,9 +47,9 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -76,9 +76,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
ConjugateGradient<FermionField> CG(1.0e-6,10000);
|
ConjugateGradient<FermionField> CG(1.0e-6,10000);
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
|
|
||||||
TrivialPrecon<FermionField> simple;
|
TrivialPrecon<FermionField> simple;
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
|
|
||||||
TrivialPrecon<FermionField> simple;
|
TrivialPrecon<FermionField> simple;
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
GeneralisedMinimalResidual<FermionField> GMRES(1.0e-8, 10000, 25);
|
GeneralisedMinimalResidual<FermionField> GMRES(1.0e-8, 10000, 25);
|
||||||
GMRES(HermOp,src,result);
|
GMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ using namespace Grid;
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typedef typename ImprovedStaggeredFermionR::ComplexField ComplexField;
|
typedef typename ImprovedStaggeredFermionD::ComplexField ComplexField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD c1=9.0/8.0;
|
RealD c1=9.0/8.0;
|
||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
|
|
||||||
MdagMLinearOperator<ImprovedStaggeredFermionR,FermionField> HermOp(Ds);
|
MdagMLinearOperator<ImprovedStaggeredFermionD,FermionField> HermOp(Ds);
|
||||||
MinimalResidual<FermionField> MR(1.0e-8,10000,0.8);
|
MinimalResidual<FermionField> MR(1.0e-8,10000,0.8);
|
||||||
MR(HermOp,src,result);
|
MR(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -46,8 +46,8 @@ struct scal {
|
|||||||
|
|
||||||
int main (int argc, char ** argv)
|
int main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
typedef typename ImprovedStaggeredFermionR::FermionField FermionField;
|
typedef typename ImprovedStaggeredFermionD::FermionField FermionField;
|
||||||
typename ImprovedStaggeredFermionR::ImplParams params;
|
typename ImprovedStaggeredFermionD::ImplParams params;
|
||||||
|
|
||||||
Grid_init(&argc,&argv);
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
@ -90,8 +90,8 @@ int main (int argc, char ** argv)
|
|||||||
RealD c2=-1.0/24.0;
|
RealD c2=-1.0/24.0;
|
||||||
RealD u0=1.0;
|
RealD u0=1.0;
|
||||||
|
|
||||||
ImprovedStaggeredFermionR Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
ImprovedStaggeredFermionD Ds(Umu,Umu,Grid,RBGrid,mass,c1,c2,u0);
|
||||||
SchurStaggeredOperator<ImprovedStaggeredFermionR,FermionField> HermOpEO(Ds);
|
SchurStaggeredOperator<ImprovedStaggeredFermionD,FermionField> HermOpEO(Ds);
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
FermionField src_o(&RBGrid);
|
FermionField src_o(&RBGrid);
|
||||||
|
@ -55,9 +55,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
CommunicationAvoidingGeneralisedMinimalResidual<LatticeFermion> CAGMRES(1.0e-8, 10000, 25);
|
CommunicationAvoidingGeneralisedMinimalResidual<LatticeFermion> CAGMRES(1.0e-8, 10000, 25);
|
||||||
CAGMRES(HermOp,src,result);
|
CAGMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
// HermitianOperator<WilsonFermion,LatticeFermion> HermOp(Dw);
|
// HermitianOperator<WilsonFermion,LatticeFermion> HermOp(Dw);
|
||||||
// ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
// ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
@ -80,7 +80,7 @@ int main (int argc, char ** argv)
|
|||||||
pickCheckerboard(Odd,src_o,src);
|
pickCheckerboard(Odd,src_o,src);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
|
|
||||||
SchurDiagMooeeOperator<WilsonFermionR,LatticeFermion> HermOpEO(Dw);
|
SchurDiagMooeeOperator<WilsonFermionD,LatticeFermion> HermOpEO(Dw);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
CG(HermOpEO,src_o,result_o);
|
CG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ int main (int argc, char ** argv)
|
|||||||
LatticeFermion resid(&Grid);
|
LatticeFermion resid(&Grid);
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
SchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
SchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
||||||
|
@ -68,9 +68,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -70,9 +70,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
|
|
||||||
ConjugateResidual<LatticeFermion> MCR(1.0e-8,10000);
|
ConjugateResidual<LatticeFermion> MCR(1.0e-8,10000);
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
|
|
||||||
TrivialPrecon<LatticeFermion> simple;
|
TrivialPrecon<LatticeFermion> simple;
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
|
|
||||||
TrivialPrecon<LatticeFermion> simple;
|
TrivialPrecon<LatticeFermion> simple;
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
GeneralisedMinimalResidual<LatticeFermion> GMRES(1.0e-8, 10000, 25);
|
GeneralisedMinimalResidual<LatticeFermion> GMRES(1.0e-8, 10000, 25);
|
||||||
GMRES(HermOp,src,result);
|
GMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -77,16 +77,16 @@ int main(int argc, char **argv) {
|
|||||||
// Note: We do chiral doubling, so actually only nbasis/2 full basis vectors are used
|
// Note: We do chiral doubling, so actually only nbasis/2 full basis vectors are used
|
||||||
const int nbasis = 40;
|
const int nbasis = 40;
|
||||||
|
|
||||||
WilsonFermionR Dw(Umu, *FGrid, *FrbGrid, mass);
|
WilsonFermionD Dw(Umu, *FGrid, *FrbGrid, mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR, LatticeFermion> MdagMOpDw(Dw);
|
MdagMLinearOperator<WilsonFermionD, LatticeFermion> MdagMOpDw(Dw);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||||
std::cout << GridLogMessage << "Testing Multigrid for Wilson" << std::endl;
|
std::cout << GridLogMessage << "Testing Multigrid for Wilson" << std::endl;
|
||||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||||
|
|
||||||
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
||||||
auto MGPreconDw = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonFermionR>(mgParams, levelInfo, Dw, Dw);
|
auto MGPreconDw = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonFermionD>(mgParams, levelInfo, Dw, Dw);
|
||||||
|
|
||||||
MGPreconDw->setup();
|
MGPreconDw->setup();
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ int main (int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RealD mass=0.5;
|
RealD mass=0.5;
|
||||||
WilsonFermionR Dw(Umu,Grid,RBGrid,mass);
|
WilsonFermionD Dw(Umu,Grid,RBGrid,mass);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonFermionD,LatticeFermion> HermOp(Dw);
|
||||||
MinimalResidual<LatticeFermion> MR(1.0e-8,10000,0.8);
|
MinimalResidual<LatticeFermion> MR(1.0e-8,10000,0.8);
|
||||||
MR(HermOp,src,result);
|
MR(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ int main (int argc, char ** argv)
|
|||||||
QuasiMinimalResidual<LatticeFermion> QMR(1.0e-8,10000);
|
QuasiMinimalResidual<LatticeFermion> QMR(1.0e-8,10000);
|
||||||
|
|
||||||
RealD mass=0.0;
|
RealD mass=0.0;
|
||||||
WilsonFermionR Dw(Umu,*Grid,*rbGrid,mass);
|
WilsonFermionD Dw(Umu,*Grid,*rbGrid,mass);
|
||||||
|
|
||||||
NonHermitianLinearOperator<WilsonFermionR,LatticeFermion> NonHermOp(Dw);
|
NonHermitianLinearOperator<WilsonFermionD,LatticeFermion> NonHermOp(Dw);
|
||||||
QMR(NonHermOp,src,result);
|
QMR(NonHermOp,src,result);
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -70,14 +70,14 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = -0.1;
|
RealD mass = -0.1;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
|
|
||||||
LatticeFermion src_o(&RBGrid);
|
LatticeFermion src_o(&RBGrid);
|
||||||
LatticeFermion result_o(&RBGrid);
|
LatticeFermion result_o(&RBGrid);
|
||||||
pickCheckerboard(Odd, src_o, src);
|
pickCheckerboard(Odd, src_o, src);
|
||||||
result_o = Zero();
|
result_o = Zero();
|
||||||
|
|
||||||
NonHermitianSchurDiagMooeeOperator<WilsonCloverFermionR,LatticeFermion> HermOp(Dw);
|
NonHermitianSchurDiagMooeeOperator<WilsonCloverFermionD,LatticeFermion> HermOp(Dw);
|
||||||
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
||||||
CG(HermOp, src_o, result_o);
|
CG(HermOp, src_o, result_o);
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = -0.1;
|
RealD mass = -0.1;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
|
|
||||||
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
||||||
NonHermitianSchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
NonHermitianSchurRedBlackDiagMooeeSolve<LatticeFermion> SchurSolver(CG);
|
||||||
|
@ -70,9 +70,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = -0.1;
|
RealD mass = -0.1;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
|
|
||||||
NonHermitianLinearOperator<WilsonCloverFermionR,LatticeFermion> HermOp(Dw);
|
NonHermitianLinearOperator<WilsonCloverFermionD,LatticeFermion> HermOp(Dw);
|
||||||
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
BiCGSTAB<LatticeFermion> CG(1.0e-8,10000);
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ int main (int argc, char ** argv)
|
|||||||
std::vector<int> seeds({1,2,3,4});
|
std::vector<int> seeds({1,2,3,4});
|
||||||
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
||||||
|
|
||||||
typedef typename WilsonCloverFermionR::FermionField FermionField;
|
typedef typename WilsonCloverFermionD::FermionField FermionField;
|
||||||
typename WilsonCloverFermionR::ImplParams params;
|
typename WilsonCloverFermionD::ImplParams params;
|
||||||
WilsonAnisotropyCoefficients anis;
|
WilsonAnisotropyCoefficients anis;
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
@ -61,9 +61,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = 0.5;
|
RealD mass = 0.5;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
WilsonCloverFermionD Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,FermionField> HermOp(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD,FermionField> HermOp(Dwc);
|
||||||
CommunicationAvoidingGeneralisedMinimalResidual<FermionField> CAGMRES(1.0e-8, 10000, 25);
|
CommunicationAvoidingGeneralisedMinimalResidual<FermionField> CAGMRES(1.0e-8, 10000, 25);
|
||||||
CAGMRES(HermOp,src,result);
|
CAGMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -72,10 +72,10 @@ int main (int argc, char ** argv)
|
|||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
RealD cF = 1.0;
|
RealD cF = 1.0;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
CompactWilsonCloverFermionR Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonCloverFermionD Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
WilsonExpCloverFermionR Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonExpCloverFermionD Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
CompactWilsonExpCloverFermionR Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonExpCloverFermionD Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
|
|
||||||
|
|
||||||
// HermitianOperator<WilsonFermion,LatticeFermion> HermOp(Dw);
|
// HermitianOperator<WilsonFermion,LatticeFermion> HermOp(Dw);
|
||||||
@ -89,22 +89,22 @@ int main (int argc, char ** argv)
|
|||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
||||||
SchurDiagMooeeOperator<WilsonCloverFermionR,LatticeFermion> HermOpEO(Dw);
|
SchurDiagMooeeOperator<WilsonCloverFermionD,LatticeFermion> HermOpEO(Dw);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
CG(HermOpEO,src_o,result_o);
|
CG(HermOpEO,src_o,result_o);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
||||||
SchurDiagMooeeOperator<CompactWilsonCloverFermionR,LatticeFermion> HermOpEO_compact(Dw_compact);
|
SchurDiagMooeeOperator<CompactWilsonCloverFermionD,LatticeFermion> HermOpEO_compact(Dw_compact);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
CG(HermOpEO_compact,src_o,result_o);
|
CG(HermOpEO_compact,src_o,result_o);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
||||||
SchurDiagMooeeOperator<WilsonExpCloverFermionR,LatticeFermion> HermOpEO_exp(Dwe);
|
SchurDiagMooeeOperator<WilsonExpCloverFermionD,LatticeFermion> HermOpEO_exp(Dwe);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
CG(HermOpEO_exp,src_o,result_o);
|
CG(HermOpEO_exp,src_o,result_o);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
||||||
SchurDiagMooeeOperator<CompactWilsonExpCloverFermionR,LatticeFermion> HermOpEO_exp_compact(Dwe_compact);
|
SchurDiagMooeeOperator<CompactWilsonExpCloverFermionD,LatticeFermion> HermOpEO_exp_compact(Dwe_compact);
|
||||||
result_o=Zero();
|
result_o=Zero();
|
||||||
CG(HermOpEO_exp_compact,src_o,result_o);
|
CG(HermOpEO_exp_compact,src_o,result_o);
|
||||||
|
|
||||||
|
@ -72,22 +72,22 @@ int main (int argc, char ** argv)
|
|||||||
RealD cF = 1.0;
|
RealD cF = 1.0;
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
SchurSolver(Dw,src,result);
|
SchurSolver(Dw,src,result);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
||||||
CompactWilsonCloverFermionR Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonCloverFermionD Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
SchurSolver(Dw_compact,src,result);
|
SchurSolver(Dw_compact,src,result);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
||||||
WilsonExpCloverFermionR Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonExpCloverFermionD Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
SchurSolver(Dwe,src,result);
|
SchurSolver(Dwe,src,result);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
||||||
CompactWilsonExpCloverFermionR Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonExpCloverFermionD Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
SchurSolver(Dwe_compact,src,result);
|
SchurSolver(Dwe_compact,src,result);
|
||||||
|
|
||||||
|
@ -71,31 +71,31 @@ int main (int argc, char ** argv)
|
|||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
RealD cF = 1.0;
|
RealD cF = 1.0;
|
||||||
WilsonCloverFermionR Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dw(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
CompactWilsonCloverFermionR Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonCloverFermionD Dw_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
WilsonExpCloverFermionR Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
WilsonExpCloverFermionD Dwe(Umu, Grid, RBGrid, mass, csw_r, csw_t);
|
||||||
CompactWilsonExpCloverFermionR Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
CompactWilsonExpCloverFermionD Dwe_compact(Umu, Grid, RBGrid, mass, csw_r, csw_t, 0.0);
|
||||||
|
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
ConjugateGradient<LatticeFermion> CG(1.0e-8,10000);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Clover" << std::endl;
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,LatticeFermion> HermOp(Dw);
|
MdagMLinearOperator<WilsonCloverFermionD,LatticeFermion> HermOp(Dw);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
CG(HermOp,src,result);
|
CG(HermOp,src,result);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Clover" << std::endl;
|
||||||
MdagMLinearOperator<CompactWilsonCloverFermionR,LatticeFermion> HermOp_compact(Dw_compact);
|
MdagMLinearOperator<CompactWilsonCloverFermionD,LatticeFermion> HermOp_compact(Dw_compact);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
CG(HermOp_compact,src,result);
|
CG(HermOp_compact,src,result);
|
||||||
|
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Wilson Exp Clover" << std::endl;
|
||||||
MdagMLinearOperator<WilsonExpCloverFermionR,LatticeFermion> HermOp_exp(Dwe);
|
MdagMLinearOperator<WilsonExpCloverFermionD,LatticeFermion> HermOp_exp(Dwe);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
CG(HermOp_exp,src,result);
|
CG(HermOp_exp,src,result);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Compact Wilson Exp Clover" << std::endl;
|
||||||
MdagMLinearOperator<CompactWilsonExpCloverFermionR,LatticeFermion> HermOp_exp_compact(Dwe_compact);
|
MdagMLinearOperator<CompactWilsonExpCloverFermionD,LatticeFermion> HermOp_exp_compact(Dwe_compact);
|
||||||
result=Zero();
|
result=Zero();
|
||||||
CG(HermOp_exp_compact,src,result);
|
CG(HermOp_exp_compact,src,result);
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ int main (int argc, char ** argv)
|
|||||||
std::vector<int> seeds({1,2,3,4});
|
std::vector<int> seeds({1,2,3,4});
|
||||||
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
||||||
|
|
||||||
typedef typename WilsonCloverFermionR::FermionField FermionField;
|
typedef typename WilsonCloverFermionD::FermionField FermionField;
|
||||||
typename WilsonCloverFermionR::ImplParams params;
|
typename WilsonCloverFermionD::ImplParams params;
|
||||||
WilsonAnisotropyCoefficients anis;
|
WilsonAnisotropyCoefficients anis;
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
@ -61,9 +61,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = 0.5;
|
RealD mass = 0.5;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
WilsonCloverFermionD Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,FermionField> HermOp(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD,FermionField> HermOp(Dwc);
|
||||||
|
|
||||||
TrivialPrecon<FermionField> simple;
|
TrivialPrecon<FermionField> simple;
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ int main (int argc, char ** argv)
|
|||||||
std::vector<int> seeds({1,2,3,4});
|
std::vector<int> seeds({1,2,3,4});
|
||||||
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
||||||
|
|
||||||
typedef typename WilsonCloverFermionR::FermionField FermionField;
|
typedef typename WilsonCloverFermionD::FermionField FermionField;
|
||||||
typename WilsonCloverFermionR::ImplParams params;
|
typename WilsonCloverFermionD::ImplParams params;
|
||||||
WilsonAnisotropyCoefficients anis;
|
WilsonAnisotropyCoefficients anis;
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
@ -61,9 +61,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = 0.5;
|
RealD mass = 0.5;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
WilsonCloverFermionD Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,FermionField> HermOp(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD,FermionField> HermOp(Dwc);
|
||||||
|
|
||||||
TrivialPrecon<FermionField> simple;
|
TrivialPrecon<FermionField> simple;
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ int main (int argc, char ** argv)
|
|||||||
std::vector<int> seeds({1,2,3,4});
|
std::vector<int> seeds({1,2,3,4});
|
||||||
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
||||||
|
|
||||||
typedef typename WilsonCloverFermionR::FermionField FermionField;
|
typedef typename WilsonCloverFermionD::FermionField FermionField;
|
||||||
typename WilsonCloverFermionR::ImplParams params;
|
typename WilsonCloverFermionD::ImplParams params;
|
||||||
WilsonAnisotropyCoefficients anis;
|
WilsonAnisotropyCoefficients anis;
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
@ -61,9 +61,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = 0.5;
|
RealD mass = 0.5;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
WilsonCloverFermionD Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,FermionField> HermOp(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD,FermionField> HermOp(Dwc);
|
||||||
GeneralisedMinimalResidual<FermionField> GMRES(1.0e-8, 10000, 25);
|
GeneralisedMinimalResidual<FermionField> GMRES(1.0e-8, 10000, 25);
|
||||||
GMRES(HermOp,src,result);
|
GMRES(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -80,16 +80,16 @@ int main(int argc, char **argv) {
|
|||||||
// Note: We do chiral doubling, so actually only nbasis/2 full basis vectors are used
|
// Note: We do chiral doubling, so actually only nbasis/2 full basis vectors are used
|
||||||
const int nbasis = 40;
|
const int nbasis = 40;
|
||||||
|
|
||||||
WilsonCloverFermionR Dwc(Umu, *FGrid, *FrbGrid, mass, csw_r, csw_t);
|
WilsonCloverFermionD Dwc(Umu, *FGrid, *FrbGrid, mass, csw_r, csw_t);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR, LatticeFermion> MdagMOpDwc(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD, LatticeFermion> MdagMOpDwc(Dwc);
|
||||||
|
|
||||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||||
std::cout << GridLogMessage << "Testing Multigrid for Wilson Clover" << std::endl;
|
std::cout << GridLogMessage << "Testing Multigrid for Wilson Clover" << std::endl;
|
||||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||||
|
|
||||||
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
||||||
auto MGPreconDwc = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonCloverFermionR>(mgParams, levelInfo, Dwc, Dwc);
|
auto MGPreconDwc = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonCloverFermionD>(mgParams, levelInfo, Dwc, Dwc);
|
||||||
|
|
||||||
MGPreconDwc->setup();
|
MGPreconDwc->setup();
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ int main (int argc, char ** argv)
|
|||||||
std::vector<int> seeds({1,2,3,4});
|
std::vector<int> seeds({1,2,3,4});
|
||||||
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
GridParallelRNG pRNG(&Grid); pRNG.SeedFixedIntegers(seeds);
|
||||||
|
|
||||||
typedef typename WilsonCloverFermionR::FermionField FermionField;
|
typedef typename WilsonCloverFermionD::FermionField FermionField;
|
||||||
typename WilsonCloverFermionR::ImplParams params;
|
typename WilsonCloverFermionD::ImplParams params;
|
||||||
WilsonAnisotropyCoefficients anis;
|
WilsonAnisotropyCoefficients anis;
|
||||||
|
|
||||||
FermionField src(&Grid); random(pRNG,src);
|
FermionField src(&Grid); random(pRNG,src);
|
||||||
@ -61,9 +61,9 @@ int main (int argc, char ** argv)
|
|||||||
RealD mass = 0.5;
|
RealD mass = 0.5;
|
||||||
RealD csw_r = 1.0;
|
RealD csw_r = 1.0;
|
||||||
RealD csw_t = 1.0;
|
RealD csw_t = 1.0;
|
||||||
WilsonCloverFermionR Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
WilsonCloverFermionD Dwc(Umu,Grid,RBGrid,mass,csw_r,csw_t,anis,params);
|
||||||
|
|
||||||
MdagMLinearOperator<WilsonCloverFermionR,FermionField> HermOp(Dwc);
|
MdagMLinearOperator<WilsonCloverFermionD,FermionField> HermOp(Dwc);
|
||||||
MinimalResidual<FermionField> MR(1.0e-8,10000,0.8);
|
MinimalResidual<FermionField> MR(1.0e-8,10000,0.8);
|
||||||
MR(HermOp,src,result);
|
MR(HermOp,src,result);
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ int main(int argc, char** argv) {
|
|||||||
omegas.push_back( std::complex<double>(0.0686324988446592,-0.0550658530827402) );
|
omegas.push_back( std::complex<double>(0.0686324988446592,-0.0550658530827402) );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ZMobiusFermionR Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, omegas,1.,0.);
|
ZMobiusFermionD Ddwf(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mass, M5, omegas,1.,0.);
|
||||||
|
|
||||||
LatticeFermion src_o(FrbGrid);
|
LatticeFermion src_o(FrbGrid);
|
||||||
LatticeFermion result_o(FrbGrid);
|
LatticeFermion result_o(FrbGrid);
|
||||||
@ -110,7 +110,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
GridStopWatch CGTimer;
|
GridStopWatch CGTimer;
|
||||||
|
|
||||||
SchurDiagMooeeOperator<ZMobiusFermionR, LatticeFermion> HermOpEO(Ddwf);
|
SchurDiagMooeeOperator<ZMobiusFermionD, LatticeFermion> HermOpEO(Ddwf);
|
||||||
ConjugateGradient<LatticeFermion> CG(1.0e-8, 10000, 0);// switch off the assert
|
ConjugateGradient<LatticeFermion> CG(1.0e-8, 10000, 0);// switch off the assert
|
||||||
|
|
||||||
CGTimer.Start();
|
CGTimer.Start();
|
||||||
@ -121,7 +121,6 @@ int main(int argc, char** argv) {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
std::cout << GridLogMessage << "######## Dhop calls summary" << std::endl;
|
std::cout << GridLogMessage << "######## Dhop calls summary" << std::endl;
|
||||||
Ddwf.Report();
|
|
||||||
|
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user