Grid
0.7.0
PauliVillarsInverters.h
Go to the documentation of this file.
1
/*************************************************************************************
2
3
Grid physics library, www.github.com/paboyle/Grid
4
5
Source file: ./lib/algorithms/iterative/SchurRedBlack.h
6
7
Copyright (C) 2015
8
9
Author: 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
#pragma once
29
30
NAMESPACE_BEGIN
(
Grid
);
31
32
template
<
class
Field>
33
class
PauliVillarsSolverUnprec
34
{
35
public
:
36
ConjugateGradient<Field>
&
CG
;
37
PauliVillarsSolverUnprec
(
ConjugateGradient<Field>
&_CG) :
CG
(_CG){};
38
39
template
<
class
Matrix>
40
void
operator()
(Matrix &_Matrix,
const
Field &src,Field &sol)
41
{
42
RealD
m = _Matrix.Mass();
43
Field A (_Matrix.FermionGrid());
44
45
MdagMLinearOperator<Matrix,Field>
HermOp(_Matrix);
46
47
_Matrix.SetMass(1.0);
48
_Matrix.Mdag(src,A);
49
CG
(HermOp,A,sol);
50
_Matrix.SetMass(m);
51
};
52
};
53
54
template
<
class
Field,
class
SchurSolverType>
55
class
PauliVillarsSolverRBprec
56
{
57
public
:
58
SchurSolverType &
SchurSolver
;
59
PauliVillarsSolverRBprec
( SchurSolverType &_SchurSolver) :
SchurSolver
(_SchurSolver){};
60
61
template
<
class
Matrix>
62
void
operator()
(Matrix &_Matrix,
const
Field &src,Field &sol)
63
{
64
RealD
m = _Matrix.Mass();
65
Field A (_Matrix.FermionGrid());
66
67
_Matrix.SetMass(1.0);
68
SchurSolver
(_Matrix,src,sol);
69
_Matrix.SetMass(m);
70
};
71
};
72
73
template
<
class
Field,
class
GaugeField>
74
class
PauliVillarsSolverFourierAccel
75
{
76
public
:
77
GaugeField &
Umu
;
78
ConjugateGradient<Field>
&
CG
;
79
80
PauliVillarsSolverFourierAccel
(GaugeField &_Umu,
ConjugateGradient<Field>
&_CG) :
Umu
(_Umu),
CG
(_CG)
81
{
82
};
83
84
template
<
class
Matrix>
85
void
operator()
(Matrix &_Matrix,
const
Field &src,Field &sol)
86
{
87
FourierAcceleratedPV<Field, Matrix, typename Matrix::GaugeField >
faPV(_Matrix,
Umu
,
CG
) ;
88
faPV.
pvInv
(src,sol);
89
};
90
};
91
92
NAMESPACE_END
(
Grid
);
NAMESPACE_BEGIN
#define NAMESPACE_BEGIN(A)
Definition
Namespace.h:35
NAMESPACE_END
#define NAMESPACE_END(A)
Definition
Namespace.h:36
RealD
double RealD
Definition
Simd.h:61
ConjugateGradient
Definition
ConjugateGradient.h:43
FourierAcceleratedPV
Definition
FourierAcceleratedPV.h:52
FourierAcceleratedPV::pvInv
void pvInv(const Vi &_src, Vi &_dst) const
Definition
FourierAcceleratedPV.h:113
MdagMLinearOperator
Definition
LinearOperator.h:75
PauliVillarsSolverFourierAccel::CG
ConjugateGradient< Field > & CG
Definition
PauliVillarsInverters.h:78
PauliVillarsSolverFourierAccel::Umu
GaugeField & Umu
Definition
PauliVillarsInverters.h:77
PauliVillarsSolverFourierAccel::operator()
void operator()(Matrix &_Matrix, const Field &src, Field &sol)
Definition
PauliVillarsInverters.h:85
PauliVillarsSolverFourierAccel::PauliVillarsSolverFourierAccel
PauliVillarsSolverFourierAccel(GaugeField &_Umu, ConjugateGradient< Field > &_CG)
Definition
PauliVillarsInverters.h:80
PauliVillarsSolverRBprec::SchurSolver
SchurSolverType & SchurSolver
Definition
PauliVillarsInverters.h:58
PauliVillarsSolverRBprec::operator()
void operator()(Matrix &_Matrix, const Field &src, Field &sol)
Definition
PauliVillarsInverters.h:62
PauliVillarsSolverRBprec::PauliVillarsSolverRBprec
PauliVillarsSolverRBprec(SchurSolverType &_SchurSolver)
Definition
PauliVillarsInverters.h:59
PauliVillarsSolverUnprec::operator()
void operator()(Matrix &_Matrix, const Field &src, Field &sol)
Definition
PauliVillarsInverters.h:40
PauliVillarsSolverUnprec::CG
ConjugateGradient< Field > & CG
Definition
PauliVillarsInverters.h:36
PauliVillarsSolverUnprec::PauliVillarsSolverUnprec
PauliVillarsSolverUnprec(ConjugateGradient< Field > &_CG)
Definition
PauliVillarsInverters.h:37
Grid
Definition
Deflation.h:31
Grid
qcd
action
fermion
PauliVillarsInverters.h
Generated by
1.16.1