SPPARKS Website - SPPARKS Documentation - SPPARKS Commands

app_style diffusion command


app_style diffusion estyle dstyle args 


app_style diffusion linear hop
app_style diffusion nonlinear schwoebel 5 2 


This is an on-lattice application which performs diffusive hops on a lattice whose sites are partially occupied and partially unoccupied (vacancies). It can be used to model surface diffusion or bulk diffusion on 2d or 3d lattices. It is equivalent to a 2-state Ising model performing Kawasaki dynamics where neighboring sites exchange their spins as the model evolves. Each lattice site stores a value which is 1 for vacant or 2 for occupied or 3 for vacant and a non-deposition site. See the deposition command for more details on the value = 3 sites.

Note that this application only allows for a single diffusing species (site value = 1) if run with an atomic-scale lattice, or a single phase if run with a coarse-grained lattice. See the app_style diffusion/multiphase command which allows for multiple diffusing species or phases.

The estyle setting determines how energy is used in computing the probability of hop events, which is related to the Hamiltonian for the system.

The Hamiltonian representing the energy of an occupied site I for the off style is 0, which simply means energy is not used in determining the hop probabilities. Instead, see the barrier command.

The Hamiltonian representing the energy of an occupied site I for the linear style is as follows:

Hi = Sum_j delta_ij 

where Sum_j is a sum over all the neighbor sites of site I and delta_ij is 0 if site J is occupied and 1 if site J is vacant. The Hi for a vacant site is 0.

The Hamiltonian representing the energy of an occupied site I for the nonlinear style is as follows:

Hi = Eng(Sum_j delta_ij) 

where Sum_j is the sum over all its neighbor sites and delta_ij now 1 if site J is occupied and 0 otherwise. Thus the summation computes the coordination number of site I. Note that this definition of delta is the opposite of how it is defined for estyle linear. The function Eng() is a tabulated function with values specified via the ecoord command. This effectively allows the energy to be a non-linear function of coordination number. As before the Hi for a vacant site is 0.

For all these estyle settings, the energy of the entire system is the sum of Hi over all sites.

The dstyle setting determines what kind of diffusive hops are modeled. For hop, only simple nearest-neighbor hops occur where an atom hops to a neighboring vacant site. For schwoebel, Schwoebel hops can also occur, which are defined in the following way. An atom I can hop to a 2nd neighbor vacant site K if there are two intermediate 1st neighbor sites J1 and J2, where J1 is vacant and J2 is occupied, and J1 and J2 are neighbors of each other. Additionaly the initial site I can have no more the Nmax occupied neighbors (its coordination number), and the destination site K can have no fewer than Nmin neighbors.

The deposition command can be used with this application to add atoms to the system in competition with hop events.

IMPORTANT NOTE: If you have a free surface you are depositing onto, it may also be possible for atoms to diffuse away from this surface, i.e. desorb into a vacuum. This application does not do anything special with those atoms (e.g. remove them), so they may clump together or induce deposition to take place onto the clumps above the surface. If you wish to prevent this you should insure that desorption is an energetically unfavorable event.

The barrier command can be used with this application to add an energy barrier to the model for nearest-neighbor hop and Schwoebel hop events, as discussed below.

The ecoord command can be used with the nonlinear version of this application to set tabulated values for the Hamiltonian Eng() function as described above.

Note that estyle nonlinear should give the same answer as estyle linear if the tabulated function specified by the ecoord command is specified as E_0 = N, E_1 = N-1, ... E_N-1 = 1, E_N = 0, where N = the number of neighbors of each lattice site, i.e. the maximum coordination number. In this scenario, the energy is effectively a linear function of coordination number.

This application performs Kawasaki dynamics, in that the "spins" on two neighboring sites are swapped, where spin can be thought of as a flag representing occupied or vacant. Equivalently, an atom hops from an occupied site to a vacancy site.

As explained on this page, this application can be evolved by either a kinetic Monte Carlo (KMC) or rejection KMC (rKMC) algorithm. You must thus define a KMC solver or sweeping method to be used with the application via the solve_style or sweep commands. The linear estyle supports both KMC and rKMC options. The other estyles only support KMC options. If the deposition command is used, then only KMC options are supported.

For solution by a KMC algorithm, the possible events an occupied site can perform are swaps with vacant neighbor sites. The probability of each such event depends on several variables: the estyle setting, whether the barrier command is used, whether the hop is downhill or uphill in energy, and whether the temperature is 0.0 or finite. The following table gives the hop probability for each possible combination of these variables.

Energy Barrier Direction Temperature Probability
no no N/A either 1
no yes N/A 0.0 0
no yes N/A finite exp(-Q/kT)
yes no down either 1
yes no up 0.0 0
yes no up finite exp(-dE/kT)
yes yes down 0.0 0
yes yes down finite exp(-Q/kT)
yes yes up 0.0 0
yes yes up finite exp((-dE-Q)/kT)

If estyle is set to off, then energy is "no" in the table. Any other estyle setting is energy = "yes". Barrier is "no" in the table if the "barrier" command is not used, else it is "yes" in the table. The direction of energy change (downhill versus uphill) is only relevant if energy is "yes", else it is N/A. The "either" entry for temperature means 0.0 or finite.

The value dE = Efinal - Einitial refers to the energy change in the system due to the hop. For estyle linear this can be computed from just the sites I,J. For estyle nonlinear the energy of the neighbors of both sites I,J must also be computed.

For solution by a Metropolis algorithm, the hop event is performed or not if the probability in the table is 1 or 0. For intermediate values, a uniform random number R between 0 and 1 is generated and the hop event is accepted if R < probability in the table.

The following additional commands are defined by this application. The ecoord command can only be used with the nonlinear energy style.

barrier define energy barriers for hop events
deposition define deposition events
ecoord specify site energy as a function of coordination number
temperature set Monte Carlo temperature

Restrictions: none

Related commands:

app_style ising, app_style diffusion/multiphase

Default: none