Latest news |
April, 2008
TFOx has been re-written to adhere to the C99 standard. In doing so, there has been a slight increase in speed. Also, TFOx should now compile with all standard C compilers, and TFOx parallel has been integrated with the main c file.
Current TFOx Version: 9.5
|
December, 2008
A minor update to TFOx 3D. Now sticking probabilities can be specified via temperature using the Boltzmann Equation. Also, a probability for nucleation on missing rows has been added. On the GUI end, the main window can now be resized for increased ease-of-use for larger simulations.
Current TFOx Version: 9.4
|
October, 2008
TFOx 3D has been expanded once again. Now potential gradients can be rotated. An extension of this is that substrate effects can now cause islands to grow in perpendicular directions. Additionally, sticking and jumping probabilities can now be viewed in real time when using the GUI.
Current TFOx Version: 9.3
|
September, 2008
TFOx 3D has been expanded and some algorithms have been reworked for a more versatile TFOx. Specifically an ES Barrier has been added, along with greater control of 3D potential gradients.
Current TFOx Version: 9.2
|
July, 2008
TFOx has been given a massive overhaul. Now consisting of separate console (C++) and GUI (Python) applications, TFOx has seen two orders of magnitude in speed increase. In addition to this, parameterized testing, parallel execution, and initial 3D simulation capabilities have been added to its repertoire.
Current TFOx Version: 9.0a
|
September, 2006
TFOx was originally written in Visual Basic. The program has recently been updated to C++, resulting in a order of magnitude increase in its performance. The C++ version will also allow for future parallelization and for TFOx to be run on the extensive Linux-based Beowulf cluster of the UF and CMU teams.
Current TFOx Version: 8
|
May, 2005
TFOx stands for Thin Film Oxidation. Although the research associated with this kinetic Monte Carlo (kMC) simulation program is focused on the oxidation of thin films, it may be used to simulate the epitaxial growth of other thin films.
Current TFOx Version: 7
|
Site last updated 4.28.09
|
Links |
|
|
INTRODUCTION
The simulation can be carried out within an ‘open' lattice in which jumps in a given direction are equally probably (probabilities of jumping in orthogonal and diagonal directions can be specified independently though). An available alternative is to use a simulated substrate with surface defects or one that takes into account possible orientations of reconstructed surface variants. A third method is to define a potential gradient of diffusion probability in which diffusion in the direction of or away from an island or possible nucleation site will have greater probability than other directions. There are two options available during the simulation for the number of diffusing atoms on the surface. During the simulation single atoms (one at a time) or multiple diffusing atoms can be used. The deposition rate in terms of the number of jump attempts can be specified for multiple diffusing atoms.
Several options for nucleation and surface diffusion are available. Nucleation may occur by the sticking of atoms to predetermined possible nucleation sites based on a model of the substrate, randomly selected positions, or a single user specified position. In the case of multilayer film growth, a separate nucleation probability controls nucleation of layers beyond the interface. In the case of multiple diffusing atoms another nucleation option exists. The collision between diffusing atoms can result in the sticking of one or more atoms to the reconstructed surface lattice. The diffusion of atoms on the surface can be effected by a simple random walk procedure or, if a simulated substrate or potential gradient is being used the probability of jumping in a given direction can be influenced by the substrate or potential. Jumping and sticking probabilities can be set by the user. In most cases the probabilities for orthogonal and diagonal directions can be specified separately.
The results of the simulation can be acquired in several ways. The images of the reconstructed surface lattice (RSL) can be saved to a file at the completion of the simulation or images can be saved automatically at increments of fractional coverage. For three dimensional simulations, PDB and/or CFG formatted descriptions of the atomic structure of the resulting structure can be saved at the completion of the simulation. The images can be analyzed using any one of several image processing or image analysis programs available. Alternatively, simulation data can be saved directly to disk. However, currently only the size of the islands and the coverage are calculated during the simulation. Any other parameters such as perimeter length would have to be determined using another program. A summary of the islands will be saved in a single file if the data at specified intervals of coverage is saved directly.
All the parameters specified for a given simulation can be saved to parameter files for later re-use or sharing. To obtain a statistically significant number of data points it may be necessary to run several iterations of the simulation under the same conditions.
The large number of options and probabilities used in this program should provide a rich environment for the simulation of epitaxial growth or oxidation of thin films. Analysis of the images of the reconstruction will yield data which can be compared to experimentally determined values such as nuclei or island density and coverage versus time as well as morphological data. The following pages will describe the program's setup procedures, capabilities, and limitations.
|
SIMULATION DETAILS
kinetic Monte Carlo
During a Monte Carlo simulation an event occurs if a randomly generated number is less than an assigned probability.
The frequency of events relates time in the simulation to real time (e. g., jump attempts, deposition rate, pressure).
Temperature dependence is introduced through the probabilities of an atom diffusing or sticking.
The length scale of the simulation is determined by the lattice dimensions.
3 Dimensional Lattice
The current simulation is restricted to a square lattice.
The third dimension is simulated by keeping a height map of the lattice. To simulate actual crystal structure, an angle can be specified for offset between approximately square layers of a lattice.
The dimensions of the lattice are specified in number of sites rather than unit cells. Because the third dimension is stored as a height-map, it is essentially infinite. The example below is an 8 by 6 lattice, 8 lattice positions in the x direction and 6 lattice positions in the y direction.

