mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 21:44:33 +00:00 
			
		
		
		
	Merge branch 'develop' into feature/hmc_generalise
This commit is contained in:
		@@ -48,8 +48,7 @@ void axpibg5x(Lattice<vobj> &z,const Lattice<vobj> &x,Coeff a,Coeff b)
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
 | 
			
		||||
  Gamma G5(Gamma::Algebra::Gamma5);
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss++){
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss++){
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    tmp = a*x._odata[ss];
 | 
			
		||||
    tmp = tmp + G5*(b*timesI(x._odata[ss]));
 | 
			
		||||
@@ -65,8 +64,7 @@ void axpby_ssp(Lattice<vobj> &z, Coeff a,const Lattice<vobj> &x,Coeff b,const La
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp = a*x._odata[ss+s]+b*y._odata[ss+sp];
 | 
			
		||||
    vstream(z._odata[ss+s],tmp);
 | 
			
		||||
  }
 | 
			
		||||
@@ -80,9 +78,9 @@ void ag5xpby_ssp(Lattice<vobj> &z,Coeff a,const Lattice<vobj> &x,Coeff b,const L
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
 | 
			
		||||
  Gamma G5(Gamma::Algebra::Gamma5);
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    tmp = G5*x._odata[ss+s]*a;
 | 
			
		||||
    tmp = tmp + b*y._odata[ss+sp];
 | 
			
		||||
@@ -99,8 +97,7 @@ void axpbg5y_ssp(Lattice<vobj> &z,Coeff a,const Lattice<vobj> &x,Coeff b,const L
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
  Gamma G5(Gamma::Algebra::Gamma5);
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    tmp = G5*y._odata[ss+sp]*b;
 | 
			
		||||
    tmp = tmp + a*x._odata[ss+s];
 | 
			
		||||
@@ -116,9 +113,9 @@ void ag5xpbg5y_ssp(Lattice<vobj> &z,Coeff a,const Lattice<vobj> &x,Coeff b,const
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
 | 
			
		||||
  Gamma G5(Gamma::Algebra::Gamma5);
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp1;
 | 
			
		||||
    vobj tmp2;
 | 
			
		||||
    tmp1 = a*x._odata[ss+s]+b*y._odata[ss+sp];
 | 
			
		||||
@@ -135,8 +132,7 @@ void axpby_ssp_pminus(Lattice<vobj> &z,Coeff a,const Lattice<vobj> &x,Coeff b,co
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    spProj5m(tmp,y._odata[ss+sp]);
 | 
			
		||||
    tmp = a*x._odata[ss+s]+b*tmp;
 | 
			
		||||
@@ -152,8 +148,7 @@ void axpby_ssp_pplus(Lattice<vobj> &z,Coeff a,const Lattice<vobj> &x,Coeff b,con
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  GridBase *grid=x._grid;
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    spProj5p(tmp,y._odata[ss+sp]);
 | 
			
		||||
    tmp = a*x._odata[ss+s]+b*tmp;
 | 
			
		||||
@@ -169,8 +164,7 @@ void G5R5(Lattice<vobj> &z,const Lattice<vobj> &x)
 | 
			
		||||
  conformable(x,z);
 | 
			
		||||
  int Ls = grid->_rdimensions[0];
 | 
			
		||||
  Gamma G5(Gamma::Algebra::Gamma5);
 | 
			
		||||
PARALLEL_FOR_LOOP
 | 
			
		||||
  for(int ss=0;ss<grid->oSites();ss+=Ls){ // adds Ls
 | 
			
		||||
  parallel_for(int ss=0;ss<grid->oSites();ss+=Ls) {
 | 
			
		||||
    vobj tmp;
 | 
			
		||||
    for(int s=0;s<Ls;s++){
 | 
			
		||||
      int sp = Ls-1-s;
 | 
			
		||||
 
 | 
			
		||||
@@ -224,8 +224,7 @@ class SU {
 | 
			
		||||
    int i0, i1;
 | 
			
		||||
    su2SubGroupIndex(i0, i1, su2_index);
 | 
			
		||||
 | 
			
		||||
    PARALLEL_FOR_LOOP
 | 
			
		||||
    for (int ss = 0; ss < grid->oSites(); ss++) {
 | 
			
		||||
    parallel_for (int ss = 0; ss < grid->oSites(); ss++) {
 | 
			
		||||
      subgroup._odata[ss]()()(0, 0) = source._odata[ss]()()(i0, i0);
 | 
			
		||||
      subgroup._odata[ss]()()(0, 1) = source._odata[ss]()()(i0, i1);
 | 
			
		||||
      subgroup._odata[ss]()()(1, 0) = source._odata[ss]()()(i1, i0);
 | 
			
		||||
@@ -255,8 +254,7 @@ class SU {
 | 
			
		||||
    su2SubGroupIndex(i0, i1, su2_index);
 | 
			
		||||
 | 
			
		||||
    dest = 1.0;  // start out with identity
 | 
			
		||||
    PARALLEL_FOR_LOOP
 | 
			
		||||
    for (int ss = 0; ss < grid->oSites(); ss++) {
 | 
			
		||||
    parallel_for (int ss = 0; ss < grid->oSites(); ss++) {
 | 
			
		||||
      dest._odata[ss]()()(i0, i0) = subgroup._odata[ss]()()(0, 0);
 | 
			
		||||
      dest._odata[ss]()()(i0, i1) = subgroup._odata[ss]()()(0, 1);
 | 
			
		||||
      dest._odata[ss]()()(i1, i0) = subgroup._odata[ss]()()(1, 0);
 | 
			
		||||
 
 | 
			
		||||
@@ -179,4 +179,4 @@ typedef SU_Adjoint<Nc> AdjointMatrices;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,8 @@ Author: Peter Boyle <paboyle@ph.ed.ac.uk>
 | 
			
		||||
    See the full license in the file "LICENSE" in the top level distribution directory
 | 
			
		||||
    *************************************************************************************/
 | 
			
		||||
    /*  END LEGAL */
 | 
			
		||||
#include <Grid/Grid.h>
 | 
			
		||||
#include <Grid/GridCore.h>
 | 
			
		||||
#include <Grid/GridQCDcore.h>
 | 
			
		||||
 | 
			
		||||
namespace Grid { 
 | 
			
		||||
  namespace QCD {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								lib/qcd/utils/Utils.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								lib/qcd/utils/Utils.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#ifndef QCD_UTILS_H
 | 
			
		||||
#define QCD_UTILS_H
 | 
			
		||||
#include <Grid/qcd/utils/SpaceTimeGrid.h>
 | 
			
		||||
#include <Grid/qcd/utils/LinalgUtils.h>
 | 
			
		||||
#include <Grid/qcd/utils/CovariantCshift.h>
 | 
			
		||||
 | 
			
		||||
// Scalar field
 | 
			
		||||
#include <Grid/qcd/utils/ScalarObjs.h>
 | 
			
		||||
 | 
			
		||||
// Include representations
 | 
			
		||||
#include <Grid/qcd/utils/SUn.h>
 | 
			
		||||
#include <Grid/qcd/utils/SUnAdjoint.h>
 | 
			
		||||
#include <Grid/qcd/utils/SUnTwoIndex.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -310,7 +310,7 @@ public:
 | 
			
		||||
      GaugeMat v = adj(Vup) - adj(Vdn);
 | 
			
		||||
      GaugeMat u = PeekIndex<LorentzIndex>(Umu, mu);  // some redundant copies
 | 
			
		||||
      GaugeMat vu = v*u;
 | 
			
		||||
      FS = 0.25*Ta(u*v - Cshift(vu, mu, +1));
 | 
			
		||||
      FS = 0.25*Ta(u*v + Cshift(vu, mu, +1));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user