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.