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

Use subdomain for cell lists

parent 93ed68ea
Branches
Tags
No related merge requests found
......@@ -16,9 +16,9 @@ from pairs.sim.lowerable import Lowerable
class CellLists:
def __init__(self, sim, grid, spacing, cutoff_radius):
def __init__(self, sim, dom_part, spacing, cutoff_radius):
self.sim = sim
self.grid = grid
self.dom_part = dom_part
self.spacing = spacing if isinstance(spacing, list) else [spacing for d in range(sim.ndims())]
self.cutoff_radius = cutoff_radius
self.nneighbor_cells = [math.ceil(cutoff_radius / self.spacing[d]) for d in range(sim.ndims())]
......@@ -26,8 +26,8 @@ class CellLists:
# Data introduced in the simulation
self.nstencil = self.sim.add_var('nstencil', Types.Int32)
self.ncells = self.sim.add_var('ncells', Types.Int32, 1)
self.ncells_capacity = self.sim.add_var('ncells_capacity', Types.Int32, 100)
self.cell_capacity = self.sim.add_var('cell_capacity', Types.Int32, 20)
self.ncells_capacity = self.sim.add_var('ncells_capacity', Types.Int32, 100000)
self.cell_capacity = self.sim.add_var('cell_capacity', Types.Int32, 64)
self.dim_ncells = self.sim.add_array('dim_cells', self.sim.ndims(), Types.Int32)
self.shapes_buffer = self.sim.add_array('shapes_buffer', self.sim.max_shapes(), Types.Int32)
self.cell_particles = self.sim.add_array('cell_particles', [self.ncells_capacity, self.cell_capacity], Types.Int32)
......@@ -62,8 +62,8 @@ class BuildCellListsStencil(Lowerable):
Assign(self.sim, shapes_buffer[s], self.sim.get_shape_id(s))
for dim in range(self.sim.ndims()):
dim_min = self.sim.grid.min(dim) - spacing[dim]
dim_max = self.sim.grid.max(dim) + spacing[dim]
dim_min = self.cell_lists.dom_part.min(dim) - spacing[dim]
dim_max = self.cell_lists.dom_part.max(dim) + spacing[dim]
Assign(self.sim, dim_ncells[dim], Ceil(self.sim, (dim_max - dim_min) / spacing[dim]) + 1)
ntotal_cells *= dim_ncells[dim]
......@@ -96,6 +96,7 @@ class BuildCellLists(Lowerable):
spacing = self.cell_lists.spacing
dim_ncells = self.cell_lists.dim_ncells
ncells = self.cell_lists.ncells
dom_part = self.cell_lists.dom_part
positions = self.sim.position()
self.sim.module_name("build_cell_lists")
......@@ -110,7 +111,7 @@ class BuildCellLists(Lowerable):
for _ in Filter(self.sim, ASTTerm.not_op(particle_flags[i] & Flags.Infinite)):
cell_index = [
Cast.int(self.sim,
(positions[i][dim] - (self.sim.grid.min(dim) - spacing[dim])) / spacing[dim]) \
(positions[i][dim] - (dom_part.min(dim) - spacing[dim])) / spacing[dim]) \
for dim in range(self.sim.ndims())]
index = None
......
......@@ -16,6 +16,12 @@ class DimensionRanges:
self.pbc = sim.add_static_array('pbc', [sim.ndims() * 2], Types.Int32)
self.subdom = sim.add_static_array('subdom', [sim.ndims() * 2], Types.Real)
def min(self, dim):
return self.subdom[dim * 2 + 0]
def max(self, dim):
return self.subdom[dim * 2 + 1]
def number_of_steps(self):
return self.sim.ndims()
......
......@@ -43,7 +43,7 @@ class Simulation:
self.features = Features(self)
self.feature_properties = FeatureProperties(self)
self.contact_properties = ContactProperties(self)
self.particle_capacity = self.add_var('particle_capacity', Types.Int32, 200000)
self.particle_capacity = self.add_var('particle_capacity', Types.Int32, 800000)
self.neighbor_capacity = self.add_var('neighbor_capacity', Types.Int32, 100)
self.nlocal = self.add_var('nlocal', Types.Int32)
self.nghost = self.add_var('nghost', Types.Int32)
......@@ -217,11 +217,11 @@ class Simulation:
self.setups.add_statement(CopperFCCLattice(self, nx, ny, nz, rho, temperature, ntypes))
def build_cell_lists(self, spacing):
self.cell_lists = CellLists(self, self.grid, spacing, spacing)
self.cell_lists = CellLists(self, self._dom_part, spacing, spacing)
return self.cell_lists
def build_neighbor_lists(self, spacing):
self.cell_lists = CellLists(self, self.grid, spacing, spacing)
self.cell_lists = CellLists(self, self._dom_part, spacing, spacing)
self.neighbor_lists = NeighborLists(self.cell_lists)
return self.neighbor_lists
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment