summaryrefslogtreecommitdiff
path: root/test/test_null.py
blob: c556c560b438e0084c67a821e415fb6190b6c6fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os
from unittest import TestCase

import numpy as np
from   numpy.testing import assert_allclose, assert_equal

from scipy.integrate import cumulative_trapezoid

from math_utils.array_utils import array_reflect as ar
from nr_analysis_axi import null, invars

class TestNull(TestCase):

    def setUp(self):
        datafile = os.path.splitext(__file__)[0] + '.npz'

        self.data = np.load(datafile)
        self.t   = ar(self.data['t'], -1)
        self.x   = ar(self.data['x'], -1)
        self.gxx = ar(ar(self.data['gxx'], axis = 1), axis = 0)
        self.gtt = ar(ar(self.data['gtt'], axis = 1), axis = 0)

    def test_null_geodesics(self):
        g = null.null_geodesics(self.t, self.x, self.gxx, self.gtt, integrate_times = [0.1])[0]

        l = self.data['l']

        assert_allclose(g(l), self.data['g'], 1e-12)

    def test_coord_similarity(self):
        lapse_origin = np.sqrt(-self.data['gtt'][:, 0])
        tau          = ar(cumulative_trapezoid(lapse_origin, self.data['t'], initial = 0.0), -1)
        T_null       = -np.log(5.4 - tau)

        g = null.null_geodesics(self.t, self.x, self.gxx, self.gtt)

        lambda_max = 0.01
        ret = null.coord_similarity(self.t, self.x, T_null, None, None, g = g,
                                    lambda_max = lambda_max, lambda_points = 32)

        # returned T_null should be the same as source in this case
        assert_equal(ret[0], T_null)

        # lambdas are from 0 - lambda_max
        assert_allclose(ret[1][0],         0.0, 1e-12)
        assert_allclose(ret[1][-1], lambda_max, 1e-12)
        # lambdas are equidistant
        assert_allclose(ret[1][1:] - ret[1][:-1], ret[1][1], 1e-12)

        assert_allclose(ret[2][:-10], self.data['x_of_Tnull_lambda'], 1e-12)
        assert_allclose(ret[3][:-10], self.data['t_of_Tnull_lambda'], 1e-12)