Skip to content

Commit 35d5b39

Browse files
Moving test_kernel_language to tests/v4
1 parent 76e1510 commit 35d5b39

2 files changed

Lines changed: 25 additions & 302 deletions

File tree

tests-v3/test_kernel_language.py

Lines changed: 0 additions & 301 deletions
This file was deleted.

tests/test_kernel.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from parcels._core.kernel import Kernel
1212
from parcels._datasets.structured.generated import simple_UV_dataset
1313
from parcels.kernels import AdvectionRK4, AdvectionRK45
14-
from tests.common_kernels import MoveEast, MoveNorth
14+
from tests.common_kernels import DoNothing, MoveEast, MoveNorth
1515

1616

1717
def test_unknown_var_in_kernel(fieldset):
@@ -216,3 +216,27 @@ def Kernel2(particles, fieldset): # pragma: no cover
216216
pset = ParticleSet(fieldset, x=[0.5], y=[0.5])
217217
pset.execute([Kernel1, Kernel2], runtime=1.0, dt=1.0)
218218
np.testing.assert_allclose(pset.x, 0.3, rtol=1e-5)
219+
220+
221+
@pytest.mark.xfail(reason="Modifying dt in a kernel doesn't work GH2765")
222+
def test_dt_modify_in_kernel(fieldset):
223+
TestParticle = Particle.add_variable(Variable("age", dtype=np.float32, initial=0))
224+
pset = ParticleSet(fieldset, pclass=TestParticle, x=[0.5], y=[0])
225+
226+
def ModifyDt(particles, fieldset): # pragma: no cover
227+
particles.age += particles.dt
228+
particles.dt = 2
229+
230+
runtime = 10
231+
expected_age = 1 + 2 * (runtime - 2) # 1 for the first step; 2 for the remaining steps (except last)
232+
pset.execute(ModifyDt, runtime=runtime, dt=1.0)
233+
np.testing.assert_allclose(pset.t[0], runtime)
234+
np.testing.assert_allclose(pset.age[0], expected_age)
235+
236+
237+
@pytest.mark.parametrize("dt", [1e-2, 1e-5, 1e-6, 1e-9])
238+
def test_small_dt(fieldset, dt):
239+
pset = ParticleSet(fieldset, x=[0], y=[0])
240+
241+
pset.execute(DoNothing, dt=dt, runtime=dt * 100)
242+
assert np.allclose([p.t for p in pset], dt * 100)

0 commit comments

Comments
 (0)