... | ... | @@ -39,10 +39,21 @@ The outer loop (i-loop) iterates through all 32.000 atoms in the protein simulat |
|
|
|
|
|
![flowchart](uploads/2c10a18b3cda9496b9eaed9e54e001db/flowchart.png)
|
|
|
|
|
|
For each pair of atoms `i, j`, the algorithm first computes the distance between the two atoms, and if it is smaller than the cutoff distance,
|
|
|
For each pair of atoms `i, j`, the algorithm first computes the distance between the two atoms.
|
|
|
Then, the distance is compared to many different values.
|
|
|
|
|
|
In the input line `pair_style lj/charmm/coul/long X Y`, `X` is `cut_lj_innersq` and Y is `cut_ljsq` and `cut_coulsq`.
|
|
|
The alternative form with `X Y Z` parameters is not supported by the optimized function and would fall back on the LAMMPS vanilla function.
|
|
|
Then, `cut_bothsq` is defined as the minimum of `cut_coulsq` and cut_ljsq`.
|
|
|
|
|
|
|
|
|
- If it is smaller than `cut_bothsq`, then, no computation is required because there is no short-range interaction between the two atoms.
|
|
|
- `cut_bothsq` is defined as the minimum of `cut_coulsq` and cut_ljsq`
|
|
|
- If
|
|
|
|
|
|
atom_vec.h -> contains `**x` and `**f` (3D)
|
|
|
neigh_list.h -> contains `**firstneigh` (for each i, store array of neighbors j)
|
|
|
PairLJCharmmCoulLong::settings ->
|
|
|
|
|
|
LAMMPS uses 64-bit `double` precision numbers for floating point calculations and 32-bit `int` numbers for integer computations.
|
|
|
This can become somewhat of an issue with the `jlist` array, which is an array of `int`s which act as indexes of `x` and
|
... | ... | |