11"""Unit tests for miscellaneous helper functions in `esmf_regrid.experimental.unstructured_scheme`."""
22
33import iris
4+ from iris .coords import AuxCoord , DimCoord
5+ from iris .cube import Cube
46import numpy as np
57
68from esmf_regrid .experimental .unstructured_scheme import _create_cube
@@ -11,17 +13,56 @@ def test_create_cube_2D():
1113 data = np .ones ([2 , 3 ])
1214
1315 # Create a source cube with metadata and scalar coords
14- src_cube = iris . cube . Cube (np .zeros (5 ))
16+ src_cube = Cube (np .zeros (5 ))
1517 src_cube .units = "K"
1618 src_cube .attributes = {"a" : 1 }
1719 src_cube .standard_name = "air_temperature"
18- scalar_height = iris . coords . AuxCoord ([5 ], units = "m" , standard_name = "height" )
19- scalar_time = iris . coords . DimCoord ([10 ], units = "s" , standard_name = "time" )
20+ scalar_height = AuxCoord ([5 ], units = "m" , standard_name = "height" )
21+ scalar_time = DimCoord ([10 ], units = "s" , standard_name = "time" )
2022 src_cube .add_aux_coord (scalar_height )
2123 src_cube .add_aux_coord (scalar_time )
2224
2325 mesh_dim = 0
2426
27+ grid_x = DimCoord (np .arange (3 ), standard_name = "longitude" )
28+ grid_y = DimCoord (np .arange (2 ), standard_name = "latitude" )
29+
30+ cube = _create_cube (data , src_cube , mesh_dim , grid_x , grid_y )
31+ src_metadata = src_cube .metadata
32+
33+ expected_cube = Cube (data )
34+ expected_cube .metadata = src_metadata
35+ expected_cube .add_dim_coord (grid_x , 1 )
36+ expected_cube .add_dim_coord (grid_y , 0 )
37+ expected_cube .add_aux_coord (scalar_height )
38+ expected_cube .add_aux_coord (scalar_time )
39+ assert expected_cube == cube
40+
41+
42+ def test_create_cube_4D ():
43+ """Test creation of 2D output grid."""
44+ data = np .ones ([4 , 2 , 3 , 5 ])
45+
46+ # Create a source cube with metadata and scalar coords
47+ src_cube = Cube (np .zeros ([4 , 5 , 5 ]))
48+ src_cube .units = "K"
49+ src_cube .attributes = {"a" : 1 }
50+ src_cube .standard_name = "air_temperature"
51+ scalar_height = AuxCoord ([5 ], units = "m" , standard_name = "height" )
52+ scalar_time = DimCoord ([10 ], units = "s" , standard_name = "time" )
53+ src_cube .add_aux_coord (scalar_height )
54+ src_cube .add_aux_coord (scalar_time )
55+ first_coord = DimCoord (np .arange (4 ), standard_name = "air_pressure" )
56+ src_cube .add_dim_coord (first_coord , 0 )
57+ last_coord = AuxCoord (np .arange (5 ), long_name = "last_coord" )
58+ src_cube .add_aux_coord (last_coord , 2 )
59+ multidim_coord = AuxCoord (np .ones ([4 , 5 ]), long_name = "2d_coord" )
60+ src_cube .add_aux_coord (multidim_coord , (0 , 2 ))
61+ ignored_coord = AuxCoord (np .arange (5 ), long_name = "ignore" )
62+ src_cube .add_aux_coord (ignored_coord , 1 )
63+
64+ mesh_dim = 1
65+
2566 grid_x = iris .coords .DimCoord (np .arange (3 ), standard_name = "longitude" )
2667 grid_y = iris .coords .DimCoord (np .arange (2 ), standard_name = "latitude" )
2768
@@ -30,8 +71,11 @@ def test_create_cube_2D():
3071
3172 expected_cube = iris .cube .Cube (data )
3273 expected_cube .metadata = src_metadata
33- expected_cube .add_dim_coord (grid_x , 1 )
34- expected_cube .add_dim_coord (grid_y , 0 )
74+ expected_cube .add_dim_coord (grid_x , 2 )
75+ expected_cube .add_dim_coord (grid_y , 1 )
76+ expected_cube .add_dim_coord (first_coord , 0 )
77+ expected_cube .add_aux_coord (last_coord , 3 )
78+ expected_cube .add_aux_coord (multidim_coord , (0 , 3 ))
3579 expected_cube .add_aux_coord (scalar_height )
3680 expected_cube .add_aux_coord (scalar_time )
3781 assert expected_cube == cube
0 commit comments