many_body

Triplet force classes apply a force and virial on every particle in the simulation state commensurate with the potential energy:

Umanybody=12i=0Nparticles1jijkU(rij,rik)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})

where rij=minimum_image(rjri)\vec{r}_{ij} = \mathrm{minimum\_image}(\vec{r}_j - \vec{r}_i). Triplet applies a short range cutoff for performance and assumes that both U(rij,rik)U(\vec{r}_{ij}, \vec{r}_{ik}) and its derivatives are 0 when rij>rcutr_{ij} > r_\mathrm{cut} or rik>rcutr_{ik} > r_\mathrm{cut}.

Specifically, the force F\vec{F} applied to each particle ii is:

Fi={V(rij,rik)rij<rcutrik<rcut0otherwise\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}

The per particle energy terms are:

Ui=12jijkU(rij,rik)[rij<rcutrik<rcut]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}}]

Classes