ppmd.halo module

class ppmd.halo.CartesianHaloSix(domain_func, cell_to_particle_map)

Bases: object

exchange_cell_counts()

Exchange the contents count of cells between processes. This is provided as a method in halo to avoid repeated exchanging of cell occupancy counts if multiple ParticleDat objects are being communicated.

get_boundary_cell_contents_count()

Get the number of particles in the corresponding cells for each halo. These are needed such that the cell list can be created without inspecting the positions of recvd particles.

Returns

Tuple: Cell contents count for each cell in same order as local boundary cell list, Exchange sizes for each halo.

get_boundary_cell_groups()

Get the local boundary cells to pack for each halo. Formatted as an host.Array. Cells for halo 0 first followed by cells for halo 1 etc. Also returns an data.Array of 27 elements with the starting positions of each halo within the previous array.

Returns

Tuple, array of local cell indices to pack, array of starting points within the first array.

get_dir_counts()
get_halo_cell_groups()

Get the local halo cells to unpack into for each halo. Formatted as an cuda_base.Array. Cells for halo 0 first followed by cells for halo 1 etc. Also returns an data.Array of 27 elements with the starting positions of each halo within the previous array.

Returns

Tuple, array of local halo cell indices to unpack into, array of starting points within the first array.

get_position_shifts()

Calculate flag to determine if a boundary between processes is also a boundary in domain.

get_recv_ranks()

Get the mpi ranks to recv from.

get_send_ranks()

Get the mpi ranks to send to.

class ppmd.halo.CellSlice

Bases: object

ppmd.halo.create_halo_pairs_slice_halo(domain_in, slicexyz, direction)

Automatically create the pairs of cells for halos. Slices through whole domain including halo cells.