diff --git a/.cirrus.yml b/.cirrus.yml index 08cf67f7fc..e70cc33813 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -41,7 +41,7 @@ env: # Pip package to be upgraded/installed. PIP_CACHE_PACKAGES: "pip setuptools wheel nox" # Git commit hash for iris test data. - IRIS_TEST_DATA_REF: "v2.1" + IRIS_TEST_DATA_REF: "v2.2" # Base directory for the iris-test-data. IRIS_TEST_DATA_DIR: ${HOME}/iris-test-data diff --git a/lib/iris/tests/integration/experimental/test_ugrid_load.py b/lib/iris/tests/integration/experimental/test_ugrid_load.py index bcd56a02ab..e2dbfe8edc 100644 --- a/lib/iris/tests/integration/experimental/test_ugrid_load.py +++ b/lib/iris/tests/integration/experimental/test_ugrid_load.py @@ -15,50 +15,105 @@ # importing anything else. import iris.tests as tests -from iris import load, load_cube, NameConstraint -from iris.experimental.ugrid import PARSE_UGRID_ON_LOAD +from collections.abc import Iterable +from iris import Constraint, load +from iris.experimental.ugrid import PARSE_UGRID_ON_LOAD -def ugrid_load(*args, **kwargs): - with PARSE_UGRID_ON_LOAD.context(): - return load(*args, **kwargs) +def ugrid_load(uris, constraints=None, callback=None): + # TODO: remove constraint once files no longer have orphan connectivities. + orphan_connectivities = ( + "Mesh2d_half_levels_edge_face_links", + "Mesh2d_half_levels_face_links", + "Mesh2d_half_levels_face_edges", + "Mesh2d_full_levels_edge_face_links", + "Mesh2d_full_levels_face_links", + "Mesh2d_full_levels_face_edges", + ) + filter_orphan_connectivities = Constraint( + cube_func=lambda cube: cube.var_name not in orphan_connectivities + ) + if constraints is None: + constraints = filter_orphan_connectivities + else: + if not isinstance(constraints, Iterable): + constraints = [constraints] + constraints.append(filter_orphan_connectivities) -def ugrid_load_cube(*args, **kwargs): with PARSE_UGRID_ON_LOAD.context(): - return load_cube(*args, **kwargs) + return load(uris, constraints, callback) @tests.skip_data class TestBasic(tests.IrisTest): - def test_2D_1t_face_half_levels(self): - # TODO: remove constraint once file no longer has orphan connectivities. - conv_rain = NameConstraint(var_name="conv_rain") - cube = ugrid_load_cube( + def common_test(self, load_filename, assert_filename): + cube_list = ugrid_load( tests.get_data_path( - [ - "NetCDF", - "unstructured_grid", - "lfric_ngvat_2D_1t_face_half_levels_main_conv_rain.nc", - ] + ["NetCDF", "unstructured_grid", load_filename] ), - constraint=conv_rain, ) - self.assertCML( - cube, ("experimental", "ugrid", "2D_1t_face_half_levels.cml") + self.assertEqual(1, len(cube_list)) + cube = cube_list[0] + self.assertCML(cube, ["experimental", "ugrid", assert_filename]) + + def test_2D_1t_face_half_levels(self): + self.common_test( + "lfric_ngvat_2D_1t_face_half_levels_main_conv_rain.nc", + "2D_1t_face_half_levels.cml", + ) + + def test_3D_1t_face_half_levels(self): + self.common_test( + "lfric_ngvat_3D_1t_half_level_face_grid_derived_theta_in_w3.nc", + "3D_1t_face_half_levels.cml", + ) + + def test_3D_1t_face_full_levels(self): + self.common_test( + "lfric_ngvat_3D_1t_full_level_face_grid_main_area_fraction_unit1.nc", + "3D_1t_face_full_levels.cml", + ) + + def test_2D_72t_face_half_levels(self): + self.common_test( + "lfric_ngvat_2D_72t_face_half_levels_main_conv_rain.nc", + "2D_72t_face_half_levels.cml", ) - # def test_3D_1t_face_half_levels(self): - # pass - # - # def test_3D_1t_face_full_levels(self): - # pass - # - # def test_multiple_time_values(self): - # pass - # - # etc ... + def test_3D_snow_pseudo_levels(self): + self.common_test( + "lfric_ngvat_3D_snow_pseudo_levels_1t_face_half_levels_main_snow_layer_temp.nc", + "3D_snow_pseudo_levels.cml", + ) + + def test_3D_soil_pseudo_levels(self): + self.common_test( + "lfric_ngvat_3D_soil_pseudo_levels_1t_face_half_levels_main_soil_temperature.nc", + "3D_soil_pseudo_levels.cml", + ) + + def test_3D_tile_pseudo_levels(self): + self.common_test( + "lfric_ngvat_3D_tile_pseudo_levels_1t_face_half_levels_main_sw_up_tile.nc", + "3D_tile_pseudo_levels.cml", + ) + + def test_3D_veg_pseudo_levels(self): + self.common_test( + "lfric_ngvat_3D_veg_pseudo_levels_1t_face_half_levels_main_snowpack_density.nc", + "3D_veg_pseudo_levels.cml", + ) -# class TestPseudoLevels(tests.IrisTest): -# pass +@tests.skip_data +class TestMultiplePhenomena(tests.IrisTest): + def test_multiple_phenomena(self): + cube_list = ugrid_load( + tests.get_data_path( + ["NetCDF", "unstructured_grid", "lfric_surface_mean.nc"] + ), + ) + self.assertCML( + cube_list, ("experimental", "ugrid", "surface_mean.cml") + ) diff --git a/lib/iris/tests/results/experimental/ugrid/2D_72t_face_half_levels.cml b/lib/iris/tests/results/experimental/ugrid/2D_72t_face_half_levels.cml new file mode 100644 index 0000000000..568c835e97 --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/2D_72t_face_half_levels.cml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_1t_face_full_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_1t_face_full_levels.cml new file mode 100644 index 0000000000..6d7873daaa --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_1t_face_full_levels.cml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_1t_face_half_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_1t_face_half_levels.cml new file mode 100644 index 0000000000..b664e3cf6f --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_1t_face_half_levels.cml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_snow_pseudo_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_snow_pseudo_levels.cml new file mode 100644 index 0000000000..b30d443495 --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_snow_pseudo_levels.cml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_soil_pseudo_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_soil_pseudo_levels.cml new file mode 100644 index 0000000000..157755298d --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_soil_pseudo_levels.cml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_tile_pseudo_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_tile_pseudo_levels.cml new file mode 100644 index 0000000000..a9eba1a80d --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_tile_pseudo_levels.cml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/3D_veg_pseudo_levels.cml b/lib/iris/tests/results/experimental/ugrid/3D_veg_pseudo_levels.cml new file mode 100644 index 0000000000..e90c048803 --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/3D_veg_pseudo_levels.cml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/iris/tests/results/experimental/ugrid/surface_mean.cml b/lib/iris/tests/results/experimental/ugrid/surface_mean.cml new file mode 100644 index 0000000000..368b3508e3 --- /dev/null +++ b/lib/iris/tests/results/experimental/ugrid/surface_mean.cml @@ -0,0 +1,921 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +