|
12 | 12 | from parcels._datasets.structured.generic import datasets as datasets_structured |
13 | 13 | from parcels.field import Field, VectorField |
14 | 14 | from parcels.fieldset import CalendarError, FieldSet, _datetime_to_msg |
15 | | -from parcels.xgrid import XGrid |
| 15 | +from parcels.xgrid import _FIELD_DATA_ORDERING, XGrid, get_axis_from_dim_name |
16 | 16 |
|
17 | 17 | ds = datasets_structured["ds_2d_left"] |
18 | 18 |
|
@@ -84,6 +84,30 @@ def test_fieldset_gridset(fieldset): |
84 | 84 | assert len(fieldset.gridset) == 2 |
85 | 85 |
|
86 | 86 |
|
| 87 | +@pytest.mark.parametrize("ds", [pytest.param(ds, id=k) for k, ds in datasets_structured.items()]) |
| 88 | +def test_fieldset_from_structured_generic_datasets(ds): |
| 89 | + grid = XGrid.from_dataset(ds) |
| 90 | + fields = [] |
| 91 | + for var in ds.data_vars: |
| 92 | + fields.append(Field(var, ds[var], grid, mesh_type="flat")) |
| 93 | + |
| 94 | + fieldset = FieldSet(fields) |
| 95 | + |
| 96 | + assert len(fieldset.fields) == len(ds.data_vars) |
| 97 | + for field in fieldset.fields.values(): |
| 98 | + assert ( |
| 99 | + len(field.data.shape) == 4 |
| 100 | + ), f"Field data should have 4 dimensions (time, depth, lat, lon), got {len(field.data.shape)}" |
| 101 | + |
| 102 | + for ax_expected, dim in zip(_FIELD_DATA_ORDERING, field.data.dims, strict=True): |
| 103 | + ax_actual = get_axis_from_dim_name(field.grid.xgcm_grid.axes, dim) |
| 104 | + if ax_actual is None: |
| 105 | + continue # None is ok |
| 106 | + assert ax_actual == ax_expected, f"Expected axis {ax_expected} for dimension '{dim}', got {ax_actual}" |
| 107 | + |
| 108 | + assert len(fieldset.gridset) == 1 |
| 109 | + |
| 110 | + |
87 | 111 | def test_fieldset_gridset_multiple_grids(): ... |
88 | 112 |
|
89 | 113 |
|
|
0 commit comments