Solvers documentation

This commit is contained in:
Fernando P. Panadero 2023-11-30 12:18:11 +01:00
parent d997df20d4
commit ed9d18b25d
2 changed files with 87 additions and 0 deletions

View file

@ -11,5 +11,6 @@ makedocs(sitename="LatticeGPU", modules=[LatticeGPU], doctest=true,
"Groups and algebras" => "groups.md", "Groups and algebras" => "groups.md",
"Fields" => "fields.md" "Fields" => "fields.md"
"Dirac" => "dirac.md" "Dirac" => "dirac.md"
"Solvers" => "solvers.md"
], ],
repo = "https://igit.ific.uv.es/alramos/latticegpu.jl") repo = "https://igit.ific.uv.es/alramos/latticegpu.jl")

86
docs/src/solvers.md Normal file
View file

@ -0,0 +1,86 @@
# 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!`](@ref) implements the Conjugate gradient
algorith for the operator A
```@docs
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.
```@docs
propagator!
```
Internally, this function solves the equation
```math
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!`](@ref) function is used.
For the case of SF boundary conditions, we have the boundary-to-bulk
propagator, implemented by the function [`bndpropagator!`](@ref)
```@docs
bndpropagator!
```
This propagator is defined by the equation:
```math
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!`](@ref)
```@docs
Tbndpropagator!
```
defined by the equation:
```math
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
```math
- \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`](@ref)
```@docs
bndtobnd
```