Phase Changes in Materials

Solidification

by Richard J. Gaylord and Kazume Nishidate

Introduction

Solidification is a process in which crystals form in a supercooled melt. The crystallization process itself, produces some effects that tend to inhibit crystal growth: the diffusion of latent heat at the solid-liquid interface and surface tension. We present a determinisic cellular automaton model of crystal growth which explicitly incorporates these two growth inhibition effects.

The Dendrite CA

The model employs a square lattice. Each site in the lattice has an ordered pair as a value. The first component of the ordered pair is a Boolean value, where 1 represents a site that is crystalline and 0 represents a site that is amorphous. The second component of the ordered pair is a non-negative real number representing the temperature of the site.

Initially, the lattice is a 5 by 5 crystal seed, consisting of random {0, 0}'s and {1, undercool}, surrounded by 2m rows and 2m columns of {0, 0}'s, given by

seedLat = zerosDecorate[Table[{1, undercool} Random[Integer], {5}, {5}]]

where

zerosDecorate = Nest[(Prepend[Append[Map[Prepend[Append[#, {0, 0}], {0, 0}]&, #],
                                          Table[{0, 0}, {Length[#] + 2}]], Table[{0, 0}, {Length[#] + 2}]])&, 
                                      #, m]&

The quantity {0, 0} indicates a liquid site whose temperature is zero and {1, undercool} indicates a crystalline site whose temperature equals the undercooling.

The crystallization process proceeds over a number of time steps, in each of which two consecutively executed events occur:

[1] An amorphous site becomes crystalline if it is adjacent to at least one crystalline site and if some condition related to the local interface curvature and temperature is met. Latent heat of crystallization is produced at a crystallizing site which raises its temperature. An amorphous site that does not meet the prerequisite condition remains liquid and a crystalline site remains unchanged (ie., there is no melting in the model).

The phase and temperature values of each site in the lattice are updated based on its temperature and  phase and on the phases of the sites lying in its Moore neighborhood (ie., the N, E, S, W, NE, SE, SW, and NW nearest neighbor sites).

The CA rewrite rules take 9 arguments, representing the value of a lattice site and the values of the eight sites in its Moore neighborhood.

phase[{0, a_}, {s_, _}, {t_, _}, {u_, _}, {v_, _}, {w_, _}, {x_, _}, {y_, _}, {z_, _}] :=
          {1, a + latheat} /; 
           MatchQ[1, s | t | u | v] && 
            a < undercool (1 + delta Random[Real, {-1, 1}]) +  lambda (2 ( s + t + u + v) + (w + x + y + z) - 6)

phase[{r_, a_}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}] := {r, a}

Notes: 
The quantities in the first phase rule (which crystallizes a site) have the following meanings:

(a) The latent heat of crystallization is given by latheat.

(b) Persistent experimental noise is represented by the term  delta Random[Real, {-1, 1}].

(c) The noise amplitude is given by  delta,  where 0 <= delta < 1.

(d) The capillary length is given by lambda.

(e) The local interface curvature is approximated by the quantity

- (twice the sum of the N, E, S, W site phase values + the sum of the NE, SE, SW, NW site phase values - 6)

The phase rule is applied to the lattice using

Moore[phase, #]&

where

Moore[func__, lat_] :=   
           MapThread[func, Map[RotateRight[lat, #]&, 
                               {{0, 0}, {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1,  -1}, {-1, -1}, {-1, 1}, {1, 1}}], 2]

[2] Heat diffuses to adjacent sites.

The temperature of each site in the lattice is updated based on its temperature and the temperature of the nearest neighbor sites lying N, E, S, W, NE, SE, SW, and NW of the site.

The CA rewrite rules take 9 arguments, representing the value of a lattice site and the values of the eight sites in its Moore neighborhood,

temp[{r_, a_}, {_, b_}, {_, c_}, {_, d_}, {_, e_}, {_, f_}, {_, g_}, {_, h_}, {_, i_}] :=
         {r, a + (D/m)*((b + c + d + e)/6+ (f + g + h + i)/12 - a)}

where D is the diffusion constant and m is an integer number.

The temp rule is applied to the lattice using

Nest[Moore[temp, #]&, zerosDecorate[Moore[phase, #]], m]&

Note: The heat diffusion process is executed m times in each time step while the phase transformation process is only executed once in order to account for the relative speeds of the two processes. In order to allow the heat to diffuse m times without having the heat diffuse from one side of the lattice to the opposing side (which would be unphysical), the lattice is decorated with 2m rows and 2m columns of {0, 0}'s (using the zerosDecorate function) before the temp rule is applied.

These two processes are carried out repeatedly until the crystallization stops of its own accord or after a specified number of time steps, using

FixedPoint[Nest[Moore[temp, #]&, zerosDecorate[Moore[phase, #]], m]&, seedLat, n]

These pieces of code can be combined into a program.

The Dendrite Program

dendrite[D_Real, m_, lambda_, latheat_, delta_, undercool_, n_] :=
   Module[{zerosDecorate, seedLat, phase, temp, Moore},   

      zerosDecorate = Nest[(Prepend[Append[Map[Prepend[Append[#, {0, 0}], {0, 0}]&, #],
                                          Table[{0, 0}, {Length[#] + 2}]], Table[{0, 0}, {Length[#] + 2}]])&, 
                                          #, m]&;

     seedLat = zerosDecorate[Table[{1, undercool} Random[Integer], {5}, {5}]];

     phase[{0, a_}, {s_, _}, {t_, _}, {u_, _}, {v_, _}, {w_, _}, {x_, _}, {y_, _}, {z_, _}] :=
        {1, a + latheat} /; 
         MatchQ[1, s | t | u | v] && 
          a < undercool (1 + delta Random[Real, {-1, 1}]) +  lambda (2 ( s + t + u + v) + (w + x + y + z) - 6);
             
     phase[{r_, a_}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}, {_, _}] := {r, a};
      
     temp[{r_, a_}, {_, b_}, {_, c_}, {_, d_}, {_, e_}, {_, f_}, {_, g_}, {_, h_}, {_, i_}] :=
         {r, a + (D/m)*((b + c + d + e)/6+ (f + g + h + i)/12 - a)}; 
                
      Moore[func__, lat_] :=   
           MapThread[func, Map[RotateRight[lat, #]&, 
                               {{0, 0}, {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1,  -1}, {-1, -1}, {-1, 1}, {1, 1}}], 2];
       
       FixedPoint[Nest[Moore[temp, #]&, zerosDecorate[Moore[phase, #]], m]&, seedLat, n] 
  ]

Growing A Crystal

In running the dendrite program, the quantities, capillary length, latent heat, diffusion constant, and m are first adjusted to convenient values and then the effect of different undercoolings are examined. We'll show a typical output from running the program.

solid = dendrite[4.0, 5, 0.015, 1, 0.1, 0.4, 40];

ListDensityPlot[-Map[Take[#, {160, -160}]&, Take[solid, {160, -160}]] /. 
                       {x_, y_?NumberQ} -> x, Mesh -> False, FrameTicks -> None];

ListDensityPlot[Map[Take[#, {160, -160}]&, Take[solid, {160, -160}]] /. 
            {x_, y_?NumberQ} -> y,  Mesh->False, ColorFunction -> Hue, FrameTicks -> None];

The top black-and-white graphic shows a crystal grown at a small undercooling and the bottom color graphic shows the temprature field for the crystal. 

Note: We have cropped the pictures (removing the outer rows and columns which have no crystalline sites) so as to enlarge the view of the crystal and its thermal field.

Computer Simulation Projects

1. Crystallization from the melt commonly involves the simultaneous growth of multiple crystals until they impinge upon one another. Modify the dendrite progam so that there are several randomly placed crystal seeds which grow simultaneously.

2. Modify the program created in the previous project so that a graphic can be created showing the boundaries between impinging crystals.

3. A simple cellular automaton model of snowflake formation which incorporates growth inhibition effects can be created as follows: Starting with a hexagonal lattice in which all the sites initially have value zero except the center site which has value 1, update the sites by the following rule: a site's value changes from 0 to 1 if it has exactly one nearest neighbor site with value 1; otherwise its value remains unchanged. Implement this algorithm and create a graphics array of snowflake growth over time, showing that as the crystal grows, its structure cycles through a plate-dendritic arms-sidebranches sequence.

General References

Liu, Fong and Goldenfeld, Nigel. 1990. "Generic features of late-stage crystal growth", 
Fong Liu and Nigel Goldenfeld, Phys. Rev. A, 42, 895 - 903.

Liu, Fong and Goldenfeld, Nigel. 1991. "Deterministic Lattice Model for Diffusion-Controlled 
Crystal Growth", Physica D, 47, 124 -131.

Packard, Norman H. 1986. "Lattice Models for Solidification and Aggregation", Proceedings of the First International Symposium for Science on Form, Tsukuba University " (reprinted in Wolfram, Stephen. 1986. "Theory and Applications of Cellular Automata", World Scientific Publing Co., pp. 305-310).

Rappaz, Michel and Kurz, Wilfried. 1995. "Dendrite solidified by computer", Nature, 375 (5/11/95), 103.