Skip to content

Commit dc41c89

Browse files
Merge pull request #1809 from OceanParcels/check_misaligned_timestepping_outputdt
Check misaligned timestepping outputdt
2 parents b73b638 + 18b2671 commit dc41c89

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

tests/test_particlefile.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,24 @@ def Update_lon(particle, fieldset, time):
334334
assert np.allclose(pset.lon, 0.6)
335335

336336

337+
@pytest.mark.parametrize("mode", ["scipy", "jit"])
338+
def test_correct_misaligned_outputdt_dt(fieldset, mode, tmp_zarrfile):
339+
"""Testing that outputdt does not need to be a multiple of dt."""
340+
341+
def Update_lon(particle, fieldset, time):
342+
particle_dlon += particle.dt # noqa
343+
344+
pset = ParticleSet(fieldset, pclass=ptype[mode], lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
345+
ofile = pset.ParticleFile(name=tmp_zarrfile, outputdt=3)
346+
pset.execute(pset.Kernel(Update_lon), endtime=11, dt=2, output_file=ofile)
347+
348+
ds = xr.open_zarr(tmp_zarrfile)
349+
assert np.allclose(ds.lon.values, [0, 3, 6, 9])
350+
assert np.allclose(
351+
ds.time.values[0, :], [np.timedelta64(t, "s") for t in [0, 3, 6, 9]], atol=np.timedelta64(1, "ns")
352+
)
353+
354+
337355
def setup_pset_execute(*, fieldset: FieldSet, outputdt: timedelta, execute_kwargs, particle_class=ScipyParticle):
338356
npart = 10
339357

0 commit comments

Comments
 (0)