Introduction
OpenPhase is an open-source C++ library for phase-field simulations of complex scientific problems. It is written in object-oriented C++17 and organised as a set of modules, each dedicated to one concern of the phase-field simulation strategy — phase-field evolution, interface properties, diffusion, thermodynamics, mechanics, heat transfer, fluid flow, magnetism, electrics, and more. The modules are independent but share a common input / output / runtime-control framework, so combining them into a custom multi-physics simulation is a matter of composition rather than rewriting.
OpenPhase is developed at the Interdisciplinary Centre for Advanced Materials Simulation (ICAMS) at Ruhr University Bochum and at OpenPhase Solutions GmbH. The current open-source release is OpenPhase-Academic v2.0.
What OpenPhase simulates
The following classes of problems are covered by modules that ship with the library:
- Solidification — binary and multicomponent solidification with melt flow, latent heat, and Sutherland-law viscosity for reactive flows.
- Grain growth — normal and faceted grain growth, recrystallisation.
- Phase transformations — solid-state transformations, pearlite formation, precipitation, martensitic transformations with symmetry variants.
- Multiphase flow — wetting, multi-phase flow via the Lattice Boltzmann Method (LBM).
- Reactive flow — heat exchange in reactive gas flows through particle beds, solid combustion, optional Cantera-backed chemistry.
- Sintering — solid-state and liquid-phase sintering.
- Heat transfer — heat diffusion, moving heat sources (including ellipsoidal laser / weld sources), latent heat.
- Elastic deformation — St. Venant–Kirchhoff hyperelasticity in a spectral mechanical-equilibrium solver; crystal plasticity with phenomenological and dislocation-density models.
- Chemical diffusion — binary diffusion with local equilibrium partitioning and anti-trapping, interface diffusion.
- Magnetic and electric fields — linear magnetism, electric potential with electrochemical boundary conditions.
- Fracture and damage — field-level fracture kernel and slip-system-level creep / PEEQ damage models.
A visual gallery of example simulations is available on the project website.
Design principles
The library is built around four principles that shape the rest of this documentation:
- One module, one concern. Each module lives in its own folder under
include/andsrc/, carries its ownReadInput, and communicates with other modules only through well-defined interfaces (PhaseField&,Composition&, …). - No invented input syntax. Every simulation parameter is read from an
.opitext file (or its JSON equivalent). The Modules reference documents the exact$Tokeneach module accepts. - Active parameter tracking. The multiphase-field evaluation skips points where no phase is active, which is what makes simulations with many phase fields practical.
- Hybrid parallelism. OpenMP is enabled by default; MPI is supported as a compile-time flag and uses FFTW-MPI for spectral solvers.
Build and runtime at a glance
| Aspect | Value |
|---|---|
| Version | OpenPhase-Academic v2.0 |
| Language | C++17 |
| Supported compilers | GCC ≥ 9.0, Clang, Intel DPC++ / icx, Microsoft + Intel oneAPI on Windows |
| Build systems | GNU Make (default) and CMake (≥ 3.10) |
| External dependency (required) | FFTW3 (MKL FFTW on Windows) |
| External dependency (optional) | MPI (any MPI-2 implementation), Cantera (for reactive chemistry) |
| Default parallelism | OpenMP |
| Optional parallelism | MPI (mpi-parallel / ENABLE_MPI=ON) |
| Output formats | VTK / PVTK (via VTK), CSV text output, HDF5-format raw data |
| Licence | GNU GPL v3 |
OpenPhase variants
OpenPhase is available in two distinct variants:
OpenPhase-Academic (this release)
- Open-source C++ library under GPL v3.
- Full access to source code.
- Supports custom model development and integration with other software.
- Command-line / library-level workflow: you write a
Main.cpp, aProjectInput.opi, and link againstlibOpenPhase. - Hybrid OpenMP + MPI parallelism.
OPStudio (commercial)
OPStudio is the commercial companion suite that wraps the OpenPhase core in a graphical user interface, ships pre-defined material / process presets, and adds integration with commercial tools (Thermo-Calc, Abaqus). It is oriented toward industrial users who do not want to write C++ to run simulations. The academic and commercial variants share the same simulation core; everything documented on this site under Modules applies to both.
Reading this documentation
- Getting started (this section): install, run your first simulation, understand the project layout.
- Features: cross-cutting numerical techniques and their usage.
- Modules: one page per module, with the exact
$Tokenset, the model it implements, a minimal C++ example, and cross-links to the modules it depends on. The style reference isinterface-properties.md. - Code Reference: method-level reference for the C++ classes that warrant a detailed API (Containers,
PhaseField).
Citing OpenPhase
If you use OpenPhase in academic work, please follow the guidance on the Cite OpenPhase page and record the version (or git commit) you used for reproducibility. The multiphase-field parallel implementation — the numerical backbone of every simulation you run — is described in Tegeler et al. (2017), Computer Physics Communications.