Spinors
The module Spinors defines the necessary functions for the structure Spinor{NS,G}
, which is a NS-tuple with values in G.
The functions norm
, norm2
, dot
, *
, /
, /
, +
, -
, imm
and mimm
, if defined for G, are extended to Spinor{NS,G} for general NS.
For the 4d case where NS = 4 there are some specific functions to implement different operations with the gamma matrices. The convention for these matrices is
\[\gamma _4 = \left( \begin{array}{cccc} 0 & 0 & -1 & 0\\ 0 & 0 & 0 & -1\\ -1 & 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ \end{array} \right) \quad \gamma_1 = \left( \begin{array}{cccc} 0 & 0 & 0 & -i\\ 0 & 0 & -i & 0\\ 0 & i & 0 & 0\\ i & 0 & 0 & 0\\ \end{array} \right)\]
\[ \gamma _2 = \left( \begin{array}{cccc} 0 & 0 & 0 & -1\\ 0 & 0 & 1 & 0\\ 0 & 1 & 0 & 0\\ -1 & 0 & 0 & 0\\ \end{array} \right) \quad \gamma_3 = \left( \begin{array}{cccc} 0 & 0 & -i & 0\\ 0 & 0 & 0 & i\\ i & 0 & 0 & 0\\ 0 & -i & 0 & 0\\ \end{array} \right)\]
The function dmul
implements the multiplication over the $\gamma$ matrices
LatticeGPU.Spinors.dmul
— Functiondmul(Gamma{n}, a::Spinor)
Returns $\gamma_n a$
indexing for Dirac basis $\gamma_n$:
1 gamma1; 2 gamma2; 3 gamma3; 4 gamma0; 5 gamma5; 6 gamma1 gamma5; 7 gamma2 gamma5; 8 gamma3 gamma5; 9 gamma0 gamma5; 10 sigma01; 11 sigma02; 12 sigma03; 13 sigma21; 14 sigma32; 15 sigma31; 16 identity;
The function pmul
implements the $ (1 \pm \gamma_N) $ proyectors. The functions gpmul
and gdagpmul
do the same and then multiply each element by g
and g^-1 repectively.
LatticeGPU.Spinors.pmul
— Functionpmul(Pgamma{N,S}, a::Spinor)
Returns $(1+s\gamma_N)a$.
LatticeGPU.Spinors.gpmul
— Functiongpmul(Pgamma{N,S}, g::G, a::Spinor) G <: Group
Returns $g(1+s\gamma_N)a$
LatticeGPU.Spinors.gdagpmul
— Functiongdagpmul(Pgamma{N,S}, g::G, a::Spinor) G <: Group
Returns $g^+ (1+s\gamma_N)a$
Some examples
Here we just display some examples for these functions. We display it with ComplexF64
instead of SU3fund
or SU2fund
for simplicity.
julia> spin = Spinor{4,Complex{Float64}}((1.0,im*0.5,2.3,0.0))
Spinor{4, ComplexF64}((1.0 + 0.0im, 0.0 + 0.5im, 2.3 + 0.0im, 0.0 + 0.0im))
julia> println(spin)
Spinor{4, ComplexF64}((1.0 + 0.0im, 0.0 + 0.5im, 2.3 + 0.0im, 0.0 + 0.0im))
julia> println(dmul(Gamma{4},spin))
Spinor{4, ComplexF64}((-2.3 - 0.0im, -0.0 - 0.0im, -1.0 - 0.0im, -0.0 - 0.5im))
julia> println(pmul(Pgamma{2,-1},spin))
Spinor{4, ComplexF64}((1.0 + 0.0im, -2.3 + 0.5im, 2.3 - 0.5im, 1.0 + 0.0im))