예제 #1
0
    def test_empty(self):

        speeds = num.zeros((0, 0))
        times = num.zeros((0, 0))
        delta = 1.0

        with self.assertRaises(eikonal_ext.EikonalExtError):
            eikonal_ext.eikonal_solver_fmm_cartesian(speeds, times, delta)
예제 #2
0
    def test_empty(self):

        speeds = num.zeros((0, 0))
        times = num.zeros((0, 0))
        delta = 1.0

        with self.assertRaises(eikonal_ext.EikonalExtError):
            eikonal_ext.eikonal_solver_fmm_cartesian(speeds, times, delta)
예제 #3
0
    def test_nd(self):
        ndim_max = 3
        n = 51
        for ndim in range(1, ndim_max + 2):
            shape = (n, ) * ndim
            speeds = num.ones(shape)
            times = num.zeros(shape) - 1.0
            delta = 2.0 / (n - 1)

            iseed = tuple(i // 2 for i in shape)
            times[iseed] = 0.0

            if ndim <= ndim_max:

                @benchmark.labeled('test_nd: %iD' % ndim)
                def run():
                    eikonal_ext.eikonal_solver_fmm_cartesian(
                        speeds, times, delta)

                run()

                fshapes = []
                for idim in range(ndim):
                    fshape = [1] * ndim
                    fshape[idim] = n
                    fshapes.append(tuple(fshape))

                xs = [
                    num.linspace(-1.0, 1.0, n).reshape(fshape)
                    for fshape in fshapes
                ]

                times_ref = num.sqrt(sum(x**2 for x in xs))
                assert num.max(num.abs(times-times_ref)) \
                    < 1e6 + (ndim-1) * delta

            else:
                with self.assertRaises(eikonal_ext.EikonalExtError):
                    eikonal_ext.eikonal_solver_fmm_cartesian(
                        speeds, times, delta)
예제 #4
0
    def test_nd(self):
        ndim_max = 3
        n = 51
        for ndim in range(1, ndim_max+2):
            shape = (n,) * ndim
            speeds = num.ones(shape)
            times = num.zeros(shape) - 1.0
            delta = 2.0 / (n-1)

            iseed = tuple(i//2 for i in shape)
            times[iseed] = 0.0

            if ndim <= ndim_max:
                @benchmark.labeled('test_nd: %iD' % ndim)
                def run():
                    eikonal_ext.eikonal_solver_fmm_cartesian(
                        speeds, times, delta)

                run()

                fshapes = []
                for idim in range(ndim):
                    fshape = [1] * ndim
                    fshape[idim] = n
                    fshapes.append(tuple(fshape))

                xs = [
                    num.linspace(-1.0, 1.0, n).reshape(fshape)
                    for fshape in fshapes]

                times_ref = num.sqrt(sum(x**2 for x in xs))
                assert num.max(num.abs(times-times_ref)) \
                    < 1e6 + (ndim-1) * delta

            else:
                with self.assertRaises(eikonal_ext.EikonalExtError):
                    eikonal_ext.eikonal_solver_fmm_cartesian(
                        speeds, times, delta)
예제 #5
0
 def run():
     eikonal_ext.eikonal_solver_fmm_cartesian(
         speeds, times, delta)
예제 #6
0
 def fm():
     eikonal_ext.eikonal_solver_fmm_cartesian(speeds, times_fm, delta)
예제 #7
0
 def run():
     eikonal_ext.eikonal_solver_fmm_cartesian(
         speeds, times, delta)
예제 #8
0
 def fm():
     eikonal_ext.eikonal_solver_fmm_cartesian(speeds, times_fm, delta)