halo Module

class 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 halo.CellSlice

Bases: object

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.

halo.reset_halos()

Previous topic

domain Module

Next topic

host Module

This Page