Exemplo n.º 1
0
 def test13(self):
     print "Test box_counting_dimension"
     # Particles distributed uniformly in 3D
     particles = Particles(4096)
     particles.position = numpy.mgrid[0:16.0, 0:16.0, 0:16.0].reshape(3, -1).transpose() | units.m
     dimension = particles.box_counting_dimension()
     self.assertAlmostRelativeEquals(dimension, 3.0, 1)
     # Fractal dimension is scale-free
     particles.position *= 1000
     self.assertAlmostRelativeEquals(dimension, particles.box_counting_dimension(), 10)
     
     # Particles distributed in the x-y plane
     particles.position = numpy.concatenate((numpy.mgrid[0:64.0, 0:64.0].reshape(2, -1), numpy.zeros((1, 4096)))).transpose() | units.m
     dimension = particles.box_counting_dimension()
     self.assertAlmostRelativeEquals(dimension, 2.0, 1)
     particles.position *= 1000
     self.assertAlmostRelativeEquals(dimension, particles.box_counting_dimension(), 10)
     
     # Particles distributed along a line
     particles.position = numpy.concatenate([numpy.arange(4096.0).reshape(1, -1)]*3).transpose() | units.m
     dimension = particles.box_counting_dimension()
     self.assertAlmostRelativeEquals(dimension, 1.0, 1)
     particles.position *= 1000
     self.assertAlmostRelativeEquals(dimension, particles.box_counting_dimension(), 10)
     
     # Particles on a Koch curve
     x, y = self.new_koch_star(level=7)
     numpy.random.seed(123456)
     sel = numpy.random.randint(len(x), size=4096)
     particles.position = numpy.hstack((x[sel], y[sel], numpy.zeros(4096))) | units.m
     dimension = particles.box_counting_dimension()
     self.assertAlmostRelativeEquals(dimension, 1.26186, 1)
     particles.position *= 1000
     self.assertAlmostRelativeEquals(dimension, particles.box_counting_dimension(), 10)
Exemplo n.º 2
0
    def test13(self):
        print "Test box_counting_dimension"
        # Particles distributed uniformly in 3D
        particles = Particles(4096)
        particles.position = numpy.mgrid[0:16.0, 0:16.0, 0:16.0].reshape(
            3, -1).transpose() | units.m
        dimension = particles.box_counting_dimension()
        self.assertAlmostRelativeEquals(dimension, 3.0, 1)
        # Fractal dimension is scale-free
        particles.position *= 1000
        self.assertAlmostRelativeEquals(dimension,
                                        particles.box_counting_dimension(), 10)

        # Particles distributed in the x-y plane
        particles.position = numpy.concatenate(
            (numpy.mgrid[0:64.0, 0:64.0].reshape(2, -1), numpy.zeros(
                (1, 4096)))).transpose() | units.m
        dimension = particles.box_counting_dimension()
        self.assertAlmostRelativeEquals(dimension, 2.0, 1)
        particles.position *= 1000
        self.assertAlmostRelativeEquals(dimension,
                                        particles.box_counting_dimension(), 10)

        # Particles distributed along a line
        particles.position = numpy.concatenate(
            [numpy.arange(4096.0).reshape(1, -1)] * 3).transpose() | units.m
        dimension = particles.box_counting_dimension()
        self.assertAlmostRelativeEquals(dimension, 1.0, 1)
        particles.position *= 1000
        self.assertAlmostRelativeEquals(dimension,
                                        particles.box_counting_dimension(), 10)

        # Particles on a Koch curve
        x, y = self.new_koch_star(level=7)
        numpy.random.seed(123456)
        sel = numpy.random.randint(len(x), size=4096)
        particles.position = numpy.hstack(
            (x[sel], y[sel], numpy.zeros(4096))) | units.m
        dimension = particles.box_counting_dimension()
        self.assertAlmostRelativeEquals(dimension, 1.26186, 1)
        particles.position *= 1000
        self.assertAlmostRelativeEquals(dimension,
                                        particles.box_counting_dimension(), 10)