mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
New submodule dirac
This commit is contained in:
parent
b5c9738d52
commit
e7efa822b0
4 changed files with 65 additions and 61 deletions
|
@ -1,5 +1,6 @@
|
||||||
from .pyerrors import *
|
from .pyerrors import *
|
||||||
from . import correlators
|
from . import correlators
|
||||||
|
from . import dirac
|
||||||
from . import fits
|
from . import fits
|
||||||
from . import linalg
|
from . import linalg
|
||||||
from . import misc
|
from . import misc
|
||||||
|
|
61
pyerrors/dirac.py
Normal file
61
pyerrors/dirac.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
gammaX = np.array(
|
||||||
|
[[0, 0, 0, 1j], [0, 0, 1j, 0], [0, -1j, 0, 0], [-1j, 0, 0, 0]],
|
||||||
|
dtype=complex)
|
||||||
|
gammaY = np.array(
|
||||||
|
[[0, 0, 0, -1], [0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0]],
|
||||||
|
dtype=complex)
|
||||||
|
gammaZ = np.array(
|
||||||
|
[[0, 0, 1j, 0], [0, 0, 0, -1j], [-1j, 0, 0, 0], [0, 1j, 0, 0]],
|
||||||
|
dtype=complex)
|
||||||
|
gammaT = np.array(
|
||||||
|
[[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]],
|
||||||
|
dtype=complex)
|
||||||
|
gamma = np.array([gammaX, gammaY, gammaZ, gammaT])
|
||||||
|
gamma5 = np.array(
|
||||||
|
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
||||||
|
dtype=complex)
|
||||||
|
identity = np.array(
|
||||||
|
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]],
|
||||||
|
dtype=complex)
|
||||||
|
|
||||||
|
|
||||||
|
def Grid_gamma(gamma_tag):
|
||||||
|
"""Returns gamma matrix in Grid labeling."""
|
||||||
|
if gamma_tag == 'Identity':
|
||||||
|
g = identity
|
||||||
|
elif gamma_tag == 'Gamma5':
|
||||||
|
g = gamma5
|
||||||
|
elif gamma_tag == 'GammaX':
|
||||||
|
g = gamma[0]
|
||||||
|
elif gamma_tag == 'GammaY':
|
||||||
|
g = gamma[1]
|
||||||
|
elif gamma_tag == 'GammaZ':
|
||||||
|
g = gamma[2]
|
||||||
|
elif gamma_tag == 'GammaT':
|
||||||
|
g = gamma[3]
|
||||||
|
elif gamma_tag == 'GammaXGamma5':
|
||||||
|
g = gamma[0] @ gamma5
|
||||||
|
elif gamma_tag == 'GammaYGamma5':
|
||||||
|
g = gamma[1] @ gamma5
|
||||||
|
elif gamma_tag == 'GammaZGamma5':
|
||||||
|
g = gamma[2] @ gamma5
|
||||||
|
elif gamma_tag == 'GammaTGamma5':
|
||||||
|
g = gamma[3] @ gamma5
|
||||||
|
elif gamma_tag == 'SigmaXT':
|
||||||
|
g = 0.5 * (gamma[0] @ gamma[3] - gamma[3] @ gamma[0])
|
||||||
|
elif gamma_tag == 'SigmaXY':
|
||||||
|
g = 0.5 * (gamma[0] @ gamma[1] - gamma[1] @ gamma[0])
|
||||||
|
elif gamma_tag == 'SigmaXZ':
|
||||||
|
g = 0.5 * (gamma[0] @ gamma[2] - gamma[2] @ gamma[0])
|
||||||
|
elif gamma_tag == 'SigmaYT':
|
||||||
|
g = 0.5 * (gamma[1] @ gamma[3] - gamma[3] @ gamma[1])
|
||||||
|
elif gamma_tag == 'SigmaYZ':
|
||||||
|
g = 0.5 * (gamma[1] @ gamma[2] - gamma[2] @ gamma[1])
|
||||||
|
elif gamma_tag == 'SigmaZT':
|
||||||
|
g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2])
|
||||||
|
else:
|
||||||
|
raise Exception('Unkown gamma structure', gamma_tag)
|
||||||
|
return g
|
|
@ -2,70 +2,12 @@ import warnings
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import autograd.numpy as anp
|
import autograd.numpy as anp
|
||||||
from .linalg import mat_mat_op
|
from .linalg import mat_mat_op
|
||||||
|
from .dirac import gamma, gamma5
|
||||||
|
|
||||||
|
|
||||||
L = None
|
L = None
|
||||||
T = None
|
T = None
|
||||||
|
|
||||||
gammaX = np.array(
|
|
||||||
[[0, 0, 0, 1j], [0, 0, 1j, 0], [0, -1j, 0, 0], [-1j, 0, 0, 0]],
|
|
||||||
dtype=complex)
|
|
||||||
gammaY = np.array(
|
|
||||||
[[0, 0, 0, -1], [0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0]],
|
|
||||||
dtype=complex)
|
|
||||||
gammaZ = np.array(
|
|
||||||
[[0, 0, 1j, 0], [0, 0, 0, -1j], [-1j, 0, 0, 0], [0, 1j, 0, 0]],
|
|
||||||
dtype=complex)
|
|
||||||
gammaT = np.array(
|
|
||||||
[[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]],
|
|
||||||
dtype=complex)
|
|
||||||
gamma = np.array([gammaX, gammaY, gammaZ, gammaT])
|
|
||||||
gamma5 = np.array(
|
|
||||||
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
|
||||||
dtype=complex)
|
|
||||||
identity = np.array(
|
|
||||||
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]],
|
|
||||||
dtype=complex)
|
|
||||||
|
|
||||||
|
|
||||||
def Grid_gamma(gamma_tag):
|
|
||||||
"""Returns gamma matrix in Grid labeling."""
|
|
||||||
if gamma_tag == 'Identity':
|
|
||||||
g = identity
|
|
||||||
elif gamma_tag == 'Gamma5':
|
|
||||||
g = gamma5
|
|
||||||
elif gamma_tag == 'GammaX':
|
|
||||||
g = gamma[0]
|
|
||||||
elif gamma_tag == 'GammaY':
|
|
||||||
g = gamma[1]
|
|
||||||
elif gamma_tag == 'GammaZ':
|
|
||||||
g = gamma[2]
|
|
||||||
elif gamma_tag == 'GammaT':
|
|
||||||
g = gamma[3]
|
|
||||||
elif gamma_tag == 'GammaXGamma5':
|
|
||||||
g = gamma[0] @ gamma5
|
|
||||||
elif gamma_tag == 'GammaYGamma5':
|
|
||||||
g = gamma[1] @ gamma5
|
|
||||||
elif gamma_tag == 'GammaZGamma5':
|
|
||||||
g = gamma[2] @ gamma5
|
|
||||||
elif gamma_tag == 'GammaTGamma5':
|
|
||||||
g = gamma[3] @ gamma5
|
|
||||||
elif gamma_tag == 'SigmaXT':
|
|
||||||
g = 0.5 * (gamma[0] @ gamma[3] - gamma[3] @ gamma[0])
|
|
||||||
elif gamma_tag == 'SigmaXY':
|
|
||||||
g = 0.5 * (gamma[0] @ gamma[1] - gamma[1] @ gamma[0])
|
|
||||||
elif gamma_tag == 'SigmaXZ':
|
|
||||||
g = 0.5 * (gamma[0] @ gamma[2] - gamma[2] @ gamma[0])
|
|
||||||
elif gamma_tag == 'SigmaYT':
|
|
||||||
g = 0.5 * (gamma[1] @ gamma[3] - gamma[3] @ gamma[1])
|
|
||||||
elif gamma_tag == 'SigmaYZ':
|
|
||||||
g = 0.5 * (gamma[1] @ gamma[2] - gamma[2] @ gamma[1])
|
|
||||||
elif gamma_tag == 'SigmaZT':
|
|
||||||
g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2])
|
|
||||||
else:
|
|
||||||
raise Exception('Unkown gamma structure', gamma_tag)
|
|
||||||
return g
|
|
||||||
|
|
||||||
|
|
||||||
class Npr_matrix(np.ndarray):
|
class Npr_matrix(np.ndarray):
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ np.random.seed(0)
|
||||||
|
|
||||||
|
|
||||||
def test_gamma_matrices():
|
def test_gamma_matrices():
|
||||||
for matrix in pe.npr.gamma:
|
for matrix in pe.dirac.gamma:
|
||||||
assert np.allclose(matrix @ matrix, np.identity(4))
|
assert np.allclose(matrix @ matrix, np.identity(4))
|
||||||
assert np.allclose(matrix, matrix.T.conj())
|
assert np.allclose(matrix, matrix.T.conj())
|
||||||
assert np.allclose(pe.npr.gamma5, pe.npr.gamma[0] @ pe.npr.gamma[1] @ pe.npr.gamma[2] @ pe.npr.gamma[3])
|
assert np.allclose(pe.dirac.gamma5, pe.dirac.gamma[0] @ pe.dirac.gamma[1] @ pe.dirac.gamma[2] @ pe.dirac.gamma[3])
|
Loading…
Add table
Add a link
Reference in a new issue