A Cellular Automata Model for Crystallization

 

Matthew Meyer

Department of Chemical and Biochemical Engineering, University of California, Irvine

mcmeyer@uci.edu

 

 

Abstract

Cellular automata shall be used to simulate some different crystallization models on a two-dimensional lattice. The output shall be plotted on a two-dimensional axis.

 

Cellular Automata

Cellular automata is a dynamic method for modeling the behavior of a complex system. The model is composed of a one-, two-, or three-dimensional "lattice" of sites, called "cells," each described by a particular "state." The state of a given cell, i, is determined by the state of the "neighborhood" of cells surrounding cell i. The changes to cell i are determined by a set of "rules" which uniquely define the cellular automata model. By simultaneously applying these rules uniformly and iteratively to each cell in the lattice, the simulation is performed.

A wealth of cellular automata information exists on the Internet. Below are a few such sources:

http://www.yahoo.com/Science/Artificial_Life/Cellular_Automata/

http://www.wolfram.com/s.wolfram/articles/indices/ca.html

news:comp.theory.cell-automata

 

Input Specifications

This simulation executable shall be called crystallize and will take the following command-line arguments/options (square brackets indicate optional arguments):

crystallize <args>

<args>:==

[-h] Displays usage and command-line argument help.

[-i<iterations>] Number of iterations to perform for the simulation.

[-c<columns>] Number of columns in the 2D lattice.

[-r<rows>] Number of rows in the 2D lattice.

-m<model> Which model to use.

[-I] Interactively prompt the user for input.

 

Output Specifications

The output of crystallize shall be a two-dimensional plot of the cellular automata crystallization simulation resulting from the given parameters. This plot shall either be created iteratively (updated after each iteration), in order to show the progression of the simulation, or just once, after the simulation has run to completion.

 

C++ Classes for the Simulation

Although this simulation shall focus on a two-dimensional cellular automata model for crystallization, the classes used for this simulation should be flexible enough to allow for easy extension to one-, three-, or n-dimensional lattice cellular automata models for different systems (i.e., not just crystallization).

The classes used to create crystallize shall include (but may not be limited to):

CellularAutomata

Description/Features:

    1. Abstract base class for n-dimensional cellular automata models.
    2. Contains member functions and member data common to all cellular automata models (e.g., iterations).

2D_CellularAutomata

Description/Features:

    1. Derived from abstract base class, CellularAutomata.
    2. Abstract base class for 2-dimensional lattice cellular automata models.
    3. Contains member functions and member data common to all cellular automata models (e.g., 2D lattice).
    4. May be a template class (for the cells of the lattice).

CrystallizationModel_1

Description/Features:

    1. Derived from abstract base class, 2D_CellularAutomata.
    2. Model contains deterministic state rules for crystallization.
    3. May be a template class (for the cells of the lattice).

CrystallizationModel_2

Description/Features:

    1. Derived from abstract base class, 2D_CellularAutomata.
    2. Model contains probabilistic state rules for crystallization.
    3. May be a template class (for the cells of the lattice).

Cell

Description/Features:

    1. Defines the cell object for the lattice elements.
    2. Used as template argument for this simulation for the template classes described above.