SymPhas—General Purpose Software for Phase‐Field, Phase‐Field Crystal, and Reaction‐Diffusion Simulations. Issue 1 (10th December 2021) - Silber, Steven A.; Karttunen, Mikko
Abstract: This work develops a new open source application programming interface (API) and software package called SymPhas for simulations of phase‐field, phase‐field crystal, and reaction‐diffusion models, supporting up to three dimensions and an arbitrary number of fields. SymPhas delivers two novel program capabilities: 1) User specification of models from the associated dynamical equations in an unconstrained form and 2) extensive support for integrating user‐developed discrete‐grid‐based numerical solvers into the API. The capability to specify general phase‐field models is primarily achieved by developing a novel symbolic algebra functionality that can formulate mathematical expressions at compile time; is able to apply rules of symbolic algebra such as distribution, factoring, and automatic simplification; and support user‐driven expression tree manipulation. A modular design based on the C++ template meta‐programming paradigm is applied to the symbolic algebra library and general API implementation to minimize application runtime and increase the accessibility of the API for third party development. SymPhas is written in C/C++ and emphasizes high‐performance capabilities via parallelization with OpenMP and the C++ standard library. SymPhas is equipped with a forward Euler solver and a semi‐implicit Fourier spectral solver. Sample implementations and simulations of several phase‐field models are presented, generated using the semi‐implicit Fourier spectral solver. Abstract : The figure shows a 3D phase‐field model of a conserved parameter in the foreground and non‐conserved phase‐field crystal model in the background, separately generated in SymPhas . SymPhas is a new C++ software package that allows a user to define any phase‐field or reaction‐diffusion model in a completely unconstrained form and use any of the available numerical methods.