Skip to content

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:

  1. One module, one concern. Each module lives in its own folder under include/ and src/, carries its own ReadInput, and communicates with other modules only through well-defined interfaces (PhaseField&, Composition&, …).
  2. No invented input syntax. Every simulation parameter is read from an .opi text file (or its JSON equivalent). The Modules reference documents the exact $Token each module accepts.
  3. Active parameter tracking. The multiphase-field evaluation skips points where no phase is active, which is what makes simulations with many phase fields practical.
  4. 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 ​

AspectValue
VersionOpenPhase-Academic v2.0
LanguageC++17
Supported compilersGCC ≥ 9.0, Clang, Intel DPC++ / icx, Microsoft + Intel oneAPI on Windows
Build systemsGNU 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 parallelismOpenMP
Optional parallelismMPI (mpi-parallel / ENABLE_MPI=ON)
Output formatsVTK / PVTK (via VTK), CSV text output, HDF5-format raw data
LicenceGNU 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, a ProjectInput.opi, and link against libOpenPhase.
  • 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 $Token set, the model it implements, a minimal C++ example, and cross-links to the modules it depends on. The style reference is interface-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.

Released under the GNU GPLv3 License.