diff --git a/src/parcels/_core/kernel.py b/src/parcels/_core/kernel.py index f68c8bf09..50bf4d950 100644 --- a/src/parcels/_core/kernel.py +++ b/src/parcels/_core/kernel.py @@ -142,9 +142,7 @@ def check_fieldsets_in_kernels(self, kernel): # TODO v4: this can go into anoth ) self.fieldset.add_context("RK45_tol", 10) if self.fieldset.U.grid._mesh.is_spherical(): - self.fieldset.RK45_tol /= ( - self.fieldset.U.grid.deg2m - ) # TODO does not account for zonal variation in meter -> degree conversion + self.fieldset.context["RK45_tol"] = self.fieldset.RK45_tol / self.fieldset.U.grid.deg2m if not hasattr(self.fieldset, "RK45_min_dt"): warnings.warn( "Setting RK45 minimum timestep to 1 s. Use fieldset.add_context('RK45_min_dt', [timestep]) to change.", diff --git a/tests/test_advection.py b/tests/test_advection.py index ee009c1c9..93929aca1 100644 --- a/tests/test_advection.py +++ b/tests/test_advection.py @@ -395,11 +395,12 @@ def UpdateP(particles, fieldset): # pragma: no cover (AdvectionRK45, 1e-3), ], ) +@pytest.mark.parametrize("mesh", ["flat", "spherical"]) @pytest.mark.parametrize("grid_type", ["A", "C"]) -def test_peninsula_fieldset(kernel, rtol, grid_type): +def test_peninsula_fieldset(kernel, rtol, grid_type, mesh): npart = 2 ds = peninsula_dataset(grid_type=grid_type) - fieldset = FieldSet.from_sgrid_conventions(ds, mesh="flat") + fieldset = FieldSet.from_sgrid_conventions(ds, mesh=mesh) dt = np.timedelta64(30, "m") runtime = np.timedelta64(23, "h") @@ -412,7 +413,7 @@ def test_peninsula_fieldset(kernel, rtol, grid_type): if kernel == AdvectionRK45: fieldset.add_context("RK45_tol", rtol) - fieldset.add_context("RK45_min_dt", 1) + fieldset.add_context("RK45_min_dt", 10) fieldset.add_context("RK45_max_dt", 24 * 60 * 60) def UpdateP(particles, fieldset): # pragma: no cover