mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 14:04:32 +00:00 
			
		
		
		
	Starting Clover term
This commit is contained in:
		
							
								
								
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					// Place your settings in this file to overwrite default and user settings.
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										98
									
								
								lib/qcd/action/fermion/WilsonCloverFermion.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								lib/qcd/action/fermion/WilsonCloverFermion.cc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
				
			|||||||
 | 
					    /*************************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Grid physics library, www.github.com/paboyle/Grid 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Source file: ./lib/qcd/action/fermion/WilsonTMFermion.cc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Copyright (C) 2015
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Author: paboyle <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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Grid {
 | 
				
			||||||
 | 
					namespace QCD {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * BF sequence
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					      void bfmbase<Float>::MooeeInv(Fermion_t psi, 
 | 
				
			||||||
 | 
								       Fermion_t chi, 
 | 
				
			||||||
 | 
								      int dag, int cb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    double m    = this->mass;
 | 
				
			||||||
 | 
					    double tm   = this->twistedmass;
 | 
				
			||||||
 | 
					    double mtil = 4.0+this->mass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    double sq = mtil*mtil + tm*tm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    double a = mtil/sq;
 | 
				
			||||||
 | 
					    double b = -tm /sq;
 | 
				
			||||||
 | 
					    if(dag) b=-b;
 | 
				
			||||||
 | 
					    axpibg5x(chi,psi,a,b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      void bfmbase<Float>::Mooee(Fermion_t psi, 
 | 
				
			||||||
 | 
								   Fermion_t chi, 
 | 
				
			||||||
 | 
								   int dag,int cb)
 | 
				
			||||||
 | 
					    double a = 4.0+this->mass;
 | 
				
			||||||
 | 
					    double b = this->twistedmass;
 | 
				
			||||||
 | 
					    if(dag) b=-b;
 | 
				
			||||||
 | 
					    axpibg5x(chi,psi,a,b);
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  template<class Impl>
 | 
				
			||||||
 | 
					  void WilsonTMFermion<Impl>::Mooee(const FermionField &in, FermionField &out) {
 | 
				
			||||||
 | 
					    RealD a = 4.0+this->mass;
 | 
				
			||||||
 | 
					    RealD b = this->mu;
 | 
				
			||||||
 | 
					    out.checkerboard = in.checkerboard;
 | 
				
			||||||
 | 
					    axpibg5x(out,in,a,b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  template<class Impl>
 | 
				
			||||||
 | 
					  void WilsonTMFermion<Impl>::MooeeDag(const FermionField &in, FermionField &out) {
 | 
				
			||||||
 | 
					    RealD a = 4.0+this->mass;
 | 
				
			||||||
 | 
					    RealD b = -this->mu;
 | 
				
			||||||
 | 
					    out.checkerboard = in.checkerboard;
 | 
				
			||||||
 | 
					    axpibg5x(out,in,a,b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  template<class Impl>
 | 
				
			||||||
 | 
					  void WilsonTMFermion<Impl>::MooeeInv(const FermionField &in, FermionField &out) {
 | 
				
			||||||
 | 
					    RealD m    = this->mass;
 | 
				
			||||||
 | 
					    RealD tm   = this->mu;
 | 
				
			||||||
 | 
					    RealD mtil = 4.0+this->mass;
 | 
				
			||||||
 | 
					    RealD sq   = mtil*mtil+tm*tm;
 | 
				
			||||||
 | 
					    RealD a    = mtil/sq;
 | 
				
			||||||
 | 
					    RealD b    = -tm /sq;
 | 
				
			||||||
 | 
					    axpibg5x(out,in,a,b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  template<class Impl>
 | 
				
			||||||
 | 
					  void WilsonTMFermion<Impl>::MooeeInvDag(const FermionField &in, FermionField &out) {
 | 
				
			||||||
 | 
					    RealD m    = this->mass;
 | 
				
			||||||
 | 
					    RealD tm   = this->mu;
 | 
				
			||||||
 | 
					    RealD mtil = 4.0+this->mass;
 | 
				
			||||||
 | 
					    RealD sq   = mtil*mtil+tm*tm;
 | 
				
			||||||
 | 
					    RealD a    = mtil/sq;
 | 
				
			||||||
 | 
					    RealD b    = tm /sq;
 | 
				
			||||||
 | 
					    axpibg5x(out,in,a,b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FermOpTemplateInstantiate(WilsonTMFermion);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										76
									
								
								lib/qcd/action/fermion/WilsonCloverFermion.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								lib/qcd/action/fermion/WilsonCloverFermion.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					    /*************************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Grid physics library, www.github.com/paboyle/Grid 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Source file: ./lib/qcd/action/fermion/WilsonTMFermion.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Copyright (C) 2015
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Author: paboyle <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 */
 | 
				
			||||||
 | 
					#ifndef  GRID_QCD_WILSON_TM_FERMION_H
 | 
				
			||||||
 | 
					#define  GRID_QCD_WILSON_TM_FERMION_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Grid/Grid.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Grid {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  namespace QCD {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    template<class Impl>
 | 
				
			||||||
 | 
					    class WilsonTMFermion : public WilsonFermion<Impl>
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					      INHERIT_IMPL_TYPES(Impl);
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      virtual void   Instantiatable(void) {};
 | 
				
			||||||
 | 
					      // Constructors
 | 
				
			||||||
 | 
					      WilsonTMFermion(GaugeField &_Umu,
 | 
				
			||||||
 | 
							    GridCartesian         &Fgrid,
 | 
				
			||||||
 | 
							    GridRedBlackCartesian &Hgrid, 
 | 
				
			||||||
 | 
							    RealD _mass,
 | 
				
			||||||
 | 
							    RealD _mu,
 | 
				
			||||||
 | 
							    const ImplParams &p= ImplParams()
 | 
				
			||||||
 | 
							      ) :
 | 
				
			||||||
 | 
						WilsonFermion<Impl>(_Umu,
 | 
				
			||||||
 | 
								    Fgrid,
 | 
				
			||||||
 | 
								    Hgrid,
 | 
				
			||||||
 | 
								    _mass,p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
						mu = _mu;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // allow override for twisted mass and clover
 | 
				
			||||||
 | 
					    virtual void Mooee(const FermionField &in, FermionField &out) ;
 | 
				
			||||||
 | 
					    virtual void MooeeDag(const FermionField &in, FermionField &out) ;
 | 
				
			||||||
 | 
					    virtual void MooeeInv(const FermionField &in, FermionField &out) ;
 | 
				
			||||||
 | 
					    virtual void MooeeInvDag(const FermionField &in, FermionField &out) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private:
 | 
				
			||||||
 | 
					     RealD mu; // TwistedMass parameter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user