mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Delete old and defunct tests
This commit is contained in:
		@@ -1,167 +0,0 @@
 | 
				
			|||||||
    /*************************************************************************************
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Grid physics library, www.github.com/paboyle/Grid 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Source file: ./tests/Test_wilson_force_phiMdagMphi.cc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Copyright (C) 2015
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Author: Peter Boyle <paboyle@ph.ed.ac.uk>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    This program is free software; you can redistribute it and/or modify
 | 
					 | 
				
			||||||
    it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
    the Free Software Foundation; either version 2 of the License, or
 | 
					 | 
				
			||||||
    (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
    GNU General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    You should have received a copy of the GNU General Public License along
 | 
					 | 
				
			||||||
    with this program; if not, write to the Free Software Foundation, Inc.,
 | 
					 | 
				
			||||||
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    See the full license in the file "LICENSE" in the top level distribution directory
 | 
					 | 
				
			||||||
    *************************************************************************************/
 | 
					 | 
				
			||||||
    /*  END LEGAL */
 | 
					 | 
				
			||||||
#include <Grid/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> latt_size   = GridDefaultLatt();
 | 
					 | 
				
			||||||
  std::vector<int> simd_layout = GridDefaultSimd(Nd,vComplex::Nsimd());
 | 
					 | 
				
			||||||
  std::vector<int> mpi_layout  = GridDefaultMpi();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GridCartesian               Grid(latt_size,simd_layout,mpi_layout);
 | 
					 | 
				
			||||||
  GridRedBlackCartesian     RBGrid(latt_size,simd_layout,mpi_layout);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  int threads = GridThread::GetThreads();
 | 
					 | 
				
			||||||
  std::cout<<GridLogMessage << "Grid is setup to use "<<threads<<" threads"<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::vector<int> seeds({1,2,3,4});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GridParallelRNG          pRNG(&Grid);
 | 
					 | 
				
			||||||
  pRNG.SeedFixedIntegers(std::vector<int>({45,12,81,9}));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeFermion phi        (&Grid); gaussian(pRNG,phi);
 | 
					 | 
				
			||||||
  LatticeFermion Mphi       (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion Mdagphi       (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion MphiPrime  (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion MdagphiPrime  (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion dMphi      (&Grid); 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					 | 
				
			||||||
  //  SU3::ColdConfiguration(pRNG,U);
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  // Unmodified matrix element
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  RealD mass=-4.0; //kills the diagonal term
 | 
					 | 
				
			||||||
  WilsonFermionR Dw     (U,     Grid,RBGrid,mass);
 | 
					 | 
				
			||||||
  Dw.M   (phi,Mphi);
 | 
					 | 
				
			||||||
  Dw.Mdag(phi,Mdagphi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD S    = innerProduct(Mphi,Mphi); // pdag MdagM p
 | 
					 | 
				
			||||||
  ComplexD Sdag = innerProduct(Mdagphi,Mdagphi); // pdag MMdag p
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // get the deriv of phidag MdagM phi with respect to "U"
 | 
					 | 
				
			||||||
  LatticeGaugeField UdSdU(&Grid);
 | 
					 | 
				
			||||||
  LatticeGaugeField UdSdUdag(&Grid);
 | 
					 | 
				
			||||||
  LatticeGaugeField tmp(&Grid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.MDeriv(tmp , Mphi,  phi,DaggerNo );  UdSdU=tmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.MDeriv(tmp , Mdagphi,  phi,DaggerYes );  UdSdUdag=tmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeFermion dMdagphi      (&Grid);  dMdagphi=zero;
 | 
					 | 
				
			||||||
  LatticeFermion Ftmp      (&Grid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  //  Dw.MDeriv(UdSdU,Mdagphi,  phi,DaggerYes );// UdSdU =UdSdU +tmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  // Modify the gauge field a little in one dir
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  RealD dt = 1.0e-3;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeColourMatrix mommu(&Grid); 
 | 
					 | 
				
			||||||
  LatticeGaugeField mom(&Grid); 
 | 
					 | 
				
			||||||
  LatticeGaugeField Uprime(&Grid); 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //    Dw.DoubleStore(Dw.Umu,Uprime); // update U _and_ Udag
 | 
					 | 
				
			||||||
    Dw.DhopDirDisp(phi,Ftmp,mu,mu+4,DaggerYes); 
 | 
					 | 
				
			||||||
    dMdagphi=dMdagphi+mommu*Ftmp*dt;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    parallel_for(auto i=mom.begin();i<mom.end();i++){
 | 
					 | 
				
			||||||
      Uprime[i](mu) =U[i](mu)+ mom[i](mu)*U[i](mu)*dt;
 | 
					 | 
				
			||||||
      Dw.Umu[i](mu) =Uprime[i](mu); // update U but _not_ Udag
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.Mdag(phi,MdagphiPrime);
 | 
					 | 
				
			||||||
  Dw.M   (phi,MphiPrime);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaMdag phi    "<< norm2(dMdagphi) <<std::endl;
 | 
					 | 
				
			||||||
  Ftmp=MdagphiPrime - Mdagphi;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "diff Mdag phi    "<< norm2(Ftmp) <<std::endl;
 | 
					 | 
				
			||||||
  Ftmp = Ftmp - dMdagphi;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "err  Mdag phi    "<< norm2(Ftmp) <<std::endl;
 | 
					 | 
				
			||||||
  std::cout << dMdagphi<<std::endl;
 | 
					 | 
				
			||||||
  Ftmp=MdagphiPrime - Mdagphi;
 | 
					 | 
				
			||||||
  std::cout << Ftmp<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD Sprime    = innerProduct(Mphi   ,MphiPrime);
 | 
					 | 
				
			||||||
  ComplexD Sprimedag = innerProduct(Mdagphi,MdagphiPrime);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD deltaSdag = innerProduct(Mdagphi,dMdagphi);
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaSdag from inner prod of mom* M[u]     "<<deltaSdag<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  //////////////////////////////////////////////
 | 
					 | 
				
			||||||
  // Use derivative to estimate dS
 | 
					 | 
				
			||||||
  //////////////////////////////////////////////
 | 
					 | 
				
			||||||
  LatticeComplex dS(&Grid); dS = zero;
 | 
					 | 
				
			||||||
  LatticeComplex dSdag(&Grid); dSdag = zero;
 | 
					 | 
				
			||||||
  parallel_for(auto i=mom.begin();i<mom.end();i++){
 | 
					 | 
				
			||||||
    for(int mu=0;mu<Nd;mu++){
 | 
					 | 
				
			||||||
      //      dS[i]() = dS[i]()+trace(mom[i](mu) * UdSdU[i](mu) - mom[i](mu)* adj( UdSdU[i](mu)) )*dt;
 | 
					 | 
				
			||||||
      dS[i]()    =    dS[i]()+trace(mom[i](mu) * UdSdU[i](mu) )*dt;
 | 
					 | 
				
			||||||
      dSdag[i]() = dSdag[i]()+trace(mom[i](mu) * UdSdUdag[i](mu) )*dt;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  Complex dSpred    = sum(dS);
 | 
					 | 
				
			||||||
  Complex dSdagpred = sum(dSdag);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " S      "<<S<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "dS      "<<Sprime-S<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "predict dS    "<< dSpred <<std::endl;
 | 
					 | 
				
			||||||
  std::cout << "\n\n"<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " Sdag      "<<Sdag<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " Sprimedag "<<Sprimedag<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "dSdag      "<<Sprimedag-Sdag<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "predict dSdag    "<< dSdagpred <<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout<< GridLogMessage << "Done" <<std::endl;
 | 
					 | 
				
			||||||
  Grid_finalize();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,189 +0,0 @@
 | 
				
			|||||||
    /*************************************************************************************
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Grid physics library, www.github.com/paboyle/Grid 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Source file: ./tests/Test_wilson_force_phiMphi.cc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Copyright (C) 2015
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Author: Peter Boyle <paboyle@ph.ed.ac.uk>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    This program is free software; you can redistribute it and/or modify
 | 
					 | 
				
			||||||
    it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
    the Free Software Foundation; either version 2 of the License, or
 | 
					 | 
				
			||||||
    (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
    GNU General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    You should have received a copy of the GNU General Public License along
 | 
					 | 
				
			||||||
    with this program; if not, write to the Free Software Foundation, Inc.,
 | 
					 | 
				
			||||||
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    See the full license in the file "LICENSE" in the top level distribution directory
 | 
					 | 
				
			||||||
    *************************************************************************************/
 | 
					 | 
				
			||||||
    /*  END LEGAL */
 | 
					 | 
				
			||||||
#include <Grid/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> latt_size   = GridDefaultLatt();
 | 
					 | 
				
			||||||
  std::vector<int> simd_layout = GridDefaultSimd(Nd,vComplex::Nsimd());
 | 
					 | 
				
			||||||
  std::vector<int> mpi_layout  = GridDefaultMpi();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GridCartesian               Grid(latt_size,simd_layout,mpi_layout);
 | 
					 | 
				
			||||||
  GridRedBlackCartesian     RBGrid(latt_size,simd_layout,mpi_layout);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  int threads = GridThread::GetThreads();
 | 
					 | 
				
			||||||
  std::cout<<GridLogMessage << "Grid is setup to use "<<threads<<" threads"<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::vector<int> seeds({1,2,3,4});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GridParallelRNG          pRNG(&Grid);
 | 
					 | 
				
			||||||
  pRNG.SeedFixedIntegers(std::vector<int>({45,12,81,9}));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeFermion phi        (&Grid); gaussian(pRNG,phi);
 | 
					 | 
				
			||||||
  LatticeFermion Mphi       (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion MphiPrime  (&Grid); 
 | 
					 | 
				
			||||||
  LatticeFermion dMphi      (&Grid); 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  // Unmodified matrix element
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  RealD mass=-4.0; //kills the diagonal term
 | 
					 | 
				
			||||||
  WilsonFermionR Dw     (U,     Grid,RBGrid,mass);
 | 
					 | 
				
			||||||
  Dw.M(phi,Mphi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD S = innerProduct(phi,Mphi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // get the deriv
 | 
					 | 
				
			||||||
  LatticeGaugeField UdSdU(&Grid);
 | 
					 | 
				
			||||||
  Dw.MDeriv(UdSdU,phi, phi,DaggerNo ); 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  // Modify the gauge field a little in one dir
 | 
					 | 
				
			||||||
  ////////////////////////////////////
 | 
					 | 
				
			||||||
  RealD dt = 1.0e-3;
 | 
					 | 
				
			||||||
  Complex Complex_i(0,1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeColourMatrix Umu(&Grid);
 | 
					 | 
				
			||||||
  LatticeColourMatrix Umu_save(&Grid);
 | 
					 | 
				
			||||||
  LatticeColourMatrix dU (&Grid);
 | 
					 | 
				
			||||||
  LatticeColourMatrix mom(&Grid); 
 | 
					 | 
				
			||||||
  SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mom); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // check mom is as i expect
 | 
					 | 
				
			||||||
  LatticeColourMatrix tmpmom(&Grid); 
 | 
					 | 
				
			||||||
  tmpmom = mom+adj(mom);
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "mom anti-herm check "<< norm2(tmpmom)<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "mom tr check "<< norm2(trace(mom))<<std::endl;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  const int mu=0;
 | 
					 | 
				
			||||||
  Umu = PeekIndex<LorentzIndex>(U,mu);
 | 
					 | 
				
			||||||
  Umu_save=Umu;
 | 
					 | 
				
			||||||
  dU = mom * Umu * dt;
 | 
					 | 
				
			||||||
  Umu= Umu+dU;
 | 
					 | 
				
			||||||
  PokeIndex<LorentzIndex>(Dw.Umu,Umu,mu);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.M(phi,MphiPrime);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD Sprime = innerProduct(phi,MphiPrime);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " S      "<<S<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "dS      "<<Sprime-S<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.Umu=zero;
 | 
					 | 
				
			||||||
  PokeIndex<LorentzIndex>(Dw.Umu,dU,mu);
 | 
					 | 
				
			||||||
  Dw.M(phi,dMphi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComplexD deltaS = innerProduct(phi,dMphi);
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaS      "<<deltaS<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Dw.Umu=zero;
 | 
					 | 
				
			||||||
  PokeIndex<LorentzIndex>(Dw.Umu,Umu_save,mu);
 | 
					 | 
				
			||||||
  Dw.Mdir(phi,dMphi,mu,1);
 | 
					 | 
				
			||||||
  dMphi = dt*mom*dMphi;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  deltaS = innerProduct(phi,dMphi);
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaS from inner prod of mom* M[u]     "<<deltaS<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  deltaS = sum(trace(outerProduct(dMphi,phi)));
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaS from trace outer prod of deltaM      "<<deltaS<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
  LatticeComplex lip(&Grid);
 | 
					 | 
				
			||||||
  lip  = localInnerProduct(phi,dMphi);
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  LatticeComplex trop(&Grid);
 | 
					 | 
				
			||||||
  trop = trace(outerProduct(dMphi,phi));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeSpinColourMatrix op(&Grid);
 | 
					 | 
				
			||||||
  op = outerProduct(dMphi,phi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeSpinColourMatrix hop(&Grid);
 | 
					 | 
				
			||||||
  LatticeComplex op_cpt(&Grid);
 | 
					 | 
				
			||||||
  for(int s1=0;s1<Ns;s1++){
 | 
					 | 
				
			||||||
  for(int s2=0;s2<Ns;s2++){
 | 
					 | 
				
			||||||
  for(int c1=0;c1<Nc;c1++){
 | 
					 | 
				
			||||||
  for(int c2=0;c2<Nc;c2++){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    op_cpt = peekColour(peekSpin(dMphi,s1),c1) * adj(peekColour(peekSpin(phi,s2),c2));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    parallel_for(auto i=hop.begin();i<hop.end();i++){
 | 
					 | 
				
			||||||
      hop[i]()(s1,s2)(c1,c2) = op_cpt[i]()()();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
  }}}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeSpinColourMatrix diffop(&Grid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  diffop = hop - op;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "hand outer prod diff   "<<norm2(diffop)<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  deltaS = sum(trace(hop));
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "deltaS hop   "<<deltaS<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage<< "  phi[0] : "<<  phi._odata[0]<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage<< "dMphi[0] : "<<dMphi._odata[0]<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage<< "hop[0]   : "<<  hop._odata[0]<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage<< " op[0]   : "<<   op._odata[0]<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "lip      "<<lip<<std::endl;
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "trop     "<<trop<<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*/  
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  //  std::cout << GridLogMessage << " UdSdU " << UdSdU << std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  LatticeComplex dS(&Grid); dS = zero;
 | 
					 | 
				
			||||||
  parallel_for(auto i=mom.begin();i<mom.end();i++){
 | 
					 | 
				
			||||||
    dS[i]() = trace(mom[i]() * UdSdU[i](mu) )*dt;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  Complex dSpred = sum(dS);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::cout << GridLogMessage << "predict dS    "<< dSpred <<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  cout<< GridLogMessage << "Done" <<std::endl;
 | 
					 | 
				
			||||||
  Grid_finalize();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user