more fixes
[lectures/latex.git] / posic / thesis / d_tersoff.tex
index d1f0488..8492963 100644 (file)
@@ -1,9 +1,9 @@
-\chapter{Derivative of the three body Tersoff potential}
+\chapter{Force evaluation for the three body Tersoff potential}
 \label{app:d_tersoff}
 
   \section{Form of the Tersoff potential and its derivative}
 
-The Tersoff potential is of the form
+The Tersoff potential \cite{tersoff_m} is of the form
 \begin{eqnarray}
 E & = & \sum_i E_i = \frac{1}{2} \sum_{i \ne j} V_{ij} \textrm{ ,} \\
 V_{ij} & = & f_C(r_{ij}) [ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) ] \textrm{ .}
@@ -22,7 +22,7 @@ with
 \zeta_{ij} & = & \sum_{k \ne i,j} f_C (r_{ik}) \omega_{ik} g(\theta_{ijk}) \textrm{ ,}\\
 g(\theta_{ijk}) & = & 1 + c_i^2/d_i^2 - c_i^2/[d_i^2 + (h_i - \cos \theta_{ijk})^2] \textrm{ .}
 \end{eqnarray}
-The cutoff function $f_C$ is taken to be
+The cut-off function $f_C$ is taken to be
 \begin{equation}
 f_C(r_{ij}) = \left\{
   \begin{array}{ll}
@@ -38,9 +38,9 @@ For a three body potential, if $V_{ij}$ is not equal to $V_{ji}$, the derivative
 \begin{equation}
 \nabla_{{\bf r}_i} E = \frac{1}{2} \big[ \sum_j ( \nabla_{{\bf r}_i} V_{ij} + \nabla_{{\bf r}_i} V_{ji} ) + \sum_k \sum_j \nabla_{{\bf r}_i} V_{jk} \big] \textrm{ .}
 \end{equation}
-In the following all the necessary derivatives to calculate $\nabla_{{\bf r}_i} E$ are done.
+In the following all the necessary derivatives to calculate $\nabla_{{\bf r}_i} E$ are written down.
 
-  \section{Derivative of $V_{ij}$ with respect to ${\bf r}_i$}
+  \section[Derivative of $V_{ij}$ with respect to ${r}_i$]{\boldmath Derivative of $V_{ij}$ with respect to ${\bf r}_i$}
 
 \begin{eqnarray}
 \nabla_{{\bf r}_i} V_{ij} & = & \nabla_{{\bf r}_i} f_C(r_{ij}) \big[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \big] + \nonumber \\
@@ -67,18 +67,18 @@ In the following all the necessary derivatives to calculate $\nabla_{{\bf r}_i}
  & = & \Big[ \frac{\cos\theta_{ijk}}{r_{ij}^2} - \frac{1}{r_{ij} r_{ik}} \Big] {\bf r}_{ij} + \Big[ \frac{\cos\theta_{ijk}}{r_{ik}^2} - \frac{1}{r_{ij} r_{ik}} \Big] {\bf r}_{ik}
 \end{eqnarray}
 
-  \section{Derivative of $V_{ji}$ with respect to ${\bf r}_i$}
+  \section[Derivative of $V_{ji}$ with respect to ${r}_i$]{\boldmath Derivative of $V_{ji}$ with respect to ${\bf r}_i$}
 
 \begin{eqnarray}
 \nabla_{{\bf r}_i} V_{ji} & = & \nabla_{{\bf r}_i} f_C(r_{ji}) \big[ f_R(r_{ji}) + b_{ji} f_A(r_{ji}) \big] + \nonumber \\
  & & + f_C(r_{ji}) \big[ \nabla_{{\bf r}_i} f_R(r_{ji}) + b_{ji} \nabla_{{\bf r}_i} f_A(r_{ji}) + f_A(r_{ji}) \nabla_{{\bf r}_i} b_{ji} \big]
 \end{eqnarray}
 \begin{eqnarray}
-\nabla_{{\bf r}_i} f_R(r_{ji}) & = & - A_{ji} \lambda_{ji} \frac{{\bf r}_{ji}}{r_{ji}} \exp(-\lambda_{ji} r_{ji}) = \nabla_{{\bf r}_i} f_R(r_{ij} \\
+\nabla_{{\bf r}_i} f_R(r_{ji}) & = & - A_{ji} \lambda_{ji} \frac{{\bf r}_{ji}}{r_{ji}} \exp(-\lambda_{ji} r_{ji}) = \nabla_{{\bf r}_i} f_R(r_{ij}) \\
 \nabla_{{\bf r}_i} f_A(r_{ji}) & = & + B_{ji} \mu_{ji} \frac{{\bf r}_{ji}}{r_{ji}} \exp(-\mu_{ji} r_{ji}) = \nabla_{{\bf r}_i} f_A(r_{ij})
 \end{eqnarray}
 \begin{equation}
-\nabla_{{\bf r}_i} f_C(r_{ij}) = f_C(r_{ij}) = \left\{
+\nabla_{{\bf r}_i} f_C(r_{ij}) = \nabla_{{\bf r}_i} f_C(r_{ij}) = \left\{
   \begin{array}{ll}
     - \frac{1}{2} \sin \Big( \frac{\pi(r_{ji}-R_{ji})}{S_{ji}-R_{ji}} \Big) \frac{\pi}{S_{ji}-R_{ji}} \frac{{\bf r}_{ji}}{r_{ji}}, & R_{ji} < r_{ji} < S_{ji} \\
     0, & \textrm{else.}
@@ -95,14 +95,181 @@ In the following all the necessary derivatives to calculate $\nabla_{{\bf r}_i}
  & = & \frac{1}{r_{ji} r_{jk}} {\bf r}_{jk} - \frac{\cos\theta_{jik}}{r_{ji}^2} {\bf r}_{ji}
 \end{eqnarray}
 
-  \section{Derivative of $V_{jk}$ with respect to ${\bf r}_i$}
+  \section[Derivative of $V_{jk}$ with respect to ${r}_i$]{\boldmath Derivative of $V_{jk}$ with respect to ${\bf r}_i$}
 
 \begin{eqnarray}
 \nabla_{{\bf r}_i} V_{jk} & = & f_C(r_{jk}) f_A(r_{jk}) \nabla_{{\bf r}_i} b_{jk} \\
-\nabla_{{\bf r}_i} b_{jk} & = & - \frac{\chi_{ji}}{2} (1+\beta^{n_j} \zeta_{jk}^{n_j})^{-\frac{1}{2n_j}-1} \beta^{n_j} \zeta_{jk}^{n_j-1} \nabla_{{\bf r}_i} \zeta_{jk} \\
-\nabla_{{\bf r}_i} \zeta_{jk} & = & \sum_{l \neq j,k} \big( g(\theta_{jkl}) \nabla_{{\bf r}_i} f_C(r_{jl}) + f_C(r_{jl}) \nabla_{{\bf r}_i} g(\theta_{jkp}) \big) \nonumber \\
- & = & f_C(r_{ji}) \nabla_{{\bf r}_i} g(\theta_{jki}) + g(\theta_jki) \nabla_{{\bf r}_i} f_C(r_{ji}) \\
+\nabla_{{\bf r}_i} b_{jk} & = & - \frac{\chi_{jk}}{2} (1+\beta^{n_j} \zeta_{jk}^{n_j})^{-\frac{1}{2n_j}-1} \beta^{n_j} \zeta_{jk}^{n_j-1} \nabla_{{\bf r}_i} \zeta_{jk} \\
+\nabla_{{\bf r}_i} \zeta_{jk} & = & \sum_{l \neq j,k} \big( g(\theta_{jkl}) \nabla_{{\bf r}_i} f_C(r_{jl}) + f_C(r_{jl}) \nabla_{{\bf r}_i} g(\theta_{jkl}) \big) \nonumber \\
+ & = & f_C(r_{ji}) \nabla_{{\bf r}_i} g(\theta_{jki}) + g(\theta_{jki}) \nabla_{{\bf r}_i} f_C(r_{ji}) \\
 \nabla_{{\bf r}_i} g(\theta_{jki}) & = & - \frac{2(h_j-\cos\theta_{jki})c_j^2}{\big[d_j^2 + (h_j - \cos\theta_{jki})^2\big]^2} \nabla_{{\bf r}_i} (\cos\theta_{jki}) \\
 \nabla_{{\bf r}_i} \cos \theta_{jki} & = & \nabla_{{\bf r}_i} \Big( \frac{{\bf r}_{jk} {\bf r}_{ji}}{r_{jk} r_{ji}} \Big) \nonumber \\
  & = & \frac{1}{r_{jk} r_{ji}} {\bf r}_{jk} - \frac{\cos\theta_{jki}}{r_{ji}^2} {\bf r}_{ji}
 \end{eqnarray}
+
+  \section{Implementation issues}
+
+As seen in the last sections, the derivatives of $V_{ij}$, $V_{ji}$ and $V_{jk}$
+with respect to ${\bf r}_i$ are necessary to compute the forces for atom $i$.
+According to this, for every triple $(ijk)$ the derivatives of the three
+potential contributions, denoted by $V_{ijk}$, $V_{jik}$ and $V_{jki}$
+have to be computed.
+In simulation, however, it is not practical to evaluate all three potential
+derivatives for each $(ijk)$ triple.
+The $V_{jik}$ and $V_{jki}$ potential and its derivatives will be calculated
+in subsequent loops anyways.
+To avoid multiple computation of the same potential derivatives,
+the force contributions for atom $j$ and $k$ due to the $V_{ijk}$ contribution
+have to be considered by calculating the derivatives of $V_{ijk}$
+with respect to ${\bf r}_j$ and ${\bf r}_k$
+inside the loop of the $(ijk)$ triple
+in addition to the derivative with respect to ${\bf r}_i$.
+This poses a more convenient method to obtain the forces
+keeping in mind that all the necessary force contributions for atom $i$
+are calculated and added in subsequent loops.
+
+\subsection[Derivative of $V_{ij}$ with respect to ${r}_j$]{\boldmath Derivative of $V_{ij}$ with respect to ${\bf r}_j$}
+
+\begin{eqnarray}
+ \nabla_{{\bf r}_j} V_{ij} & = &
+ \nabla_{{\bf r}_j} f_C(r_{ij}) \big[ f_R(r_{ij}) +
+ b_{ij} f_A(r_{ij}) \big] + \nonumber \\
+ & & + f_C(r_{ij}) \big[ \nabla_{{\bf r}_j} f_R(r_{ij}) +
+ b_{ij} \nabla_{{\bf r}_j} f_A(r_{ij}) +
+ f_A(r_{ij}) \nabla_{{\bf r}_j} b_{ij} \big]
+\end{eqnarray}
+Using the equality $\nabla_{{\bf r}_i} r_{ij}=-\nabla_{{\bf r}_j} r_{ij}$
+the following relations are valid:
+\begin{eqnarray}
+ \nabla_{{\bf r}_j} f_R(r_{ij}) &=& - \nabla_{{\bf r}_i} f_R(r_{ij}) \\
+ \nabla_{{\bf r}_j} f_A(r_{ij}) &=& - \nabla_{{\bf r}_i} f_A(r_{ij}) \\
+ \nabla_{{\bf r}_j} f_C(r_{ij}) &=& - \nabla_{{\bf r}_i} f_C(r_{ij})
+\end{eqnarray}
+The pair contributions are, thus, easily obtained.
+The contribution of the bond order term is given by:
+\begin{eqnarray}
+ \nabla_{{\bf r}_j}\cos\theta_{ijk} &=&
+ \nabla_{{\bf r}_j}\Big(\frac{{\bf r}_{ij}{\bf }r_{ik}}{r_{ij}r_{ik}}\Big)
+ \nonumber \\
+ &=& \frac{1}{r_{ij}r_{ik}}{\bf r}_{ik} -
+     \frac{\cos\theta_{ijk}}{r_{ij}^2}{\bf r}_{ij}
+\end{eqnarray}
+
+\subsection[Derivative of $V_{ij}$ with respect to ${r}_k$]{\boldmath Derivative of $V_{ij}$ with respect to ${\bf r}_k$}
+
+The derivative of $V_{ij}$ with respect to ${\bf r}_k$ just consists of the
+single term
+\begin{eqnarray}
+ \nabla_{{\bf r}_k} V_{ij} & = &
+ f_C(r_{ij})f_A(r_{ij})\nabla_{{\bf r}_{k}}b_{ij}
+\end{eqnarray}
+since the derivatives of the functions only depending on atom $i$ and $j$
+vanish.
+\begin{eqnarray}
+ \nabla_{{\bf r}_k} f_R(r_{ij}) &=& 0 \\
+ \nabla_{{\bf r}_k} f_A(r_{ij}) &=& 0 \\
+ \nabla_{{\bf r}_k} f_C(r_{ij}) &=& 0
+\end{eqnarray}
+Concerning $b_{ij}$, in addition to the angular term, the derivative of the cut-off function has to be considered.
+\begin{eqnarray}
+ \nabla_{{\bf r}_k}\zeta_{ij} &=&
+ g(\theta_{ijk})\nabla_{{\bf r}_k}f_C(r_{ik}) +
+ f_C(r_{ik})\nabla_{{\bf r}_k}g(\theta_{ijk}) \\
+ \nabla_{{\bf r}_k}f_C(r_{ik}) &=& - \nabla_{{\bf r}_i}f_C(r_{ik}) \\
+ \nabla_{{\bf r}_k}\cos\theta_{ijk} &=&
+ \nabla_{{\bf r}_k}\Big(\frac{{\bf r}_{ij}{\bf r}_{ik}}{r_{ij}r_{ik}}\Big)
+ \nonumber \\
+ &=&\frac{1}{r_{ij}r_{ik}}{\bf r}_{ij} -
+ \frac{\cos\theta_{ijk}}{r_{ik}^2}{\bf r}_{ik}
+\end{eqnarray}
+
+  \subsection{Code realization}
+
+The implementation of the force evaluation shown in the following is applied to the potential designed by Erhard and Albe \cite{albe_sic_pot}.
+There are slight differences compared to the original potential by Tersoff:
+\begin{itemize}
+ \item Difference in sign of the attractive part.
+ \item $c$, $d$ and $h$ values depend on atom $k$ in addition to atom $i$.
+ \item Difference in sign of the $\cos\theta_{ijk}$ term.
+ \item There are no parameters $\beta$ and $\chi$.
+ \item The exponent of the $b$ term is constantly $-\frac{1}{2}$.
+\end{itemize}
+These differences actually slightly ease code realization.
+The respective flow chart is displayed in Fig.~\ref{fig:flowchart}.
+
+\begin{figure}
+\renewcommand\labelitemi{}
+\renewcommand\labelitemii{}
+\renewcommand\labelitemiii{}
+{\small
+\fbox{\begin{minipage}{\textwidth}
+LOOP i \{
+\begin{itemize}
+ \item // nop (only used in orig. Tersoff)
+ \item LOOP j \{
+       \begin{itemize}
+        \item // nop (only used in orig. Tersoff)
+       \end{itemize}
+ \item \}
+ \item LOOP j \{
+       \begin{itemize}
+        \item $\zeta_{ij}=0$
+        \item set $S_{ij}$ (cut-off)
+        \item calculate: $r_{ij}$, $r_{ij}^2$
+        \item IF $r_{ij} > S_{ij}$ THEN CONTINUE
+       \item
+       \item LOOP k \{
+             \begin{itemize}
+               \item set $ik$-depending values
+               \item calculate: $r_{ik}$, $r_{ik}^2$
+              \item IF $r_{ik} > S_{ik}$ THEN CONTINUE
+              \item calculate: $\theta_{ijk}$, $\cos(\theta_{ijk})$,
+                               $dg(\theta_{ijk})$, $g(\theta)$,
+                               $f_C(r_{ik})$, $df_C(r_{ik})$
+              \item $\zeta_{ij}=\zeta_{ij}+f_C(r_{ik})g(\theta)$
+             \end{itemize}
+        \item \}
+       \item
+       \item calculate: $f_C(r_{ij})$, $df_C(r_{ij})$, $f_A(r_{ij})$,
+                        $df_A(r_{ij})$, $f_R(r_{ij})$, $df_R(r_{ij})$,
+                        $b_{ij}$, $db_{ij}$
+       \item calculate:
+$
+F=-\frac{1}{2}\big(
+\nabla_{{\bf r}_i} f_C(r_{ij}) \big[ f_R(r_{ij}) - b_{ij} f_A(r_{ij}) \big] +
+f_C(r_{ij}) \big[ \nabla_{{\bf r}_i} f_R(r_{ij}) -
+                  b_{ij} \nabla_{{\bf r}_i} f_A(r_{ij}) \big]\big)
+$
+       \item $F_{Atom\, i} = F_{Atom\, i} + F$
+       \item $F_{Atom\, j} = F_{Atom\, j} - F$
+       \item $E=E+\frac{1}{2}f_C(r_{ij})[f_R(r_{ij})-b_{ij}f_A(r_{ij})]$
+       \item $d\zeta_{ij}=\frac{1}{2}f_A(r_{ij})f_C(r_{ij})db_{ij}$
+       \item
+       \item LOOP k \{
+             \begin{itemize}
+               \item calculate: $\nabla_{{\bf r}_i}\cos\theta_{ijk}$,
+                               $\nabla_{{\bf r}_j}\cos\theta_{ijk}$,
+                               $\nabla_{{\bf r}_k}\cos\theta_{ijk}$
+               \item $
+F_{Atom\, i}+= d\zeta_{ij}\big(
+g(\theta_{ijk})\nabla_{{\bf r}_i}f_C(r_{ik}) +
+f_C(r_{ik})dg(\theta_{ijk})\nabla_{{\bf r}_i}\cos\theta_{ijk}\big)$
+               \item $
+F_{Atom\, j}+= d\zeta_{ij}
+f_C(r_{ik})dg(\theta_{ijk})\nabla_{{\bf r}_j}\cos\theta_{ijk}$
+               \item $
+F_{Atom\, k}+= d\zeta_{ij}\big(
+g(\theta_{ijk})\nabla_{{\bf r}_k}f_C(r_{ik}) +
+f_C(r_{ik})dg(\theta_{ijk})\nabla_{{\bf r}_k}\cos\theta_{ijk}\big)$
+             \end{itemize}
+        \item \}
+       \end{itemize}
+ \item \}
+\end{itemize}
+\}
+\end{minipage}}
+}
+\caption{Flow chart of the force evaluation for Tersoff-like bond order potentials using pseudocode.}
+\label{fig:flowchart}
+\end{figure}
+