mirror of
https://igit.ific.uv.es/alramos/latticegpu.jl.git
synced 2025-05-14 19:23:42 +02:00
86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
|
|
# 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
|
|
```
|