Пример #1
0
 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)
Пример #2
0
 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