RAII wrapper around vesin_neighbors for Matter-style boxes (double[9] row-major 3×3 cell, same layout as Matter::cell). More...
#include <VesinNeighbors.h>
Classes | |
| struct | Options |
Public Member Functions | |
| VesinNeighbors ()=default | |
| VesinNeighbors (const VesinNeighbors &)=delete | |
| VesinNeighbors & | operator= (const VesinNeighbors &)=delete |
| VesinNeighbors (VesinNeighbors &&other) noexcept | |
| VesinNeighbors & | operator= (VesinNeighbors &&other) noexcept |
| ~VesinNeighbors () | |
| void | compute (const double *R, std::size_t n, const double *box, const Options &opt) |
| Build / rebuild the list. | |
| std::size_t | size () const |
| std::size_t | i (std::size_t p) const |
| std::size_t | j (std::size_t p) const |
| double | distance (std::size_t p) const |
| Distance |r_ij| (requires return_distances). | |
| const double * | vector (std::size_t p) const |
| Vector r_j − r_i (+ PBC). Requires return_vectors. | |
| const int32_t * | shift (std::size_t p) const |
| const VesinNeighborList & | raw () const |
| Raw list for advanced consumers (Metatomic tensor conversion). | |
| VesinNeighborList & | raw () |
| VesinNeighborList * | release () |
| Steal ownership of the internal list (for Metatomic custom deleters). | |
Private Member Functions | |
| void | free_list () |
Private Attributes | |
| VesinNeighborList | list_ {} |
| bool | owns_ {false} |
RAII wrapper around vesin_neighbors for Matter-style boxes (double[9] row-major 3×3 cell, same layout as Matter::cell).
Pair vector convention matches vesin: r_ij = r_j - r_i + S @ H. Classical pair pots that used r_i - r_j must flip the sign.
Definition at line 27 of file VesinNeighbors.h.
|
default |
|
delete |
|
noexcept |
Definition at line 14 of file VesinNeighbors.cpp.
| eonc::VesinNeighbors::~VesinNeighbors | ( | ) |
Definition at line 32 of file VesinNeighbors.cpp.
| void eonc::VesinNeighbors::compute | ( | const double * | R, |
| std::size_t | n, | ||
| const double * | box, | ||
| const Options & | opt ) |
Build / rebuild the list.
R is length 3*n (x,y,z interleaved); box is length 9 (row-major cell vectors).
Keep the same VesinNeighbors instance across force evaluations so vesin can re-use pair/distance/vector allocations (see vesin_neighbors docs). Freeing before every compute is incorrect and expensive.
Definition at line 42 of file VesinNeighbors.cpp.
|
inlinenodiscard |
Distance |r_ij| (requires return_distances).
Definition at line 71 of file VesinNeighbors.h.
|
private |
|
inlinenodiscard |
Definition at line 67 of file VesinNeighbors.h.
|
inlinenodiscard |
Definition at line 68 of file VesinNeighbors.h.
|
delete |
|
noexcept |
Definition at line 21 of file VesinNeighbors.cpp.
|
inlinenodiscard |
Definition at line 86 of file VesinNeighbors.h.
|
inlinenodiscard |
Raw list for advanced consumers (Metatomic tensor conversion).
Definition at line 85 of file VesinNeighbors.h.
| VesinNeighborList * eonc::VesinNeighbors::release | ( | ) |
Steal ownership of the internal list (for Metatomic custom deleters).
After release, this object is empty until the next compute.
Definition at line 91 of file VesinNeighbors.cpp.
|
inlinenodiscard |
Definition at line 80 of file VesinNeighbors.h.
|
inlinenodiscard |
Definition at line 65 of file VesinNeighbors.h.
|
inlinenodiscard |
Vector r_j − r_i (+ PBC). Requires return_vectors.
Definition at line 76 of file VesinNeighbors.h.
|
private |
Definition at line 93 of file VesinNeighbors.h.
|
private |
Definition at line 94 of file VesinNeighbors.h.