From a5639b05fe8f17fb323334264bc28a36696c3756 Mon Sep 17 00:00:00 2001 From: "peter.wolfram" Date: Wed, 17 Jun 2026 09:32:42 +0200 Subject: [PATCH 1/2] removed type check on context --- src/parcels/_core/fieldset.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/parcels/_core/fieldset.py b/src/parcels/_core/fieldset.py index 3a1aa449c..0003993b1 100644 --- a/src/parcels/_core/fieldset.py +++ b/src/parcels/_core/fieldset.py @@ -177,8 +177,6 @@ def add_context(self, name, value): if name in self.context: raise ValueError(f"FieldSet already has a context with name '{name}'") - if not isinstance(value, (float, np.floating, int, np.integer)): - raise ValueError(f"FieldSet context variables have to be of type float or int, got a {type(value)}") self.context[name] = value @property From ea9dac51160b81d05caa39d68675a1ae1d16879c Mon Sep 17 00:00:00 2001 From: "peter.wolfram" Date: Wed, 17 Jun 2026 10:09:33 +0200 Subject: [PATCH 2/2] added 2 tests: float as context and function as context --- tests/test_kernel.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/test_kernel.py b/tests/test_kernel.py index 5a9ac0b31..e9fc3a80a 100644 --- a/tests/test_kernel.py +++ b/tests/test_kernel.py @@ -19,6 +19,33 @@ def ErrorKernel(particles, fieldset): # pragma: no cover pset.execute(ErrorKernel, runtime=np.timedelta64(2, "s"), dt=np.timedelta64(1, "s")) +def test_context_in_kernel(fieldset): + pset = ParticleSet(fieldset, lon=[0.5], lat=[0.5]) + + fieldset.add_context("fix_lon", -0.5) + + def ContextKernel(particles, fieldset): + particles.lon = fieldset.fix_lon + + pset.execute(ContextKernel, runtime=np.timedelta64(2, "s"), dt=np.timedelta64(1, "s")) + assert pset.lon == -0.5 + + +def test_func_context_in_kernel(fieldset): + pset = ParticleSet(fieldset, lon=[0.5], lat=[0.5]) + + def ContextFunc(x): + return 2 * x + + fieldset.add_context("func", ContextFunc) + + def FuncContextKernel(particles, fieldset): + particles.lon = fieldset.func(particles.lon) + + pset.execute(FuncContextKernel, runtime=np.timedelta64(2, "s"), dt=np.timedelta64(1, "s")) + assert pset.lon == 2.0 + + def test_kernel_init(fieldset): pset = ParticleSet(fieldset, lon=[0.5], lat=[0.5]) Kernel(kernels=[AdvectionRK4], pset=pset)