Grid 0.7.0
OverlapWilsonPartialFractionTanhFermion.h
Go to the documentation of this file.
1/*************************************************************************************
2
3 Grid physics library, www.github.com/paboyle/Grid
4
5 Source file: ./lib/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h
6
7 Copyright (C) 2015
8
9Author: Peter Boyle <pabobyle@ph.ed.ac.uk>
10Author: Peter Boyle <paboyle@ph.ed.ac.uk>
11
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or
15 (at your option) any later version.
16
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
21
22 You should have received a copy of the GNU General Public License along
23 with this program; if not, write to the Free Software Foundation, Inc.,
24 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25
26 See the full license in the file "LICENSE" in the top level distribution directory
27*************************************************************************************/
28/* END LEGAL */
29#ifndef OVERLAP_WILSON_PARTFRAC_TANH_FERMION_H
30#define OVERLAP_WILSON_PARTFRAC_TANH_FERMION_H
31
33
35
36template<class Impl>
38{
39public:
41public:
42
43 virtual void Instantiatable(void){};
44 void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m,std::vector<double> twist) {
45 this->MomentumSpacePropagatorHw(out,in,_m,twist);
46 };
47 // Constructors
49 GridCartesian &FiveDimGrid,
50 GridRedBlackCartesian &FiveDimRedBlackGrid,
51 GridCartesian &FourDimGrid,
52 GridRedBlackCartesian &FourDimRedBlackGrid,
53 RealD _mass,RealD _M5,
54 RealD scale,const ImplParams &p= ImplParams()) :
55
56 // b+c=scale, b-c = 0 <=> b =c = scale/2
57 PartialFractionFermion5D<Impl>(_Umu,
58 FiveDimGrid,
59 FiveDimRedBlackGrid,
60 FourDimGrid,
61 FourDimRedBlackGrid,_mass,_M5,p)
62 {
63 assert((this->Ls&0x1)==1); // Odd Ls required
64 int nrational=this->Ls-1;// Even rational order
65 Approx::zolotarev_data *zdata = Approx::higham(1.0,nrational);// eps is ignored for higham
66 this->SetCoefficientsTanh(zdata,scale);
67 Approx::zolotarev_free(zdata);
68 }
69};
70
72#endif
#define NAMESPACE_BEGIN(A)
Definition Namespace.h:35
#define NAMESPACE_END(A)
Definition Namespace.h:36
double RealD
Definition Simd.h:61
void MomentumSpacePropagator(FermionField &out, const FermionField &in, RealD _m, std::vector< double > twist)
OverlapWilsonPartialFractionTanhFermion(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, RealD _mass, RealD _M5, RealD scale, const ImplParams &p=ImplParams())
virtual void SetCoefficientsTanh(Approx::zolotarev_data *zdata, RealD scale)
PartialFractionFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, RealD _mass, RealD M5, const ImplParams &p=ImplParams())
void MomentumSpacePropagatorHw(FermionField &out, const FermionField &in, RealD mass, std::vector< double > twist)