Poisson.DomainDecomposition#
- class Poisson.DomainDecomposition(N, size, strategy='sliced', axis='z')[source]#
Bases:
objectDomain decomposition for distributed computation.
Computes how a 3D grid should be partitioned across multiple ranks. Pure geometric logic with no MPI dependencies.
- Parameters:
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_local
np.ndarray Local array with halo zones (modified in-place)
- rank
int MPI rank
- u_local
- 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.