Adatoms diffuse within the lattice until the atom re-evaporates or attaches to a fixed site (lattice point) on the substrate.
Atoms can only be located at lattice positions.
Periodic boundaries may be used or the lattice can be restricted to finite dimensions.
If periodic boundaries are used, atoms jumping across the edge will reappear on the opposite side of the lattice. If an atom jumps diagonally from a corner it will reappear on the diagonally opposite corner.

If a finite substrate (lattice) is used an atom may be allowed to fall off of the substrate (jump out of the lattice).
The probability of an atom jumping off of the substrate can be specified separately from the probability of jumping within the lattice.
If the probability is set to zero atoms will bounce back from the boundaries.
If atoms are allowed to fall off of the substrate an option can be set to force the atom to be re-deposited elsewhere on the lattice.
Atom Movements
The simulation of atoms diffusing on the surface of a substrate is accomplished by assigning probabilities of an atom jumping in all open directions. An atom jumps in a direction (or stays at its current position) based on the selection of a random number (r) from the range of probabilities (Ci) available for the given lattice position.
Atoms may jump either diagonally or horizontally within the lattice.
The probabilities of jumping in horizontal and diagonal directions are specified independently.
Atoms cannot ‘jump over' other atoms.
The cumulative probability of an atom jumping in each open direction is listed in an array (C) which defines a scale. A random number is selected within the range of the cumulative probability. The random number will fall within the range of one array element. The direction associated with that element is the direction in which the atom will jump (or stay). In the example following, if r = 0.90 the atom will jump to position 7 (1,3) indicated by the green arrow.

