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 gand 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 <: GroupReturns $g(1+s\gamma_N)a$
LatticeGPU.Spinors.gdagpmul — Functiongdagpmul(Pgamma{N,S}, g::G, a::Spinor) G <: GroupReturns $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))