Skip to content

Roninkoi/VIKMC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vacancy Interstitial Kinetic Monte Carlo

Simulate movement of vacancies $n_v$ and interstitials $n_i$ in an amorphous solid (Si) using kinetic Monte Carlo. A Gaussian spherically symmetric initial distribution of vacancies and interstitials is generated, after which movement of defects is simulated by random jumps to nearest neighbour positions $r_{\text{nn}}$. If a vacancy and interstitial jump within a specified recombination distance $r_{\text{rc}}$, they disappear.

The vacancies and interstitials have a jump rate determined by

$$ \text{JR}(T) = w \exp\left(\frac{-E_m}{k_B T}\right), $$

at temperature $T$ with migration activation energy $E_m$. The transition that occurs is chosen from the cumulative rate

$$ \Gamma_i = \sum_{j=1}^i \text{JR}_j(T) $$

using the condition $U \Gamma_{\text{tot}} \leq \Gamma_i,$ where $U \sim \mathcal{U}(0, 1)$ is a uniformly distributed random number. Time step is determined from the total transition rate $\Gamma_{\text{tot}}=n_v+n_i$ as

$$ \Delta t = \frac{-\ln(U)}{\Gamma_{\text{tot}}}. $$

Compilation and running

Compilation:

make

Usage:

./vikmc <number of vacancies> <number of interstitials> <temperature (K)> <recombination distance (Å)> <simulation time (fs)> <write frequency 1/step> <number of runs>

Example: ./vikmc 150 150 1500 4 1.e9 1000 3

Generate all results/plots: ./run.sh

Plotting

The vi.xyz movie file contains position data of vacancies (type 0) and interstitials (type 1). This can be visualized with Ovito.

Plotting one log file: ./plot_log.py <out.log>

Plotting one xyz file: ./plot_xyz.py <vi.xyz>