Skip to content

Commit 0ce2aa4

Browse files
committed
Allow for fieldsets with no currents in fieldset in from_copernicusmarine
Fixes #2236
1 parent 97cd0c3 commit 0ce2aa4

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

parcels/fieldset.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -229,21 +229,21 @@ def from_copernicusmarine(ds: xr.Dataset):
229229
)
230230
)
231231

232-
U = Field("U", ds["U"], grid)
233-
V = Field("V", ds["V"], grid)
232+
fields = {}
233+
if "U" in ds.data_vars and "V" in ds.data_vars:
234+
fields["U"] = Field("U", ds["U"], grid)
235+
fields["V"] = Field("V", ds["V"], grid)
236+
fields["U"].units = GeographicPolar()
237+
fields["V"].units = Geographic()
234238

235-
U.units = GeographicPolar()
236-
V.units = Geographic()
237-
238-
fields = {"U": U, "V": V}
239-
for varname in set(ds.data_vars) - set(fields.keys()):
240-
fields[varname] = Field(varname, ds[varname], grid)
241-
242-
if "U" in fields and "V" in fields:
243239
if "W" in fields:
244240
fields["UVW"] = VectorField("UVW", fields["U"], fields["V"], fields["W"])
245241
else:
246242
fields["UV"] = VectorField("UV", fields["U"], fields["V"])
243+
244+
for varname in set(ds.data_vars) - set(fields.keys()):
245+
fields[varname] = Field(varname, ds[varname], grid)
246+
247247
return FieldSet(list(fields.values()))
248248

249249

@@ -344,12 +344,6 @@ def _discover_copernicusmarine_U_and_V(ds: xr.Dataset) -> xr.Dataset:
344344

345345
ds = _ds_rename_using_standard_names(ds, {cf_standard_name_U: "U", cf_standard_name_V: "V"})
346346
break
347-
else:
348-
raise ValueError(
349-
f"Could not find variables 'U' and 'V' in dataset, nor any of the fallback CF standard names "
350-
f"{cf_UV_standard_name_fallbacks}. Please rename the appropriate variables to 'U' and 'V' in "
351-
"your dataset for the Parcels simulation."
352-
)
353347
return ds
354348

355349

tests/v4/test_fieldset.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import timedelta
22

3+
import cf_xarray # noqa: F401
34
import cftime
45
import numpy as np
56
import pytest
@@ -232,6 +233,17 @@ def test_fieldset_from_copernicusmarine(ds, caplog):
232233
assert "renamed it to 'V'" in caplog.text
233234

234235

236+
def test_fieldset_from_copernicusmarine_no_currents(caplog):
237+
ds = datasets_circulation_models["ds_copernicusmarine"].cf.drop_vars(
238+
["eastward_sea_water_velocity", "northward_sea_water_velocity"]
239+
)
240+
fieldset = FieldSet.from_copernicusmarine(ds)
241+
assert "U" not in fieldset.fields
242+
assert "V" not in fieldset.fields
243+
assert "UV" not in fieldset.fields
244+
assert caplog.text == ""
245+
246+
235247
@pytest.mark.parametrize("ds", _COPERNICUS_DATASETS)
236248
def test_fieldset_from_copernicusmarine_no_logs(ds, caplog):
237249
ds = ds.copy()

0 commit comments

Comments
 (0)