Analytics
Welcome to the home of MFC! MFC simulates compressible multi-component and multi-phase flows, amongst other things. MFC is written in Fortran and uses metaprogramming to keep the code short (about 20K lines).
MFC is used on the latest leadership-class supercomputers. It scales ideally to exascale; tens of thousands of GPUs on NVIDIA- and AMD-GPU machines on Oak Ridge Summit and Frontier. MFC is a SPEChpc benchmark candidate, part of the JSC JUPITER Early Access Program, and used OLCF Frontier and LLNL El Capitan early access systems.
Get in touch with Spencer if you have questions! We have an active Slack channel and development team. MFC has high-level documentation, visualizations, and more on its website.
We keep many examples.
Here are some of them!
MFC can execute high-fidelity simulations of shock-droplet interaction (see examples/3d_shockdroplet
)
This one simulates high-Mach flow over an airfoil, shown below.
This one simulates high amplitude acoustic wave through a circular orifice opening, shown below.
You can navigate to this webpage to get started using MFC! It's rather straightforward. We'll give a brief intro. here for MacOS. Using brew, install MFC's dependencies:
brew install coreutils python cmake fftw hdf5 gcc boost open-mpi
You're now ready to build and test MFC! Put it to a convenient directory via
git clone https://github.com/MFlowCode/MFC
cd MFC
and be sure MFC knows where to find Boost by appending to your dotfiles and sourcing them again
echo -e "export BOOST_INCLUDE='$(brew --prefix --installed boost)/include'" | tee -a ~/.bash_profile ~/.zshrc
. ~/.bash_profile 2>/dev/null || . ~/.zshrc 2>/dev/null
! [ -z "${BOOST_INCLUDE+x}" ] && echo 'Environment is ready!' || echo 'Error: $BOOST_INCLUDE is unset. Please adjust the previous commands to fit with your environment.'
then you can build MFC and run the test suite!
./mfc.sh build -j $(nproc)
./mfc.sh test -j $(nproc)
And... you're done!
You can learn more about MFC's capabilities via its documentation or play with the examples located in the examples/
directory (some are shown here)!
The shock-droplet interaction case above was run via
./mfc.sh run -n $(nproc) ./examples/3d_shockdroplet/case.py
where $(nproc)
is the number of cores the example will run on (and the number of physical cores on your CPU device).
You can visualize the output data in examples/3d_shockdroplet/silo_hdf5
via Paraview, Visit, or your favorite software.
OLCF Frontier is the first exascale supercomputer. The weak scaling of MFC on this machine shows near-ideal utilization.
MFC has many features. They are organized below. Just click the drop-downs!
gcov
If you use MFC, consider citing it as:
@article{Bryngelson_2021,
title = {{MFC: A}n open-source high-order multi-component, multi-phase, and multi-scale compressible flow solver},
author = {S. H. Bryngelson and K. Schmidmayer and V. Coralic and J. C. Meng and K. Maeda and T. Colonius},
journal = {Computer Physics Communications},
year = {2021},
volume = {266},
pages = {107396},
doi = {10.1016/j.cpc.2020.107396}
}
@article{Radhakrishnan_2024,
title = {Method for portable, scalable, and performant {GPU}-accelerated simulation of multiphase compressible flow},
author = {A. Radhakrishnan and H. {Le Berre} and B. Wilfong and J.-S. Spratt and M. {Rodriguez Jr.} and T. Colonius and S. H. Bryngelson},
journal = {Computer Physics Communications},
year = {2024},
volume = {302},
pages = {109238},
doi = {10.1016/j.cpc.2024.109238}
}
Copyright 2021 Spencer Bryngelson and Tim Colonius. MFC is under the MIT license (see LICENSE for full text).
Multiple federal sponsors have supported MFC development, including the US Department of Defense (DOD), National Institutes of Health (NIH), Department of Energy (DOE), and National Science Foundation (NSF).
MFC computations have used many supercomputing systems. A partial list is below