|
53 | 53 | "metadata": {}, |
54 | 54 | "outputs": [], |
55 | 55 | "source": [ |
| 56 | + "from pathlib import Path\n", |
| 57 | + "\n", |
56 | 58 | "import matplotlib.pyplot as plt\n", |
57 | 59 | "import numpy as np\n", |
58 | 60 | "import pandas as pd\n", |
|
67 | 69 | ")\n", |
68 | 70 | "ds_fields.load() # load the dataset into memory\n", |
69 | 71 | "\n", |
| 72 | + "OUTPUT_FOLDER = Path(\"output\")\n", |
| 73 | + "OUTPUT_FOLDER.mkdir(exist_ok=True)\n", |
| 74 | + "\n", |
70 | 75 | "# Convert to SGRID-compliant dataset and create FieldSet\n", |
71 | 76 | "fields = {\"U\": ds_fields[\"uo\"], \"V\": ds_fields[\"vo\"]}\n", |
72 | 77 | "ds_fset = parcels.convert.copernicusmarine_to_sgrid(fields=fields)\n", |
|
239 | 244 | " outputdt = dt\n", |
240 | 245 | "\n", |
241 | 246 | " pfile = parcels.ParticleFile(\n", |
242 | | - " path=f\"output/AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\",\n", |
| 247 | + " path=OUTPUT_FOLDER\n", |
| 248 | + " / f\"AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\",\n", |
243 | 249 | " outputdt=outputdt,\n", |
244 | 250 | " )\n", |
245 | 251 | "\n", |
|
291 | 297 | "temperature = ds_fields.isel(time=0, depth=0).thetao.plot(cmap=\"Greys\")\n", |
292 | 298 | "for j, dt in enumerate(dt_choices):\n", |
293 | 299 | " df = parcels.read_particlefile(\n", |
294 | | - " f\"output/AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
| 300 | + " OUTPUT_FOLDER / f\"AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
295 | 301 | " )\n", |
296 | 302 | " for i, traj in enumerate(df.partition_by(\"particle_id\", maintain_order=True)):\n", |
297 | 303 | " ax.plot(\n", |
|
376 | 382 | "axs[1].set_ylim(0, 50)\n", |
377 | 383 | "\n", |
378 | 384 | "# set 5 minute dt as benchmark\n", |
379 | | - "df_5min = parcels.read_particlefile(\"output/AdvectionRK2_dt_300s.parquet\")\n", |
| 385 | + "df_5min = parcels.read_particlefile(OUTPUT_FOLDER / \"AdvectionRK2_dt_300s.parquet\")\n", |
380 | 386 | "for i, dt in enumerate(dt_choices[:-1]):\n", |
381 | 387 | " df = parcels.read_particlefile(\n", |
382 | | - " f\"output/AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
| 388 | + " OUTPUT_FOLDER / f\"AdvectionRK2_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
383 | 389 | " )\n", |
384 | 390 | "\n", |
385 | 391 | " # subset 5 minute data to match dt\n", |
|
581 | 587 | " outputdt = dt\n", |
582 | 588 | "\n", |
583 | 589 | " pfile = parcels.ParticleFile(\n", |
584 | | - " path=f\"output/KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\",\n", |
| 590 | + " path=OUTPUT_FOLDER\n", |
| 591 | + " / f\"KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\",\n", |
585 | 592 | " outputdt=outputdt,\n", |
586 | 593 | " )\n", |
587 | 594 | "\n", |
|
620 | 627 | " axs[m, n].set_xlabel(\"Longitude\")\n", |
621 | 628 | " for j, advection_scheme in enumerate(advection_schemes):\n", |
622 | 629 | " df = parcels.read_particlefile(\n", |
623 | | - " f\"output/KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
| 630 | + " OUTPUT_FOLDER\n", |
| 631 | + " / f\"KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
624 | 632 | " )\n", |
625 | 633 | " for i, traj in enumerate(df.partition_by(\"particle_id\", maintain_order=True)):\n", |
626 | 634 | " axs[m, n].plot(\n", |
|
670 | 678 | " axs[m, n].set_yscale(\"log\")\n", |
671 | 679 | " axs[m, n].set_ylim(1e-4, 1e1)\n", |
672 | 680 | " df_RK4 = parcels.read_particlefile(\n", |
673 | | - " f\"output/KernelCompare_AdvectionRK4_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
| 681 | + " OUTPUT_FOLDER\n", |
| 682 | + " / f\"KernelCompare_AdvectionRK4_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
674 | 683 | " )\n", |
675 | 684 | " for j, advection_scheme in enumerate(advection_schemes[:-1]):\n", |
676 | 685 | " df = parcels.read_particlefile(\n", |
677 | | - " f\"output/KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
| 686 | + " OUTPUT_FOLDER\n", |
| 687 | + " / f\"KernelCompare_{advection_scheme.__name__}_dt_{int(dt / np.timedelta64(1, 's'))}s.parquet\"\n", |
678 | 688 | " )\n", |
679 | 689 | "\n", |
680 | 690 | " dist = dist_km(df[\"lon\"], df_RK4[\"lon\"], df[\"lat\"], df_RK4[\"lat\"])\n", |
|
0 commit comments