diff --git a/docs/user_guide/examples/tutorial_nemo.ipynb b/docs/user_guide/examples/tutorial_nemo.ipynb index b822aef9c..2bf094c10 100644 --- a/docs/user_guide/examples/tutorial_nemo.ipynb +++ b/docs/user_guide/examples/tutorial_nemo.ipynb @@ -307,7 +307,10 @@ " fields={\"U\": ds_u[\"uo\"], \"V\": ds_v[\"vo\"], \"W\": ds_w[\"wo\"]},\n", " coords=ds_coords,\n", ")\n", - "fieldset = parcels.FieldSet.from_sgrid_conventions(ds_fset)" + "fieldset = parcels.FieldSet.from_sgrid_conventions(ds_fset)\n", + "\n", + "fieldset = fieldset.to_windowed_arrays()\n", + "fieldset.describe()" ] }, { @@ -327,12 +330,12 @@ }, "outputs": [], "source": [ - "npart = 10\n", + "npart = 3\n", "pset = parcels.ParticleSet(\n", " fieldset=fieldset,\n", " x=np.linspace(1.9, 3.4, npart),\n", - " y=np.linspace(65, 51.6, npart),\n", - " z=100 * np.ones(npart),\n", + " y=np.linspace(60, 58, npart),\n", + " z=20 * np.ones(npart),\n", ")\n", "\n", "pfile = parcels.ParticleFile(\"output_nemo3D.parquet\", outputdt=np.timedelta64(1, \"D\"))\n", @@ -358,16 +361,30 @@ "metadata": {}, "outputs": [], "source": [ - "field = fieldset.U.data[0, 0, :, :]\n", + "fig, ax = plt.subplots(figsize=(8, 4))\n", + "\n", + "field = fieldset.U.data.isel(time=0, depth_center=0).compute()\n", "field = field.where(field != 0, np.nan) # Mask land values for better plotting\n", - "plt.pcolormesh(fieldset.U.grid.lon, fieldset.U.grid.lat, field, cmap=\"RdBu\")\n", + "ax.pcolormesh(fieldset.U.grid.lon, fieldset.U.grid.lat, field, cmap=\"RdBu\")\n", "\n", "df = parcels.read_particlefile(\"output_nemo3D.parquet\")\n", "vmin = df[\"z\"].min()\n", "vmax = df[\"z\"].max()\n", "for traj in df.partition_by(\"particle_id\", maintain_order=True):\n", - " plt.scatter(traj[\"x\"], traj[\"y\"], c=-traj[\"z\"], marker=\".\", vmin=-vmax, vmax=-vmin)\n", - "plt.colorbar(label=\"Depth (m)\")\n", + " ax.plot(traj[\"x\"], traj[\"y\"], \"-\", color=\"k\", alpha=0.5)\n", + " scat = ax.scatter(\n", + " traj[\"x\"],\n", + " traj[\"y\"],\n", + " c=-traj[\"z\"],\n", + " marker=\".\",\n", + " vmin=-vmax,\n", + " vmax=-vmin,\n", + " zorder=10,\n", + " )\n", + "plt.colorbar(scat, label=\"Depth (m)\", ax=ax)\n", + "ax.set_xlim([1, 9])\n", + "ax.set_ylim([56, 61])\n", + "ax.set_aspect(\"equal\")\n", "plt.show()" ] } diff --git a/src/parcels/_datasets/remote.py b/src/parcels/_datasets/remote.py index 02b7f320a..5fc93868a 100644 --- a/src/parcels/_datasets/remote.py +++ b/src/parcels/_datasets/remote.py @@ -74,21 +74,21 @@ def _get_data_home() -> Path: "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05U.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05U.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05U.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05V.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05V.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05V.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05W.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05W.nc", "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05W.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc", - "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc", + # "data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc", "data/NemoNorthSeaORCA025-N006_data/coordinates.nc", ] + [ @@ -107,7 +107,7 @@ def _get_data_home() -> Path: "data/SWASH_data/field_0065552.nc", "data/SWASH_data/field_0065557.nc", ] - + [f"data/WOA_data/woa18_decav_t{m:02d}_04.nc" for m in range(1, 13)] + # + [f"data/WOA_data/woa18_decav_t{m:02d}_04.nc" for m in range(1, 13)] + ["data/CROCOidealized_data/CROCO_idealized.nc"] # These datasets are from v4 of Parcels where we're opting for Zipped zarr datasets + [ @@ -238,7 +238,7 @@ class _Purpose(enum.Enum): ("NemoNorthSeaORCA025-N006_data/mesh_mask", (_V3Dataset(_ODIE,"data/NemoNorthSeaORCA025-N006_data/coordinates.nc", _preprocess_drop_time_from_mesh1), _Purpose.TUTORIAL)), # "POPSouthernOcean_data/t.x1_SAMOC_flux.16900*.nc", # TODO v4: In v3 but should not be in v4 https://github.com/Parcels-code/Parcels/issues/2571#issuecomment-4214476973 # ("SWASH_data/data", (_V3Dataset(_ODIE,"data/SWASH_data/field_00655*.nc"), _Purpose.TUTORIAL)), - ("WOA_data/data", (_V3Dataset(_ODIE,"data/WOA_data/woa18_decav_t*_04.nc", _preprocess_set_cf_calendar_360_day), _Purpose.TUTORIAL)), + # ("WOA_data/data", (_V3Dataset(_ODIE,"data/WOA_data/woa18_decav_t*_04.nc", _preprocess_set_cf_calendar_360_day), _Purpose.TUTORIAL)), ("CROCOidealized_data/data", (_V3Dataset(_ODIE,"data/CROCOidealized_data/CROCO_idealized.nc"), _Purpose.TUTORIAL)), ] + [ ("Benchmarks_FESOM2-baroclinic-gyre/data", (_ZarrZipDataset(_ODIE, 'data-zarr/Benchmarks_FESOM2-baroclinic-gyre/data.zip', zarr_format=2), _Purpose.TESTING)),