Adsorption and Surface Migration: Energy Calculations

Introduction

In Maths Lab 4, "Chemisorption onto a Crystal Surface", you studied the phenomenon of chemisorption, focusing on forces and equilibrium. In this Lab, we extend and deepen these ideas, using the mathematical concepts of integration and scalar product to bring in considerations of work and energy.

As with all of this term's lab exercises, your reports must be submitted for marking by the end of the two sessions allotted for the experiment. Leave a printed version, with your name on it, in the box provided outside Nick Davies' office in the Computer Room. Late reports will be penalised. Remember, we are expecting you to write up your reports by using the document preparation facilities built into Mathematica. A lot of code and output, without appropriate accompanying commentary, will not get good marks.

Objectives

In this exercise you will be asked to determine integrals of the work done to remove ions from a crystal surface and to cause them to migrate about on a crystal surface.For the latter you will use the scalar product in an integral and you will also be asked to apply your knowledge of conservative fields to interpret the results.

1. Preliminary Code

The preliminary code for this Lab is contained in the notebook called "Energetics.nb". This is virtually identical to that which you used in Lab 4; all we've done is add the function lattice2D, which allows you to generate 2D plots of planar lattices of a given size. 

Because there's nothing new there, we've put all the code in a closed cell group. If you want to examine it, by all means open up the cell group (double-click on the "hooked" cell bracket on the right). Otherwise, you should simply select the "hooked" bracket and "shift-enter" to evaluate all the code inside.

DO NOT OMIT THIS STEP, or nothing will work!

2. Dissociation Energy

In one dimension, calculations of work are relatively straightforward. If we move a particle in the direction of (say) the z-axis, and the particle is subject to a force F(z), also in the direction of the z-axis, then the work done in moving the particle from z = (Subscript[z, 1]) to z = (Subscript[z, 2]) is given by

(∫_((Subscript[z, 1]))^((Subscript[z, 2])))F(
              z) \[DifferentialD]z.

We can use this to calculate the work done in moving a chloride ion away from a sodium ion at the origin: from the equilibrium bond separation to twice that distance, say. First, let's calculate the force between the sodium ion and the chloride ion when it's at (0, 0, z), as a vector in terms of z:

vectorforce = 
      forceBetween[{chloride, {0, 0, z}}, {sodium, {0, 0, 0}}]

Now, we pick out the third (that is, the z-) component:

zforce = vectorforce[[3]]

A plot of this force might be helpful:

Plot[Evaluate[zforce], {z, 0.8  rbond, 3  rbond}]

And finally, the indefinite integral.

Integrate[zforce, z]

Exercises and Explorations

1: The exact solution

Explain how substituting rbond into the result of this integral gives you the dissociation energy of the sodium chloride dipole: the work done in removing one of the ions to infinity. Take a note of its magnitude. Is it positive or negative? What is the significance of its sign?

1: The approximate solution

For later work we're going to need the numerical NIntegrate command, because our integrals will become too complicated to do quickly using symbolic methods. Try

NIntegrate[zforce, {z, rbond, 10  rbond}]

NIntegrate[zforce, {z, rbond, 100  rbond}]

NIntegrate[zforce, {z, rbond, 1000  rbond}]

etc. How far out do you need to go before you obtain the dissociation energy to three significant figures?

3. Adsorption Energy

We can do similar calculations to obtain estimates for the adsorption energy: the work done in removing an adsorbed ion from its equilibrium separation to infinity. Here's how to do it for a small lattice (remember, lattice[2] is 2 by 2, measured in unit cells). First, we define a function that specifies to contribution to the resultant force from each ion in the lattice:

forceFrom[ion_]:=forceBetween[{chloride, {0, 0, z}}, 
        ion]

Then, we calculate these forces:

forces = Map[forceFrom, lattice[2]]

Now, we add them up...

vectorforce = Apply[Plus,  forces]

... and take the z-component:

zforce = Apply[Plus, forces][[3]]

We use this to calculate the equilibrium separation (as in Maths Lab 4):

zadsorp = 
      z /. FindRoot[zforce == 0, {z, rbond}, AccuracyGoal -> 15]

Plot...

Plot[Evaluate[zforce], {z, 0.8  zadsorp, 3  zadsorp}]

... and calculate:

NIntegrate[Evaluate[zforce], {z, zadsorp, 10000  zadsorp}]

Exercises and Explorations

1: Effects of lattice size

