From a2620a63a3bf95404baf9017f3827e50e2aa22bd Mon Sep 17 00:00:00 2001 From: Joe Schoonover Date: Mon, 9 Feb 2026 14:07:20 -0500 Subject: [PATCH 1/2] Ensure (ux)fieldset has both UV and UVW for datasets with U, V, and W --- src/parcels/_core/fieldset.py | 3 +++ tests/test_fieldset.py | 1 + 2 files changed, 4 insertions(+) diff --git a/src/parcels/_core/fieldset.py b/src/parcels/_core/fieldset.py index 86cf7e0be..399f8a511 100644 --- a/src/parcels/_core/fieldset.py +++ b/src/parcels/_core/fieldset.py @@ -200,6 +200,9 @@ def from_ugrid_conventions(cls, ds: ux.UxDataset, mesh: str = "spherical"): fields["UVW"] = VectorField( "UVW", fields["U"], fields["V"], fields["W"], vector_interp_method=Ux_Velocity ) + fields["UV"] = VectorField( + "UV", fields["U"], fields["V"], vector_interp_method=Ux_Velocity + ) else: fields["UV"] = VectorField("UV", fields["U"], fields["V"], vector_interp_method=Ux_Velocity) diff --git a/tests/test_fieldset.py b/tests/test_fieldset.py index c75a3e3da..cd4b9c7a2 100644 --- a/tests/test_fieldset.py +++ b/tests/test_fieldset.py @@ -239,6 +239,7 @@ def test_fieldset_from_fesom2(): fieldset = FieldSet.from_ugrid_conventions(ds) assert "U" in fieldset.fields assert "V" in fieldset.fields + assert "UV" in fieldset.fields assert "UVW" in fieldset.fields From 42dd690d9742246e15dd1e28a84b0b41516b4dd7 Mon Sep 17 00:00:00 2001 From: Joe Schoonover <11430768+fluidnumerics-joe@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:54:42 -0500 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Erik van Sebille --- src/parcels/_core/fieldset.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/parcels/_core/fieldset.py b/src/parcels/_core/fieldset.py index 399f8a511..d0b2ba4f5 100644 --- a/src/parcels/_core/fieldset.py +++ b/src/parcels/_core/fieldset.py @@ -204,7 +204,13 @@ def from_ugrid_conventions(cls, ds: ux.UxDataset, mesh: str = "spherical"): "UV", fields["U"], fields["V"], vector_interp_method=Ux_Velocity ) else: - fields["UV"] = VectorField("UV", fields["U"], fields["V"], vector_interp_method=Ux_Velocity) + fields["UV"] = VectorField("UV", fields["U"], fields["V"], vector_interp_method=Ux_Velocity) + + if "W" in ds.data_vars: + fields["W"] = Field("W", ds["W"], grid, _select_uxinterpolator(ds["W"])) + fields["UVW"] = VectorField( + "UVW", fields["U"], fields["V"], fields["W"], vector_interp_method=Ux_Velocity + ) for varname in set(ds.data_vars) - set(fields.keys()): fields[varname] = Field(varname, ds[varname], grid, _select_uxinterpolator(ds[varname]))