  This work develops a new open source API and software package called
\textit{SymPhas} for simulations of phase-field, phase-field crystal and
reaction-diffusion models, supporting up to three dimensions and an arbitrary
number of fields. \textit{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 CC++ 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. \textit{SymPhas} is written in C/CC++
and emphasizes high-performance capabilities via parallelization with OpenMP
and the CC++ standard library. \textit{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.