Time within the simulation is kept in terms of jump attempts. A selection of a jump direction whether the atom stays at its present position or jumps to a neighboring site is counted as a jump attempt.
The simulation can be restricted to single diffusers or multiple simultaneously diffusing atoms.
In the single diffusers case another atom is not added to the lattice until the currently diffusing atom attaches or re-evaporates.
Multiple diffusing atoms can be deposited several atoms or no atoms after each jump attempt. The times an atom or atoms are added to the lattice is selected at random within a set number of jump attempts or simulation loops. All diffusing atoms are checked for sticking and jumping in 1 loop (time step). A deposition rate is defined as the number of atoms deposited per loop or a fraction of a monolayer deposited per loop.
Atoms can be assigned a limited lifetime on the surface of the substrate (within the lattice). Atoms that do not form a new nucleus or attach to an existing nucleus or island within the specified number of jump attempts will re-evaporate.
Nucleation and Growth
Nucleation can occur under user specified conditions.
Possible nucleation sites, lattice positions with higher probability of an atom sticking to the substrate, can be selected at random.
A simulated substrate can be employed with possible nucleation sites.
A uniform probability of nucleation at any lattice site can also be used.
The collision of multiple diffusing atoms can also be specified as a possible nucleation event.
For multilayer nucleation, the probabilities of nucleating a new layer and sticking to a non-interface layer can be specified.
Before a jump attempt is made the probability of an atom sticking to its current lattice site is checked by selecting a random number. If the random number is less than the assigned probability of sticking to the site the atom will stick to the site (stay in its current position).
Currently, all atoms that stick to a site remain at the site until completion of the simulation, it is an irreversible process.
Growth is obtained by the attachment of adatoms to existing nuclei or islands.
Each site in the lattice is assigned a probability of sticking. This probability will include the probabilities of nucleation (random sites, substrate sites, etc.) as well as the probability of sticking to an existing island. The net probability of sticking at a site is a summation or maximum of all the probabilities of sticking associated with the site.
For example if a site has 1 orthogonally and 1 diagonally positioned neighbor occupied sites with respect to it, the net probability will be the sum of 1 diagonal probability plus 1 orthogonal probability if summation is used. The net probability would be the larger of the orthogonal and diagonal sticking probabilities if maximum is selected.
As a second example, if a site has 2 orthogonal and 2 diagonal occupied neighbor sites, the sum would be 2 times the sum of 1 diagonal and 1 orthogonal probability, twice the sticking probability of the previous example, while the maximum would be the same as that of the previous example.
For these examples the probability of sticking to an orthogonally positioned attached atom is 7% (0.07) and for a diagonally positioned attached atom it is 10% (0.10). In the first example the probability of sticking to the site shown in the figure is 0.17 using the sum. In the second example it is 0.34 using the sum. The sticking probability for both examples using the maximum is 0.10.

