@@ -189,3 +189,23 @@ def MoveWest(particle, fieldset, time, dt):
189189 pset .execute (pset .Kernel (MoveEast ) + pset .Kernel (MoveWest ),
190190 starttime = 0. , endtime = 1. , dt = 1. )
191191 assert np .allclose ([p .lon for p in pset ], 0.3 , rtol = 1e-5 )
192+
193+
194+ @pytest .mark .parametrize ('mode' , ['scipy' , 'jit' ])
195+ def test_update_kernel_in_script (fieldset , mode ):
196+ # Testing what happens when kernels are updated during runtime of a script
197+ # Should throw a warning, but go ahead regardless
198+ def MoveEast (particle , fieldset , time , dt ):
199+ add_lon = 0.1
200+ particle .lon += add_lon
201+
202+ def MoveWest (particle , fieldset , time , dt ):
203+ add_lon = - 0.3
204+ particle .lon += add_lon
205+
206+ pset = ParticleSet (fieldset , pclass = ptype [mode ], lon = [0.5 ], lat = [0.5 ])
207+ pset .execute (pset .Kernel (MoveEast ),
208+ starttime = 0. , endtime = 1. , dt = 1. )
209+ pset .execute (pset .Kernel (MoveWest ),
210+ starttime = 1. , endtime = 2. , dt = 1. )
211+ assert np .allclose ([p .lon for p in pset ], 0.3 , rtol = 1e-5 ) # should be 0.5 + 0.1 - 0.3 = 0.3
0 commit comments