Skip to content

Commit b0db121

Browse files
committed
Update from_copernicusmarine to parse W velocities from CF naming
1 parent 0ce2aa4 commit b0db121

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

parcels/fieldset.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,8 @@ def from_copernicusmarine(ds: xr.Dataset):
236236
fields["U"].units = GeographicPolar()
237237
fields["V"].units = Geographic()
238238

239-
if "W" in fields:
239+
if "W" in ds.data_vars:
240+
fields["W"] = Field("W", ds["W"], grid)
240241
fields["UVW"] = VectorField("UVW", fields["U"], fields["V"], fields["W"])
241242
else:
242243
fields["UV"] = VectorField("UV", fields["U"], fields["V"])
@@ -323,6 +324,13 @@ def _discover_copernicusmarine_U_and_V(ds: xr.Dataset) -> xr.Dataset:
323324
"northward_sea_water_velocity_vertical_mean_over_pelagic_layer",
324325
), # GLOBAL_MULTIYEAR_BGC_001_033
325326
]
327+
cf_W_standard_name_fallbacks = ["vertical_sea_water_velocity"]
328+
329+
if "W" not in ds:
330+
for cf_standard_name_W in cf_W_standard_name_fallbacks:
331+
if cf_standard_name_W in ds.cf.standard_names:
332+
ds = _ds_rename_using_standard_names(ds, {cf_standard_name_W: "W"})
333+
break
326334

327335
if "U" in ds and "V" in ds:
328336
return ds # U and V already present

tests/v4/test_fieldset.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,3 +256,18 @@ def test_fieldset_from_copernicusmarine_no_logs(ds, caplog):
256256
assert "V" in fieldset.fields
257257
assert "UV" in fieldset.fields
258258
assert caplog.text == ""
259+
260+
261+
def test_fieldset_from_copernicusmarine_with_W(caplog):
262+
ds = datasets_circulation_models["ds_copernicusmarine"]
263+
ds = ds.copy()
264+
ds["wo"] = ds["uo"]
265+
ds["wo"].attrs["standard_name"] = "vertical_sea_water_velocity"
266+
267+
fieldset = FieldSet.from_copernicusmarine(ds)
268+
assert "U" in fieldset.fields
269+
assert "V" in fieldset.fields
270+
assert "W" in fieldset.fields
271+
assert "UV" not in fieldset.fields
272+
assert "UVW" in fieldset.fields
273+
assert "renamed it to 'W'" in caplog.text

0 commit comments

Comments
 (0)