latticegpu.jl/docs/src/solvers.md
Fernando P. Panadero ed9d18b25d Solvers documentation
2023-11-30 12:18:11 +01:00

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