During the simulation the sticking probability of each lattice site is held in an array with dimensions equal to the lattice dimensions.
The irreversible attachment of atoms to islands and nuclei prevents coarsening. Islands and nuclei can only grow and will not shrink.
Substrate Effects
TFOx has the option of simulating the effects of defects and/or characteristics of a substrate. The substrate design parameters are specified in the Substrate and Nucleation dialog. Essentially the effects are realized in the simulation as effects on the diffusion, nucleation, and attachment of atoms on the surface of the substrate. Preferred nucleation sites (lattice points) of various types are available.
Substrate effects on diffusion can be included by assigning domain boundaries which are represented by lines within the surface of the substrate. The domains would represent variants of a surface reconstruction such as the Cu 2 O surface reconstruction's perpendicular variants. The probability of atoms crossing boundaries or attaching to islands across boundaries can be set to values different from those of the probabilities of atoms diffusing or attaching within a domain. Additionally, intersections of domain boundaries can be used as possible nucleation sites.
Lines on the substrate could also represent missing rows of atoms on the substrate. However, the missing rows currently only affect the probabilities of atoms diffusing and attaching, atoms would not ‘fall' into the trough (missing rows). Again, the intersections of the lines (missing rows) could be used as possible nucleation sites.
Randomly positioned possible nucleation sites could for example simulate a spatial distribution of dislocations which could act as possible nucleation sites.
The last method of incorporating substrate effects into the simulation is to use a potential gradient in the probability of diffusion due to the nucleation and growth of islands.
This potential gradient can be specified as strictly 2D, cylindrically extended 2D, or fully 3D, depending on the type of simulation being performed.
Diffusion Potential Gradients
It is known that in some systems under certain conditions that atoms attached to the surface of a substrate can influence the movement of diffusing atoms in the vicinity of the attached atom. This is referred to as Substrate Mediate Interactions and can be short, intermediate, or long range effects [Fichthorn, et.al.]. The magnitude of these effects will depend on the system (Ag on Ag(111) for example, Fichthorn) and the temperature.
The interactions are implemented as effects on the activation barriers to diffusion at sites within a specified proximity to atoms attached to the surface.
In the example of Ag|Ag(111) from Fichthorn and co-workers the gradient was determined using Density Functional Theory. However, to simplify their simulation only the increased activation energy at a distance from the attached atoms, a type of diffusion barrier, was used. This resulted in the creation of Capture Zones. Any atom falling (being deposited on the surface) will eventually attach to the island or nucleus contained within the capture zone. Atoms deposited outside of the capture zones of all attached atoms may form new nuclei. Fichthorn and co-workers were able to explain the much larger number of nuclei and islands at low temperatures (40K) than that predicted by other theories such as the JMAK model.
The potentials are implemented in TFOx by using an array of gradient factors. The probability of an jumping from one site to another has the form of an Arrhenius relationship.
Following the work of Fichthorn the change in activation energy for diffusion is adjusted by one half the difference between the energies of the two sites, the current position of the atom and the possible new position of the atom. Therefore the adjustment of the activation energy (in an exponential relationship) is the same as multiplying the probability of jumping outside of the range of influence of the attached atoms by the exponential of the adjustment factor (exp[-ΔE/kT]).
If the change in energy is negative, a decreased net activation energy, the probability of an atom jump to the new position from its current position is greater than if the diffusing atom was outside of the range of influence of the attached atom. Therefore, exp[-ΔE/kT] is greater than one. Alternatively, it is less than one if the difference in activation energies is positive. The diffusion gradient factor outside of the influence of the attached atoms is equal to 1 (ΔE=0).
As mentioned in the section on Atom Movements, the selection of a jump direction for a diffusing atom is by random selection of a direction from the cumulative probability of all open directions. Therefore, only relative differences in the potential gradient are of importance.
When 2 or more attached atoms are within the range of each others potential gradients a method of combining effects due to the overlap of potentials must be employed. Currently there are 3 options for combining the overlapping potentials.
The first is simply to take the maximum value.
The second is to sum the gradient factors.
The last is to sum the effects on activation energy due to each potential. This is accomplished by multiplying the factors and is consistent with the method of Fichthorn.

|
USING THE GUI PROTOTYPER
Parameters for a simulation can be quickly set up using the GUI Prototyper. Individual parameters are separated by the area of the simulation they control, and each area of the simulation has been given its own pop-up menu. These areas include Lattice, Probabilities, Substrate & Nucleation, 3D settings, and Run settings.

Figure 1: The GUI Prototyper's main screen
Reconstructed Surface Lattice Pop-up menu
The following options are available under the Lattice menu:
Simulation Name: Specifies the name of the simulation. This is no longer used for data file names.
Single Diffuser: Specifies whether to use a single diffusing atom or multiple diffusing atoms.
Periodic Boundaries: Specifies whether to use periodic boundaries.
Lattice Dimensions (Angstroms): Provides a real length scale for the distance between two lattice sites for comparison with experiment and/or theory.
Nanometers/Micrometers: Specifies which length scale to output data in.
ML/Data Step: The number of monolayers to deposit in-between the acquisition of data (i.e. island data or the current image for a bitmap movie)
Adatoms: The number of adatoms to deposit.
X and Y Sites: The size of the lattice in sites. The area (in sites) of the lattice is reflected in the unchangeable field of Total Sites. This data is reflected in terms of real units (via Lattice Dimensions) in the unchangeable fields of Width, Height, and Area.
Total Sites, Width, Height, and Area: Reflect the data of X and Y sites in other terms. These cannot be specified directly.
Maximum Images: Reflect the maximum possible images that could be output based on Adatoms, X and Y sites, and ML/Data. This is also the number of times island data would be sampled throughout the simulation. This cannot be specified directly.
Jumps/second: Provides a real time scale for each atomic action simulated (i.e. jumping, sticking, deposition, and evaporation).
Limit Jumps: Specifies whether to limit an atom's lifetime on the surface. After the number of jumps specified in Maximum Jumps, an atom evaporates.
Maximum Jumps: The maximum number of jumps an atom can make before it evaporates.
On Island Diffusion: Specifies whether or not to allow for diffusion of atoms on top of islands. This is enabled automatically in 3D enabled simulations.
Deposit Molecules: Specifies whether to deposit single atoms or molecules.
Initial Diffusers: The number of diffusers to start out with. This is defaulted to one in the case of a single diffuser simulation.
Atoms/Loop, Monolayers/Loop, Atoms/Second, Monolayers/Second: These four entry grids are linked to the same value. These ultimately specify the number of atoms to deposit per loop, but this can be represented by monolayers per loop or by atoms or monolayers per second (via Jumps/second).
Simulation Time Limit: Specifies whether to limit the number of data loops in the simulation.
Total Loops: The number of data loops to perform, if the simulation is time limited.

