many_body
Triplet force classes apply a force and virial on every particle in the
simulation state commensurate with the potential energy:
U m a n y − b o d y = 1 2 ∑ i = 0 N p a r t i c l e s − 1 ∑ j ≠ i ∑ j ≠ k U ( r ⃗ i j , r ⃗ i k ) U_\mathrm{many-body} = \frac{1}{2} \sum_{i=0}^\mathrm{N_particles-1}
\sum_{j \ne i}
\sum_{j \ne k} U(\vec{r}_{ij}, \vec{r}_{ik}) U many − body = 2 1 i = 0 ∑ N p articles − 1 j = i ∑ j = k ∑ U ( r ij , r ik )
where r ⃗ i j = m i n i m u m _ i m a g e ( r ⃗ j − r ⃗ i ) \vec{r}_{ij} = \mathrm{minimum\_image}(\vec{r}_j - \vec{r}_i) r ij = minimum_image ( r j − r i ) .
Triplet
applies a short range cutoff for performance and assumes that both
U ( r ⃗ i j , r ⃗ i k ) U(\vec{r}_{ij}, \vec{r}_{ik}) U ( r ij , r ik ) and its derivatives are 0 when
r i j > r c u t r_{ij} > r_\mathrm{cut} r ij > r cut or r i k > r c u t r_{ik} > r_\mathrm{cut} r ik > r cut .
Specifically, the force F ⃗ \vec{F} F applied to each particle i i i is:
F i ⃗ = { − ∇ V ( r ⃗ i j , r ⃗ i k ) r i j < r c u t ∧ r i k < r c u t 0 o t h e r w i s e \vec{F_i} =
\begin{cases}
-\nabla V(\vec r_{ij}, \vec r_{ik})
& r_{ij} < r_{\mathrm{cut}}
\land r_{ik} < r_{\mathrm{cut}} \\
0 & \mathrm{otherwise}
\end{cases}
F i = { − ∇ V ( r ij , r ik ) 0 r ij < r cut ∧ r ik < r cut otherwise
The per particle energy terms are:
U i = 1 2 ∑ j ≠ i ∑ j ≠ k U ( r ⃗ i j , r ⃗ i k ) [ r i j < r c u t ∧ r i k < r c u t ] U_i = \frac{1}{2} \sum_{j \ne i}
\sum_{j \ne k} U(\vec{r}_{ij}, \vec{r}_{ik})
[r_{ij} < r_{\mathrm{cut}} \land r_{ik} < r_{\mathrm{cut}}] U i = 2 1 j = i ∑ j = k ∑ U ( r ij , r ik ) [ r ij < r cut ∧ r ik < r cut ]
Classes