Skip to content

Commit ffddc51

Browse files
Adding unit test for subsecond dt
This addresses #2241
1 parent 65be282 commit ffddc51

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

tests/v4/test_particleset_execute.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
ParticleSet,
1313
StatusCode,
1414
UXPiecewiseConstantFace,
15+
Variable,
1516
VectorField,
1617
)
1718
from parcels._datasets.structured.generated import simple_UV_dataset
@@ -150,6 +151,20 @@ def test_particleset_endtime_type(fieldset, endtime, expectation):
150151
pset.execute(endtime=endtime, dt=np.timedelta64(10, "m"), pyfunc=DoNothing)
151152

152153

154+
@pytest.mark.parametrize(
155+
"dt", [np.timedelta64(1, "s"), np.timedelta64(1, "ms"), np.timedelta64(10, "ms"), np.timedelta64(1, "ns")]
156+
)
157+
def test_pset_execute_subsecond_dt(fieldset, dt):
158+
def AddDt(particles, fieldset): # pragma: no cover
159+
dt = particles.dt / np.timedelta64(1, "s")
160+
particles.added_dt += dt
161+
162+
pclass = Particle.add_variable(Variable("added_dt", dtype=np.float32, initial=0))
163+
pset = ParticleSet(fieldset, pclass=pclass, lon=0, lat=0)
164+
pset.execute(AddDt, runtime=dt * 10, dt=dt)
165+
np.testing.assert_allclose(pset[0].added_dt, 10.0 * dt / np.timedelta64(1, "s"), atol=1e-5)
166+
167+
153168
def test_pset_remove_particle_in_kernel(fieldset):
154169
npart = 100
155170
pset = ParticleSet(fieldset, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))

0 commit comments

Comments
 (0)