mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Think I have the physical prop interface to CF and PF overlap right, but need a strong check/regression.
Only support Hw overlap, not Ht for now. Ht needs a new Dminus implemented.
This commit is contained in:
		@@ -295,6 +295,27 @@ namespace Grid {
 | 
				
			|||||||
      assert((Ls&0x1)==1); // Odd Ls required
 | 
					      assert((Ls&0x1)==1); // Odd Ls required
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    template<class Impl>
 | 
				
			||||||
 | 
					    void ContinuedFractionFermion5D<Impl>::ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int Ls = this->Ls;
 | 
				
			||||||
 | 
					      conformable(solution5d._grid,this->FermionGrid());
 | 
				
			||||||
 | 
					      conformable(exported4d._grid,this->GaugeGrid());
 | 
				
			||||||
 | 
					      ExtractSlice(exported4d, solution5d, Ls-1, Ls-1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    template<class Impl>
 | 
				
			||||||
 | 
					    void ContinuedFractionFermion5D<Impl>::ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int Ls = this->Ls;
 | 
				
			||||||
 | 
					      conformable(imported5d._grid,this->FermionGrid());
 | 
				
			||||||
 | 
					      conformable(input4d._grid   ,this->GaugeGrid());
 | 
				
			||||||
 | 
					      FermionField tmp(this->FermionGrid());
 | 
				
			||||||
 | 
					      tmp=zero;
 | 
				
			||||||
 | 
					      InsertSlice(input4d, tmp, Ls-1, Ls-1);
 | 
				
			||||||
 | 
					      tmp=Gamma(Gamma::Algebra::Gamma5)*tmp;
 | 
				
			||||||
 | 
					      this->Dminus(tmp,imported5d);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FermOpTemplateInstantiate(ContinuedFractionFermion5D);
 | 
					    FermOpTemplateInstantiate(ContinuedFractionFermion5D);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,6 +65,14 @@ namespace Grid {
 | 
				
			|||||||
      // Efficient support for multigrid coarsening
 | 
					      // Efficient support for multigrid coarsening
 | 
				
			||||||
      virtual void  Mdir (const FermionField &in, FermionField &out,int dir,int disp);
 | 
					      virtual void  Mdir (const FermionField &in, FermionField &out,int dir,int disp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ///////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					      // Physical surface field utilities
 | 
				
			||||||
 | 
					      ///////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					      //      virtual void Dminus(const FermionField &psi, FermionField &chi);     // Inherit trivial case
 | 
				
			||||||
 | 
					      //      virtual void DminusDag(const FermionField &psi, FermionField &chi);  // Inherit trivial case
 | 
				
			||||||
 | 
					      virtual void ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d);
 | 
				
			||||||
 | 
					      virtual void ImportPhysicalFermionSource  (const FermionField &input4d,FermionField &imported5d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Constructors
 | 
					      // Constructors
 | 
				
			||||||
      ContinuedFractionFermion5D(GaugeField &_Umu,
 | 
					      ContinuedFractionFermion5D(GaugeField &_Umu,
 | 
				
			||||||
				 GridCartesian         &FiveDimGrid,
 | 
									 GridCartesian         &FiveDimGrid,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,6 +396,27 @@ namespace Grid {
 | 
				
			|||||||
      amax=zolo_hi;
 | 
					      amax=zolo_hi;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    template<class Impl>
 | 
				
			||||||
 | 
					    void PartialFractionFermion5D<Impl>::ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int Ls = this->Ls;
 | 
				
			||||||
 | 
					      conformable(solution5d._grid,this->FermionGrid());
 | 
				
			||||||
 | 
					      conformable(exported4d._grid,this->GaugeGrid());
 | 
				
			||||||
 | 
					      ExtractSlice(exported4d, solution5d, Ls-1, Ls-1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    template<class Impl>
 | 
				
			||||||
 | 
					    void PartialFractionFermion5D<Impl>::ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int Ls = this->Ls;
 | 
				
			||||||
 | 
					      conformable(imported5d._grid,this->FermionGrid());
 | 
				
			||||||
 | 
					      conformable(input4d._grid   ,this->GaugeGrid());
 | 
				
			||||||
 | 
					      FermionField tmp(this->FermionGrid());
 | 
				
			||||||
 | 
					      tmp=zero;
 | 
				
			||||||
 | 
					      InsertSlice(input4d, tmp, Ls-1, Ls-1);
 | 
				
			||||||
 | 
					      tmp=Gamma(Gamma::Algebra::Gamma5)*tmp;
 | 
				
			||||||
 | 
					      this->Dminus(tmp,imported5d);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Constructors
 | 
					      // Constructors
 | 
				
			||||||
    template<class Impl>
 | 
					    template<class Impl>
 | 
				
			||||||
    PartialFractionFermion5D<Impl>::PartialFractionFermion5D(GaugeField &_Umu,
 | 
					    PartialFractionFermion5D<Impl>::PartialFractionFermion5D(GaugeField &_Umu,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,12 @@ namespace Grid {
 | 
				
			|||||||
      // Efficient support for multigrid coarsening
 | 
					      // Efficient support for multigrid coarsening
 | 
				
			||||||
      virtual void  Mdir (const FermionField &in, FermionField &out,int dir,int disp);
 | 
					      virtual void  Mdir (const FermionField &in, FermionField &out,int dir,int disp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ///////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					      // Physical surface field utilities
 | 
				
			||||||
 | 
					      ///////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					      virtual void ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d);
 | 
				
			||||||
 | 
					      virtual void ImportPhysicalFermionSource  (const FermionField &input4d,FermionField &imported5d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Constructors
 | 
					      // Constructors
 | 
				
			||||||
      PartialFractionFermion5D(GaugeField &_Umu,
 | 
					      PartialFractionFermion5D(GaugeField &_Umu,
 | 
				
			||||||
			       GridCartesian         &FiveDimGrid,
 | 
								       GridCartesian         &FiveDimGrid,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user