This work presents a grain growth model written in the APL programming
language. The model implements a cellular automaton in which a transformation
rate is calculated for each of the neighbours of every cell. This rate depends
on the boundary energy difference resulting from the corresponding
transformation. Second order neighbours are also taken into account by
considering that continuous boundaries move together. The underlying physics of
the model are based on the PhD thesis of Traka (TU Delft, 2022).
The whole model is implemented here in an array programming style, without
explicit loops within each time step. Moreover, no external libraries are used,
only the core primitives and system functions available in Dyalog APL. The
result is a flexible and powerful model, capable of performing realistic
simulations from experimental EBSD data in a short time.
In addition to explaining how the model works using simple artificial examples,
results obtained from actual EBSD experiments are presented and discussed.
There is also discussion on the suitability of the array programming paradigm
for implementing solutions to this kind of modelling problem and how these
techniques can be applied in general.