diff --git a/docs/examples/documentation_MPI.ipynb b/docs/examples/documentation_MPI.ipynb
index bdfbc5e6c7..96a7ea0952 100644
--- a/docs/examples/documentation_MPI.ipynb
+++ b/docs/examples/documentation_MPI.ipynb
@@ -245,7 +245,7 @@
" fieldset = set_cms_fieldset(cs)\n",
" pset = parcels.ParticleSet(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lon=[0],\n",
" lat=[0],\n",
" repeatdt=timedelta(hours=1),\n",
@@ -400,7 +400,7 @@
" fieldset = set_cms_fieldset_3D(cs)\n",
" pset = parcels.ParticleSet(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lon=[0],\n",
" lat=[0],\n",
" repeatdt=timedelta(hours=1),\n",
diff --git a/docs/examples/documentation_advanced_zarr.ipynb b/docs/examples/documentation_advanced_zarr.ipynb
index c79a6157a0..a0b96a2812 100644
--- a/docs/examples/documentation_advanced_zarr.ipynb
+++ b/docs/examples/documentation_advanced_zarr.ipynb
@@ -684,7 +684,7 @@
"):\n",
" return parcels.ParticleSet.from_list(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lon=np.random.uniform(*lon_range, size=(number_particles,)),\n",
" lat=np.random.uniform(*lat_range, size=(number_particles,)),\n",
" time=np.zeros(shape=(number_particles,)),\n",
@@ -1108,7 +1108,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110
"
+ " dtype='int64', name='trajectory', length=200))- Conventions :
- CF-1.6/CF-1.7
- feature_type :
- trajectory
- ncei_template_version :
- NCEI_NetCDF_Trajectory_Template_v2.0
- parcels_kernels :
- ParticleAdvectionRK4
- parcels_mesh :
- spherical
- parcels_version :
- v2.4.2-370-gd0cb4110
"
],
"text/plain": [
"\n",
@@ -1448,7 +1448,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110"
]
@@ -1895,7 +1895,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110"
+ " dtype='int64', name='trajectory', length=200))- Conventions :
- CF-1.6/CF-1.7
- feature_type :
- trajectory
- ncei_template_version :
- NCEI_NetCDF_Trajectory_Template_v2.0
- parcels_kernels :
- ParticleAdvectionRK4
- parcels_mesh :
- spherical
- parcels_version :
- v2.4.2-370-gd0cb4110
"
],
"text/plain": [
"\n",
@@ -2235,7 +2235,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110"
]
@@ -2665,7 +2665,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110"
+ " dtype='int64', name='trajectory', length=200))- Conventions :
- CF-1.6/CF-1.7
- feature_type :
- trajectory
- ncei_template_version :
- NCEI_NetCDF_Trajectory_Template_v2.0
- parcels_kernels :
- ParticleAdvectionRK4
- parcels_mesh :
- spherical
- parcels_version :
- v2.4.2-370-gd0cb4110
"
],
"text/plain": [
"\n",
@@ -3005,7 +3005,7 @@
" Conventions: CF-1.6/CF-1.7\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: spherical\n",
" parcels_version: v2.4.2-370-gd0cb4110"
]
diff --git a/docs/examples/documentation_geospatial.ipynb b/docs/examples/documentation_geospatial.ipynb
index b54cd227b9..63d436cad2 100644
--- a/docs/examples/documentation_geospatial.ipynb
+++ b/docs/examples/documentation_geospatial.ipynb
@@ -167,7 +167,7 @@
"# Mesh of particles\n",
"lons, lats = np.meshgrid(range(15, 35, 2), range(-40, -30, 2))\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats\n",
")\n",
"dt = timedelta(hours=24)\n",
"output_file = pset.ParticleFile(\n",
diff --git a/docs/examples/documentation_stuck_particles.ipynb b/docs/examples/documentation_stuck_particles.ipynb
index b850b9ca32..52d6b3db17 100644
--- a/docs/examples/documentation_stuck_particles.ipynb
+++ b/docs/examples/documentation_stuck_particles.ipynb
@@ -482,7 +482,7 @@
"time = np.zeros(lons.size)\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats, time=time\n",
")\n",
"\n",
"kernels = pset.Kernel(parcels.AdvectionRK4)\n",
@@ -940,7 +940,7 @@
"time = np.zeros(npart)\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")\n",
"\n",
"output_file = pset.ParticleFile(name=\"Cgrid-stuck.zarr\", outputdt=timedelta(hours=1))\n",
@@ -1217,7 +1217,7 @@
},
"outputs": [],
"source": [
- "LandParticle = parcels.ScipyParticle.add_variable(\"on_land\")\n",
+ "LandParticle = parcels.Particle.add_variable(\"on_land\")\n",
"\n",
"\n",
"def Sample_land(particle, fieldset, time):\n",
diff --git a/docs/examples/documentation_unstuck_Agrid.ipynb b/docs/examples/documentation_unstuck_Agrid.ipynb
index b6dc9f02e7..fdab6f1c32 100644
--- a/docs/examples/documentation_unstuck_Agrid.ipynb
+++ b/docs/examples/documentation_unstuck_Agrid.ipynb
@@ -799,7 +799,7 @@
"metadata": {},
"outputs": [],
"source": [
- "DisplacementParticle = parcels.ScipyParticle.add_variables(\n",
+ "DisplacementParticle = parcels.Particle.add_variables(\n",
" [\n",
" parcels.Variable(\"dU\"),\n",
" parcels.Variable(\"dV\"),\n",
@@ -902,7 +902,7 @@
],
"source": [
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats, time=time\n",
")\n",
"\n",
"kernels = parcels.AdvectionRK4\n",
@@ -1513,7 +1513,7 @@
")\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats, time=time\n",
")\n",
"\n",
"kernels = pset.Kernel(parcels.AdvectionRK4)\n",
@@ -1559,7 +1559,7 @@
" }, # Setting the interpolation for U and V\n",
")\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats, time=time\n",
")\n",
"\n",
"kernels = pset.Kernel(parcels.AdvectionRK4)\n",
diff --git a/docs/examples/example_brownian.py b/docs/examples/example_brownian.py
index efea1eb090..85c3cfb93b 100644
--- a/docs/examples/example_brownian.py
+++ b/docs/examples/example_brownian.py
@@ -35,7 +35,7 @@ def test_brownian_example(mesh, npart=3000):
random.seed(1234)
pset = parcels.ParticleSet(
fieldset=fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=np.zeros(npart),
lat=np.zeros(npart),
)
diff --git a/docs/examples/example_decaying_moving_eddy.py b/docs/examples/example_decaying_moving_eddy.py
index 90ffd131bb..206eb80832 100644
--- a/docs/examples/example_decaying_moving_eddy.py
+++ b/docs/examples/example_decaying_moving_eddy.py
@@ -69,7 +69,7 @@ def true_values(
def decaying_moving_example(fieldset, outfile, method=parcels.AdvectionRK4):
pset = parcels.ParticleSet(
- fieldset, pclass=parcels.ScipyParticle, lon=start_lon, lat=start_lat
+ fieldset, pclass=parcels.Particle, lon=start_lon, lat=start_lat
)
dt = timedelta(minutes=5)
diff --git a/docs/examples/example_globcurrent.py b/docs/examples/example_globcurrent.py
index e16c58feeb..107e841e39 100755
--- a/docs/examples/example_globcurrent.py
+++ b/docs/examples/example_globcurrent.py
@@ -75,7 +75,7 @@ def test_globcurrent_fieldset_advancetime(dt, lonstart, latstart, use_xarray):
fieldsetsub = set_globcurrent_fieldset(files[0:10], use_xarray=use_xarray)
psetsub = parcels.ParticleSet.from_list(
fieldset=fieldsetsub,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=[lonstart],
lat=[latstart],
)
@@ -85,7 +85,7 @@ def test_globcurrent_fieldset_advancetime(dt, lonstart, latstart, use_xarray):
)
psetall = parcels.ParticleSet.from_list(
fieldset=fieldsetall,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=[lonstart],
lat=[latstart],
)
@@ -107,7 +107,7 @@ def test_globcurrent_particles(use_xarray):
latstart = [-35]
pset = parcels.ParticleSet(
- fieldset, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldset, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
pset.execute(
@@ -126,7 +126,7 @@ def test_globcurrent_time_periodic(rundays):
time_periodic=timedelta(days=365), deferred_load=deferred_load
)
- MyParticle = parcels.ScipyParticle.add_variable("sample_var", initial=0.0)
+ MyParticle = parcels.Particle.add_variable("sample_var", initial=0.0)
pset = parcels.ParticleSet(
fieldset, pclass=MyParticle, lon=25, lat=-35, time=fieldset.U.grid.time[0]
@@ -149,12 +149,12 @@ def test_globcurrent_xarray_vs_netcdf(dt):
lonstart, latstart, runtime = (25, -35, timedelta(days=7))
psetN = parcels.ParticleSet(
- fieldsetNetcdf, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetNetcdf, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetN.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
psetX = parcels.ParticleSet(
- fieldsetxarray, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetxarray, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetX.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
@@ -170,12 +170,12 @@ def test_globcurrent_netcdf_timestamps(dt):
lonstart, latstart, runtime = (25, -35, timedelta(days=7))
psetN = parcels.ParticleSet(
- fieldsetNetcdf, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetNetcdf, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetN.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
psetT = parcels.ParticleSet(
- fieldsetTimestamps, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetTimestamps, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetT.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
@@ -192,28 +192,28 @@ def test__particles_init_time():
# tests the different ways of initialising the time of a particle
pset = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=lonstart,
lat=latstart,
time=np.datetime64("2002-01-15"),
)
pset2 = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=lonstart,
lat=latstart,
time=14 * 86400,
)
pset3 = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=lonstart,
lat=latstart,
time=np.array([np.datetime64("2002-01-15")]),
)
pset4 = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=lonstart,
lat=latstart,
time=[np.datetime64("2002-01-15")],
@@ -228,7 +228,7 @@ def test_globcurrent_time_extrapolation_error(use_xarray):
fieldset = set_globcurrent_fieldset(use_xarray=use_xarray)
pset = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=[25],
lat=[-35],
time=fieldset.U.grid.time[0] - timedelta(days=1).total_seconds(),
@@ -254,7 +254,7 @@ def test_globcurrent_startparticles_between_time_arrays(dt, with_starttime):
)
)
- MyParticle = parcels.ScipyParticle.add_variable("sample_var", initial=0.0)
+ MyParticle = parcels.Particle.add_variable("sample_var", initial=0.0)
def SampleP(particle, fieldset, time): # pragma: no cover
particle.sample_var += fieldset.P[
@@ -293,7 +293,7 @@ def DeleteP0(particle, fieldset, time): # pragma: no cover
particle.delete()
pset0 = parcels.ParticleSet(
- fieldset, pclass=parcels.ScipyParticle, lon=[25, 25], lat=[-35, -35], time=time0
+ fieldset, pclass=parcels.Particle, lon=[25, 25], lat=[-35, -35], time=time0
)
pset0.execute(
@@ -303,7 +303,7 @@ def DeleteP0(particle, fieldset, time): # pragma: no cover
)
pset1 = parcels.ParticleSet(
- fieldset, pclass=parcels.ScipyParticle, lon=[25, 25], lat=[-35, -35], time=time0
+ fieldset, pclass=parcels.Particle, lon=[25, 25], lat=[-35, -35], time=time0
)
pset1.execute(
@@ -319,8 +319,8 @@ def test_globcurrent_pset_fromfile(dt, pid_offset, tmpdir):
filename = tmpdir.join("pset_fromparticlefile.zarr")
fieldset = set_globcurrent_fieldset()
- parcels.ScipyParticle.setLastID(pid_offset)
- pset = parcels.ParticleSet(fieldset, pclass=parcels.ScipyParticle, lon=25, lat=-35)
+ parcels.Particle.setLastID(pid_offset)
+ pset = parcels.ParticleSet(fieldset, pclass=parcels.Particle, lon=25, lat=-35)
pfile = pset.ParticleFile(filename, outputdt=timedelta(hours=6))
pset.execute(
parcels.AdvectionRK4, runtime=timedelta(days=1), dt=dt, output_file=pfile
@@ -330,7 +330,7 @@ def test_globcurrent_pset_fromfile(dt, pid_offset, tmpdir):
restarttime = np.nanmax if dt > 0 else np.nanmin
pset_new = parcels.ParticleSet.from_particlefile(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
filename=filename,
restarttime=restarttime,
)
@@ -351,7 +351,7 @@ def test_error_outputdt_not_multiple_dt(tmpdir):
dt = 81.2584344538292 # number for which output writing fails
- pset = parcels.ParticleSet(fieldset, pclass=parcels.ScipyParticle, lon=[0], lat=[0])
+ pset = parcels.ParticleSet(fieldset, pclass=parcels.Particle, lon=[0], lat=[0])
ofile = pset.ParticleFile(name=filepath, outputdt=timedelta(days=1))
def DoNothing(particle, fieldset, time): # pragma: no cover
diff --git a/docs/examples/example_mitgcm.py b/docs/examples/example_mitgcm.py
index 2554596cec..4eab73381f 100644
--- a/docs/examples/example_mitgcm.py
+++ b/docs/examples/example_mitgcm.py
@@ -32,7 +32,7 @@ def periodicBC(particle, fieldset, time): # pragma: no cover
# Release particles 5 cells away from the Eastern boundary
pset = parcels.ParticleSet.from_line(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
start=(fieldset.U.grid.lon[-5], fieldset.U.grid.lat[5]),
finish=(fieldset.U.grid.lon[-5], fieldset.U.grid.lat[-5]),
size=10,
diff --git a/docs/examples/example_moving_eddies.py b/docs/examples/example_moving_eddies.py
index 6b74a02b96..20bbc54a6a 100644
--- a/docs/examples/example_moving_eddies.py
+++ b/docs/examples/example_moving_eddies.py
@@ -136,7 +136,7 @@ def moving_eddies_example(
pset = parcels.ParticleSet.from_line(
fieldset=fieldset,
size=npart,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
start=start,
finish=finish,
)
@@ -168,7 +168,7 @@ def test_moving_eddies_fwdbwd(mesh, tmpdir, npart=2):
lons = [3.3, 3.3] if fieldset.U.grid.mesh == "spherical" else [3.3e5, 3.3e5]
lats = [46.0, 47.8] if fieldset.U.grid.mesh == "spherical" else [1e5, 2.8e5]
pset = parcels.ParticleSet(
- fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats
+ fieldset=fieldset, pclass=parcels.Particle, lon=lons, lat=lats
)
# Execte for 14 days, with 30sec timesteps and hourly output
@@ -262,7 +262,7 @@ def test_periodic_and_computeTimeChunk_eddies():
fieldset.add_periodic_halo(zonal=True, meridional=True)
pset = parcels.ParticleSet.from_list(
fieldset=fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=[3.3, 3.3],
lat=[46.0, 47.8],
)
diff --git a/docs/examples/example_nemo_curvilinear.py b/docs/examples/example_nemo_curvilinear.py
index d03e2682c2..a9a36fb1eb 100644
--- a/docs/examples/example_nemo_curvilinear.py
+++ b/docs/examples/example_nemo_curvilinear.py
@@ -48,9 +48,7 @@ def periodicBC(particle, fieldSet, time): # pragma: no cover
if particle.lon > 180:
particle_dlon -= 360 # noqa
- pset = parcels.ParticleSet.from_list(
- fieldset, parcels.ScipyParticle, lon=lonp, lat=latp
- )
+ pset = parcels.ParticleSet.from_list(fieldset, parcels.Particle, lon=lonp, lat=latp)
pfile = parcels.ParticleFile(outfile, pset, outputdt=timedelta(days=1))
kernels = pset.Kernel(advection[advtype]) + periodicBC
pset.execute(kernels, runtime=runtime, dt=timedelta(hours=6), output_file=pfile)
diff --git a/docs/examples/example_ofam.py b/docs/examples/example_ofam.py
index a8ca271719..175d5f40de 100644
--- a/docs/examples/example_ofam.py
+++ b/docs/examples/example_ofam.py
@@ -51,12 +51,12 @@ def test_ofam_xarray_vs_netcdf(dt):
lonstart, latstart, runtime = (180, 10, timedelta(days=7))
psetN = parcels.ParticleSet(
- fieldsetNetcdf, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetNetcdf, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetN.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
psetX = parcels.ParticleSet(
- fieldsetxarray, pclass=parcels.ScipyParticle, lon=lonstart, lat=latstart
+ fieldsetxarray, pclass=parcels.Particle, lon=lonstart, lat=latstart
)
psetX.execute(parcels.AdvectionRK4, runtime=runtime, dt=dt)
@@ -75,7 +75,7 @@ def test_ofam_particles(use_xarray):
pset = parcels.ParticleSet(
fieldset,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=lonstart,
lat=latstart,
depth=depstart,
diff --git a/docs/examples/example_peninsula.py b/docs/examples/example_peninsula.py
index b369e91fc7..37d9d354b1 100644
--- a/docs/examples/example_peninsula.py
+++ b/docs/examples/example_peninsula.py
@@ -127,7 +127,7 @@ def peninsula_example(
"""
# First, we define a custom Particle class to which we add a
# custom variable, the initial stream function value p.
- MyParticle = parcels.ScipyParticle.add_variable(
+ MyParticle = parcels.Particle.add_variable(
[
parcels.Variable("p", dtype=np.float32, initial=0.0),
parcels.Variable("p_start", dtype=np.float32, initial=0),
diff --git a/docs/examples/example_radial_rotation.py b/docs/examples/example_radial_rotation.py
index f0a6c94505..dfc45669b7 100644
--- a/docs/examples/example_radial_rotation.py
+++ b/docs/examples/example_radial_rotation.py
@@ -52,7 +52,7 @@ def rotation_example(fieldset, outfile, method=parcels.AdvectionRK4):
pset = parcels.ParticleSet.from_line(
fieldset,
size=npart,
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
start=(30.0, 30.0),
finish=(30.0, 50.0),
) # One particle in centre, one on periphery of Field.
diff --git a/docs/examples/example_stommel.py b/docs/examples/example_stommel.py
index 467a7ee429..2f714bd789 100755
--- a/docs/examples/example_stommel.py
+++ b/docs/examples/example_stommel.py
@@ -127,7 +127,7 @@ def stommel_example(
parcels.Variable("next_dt", dtype=np.float64, initial=dt.total_seconds()),
parcels.Variable("age", dtype=np.float32, initial=0.0),
]
- MyParticle = parcels.ScipyParticle.add_variables(extra_vars)
+ MyParticle = parcels.Particle.add_variables(extra_vars)
if custom_partition_function:
pset = parcels.ParticleSet.from_line(
diff --git a/docs/examples/parcels_tutorial.ipynb b/docs/examples/parcels_tutorial.ipynb
index 992d0d4ec2..1d37d2d2b5 100644
--- a/docs/examples/parcels_tutorial.ipynb
+++ b/docs/examples/parcels_tutorial.ipynb
@@ -148,7 +148,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "The next step is to define a `ParticleSet`. In this case, we start 2 particles at locations (330km, 100km) and (330km, 280km) using the `from_list` constructor method, that are advected on the `fieldset` we defined above. Note that we use `ScipyParticle` as `pclass`, which is the default choice for particle advection in Parcels.\n"
+ "The next step is to define a `ParticleSet`. In this case, we start 2 particles at locations (330km, 100km) and (330km, 280km) using the `from_list` constructor method, that are advected on the `fieldset` we defined above. Note that we use `Particle` as `pclass`, which is the default choice for particle advection in Parcels.\n"
]
},
{
@@ -159,7 +159,7 @@
"source": [
"pset = parcels.ParticleSet.from_list(\n",
" fieldset=fieldset, # the fields on which the particles are advected\n",
- " pclass=parcels.ScipyParticle, # the type of particles (ScipyParticle or a custom class)\n",
+ " pclass=parcels.Particle, # the type of particles (Particle or a custom class)\n",
" lon=[3.3e5, 3.3e5], # a vector of release longitudes\n",
" lat=[1e5, 2.8e5], # a vector of release latitudes\n",
")"
@@ -205,7 +205,7 @@
" U: \n",
" V: \n",
" W: None\n",
- " pclass : \n",
+ " pclass : \n",
" repeatdt : None\n",
" # particles: 2\n",
" particles : [\n",
@@ -362,7 +362,7 @@
" U: \n",
" V: \n",
" W: None\n",
- " pclass : \n",
+ " pclass : \n",
" repeatdt : None\n",
" # particles: 2\n",
" particles : [\n",
@@ -13363,7 +13363,7 @@
" U: \n",
" V: \n",
" W: None\n",
- " pclass : \n",
+ " pclass : \n",
" repeatdt : None\n",
" # particles: 2\n",
" particles : [\n",
@@ -13470,7 +13470,7 @@
"source": [
"pset = parcels.ParticleSet.from_list(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lon=[3.3e5, 3.3e5],\n",
" lat=[1e5, 2.8e5],\n",
")\n",
@@ -13621,7 +13621,7 @@
"source": [
"pset = parcels.ParticleSet.from_line(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" size=5, # releasing 5 particles\n",
" start=(28, -33), # releasing on a line: the start longitude and latitude\n",
" finish=(30, -33), # releasing on a line: the end longitude and latitude\n",
@@ -13744,7 +13744,7 @@
"metadata": {},
"outputs": [],
"source": [
- "SampleParticle = parcels.ScipyParticle.add_variable(\"p\")"
+ "SampleParticle = parcels.Particle.add_variable(\"p\")"
]
},
{
@@ -13933,7 +13933,7 @@
" ),\n",
"]\n",
"\n",
- "DistParticle = parcels.ScipyParticle.add_variables(extra_vars)"
+ "DistParticle = parcels.Particle.add_variables(extra_vars)"
]
},
{
diff --git a/docs/examples/tutorial_Argofloats.ipynb b/docs/examples/tutorial_Argofloats.ipynb
index 9f5eb3fcf6..37248e0f4f 100644
--- a/docs/examples/tutorial_Argofloats.ipynb
+++ b/docs/examples/tutorial_Argofloats.ipynb
@@ -122,7 +122,7 @@
"\n",
"\n",
"# Define a new Particle type including extra Variables\n",
- "ArgoParticle = parcels.ScipyParticle.add_variables(\n",
+ "ArgoParticle = parcels.Particle.add_variables(\n",
" [\n",
" # Phase of cycle:\n",
" # init_descend=0,\n",
diff --git a/docs/examples/tutorial_NestedFields.ipynb b/docs/examples/tutorial_NestedFields.ipynb
index 924420924f..752df732c3 100644
--- a/docs/examples/tutorial_NestedFields.ipynb
+++ b/docs/examples/tutorial_NestedFields.ipynb
@@ -140,7 +140,7 @@
}
],
"source": [
- "pset = parcels.ParticleSet(fieldset, pclass=parcels.ScipyParticle, lon=[0], lat=[1000])\n",
+ "pset = parcels.ParticleSet(fieldset, pclass=parcels.Particle, lon=[0], lat=[1000])\n",
"\n",
"output_file = pset.ParticleFile(\n",
" name=\"NestedFieldParticle.zarr\", outputdt=50, chunks=(1, 100)\n",
@@ -237,7 +237,7 @@
" particle.f = fieldset.F[time, particle.depth, particle.lat, particle.lon]\n",
"\n",
"\n",
- "SampleParticle = parcels.ScipyParticle.add_variable(\"f\", dtype=np.int32)\n",
+ "SampleParticle = parcels.Particle.add_variable(\"f\", dtype=np.int32)\n",
"\n",
"pset = parcels.ParticleSet(fieldset, pclass=SampleParticle, lon=[1000], lat=[500])\n",
"pset.execute(SampleNestedFieldIndex, runtime=1)\n",
diff --git a/docs/examples/tutorial_analyticaladvection.ipynb b/docs/examples/tutorial_analyticaladvection.ipynb
index 4350c74dfd..a25bdcf905 100644
--- a/docs/examples/tutorial_analyticaladvection.ipynb
+++ b/docs/examples/tutorial_analyticaladvection.ipynb
@@ -146,7 +146,7 @@
" particle.radius = fieldset.R[time, particle.depth, particle.lat, particle.lon]\n",
"\n",
"\n",
- "MyParticle = parcels.ScipyParticle.add_variables(\n",
+ "MyParticle = parcels.Particle.add_variables(\n",
" [\n",
" parcels.Variable(\"radius\", dtype=np.float32, initial=0.0),\n",
" parcels.Variable(\"radius_start\", dtype=np.float32, initial=0.0),\n",
@@ -301,7 +301,7 @@
"source": [
"X, Y = np.meshgrid(np.arange(0.15, 1.85, 0.1), np.arange(0.15, 0.85, 0.1))\n",
"\n",
- "psetAA = parcels.ParticleSet(fieldsetDG, pclass=parcels.ScipyParticle, lon=X, lat=Y)\n",
+ "psetAA = parcels.ParticleSet(fieldsetDG, pclass=parcels.Particle, lon=X, lat=Y)\n",
"\n",
"output = psetAA.ParticleFile(name=\"doublegyreAA.zarr\", outputdt=0.1)\n",
"\n",
@@ -14694,7 +14694,7 @@
}
],
"source": [
- "psetRK4 = parcels.ParticleSet(fieldsetDG, pclass=parcels.ScipyParticle, lon=X, lat=Y)\n",
+ "psetRK4 = parcels.ParticleSet(fieldsetDG, pclass=parcels.Particle, lon=X, lat=Y)\n",
"psetRK4.execute(parcels.AdvectionRK4, dt=0.01, runtime=3)"
]
},
@@ -14863,9 +14863,7 @@
"source": [
"X, Y = np.meshgrid(np.arange(0, 19900, 100), np.arange(-100, 100, 100))\n",
"\n",
- "psetAA = parcels.ParticleSet(\n",
- " fieldsetBJ, pclass=parcels.ScipyParticle, lon=X, lat=Y, time=0\n",
- ")\n",
+ "psetAA = parcels.ParticleSet(fieldsetBJ, pclass=parcels.Particle, lon=X, lat=Y, time=0)\n",
"\n",
"output = psetAA.ParticleFile(name=\"bickleyjetAA.zarr\", outputdt=timedelta(hours=1))\n",
"\n",
@@ -28012,7 +28010,7 @@
}
],
"source": [
- "psetRK4 = parcels.ParticleSet(fieldsetBJ, pclass=parcels.ScipyParticle, lon=X, lat=Y)\n",
+ "psetRK4 = parcels.ParticleSet(fieldsetBJ, pclass=parcels.Particle, lon=X, lat=Y)\n",
"\n",
"psetRK4.execute(\n",
" [parcels.AdvectionRK4, ZonalBC], dt=timedelta(minutes=5), runtime=timedelta(days=1)\n",
diff --git a/docs/examples/tutorial_croco_3D.ipynb b/docs/examples/tutorial_croco_3D.ipynb
index cdeab021ab..3710257607 100644
--- a/docs/examples/tutorial_croco_3D.ipynb
+++ b/docs/examples/tutorial_croco_3D.ipynb
@@ -138,7 +138,7 @@
"\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=X, lat=Y, depth=Z\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=X, lat=Y, depth=Z\n",
")\n",
"\n",
"outputfile = pset.ParticleFile(name=\"croco_particles3D.zarr\", outputdt=5000)\n",
@@ -240,7 +240,7 @@
"fieldset_noW.W.data[:] = 0.0\n",
"\n",
"pset_noW = parcels.ParticleSet(\n",
- " fieldset=fieldset_noW, pclass=parcels.ScipyParticle, lon=X, lat=Y, depth=Z\n",
+ " fieldset=fieldset_noW, pclass=parcels.Particle, lon=X, lat=Y, depth=Z\n",
")\n",
"\n",
"outputfile = pset.ParticleFile(name=\"croco_particles_noW.zarr\", outputdt=5000)\n",
diff --git a/docs/examples/tutorial_delaystart.ipynb b/docs/examples/tutorial_delaystart.ipynb
index c31e3d28ba..0c0a30e182 100644
--- a/docs/examples/tutorial_delaystart.ipynb
+++ b/docs/examples/tutorial_delaystart.ipynb
@@ -93,7 +93,7 @@
"time = np.arange(0, npart) * timedelta(hours=1).total_seconds()\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")"
]
},
@@ -10048,7 +10048,7 @@
"repeatdt = timedelta(hours=3) # release from the same set of locations every 3h\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, repeatdt=repeatdt\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, repeatdt=repeatdt\n",
")"
]
},
@@ -21291,7 +21291,7 @@
],
"source": [
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, repeatdt=repeatdt\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, repeatdt=repeatdt\n",
")\n",
"output_file = pset.ParticleFile(\n",
" name=\"DelayParticle_releasedt_9hrs\", outputdt=timedelta(hours=1)\n",
@@ -32300,7 +32300,7 @@
"\n",
"pset = parcels.ParticleSet(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lat=[3e3] * 3,\n",
" lon=[3e3] * 3,\n",
" time=[0, 1, 2],\n",
@@ -32382,7 +32382,7 @@
"for times in [[0, 2], [1]]:\n",
" pset = parcels.ParticleSet(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lat=[3e3] * len(times),\n",
" lon=[3e3] * len(times),\n",
" time=times,\n",
@@ -32472,7 +32472,7 @@
}
],
"source": [
- "GrowingParticle = parcels.ScipyParticle.add_variables(\n",
+ "GrowingParticle = parcels.Particle.add_variables(\n",
" [\n",
" parcels.Variable(\"mass\", initial=0),\n",
" parcels.Variable(\"splittime\", initial=-1),\n",
diff --git a/docs/examples/tutorial_diffusion.ipynb b/docs/examples/tutorial_diffusion.ipynb
index 031c05bf09..03e3900673 100644
--- a/docs/examples/tutorial_diffusion.ipynb
+++ b/docs/examples/tutorial_diffusion.ipynb
@@ -231,7 +231,7 @@
"def get_test_particles():\n",
" return parcels.ParticleSet.from_list(\n",
" fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" lon=np.zeros(100),\n",
" lat=np.ones(100) * 0.75,\n",
" time=np.zeros(100),\n",
@@ -548,7 +548,7 @@
"lon = [29] * len(time)\n",
"lat = [-33] * len(time)\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")"
]
},
diff --git a/docs/examples/tutorial_interaction.ipynb b/docs/examples/tutorial_interaction.ipynb
index 8ceee2d6a7..7713d7f090 100644
--- a/docs/examples/tutorial_interaction.ipynb
+++ b/docs/examples/tutorial_interaction.ipynb
@@ -145,7 +145,7 @@
"\n",
"# Create custom particle class with extra variable that indicates\n",
"# whether the interaction kernel should be executed on this particle.\n",
- "InteractingParticle = parcels.ScipyParticle.add_variable(\n",
+ "InteractingParticle = parcels.Particle.add_variable(\n",
" \"attractor\", dtype=np.bool_, to_write=\"once\"\n",
")\n",
"\n",
@@ -30834,7 +30834,7 @@
"\n",
"# Create custom InteractionParticle class\n",
"# with extra variables nearest_neighbor and mass\n",
- "MergeParticle = parcels.ScipyInteractionParticle.add_variables(\n",
+ "MergeParticle = parcels.InteractionParticle.add_variables(\n",
" [\n",
" parcels.Variable(\"nearest_neighbor\", dtype=np.int64, to_write=False),\n",
" parcels.Variable(\"mass\", initial=1, dtype=np.float32),\n",
diff --git a/docs/examples/tutorial_interpolation.ipynb b/docs/examples/tutorial_interpolation.ipynb
index c70a579087..0bd2861e37 100644
--- a/docs/examples/tutorial_interpolation.ipynb
+++ b/docs/examples/tutorial_interpolation.ipynb
@@ -74,7 +74,7 @@
"metadata": {},
"outputs": [],
"source": [
- "SampleParticle = parcels.ScipyParticle.add_variable(\"p\", dtype=np.float32)\n",
+ "SampleParticle = parcels.Particle.add_variable(\"p\", dtype=np.float32)\n",
"\n",
"\n",
"def SampleP(particle, fieldset, time):\n",
diff --git a/docs/examples/tutorial_kernelloop.ipynb b/docs/examples/tutorial_kernelloop.ipynb
index b793072a51..72fac1efb0 100644
--- a/docs/examples/tutorial_kernelloop.ipynb
+++ b/docs/examples/tutorial_kernelloop.ipynb
@@ -195,7 +195,7 @@
"lons = 26.0 * np.ones(10)\n",
"lats = np.linspace(-37.5, -34.5, 10)\n",
"\n",
- "pset = parcels.ParticleSet(fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats)\n",
+ "pset = parcels.ParticleSet(fieldset, pclass=parcels.Particle, lon=lons, lat=lats)\n",
"output_file = pset.ParticleFile(\n",
" name=\"advection_then_wind.zarr\", outputdt=timedelta(hours=6)\n",
")\n",
@@ -230,7 +230,7 @@
],
"source": [
"pset_reverse = parcels.ParticleSet(\n",
- " fieldset, pclass=parcels.ScipyParticle, lon=lons, lat=lats\n",
+ " fieldset, pclass=parcels.Particle, lon=lons, lat=lats\n",
")\n",
"output_file_reverse = pset_reverse.ParticleFile(\n",
" name=\"wind_then_advection.zarr\", outputdt=timedelta(hours=6)\n",
diff --git a/docs/examples/tutorial_nemo_3D.ipynb b/docs/examples/tutorial_nemo_3D.ipynb
index 27d8f8255a..4b150928c4 100644
--- a/docs/examples/tutorial_nemo_3D.ipynb
+++ b/docs/examples/tutorial_nemo_3D.ipynb
@@ -108,7 +108,7 @@
"\n",
"pset = parcels.ParticleSet.from_line(\n",
" fieldset=fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" size=10,\n",
" start=(1.9, 52.5),\n",
" finish=(3.4, 51.6),\n",
diff --git a/docs/examples/tutorial_nemo_curvilinear.ipynb b/docs/examples/tutorial_nemo_curvilinear.ipynb
index 6f5d940858..057cba2b85 100644
--- a/docs/examples/tutorial_nemo_curvilinear.ipynb
+++ b/docs/examples/tutorial_nemo_curvilinear.ipynb
@@ -177,9 +177,7 @@
"lonp = -180 * np.ones(npart)\n",
"latp = [i for i in np.linspace(-70, 85, npart)]\n",
"\n",
- "pset = parcels.ParticleSet.from_list(\n",
- " fieldset, parcels.ScipyParticle, lon=lonp, lat=latp\n",
- ")\n",
+ "pset = parcels.ParticleSet.from_list(fieldset, parcels.Particle, lon=lonp, lat=latp)\n",
"pfile = parcels.ParticleFile(\"nemo_particles\", pset, outputdt=timedelta(days=1))\n",
"\n",
"pset.execute(\n",
@@ -237,9 +235,7 @@
"metadata": {},
"outputs": [],
"source": [
- "pset = parcels.ParticleSet.from_list(\n",
- " fieldset, parcels.ScipyParticle, lon=lonp, lat=latp\n",
- ")\n",
+ "pset = parcels.ParticleSet.from_list(fieldset, parcels.Particle, lon=lonp, lat=latp)\n",
"pset.populate_indices()"
]
}
diff --git a/docs/examples/tutorial_output.ipynb b/docs/examples/tutorial_output.ipynb
index a75d6a8037..604ecb9202 100644
--- a/docs/examples/tutorial_output.ipynb
+++ b/docs/examples/tutorial_output.ipynb
@@ -56,7 +56,7 @@
"time = np.arange(npart) * timedelta(hours=2).total_seconds()\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")\n",
"\n",
"output_file = pset.ParticleFile(name=\"Output.zarr\", outputdt=timedelta(hours=2))"
@@ -135,7 +135,7 @@
" date_created: 2025-02-12T17:43:13.316432\n",
" feature_type: trajectory\n",
" ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n",
- " parcels_kernels: ScipyParticleAdvectionRK4\n",
+ " parcels_kernels: ParticleAdvectionRK4\n",
" parcels_mesh: flat\n",
" parcels_version: v3.1.2-9-g43813b3b\n"
]
diff --git a/docs/examples/tutorial_parcels_structure.ipynb b/docs/examples/tutorial_parcels_structure.ipynb
index 79251bdfd2..8167b212d1 100644
--- a/docs/examples/tutorial_parcels_structure.ipynb
+++ b/docs/examples/tutorial_parcels_structure.ipynb
@@ -188,7 +188,7 @@
"metadata": {},
"source": [
"1. The `FieldSet` object in which the particles will be released.\n",
- "2. The type of `Particle`: A default `ScipyParticle` or a custom `Particle`-type.\n",
+ "2. The type of `Particle`: A default `Particle` or a custom `Particle`-type.\n",
"3. Initial conditions for each `Variable` defined in the `Particle`, most notably the release locations in `lon` and `lat`.\n"
]
},
@@ -199,7 +199,7 @@
"outputs": [],
"source": [
"# Define a new particleclass with Variable 'age' with initial value 0.\n",
- "AgeParticle = parcels.ScipyParticle.add_variable(parcels.Variable(\"age\", initial=0))\n",
+ "AgeParticle = parcels.Particle.add_variable(parcels.Variable(\"age\", initial=0))\n",
"\n",
"pset = parcels.ParticleSet(\n",
" fieldset=fieldset, # the fields that the particleset uses\n",
diff --git a/docs/examples/tutorial_particle_field_interaction.ipynb b/docs/examples/tutorial_particle_field_interaction.ipynb
index ba126267b8..cb9ae757ef 100644
--- a/docs/examples/tutorial_particle_field_interaction.ipynb
+++ b/docs/examples/tutorial_particle_field_interaction.ipynb
@@ -12,7 +12,7 @@
"\n",
"The concept is similar to that of [Field sampling](https://docs.oceanparcels.org/en/latest/examples/tutorial_sampling.html): here instead, on top of reading the field value at their location, particles are able to alter it as defined in the `Kernel`. To do this, it is important to keep in mind that:\n",
"\n",
- "- Particles have to be defined as `ScipyParticles`\n",
+ "- Particles have to be defined as `Particles`\n",
"- `Field` writing at each `outputdt` is not default and has to be enabled\n",
"- The time of the `Field` to be saved has to be updated within a `Kernel`\n",
"\n",
@@ -138,7 +138,7 @@
"id": "470c2e80",
"metadata": {},
"source": [
- "We will now define a new particle class. A `VectorParticle` is a `ScipyParticle` having a `Variable` to store the current tracer concentration `c` associated with it. As in this case we want our particles to release a tracer into a clean field, we will initialize `c` with an arbitrary value of `100`.\n",
+ "We will now define a new particle class. A `VectorParticle` is a `Particle` having a `Variable` to store the current tracer concentration `c` associated with it. As in this case we want our particles to release a tracer into a clean field, we will initialize `c` with an arbitrary value of `100`.\n",
"\n",
"We also need to define the `Kernel` that performs the particle-field interaction. In this Kernel, we will implement Eq.1, so that $\\Delta c_{particle}$ can be used to update $c_{particle}$ and $C_{field}$ at the particle location, and thus get their values at the current time $t$.\n",
"\n",
@@ -152,9 +152,7 @@
"metadata": {},
"outputs": [],
"source": [
- "VectorParticle = parcels.ScipyParticle.add_variable(\n",
- " \"c\", dtype=np.float32, initial=100.0\n",
- ")\n",
+ "VectorParticle = parcels.Particle.add_variable(\"c\", dtype=np.float32, initial=100.0)\n",
"\n",
"\n",
"def Interaction(particle, fieldset, time):\n",
diff --git a/docs/examples/tutorial_peninsula_AvsCgrid.ipynb b/docs/examples/tutorial_peninsula_AvsCgrid.ipynb
index a3fedebbb7..09d7b7736a 100644
--- a/docs/examples/tutorial_peninsula_AvsCgrid.ipynb
+++ b/docs/examples/tutorial_peninsula_AvsCgrid.ipynb
@@ -101,7 +101,7 @@
" particle.delete()\n",
"\n",
"\n",
- "ptype = parcels.ScipyParticle.add_variables({\"p\": np.float32})"
+ "ptype = parcels.Particle.add_variables({\"p\": np.float32})"
]
},
{
diff --git a/docs/examples/tutorial_periodic_boundaries.ipynb b/docs/examples/tutorial_periodic_boundaries.ipynb
index 556a71cf62..eaf036cdb6 100644
--- a/docs/examples/tutorial_periodic_boundaries.ipynb
+++ b/docs/examples/tutorial_periodic_boundaries.ipynb
@@ -161,7 +161,7 @@
"source": [
"pset = parcels.ParticleSet.from_line(\n",
" fieldset,\n",
- " pclass=parcels.ScipyParticle,\n",
+ " pclass=parcels.Particle,\n",
" size=10,\n",
" start=(20e3, 3e3),\n",
" finish=(20e3, 45e3),\n",
diff --git a/docs/examples/tutorial_sampling.ipynb b/docs/examples/tutorial_sampling.ipynb
index db652acb10..42dea562b8 100644
--- a/docs/examples/tutorial_sampling.ipynb
+++ b/docs/examples/tutorial_sampling.ipynb
@@ -118,7 +118,7 @@
"metadata": {},
"outputs": [],
"source": [
- "SampleParticle = parcels.ScipyParticle.add_variable(\"temperature\")\n",
+ "SampleParticle = parcels.Particle.add_variable(\"temperature\")\n",
"\n",
"pset = parcels.ParticleSet(\n",
" fieldset=fieldset, pclass=SampleParticle, lon=lon, lat=lat, time=time\n",
@@ -248,7 +248,7 @@
"\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")\n",
"\n",
"pset.execute(SampleVel_wrong)"
@@ -281,7 +281,7 @@
"\n",
"\n",
"pset = parcels.ParticleSet(\n",
- " fieldset=fieldset, pclass=parcels.ScipyParticle, lon=lon, lat=lat, time=time\n",
+ " fieldset=fieldset, pclass=parcels.Particle, lon=lon, lat=lat, time=time\n",
")\n",
"\n",
"pset.execute(SampleVel_correct)"
@@ -301,7 +301,7 @@
"metadata": {},
"outputs": [],
"source": [
- "SampleParticle = parcels.ScipyParticle.add_variables(\n",
+ "SampleParticle = parcels.Particle.add_variables(\n",
" [\n",
" parcels.Variable(\"U\", dtype=np.float32, initial=np.nan),\n",
" parcels.Variable(\"V\", dtype=np.float32, initial=np.nan),\n",
@@ -347,7 +347,7 @@
"metadata": {},
"outputs": [],
"source": [
- "SampleParticleOnce = parcels.ScipyParticle.add_variable(\n",
+ "SampleParticleOnce = parcels.Particle.add_variable(\n",
" \"temperature\", initial=0, to_write=\"once\"\n",
")\n",
"\n",
diff --git a/docs/examples/tutorial_timevaryingdepthdimensions.ipynb b/docs/examples/tutorial_timevaryingdepthdimensions.ipynb
index b1fa83da32..a3f10377a2 100644
--- a/docs/examples/tutorial_timevaryingdepthdimensions.ipynb
+++ b/docs/examples/tutorial_timevaryingdepthdimensions.ipynb
@@ -127,9 +127,7 @@
}
],
"source": [
- "pset = parcels.ParticleSet(\n",
- " fieldset, parcels.ScipyParticle, lon=9.5, lat=12.5, depth=-0.1\n",
- ")\n",
+ "pset = parcels.ParticleSet(fieldset, parcels.Particle, lon=9.5, lat=12.5, depth=-0.1)\n",
"\n",
"pfile = pset.ParticleFile(\"SwashParticles\", outputdt=timedelta(seconds=0.05))\n",
"\n",
diff --git a/parcels/kernel.py b/parcels/kernel.py
index 0fbca991fd..08224bb0c6 100644
--- a/parcels/kernel.py
+++ b/parcels/kernel.py
@@ -405,7 +405,7 @@ def evaluate_particle(self, p, endtime):
Parameters
----------
p :
- object of (sub-)type ScipyParticle
+ object of (sub-)type Particle
endtime :
endtime of this overall kernel evaluation step
dt :
diff --git a/parcels/particle.py b/parcels/particle.py
index 9190f91064..2b7cb1a237 100644
--- a/parcels/particle.py
+++ b/parcels/particle.py
@@ -5,7 +5,7 @@
from parcels.tools.statuscodes import StatusCode
-__all__ = ["ScipyInteractionParticle", "ScipyParticle", "Variable"]
+__all__ = ["InteractionParticle", "Particle", "Variable"]
class Variable:
@@ -59,13 +59,13 @@ class ParticleType:
def __init__(self, pclass):
if not isinstance(pclass, type):
raise TypeError("Class object required to derive ParticleType")
- if not issubclass(pclass, ScipyParticle):
- raise TypeError("Class object does not inherit from parcels.ScipyParticle")
+ if not issubclass(pclass, Particle):
+ raise TypeError("Class object does not inherit from parcels.Particle")
self.name = pclass.__name__
# Pick Variable objects out of __dict__.
self.variables = [v for v in pclass.__dict__.values() if isinstance(v, Variable)]
for cls in pclass.__bases__:
- if issubclass(cls, ScipyParticle):
+ if issubclass(cls, Particle):
# Add inherited particle variables
ptype = cls.getPType()
for v in self.variables:
@@ -88,7 +88,7 @@ def __getitem__(self, item):
return v
-class ScipyParticle:
+class Particle:
"""Class encapsulating the basic attributes of a particle, to be executed in SciPy mode.
Parameters
@@ -221,16 +221,16 @@ def set_lonlatdepth_dtype(cls, dtype):
@classmethod
def setLastID(cls, offset): # TODO v4: check if we can implement this in another way
- ScipyParticle.lastID = offset
+ Particle.lastID = offset
-ScipyInteractionParticle = ScipyParticle.add_variables(
+InteractionParticle = Particle.add_variables(
[Variable("vert_dist", dtype=np.float32), Variable("horiz_dist", dtype=np.float32)]
)
-class JITParticle(ScipyParticle):
+class JITParticle(Particle):
def __init__(self, *args, **kwargs):
raise NotImplementedError(
- "JITParticle has been deprecated in Parcels v4. Use ScipyParticle instead."
+ "JITParticle has been deprecated in Parcels v4. Use Particle instead."
) # TODO v4: link to migration guide
diff --git a/parcels/particleset.py b/parcels/particleset.py
index 75d7d22564..4f403d688e 100644
--- a/parcels/particleset.py
+++ b/parcels/particleset.py
@@ -22,7 +22,7 @@
KDTreeFlatNeighborSearch,
)
from parcels.kernel import Kernel
-from parcels.particle import ScipyParticle, Variable
+from parcels.particle import Particle, Variable
from parcels.particledata import ParticleData, ParticleDataIterator
from parcels.particlefile import ParticleFile
from parcels.tools._helpers import particleset_repr, timedelta_to_float
@@ -53,8 +53,8 @@ class ParticleSet:
----------
fieldset :
mod:`parcels.fieldset.FieldSet` object from which to sample velocity.
- pclass : parcels.particle.ScipyParticle
- Optional object that inherits from :mod:`parcels.particle.ScipyParticle` object that defines custom particle
+ pclass : parcels.particle.Particle
+ Optional object that inherits from :mod:`parcels.particle.Particle` object that defines custom particle
lon :
List of initial longitude values for particles
lat :
@@ -83,7 +83,7 @@ class ParticleSet:
def __init__(
self,
fieldset,
- pclass=ScipyParticle,
+ pclass=Particle,
lon=None,
lat=None,
depth=None,
@@ -478,7 +478,7 @@ def from_list(
fieldset :
mod:`parcels.fieldset.FieldSet` object from which to sample velocity
pclass :
- Particle class. May be a parcels.particle.ScipyParticle class as defined in parcels, or a subclass defining a custom particle.
+ Particle class. May be a parcels.particle.Particle class as defined in parcels, or a subclass defining a custom particle.
lon :
List of initial longitude values for particles
lat :
@@ -534,7 +534,7 @@ def from_line(
fieldset :
mod:`parcels.fieldset.FieldSet` object from which to sample velocity
pclass :
- Particle class. May be a parcels.particle.ScipyParticle as defined in parcels, or a subclass defining a custom particle.
+ Particle class. May be a parcels.particle.Particle as defined in parcels, or a subclass defining a custom particle.
start :
Start point (longitude, latitude) for initialisation of particles on a straight line.
finish :
@@ -650,7 +650,7 @@ def from_field(
fieldset : parcels.fieldset.FieldSet
mod:`parcels.fieldset.FieldSet` object from which to sample velocity
pclass :
- Particle class. May be a parcels.particle.ScipyParticle class as defined in parcels, or a subclass defining a custom particle.
+ Particle class. May be a parcels.particle.Particle class as defined in parcels, or a subclass defining a custom particle.
start_field : parcels.field.Field
Field for initialising particles stochastically (horizontally) according to the presented density field.
size :
@@ -694,7 +694,7 @@ def from_particlefile(
fieldset : parcels.fieldset.FieldSet
mod:`parcels.fieldset.FieldSet` object from which to sample velocity
pclass :
- Particle class. May be a parcels.particle.ScipyParticle class as defined in parcels, or a subclass defining a custom particle.
+ Particle class. May be a parcels.particle.Particle class as defined in parcels, or a subclass defining a custom particle.
filename : str
Name of the particlefile from which to read initial conditions
restart : bool
diff --git a/tests/test_advection.py b/tests/test_advection.py
index 7fb8e28691..1a1534b311 100644
--- a/tests/test_advection.py
+++ b/tests/test_advection.py
@@ -15,8 +15,8 @@
AdvectionRK45,
Field,
FieldSet,
+ Particle,
ParticleSet,
- ScipyParticle,
StatusCode,
Variable,
)
@@ -71,7 +71,7 @@ def test_advection_zonal(lon, lat, depth):
dimensions = {"lon": lon, "lat": lat}
fieldset2D = FieldSet.from_data(data2D, dimensions, mesh="spherical", transpose=True)
- pset2D = ParticleSet(fieldset2D, pclass=ScipyParticle, lon=np.zeros(npart) + 20.0, lat=np.linspace(0, 80, npart))
+ pset2D = ParticleSet(fieldset2D, pclass=Particle, lon=np.zeros(npart) + 20.0, lat=np.linspace(0, 80, npart))
pset2D.execute(AdvectionRK4, runtime=timedelta(hours=2), dt=timedelta(seconds=30))
assert (np.diff(pset2D.lon) > 1.0e-4).all()
@@ -79,7 +79,7 @@ def test_advection_zonal(lon, lat, depth):
fieldset3D = FieldSet.from_data(data3D, dimensions, mesh="spherical", transpose=True)
pset3D = ParticleSet(
fieldset3D,
- pclass=ScipyParticle,
+ pclass=Particle,
lon=np.zeros(npart) + 20.0,
lat=np.linspace(0, 80, npart),
depth=np.zeros(npart) + 10.0,
@@ -95,7 +95,7 @@ def test_advection_meridional(lon, lat):
dimensions = {"lon": lon, "lat": lat}
fieldset = FieldSet.from_data(data, dimensions, mesh="spherical", transpose=True)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(-60, 60, npart), lat=np.linspace(0, 30, npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(-60, 60, npart), lat=np.linspace(0, 30, npart))
delta_lat = np.diff(pset.lat)
pset.execute(AdvectionRK4, runtime=timedelta(hours=2), dt=timedelta(seconds=30))
assert np.allclose(np.diff(pset.lat), delta_lat, rtol=1.0e-4)
@@ -115,7 +115,7 @@ def test_advection_3D():
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", transpose=True)
pset = ParticleSet(
- fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.zeros(npart) + 1e2, depth=np.linspace(0, 1, npart)
+ fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.zeros(npart) + 1e2, depth=np.linspace(0, 1, npart)
)
time = timedelta(hours=2).total_seconds()
pset.execute(AdvectionRK4, runtime=time, dt=timedelta(seconds=30))
@@ -157,7 +157,7 @@ def SubmergeParticle(particle, fieldset, time): # pragma: no cover
kernels.append(SubmergeParticle)
kernels.append(DeleteParticle)
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=0.5, lat=0.5, depth=0.9)
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=0.5, lat=0.5, depth=0.9)
pset.execute(kernels, runtime=11.0, dt=1)
if direction == "up" and wErrorThroughSurface:
@@ -179,7 +179,7 @@ def test_advection_RK45(lon, lat, rk45_tol):
fieldset.add_constant("RK45_tol", rk45_tol)
dt = timedelta(seconds=30).total_seconds()
- RK45Particles = ScipyParticle.add_variable("next_dt", dtype=np.float32, initial=dt)
+ RK45Particles = Particle.add_variable("next_dt", dtype=np.float32, initial=dt)
pset = ParticleSet(fieldset, pclass=RK45Particles, lon=np.zeros(npart) + 20.0, lat=np.linspace(0, 80, npart))
pset.execute(AdvectionRK45, runtime=timedelta(hours=2), dt=dt)
assert (np.diff(pset.lon) > 1.0e-4).all()
@@ -235,7 +235,7 @@ def test_advection_3DCROCO():
X, Z = np.meshgrid([40e3, 80e3, 120e3], [-10, -130])
Y = np.ones(X.size) * 100e3
- pclass = ScipyParticle.add_variable(Variable("w"))
+ pclass = Particle.add_variable(Variable("w"))
pset = ParticleSet(fieldset=fieldset, pclass=pclass, lon=X, lat=Y, depth=Z)
def SampleW(particle, fieldset, time): # pragma: no cover
@@ -253,7 +253,7 @@ def test_advection_2DCROCO():
X = np.array([40e3, 80e3, 120e3])
Y = np.ones(X.size) * 100e3
Z = np.zeros(X.size)
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=X, lat=Y, depth=Z)
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=X, lat=Y, depth=Z)
pset.execute([AdvectionRK4], runtime=runtime, dt=100)
assert np.allclose(pset.depth, Z.flatten(), atol=1e-3)
@@ -281,7 +281,7 @@ def test_advection_periodic_zonal():
fieldset.add_periodic_halo(zonal=True, halosize=halosize)
assert len(fieldset.U.lon) == xdim + 2 * halosize
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute(AdvectionRK4 + pset.Kernel(periodicBC), runtime=timedelta(hours=20), dt=timedelta(seconds=30))
assert abs(pset.lon[0] - 0.15) < 0.1
@@ -292,7 +292,7 @@ def test_advection_periodic_meridional():
fieldset.add_periodic_halo(meridional=True)
assert len(fieldset.U.lat) == ydim + 10 # default halo size is 5 grid points
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute(AdvectionRK4 + pset.Kernel(periodicBC), runtime=timedelta(hours=20), dt=timedelta(seconds=30))
assert abs(pset.lat[0] - 0.15) < 0.1
@@ -306,7 +306,7 @@ def test_advection_periodic_zonal_meridional():
assert np.allclose(np.diff(fieldset.U.lat), fieldset.U.lat[1] - fieldset.U.lat[0], rtol=0.001)
assert np.allclose(np.diff(fieldset.U.lon), fieldset.U.lon[1] - fieldset.U.lon[0], rtol=0.001)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0.4], lat=[0.5])
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0.4], lat=[0.5])
pset.execute(AdvectionRK4 + pset.Kernel(periodicBC), runtime=timedelta(hours=20), dt=timedelta(seconds=30))
assert abs(pset.lon[0] - 0.05) < 0.1
assert abs(pset.lat[0] - 0.15) < 0.1
@@ -342,7 +342,7 @@ def test_length1dimensions(u, v, w):
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
x0, y0, z0 = 2, 8, -4
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=x0, lat=y0, depth=z0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=x0, lat=y0, depth=z0)
pfunc = AdvectionRK4 if w is None else AdvectionRK4_3D
kernel = pset.Kernel(pfunc)
pset.execute(kernel, runtime=5, dt=1)
@@ -411,9 +411,9 @@ def test_stationary_eddy(fieldset_stationary, method, rtol, diffField):
dt = timedelta(minutes=3).total_seconds()
endtime = timedelta(hours=6).total_seconds()
- RK45Particles = ScipyParticle.add_variable("next_dt", dtype=np.float32, initial=dt)
+ RK45Particles = Particle.add_variable("next_dt", dtype=np.float32, initial=dt)
- pclass = RK45Particles if method == "RK45" else ScipyParticle
+ pclass = RK45Particles if method == "RK45" else Particle
pset = ParticleSet(fieldset, pclass=pclass, lon=lon, lat=lat)
pset.execute(kernel[method], dt=dt, endtime=endtime)
@@ -443,7 +443,7 @@ def test_stationary_eddy_vertical():
data = {"U": fld1, "V": fldzero, "W": fld2}
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", transpose=True)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=lon, lat=lat, depth=depth)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=lon, lat=lat, depth=depth)
pset.execute(AdvectionRK4_3D, dt=dt, endtime=endtime)
exp_lon = [truth_stationary(x, z, pset[0].time)[0] for x, z in zip(lon, depth, strict=True)]
exp_depth = [truth_stationary(x, z, pset[0].time)[1] for x, z in zip(lon, depth, strict=True)]
@@ -455,7 +455,7 @@ def test_stationary_eddy_vertical():
data = {"U": fldzero, "V": fld2, "W": fld1}
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", transpose=True)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=lon, lat=lat, depth=depth)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=lon, lat=lat, depth=depth)
pset.execute(AdvectionRK4_3D, dt=dt, endtime=endtime)
exp_depth = [truth_stationary(z, y, pset[0].time)[0] for z, y in zip(depth, lat, strict=True)]
exp_lat = [truth_stationary(z, y, pset[0].time)[1] for z, y in zip(depth, lat, strict=True)]
@@ -516,9 +516,9 @@ def test_moving_eddy(fieldset_moving, method, rtol, diffField):
dt = timedelta(minutes=3).total_seconds()
endtime = timedelta(hours=6).total_seconds()
- RK45Particles = ScipyParticle.add_variable("next_dt", dtype=np.float32, initial=dt)
+ RK45Particles = Particle.add_variable("next_dt", dtype=np.float32, initial=dt)
- pclass = RK45Particles if method == "RK45" else ScipyParticle
+ pclass = RK45Particles if method == "RK45" else Particle
pset = ParticleSet(fieldset, pclass=pclass, lon=lon, lat=lat)
pset.execute(kernel[method], dt=dt, endtime=endtime)
@@ -595,9 +595,9 @@ def test_decaying_eddy(fieldset_decaying, method, rtol, diffField):
dt = timedelta(minutes=3).total_seconds()
endtime = timedelta(hours=6).total_seconds()
- RK45Particles = ScipyParticle.add_variable("next_dt", dtype=np.float32, initial=dt)
+ RK45Particles = Particle.add_variable("next_dt", dtype=np.float32, initial=dt)
- pclass = RK45Particles if method == "RK45" else ScipyParticle
+ pclass = RK45Particles if method == "RK45" else Particle
pset = ParticleSet(fieldset, pclass=pclass, lon=lon, lat=lat)
pset.execute(kernel[method], dt=dt, endtime=endtime)
@@ -613,7 +613,7 @@ def test_analyticalAgrid():
U = np.ones((lat.size, lon.size), dtype=np.float32)
V = np.ones((lat.size, lon.size), dtype=np.float32)
fieldset = FieldSet.from_data({"U": U, "V": V}, {"lon": lon, "lat": lat}, mesh="flat")
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=1, lat=1)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=1, lat=1)
with pytest.raises(NotImplementedError):
pset.execute(AdvectionAnalytical, runtime=1)
@@ -641,7 +641,7 @@ def test_uniform_analytical(u, v, w, direction, tmp_zarrfile):
fieldset.V.interp_method = "cgrid_velocity"
x0, y0, z0 = 6.1, 6.2, 20
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=x0, lat=y0, depth=z0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=x0, lat=y0, depth=z0)
outfile = pset.ParticleFile(name=tmp_zarrfile, outputdt=1, chunks=(1, 1))
pset.execute(AdvectionAnalytical, runtime=4, dt=direction, output_file=outfile)
diff --git a/tests/test_diffusion.py b/tests/test_diffusion.py
index df50c81265..389174c759 100644
--- a/tests/test_diffusion.py
+++ b/tests/test_diffusion.py
@@ -10,9 +10,9 @@
AdvectionDiffusionM1,
DiffusionUniformKh,
Field,
+ Particle,
ParticleSet,
RectilinearZGrid,
- ScipyParticle,
)
from tests.utils import create_fieldset_zeros_conversion
@@ -34,7 +34,7 @@ def test_fieldKh_Brownian(mesh):
runtime = timedelta(days=1)
random.seed(1234)
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.zeros(npart))
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.zeros(npart))
pset.execute(pset.Kernel(DiffusionUniformKh), runtime=runtime, dt=timedelta(hours=1))
expected_std_lon = np.sqrt(2 * kh_zonal * mesh_conversion**2 * runtime.total_seconds())
@@ -72,7 +72,7 @@ def test_fieldKh_SpatiallyVaryingDiffusion(mesh, kernel):
runtime = timedelta(days=1)
random.seed(1636)
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.zeros(npart))
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.zeros(npart))
pset.execute(pset.Kernel(kernel), runtime=runtime, dt=timedelta(hours=1))
lats = pset.lat
@@ -95,7 +95,7 @@ def test_randomexponential(lambd):
random.seed(1234)
pset = ParticleSet(
- fieldset=fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.zeros(npart), depth=np.zeros(npart)
+ fieldset=fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.zeros(npart), depth=np.zeros(npart)
)
def vertical_randomexponential(particle, fieldset, time): # pragma: no cover
@@ -122,7 +122,7 @@ def test_randomvonmises(mu, kappa):
# Set random seed
random.seed(1234)
- AngleParticle = ScipyParticle.add_variable("angle")
+ AngleParticle = Particle.add_variable("angle")
pset = ParticleSet(
fieldset=fieldset, pclass=AngleParticle, lon=np.zeros(npart), lat=np.zeros(npart), depth=np.zeros(npart)
)
diff --git a/tests/test_fieldset.py b/tests/test_fieldset.py
index 0fd9cb17a8..1a053cad75 100644
--- a/tests/test_fieldset.py
+++ b/tests/test_fieldset.py
@@ -8,8 +8,8 @@
AdvectionRK4,
AdvectionRK4_3D,
FieldSet,
+ Particle,
ParticleSet,
- ScipyParticle,
Variable,
)
from parcels.field import Field, VectorField
@@ -207,7 +207,7 @@ def test_fieldset_float64(cast_data_dtype, tmpdir):
assert fieldset.U.data.dtype == np.float32
else:
assert fieldset.U.data.dtype == np.float64
- pset = ParticleSet(fieldset, ScipyParticle, lon=1, lat=2)
+ pset = ParticleSet(fieldset, Particle, lon=1, lat=2)
failed = False
try:
@@ -300,7 +300,7 @@ def test_add_duplicate_field(dupobject):
def test_add_field_after_pset(fieldtype):
data, dimensions = generate_fieldset_data(100, 100)
fieldset = FieldSet.from_data(data, dimensions)
- pset = ParticleSet(fieldset, ScipyParticle, lon=0, lat=0) # noqa ; to trigger fieldset._check_complete
+ pset = ParticleSet(fieldset, Particle, lon=0, lat=0) # noqa ; to trigger fieldset._check_complete
field1 = Field("field1", fieldset.U.data, lon=fieldset.U.lon, lat=fieldset.U.lat)
field2 = Field("field2", fieldset.U.data, lon=fieldset.U.lon, lat=fieldset.U.lat)
vfield = VectorField("vfield", field1, field2)
@@ -500,7 +500,7 @@ def test_fieldset_constant():
fieldset.add_constant("moveeast", eastval)
assert fieldset.movewest == westval
- pset = ParticleSet.from_line(fieldset, size=1, pclass=ScipyParticle, start=(0.5, 0.5), finish=(0.5, 0.5))
+ pset = ParticleSet.from_line(fieldset, size=1, pclass=Particle, start=(0.5, 0.5), finish=(0.5, 0.5))
pset.execute(pset.Kernel(addConst), dt=1, runtime=1)
assert abs(pset.lon[0] - (0.5 + westval + eastval)) < 1e-4
@@ -518,7 +518,7 @@ def test_vector_fields(swapUV):
UV = VectorField("UV", fieldset.V, fieldset.U)
fieldset.add_vector_field(UV)
- pset = ParticleSet.from_line(fieldset, size=1, pclass=ScipyParticle, start=(0.5, 0.5), finish=(0.5, 0.5))
+ pset = ParticleSet.from_line(fieldset, size=1, pclass=Particle, start=(0.5, 0.5), finish=(0.5, 0.5))
pset.execute(AdvectionRK4, dt=1, runtime=2)
if swapUV:
assert abs(pset.lon[0] - 0.5) < 1e-9
@@ -549,7 +549,7 @@ def SampleUV2(particle, fieldset, time): # pragma: no cover
particle_dlon += u * particle.dt # noqa
particle_dlat += v * particle.dt # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=0.5, lat=0.5)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=0.5, lat=0.5)
pset.execute(AdvectionRK4 + pset.Kernel(SampleUV2), dt=1, runtime=2)
assert abs(pset.lon[0] - 2.5) < 1e-9
@@ -573,7 +573,7 @@ def UpdateU(particle, fieldset, time): # pragma: no cover
fieldset.U.data[particle.ti, particle.yi, particle.xi] += 1
fieldset.U.grid.time[0] = time
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=5, lat=5)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=5, lat=5)
ofile = pset.ParticleFile(name=tmp_zarrfile, outputdt=2.0)
pset.execute(UpdateU, dt=1, runtime=10, output_file=ofile)
@@ -615,7 +615,7 @@ def test_from_netcdf_chunking(time_periodic, chunksize, deferLoad):
allow_time_extrapolation=True if time_periodic in [False, None] else False,
chunksize=chunksize,
)
- pset = ParticleSet.from_line(fieldset, size=1, pclass=ScipyParticle, start=(0.5, 0.5), finish=(0.5, 0.5))
+ pset = ParticleSet.from_line(fieldset, size=1, pclass=Particle, start=(0.5, 0.5), finish=(0.5, 0.5))
pset.execute(AdvectionRK4, dt=1, runtime=1)
@@ -710,7 +710,7 @@ def sampleTemp(particle, fieldset, time): # pragma: no cover
# test if we can sample a non-timevarying field too
particle.d = fieldset.D[0, 0, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[
Variable("temp", dtype=np.float32, initial=20.0),
Variable("u1", dtype=np.float32, initial=0.0),
@@ -773,7 +773,7 @@ def generate_dataset(xdim, ydim, zdim=1, tdim=1):
fieldset = FieldSet.from_xarray_dataset(ds, variables, dimensions, mesh="flat")
assert fieldset.U._creation_log == "from_xarray_dataset"
- pset = ParticleSet(fieldset, ScipyParticle, 0, 0, depth=20)
+ pset = ParticleSet(fieldset, Particle, 0, 0, depth=20)
pset.execute(AdvectionRK4, dt=1, runtime=10)
if tdim == 10:
@@ -788,7 +788,7 @@ def test_fieldset_frompop():
dimensions = {"lon": "lon", "lat": "lat", "time": "time"}
fieldset = FieldSet.from_pop(filenames, variables, dimensions, mesh="flat")
- pset = ParticleSet.from_list(fieldset, ScipyParticle, lon=[3, 5, 1], lat=[3, 5, 1])
+ pset = ParticleSet.from_list(fieldset, Particle, lon=[3, 5, 1], lat=[3, 5, 1])
pset.execute(AdvectionRK4, runtime=3, dt=1)
@@ -811,7 +811,7 @@ def test_fieldset_from_data_gridtypes():
# Rectilinear Z grid
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
- pset = ParticleSet(fieldset, ScipyParticle, [0, 0], [0, 0], [0, 0.4])
+ pset = ParticleSet(fieldset, Particle, [0, 0], [0, 0], [0, 0.4])
pset.execute(AdvectionRK4, runtime=1.5, dt=0.5)
plon = pset.lon
plat = pset.lat
@@ -822,7 +822,7 @@ def test_fieldset_from_data_gridtypes():
# Rectilinear S grid
dimensions["depth"] = depth_s
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
- pset = ParticleSet(fieldset, ScipyParticle, [0, 0], [0, 0], [0, 0.4])
+ pset = ParticleSet(fieldset, Particle, [0, 0], [0, 0], [0, 0.4])
pset.execute(AdvectionRK4, runtime=1.5, dt=0.5)
assert np.allclose(plon, pset.lon)
assert np.allclose(plat, pset.lat)
@@ -832,7 +832,7 @@ def test_fieldset_from_data_gridtypes():
dimensions["lat"] = latm
dimensions["depth"] = depth
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
- pset = ParticleSet(fieldset, ScipyParticle, [0, 0], [0, 0], [0, 0.4])
+ pset = ParticleSet(fieldset, Particle, [0, 0], [0, 0], [0, 0.4])
pset.execute(AdvectionRK4, runtime=1.5, dt=0.5)
assert np.allclose(plon, pset.lon)
assert np.allclose(plat, pset.lat)
@@ -840,7 +840,7 @@ def test_fieldset_from_data_gridtypes():
# Curvilinear S grid
dimensions["depth"] = depth_s
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
- pset = ParticleSet(fieldset, ScipyParticle, [0, 0], [0, 0], [0, 0.4])
+ pset = ParticleSet(fieldset, Particle, [0, 0], [0, 0], [0, 0.4])
pset.execute(AdvectionRK4, runtime=1.5, dt=0.5)
assert np.allclose(plon, pset.lon)
assert np.allclose(plat, pset.lat)
@@ -869,7 +869,7 @@ def test_deferredload_simplefield(direction, time_extrapolation, tmpdir):
allow_time_extrapolation=time_extrapolation,
)
- SamplingParticle = ScipyParticle.add_variable("p")
+ SamplingParticle = Particle.add_variable("p")
pset = ParticleSet(fieldset, SamplingParticle, lon=0.5, lat=0.5)
def SampleU(particle, fieldset, time): # pragma: no cover
diff --git a/tests/test_fieldset_sampling.py b/tests/test_fieldset_sampling.py
index 5cc6bda7a1..50524791b2 100644
--- a/tests/test_fieldset_sampling.py
+++ b/tests/test_fieldset_sampling.py
@@ -13,8 +13,8 @@
FieldSet,
Geographic,
NestedField,
+ Particle,
ParticleSet,
- ScipyParticle,
StatusCode,
Variable,
)
@@ -22,7 +22,7 @@
def pclass():
- return ScipyParticle.add_variables(
+ return Particle.add_variables(
[Variable("u", dtype=np.float32), Variable("v", dtype=np.float32), Variable("p", dtype=np.float32)]
)
@@ -129,7 +129,7 @@ def test_verticalsampling(zdir):
}
data = {"U": np.zeros(dims, dtype=np.float32), "V": np.zeros(dims, dtype=np.float32)}
fieldset = FieldSet.from_data(data, dimensions, mesh="flat")
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=0, lat=0, depth=0.7 * zdir)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=0, lat=0, depth=0.7 * zdir)
pset.execute(AdvectionRK4, dt=1.0, runtime=1.0)
assert pset[0].zi == [2]
@@ -163,7 +163,7 @@ def test_pset_from_field():
)
fieldset.add_field(densfield)
- pset = ParticleSet.from_field(fieldset, size=npart, pclass=ScipyParticle, start_field=fieldset.start)
+ pset = ParticleSet.from_field(fieldset, size=npart, pclass=Particle, start_field=fieldset.start)
pdens = np.histogram2d(pset.lon, pset.lat, bins=[np.linspace(0.0, 1.0, xdim + 1), np.linspace(0.0, 1.0, ydim + 1)])[
0
]
@@ -292,7 +292,7 @@ def test_partialslip_nearland_zonal(boundaryslip, withW, withT):
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", interp_method=boundaryslip)
pset = ParticleSet(
- fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.linspace(0.1, 3.9, npart), depth=np.zeros(npart)
+ fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.linspace(0.1, 3.9, npart), depth=np.zeros(npart)
)
kernel = AdvectionRK4_3D if withW else AdvectionRK4
pset.execute(kernel, endtime=2, dt=1)
@@ -334,7 +334,7 @@ def test_partialslip_nearland_meridional(boundaryslip, withW):
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", interp_method=interp_method)
pset = ParticleSet(
- fieldset, pclass=ScipyParticle, lat=np.zeros(npart), lon=np.linspace(0.1, 3.9, npart), depth=np.zeros(npart)
+ fieldset, pclass=Particle, lat=np.zeros(npart), lon=np.linspace(0.1, 3.9, npart), depth=np.zeros(npart)
)
kernel = AdvectionRK4_3D if withW else AdvectionRK4
pset.execute(kernel, endtime=2, dt=1)
@@ -367,7 +367,7 @@ def test_partialslip_nearland_vertical(boundaryslip):
fieldset = FieldSet.from_data(data, dimensions, mesh="flat", interp_method={"U": boundaryslip, "V": boundaryslip})
pset = ParticleSet(
- fieldset, pclass=ScipyParticle, lon=np.zeros(npart), lat=np.zeros(npart), depth=np.linspace(0.1, 3.9, npart)
+ fieldset, pclass=Particle, lon=np.zeros(npart), lat=np.zeros(npart), depth=np.linspace(0.1, 3.9, npart)
)
pset.execute(AdvectionRK4, endtime=2, dt=1)
if boundaryslip == "partialslip":
@@ -474,7 +474,7 @@ def test_meridionalflow_spherical():
lonstart = [0, 45]
latstart = [0, 45]
runtime = timedelta(hours=24)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=lonstart, lat=latstart)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=lonstart, lat=latstart)
pset.execute(pset.Kernel(AdvectionRK4), runtime=runtime, dt=timedelta(hours=1))
assert pset.lat[0] - (latstart[0] + runtime.total_seconds() * maxvel / 1852 / 60) < 1e-4
@@ -594,7 +594,7 @@ def test_sampling_3DCROCO():
data_path = os.path.join(os.path.dirname(__file__), "test_data/")
fieldset = FieldSet.from_modulefile(data_path + "fieldset_CROCO3D.py")
- SampleP = ScipyParticle.add_variable("p", initial=0.0)
+ SampleP = Particle.add_variable("p", initial=0.0)
def SampleU(particle, fieldset, time): # pragma: no cover
particle.p = fieldset.U[time, particle.depth, particle.lat, particle.lon, particle]
@@ -651,7 +651,7 @@ def test_sampling_multigrids_non_vectorfield_from_file(npart, tmpdir, chs):
assert fieldset.U.grid is fieldset.V.grid
assert fieldset.U.grid is not fieldset.B.grid
- TestParticle = ScipyParticle.add_variable("sample_var", initial=0.0)
+ TestParticle = Particle.add_variable("sample_var", initial=0.0)
pset = ParticleSet.from_line(fieldset, pclass=TestParticle, start=[0.3, 0.3], finish=[0.7, 0.7], size=npart)
@@ -690,7 +690,7 @@ def test_sampling_multigrids_non_vectorfield(npart):
assert fieldset.U.grid is fieldset.V.grid
assert fieldset.U.grid is not fieldset.B.grid
- TestParticle = ScipyParticle.add_variable("sample_var", initial=0.0)
+ TestParticle = Particle.add_variable("sample_var", initial=0.0)
pset = ParticleSet.from_line(fieldset, pclass=TestParticle, start=[0.3, 0.3], finish=[0.7, 0.7], size=npart)
@@ -718,7 +718,7 @@ def test_sampling_multiple_grid_sizes(ugridfactor):
lat=np.linspace(0.0, 1.0, ydim, dtype=np.float32),
)
fieldset = FieldSet(U, V)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0.8], lat=[0.9])
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0.8], lat=[0.9])
if ugridfactor > 1:
assert fieldset.U.grid is not fieldset.V.grid
@@ -745,7 +745,7 @@ def test_multiple_grid_addlater_error():
)
fieldset = FieldSet(U, V)
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0.8], lat=[0.9]) # noqa ; to trigger fieldset._check_complete
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0.8], lat=[0.9]) # noqa ; to trigger fieldset._check_complete
P = Field(
"P",
diff --git a/tests/test_grids.py b/tests/test_grids.py
index 2947d251ea..f2782a7197 100644
--- a/tests/test_grids.py
+++ b/tests/test_grids.py
@@ -11,10 +11,10 @@
CurvilinearZGrid,
Field,
FieldSet,
+ Particle,
ParticleSet,
RectilinearSGrid,
RectilinearZGrid,
- ScipyParticle,
StatusCode,
UnitConverter,
Variable,
@@ -81,7 +81,7 @@ def sampleTemp(particle, fieldset, time): # pragma: no cover
particle.temp0 = fieldset.temp0[time + particle.dt, particle.depth, particle.lat, particle.lon]
particle.temp1 = fieldset.temp1[time + particle.dt, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("temp0", dtype=np.float32, initial=20.0), Variable("temp1", dtype=np.float32, initial=20.0)]
)
@@ -180,7 +180,7 @@ def bath_func(lon):
assert u_field.grid == v_field.grid
assert u_field.grid == w_field.grid # w_field.grid is now supposed to be grid_1
- pset = ParticleSet.from_list(fieldset, ScipyParticle, lon=[0], lat=[0], depth=[1])
+ pset = ParticleSet.from_list(fieldset, Particle, lon=[0], lat=[0], depth=[1])
for _ in range(10):
pset.execute(AdvectionRK4_3D, runtime=1000, dt=500)
@@ -230,7 +230,7 @@ def bath_func(lon):
def sampleTemp(particle, fieldset, time): # pragma: no cover
particle.temp = fieldset.temp[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variable("temp", dtype=np.float32, initial=20.0)
+ MyParticle = Particle.add_variable("temp", dtype=np.float32, initial=20.0)
lon = 400
lat = 0
@@ -278,7 +278,7 @@ def bath_func(lon):
lat = np.zeros(11)
ratio = [min(i / 10.0, 0.99) for i in range(11)]
depth = bath_func(lon) * ratio
- pset = ParticleSet.from_list(fieldset, ScipyParticle, lon=lon, lat=lat, depth=depth)
+ pset = ParticleSet.from_list(fieldset, Particle, lon=lon, lat=lat, depth=depth)
pset.execute(AdvectionRK4_3D, runtime=10000, dt=500)
assert np.allclose(pset.depth / bath_func(pset.lon), ratio)
@@ -313,7 +313,7 @@ def bath_func(lon):
rel_depth_field = Field("relDepth", rel_depth_data, grid=grid)
fieldset = FieldSet(u_field, v_field, fields={"relDepth": rel_depth_field})
- MyParticle = ScipyParticle.add_variable("relDepth", dtype=np.float32, initial=20.0)
+ MyParticle = Particle.add_variable("relDepth", dtype=np.float32, initial=20.0)
def moveEast(particle, fieldset, time): # pragma: no cover
particle_dlon += 5 * particle.dt # noqa
@@ -353,7 +353,7 @@ def sampleSpeed(particle, fieldset, time): # pragma: no cover
u, v = fieldset.UV[time, particle.depth, particle.lat, particle.lon]
particle.speed = math.sqrt(u * u + v * v)
- MyParticle = ScipyParticle.add_variable("speed", dtype=np.float32, initial=0.0)
+ MyParticle = Particle.add_variable("speed", dtype=np.float32, initial=0.0)
pset = ParticleSet.from_list(fieldset, MyParticle, lon=[400, -200], lat=[600, 600])
pset.execute(pset.Kernel(sampleSpeed), runtime=1)
@@ -378,12 +378,12 @@ def test_nemo_grid():
fieldset = FieldSet.from_nemo(filenames, variables, dimensions)
# test ParticleSet.from_field on curvilinear grids
- ParticleSet.from_field(fieldset, ScipyParticle, start_field=fieldset.U, size=5)
+ ParticleSet.from_field(fieldset, Particle, start_field=fieldset.U, size=5)
def sampleVel(particle, fieldset, time): # pragma: no cover
(particle.zonal, particle.meridional) = fieldset.UV[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("zonal", dtype=np.float32, initial=0.0), Variable("meridional", dtype=np.float32, initial=0.0)]
)
@@ -416,7 +416,7 @@ def test_advect_nemo():
lonp = 175.5
latp = 81.5
- pset = ParticleSet.from_list(fieldset, ScipyParticle, lon=[lonp], lat=[latp])
+ pset = ParticleSet.from_list(fieldset, Particle, lon=[lonp], lat=[latp])
pset.execute(AdvectionRK4, runtime=timedelta(days=2), dt=timedelta(hours=6))
assert abs(pset.lat[0] - latp) < 1e-3
@@ -442,7 +442,7 @@ def test_cgrid_uniform_2dvel(time):
def sampleVel(particle, fieldset, time): # pragma: no cover
(particle.zonal, particle.meridional) = fieldset.UV[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("zonal", dtype=np.float32, initial=0.0), Variable("meridional", dtype=np.float32, initial=0.0)]
)
@@ -496,7 +496,7 @@ def sampleVel(particle, fieldset, time): # pragma: no cover
time, particle.depth, particle.lat, particle.lon
]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[
Variable("zonal", dtype=np.float32, initial=0.0),
Variable("meridional", dtype=np.float32, initial=0.0),
@@ -553,7 +553,7 @@ def sampleVel(particle, fieldset, time): # pragma: no cover
time, particle.depth, particle.lat, particle.lon
]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[
Variable("zonal", dtype=np.float32, initial=0.0),
Variable("meridional", dtype=np.float32, initial=0.0),
@@ -598,7 +598,7 @@ def OutBoundsError(particle, fieldset, time): # pragma: no cover
particle_ddepth -= 3 # noqa
particle.state = StatusCode.Success
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[
Variable("zonal", dtype=np.float32, initial=0.0),
Variable("meridional", dtype=np.float32, initial=0.0),
@@ -703,7 +703,7 @@ def UpdateR(particle, fieldset, time): # pragma: no cover
particle.radius_start = fieldset.R[time, particle.depth, particle.lat, particle.lon]
particle.radius = fieldset.R[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("radius", dtype=np.float32, initial=0.0), Variable("radius_start", dtype=np.float32, initial=0.0)]
)
@@ -779,7 +779,7 @@ def UpdateR(particle, fieldset, time): # pragma: no cover
particle.radius_start = fieldset.R[time, particle.depth, particle.lat, particle.lon]
particle.radius = fieldset.R[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("radius", dtype=np.float32, initial=0.0), Variable("radius_start", dtype=np.float32, initial=0.0)]
)
@@ -856,7 +856,7 @@ def UpdateR(particle, fieldset, time): # pragma: no cover
particle.radius_start = fieldset.R[time, particle.depth, particle.lat, particle.lon]
particle.radius = fieldset.R[time, particle.depth, particle.lat, particle.lon]
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("radius", dtype=np.float32, initial=0.0), Variable("radius_start", dtype=np.float32, initial=0.0)]
)
@@ -928,7 +928,7 @@ def VelocityInterpolator(particle, fieldset, time): # pragma: no cover
particle.Vvel = fieldset.V[time, particle.depth, particle.lat, particle.lon]
particle.Wvel = fieldset.W[time, particle.depth, particle.lat, particle.lon]
- myParticle = ScipyParticle.add_variables(
+ myParticle = Particle.add_variables(
[
Variable("Uvel", dtype=np.float32, initial=0.0),
Variable("Vvel", dtype=np.float32, initial=0.0),
diff --git a/tests/test_interaction.py b/tests/test_interaction.py
index 2eb8b12036..7c0e4fc08a 100644
--- a/tests/test_interaction.py
+++ b/tests/test_interaction.py
@@ -16,7 +16,7 @@
KDTreeFlatNeighborSearch,
)
from parcels.interaction.neighborsearch.basehash import BaseHashNeighborSearch
-from parcels.particle import ScipyInteractionParticle, Variable
+from parcels.particle import InteractionParticle, Variable
from tests.common_kernels import DoNothing
from tests.utils import create_fieldset_unit_mesh, create_flat_positions, create_spherical_positions
@@ -50,7 +50,7 @@ def test_simple_interaction_kernel(fieldset_unit_mesh):
interaction_distance = 6371000 * 0.2 * np.pi / 180
pset = ParticleSet(
fieldset_unit_mesh,
- pclass=ScipyInteractionParticle,
+ pclass=InteractionParticle,
lon=lons,
lat=lats,
interaction_distance=interaction_distance,
@@ -67,7 +67,7 @@ def test_zonal_periodic_distance(mesh, periodic_domain_zonal):
lons = [0.05, 0.4, 0.95]
pset = ParticleSet(
fset,
- pclass=ScipyInteractionParticle,
+ pclass=InteractionParticle,
lon=lons,
lat=[0.5] * len(lons),
interaction_distance=interaction_distance,
@@ -89,7 +89,7 @@ def test_concatenate_interaction_kernels(fieldset_unit_mesh):
pset = ParticleSet(
fieldset_unit_mesh,
- pclass=ScipyInteractionParticle,
+ pclass=InteractionParticle,
lon=lons,
lat=lats,
interaction_distance=interaction_distance,
@@ -114,7 +114,7 @@ def test_concatenate_interaction_kernels_as_pyfunc(fieldset_unit_mesh):
pset = ParticleSet(
fieldset_unit_mesh,
- pclass=ScipyInteractionParticle,
+ pclass=InteractionParticle,
lon=lons,
lat=lats,
interaction_distance=interaction_distance,
@@ -133,7 +133,7 @@ def test_neighbor_merge(fieldset_unit_mesh):
lats = [0.0, 0.0, 0.0, 0.0]
# Distance in meters R_earth*0.2 degrees
interaction_distance = 6371000 * 5.5 * np.pi / 180
- MergeParticle = ScipyInteractionParticle.add_variables(
+ MergeParticle = InteractionParticle.add_variables(
[Variable("nearest_neighbor", dtype=np.int64, to_write=False), Variable("mass", initial=1, dtype=np.float32)]
)
pset = ParticleSet(
@@ -151,7 +151,7 @@ def test_asymmetric_attraction(fieldset_unit_mesh):
lats = [0.0, 0.0, 0.0]
# Distance in meters R_earth*0.2 degrees
interaction_distance = 6371000 * 5.5 * np.pi / 180
- AttractingParticle = ScipyInteractionParticle.add_variable("attractor", dtype=np.bool_, to_write="once")
+ AttractingParticle = InteractionParticle.add_variable("attractor", dtype=np.bool_, to_write="once")
pset = ParticleSet(
fieldset_unit_mesh,
pclass=AttractingParticle,
@@ -190,11 +190,11 @@ def test_pseudo_interaction(runtime, dt):
fieldset = FieldSet(Uflow, Vflow)
# Execute the advection kernel only
- pset = ParticleSet(fieldset, pclass=ScipyInteractionParticle, lon=[2], lat=[2])
+ pset = ParticleSet(fieldset, pclass=InteractionParticle, lon=[2], lat=[2])
pset.execute(AdvectionRK4, runtime=runtime, dt=dt)
# Execute both the advection and interaction kernel.
- pset2 = ParticleSet(fieldset, pclass=ScipyInteractionParticle, lon=[2], lat=[2], interaction_distance=1)
+ pset2 = ParticleSet(fieldset, pclass=InteractionParticle, lon=[2], lat=[2], interaction_distance=1)
pyfunc_inter = pset2.InteractionKernel(ConstantMoveInteraction)
pset2.execute(AdvectionRK4, pyfunc_inter=pyfunc_inter, runtime=runtime, dt=dt)
diff --git a/tests/test_interpolation.py b/tests/test_interpolation.py
index 82299eb161..07c290edb4 100644
--- a/tests/test_interpolation.py
+++ b/tests/test_interpolation.py
@@ -3,7 +3,7 @@
import xarray as xr
import parcels._interpolation as interpolation
-from parcels import AdvectionRK4_3D, FieldSet, ParticleSet, ScipyParticle
+from parcels import AdvectionRK4_3D, FieldSet, Particle, ParticleSet
from tests.utils import TEST_DATA, create_fieldset_zeros_3d
@@ -131,7 +131,7 @@ def test_interp_regression_v3(interp_method):
x, y, z = np.meshgrid(np.linspace(0, 1, 7), np.linspace(0, 1, 13), np.linspace(0, 1, 5))
- TestP = ScipyParticle.add_variable("pid", dtype=np.int32, initial=0)
+ TestP = Particle.add_variable("pid", dtype=np.int32, initial=0)
pset = ParticleSet(fieldset, pclass=TestP, lon=x, lat=y, depth=z, pid=np.arange(x.size))
def DeleteParticle(particle, fieldset, time):
diff --git a/tests/test_kernel_execution.py b/tests/test_kernel_execution.py
index 51d0b7e8cd..8de32ed963 100644
--- a/tests/test_kernel_execution.py
+++ b/tests/test_kernel_execution.py
@@ -8,8 +8,8 @@
AdvectionRK4,
FieldOutOfBoundError,
FieldSet,
+ Particle,
ParticleSet,
- ScipyParticle,
StatusCode,
)
from tests.common_kernels import DeleteParticle, DoNothing, MoveEast, MoveNorth
@@ -48,7 +48,7 @@ def MoveLon_Update_dlon(particle, fieldset, time): # pragma: no cover
def SampleP(particle, fieldset, time): # pragma: no cover
particle.p = fieldset.U[time, particle.depth, particle.lat, particle.lon]
- SampleParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0.0)
+ SampleParticle = Particle.add_variable("p", dtype=np.float32, initial=0.0)
MoveLon = MoveLon_Update_dlon if kernel_type == "update_dlon" else MoveLon_Update_Lon
@@ -84,7 +84,7 @@ def SampleP(particle, fieldset, time): # pragma: no cover
def test_execution_endtime(fieldset_unit_mesh, start, end, substeps, dt):
npart = 10
pset = ParticleSet(
- fieldset_unit_mesh, pclass=ScipyParticle, time=start, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
+ fieldset_unit_mesh, pclass=Particle, time=start, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
)
pset.execute(DoNothing, endtime=end, dt=dt)
assert np.allclose(pset.time_nextloop, end)
@@ -104,7 +104,7 @@ def test_execution_endtime(fieldset_unit_mesh, start, end, substeps, dt):
def test_execution_runtime(fieldset_unit_mesh, start, end, substeps, dt):
npart = 10
pset = ParticleSet(
- fieldset_unit_mesh, pclass=ScipyParticle, time=start, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
+ fieldset_unit_mesh, pclass=Particle, time=start, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
)
t_step = abs(end - start) / substeps
for _ in range(substeps):
@@ -121,9 +121,7 @@ def PythonFail(particle, fieldset, time): # pragma: no cover
else:
pass
- pset = ParticleSet(
- fieldset_unit_mesh, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
- )
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
with pytest.raises(RuntimeError):
pset.execute(PythonFail, endtime=20.0, dt=2.0)
assert len(pset) == npart
@@ -138,9 +136,7 @@ def MoveRight(particle, fieldset, time): # pragma: no cover
tmp1, tmp2 = fieldset.UV[time, particle.depth, particle.lat, particle.lon + 0.1, particle]
particle_dlon += 0.1 # noqa
- pset = ParticleSet(
- fieldset_unit_mesh, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart)
- )
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
with pytest.raises(FieldOutOfBoundError):
pset.execute(MoveRight, endtime=10.0, dt=1.0)
assert len(pset) == npart
@@ -161,7 +157,7 @@ def MoveLeft(particle, fieldset, time): # pragma: no cover
lon = np.linspace(0.05, 0.95, npart)
lat = np.linspace(1, 0, npart)
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=lon, lat=lat)
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=lon, lat=lat)
pset.execute([MoveRight, MoveLeft], endtime=11.0, dt=1.0)
assert len(pset) == npart
assert np.allclose(pset.lon, lon, rtol=1e-5)
@@ -176,7 +172,7 @@ def RecoverAllErrors(particle, fieldset, time): # pragma: no cover
if particle.state > 4:
particle.state = StatusCode.Delete
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=10, lat=0)
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=10, lat=0)
pset.execute([MoveRight, RecoverAllErrors], endtime=11.0, dt=1.0)
assert len(pset) == 0
@@ -188,7 +184,7 @@ def addoneLon(particle, fieldset, time): # pragma: no cover
if particle.lon + particle_dlon >= 10:
particle.state = StatusCode.StopAllExecution
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0, 1], lat=[0, 0])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0, 1], lat=[0, 0])
pset.execute(addoneLon, endtime=20.0, dt=1.0)
assert pset[0].lon == 9
assert pset[0].time == 9
@@ -205,13 +201,13 @@ def MoveRight(particle, fieldset, time): # pragma: no cover
lon = np.linspace(0.05, 0.95, npart)
lat = np.linspace(1, 0, npart)
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=lon, lat=lat)
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=lon, lat=lat)
pset.execute([MoveRight, DeleteParticle], endtime=10.0, dt=1.0)
assert len(pset) == 0
def test_kernel_add_no_new_variables(fieldset_unit_mesh):
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute(pset.Kernel(MoveEast) + pset.Kernel(MoveNorth), endtime=2.0, dt=1.0)
assert np.allclose(pset.lon, 0.6, rtol=1e-5)
assert np.allclose(pset.lat, 0.6, rtol=1e-5)
@@ -228,7 +224,7 @@ def Kernel2(particle, fieldset, time): # pragma: no cover
add_lon = -0.3
particle_dlon += add_lon # noqa
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute([Kernel1, Kernel2], endtime=2.0, dt=1.0)
assert np.allclose(pset.lon, 0.3, rtol=1e-5)
@@ -243,7 +239,7 @@ def MoveEast1(particle, fieldset, time): # pragma: no cover
def MoveEast2(particle, fieldset, time): # pragma: no cover
particle_dlon += add_lon # noqa
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute(pset.Kernel(MoveEast1) + pset.Kernel(MoveEast2), endtime=2.0, dt=1.0)
assert np.allclose(pset.lon, [0.9], rtol=1e-5) # should be 0.5 + 0.2 + 0.2 = 0.9
@@ -262,7 +258,7 @@ def MoveEast(particle, fieldset, time): # pragma: no cover
def MoveNorth(particle, fieldset, time): # pragma: no cover
particle_dlat += 0.1 # noqa
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
kernels_single = pset.Kernel([AdvectionRK4])
kernels_functions = pset.Kernel([AdvectionRK4, MoveEast, MoveNorth])
@@ -277,7 +273,7 @@ def test_combined_kernel_from_list_error_checking(fieldset_unit_mesh):
Tests that various error cases raise appropriate messages.
"""
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
# Test that list has to be non-empty
with pytest.raises(ValueError):
@@ -304,7 +300,7 @@ def MoveWest(particle, fieldset, time): # pragma: no cover
add_lon = -0.3
particle_dlon += add_lon # noqa
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=[0.5], lat=[0.5])
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=[0.5], lat=[0.5])
pset.execute(pset.Kernel(MoveEast), endtime=1.0, dt=1.0)
pset.execute(pset.Kernel(MoveWest), endtime=3.0, dt=1.0)
assert np.allclose(pset.lon, 0.3, rtol=1e-5) # should be 0.5 + 0.1 - 0.3 = 0.3
diff --git a/tests/test_kernel_language.py b/tests/test_kernel_language.py
index aa97eb47fb..b3ba394b16 100644
--- a/tests/test_kernel_language.py
+++ b/tests/test_kernel_language.py
@@ -8,8 +8,8 @@
Field,
FieldSet,
Kernel,
+ Particle,
ParticleSet,
- ScipyParticle,
Variable,
)
from parcels.application_kernels.EOSseawaterproperties import (
@@ -48,7 +48,7 @@ def fieldset_unit_mesh():
def test_expression_int(name, expr, result):
"""Test basic arithmetic expressions."""
npart = 10
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(
create_fieldset_unit_mesh(mesh="spherical"),
pclass=TestParticle,
@@ -72,7 +72,7 @@ def test_expression_int(name, expr, result):
def test_expression_float(name, expr, result):
"""Test basic arithmetic expressions."""
npart = 10
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(
create_fieldset_unit_mesh(mesh="spherical"),
pclass=TestParticle,
@@ -102,7 +102,7 @@ def test_expression_float(name, expr, result):
def test_expression_bool(name, expr, result):
"""Test basic arithmetic expressions."""
npart = 10
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(
create_fieldset_unit_mesh(mesh="spherical"),
pclass=TestParticle,
@@ -115,7 +115,7 @@ def test_expression_bool(name, expr, result):
def test_while_if_break():
"""Test while, if and break commands."""
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=TestParticle, lon=[0], lat=[0])
def kernel(particle, fieldset, time): # pragma: no cover
@@ -132,7 +132,7 @@ def kernel(particle, fieldset, time): # pragma: no cover
def test_nested_if():
"""Test nested if commands."""
- TestParticle = ScipyParticle.add_variables(
+ TestParticle = Particle.add_variables(
[Variable("p0", dtype=np.int32, initial=0), Variable("p1", dtype=np.int32, initial=1)]
)
pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=TestParticle, lon=0, lat=0)
@@ -149,7 +149,7 @@ def kernel(particle, fieldset, time): # pragma: no cover
def test_pass():
"""Test pass commands."""
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=TestParticle, lon=0, lat=0)
def kernel(particle, fieldset, time): # pragma: no cover
@@ -161,7 +161,7 @@ def kernel(particle, fieldset, time): # pragma: no cover
def test_dt_as_variable_in_kernel():
- pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=ScipyParticle, lon=0, lat=0)
+ pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=Particle, lon=0, lat=0)
def kernel(particle, fieldset, time): # pragma: no cover
dt = 1.0 # noqa
@@ -174,8 +174,8 @@ def test_varname_as_fieldname():
fset = create_fieldset_unit_mesh(mesh="spherical")
fset.add_field(Field("speed", 10, lon=0, lat=0))
fset.add_constant("vertical_speed", 0.1)
- Particle = ScipyParticle.add_variable("speed")
- pset = ParticleSet(fset, pclass=Particle, lon=0, lat=0)
+ particle = Particle.add_variable("speed")
+ pset = ParticleSet(fset, pclass=particle, lon=0, lat=0)
def kernel_particlename(particle, fieldset, time): # pragma: no cover
particle.speed = fieldset.speed[particle]
@@ -191,7 +191,7 @@ def kernel_varname(particle, fieldset, time): # pragma: no cover
def test_if_withfield(fieldset_unit_mesh):
"""Test combination of if and Field sampling commands."""
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(fieldset_unit_mesh, pclass=TestParticle, lon=[0], lat=[0])
def kernel(particle, fieldset, time): # pragma: no cover
@@ -226,7 +226,7 @@ def kernel(particle, fieldset, time): # pragma: no cover
def test_print(fieldset_unit_mesh, capfd):
"""Test print statements."""
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(fieldset_unit_mesh, pclass=TestParticle, lon=[0.5], lat=[0.5])
def kernel(particle, fieldset, time): # pragma: no cover
@@ -253,7 +253,7 @@ def kernel2(particle, fieldset, time): # pragma: no cover
def test_fieldset_access(fieldset_unit_mesh):
- pset = ParticleSet(fieldset_unit_mesh, pclass=ScipyParticle, lon=0, lat=0)
+ pset = ParticleSet(fieldset_unit_mesh, pclass=Particle, lon=0, lat=0)
def kernel(particle, fieldset, time): # pragma: no cover
particle.lon = fieldset.U.grid.lon[2]
@@ -264,7 +264,7 @@ def kernel(particle, fieldset, time): # pragma: no cover
@pytest.mark.parametrize("concat", [False, True])
def test_random_kernel_concat(fieldset_unit_mesh, concat):
- TestParticle = ScipyParticle.add_variable("p", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("p", dtype=np.float32, initial=0)
pset = ParticleSet(fieldset_unit_mesh, pclass=TestParticle, lon=0, lat=0)
def RandomKernel(particle, fieldset, time): # pragma: no cover
@@ -279,7 +279,7 @@ def AddOne(particle, fieldset, time): # pragma: no cover
def test_dt_modif_by_kernel():
- TestParticle = ScipyParticle.add_variable("age", dtype=np.float32, initial=0)
+ TestParticle = Particle.add_variable("age", dtype=np.float32, initial=0)
pset = ParticleSet(create_fieldset_unit_mesh(mesh="spherical"), pclass=TestParticle, lon=[0.5], lat=[0])
def modif_dt(particle, fieldset, time): # pragma: no cover
@@ -298,7 +298,7 @@ def test_small_dt(dt, expectation):
npart = 10
pset = ParticleSet(
create_fieldset_unit_mesh(mesh="spherical"),
- pclass=ScipyParticle,
+ pclass=Particle,
lon=np.zeros(npart),
lat=np.zeros(npart),
time=np.arange(0, npart) * dt * 10,
@@ -331,7 +331,7 @@ def generate_fieldset(xdim=2, ydim=2, zdim=2, tdim=1):
data, dimensions = generate_fieldset()
fieldset = FieldSet.from_data(data, dimensions)
- DensParticle = ScipyParticle.add_variable("density", dtype=np.float32)
+ DensParticle = Particle.add_variable("density", dtype=np.float32)
pset = ParticleSet(fieldset, pclass=DensParticle, lon=5, lat=5, depth=1000)
@@ -346,14 +346,14 @@ def test_EOSseawaterproperties_kernels():
)
fieldset.add_constant("refpressure", float(0))
- PoTempParticle = ScipyParticle.add_variables(
+ PoTempParticle = Particle.add_variables(
[Variable("potemp", dtype=np.float32), Variable("pressure", dtype=np.float32, initial=10000)]
)
pset = ParticleSet(fieldset, pclass=PoTempParticle, lon=5, lat=5, depth=1000)
pset.execute(PtempFromTemp, runtime=1)
assert np.allclose(pset[0].potemp, 36.89073)
- TempParticle = ScipyParticle.add_variables(
+ TempParticle = Particle.add_variables(
[Variable("temp", dtype=np.float32), Variable("pressure", dtype=np.float32, initial=10000)]
)
pset = ParticleSet(fieldset, pclass=TempParticle, lon=5, lat=5, depth=1000)
@@ -390,7 +390,7 @@ def generate_fieldset(p, xdim=2, ydim=2, zdim=2, tdim=1):
data, dimensions = generate_fieldset(pressure)
fieldset = FieldSet.from_data(data, dimensions)
- DensParticle = ScipyParticle.add_variable("density", dtype=np.float32)
+ DensParticle = Particle.add_variable("density", dtype=np.float32)
pset = ParticleSet(fieldset, pclass=DensParticle, lon=5, lat=5, depth=1000)
diff --git a/tests/test_particlefile.py b/tests/test_particlefile.py
index 469db1955d..41156e5048 100755
--- a/tests/test_particlefile.py
+++ b/tests/test_particlefile.py
@@ -13,8 +13,8 @@
AdvectionRK4,
Field,
FieldSet,
+ Particle,
ParticleSet,
- ScipyParticle,
Variable,
)
from parcels.particlefile import _set_calendar
@@ -29,19 +29,19 @@ def fieldset():
def test_metadata(fieldset, tmp_zarrfile):
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=0, lat=0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=0, lat=0)
pset.execute(DoNothing, runtime=1, output_file=pset.ParticleFile(tmp_zarrfile, outputdt=1))
ds = xr.open_zarr(tmp_zarrfile)
- assert ds.attrs["parcels_kernels"].lower() == "ScipyParticleDoNothing".lower()
+ assert ds.attrs["parcels_kernels"].lower() == "ParticleDoNothing".lower()
def test_pfile_array_write_zarr_memorystore(fieldset):
"""Check that writing to a Zarr MemoryStore works."""
npart = 10
zarr_store = MemoryStore()
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
pfile = pset.ParticleFile(zarr_store, outputdt=1)
pfile.write(pset, 0)
@@ -52,7 +52,7 @@ def test_pfile_array_write_zarr_memorystore(fieldset):
def test_pfile_array_remove_particles(fieldset, tmp_zarrfile):
npart = 10
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
pfile = pset.ParticleFile(tmp_zarrfile, outputdt=1)
pfile.write(pset, 0)
pset.remove_indices(3)
@@ -68,7 +68,7 @@ def test_pfile_array_remove_particles(fieldset, tmp_zarrfile):
def test_pfile_set_towrite_False(fieldset, tmp_zarrfile):
npart = 10
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart))
pset.set_variable_write_status("depth", False)
pset.set_variable_write_status("lat", False)
pfile = pset.ParticleFile(tmp_zarrfile, outputdt=1)
@@ -92,7 +92,7 @@ def Update_lon(particle, fieldset, time): # pragma: no cover
@pytest.mark.parametrize("chunks_obs", [1, None])
def test_pfile_array_remove_all_particles(fieldset, chunks_obs, tmp_zarrfile):
npart = 10
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=0.5 * np.ones(npart), time=0)
chunks = (npart, chunks_obs) if chunks_obs else None
pfile = pset.ParticleFile(tmp_zarrfile, chunks=chunks, outputdt=1)
pfile.write(pset, 0)
@@ -115,7 +115,7 @@ def test_variable_write_double(fieldset, tmp_zarrfile):
def Update_lon(particle, fieldset, time): # pragma: no cover
particle_dlon += 0.1 # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
ofile = pset.ParticleFile(name=tmp_zarrfile, outputdt=0.00001)
pset.execute(pset.Kernel(Update_lon), endtime=0.001, dt=0.00001, output_file=ofile)
@@ -141,7 +141,7 @@ def test_write_dtypes_pfile(fieldset, tmp_zarrfile):
]
extra_vars = [Variable(f"v_{d.__name__}", dtype=d, initial=0.0) for d in dtypes]
- MyParticle = ScipyParticle.add_variables(extra_vars)
+ MyParticle = Particle.add_variables(extra_vars)
pset = ParticleSet(fieldset, pclass=MyParticle, lon=0, lat=0, time=0)
pfile = pset.ParticleFile(name=tmp_zarrfile, outputdt=1)
@@ -160,7 +160,7 @@ def Update_v(particle, fieldset, time): # pragma: no cover
particle.v_once += 1.0
particle.age += particle.dt
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[
Variable("v_once", dtype=np.float64, initial=0.0, to_write="once"),
Variable("age", dtype=np.float32, initial=0.0),
@@ -189,7 +189,7 @@ def test_pset_repeated_release_delayed_adding_deleting(type, fieldset, repeatdt,
fieldset.maxvar = maxvar
pset = None
- MyParticle = ScipyParticle.add_variables(
+ MyParticle = Particle.add_variables(
[Variable("sample_var", initial=0.0), Variable("v_once", dtype=np.float64, initial=0.0, to_write="once")]
)
@@ -228,9 +228,7 @@ def IncrLon(particle, fieldset, time): # pragma: no cover
@pytest.mark.parametrize("nump", [1, 10])
def test_pfile_chunks_repeatedrelease(fieldset, repeatdt, nump, tmp_zarrfile):
runtime = 8
- pset = ParticleSet(
- fieldset, pclass=ScipyParticle, lon=np.zeros((nump, 1)), lat=np.zeros((nump, 1)), repeatdt=repeatdt
- )
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.zeros((nump, 1)), lat=np.zeros((nump, 1)), repeatdt=repeatdt)
chunks = (20, 10)
pfile = pset.ParticleFile(tmp_zarrfile, outputdt=1, chunks=chunks)
@@ -246,7 +244,7 @@ def test_write_timebackward(fieldset, tmp_zarrfile):
def Update_lon(particle, fieldset, time): # pragma: no cover
particle_dlon -= 0.1 * particle.dt # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lat=np.linspace(0, 1, 3), lon=[0, 0, 0], time=[1, 2, 3])
+ pset = ParticleSet(fieldset, pclass=Particle, lat=np.linspace(0, 1, 3), lon=[0, 0, 0], time=[1, 2, 3])
pfile = pset.ParticleFile(name=tmp_zarrfile, outputdt=1.0)
pset.execute(pset.Kernel(Update_lon), runtime=4, dt=-1.0, output_file=pfile)
ds = xr.open_zarr(tmp_zarrfile)
@@ -261,7 +259,7 @@ def test_write_xiyi(fieldset, tmp_zarrfile):
fieldset.add_field(Field(name="P", data=np.zeros((3, 20)), lon=np.linspace(0, 1, 20), lat=[-2, 0, 2]))
dt = 3600
- XiYiParticle = ScipyParticle.add_variables(
+ XiYiParticle = Particle.add_variables(
[
Variable("pxi0", dtype=np.int32, initial=0.0),
Variable("pxi1", dtype=np.int32, initial=0.0),
@@ -321,7 +319,7 @@ def test_reset_dt(fieldset, tmp_zarrfile):
def Update_lon(particle, fieldset, time): # pragma: no cover
particle_dlon += 0.1 # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
ofile = pset.ParticleFile(name=tmp_zarrfile, outputdt=0.05)
pset.execute(pset.Kernel(Update_lon), endtime=0.12, dt=0.02, output_file=ofile)
@@ -334,7 +332,7 @@ def test_correct_misaligned_outputdt_dt(fieldset, tmp_zarrfile):
def Update_lon(particle, fieldset, time): # pragma: no cover
particle_dlon += particle.dt # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
+ pset = ParticleSet(fieldset, pclass=Particle, lon=[0], lat=[0], lonlatdepth_dtype=np.float64)
ofile = pset.ParticleFile(name=tmp_zarrfile, outputdt=3)
pset.execute(pset.Kernel(Update_lon), endtime=11, dt=2, output_file=ofile)
@@ -345,7 +343,7 @@ def Update_lon(particle, fieldset, time): # pragma: no cover
)
-def setup_pset_execute(*, fieldset: FieldSet, outputdt: timedelta, execute_kwargs, particle_class=ScipyParticle):
+def setup_pset_execute(*, fieldset: FieldSet, outputdt: timedelta, execute_kwargs, particle_class=Particle):
npart = 10
if fieldset is None:
diff --git a/tests/test_particles.py b/tests/test_particles.py
index dba621e0f3..172d2a4291 100644
--- a/tests/test_particles.py
+++ b/tests/test_particles.py
@@ -5,8 +5,8 @@
from parcels import (
AdvectionRK4,
+ Particle,
ParticleSet,
- ScipyParticle,
Variable,
)
from tests.utils import create_fieldset_zeros_unit_mesh
@@ -18,7 +18,7 @@ def fieldset():
def test_print(fieldset):
- TestParticle = ScipyParticle.add_variable("p", to_write=True)
+ TestParticle = Particle.add_variable("p", to_write=True)
pset = ParticleSet(fieldset, pclass=TestParticle, lon=[0, 1], lat=[0, 1])
print(pset)
@@ -30,7 +30,7 @@ def test_variable_init(fieldset):
Variable("p_float", dtype=np.float32, initial=10.0),
Variable("p_double", dtype=np.float64, initial=11.0),
]
- TestParticle = ScipyParticle.add_variables(extra_vars)
+ TestParticle = Particle.add_variables(extra_vars)
TestParticle = TestParticle.add_variable("p_int", np.int32, initial=12.0)
pset = ParticleSet(fieldset, pclass=TestParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
@@ -48,7 +48,7 @@ def addOne(particle, fieldset, time): # pragma: no cover
@pytest.mark.parametrize("type", ["np.int8", "mp.float", "np.int16"])
def test_variable_unsupported_dtypes(fieldset, type):
"""Test that checks errors thrown for unsupported dtypes."""
- TestParticle = ScipyParticle.add_variable("p", dtype=type, initial=10.0)
+ TestParticle = Particle.add_variable("p", dtype=type, initial=10.0)
with pytest.raises((RuntimeError, TypeError)):
ParticleSet(fieldset, pclass=TestParticle, lon=[0], lat=[0])
@@ -56,7 +56,7 @@ def test_variable_unsupported_dtypes(fieldset, type):
def test_variable_special_names(fieldset):
"""Test that checks errors thrown for special names."""
for vars in ["z", "lon"]:
- TestParticle = ScipyParticle.add_variable(vars, dtype=np.float32, initial=10.0)
+ TestParticle = Particle.add_variable(vars, dtype=np.float32, initial=10.0)
with pytest.raises(AttributeError):
ParticleSet(fieldset, pclass=TestParticle, lon=[0], lat=[0])
@@ -67,7 +67,7 @@ def test_variable_init_relative(fieldset, coord_type):
npart = 10
lonlat_type = np.float64 if coord_type == "double" else np.float32
- TestParticle = ScipyParticle.add_variables(
+ TestParticle = Particle.add_variables(
[
Variable("p_base", dtype=lonlat_type, initial=10.0),
Variable("p_relative", dtype=lonlat_type, initial=attrgetter("p_base")),
diff --git a/tests/test_particlesets.py b/tests/test_particlesets.py
index 31f646f9b2..c480295ef7 100644
--- a/tests/test_particlesets.py
+++ b/tests/test_particlesets.py
@@ -5,9 +5,9 @@
CurvilinearZGrid,
Field,
FieldSet,
+ Particle,
ParticleSet,
ParticleSetWarning,
- ScipyParticle,
StatusCode,
Variable,
)
@@ -23,7 +23,7 @@ def fieldset():
@pytest.fixture
def pset(fieldset):
npart = 10
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
return pset
@@ -31,7 +31,7 @@ def test_pset_create_lon_lat(fieldset):
npart = 100
lon = np.linspace(0, 1, npart, dtype=np.float32)
lat = np.linspace(1, 0, npart, dtype=np.float32)
- pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=Particle)
assert np.allclose([p.lon for p in pset], lon, rtol=1e-12)
assert np.allclose([p.lat for p in pset], lat, rtol=1e-12)
@@ -42,7 +42,7 @@ def test_pset_create_line(fieldset, lonlatdepth_dtype):
lon = np.linspace(0, 1, npart, dtype=lonlatdepth_dtype)
lat = np.linspace(1, 0, npart, dtype=lonlatdepth_dtype)
pset = ParticleSet.from_line(
- fieldset, size=npart, start=(0, 1), finish=(1, 0), pclass=ScipyParticle, lonlatdepth_dtype=lonlatdepth_dtype
+ fieldset, size=npart, start=(0, 1), finish=(1, 0), pclass=Particle, lonlatdepth_dtype=lonlatdepth_dtype
)
assert np.allclose([p.lon for p in pset], lon, rtol=1e-12)
assert np.allclose([p.lat for p in pset], lat, rtol=1e-12)
@@ -50,7 +50,7 @@ def test_pset_create_line(fieldset, lonlatdepth_dtype):
def test_create_empty_pset(fieldset):
- pset = ParticleSet(fieldset, pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, pclass=Particle)
assert pset.size == 0
pset.execute(DoNothing, endtime=1.0, dt=1.0)
@@ -62,7 +62,7 @@ def test_pset_create_list_with_customvariable(fieldset):
lon = np.linspace(0, 1, npart, dtype=np.float32)
lat = np.linspace(1, 0, npart, dtype=np.float32)
- MyParticle = ScipyParticle.add_variable("v")
+ MyParticle = Particle.add_variable("v")
v_vals = np.arange(npart)
pset = ParticleSet.from_list(fieldset, lon=lon, lat=lat, v=v_vals, pclass=MyParticle)
@@ -76,7 +76,7 @@ def test_pset_create_fromparticlefile(fieldset, restart, tmp_zarrfile):
lon = np.linspace(0, 1, 10, dtype=np.float32)
lat = np.linspace(1, 0, 10, dtype=np.float32)
- TestParticle = ScipyParticle.add_variable("p", np.float32, initial=0.33)
+ TestParticle = Particle.add_variable("p", np.float32, initial=0.33)
TestParticle = TestParticle.add_variable("p2", np.float32, initial=1, to_write=False)
TestParticle = TestParticle.add_variable("p3", np.float64, to_write="once")
@@ -111,7 +111,7 @@ def test_pset_create_field(fieldset, lonlatdepth_dtype):
shape = (fieldset.U.lon.size, fieldset.U.lat.size)
K = Field("K", lon=fieldset.U.lon, lat=fieldset.U.lat, data=np.ones(shape, dtype=np.float32), transpose=True)
pset = ParticleSet.from_field(
- fieldset, size=npart, pclass=ScipyParticle, start_field=K, lonlatdepth_dtype=lonlatdepth_dtype
+ fieldset, size=npart, pclass=Particle, start_field=K, lonlatdepth_dtype=lonlatdepth_dtype
)
assert (np.array([p.lon for p in pset]) <= K.lon[-1]).all()
assert (np.array([p.lon for p in pset]) >= K.lon[0]).all()
@@ -139,7 +139,7 @@ def test_pset_create_field_curvi():
ufield = Field("U", u, grid=grid)
vfield = Field("V", v, grid=grid)
fieldset = FieldSet(ufield, vfield)
- pset = ParticleSet.from_field(fieldset, size=npart, pclass=ScipyParticle, start_field=fieldset.V)
+ pset = ParticleSet.from_field(fieldset, size=npart, pclass=Particle, start_field=fieldset.V)
lons = np.array([p.lon + 1 for p in pset])
lats = np.array([p.lat + 1 for p in pset])
@@ -158,11 +158,11 @@ def test_pset_create_with_time(fieldset):
lon = np.linspace(0, 1, npart)
lat = np.linspace(1, 0, npart)
time = 5.0
- pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=ScipyParticle, time=time)
+ pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=Particle, time=time)
assert np.allclose([p.time for p in pset], time, rtol=1e-12)
- pset = ParticleSet.from_list(fieldset, lon=lon, lat=lat, pclass=ScipyParticle, time=[time] * npart)
+ pset = ParticleSet.from_list(fieldset, lon=lon, lat=lat, pclass=Particle, time=[time] * npart)
assert np.allclose([p.time for p in pset], time, rtol=1e-12)
- pset = ParticleSet.from_line(fieldset, size=npart, start=(0, 1), finish=(1, 0), pclass=ScipyParticle, time=time)
+ pset = ParticleSet.from_line(fieldset, size=npart, start=(0, 1), finish=(1, 0), pclass=Particle, time=time)
assert np.allclose([p.time for p in pset], time, rtol=1e-12)
@@ -170,12 +170,12 @@ def test_pset_create_outside_time():
fieldset = create_fieldset_zeros_simple(withtime=True)
time = [-1, 0, 1, 20 * 86400]
with pytest.warns(ParticleSetWarning, match="Some particles are set to be released*"):
- ParticleSet(fieldset, pclass=ScipyParticle, lon=[0] * len(time), lat=[0] * len(time), time=time)
+ ParticleSet(fieldset, pclass=Particle, lon=[0] * len(time), lat=[0] * len(time), time=time)
def test_pset_not_multipldt_time(fieldset):
times = [0, 1.1]
- pset = ParticleSet(fieldset, lon=[0] * 2, lat=[0] * 2, pclass=ScipyParticle, time=times)
+ pset = ParticleSet(fieldset, lon=[0] * 2, lat=[0] * 2, pclass=Particle, time=times)
def Addlon(particle, fieldset, time): # pragma: no cover
particle_dlon += particle.dt # noqa
@@ -187,7 +187,7 @@ def Addlon(particle, fieldset, time): # pragma: no cover
def test_pset_repeated_release(fieldset):
npart = 10
time = np.arange(0, npart, 1) # release 1 particle every second
- pset = ParticleSet(fieldset, lon=np.zeros(npart), lat=np.zeros(npart), pclass=ScipyParticle, time=time)
+ pset = ParticleSet(fieldset, lon=np.zeros(npart), lat=np.zeros(npart), pclass=Particle, time=time)
assert np.allclose([p.time for p in pset], time)
def IncrLon(particle, fieldset, time): # pragma: no cover
@@ -198,7 +198,7 @@ def IncrLon(particle, fieldset, time): # pragma: no cover
def test_pset_repeatdt_check_dt(fieldset):
- pset = ParticleSet(fieldset, lon=[0], lat=[0], pclass=ScipyParticle, repeatdt=5)
+ pset = ParticleSet(fieldset, lon=[0], lat=[0], pclass=Particle, repeatdt=5)
def IncrLon(particle, fieldset, time): # pragma: no cover
particle.lon = 1.0
@@ -208,7 +208,7 @@ def IncrLon(particle, fieldset, time): # pragma: no cover
def test_pset_repeatdt_custominit(fieldset):
- MyParticle = ScipyParticle.add_variable("sample_var")
+ MyParticle = Particle.add_variable("sample_var")
pset = ParticleSet(fieldset, lon=0, lat=0, pclass=MyParticle, repeatdt=1, sample_var=5)
@@ -217,7 +217,7 @@ def test_pset_repeatdt_custominit(fieldset):
def test_pset_stop_simulation(fieldset):
- pset = ParticleSet(fieldset, lon=0, lat=0, pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=0, lat=0, pclass=Particle)
def Delete(particle, fieldset, time): # pragma: no cover
if time == 4:
@@ -231,7 +231,7 @@ def test_pset_access(fieldset):
npart = 100
lon = np.linspace(0, 1, npart, dtype=np.float32)
lat = np.linspace(1, 0, npart, dtype=np.float32)
- pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=Particle)
assert pset.size == 100
assert np.allclose([pset[i].lon for i in range(pset.size)], lon, rtol=1e-12)
assert np.allclose([pset[i].lat for i in range(pset.size)], lat, rtol=1e-12)
@@ -239,9 +239,7 @@ def test_pset_access(fieldset):
def test_pset_custom_ptype(fieldset):
npart = 100
- TestParticle = ScipyParticle.add_variable(
- [Variable("p", np.float32, initial=0.33), Variable("n", np.int32, initial=2)]
- )
+ TestParticle = Particle.add_variable([Variable("p", np.float32, initial=0.33), Variable("n", np.int32, initial=2)])
pset = ParticleSet(fieldset, pclass=TestParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
assert pset.size == npart
@@ -253,11 +251,9 @@ def test_pset_add_explicit(fieldset):
npart = 100
lon = np.linspace(0, 1, npart)
lat = np.linspace(1, 0, npart)
- pset = ParticleSet(fieldset, lon=[], lat=[], pclass=ScipyParticle, lonlatdepth_dtype=np.float64)
+ pset = ParticleSet(fieldset, lon=[], lat=[], pclass=Particle, lonlatdepth_dtype=np.float64)
for i in range(npart):
- particle = ParticleSet(
- pclass=ScipyParticle, lon=lon[i], lat=lat[i], fieldset=fieldset, lonlatdepth_dtype=np.float64
- )
+ particle = ParticleSet(pclass=Particle, lon=lon[i], lat=lat[i], fieldset=fieldset, lonlatdepth_dtype=np.float64)
pset.add(particle)
assert pset.size == npart
assert np.allclose([p.lon for p in pset], lon, rtol=1e-12)
@@ -268,9 +264,9 @@ def test_pset_add_shorthand(fieldset):
npart = 100
lon = np.linspace(0, 1, npart, dtype=np.float32)
lat = np.linspace(1, 0, npart, dtype=np.float32)
- pset = ParticleSet(fieldset, lon=[], lat=[], pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=[], lat=[], pclass=Particle)
for i in range(npart):
- pset += ParticleSet(pclass=ScipyParticle, lon=lon[i], lat=lat[i], fieldset=fieldset)
+ pset += ParticleSet(pclass=Particle, lon=lon[i], lat=lat[i], fieldset=fieldset)
assert pset.size == npart
assert np.allclose([p.lon for p in pset], lon, rtol=1e-12)
assert np.allclose([p.lat for p in pset], lat, rtol=1e-12)
@@ -282,9 +278,9 @@ def test_pset_add_execute(fieldset):
def AddLat(particle, fieldset, time): # pragma: no cover
particle_dlat += 0.1 # noqa
- pset = ParticleSet(fieldset, lon=[], lat=[], pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=[], lat=[], pclass=Particle)
for _ in range(npart):
- pset += ParticleSet(pclass=ScipyParticle, lon=0.1, lat=0.1, fieldset=fieldset)
+ pset += ParticleSet(pclass=Particle, lon=0.1, lat=0.1, fieldset=fieldset)
for _ in range(4):
pset.execute(pset.Kernel(AddLat), runtime=1.0, dt=1.0)
assert np.allclose(np.array([p.lat for p in pset]), 0.4, rtol=1e-12)
@@ -292,8 +288,8 @@ def AddLat(particle, fieldset, time): # pragma: no cover
def test_pset_merge_inplace(fieldset):
npart = 100
- pset1 = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
- pset2 = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(0, 1, npart))
+ pset1 = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
+ pset2 = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(0, 1, npart))
assert pset1.size == npart
assert pset2.size == npart
pset1.add(pset2)
@@ -303,8 +299,8 @@ def test_pset_merge_inplace(fieldset):
@pytest.mark.xfail(reason="ParticleSet duplication has not been implemented yet")
def test_pset_merge_duplicate(fieldset):
npart = 100
- pset1 = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
- pset2 = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(0, 1, npart))
+ pset1 = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
+ pset2 = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(0, 1, npart))
pset3 = pset1 + pset2
assert pset1.size == npart
assert pset2.size == npart
@@ -315,7 +311,7 @@ def test_pset_remove_index(fieldset):
npart = 100
lon = np.linspace(0, 1, npart)
lat = np.linspace(1, 0, npart)
- pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=ScipyParticle, lonlatdepth_dtype=np.float64)
+ pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=Particle, lonlatdepth_dtype=np.float64)
for ilon, ilat in zip(lon[::-1], lat[::-1], strict=True):
assert pset[-1].lon == ilon
assert pset[-1].lat == ilat
@@ -328,7 +324,7 @@ def test_pset_remove_particle(fieldset):
npart = 100
lon = np.linspace(0, 1, npart)
lat = np.linspace(1, 0, npart)
- pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=ScipyParticle)
+ pset = ParticleSet(fieldset, lon=lon, lat=lat, pclass=Particle)
for ilon, ilat in zip(lon[::-1], lat[::-1], strict=True):
assert pset.lon[-1] == ilon
assert pset.lat[-1] == ilat
@@ -343,7 +339,7 @@ def DeleteKernel(particle, fieldset, time): # pragma: no cover
if particle.lon >= 0.4:
particle.delete()
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.linspace(1, 0, npart))
pset.execute(pset.Kernel(DeleteKernel), endtime=1.0, dt=1.0)
assert pset.size == 40
@@ -355,7 +351,7 @@ def test_pset_multi_execute(fieldset):
def AddLat(particle, fieldset, time): # pragma: no cover
particle_dlat += 0.1 # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
k_add = pset.Kernel(AddLat)
for _ in range(n + 1):
pset.execute(k_add, runtime=1.0, dt=1.0)
@@ -369,7 +365,7 @@ def test_pset_multi_execute_delete(fieldset):
def AddLat(particle, fieldset, time): # pragma: no cover
particle_dlat += 0.1 # noqa
- pset = ParticleSet(fieldset, pclass=ScipyParticle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
+ pset = ParticleSet(fieldset, pclass=Particle, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
k_add = pset.Kernel(AddLat)
for _ in range(n + 1):
pset.execute(k_add, runtime=1.0, dt=1.0)
@@ -413,7 +409,7 @@ def test_from_field_exact_val(staggered_grid):
FMask = Field("mask", mask, lon, lat, interp_method="cgrid_tracer")
fieldset.add_field(FMask)
- SampleParticle = ScipyParticle.add_variable("mask", initial=0)
+ SampleParticle = Particle.add_variable("mask", initial=0)
def SampleMask(particle, fieldset, time): # pragma: no cover
particle.mask = fieldset.mask[particle]
diff --git a/tests/test_reprs.py b/tests/test_reprs.py
index a7e7c0e2e9..8b6fc79f77 100644
--- a/tests/test_reprs.py
+++ b/tests/test_reprs.py
@@ -52,7 +52,7 @@ def test_check_indentation():
def test_particletype_repr():
- kwargs = dict(pclass=parcels.ScipyParticle)
+ kwargs = dict(pclass=parcels.Particle)
assert_simple_repr(parcels.particle.ParticleType, kwargs)
diff --git a/tests/tools/test_warnings.py b/tests/tools/test_warnings.py
index 1979f9c86e..b6a9ad2169 100644
--- a/tests/tools/test_warnings.py
+++ b/tests/tools/test_warnings.py
@@ -10,9 +10,9 @@
FieldSet,
FieldSetWarning,
KernelWarning,
+ Particle,
ParticleSet,
ParticleSetWarning,
- ScipyParticle,
)
from tests.utils import TEST_DATA
@@ -60,7 +60,7 @@ def test_file_warnings(tmp_zarrfile):
fieldset = FieldSet.from_data(
data={"U": np.zeros((1, 1)), "V": np.zeros((1, 1))}, dimensions={"lon": [0], "lat": [0]}
)
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=[0, 0], lat=[0, 0], time=[0, 1])
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=[0, 0], lat=[0, 0], time=[0, 1])
pfile = pset.ParticleFile(name=tmp_zarrfile, outputdt=2)
with pytest.warns(ParticleSetWarning, match="Some of the particles have a start time difference.*"):
pset.execute(AdvectionRK4, runtime=3, dt=1, output_file=pfile)
@@ -76,7 +76,7 @@ def test_kernel_warnings():
warnings.simplefilter("ignore", FieldSetWarning)
fieldset = FieldSet.from_pop(filenames, variables, dimensions, mesh="flat")
fieldset.W._scaling_factor = 0.01
- pset = ParticleSet(fieldset=fieldset, pclass=ScipyParticle, lon=[0], lat=[0], depth=[0], time=[0])
+ pset = ParticleSet(fieldset=fieldset, pclass=Particle, lon=[0], lat=[0], depth=[0], time=[0])
with pytest.warns(KernelWarning):
pset.execute(AdvectionRK4_3D, runtime=1, dt=1)
@@ -88,7 +88,7 @@ def test_kernel_warnings():
fieldset = FieldSet.from_data(data={"U": u, "V": v}, dimensions={"lon": lon, "lat": lat}, transpose=True)
pset = ParticleSet(
fieldset=fieldset,
- pclass=ScipyParticle.add_variable("next_dt", dtype=np.float32, initial=1),
+ pclass=Particle.add_variable("next_dt", dtype=np.float32, initial=1),
lon=[0],
lat=[0],
depth=[0],
diff --git a/tests/utils.py b/tests/utils.py
index 35e134b21e..783f6ad4bb 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -74,7 +74,7 @@ def create_simple_pset(n=1):
zeros = np.zeros(n)
return parcels.ParticleSet(
fieldset=create_fieldset_unit_mesh(),
- pclass=parcels.ScipyParticle,
+ pclass=parcels.Particle,
lon=zeros,
lat=zeros,
depth=zeros,