def test_fluid_tf_equality(self): tf.reset_default_graph() _sess = tf.InteractiveSession() for domain in [ Domain([8, 6], boundaries=OPEN), Domain([8, 6], boundaries=STICKY), Domain([8, 6], boundaries=SLIPPERY), Domain([8, 6], boundaries=PERIODIC), Domain([8, 6], boundaries=[PERIODIC, [OPEN, STICKY]]) ]: print('Comparing on domain %s' % (domain.boundaries, )) np_fluid = Fluid(domain, density=Noise(), velocity=Noise(), batch_size=10) tf_fluid = constant(np_fluid) physics = IncompressibleFlow(conserve_density=False) for _ in range(3): np_fluid = physics.step(np_fluid, 1.0) tf_fluid = physics.step(tf_fluid, 1.0) for np_tensor, tf_tensor in zip(struct.flatten(np_fluid), struct.flatten(tf_fluid)): tf_eval = tf_tensor.eval() numpy.testing.assert_almost_equal(np_tensor, tf_eval, decimal=5)
def test_precision_16(self): try: math.set_precision(16) fluid = Fluid(Domain([16, 16]), density=math.maximum(0, Noise())) fluid = variable(fluid) self.assertEqual(fluid.density.data.dtype.as_numpy_dtype, numpy.float16) self.assertEqual( fluid.velocity.unstack()[0].data.dtype.as_numpy_dtype, numpy.float16) fluid = IncompressibleFlow().step(fluid, dt=1.0) self.assertEqual(fluid.density.data.dtype.as_numpy_dtype, numpy.float16) self.assertEqual( fluid.velocity.unstack()[0].data.dtype.as_numpy_dtype, numpy.float16) finally: math.set_precision(32) # Reset environment