|
307 | 307 | " fields={\"U\": ds_u[\"uo\"], \"V\": ds_v[\"vo\"], \"W\": ds_w[\"wo\"]},\n", |
308 | 308 | " coords=ds_coords,\n", |
309 | 309 | ")\n", |
310 | | - "fieldset = parcels.FieldSet.from_sgrid_conventions(ds_fset)" |
| 310 | + "fieldset = parcels.FieldSet.from_sgrid_conventions(ds_fset)\n", |
| 311 | + "\n", |
| 312 | + "fieldset = fieldset.to_windowed_arrays()\n", |
| 313 | + "fieldset.describe()" |
311 | 314 | ] |
312 | 315 | }, |
313 | 316 | { |
|
327 | 330 | }, |
328 | 331 | "outputs": [], |
329 | 332 | "source": [ |
330 | | - "npart = 10\n", |
| 333 | + "npart = 3\n", |
331 | 334 | "pset = parcels.ParticleSet(\n", |
332 | 335 | " fieldset=fieldset,\n", |
333 | 336 | " x=np.linspace(1.9, 3.4, npart),\n", |
334 | | - " y=np.linspace(65, 51.6, npart),\n", |
335 | | - " z=100 * np.ones(npart),\n", |
| 337 | + " y=np.linspace(60, 58, npart),\n", |
| 338 | + " z=20 * np.ones(npart),\n", |
336 | 339 | ")\n", |
337 | 340 | "\n", |
338 | 341 | "pfile = parcels.ParticleFile(\"output_nemo3D.parquet\", outputdt=np.timedelta64(1, \"D\"))\n", |
|
358 | 361 | "metadata": {}, |
359 | 362 | "outputs": [], |
360 | 363 | "source": [ |
361 | | - "field = fieldset.U.data[0, 0, :, :]\n", |
| 364 | + "fig, ax = plt.subplots(figsize=(8, 4))\n", |
| 365 | + "\n", |
| 366 | + "field = fieldset.U.data.isel(time=0, depth_center=0).compute()\n", |
362 | 367 | "field = field.where(field != 0, np.nan) # Mask land values for better plotting\n", |
363 | | - "plt.pcolormesh(fieldset.U.grid.lon, fieldset.U.grid.lat, field, cmap=\"RdBu\")\n", |
| 368 | + "ax.pcolormesh(fieldset.U.grid.lon, fieldset.U.grid.lat, field, cmap=\"RdBu\")\n", |
364 | 369 | "\n", |
365 | 370 | "df = parcels.read_particlefile(\"output_nemo3D.parquet\")\n", |
366 | 371 | "vmin = df[\"z\"].min()\n", |
367 | 372 | "vmax = df[\"z\"].max()\n", |
368 | 373 | "for traj in df.partition_by(\"particle_id\", maintain_order=True):\n", |
369 | | - " plt.scatter(traj[\"x\"], traj[\"y\"], c=-traj[\"z\"], marker=\".\", vmin=-vmax, vmax=-vmin)\n", |
370 | | - "plt.colorbar(label=\"Depth (m)\")\n", |
| 374 | + " ax.plot(traj[\"x\"], traj[\"y\"], \"-\", color=\"k\", alpha=0.5)\n", |
| 375 | + " scat = ax.scatter(\n", |
| 376 | + " traj[\"x\"],\n", |
| 377 | + " traj[\"y\"],\n", |
| 378 | + " c=-traj[\"z\"],\n", |
| 379 | + " marker=\".\",\n", |
| 380 | + " vmin=-vmax,\n", |
| 381 | + " vmax=-vmin,\n", |
| 382 | + " zorder=10,\n", |
| 383 | + " )\n", |
| 384 | + "plt.colorbar(scat, label=\"Depth (m)\", ax=ax)\n", |
| 385 | + "ax.set_xlim([1, 9])\n", |
| 386 | + "ax.set_ylim([56, 61])\n", |
| 387 | + "ax.set_aspect(\"equal\")\n", |
371 | 388 | "plt.show()" |
372 | 389 | ] |
373 | 390 | } |
|
0 commit comments