pyerrors.dirac
1import numpy as np 2 3gammaX = np.array( 4 [[0, 0, 0, 1j], [0, 0, 1j, 0], [0, -1j, 0, 0], [-1j, 0, 0, 0]], 5 dtype=complex) 6gammaY = np.array( 7 [[0, 0, 0, -1], [0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0]], 8 dtype=complex) 9gammaZ = np.array( 10 [[0, 0, 1j, 0], [0, 0, 0, -1j], [-1j, 0, 0, 0], [0, 1j, 0, 0]], 11 dtype=complex) 12gammaT = np.array( 13 [[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]], 14 dtype=complex) 15gamma = np.array([gammaX, gammaY, gammaZ, gammaT]) 16gamma5 = np.array( 17 [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, -1]], 18 dtype=complex) 19identity = np.array( 20 [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], 21 dtype=complex) 22 23 24def epsilon_tensor(i, j, k): 25 """Rank-3 epsilon tensor 26 27 Based on https://codegolf.stackexchange.com/a/160375 28 29 Returns 30 ------- 31 elem : int 32 Element (i,j,k) of the epsilon tensor of rank 3 33 """ 34 test_set = set((i, j, k)) 35 if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))): 36 raise ValueError("Unexpected input", i, j, k) 37 38 return (i - j) * (j - k) * (k - i) / 2 39 40 41def epsilon_tensor_rank4(i, j, k, o): 42 """Rank-4 epsilon tensor 43 44 Extension of https://codegolf.stackexchange.com/a/160375 45 46 47 Returns 48 ------- 49 elem : int 50 Element (i,j,k,o) of the epsilon tensor of rank 4 51 """ 52 test_set = set((i, j, k, o)) 53 if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))): 54 raise ValueError("Unexpected input", i, j, k, o) 55 56 return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12 57 58 59def Grid_gamma(gamma_tag): 60 """Returns gamma matrix in Grid labeling.""" 61 if gamma_tag == 'Identity': 62 g = identity 63 elif gamma_tag == 'Gamma5': 64 g = gamma5 65 elif gamma_tag == 'GammaX': 66 g = gamma[0] 67 elif gamma_tag == 'GammaY': 68 g = gamma[1] 69 elif gamma_tag == 'GammaZ': 70 g = gamma[2] 71 elif gamma_tag == 'GammaT': 72 g = gamma[3] 73 elif gamma_tag == 'GammaXGamma5': 74 g = gamma[0] @ gamma5 75 elif gamma_tag == 'GammaYGamma5': 76 g = gamma[1] @ gamma5 77 elif gamma_tag == 'GammaZGamma5': 78 g = gamma[2] @ gamma5 79 elif gamma_tag == 'GammaTGamma5': 80 g = gamma[3] @ gamma5 81 elif gamma_tag == 'SigmaXT': 82 g = 0.5 * (gamma[0] @ gamma[3] - gamma[3] @ gamma[0]) 83 elif gamma_tag == 'SigmaXY': 84 g = 0.5 * (gamma[0] @ gamma[1] - gamma[1] @ gamma[0]) 85 elif gamma_tag == 'SigmaXZ': 86 g = 0.5 * (gamma[0] @ gamma[2] - gamma[2] @ gamma[0]) 87 elif gamma_tag == 'SigmaYT': 88 g = 0.5 * (gamma[1] @ gamma[3] - gamma[3] @ gamma[1]) 89 elif gamma_tag == 'SigmaYZ': 90 g = 0.5 * (gamma[1] @ gamma[2] - gamma[2] @ gamma[1]) 91 elif gamma_tag == 'SigmaZT': 92 g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2]) 93 else: 94 raise ValueError('Unkown gamma structure', gamma_tag) 95 return g
gammaX =
array([[ 0.+0.j, 0.+0.j, 0.+0.j, 0.+1.j],
[ 0.+0.j, 0.+0.j, 0.+1.j, 0.+0.j],
[ 0.+0.j, -0.-1.j, 0.+0.j, 0.+0.j],
[-0.-1.j, 0.+0.j, 0.+0.j, 0.+0.j]])
gammaY =
array([[ 0.+0.j, 0.+0.j, 0.+0.j, -1.+0.j],
[ 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
[-1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j]])
gammaZ =
array([[ 0.+0.j, 0.+0.j, 0.+1.j, 0.+0.j],
[ 0.+0.j, 0.+0.j, 0.+0.j, -0.-1.j],
[-0.-1.j, 0.+0.j, 0.+0.j, 0.+0.j],
[ 0.+0.j, 0.+1.j, 0.+0.j, 0.+0.j]])
gammaT =
array([[0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]])
gamma =
array([[[ 0.+0.j, 0.+0.j, 0.+0.j, 0.+1.j],
[ 0.+0.j, 0.+0.j, 0.+1.j, 0.+0.j],
[ 0.+0.j, -0.-1.j, 0.+0.j, 0.+0.j],
[-0.-1.j, 0.+0.j, 0.+0.j, 0.+0.j]],
[[ 0.+0.j, 0.+0.j, 0.+0.j, -1.+0.j],
[ 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
[-1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j]],
[[ 0.+0.j, 0.+0.j, 0.+1.j, 0.+0.j],
[ 0.+0.j, 0.+0.j, 0.+0.j, -0.-1.j],
[-0.-1.j, 0.+0.j, 0.+0.j, 0.+0.j],
[ 0.+0.j, 0.+1.j, 0.+0.j, 0.+0.j]],
[[ 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[ 0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
[ 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]]])
gamma5 =
array([[ 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
[ 0.+0.j, 0.+0.j, -1.+0.j, 0.+0.j],
[ 0.+0.j, 0.+0.j, 0.+0.j, -1.+0.j]])
identity =
array([[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j]])
def
epsilon_tensor(i, j, k):
25def epsilon_tensor(i, j, k): 26 """Rank-3 epsilon tensor 27 28 Based on https://codegolf.stackexchange.com/a/160375 29 30 Returns 31 ------- 32 elem : int 33 Element (i,j,k) of the epsilon tensor of rank 3 34 """ 35 test_set = set((i, j, k)) 36 if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))): 37 raise ValueError("Unexpected input", i, j, k) 38 39 return (i - j) * (j - k) * (k - i) / 2
Rank-3 epsilon tensor
Based on https://codegolf.stackexchange.com/a/160375
Returns
- elem (int): Element (i,j,k) of the epsilon tensor of rank 3
def
epsilon_tensor_rank4(i, j, k, o):
42def epsilon_tensor_rank4(i, j, k, o): 43 """Rank-4 epsilon tensor 44 45 Extension of https://codegolf.stackexchange.com/a/160375 46 47 48 Returns 49 ------- 50 elem : int 51 Element (i,j,k,o) of the epsilon tensor of rank 4 52 """ 53 test_set = set((i, j, k, o)) 54 if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))): 55 raise ValueError("Unexpected input", i, j, k, o) 56 57 return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12
Rank-4 epsilon tensor
Extension of https://codegolf.stackexchange.com/a/160375
Returns
- elem (int): Element (i,j,k,o) of the epsilon tensor of rank 4
def
Grid_gamma(gamma_tag):
60def Grid_gamma(gamma_tag): 61 """Returns gamma matrix in Grid labeling.""" 62 if gamma_tag == 'Identity': 63 g = identity 64 elif gamma_tag == 'Gamma5': 65 g = gamma5 66 elif gamma_tag == 'GammaX': 67 g = gamma[0] 68 elif gamma_tag == 'GammaY': 69 g = gamma[1] 70 elif gamma_tag == 'GammaZ': 71 g = gamma[2] 72 elif gamma_tag == 'GammaT': 73 g = gamma[3] 74 elif gamma_tag == 'GammaXGamma5': 75 g = gamma[0] @ gamma5 76 elif gamma_tag == 'GammaYGamma5': 77 g = gamma[1] @ gamma5 78 elif gamma_tag == 'GammaZGamma5': 79 g = gamma[2] @ gamma5 80 elif gamma_tag == 'GammaTGamma5': 81 g = gamma[3] @ gamma5 82 elif gamma_tag == 'SigmaXT': 83 g = 0.5 * (gamma[0] @ gamma[3] - gamma[3] @ gamma[0]) 84 elif gamma_tag == 'SigmaXY': 85 g = 0.5 * (gamma[0] @ gamma[1] - gamma[1] @ gamma[0]) 86 elif gamma_tag == 'SigmaXZ': 87 g = 0.5 * (gamma[0] @ gamma[2] - gamma[2] @ gamma[0]) 88 elif gamma_tag == 'SigmaYT': 89 g = 0.5 * (gamma[1] @ gamma[3] - gamma[3] @ gamma[1]) 90 elif gamma_tag == 'SigmaYZ': 91 g = 0.5 * (gamma[1] @ gamma[2] - gamma[2] @ gamma[1]) 92 elif gamma_tag == 'SigmaZT': 93 g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2]) 94 else: 95 raise ValueError('Unkown gamma structure', gamma_tag) 96 return g
Returns gamma matrix in Grid labeling.