Figure 2: Reconstructed surface lattice specifications
Probabilities Pop-up Menu
The following options are available under the Probabilities menu:
Diffusing Atom to Island Sticking Probabilities: These three entry grids specify Horizontal, Vertical, and Diagonal sticking probabilities between atoms and islands.
Diffusing Atom to Diffusing Atom Sticking Probabilities: These three entry grids specify Horizontal, Vertical, and Diagonal sticking probabilities between diffusing atoms. These are only used if collision nucleation is enabled.
Diffusing Atom to Islands through Troughs Sticking Probabilities: These two entry grids specify Orthogonal and Diagonal sticking probabilities between atoms and islands that exist over trough sites on the substrate. These are only used if custom substrates are enabled.
General Nucleation Sticking Probability: The probability for an atom to stick to a nucleation site.
General Vacancy Sticking Probability: The probability for an atom to stick to any site.
Unimpeded Jump Probabilities: These two entry grids specify the probability for an atom to jump in either the orthogonal or diagonal direction over an area of the substrate with no surface defects (aka troughs).
Trough Jump Probabilities: These two entry grids specify the probability for an atom to jump in either the orthogonal or diagonal direction over an area of the substrate with surface defects (aka troughs). These are only used if the use of a customized substrate is enabled.
Off Substrate Jump Probability: The probability that an atom can jump off of the substrate. This is only used if periodic boundaries are disabled.
"Back On": Specifies whether to deposit a new atom when an atom jumps off of the substrate. This is only used if periodic boundaries are disabled.
Potentials Overlap for Sticking: This specifies what function to use when overlapping sticking probabilities. The choices are to sum values or take the maximum value.
Potentials Overlap for Jumping: This specifies what function to use when overlapping jumping probabilities. The choices are to multiply values, sum values, or take the maximum value.
Potential Gradient Range: The range of the jump potential gradient to use. The area of effect of the jumping potential gradient is (2 * Range + 1) in each dimension.
Enable Potential Gradient: Specifies whether or not to use jumping potential gradients. Enabling this option brings up the Potential Gradient pop-up menu.

Figure 3: Jump and stick probabilities specifications
Potential Gradient Pop-up Menu
The Potential Gradient pop-up menu is a simply arranged entry matrix for the jumping potential gradient. Full three dimensional gradients can be entered at any time (for ease of use) using the navigation buttons provided. For any potential gradient range greater than 3, the pop-up menu truncates the matrix to what can be easily viewed on the screen, and additional navigation buttons are available to move around the matrix. The navigation buttons are also mapped to the arrow keys, Shift (move inwards), and Control (move outwards) for ease of use. The currently active 2D layer of the matrix, or the entire 3D matrix can be loaded from a potentials file, if you do not wish to enter the values by hand. NOTE: If you do not wish to take advantage of the full 3D potential gradient, 2D gradients make use of the 2D layer where Z=0, as this exists in all gradients.

