mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-04 19:25:56 +01:00
merge to the head
This commit is contained in:
parent
ac504bea6c
commit
58a4f32298
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
HFILES=./algorithms/approx/bigfloat.h ./algorithms/approx/bigfloat_double.h ./algorithms/approx/Chebyshev.h ./algorithms/approx/Remez.h ./algorithms/approx/Zolotarev.h ./algorithms/iterative/ConjugateGradient.h ./algorithms/iterative/NormalEquations.h ./algorithms/iterative/SchurRedBlack.h ./algorithms/LinearOperator.h ./algorithms/SparseMatrix.h ./Algorithms.h ./AlignedAllocator.h ./cartesian/Cartesian_base.h ./cartesian/Cartesian_full.h ./cartesian/Cartesian_red_black.h ./Cartesian.h ./communicator/Communicator_base.h ./Communicator.h ./Comparison.h ./cshift/Cshift_common.h ./cshift/Cshift_mpi.h ./cshift/Cshift_none.h ./Cshift.h ./Grid.h ./GridConfig.h ./lattice/Lattice_arith.h ./lattice/Lattice_base.h ./lattice/Lattice_comparison.h ./lattice/Lattice_conformable.h ./lattice/Lattice_coordinate.h ./lattice/Lattice_ET.h ./lattice/Lattice_local.h ./lattice/Lattice_overload.h ./lattice/Lattice_peekpoke.h ./lattice/Lattice_reality.h ./lattice/Lattice_reduction.h ./lattice/Lattice_rng.h ./lattice/Lattice_trace.h ./lattice/Lattice_transfer.h ./lattice/Lattice_transpose.h ./lattice/Lattice_where.h ./Lattice.h ./parallelIO/NerscIO.h ./qcd/action/Actions.h ./qcd/action/DiffAction.h ./qcd/action/fermion/CayleyFermion5D.h ./qcd/action/fermion/ContinuedFractionFermion5D.h ./qcd/action/fermion/DomainWallFermion.h ./qcd/action/fermion/FermionOperator.h ./qcd/action/fermion/MobiusFermion.h ./qcd/action/fermion/MobiusZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h ./qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonContfracTanhFermion.h ./qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h ./qcd/action/fermion/PartialFractionFermion5D.h ./qcd/action/fermion/ScaledShamirFermion.h ./qcd/action/fermion/ShamirZolotarevFermion.h ./qcd/action/fermion/WilsonCompressor.h ./qcd/action/fermion/WilsonFermion.h ./qcd/action/fermion/WilsonFermion5D.h ./qcd/action/fermion/WilsonKernels.h ./qcd/Dirac.h ./qcd/LinalgUtils.h ./qcd/QCD.h ./qcd/SpaceTimeGrid.h ./qcd/TwoSpinor.h ./simd/Grid_avx.h ./simd/Grid_avx512.h ./simd/Grid_qpx.h ./simd/Grid_sse4.h ./simd/Grid_vector_types.h ./simd/Old/Grid_vComplexD.h ./simd/Old/Grid_vComplexF.h ./simd/Old/Grid_vInteger.h ./simd/Old/Grid_vRealD.h ./simd/Old/Grid_vRealF.h ./Simd.h ./stencil/Lebesgue.h ./Stencil.h ./tensors/Tensor_arith.h ./tensors/Tensor_arith_add.h ./tensors/Tensor_arith_mac.h ./tensors/Tensor_arith_mul.h ./tensors/Tensor_arith_scalar.h ./tensors/Tensor_arith_sub.h ./tensors/Tensor_class.h ./tensors/Tensor_extract_merge.h ./tensors/Tensor_inner.h ./tensors/Tensor_outer.h ./tensors/Tensor_peek.h ./tensors/Tensor_poke.h ./tensors/Tensor_reality.h ./tensors/Tensor_Ta.h ./tensors/Tensor_trace.h ./tensors/Tensor_traits.h ./tensors/Tensor_transpose.h ./Tensors.h ./Threads.h
|
HFILES=./algorithms/approx/bigfloat.h ./algorithms/approx/bigfloat_double.h ./algorithms/approx/Chebyshev.h ./algorithms/approx/Remez.h ./algorithms/approx/Zolotarev.h ./algorithms/iterative/ConjugateGradient.h ./algorithms/iterative/NormalEquations.h ./algorithms/iterative/SchurRedBlack.h ./algorithms/LinearOperator.h ./algorithms/SparseMatrix.h ./Algorithms.h ./AlignedAllocator.h ./cartesian/Cartesian_base.h ./cartesian/Cartesian_full.h ./cartesian/Cartesian_red_black.h ./Cartesian.h ./communicator/Communicator_base.h ./Communicator.h ./Comparison.h ./cshift/Cshift_common.h ./cshift/Cshift_mpi.h ./cshift/Cshift_none.h ./Cshift.h ./Grid.h ./GridConfig.h ./lattice/Lattice_arith.h ./lattice/Lattice_base.h ./lattice/Lattice_comparison.h ./lattice/Lattice_conformable.h ./lattice/Lattice_coordinate.h ./lattice/Lattice_ET.h ./lattice/Lattice_local.h ./lattice/Lattice_overload.h ./lattice/Lattice_peekpoke.h ./lattice/Lattice_reality.h ./lattice/Lattice_reduction.h ./lattice/Lattice_rng.h ./lattice/Lattice_trace.h ./lattice/Lattice_transfer.h ./lattice/Lattice_transpose.h ./lattice/Lattice_where.h ./Lattice.h ./parallelIO/NerscIO.h ./qcd/action/Actions.h ./qcd/action/fermion/CayleyFermion5D.h ./qcd/action/fermion/ContinuedFractionFermion5D.h ./qcd/action/fermion/DomainWallFermion.h ./qcd/action/fermion/FermionOperator.h ./qcd/action/fermion/MobiusFermion.h ./qcd/action/fermion/MobiusZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h ./qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonContfracTanhFermion.h ./qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h ./qcd/action/fermion/PartialFractionFermion5D.h ./qcd/action/fermion/ScaledShamirFermion.h ./qcd/action/fermion/ShamirZolotarevFermion.h ./qcd/action/fermion/WilsonCompressor.h ./qcd/action/fermion/WilsonFermion.h ./qcd/action/fermion/WilsonFermion5D.h ./qcd/action/fermion/WilsonKernels.h ./qcd/action/gauge/GaugeActionBase.h ./qcd/action/gauge/WilsonGaugeAction.h ./qcd/Dirac.h ./qcd/LinalgUtils.h ./qcd/QCD.h ./qcd/SpaceTimeGrid.h ./qcd/TwoSpinor.h ./qcd/utils/CovariantCshift.h ./qcd/utils/WilsonLoops.h ./simd/Grid_avx.h ./simd/Grid_avx512.h ./simd/Grid_qpx.h ./simd/Grid_sse4.h ./simd/Grid_vector_types.h ./simd/Old/Grid_vComplexD.h ./simd/Old/Grid_vComplexF.h ./simd/Old/Grid_vInteger.h ./simd/Old/Grid_vRealD.h ./simd/Old/Grid_vRealF.h ./Simd.h ./stencil/Lebesgue.h ./Stencil.h ./tensors/Tensor_arith.h ./tensors/Tensor_arith_add.h ./tensors/Tensor_arith_mac.h ./tensors/Tensor_arith_mul.h ./tensors/Tensor_arith_scalar.h ./tensors/Tensor_arith_sub.h ./tensors/Tensor_class.h ./tensors/Tensor_extract_merge.h ./tensors/Tensor_inner.h ./tensors/Tensor_outer.h ./tensors/Tensor_peek.h ./tensors/Tensor_poke.h ./tensors/Tensor_reality.h ./tensors/Tensor_Ta.h ./tensors/Tensor_trace.h ./tensors/Tensor_traits.h ./tensors/Tensor_transpose.h ./Tensors.h ./Threads.h
|
||||||
|
|
||||||
CCFILES=./algorithms/approx/Remez.cc ./algorithms/approx/Zolotarev.cc ./GridInit.cc ./qcd/action/fermion/CayleyFermion5D.cc ./qcd/action/fermion/ContinuedFractionFermion5D.cc ./qcd/action/fermion/PartialFractionFermion5D.cc ./qcd/action/fermion/WilsonFermion.cc ./qcd/action/fermion/WilsonFermion5D.cc ./qcd/action/fermion/WilsonKernels.cc ./qcd/action/fermion/WilsonKernelsHand.cc ./qcd/Dirac.cc ./qcd/SpaceTimeGrid.cc ./stencil/Lebesgue.cc ./stencil/Stencil_common.cc
|
CCFILES=./algorithms/approx/Remez.cc ./algorithms/approx/Zolotarev.cc ./GridInit.cc ./qcd/action/fermion/CayleyFermion5D.cc ./qcd/action/fermion/ContinuedFractionFermion5D.cc ./qcd/action/fermion/PartialFractionFermion5D.cc ./qcd/action/fermion/WilsonFermion.cc ./qcd/action/fermion/WilsonFermion5D.cc ./qcd/action/fermion/WilsonKernels.cc ./qcd/action/fermion/WilsonKernelsHand.cc ./qcd/action/gauge/WilsonGaugeAction.cc ./qcd/Dirac.cc ./qcd/SpaceTimeGrid.cc ./stencil/Lebesgue.cc ./stencil/Stencil_common.cc
|
||||||
|
@ -311,6 +311,8 @@ namespace QCD {
|
|||||||
#include <qcd/Dirac.h>
|
#include <qcd/Dirac.h>
|
||||||
#include <qcd/TwoSpinor.h>
|
#include <qcd/TwoSpinor.h>
|
||||||
#include <qcd/LinalgUtils.h>
|
#include <qcd/LinalgUtils.h>
|
||||||
|
#include <qcd/utils/CovariantCshift.h>
|
||||||
|
#include <qcd/utils/WilsonLoops.h>
|
||||||
#include <qcd/action/Actions.h>
|
#include <qcd/action/Actions.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
|
|
||||||
bin_PROGRAMS = Test_cayley_cg Test_cayley_even_odd Test_contfrac_cg Test_contfrac_even_odd Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_even_odd Test_gamma Test_main Test_nersc_io Test_remez Test_rng Test_rng_fixed Test_simd Test_stencil Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_even_odd
|
bin_PROGRAMS = Test_GaugeAction Test_cayley_cg Test_cayley_even_odd Test_contfrac_cg Test_contfrac_even_odd Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_even_odd Test_gamma Test_main Test_nersc_io Test_remez Test_rng Test_rng_fixed Test_simd Test_stencil Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_even_odd
|
||||||
|
|
||||||
|
|
||||||
|
Test_GaugeAction_SOURCES=Test_GaugeAction.cc
|
||||||
|
Test_GaugeAction_LDADD=-lGrid
|
||||||
|
|
||||||
|
|
||||||
Test_cayley_cg_SOURCES=Test_cayley_cg.cc
|
Test_cayley_cg_SOURCES=Test_cayley_cg.cc
|
||||||
|
128
tests/Test_GaugeAction.cc
Normal file
128
tests/Test_GaugeAction.cc
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
#include <Grid.h>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace Grid;
|
||||||
|
using namespace Grid::QCD;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main (int argc, char ** argv)
|
||||||
|
{
|
||||||
|
Grid_init(&argc,&argv);
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<int> simd_layout = GridDefaultSimd(4,vComplexF::Nsimd());
|
||||||
|
std::vector<int> mpi_layout = GridDefaultMpi();
|
||||||
|
std::vector<int> latt_size ({16,16,16,32});
|
||||||
|
std::vector<int> clatt_size ({4,4,4,8});
|
||||||
|
int orthodir=3;
|
||||||
|
int orthosz =latt_size[orthodir];
|
||||||
|
|
||||||
|
GridCartesian Fine(latt_size,simd_layout,mpi_layout);
|
||||||
|
GridCartesian Coarse(clatt_size,simd_layout,mpi_layout);
|
||||||
|
|
||||||
|
LatticeGaugeField Umu(&Fine);
|
||||||
|
|
||||||
|
std::vector<LatticeColourMatrix> U(4,&Fine);
|
||||||
|
|
||||||
|
NerscField header;
|
||||||
|
|
||||||
|
std::string file("./ckpoint_lat.4000");
|
||||||
|
readNerscConfiguration(Umu,header,file);
|
||||||
|
|
||||||
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
U[mu] = peekIndex<3>(Umu,mu);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Painful ; fix syntactical niceness : to check reader
|
||||||
|
LatticeComplex LinkTrace(&Fine);
|
||||||
|
LinkTrace=zero;
|
||||||
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
LinkTrace = LinkTrace + trace(U[mu]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// (1+2+3)=6 = N(N-1)/2 terms // equals to Double S Chorma
|
||||||
|
// in LatticeGaugeField out Plaq
|
||||||
|
// class WilsonLoop {
|
||||||
|
// RealD plaquette(LatticeGaugeField &Umu);
|
||||||
|
// void staple(LatticeSomethingorOther,LatticeGaugeField &Umu);
|
||||||
|
// RealD rectangle(LatticeGaugeField &Umu);
|
||||||
|
// LatticeComplex sitePlaquette()
|
||||||
|
// }
|
||||||
|
// covariantCshift ???
|
||||||
|
// GaugeActionBase
|
||||||
|
// GaugeActionPlaquette
|
||||||
|
// GaugeActionPlaquettePlusRectangle
|
||||||
|
// GaugeActionIwasaki
|
||||||
|
// GaugeActionSymanzik
|
||||||
|
// GaugeActionWilson
|
||||||
|
// Heatbath and quenched update.
|
||||||
|
//
|
||||||
|
LatticeColourMatrix tmpU(&Fine);
|
||||||
|
|
||||||
|
LatticeComplex Plaq(&Fine);
|
||||||
|
LatticeComplex cPlaq(&Coarse);
|
||||||
|
Plaq = zero;
|
||||||
|
for(int mu=1;mu<Nd;mu++){
|
||||||
|
for(int nu=0;nu<mu;nu++){
|
||||||
|
Plaq = Plaq + trace(CovShiftForward(U[mu],mu,U[nu])*adj(CovShiftForward(U[nu],nu,U[mu])));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double vol = Fine.gSites();
|
||||||
|
Complex PlaqScale(1.0/vol/6.0/3.0);
|
||||||
|
RealD StapScale(1.0/vol/6.0/3.0);
|
||||||
|
std::cout <<"PlaqScale" << PlaqScale<<std::endl;
|
||||||
|
std::vector<TComplex> Plaq_T(orthosz);
|
||||||
|
sliceSum(Plaq,Plaq_T,Nd-1);
|
||||||
|
int Nt = Plaq_T.size();
|
||||||
|
|
||||||
|
|
||||||
|
TComplex Plaq_T_sum;
|
||||||
|
Plaq_T_sum=zero;
|
||||||
|
for(int t=0;t<Nt;t++){
|
||||||
|
Plaq_T_sum = Plaq_T_sum+Plaq_T[t];
|
||||||
|
Complex Pt=TensorRemove(Plaq_T[t]);
|
||||||
|
std::cout << "sliced ["<<t<<"]" <<Pt*PlaqScale*Real(Nt) << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Complex Pt = TensorRemove(Plaq_T_sum);
|
||||||
|
std::cout << "total " <<Pt*PlaqScale<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
TComplex Tp = sum(Plaq);
|
||||||
|
Complex p = TensorRemove(Tp);
|
||||||
|
std::cout << "calculated plaquettes " <<p*PlaqScale<<std::endl;
|
||||||
|
|
||||||
|
RealD avg_plaq = WilsonLoops::avgPlaquette(Umu);
|
||||||
|
std::cout << "NEW : calculated real plaquettes " <<avg_plaq<<std::endl;
|
||||||
|
|
||||||
|
RealD stap_plaq=0.0;
|
||||||
|
LatticeColourMatrix stap(&Fine);
|
||||||
|
LatticeComplex stap_tr(&Fine);
|
||||||
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
WilsonLoops::Staple(stap,Umu,mu);
|
||||||
|
stap_tr = trace(stap*adj(U[mu]));
|
||||||
|
TComplex Ts = sum(stap_tr);
|
||||||
|
Complex s = TensorRemove(Ts);
|
||||||
|
stap_plaq+=real(s);
|
||||||
|
}
|
||||||
|
std::cout << "NEW : plaquette via staples"<< stap_plaq*StapScale*0.25<< std::endl;
|
||||||
|
Complex LinkTraceScale(1.0/vol/4.0/3.0);
|
||||||
|
TComplex Tl = sum(LinkTrace);
|
||||||
|
Complex l = TensorRemove(Tl);
|
||||||
|
std::cout << "calculated link trace " <<l*LinkTraceScale<<std::endl;
|
||||||
|
|
||||||
|
sumBlocks(cPlaq,Plaq);
|
||||||
|
TComplex TcP = sum(cPlaq);
|
||||||
|
Complex ll= TensorRemove(TcP);
|
||||||
|
std::cout << "coarsened plaquettes sum to " <<ll*PlaqScale<<std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
Grid_finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user