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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+