Skip to content

Commit db776fb

Browse files
fixing merge conflict errors
1 parent 408bcf6 commit db776fb

File tree

5 files changed

+19
-20
lines changed

5 files changed

+19
-20
lines changed

parcels/_datasets/structured/generated.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def radial_rotation_dataset(xdim=200, ydim=200): # Define 2D flat, square field
2929
x0 = 30.0 # Define the origin to be the centre of the Field.
3030
y0 = 30.0
3131

32-
U = np.zeros((1, 1, ydim, xdim), dtype=np.float32)
33-
V = np.zeros((1, 1, ydim, xdim), dtype=np.float32)
32+
U = np.zeros((2, 1, ydim, xdim), dtype=np.float32)
33+
V = np.zeros((2, 1, ydim, xdim), dtype=np.float32)
3434

3535
omega = 2 * np.pi / 86400.0 # Define the rotational period as 1 day.
3636

parcels/application_kernels/advection.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,15 @@ def AdvectionRK45(particle, fieldset, time): # pragma: no cover
116116
and doubled if error is smaller than 1/10th of tolerance.
117117
"""
118118
dt = particle.next_dt / np.timedelta64(1, "s") # TODO: improve API for converting dt to seconds
119-
if dt > fieldset.RK45_max_dt:
120-
dt = fieldset.RK45_max_dt
121-
particle.next_dt = fieldset.RK45_max_dt * np.timedelta64(1, "s")
122-
if dt < fieldset.RK45_min_dt:
123-
particle.next_dt = fieldset.RK45_min_dt * np.timedelta64(1, "s")
124-
return StatusCode.Repeat
119+
particle.next_dt = np.where(
120+
dt > fieldset.RK45_max_dt, fieldset.RK45_max_dt * np.timedelta64(1, "s"), particle.next_dt
121+
)
122+
particle.next_dt = np.where(
123+
dt < fieldset.RK45_min_dt, fieldset.RK45_min_dt * np.timedelta64(1, "s"), particle.next_dt
124+
)
125125
particle.dt = particle.next_dt
126+
particle.state = np.where(dt < fieldset.RK45_min_dt, StatusCode.Repeat, particle.state)
127+
dt = np.where(dt > fieldset.RK45_max_dt, fieldset.RK45_max_dt, dt)
126128

127129
c = [1.0 / 4.0, 3.0 / 8.0, 12.0 / 13.0, 1.0, 1.0 / 2.0]
128130
A = [

parcels/kernel.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,8 +291,11 @@ def evaluate_pset(self, pset, endtime):
291291

292292
pre_dt = pset.dt
293293
try: # Use next_dt from AdvectionRK45 if it is set
294-
if abs(endtime - pset.time_nextloop) < abs(pset.next_dt) - np.timedelta64(1000, "ns"):
295-
pset.next_dt = sign_dt * (endtime - pset.time_nextloop)
294+
pset.next_dt = np.where(
295+
sign_dt * (endtime - pset.time_nextloop) <= pset.next_dt,
296+
np.where(sign_dt * (endtime - pset.time_nextloop) < 0, 0, sign_dt * (endtime - pset.time_nextloop)),
297+
pset.next_dt,
298+
)
296299
except KeyError:
297300
pset.dt = np.where(
298301
sign_dt * (endtime - pset.time_nextloop) <= pset.dt,

parcels/particleset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def __init__(
150150
if isinstance(v.initial, attrgetter):
151151
initial = v.initial(self)
152152
else:
153-
initial = [np.array(v.initial, dtype=v.dtype)] * len(trajectory_ids)
153+
initial = np.repeat(v.initial, len(trajectory_ids)).astype(v.dtype)
154154
self._data[v.name] = initial
155155

156156
# update initial values provided on ParticleSet creation

tests/v4/test_advection.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ def test_advection_zonal_periodic():
7979
startlon = np.array([0.5, 0.4])
8080
pset = ParticleSet(fieldset, pclass=PeriodicParticle, lon=startlon, lat=[0.5, 0.5])
8181
pset.execute([AdvectionEE, periodicBC], runtime=np.timedelta64(40, "s"), dt=np.timedelta64(1, "s"))
82-
np.testing.assertallclose(pset.total_dlon, 4, atol=1e-5)
83-
np.testing.assertallclose(pset.lon_nextloop, startlon, atol=1e-5)
84-
np.testing.assertallclose(pset.lat_nextloop, 0.5, atol=1e-5)
82+
np.testing.assert_allclose(pset.total_dlon, 4, atol=1e-5)
83+
np.testing.assert_allclose(pset.lon_nextloop, startlon, atol=1e-5)
84+
np.testing.assert_allclose(pset.lat_nextloop, 0.5, atol=1e-5)
8585

8686

8787
def test_horizontal_advection_in_3D_flow(npart=10):
@@ -268,12 +268,6 @@ def test_moving_eddy(method, rtol):
268268
# Use RK45Particles to set next_dt
269269
RK45Particles = Particle.add_variable(Variable("next_dt", initial=dt, dtype=np.timedelta64))
270270
fieldset.add_constant("RK45_tol", 1e-6)
271-
elif method in ["AdvDiffEM", "AdvDiffM1"]:
272-
# Add zero diffusivity field for diffusion kernels
273-
ds["Kh"] = (["time", "depth", "YG", "XG"], np.full((len(ds["time"]), 2, 2, 2), 0))
274-
fieldset.add_field(Field("Kh", ds["Kh"], grid, interp_method=XLinear), "Kh_zonal")
275-
fieldset.add_field(Field("Kh", ds["Kh"], grid, interp_method=XLinear), "Kh_meridional")
276-
fieldset.add_constant("dres", 0.1)
277271

278272
pclass = RK45Particles if method == "RK45" else Particle
279273
pset = ParticleSet(

0 commit comments

Comments
 (0)