Poisson.DomainDecomposition#

class Poisson.DomainDecomposition(N, size, strategy='sliced', axis='z')[source]#

Bases: object

Domain decomposition for distributed computation.

Computes how a 3D grid should be partitioned across multiple ranks. Pure geometric logic with no MPI dependencies.

Parameters:
Nint

Global grid size (including boundaries)

sizeint

Number of ranks

strategystr

Decomposition strategy: ‘sliced’ (1D along Z) or ‘cubic’ (3D)

Examples

# Compute decomposition for 8 ranks >>> decomp = DomainDecomposition(N=100, size=8, strategy=’cubic’) >>> for rank in range(8): … info = decomp.get_rank_info(rank) … print(f”Rank {rank}: {info.local_shape}”)

apply_boundary_conditions(u_local, rank)[source]#

Apply Dirichlet BCs to local array cells at physical boundaries.

For cubic decomposition, some local cells may correspond to global boundary indices (0 or N-1) which should be kept at 0.

Parameters:
u_localnp.ndarray

Local array with halo zones (modified in-place)

rankint

MPI rank

extract_interior(u_local)[source]#

Extract interior points from local array (excluding halos).

get_all_rank_info()[source]#

Get decomposition info for all ranks.

Returns:
list of RankInfo

Information for all ranks

get_interior_placement(rank_id, N, comm)[source]#

Get slice for placing rank’s interior in global array.

For cubic, global array is (N, N, N) with (Z, Y, X) ordering.

get_neighbors(rank)[source]#

Get neighbor dict for a rank (for communicator interface).

get_rank_info(rank)[source]#

Get decomposition info for a specific rank.

Parameters:
rankint

Rank to query

Returns:
RankInfo

Complete decomposition information for this rank

initialize_local_arrays_distributed(N, rank, comm)[source]#

Initialize local arrays with halo zones for this rank.

Parameters:
Nint

Global grid size

rankint

MPI rank

commMPI.Comm

MPI communicator

Returns:
tuple

(u1, u2, f) local arrays with halo zones

Examples using Poisson.DomainDecomposition#

Domain Decomposition Visualization

Domain Decomposition Visualization

Communication Method Benchmark

Communication Method Benchmark

Poisson Scaling Experiment

Poisson Scaling Experiment