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