Пример #1
0
    def test_output_is_float32(self):
        """Test that the plugin returns an array of float 32 type
           even when the input arrays are double precision."""

        result = FrictionVelocity(self.u_href, self.h_ref, self.z_0,
                                  self.mask).process()

        self.assertEqual(result.dtype, np.float32)
Пример #2
0
    def test_returns_expected_values(self):
        """Test that the function returns correct 2D array of floats. """

        # Equation is (K=0.4): ustar = K * (u_href / ln(h_ref / z_0))
        expected_out = np.array([[RMDI, RMDI, RMDI, RMDI],
                                 [RMDI, 1.08434, 1.08434, RMDI],
                                 [RMDI, 1.08434, 1.08434, RMDI],
                                 [RMDI, RMDI, RMDI, RMDI]])

        result = FrictionVelocity(self.u_href, self.h_ref, self.z_0,
                                  self.mask).process()

        self.assertIsInstance(result, np.ndarray)
        self.assertArrayAlmostEqual(result, expected_out)
Пример #3
0
    def test_handles_nan_values(self):
        """Test that the function accepts NaN values correctly. """

        self.u_href[1, 1] = np.nan  # Adds NaN value

        expected_out = np.array([[RMDI, RMDI, RMDI, RMDI],
                                 [RMDI, np.nan, 1.08434, RMDI],
                                 [RMDI, 1.08434, 1.08434, RMDI],
                                 [RMDI, RMDI, RMDI, RMDI]])

        result = FrictionVelocity(self.u_href, self.h_ref, self.z_0,
                                  self.mask).process()

        self.assertIsInstance(result, np.ndarray)
        self.assertArrayAlmostEqual(result, expected_out)
Пример #4
0
    def test_handles_zero_values(self):
        """Function calculates log(href/z_0) - test that the function accepts
           zero values in h_ref and z_0 and returns np.nan without crashing."""

        h_ref_zeros = np.full_like(self.h_ref, 0)
        z_0_zeros = np.full_like(self.z_0, 0)

        expected_out = np.array([[RMDI, RMDI, RMDI, RMDI],
                                 [RMDI, np.nan, np.nan, RMDI],
                                 [RMDI, np.nan, np.nan, RMDI],
                                 [RMDI, RMDI, RMDI, RMDI]])

        result = FrictionVelocity(self.u_href, h_ref_zeros, z_0_zeros,
                                  self.mask).process()

        self.assertIsInstance(result, np.ndarray)
        self.assertArrayAlmostEqual(result, expected_out)
Пример #5
0
 def test_handles_different_sized_arrays(self):
     """Test when if different size arrays have been input"""
     u_href = np.full([3, 3], 10, dtype=float)
     msg = "Different size input arrays u_href, h_ref, z_0, mask"
     with self.assertRaisesRegex(ValueError, msg):
         FrictionVelocity(u_href, self.h_ref, self.z_0, self.mask).process()