Figure 4: Jumping Potential Gradient specifications
Substrate and Nucleation Pop-up Menu
The following options are available under the Substrate and Nucleation menu:
Use Substrate: Specifies whether to use custom substrates.
Trough Directions: Specifies whether to enable defect and surface roughening simulation in the horizontal and/or vertical directions. One of these must be enabled if custom substrates are enabled.
Maximum Length Cap: Specifies whether to cap the maximum trough length at the current maximum of horizontal and vertical length of the lattice.
Trough Lengths: These are the maximum and minimum trough spacing allowed during substrate creation.
Limit Spacing: Specifies whether to force troughs to be spaced out. This can be used as a means of density and distribution control for troughs during substrate creation.
Minimum Trough Spacing: The minimum number of lattice sites that need to exist between troughs. As previously stated, this can be used as a means of density and distribution control for troughs during substrate creation. This only used if trough spacing limitation is enabled.
Collision Nucleation: Specifies whether nucleation by collisions between atoms can occur.
Preset and/or Random Nucleation: Specifies whether to allow preset nucleation sites (i.e. a single preset point, substrate nucleation points) and/or random nucleation sites.
Substrate Nucleation: Specifies whether nucleation sites can be generated during custom substrate creation. Substrate nucleation sites are taken as the intersection point between a vertical and horizontal trough.
Random Nucleation: Specifies whether to allow random nucleation sites. This also needs to be enabled if one wishes to use a single preset nucleation site.
Number of Random Nuclei: The number of random nucleation sites to create. If one, then a single nucleation site's coordinates can be specified. This is only used if random nucleation sites are enabled.
Single Nucleus Coordinates: The x and y coordinates for a single nucleation site on the substrate. They are only used if random nucleation is enabled and the number of random nuclei is set to one.

Figure 5: Substrate and nucleation sites specifications
3D Settings Pop-up Menu
The following options are available under the 3D Settings menu:
Enable 3D: Specifies whether to allow for multilayer nucleation.
3D Gradient Type: This controls how the jump potential gradient is handled in the third dimension. None turns off the use of potential gradients for non-interface layers (a potential is still used for the interface layer if potential gradients are enabled), Extended 2D cylindrically extends the potential gradient used for the interface layer to all layers, and Full 3D enables the use of the full 3D potential gradient.
3D Stick Probabilities: These control the probabilities for an atom to nucleate a non-interface layer and to stick to an island on a non-interface layer in the horizontal, vertical, and diagonal directions.
Interlayer Angle (degrees): The connection angle between two layers in the simulated substance's crystal structure such that each layer can be approximated by a square grid. For example, an angle of 90 simulates a perfect cube of lattice sites, an angle of 45 simulates a pyramid-like structure and an angle of 0 crushes all of the atoms into one layer. Please note that this is in degrees!

Figure 6: 3D settings specifications
Run Settings Pop-up Menu
The following options are available under the Run Settings menu:
Data File Name: The name to use for all data files. Please note that you need to include an extension for use with island data files. This extension will be removed and replaced with the appropriate extension for all visual outputs (i.e. bitmaps, PDB, and CFG files).
Output selection: The following types of data output can be enabled: Final image (bitmap), Island data (island data file), 3D island profiles (PDB or CFG). To be able to read PDB or CFG files, we recommend Atomeye, which is free and works on all major platforms. Please note that at least one output must be specified for a simulation to run. Why run a simulation if you're not collecting any data?
Working directory: This tells your computer where to start looking for files, and where to place the simulation's output. Default (blank) is most likely the folder in which the program itself exists (this is platform dependent).
Console directory: This tells your computer where the TFOx console program is. This is necessary for running simulations from the GUI. Please note that the TFOx console program must be named "TFOx9" within this folder. Default (blank) is most likely the folder in which the program itself exists (this is platform dependent).
Variable over Range Testing: Variable over Range (VOR) testing allows for parametrized testing from a single set of parameters. For each variable one wishes to test over, the step value and number of test to perform need specified. Up to ten variables can be tested over, but this is not recommended without using TFOx9 Parallel.

Figure 7: Run settings specifications
|
|