Website
Code
Manual
Discussions
Training slides
PFHub phase-field community
DOI
PRISMS-PF is a powerful, massively parallel finite element code for conducting phase field and other related simulations of microstructural evolution. The phase field method is commonly used for predicting the evolution in microstructures under a wide range of conditions and material systems. PRISMS-PF provides a simple interface for solving customizable systems of partial differential equations of the type commonly found in phase field models, and has pre-built application modules, including precipitate evolution, grain growth, and solidification.
With PRISMS-PF, you have access to adaptive meshing and parallelization with near-ideal scaling for over a thousand processors. Moreover, the matrix-free framework from the deal.II library allows much larger than simulations than typical finite element programs – PRISMS-PF has been used for simulations with over one billion degrees of freedom. PRISMS-PF also provides performance competitive with, and often exceeding single-purpose codes.
This code is developed by the PRedictive Integrated Structural Materials Science (PRISMS) Center at University of Michigan which is supported by the U.S. Department of Energy (DOE), Office of Basic Energy Sciences, Division of Materials Sciences and Engineering under Award #DE-SC0008637.
For detailed install and usage instructions check out the Manual. A (very) abbreviated version is given below.
Install the required dependencies:
- CMake [3.25+]
- LAPACK
- MPI
- p4est
- deal.II [9.6.0+]
Before building and installing PRISMS-PF, ensure that the environment variable DEAL_II_DIR is set to the directory where deal.II is installed:
export DEAL_II_DIR=</absolute/path/to/deal.II/install>
It is recommended to also add this line to your rc file (for example, ~/.bashrc, ~/.zshrc, etc.) so that DEAL_II_DIR is automatically set every time a terminal is opened.
Similarly, choose an installation directory for PRISMS-PF and set the PRISMS_PF_DIR environment variable (it is also recommended you add the following line in your rc file):
export PRISMS_PF_DIR=</absolute/path/to/PRISMS-PF/install>
Configure, compile, and install the main library
cmake -B build
cmake --build build -j <nprocs>
cmake --install build --prefix=$PRISMS_PF_DIR
Here <nprocs> denotes the number of threads you want to use to compile the library.
For access to our executable utilities (recommended), you should also add $PRISMS_PF_DIR/bin to your path. You can have permanent access by adding the following line to your rc file
export PATH=$PATH:$PRISMS_PF_DIR/bin
After building the core library, our example applications can be compiled with similar commands. Make sure you navigate to an application before executing these commands.
cmake -DCMAKE_BUILD_TYPE=<type> -B build
cmake --build build -j <nprocs>
Here, <type> is the build type. There are two options: Debug and Release. Release contains more optimizations than Debug and typically offers much better performance, but Debug often provides more meaningful error messages.
Executables can be run in serial or parallel.
build/main
mpirun -n <nprocs> build/main
Outputs are most commonly visualized in the following open-source applications:
- VisIt (https://visit-dav.github.io/visit-website/)
- ParaView (https://www.paraview.org/)
The following issues appear to be outside of our capabilities to fix, but we have found workarounds.
1. For problems with greater than 20 fields in one solve block, field values may become 0 at MPI domain decomposition boundaries.
This is a dealii bug which we have reported. It has been fixed as of commit 27dc771
Fix:
- Compile with a dealii version beyond 9.8.0. As of October 2026, this is only the dealii master branch.
2. Anomalous segmentation faults when running on HPC. Often occurs after 2^24 (16M) time increments.
This may be an issue with dealii's handling of a specific MPI backend. Still under investigation.
Hotfix:
- Run program with different MPI backend:
# don't use this mpirun -n 128 main # use this mpirun --mca pml ob1 -n 128 main
Still under investigation.
Hotfix:
- Disable taskflow in your dealii installation:
or add
# in dealii candi.cfg DEAL_II_CONFOPTS="-DDEAL_II_WITH_TASKFLOW=OFF"
-DDEAL_II_WITH_TASKFLOW=OFFto your cmake command when configuring dealii manually.
Please cite the following reference when discussing PRISMS-PF in a publication:
S. DeWitt, S. Rudraraju, D. Montiel, W.B. Andrews, and K. Thornton. PRISMS-PF: A general framework for phase-field modeling with a matrix-free finite element method. npj Computuational Materials 6, 29 (2020).
If you would like to cite a specific release of PRISMS-PF, please use the following format:
PRISMS-PF, v3.0.0 (2026). Available from https://github.com/prisms-center/phaseField. DOI: 10.5281/zenodo.19261983.
For DOI information of other releases, refer to this site.
Thanks to everyone who has contributed to the project!
Made with contrib.rocks.
Please see the LICENSE file for details.
