OpenPFC  0.1.4
Phase Field Crystal simulation framework
Loading...
Searching...
No Matches
05_decomposition_parallel.cpp File Reference

Comprehensive demonstration of OpenPFC Decomposition API. More...

#include <iomanip>
#include <iostream>
#include <mpi.h>
#include <openpfc/core/decomposition.hpp>
#include <openpfc/core/world.hpp>
#include <sstream>
Include dependency graph for 05_decomposition_parallel.cpp:

Functions

std::string rank_prefix (int rank)
 
void print_sync (int rank, int size, const std::string &message)
 
void scenario_manual_grid ()
 
void scenario_automatic_grid ()
 
void scenario_coordinate_mapping ()
 
void scenario_properties ()
 
void scenario_load_balance ()
 
void scenario_aspect_ratios ()
 
int main (int argc, char **argv)
 

Detailed Description

Comprehensive demonstration of OpenPFC Decomposition API.

This example showcases domain decomposition for distributed-memory parallelism:

  • Manual grid specification (explicit layout)
  • Automatic grid selection (optimal communication)
  • Rank-local vs global coordinate mapping
  • Subdomain queries and properties
  • Integration with MPI parallel execution

The Decomposition class partitions a global World into non-overlapping subdomains, each owned by one MPI rank. This enables scalable parallel simulations on HPC clusters.

Requirements: MPI library (must be run with mpirun/mpiexec)

Usage:

# Compile (assuming build system configured)
cd build && make 05_decomposition_parallel
# Run with 4 MPI ranks
mpirun -np 4 ./05_decomposition_parallel