def test_collective_step(self): world = World() obstacle = world.add(Obstacle(geometry_at(0)), physics=GeometryMovement(geometry_at)) inflow = world.add(Inflow(geometry_at(0))) inflow.physics = world.get_physics(obstacle) static_obstacle = world.add(Obstacle(box[0:1])) world.step() self.assertAlmostEqual(obstacle.age, 1.0) self.assertAlmostEqual(obstacle.geometry.center[0], 1.0) self.assertAlmostEqual(inflow.age, 1.0) # self.assertAlmostEqual(inflow.field.geometry.center[0], 1.0) self.assertAlmostEqual(static_obstacle.age, 1.0)
def test_effects(self): world = World() fluid = world.add(Fluid(Domain([16, 16]))) fan = world.add(Fan(Sphere((10, 8), 5), [-1, 0])) obstacle = world.add(Obstacle(box[0:1, 0:1])) world.step(dt=1) world.step(dt=0.5) assert fluid.age == fan.age == obstacle.age == 1.5
def test_complex_step(self): q = QuantumWave(Domain([4, 4])) q = q.copied_with(amplitude=WavePacket([2, 2], 1.0, [0.5, 0])) pot = StepPotential(box[0:1, 0:1], 1.0) SCHROEDINGER.step(q, 1.0, potentials=[pot], obstacles=[Obstacle(box[3:4, 0:1])]) numpy.testing.assert_equal(q.amplitude.data.shape, [1, 4, 4, 1])
def test_fluid_tf(self): world = World() fluid = Fluid(Domain([16, 16])) world.add(fluid) world.add(Inflow(Sphere((8, 8), radius=4))) world.add(Obstacle(box[4:16, 0:8])) fluid_in = fluid.copied_with(density=placeholder, velocity=placeholder) fluid_out = world.step(fluid_in) self.assertIsInstance(fluid_out, Fluid) session = Session(Scene.create('data', copy_calling_script=False)) fluid = session.run(fluid_out, {fluid_in: fluid}) fluid = session.run(fluid_out, {fluid_in: fluid}) self.assertIsInstance(fluid, Fluid)
def test_geometry_movement(self): obstacle = Obstacle(geometry_at(0)) phys = GeometryMovement(geometry_at) obstacle = phys.step(obstacle, dt=2.0) self.assertIsInstance(obstacle, Obstacle) self.assertAlmostEqual(obstacle.age, 2.0) self.assertAlmostEqual(obstacle.geometry.center[0], 2.0) self.assertAlmostEqual(obstacle.velocity[0], 1.0) obstacle = phys.step(obstacle, dt=2.0) self.assertIsInstance(obstacle, Obstacle) self.assertAlmostEqual(obstacle.age, 4.0) self.assertAlmostEqual(obstacle.geometry.center[0], 4.0) self.assertAlmostEqual(obstacle.velocity[0], 1.0)