Validation and verification of any simulation code is critical -- one cannot be confident that the results are correct unless it has been demonstrated that the code does what it should do.
Our code has two built-in ``always on'' self-verification tests. First, at the conclusion of execution, we check the number of particles, making sure that the number of particles on the surface, plus the number of particles desorbed sums to the number of particles we started with. Also, we check to make sure that the total recorded number of moves recorded in each type sums to the total number of moves made.
In addition to these ``always-on'' tests, we have the option of compiling in particle collision detection checking, using COLLISION_TEST preprocessor macro. This feature was quite useful during the debugging process.
To verify our code, we compared results for a ``base case'' problem (a flat terrace with no steps) with the rates we'd expect to get from the experimental activation energies when plugged into the Boltzmann distribution. To perform these verifications, we ran the code on the step-less geometry at a variety of temperatures. These results are found in Figure 7 for intra-dimer diffusion, and Figure 8 for terrace desorption. We list both rate that comes directly out of the formula, and one which is ``adjusted'' for the dimer-site coverage -- e.g. intra-dimer diffusion is less likely to occur on a lattice where most of the dimer sites are filled up with other hydrogens.
This results show, that except for around the 800-900 K range we do an adequate job of approaching the rates indicated by the Boltzmann distribution. Since these are precisely the temperatures where the most interesting physics happens, it's not surprising to see that the idealized Boltzmann rate differing from what we see in our simulation. The experimental activation energies comes from lower temperature observations, so it's reasonable to believe that we might get inaccuracies at higher temperatures.
Chris Siefert and Molly Moore 2002