Open source codes for microstructural evolution
Modelling and simulation is sometimes said to be the third way of doing science, the first two being theory and experiment; see this essay in Science for example:
- Classical science is a conversation between theory and experiment. A scientist can start at either end--with theory or experiment--but progress usually demands the union of both a theory to make sense of the experiments and data to verify the theory. Technological novelties such as computer models are neither here nor there. A really good dynamic computer model--of the global atmosphere, for example--is like a theory that throws off data, or data with a built-in theory. It's easy to see why such technological worlds are regarded with such wariness by science--they seem corrupted coming and going. But in fact, these models yield a third kind of truth, an experiential synthesis--a parallel existence, so to speak. A few years ago when Tom Ray, a biologist turned nerd, created a digital habitat in a small computer and then loosed simple digital organisms in it to procreate, mutate, and evolve, he was no longer merely modeling evolution or collecting data. Instead, Ray had created a wholly new and novel example of real evolution. That's nerd science. As models and networked simulations take on further complexity and presence, their role in science will likewise expand and the influence of their nerd creators increase.
If this third way of doing science is to be widely accepted, used and improved, it is imperative that more and more people have access to its tools, namely, computer programs. Further, open sourcing codes not only makes the modelling and simulation processes more transparent, but also helps weed out the errors fast.
Over the years, in my area of specialization, namely, microstructural evolution, I have come across a few practitioners, who make their source codes available; in this post, I am linking to the same, and, as and when I come across any others, I will update the list.
In the meanwhile, if you know of any other open source codes for microstructural evolution, let me know. In case you want to contribute any of your codes, MatForge might be one of the places where you can host the same. While we are on the topic, I believe a separate section in iMechanica for hosting codes is not a bad idea!
Note: The descriptions of the codes in the following listing are not mine; I have excerpted the relevant introductory sections from the respective homepages.
femLego is a set of Maple procedures and fortran subroutines that can be used to build complete fortran simulation codes for partial differential equations, with the entire problem definition done in Maple. It is intended mainly for time dependent systems, and in the present version sets up a time loop where the equations in the system are solved one after another in a split manner. Spatial discretizations are done as the standard finite element method on unstructured grids. The finite elements are specified as symbolic code in a few pages of Maple procedures. Some common 1D, 2D and 3D elements are provided.
The philosophy has been to eliminate as much hand coded fortran as possible, and have Maple do all the work in going from a formal description of a variational formulation, to a running program.
FiPy is an object oriented, partial differential equation (PDE) solver, written in Python , based on a standard finite volume (FV) approach. The framework has been developed in the Metallurgy Division and Center for Theoretical and Computational Materials Science (CTCMS), in the Materials Science and Engineering Laboratory (MSEL) at the National Institute of Standards and Technology (NIST).
The solution of coupled sets of PDEs is ubiquitous to the numerical simulation of science problems. Numerous PDE solvers exist, using a variety of languages and numerical approaches. Many are proprietary, expensive and difficult to customize. As a result, scientists spend considerable resources repeatedly developing limited tools for specific problems. Our approach, combining the FV method and Python, provides a tool that is extensible, powerful and freely available. A significant advantage to Python is the existing suite of tools for array calculations, sparse matrices and data rendering.
The FiPy framework includes terms for transient diffusion, convection and standard sources, enabling the solution of arbitrary combinations of coupled elliptic, hyperbolic and parabolic PDEs. Currently implemented models include phase field treatments of polycrystalline, dendritic, and electrochemical phase transformations as well as a level set treatment of the electrodeposition process .
The goal of MMSP is to provide a simple, consistent, and extensible programming interface for all grid–based microstructure evolution methods. Simple means that the package has a very small learning curve, and for most routine simulations, only a minimal amount of code must be written. By consistent we mean, for example, that 2D simulation code is nearly identical to that for 3D simulations, single processor programs are easily converted into parallel code, and fundamentally different methods like Monte Carlo or phase field can be interchanged without much effort. Finally, extensible means that it’s straightforward to add new grid types or physical behaviors to the package. Other considerations include efficiency, and to a lesser extent, portability.
PGG-3D is a synchronous parallel grain growth code that uses the classical Potts model to simulate material microstructure. It was originally designed for nCUBE and Intel machines, but has been tested on various supercomputer and Beowulf architectures. The novelty of PGG-3D lies in its checkerboard and sublattice decomposition technique. The source has been modified to incorporate anisotropic grain boundary properties which are a function of the misorientation angle between two dissimilar grains. The default functions adhere to the Read-Shockley dislocation model. In addition, grain growth stagnation (Zener pinning) can be studied using this software. Last, a toolkit has been included for the standard post-processing data analysis and visualization.
PS:- Though not in the same league as the codes listed above, I do have some simple phase field modelling codes for solving Cahn-Hilliard and Allen-Cahn equations using semi-implicit Fourier spectral method for distribution under a GPL license.