def test_with_bounds(self): self.delta.guess_bounds(0) self.sigma.guess_bounds(0.5) # Determine expected coord by manually broadcasting coord points # and bounds based on the dimension mapping. delta_pts = self.delta.points[..., np.newaxis, np.newaxis] sigma_pts = self.sigma.points[..., np.newaxis, np.newaxis] surf_pts = self.surface_air_pressure.points[np.newaxis, ...] expected_points = delta_pts + sigma_pts * surf_pts delta_vals = self.delta.bounds.reshape(3, 1, 1, 2) sigma_vals = self.sigma.bounds.reshape(3, 1, 1, 2) surf_vals = self.surface_air_pressure.points.reshape(1, 2, 2, 1) expected_bounds = delta_vals + sigma_vals * surf_vals expected_coord = iris.coords.AuxCoord( expected_points, standard_name="air_pressure", units="Pa", bounds=expected_bounds, ) factory = HybridPressureFactory( delta=self.delta, sigma=self.sigma, surface_air_pressure=self.surface_air_pressure, ) derived_coord = factory.make_coord(self.coords_dims_func) self.assertEqual(expected_coord, derived_coord)
def test_none_surface_air_pressure(self): # Note absence of broadcasting as multidimensional coord # is not present. expected_points = self.delta.points expected_coord = iris.coords.AuxCoord(expected_points, standard_name='air_pressure', units='Pa') factory = HybridPressureFactory(delta=self.delta, sigma=self.sigma) derived_coord = factory.make_coord(self.coords_dims_func) self.assertEqual(expected_coord, derived_coord)
def test_none_sigma(self): delta_pts = self.delta.points[..., np.newaxis, np.newaxis] sigma_pts = 0 surf_pts = self.surface_air_pressure.points[np.newaxis, ...] expected_points = delta_pts + sigma_pts * surf_pts expected_coord = iris.coords.AuxCoord(expected_points, standard_name='air_pressure', units='Pa') factory = HybridPressureFactory( delta=self.delta, surface_air_pressure=self.surface_air_pressure) derived_coord = factory.make_coord(self.coords_dims_func) self.assertEqual(expected_coord, derived_coord)
def test_points_only(self): # Determine expected coord by manually broadcasting coord points # knowing the dimension mapping. delta_pts = self.delta.points[..., np.newaxis, np.newaxis] sigma_pts = self.sigma.points[..., np.newaxis, np.newaxis] surf_pts = self.surface_air_pressure.points[np.newaxis, ...] expected_points = delta_pts + sigma_pts * surf_pts expected_coord = iris.coords.AuxCoord(expected_points, standard_name='air_pressure', units='Pa') factory = HybridPressureFactory( delta=self.delta, sigma=self.sigma, surface_air_pressure=self.surface_air_pressure) derived_coord = factory.make_coord(self.coords_dims_func) self.assertEqual(expected_coord, derived_coord)
def test_with_bounds(self): self.delta.guess_bounds(0) self.sigma.guess_bounds(0.5) # Determine expected coord by manually broadcasting coord points # and bounds based on the dimension mapping. delta_pts = self.delta.points[..., np.newaxis, np.newaxis] sigma_pts = self.sigma.points[..., np.newaxis, np.newaxis] surf_pts = self.surface_air_pressure.points[np.newaxis, ...] expected_points = delta_pts + sigma_pts * surf_pts delta_vals = self.delta.bounds.reshape(3, 1, 1, 2) sigma_vals = self.sigma.bounds.reshape(3, 1, 1, 2) surf_vals = self.surface_air_pressure.points.reshape(1, 2, 2, 1) expected_bounds = delta_vals + sigma_vals * surf_vals expected_coord = iris.coords.AuxCoord(expected_points, standard_name='air_pressure', units='Pa', bounds=expected_bounds) factory = HybridPressureFactory( delta=self.delta, sigma=self.sigma, surface_air_pressure=self.surface_air_pressure) derived_coord = factory.make_coord(self.coords_dims_func) self.assertEqual(expected_coord, derived_coord)