Repeat the above calculation, but use a larger lattice: say lattice[5]. Important: for larger lattices, the expressions get very big, and it will be necessary to put semicolons after your expressions for forces, vectorforce and zforce in order to keep the size of your document, and the execution time, manageable. How does your equilibrium distance compare? What about your value for the adsorption energy?

Make your lattice larger still: look at lattice[10], say, and lattice[20]. How rapidly does the equilibrium distance appear to converge to a limit as the lattice size increases? What about the adsorption energy? Can you explain any discrepancy in these rates of convergence?

4. Surface Migration

In more than one dimension, calculations of work become slightly more involved, and vector methods come into the picture. If we move a particle along a (possibly curved) path in xyz-space, and it is subject to a variable vector force F, then the work done in moving a small distance δs along that path is

F.n δs,

where n is the unit vector (that is, the vector of length 1) in the direction of travel, and the "dot" symbol represents the scalar product.

Now, by Pythagoras, ((δs)^2)=((δx)^2)+((δy)^2)+((δz)^2), where δx, δy and δz are the small changes in the coordinates along the small section of path. It follows that the work done is

F.n (Sqrt[δ(x^2)+δ(y^2)+δ(z^2)])

But think about n for a moment. It's the unit vector in the direction of travel, which means, for short paths, that

n= (δx,δy,δz)/(Sqrt[δ(x^2)+δ(y^2)+δ(z^2)]).

So the work done is actually

F . (δx,δy,δz),

or, alternatively

F . (1,δy/δx,δz/δx)δx.

The total work done along the entire path is therefore

∫ F . (1,dy/dx,dz/dx)dx.

We'll restrict ourselves to motion in a horizontal plane, so for us the formula will be

∫ F . (1,dy/dx,0)dx.

Let's apply this analysis to the problem of moving a chloride ion, at a distance of (Subscript[z, 0]) = 2.95725×(10^(-10)) m (the adsorption equilibrium distance) from the lattice plane, along a straight line from the point A  (-3 (Subscript[r, lat]), -3 (Subscript[r, lat]), (Subscript[z, 0])) to B  (3  (Subscript[r, lat]), 0, (Subscript[z, 0])).  (Recall that (Subscript[r, lat]) is the interionic separation in the sodium chloride lattice). This path has equation

y = (1/2) (x - 3  (Subscript[r, lat])), z = (Subscript[z, 0]).

Let's use lattice[5]:

latticeFigure = 
      Show[Graphics[Map[particlePoint, lattice2D[5]]], 
        AspectRatio -> Automatic, Axes -> True]

First, we set up our constant z-coordinate...

z0 = 2.95725×(10^(-10))

... and specify the contribution to the force from each ion in the lattice when the chloride ion is at the point (x, y, (Subscript[z, 0])):

forceFrom[ion_]:=forceBetween[{chloride, {x, y, z0}}, 
        ion]

Calculate these forces...

forces = Map[forceFrom, lattice[5]];

... and add them up.

vectorforce = Apply[Plus,  forces];

Now let's define our path equation...

pathEquation = ((x - 3  rlat)/2)

... plot it...

pathFigure = 
      Plot[pathEquation, {x, -3 rlat, 3  rlat}, 
        PlotStyle -> {Thickness[0.02], RGBColor[0, 0, 1]}, 
        AspectRatio -> Automatic]

... and superimpose this plot on our lattice graphic.

Show[{latticeFigure, pathFigure}]

This is what we have to integrate, namely F . (1,dy/dx,0).

pathIntegrand = 
        vectorforce . {1, D[pathEquation, x], 0} /. 
          y -> pathEquation;

and this is the work done along the path:

pathWork = 
      NIntegrate[
        Evaluate[pathIntegrand], {x, -3 rlat, 3  rlat}]

Exercises and Explorations

1: A parabolic path

Show (using Mathematica if you like) that the parabolic path

y = (1/(12  (Subscript[r, lat]))) (((x + 3 (Subscript[r, lat])))^2) - 
        3  (Subscript[r, lat]), z = (Subscript[z, 0])

(for -3 (Subscript[r, lat]) ≤ x ≤ 
        3  (Subscript[r, lat])) also joins the points A and B. Generate a plot of this new path, superimposed upon the lattice. Calculate the work done along the path. How does its value compare with the work done along the straight line path?

2: Another path

Devise at least one more path of your own that joins A and B. Display it, and calculate the work done in moving a chloride ion along it. What is your tentative conclusion from your findings? Can you explain what's going on?