mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
gamma matrices restructured
This commit is contained in:
parent
34ed2588aa
commit
493f2c0adb
1 changed files with 28 additions and 26 deletions
|
@ -1,65 +1,66 @@
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
_gamma = ['gammas', 0, 0, 0, 0, 0]
|
gamma = [0, 0, 0, 0]
|
||||||
_gamma[1] = np.array(
|
gamma[0] = np.array(
|
||||||
[[0, 0, 0, 1j], [0, 0, 1j, 0], [0, -1j, 0, 0], [-1j, 0, 0, 0]],
|
[[0, 0, 0, 1j], [0, 0, 1j, 0], [0, -1j, 0, 0], [-1j, 0, 0, 0]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
_gamma[2] = np.array(
|
gamma[1] = np.array(
|
||||||
[[0, 0, 0, -1], [0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0]],
|
[[0, 0, 0, -1], [0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
_gamma[3] = np.array(
|
gamma[2] = np.array(
|
||||||
[[0, 0, 1j, 0], [0, 0, 0, -1j], [-1j, 0, 0, 0], [0, 1j, 0, 0]],
|
[[0, 0, 1j, 0], [0, 0, 0, -1j], [-1j, 0, 0, 0], [0, 1j, 0, 0]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
_gamma[4] = np.array(
|
gamma[3] = np.array(
|
||||||
[[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]],
|
[[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
_gamma[5] = np.array(
|
gamma5 = np.array(
|
||||||
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
_imat = np.array(
|
imat = np.array(
|
||||||
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]],
|
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]],
|
||||||
dtype=complex)
|
dtype=complex)
|
||||||
|
|
||||||
|
|
||||||
def gamma_matrix(gamma_tag):
|
def Grid_gamma(gamma_tag):
|
||||||
"""Returns gamma matrix in Grid labeling."""
|
"""Returns gamma matrix in Grid labeling."""
|
||||||
if gamma_tag == 'Identity':
|
if gamma_tag == 'Identity':
|
||||||
g = _imat
|
g = imat
|
||||||
elif gamma_tag == 'Gamma5':
|
elif gamma_tag == 'Gamma5':
|
||||||
g = _gamma[5]
|
g = gamma5
|
||||||
elif gamma_tag == 'GammaX':
|
elif gamma_tag == 'GammaX':
|
||||||
g = _gamma[1]
|
g = gamma[0]
|
||||||
elif gamma_tag == 'GammaY':
|
elif gamma_tag == 'GammaY':
|
||||||
g = _gamma[2]
|
g = gamma[1]
|
||||||
elif gamma_tag == 'GammaZ':
|
elif gamma_tag == 'GammaZ':
|
||||||
g = _gamma[3]
|
g = gamma[2]
|
||||||
elif gamma_tag == 'GammaT':
|
elif gamma_tag == 'GammaT':
|
||||||
g = _gamma[4]
|
g = gamma[3]
|
||||||
elif gamma_tag == 'GammaXGamma5':
|
elif gamma_tag == 'GammaXGamma5':
|
||||||
g = _gamma[1] @ _gamma[5]
|
g = gamma[0] @ gamma5
|
||||||
elif gamma_tag == 'GammaYGamma5':
|
elif gamma_tag == 'GammaYGamma5':
|
||||||
g = _gamma[2] @ _gamma[5]
|
g = gamma[1] @ gamma5
|
||||||
elif gamma_tag == 'GammaZGamma5':
|
elif gamma_tag == 'GammaZGamma5':
|
||||||
g = _gamma[3] @ _gamma[5]
|
g = gamma[2] @ gamma5
|
||||||
elif gamma_tag == 'GammaTGamma5':
|
elif gamma_tag == 'GammaTGamma5':
|
||||||
g = _gamma[4] @ _gamma[5]
|
g = gamma[3] @ gamma5
|
||||||
elif gamma_tag == 'SigmaXT':
|
elif gamma_tag == 'SigmaXT':
|
||||||
g = 0.5 * (_gamma[1] @ _gamma[4] - _gamma[4] @ _gamma[1])
|
g = 0.5 * (gamma[0] @ gamma[3] - gamma[3] @ gamma[0])
|
||||||
elif gamma_tag == 'SigmaXY':
|
elif gamma_tag == 'SigmaXY':
|
||||||
g = 0.5 * (_gamma[1] @ _gamma[2] - _gamma[2] @ _gamma[1])
|
g = 0.5 * (gamma[0] @ gamma[1] - gamma[1] @ gamma[0])
|
||||||
elif gamma_tag == 'SigmaXZ':
|
elif gamma_tag == 'SigmaXZ':
|
||||||
g = 0.5 * (_gamma[1] @ _gamma[3] - _gamma[3] @ _gamma[1])
|
g = 0.5 * (gamma[0] @ gamma[2] - gamma[2] @ gamma[0])
|
||||||
elif gamma_tag == 'SigmaYT':
|
elif gamma_tag == 'SigmaYT':
|
||||||
g = 0.5 * (_gamma[2] @ _gamma[4] - _gamma[4] @ _gamma[2])
|
g = 0.5 * (gamma[1] @ gamma[3] - gamma[3] @ gamma[1])
|
||||||
elif gamma_tag == 'SigmaYZ':
|
elif gamma_tag == 'SigmaYZ':
|
||||||
g = 0.5 * (_gamma[2] @ _gamma[3] - _gamma[3] @ _gamma[2])
|
g = 0.5 * (gamma[1] @ gamma[2] - gamma[2] @ gamma[1])
|
||||||
elif gamma_tag == 'SigmaZT':
|
elif gamma_tag == 'SigmaZT':
|
||||||
g = 0.5 * (_gamma[3] @ _gamma[4] - _gamma[4] @ _gamma[3])
|
g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2])
|
||||||
else:
|
else:
|
||||||
raise Exception('Unkown gamma structure', gamma_tag)
|
raise Exception('Unkown gamma structure', gamma_tag)
|
||||||
return g
|
return g
|
||||||
|
|
||||||
|
|
||||||
class Npr_matrix(np.ndarray):
|
class Npr_matrix(np.ndarray):
|
||||||
|
|
||||||
g5 = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
g5 = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]],
|
||||||
|
@ -90,7 +91,7 @@ class Npr_matrix(np.ndarray):
|
||||||
s_mom = getattr(self, name, None)
|
s_mom = getattr(self, name, None)
|
||||||
o_mom = getattr(other, name, None)
|
o_mom = getattr(other, name, None)
|
||||||
if s_mom != o_mom and s_mom and o_mom:
|
if s_mom != o_mom and s_mom and o_mom:
|
||||||
raise Exception(name + ' does not match.')
|
raise Exception(name + ' does not match.')
|
||||||
return o_mom if o_mom else s_mom
|
return o_mom if o_mom else s_mom
|
||||||
|
|
||||||
def __matmul__(self, other):
|
def __matmul__(self, other):
|
||||||
|
@ -100,6 +101,7 @@ class Npr_matrix(np.ndarray):
|
||||||
self._propagate_mom(other, 'mom_out'))
|
self._propagate_mom(other, 'mom_out'))
|
||||||
|
|
||||||
def __array_finalize__(self, obj):
|
def __array_finalize__(self, obj):
|
||||||
if obj is None: return
|
if obj is None:
|
||||||
|
return
|
||||||
self.mom_in = getattr(obj, 'mom_in', None)
|
self.mom_in = getattr(obj, 'mom_in', None)
|
||||||
self.mom_out = getattr(obj, 'mom_out', None)
|
self.mom_out = getattr(obj, 'mom_out', None)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue