vganjali / Atomic-Deposition

Python script to simulate and visualize atomic deposition.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

image

A 3D atomic deposition simulation model written entirely in Python. PytOpenGL library is used for 3D visualization of individual atoms being deposited on a flat surface. This was done as a course project (EE216: Nanomaterials and Nanometer-scale Device) at UCSC and was done with a group of three PhD students:

Basic Physics: L-J potential

The Lennard-Jones potential (L-J potential) is a mathematical model to approximate the interaction between a pair of neutral atoms or molecules. $V_{LJ}=4\epsilon[(\frac{\sigma}{r})^{12}-(\frac{\sigma}{r})^{6}]=\epsilon[(\frac{r_{m}}{r})^{12}-2(\frac{r_{m}}{r})^{6}]$ where

  • $\epsilon$: Depth of the potential well
  • $\sigma$: Distance at wich $V_{LJ}=0$
  • $r_m$: Distance at wich $V_{LJ}$ is minimum ($=-\epsilon$)
  • ($r_m=2^{1/6}\sigma\approx1.122\sigma$)
  • $r^{-12}$: The repulsive term, describes Pauli repulsion at short ranges due to overlapping electrin orbitals
  • $r^{-6}$ The attractive term, describes attraction at long ranges (for example, Van de Waals force)
  • The same equation is used in many-particle environment

Algorithm Flowchart

image

Key Considerations

Bottom Layer

  • A well-arranged bottom layer is assumed to be pre-formed when the simulation starts
  • Exerts attractive/repulsive force on incoming particles according to L-J potential
  • Provides a general model for the simulation

Adaptive Time-step

  • Particle slows down when L-J potential changes sharply
  • Increases the stablity around the equilibrium point
  • $r_{k+1}=r_{k}+\Delta t \nu_{k}+{\Delta t}^2\frac{F_{r_k}}{m}$
  • $r_{k+1}=\nu_{k}+\frac{\Delta t}{2m}(F_{r_k}+F_{r_{k+1}})$
  • $\Delta t_{k+1}={1}/{[\nu_k \times exp(r_c-r_n)]}$ image
  • $r_c$ is critical distance to look for neighbors
  • $r_n$ is the distance from the closest neighbor

Timeout

  • A counter is the triggered whenever the first change in the sign of the force $F=-\frac{\partial V_{LJ}}{\partial r}$ is detected
  • After a reasonable number of time-steps, timeout happens and the particle reaches the equilibrium
  • Simplifies complexity due to large force from the bottom surface image

Velocity Damping

  • Velocity of the particle is dampled if there is a change in sign of velocity or force
  • Velocity sign change indicates collision, and damping emulates inelastic collision
  • Force sign change indicates crissing the equilibrium and damping velocity around it simplifies the motion image

Grids

  • 1/0 indicate presence/absence of old atoms
  • Submatrix dimension $(2 critical distance+1) \times (2 critical distance+1)$ image

Force Submatrix

  • At the beginning, components of F are calculated for each point within the submatrix
  • A new particle uses a look-up table (LUT) of pre-calculated force values
  • This increases the computation speed even when number of particles is large image

Real Physical Parameters

  • For Cu atoms: image

Snapshots taken while running simulation

image image image

About

Python script to simulate and visualize atomic deposition.


Languages

Language:Python 100.0%