Exemplo n.º 1
0
 def f_vec(self, ld, vec):
     chl = kerrnewman_utils.christoffels(vec[1], vec[2], self.M.value,
                                         self.a.value, self.Q.value)
     maxwell = kerrnewman_utils.maxwell_tensor_contravariant(
         vec[1], vec[2], self.a.value, self.Q.value, self.M.value)
     metric = kerrnewman_utils.metric(vec[1], vec[2], self.M.value,
                                      self.a.value, self.Q.value)
     vals = np.zeros(shape=(8, ), dtype=float)
     for i in range(4):
         vals[i] = vec[i + 4]
     vals[4] = -2.0 * (
         chl[0][0][1] * vec[4] * vec[5] + chl[0][0][2] * vec[4] * vec[6] +
         chl[0][1][3] * vec[5] * vec[7] + chl[0][2][3] * vec[6] * vec[7])
     vals[5] = -1.0 * (chl[1][0][0] * vec[4] * vec[4] + 2 * chl[1][0][3] *
                       vec[4] * vec[7] + chl[1][1][1] * vec[5] * vec[5] +
                       2 * chl[1][1][2] * vec[5] * vec[6] + chl[1][2][2] *
                       vec[6] * vec[6] + chl[1][3][3] * vec[7] * vec[7])
     vals[6] = -1.0 * (chl[2][0][0] * vec[4] * vec[4] + 2 * chl[2][0][3] *
                       vec[4] * vec[7] + chl[2][1][1] * vec[5] * vec[5] +
                       2 * chl[2][1][2] * vec[5] * vec[6] + chl[2][2][2] *
                       vec[6] * vec[6] + chl[2][3][3] * vec[7] * vec[7])
     vals[7] = -2.0 * (
         chl[3][0][1] * vec[4] * vec[5] + chl[3][0][2] * vec[4] * vec[6] +
         chl[3][1][3] * vec[5] * vec[7] + chl[3][2][3] * vec[6] * vec[7])
     vals[4:] -= self.q.value * np.dot(vec[4:].reshape(
         (4, )), np.matmul(metric, maxwell))
     return vals
Exemplo n.º 2
0
def test_maxwell_tensor_contravariant_for_natural_units(M, r, theta, Q, a):
    # Theoritical background required to write extensive test. Right now only skew-symettric property is being checked.
    m = kerrnewman_utils.maxwell_tensor_contravariant(1.0, 1.0, 1.0, r, theta,
                                                      a, Q, M)
    for t in range(16):
        i = int(t / 4) % 4
        j = t % 4
        assert_allclose(0, m[i, j] + m[j, i], rtol=0.0, atol=1e-10)
Exemplo n.º 3
0
def test_maxwell_tensor_contravariant_for_natural_units():
    #  Theoretical background is required to write extensive tests. Right now only skew-symmetric property is being checked.
    M = 1e22
    r = 5.5
    theta = 2 * np.pi / 5
    Q = 45.0
    a = 0.7
    m = kerrnewman_utils.maxwell_tensor_contravariant(r, theta, a, Q, M, 1.0, 1.0, 1.0)
    for t in range(16):
        i = int(t / 4) % 4
        j = t % 4
        assert_allclose(0, m[i, j] + m[j, i], rtol=0.0, atol=1e-10)