Skip to content
Snippets Groups Projects
Commit 0d16b8d6 authored by Rafael Ravedutti's avatar Rafael Ravedutti
Browse files

Small fixes

parent 12328327
No related branches found
No related tags found
1 merge request!1Implement DEM and many other features
...@@ -79,6 +79,7 @@ class Keywords: ...@@ -79,6 +79,7 @@ class Keywords:
length = self.keyword_length([vector]) length = self.keyword_length([vector])
inv_length = Lit(self.sim, 1.0) / length inv_length = Lit(self.sim, 1.0) / length
return Select(self.sim, length > Lit(self.sim, 0.0), vector * inv_length, ZeroVector(self.sim)) return Select(self.sim, length > Lit(self.sim, 0.0), vector * inv_length, ZeroVector(self.sim))
#return vector * inv_length
def keyword_squared_length(self, args): def keyword_squared_length(self, args):
assert len(args) == 1, "length() keyword requires one parameter!" assert len(args) == 1, "length() keyword requires one parameter!"
......
...@@ -122,18 +122,20 @@ class PartitionCellLists(Lowerable): ...@@ -122,18 +122,20 @@ class PartitionCellLists(Lowerable):
end = self.sim.add_temp_var(0) end = self.sim.add_temp_var(0)
for shape in For(self.sim, 0, self.sim.max_shapes()): for shape in For(self.sim, 0, self.sim.max_shapes()):
shape_start = self.sim.add_temp_var(start)
Assign(self.sim, end, self.cell_lists.cell_sizes[cell] - 1) Assign(self.sim, end, self.cell_lists.cell_sizes[cell] - 1)
for _ in While(self.sim, start < end): for _ in While(self.sim, start <= end):
particle = cell_particles[cell][start] particle = cell_particles[cell][start]
for unmatch in Branch(self.sim, ScalarOp.neq(self.sim.particle_shape[particle], shape)): for unmatch in Branch(self.sim, ScalarOp.neq(self.sim.particle_shape[particle], shape)):
if unmatch: if unmatch:
Assign(self.sim, cell_particles[cell][start], cell_particles[cell][end]) for _ in Filter(self.sim, ScalarOp.neq(start, end)):
Assign(self.sim, cell_particles[cell][end], particle) Assign(self.sim, cell_particles[cell][start], cell_particles[cell][end])
Assign(self.sim, cell_particles[cell][end], particle)
Assign(self.sim, end, end - 1) Assign(self.sim, end, end - 1)
else: else:
Assign(self.sim, start, start + 1) Assign(self.sim, start, start + 1)
Assign(self.sim, self.cell_lists.nshapes[cell][shape], start - shape_start)
Assign(self.sim, self.cell_lists.nshapes[cell][shape], start)
...@@ -20,12 +20,16 @@ class EnforcePBC(Lowerable): ...@@ -20,12 +20,16 @@ class EnforcePBC(Lowerable):
positions = sim.position() positions = sim.position()
sim.module_name("enforce_pbc") sim.module_name("enforce_pbc")
# Particles with one of the following flags are ignored
flags_to_exclude = (Flags.Infinite | Flags.Fixed | Flags.Global)
for i in ParticleFor(sim): for i in ParticleFor(sim):
# TODO: VecFilter? for _ in Filter(self.sim, ScalarOp.cmp(self.sim.particle_flags[i] & flags_to_exclude, 0)):
for d in range(0, ndims): # TODO: VecFilter?
if sim._pbc[d] is True: for d in range(0, ndims):
for _ in Filter(sim, positions[i][d] < grid.min(d)): if sim._pbc[d] is True:
Assign(sim, positions[i][d], positions[i][d] + grid.length(d)) for _ in Filter(sim, positions[i][d] < grid.min(d)):
Assign(sim, positions[i][d], positions[i][d] + grid.length(d))
for _ in Filter(sim, positions[i][d] > grid.max(d)): for _ in Filter(sim, positions[i][d] > grid.max(d)):
Assign(sim, positions[i][d], positions[i][d] - grid.length(d)) Assign(sim, positions[i][d], positions[i][d] - grid.length(d))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment