1.9 KiB
Solvers
The module Solvers
contains the functions to invert the Dirac
operator as well as functions to obtain specific propagators.
CG.jl
The function CG!
implements the Conjugate gradient
algorith for the operator A
CG!
where the tolerance is normalized with respect to $$|$$si
|^2
.
The operator A must have the same input structure as all the Dirac
operators. If the maximum number of iterations maxiter
is reached,
the function will throw an error. The estimation for A^{-1}x
is
stored in si
, and the number of iterations is returned.
Note that all the fermion field in dws
are used
inside the function and will be modified. In particular, the final residue
is given by $$|$$dws.sr
|^2
.
Propagators.jl
In this file, we define a couple of useful functions to obtain certain propagators.
propagator!
Internally, this function solves the equation
D_w^\dagger D_w \psi = \gamma_5 D_w \gamma_5 \eta
where \eta
is either a point-source with the specified color and spin
or a random source in a time-slice and stores the value in pro
.
To solve this equation, the CG!
function is used.
For the case of SF boundary conditions, we have the boundary-to-bulk
propagator, implemented by the function bndpropagator!
bndpropagator!
This propagator is defined by the equation:
D_W S(x) = \frac{c_t}{\sqrt{V}} \delta_{x_0,1} U_0^\dagger(0,\vec{x}) P_+
The analog for the other boundary is implemented in the function Tbndpropagator!
Tbndpropagator!
defined by the equation:
D_W R(x) = \frac{c_t}{\sqrt{V}} \delta_{x_0,T-1} U_0(T-1,\vec{x}) P_-
Where P_\pm = (1 \pm \gamma_0)/2
. The boundary-to-boundary
propagator
- \frac{c_t}{\sqrt{V}} \sum_\vec{x} U_0 ^\dagger (T-1,\vec{x}) P_+ S(T-1,\vec{x})
is computed by the function bndtobnd
bndtobnd