
Introduction#
The integration with panphasefield is not tight, which means all main logics are still written in fortran, the plugin is just calling a series of subroutines.
The way plugin works is as follows.
plugin read data from panphasefield input file.
plugin export the data into standard parameter.in file.
then mupro program will read the data
plugin call some setup subroutine from mupro and call a result table setup function from pandat
plugin call mupro subroutine to start calculation
for the database variables at each time step, we use a preprocessor to determine whether use the expression in mupro or from the pandat database.
then plugin will call vtk function to out put the data
The model can be adapted to simulate other common processes such as crystallization of stoichiometric compounds, vapor-phase deposition of stoichiometric thin films or two-dimensional materials, oxidation of alloys, electrochemical deposition, interfacial reactions, etc.
Our model overcomes the challenge in simulating multiphase solids that contain a mixture of ordered stoichiometric compounds with fixed compositions and disordered solid solutions with variable chemical compositions and thus can directly use thermodynamic models of both solution and stoichiometric phases. Our model is unique because, as far as we know, all other existing phase-field models treat ordered stoichiometric compounds as disordered solid solutions by approximating the mathematically delta-function dependences of stoichiometric compounds on composition using parabolas assuming a rather arbitrary curvature, leading to possibly orders of exaggerated non-stoichiometries, thermodynamic inconsistencies, and numerical instabilities.
Dev Environment#
If you want to develop this program, here are some relevant environments for this project
sudo apt install python3-sphinx
pip3 install myst-parser
pip3 install sphinx-book-theme
pip3 install sphinx-design
pip3 install sphinxcontrib-mermaid
pip3 install sphinxcontrib-bibtex
pip3 install breathe
pip3 install exhale
Package#
the core needs to be a single library, mupro/muPREDICT/lib
the main needs to have both the source code and the executable, mupro/muPREDICT/bin, mupro/muPREDICT/share
the plugin will compile with the cores source code instead of link to its lib.