Grid 0.7.0
OneFlavourEvenOddRationalRatio.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/pseudofermion/OneFlavourEvenOddRationalRatio.h
6
7 Copyright (C) 2015
8
9Author: Peter Boyle <paboyle@ph.ed.ac.uk>
10
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License along
22 with this program; if not, write to the Free Software Foundation, Inc.,
23 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24
25 See the full license in the file "LICENSE" in the top level distribution directory
26 *************************************************************************************/
27 /* END LEGAL */
28#ifndef QCD_PSEUDOFERMION_ONE_FLAVOUR_EVEN_ODD_RATIONAL_RATIO_H
29#define QCD_PSEUDOFERMION_ONE_FLAVOUR_EVEN_ODD_RATIONAL_RATIO_H
30
32
34 // One flavour rational
36
37 // S_f = chi^dag* P(V^dag*V)/Q(V^dag*V)* N(M^dag*M)/D(M^dag*M)* P(V^dag*V)/Q(V^dag*V)* chi
38 //
39 // Here P/Q \sim R_{1/4} ~ (V^dagV)^{1/4}
40 // Here N/D \sim R_{-1/2} ~ (M^dagM)^{-1/2}
41
42 template<class Impl>
44 public:
46 private:
49 out.inv_pow = 2;
50 out.lo = in.lo;
51 out.hi = in.hi;
52 out.MaxIter = in.MaxIter;
53 out.action_tolerance = out.md_tolerance = in.tolerance;
54 out.action_degree = out.md_degree = in.degree;
55 out.precision = in.precision;
56 out.BoundsCheckFreq = in.BoundsCheckFreq;
57 return out;
58 }
59
60 public:
66
67 virtual std::string action_name(){return "OneFlavourEvenOddRatioRationalPseudoFermionAction";}
68 };
69
70 template<class Impl,class ImplF>
73 public:
75 private:
78 out.inv_pow = 2;
79 out.lo = in.lo;
80 out.hi = in.hi;
81 out.MaxIter = in.MaxIter;
82 out.action_tolerance = out.md_tolerance = in.tolerance;
83 out.action_degree = out.md_degree = in.degree;
84 out.precision = in.precision;
85 out.BoundsCheckFreq = in.BoundsCheckFreq;
86 return out;
87 }
88
89 public:
97
98 virtual std::string action_name(){return "OneFlavourEvenOddRatioRationalPseudoFermionAction";}
99 };
100
102
103#endif
#define NAMESPACE_BEGIN(A)
Definition Namespace.h:35
#define NAMESPACE_END(A)
Definition Namespace.h:36
uint32_t Integer
Definition Simd.h:58
GeneralEvenOddRatioRationalMixedPrecPseudoFermionAction(FermionOperator< Impl > &_NumOpD, FermionOperator< Impl > &_DenOpD, FermionOperator< ImplF > &_NumOpF, FermionOperator< ImplF > &_DenOpF, const RationalActionParams &p, Integer _ReliableUpdateFreq)
GeneralEvenOddRatioRationalPseudoFermionAction(FermionOperator< Impl > &_NumOp, FermionOperator< Impl > &_DenOp, const Params &p)
OneFlavourEvenOddRatioRationalMixedPrecPseudoFermionAction(FermionOperator< Impl > &_NumOp, FermionOperator< Impl > &_DenOp, FermionOperator< ImplF > &_NumOpF, FermionOperator< ImplF > &_DenOpF, const Params &p, Integer ReliableUpdateFreq)
virtual std::string action_name()
Report the name of the action.
static RationalActionParams transcribe(const Params &in)
OneFlavourEvenOddRatioRationalPseudoFermionAction(FermionOperator< Impl > &_NumOp, FermionOperator< Impl > &_DenOp, const Params &p)
virtual std::string action_name()
Report the name of the action.