33 void force(
long N,
const double *R,
const int *atomicNrs,
double *F,
34 double *U,
double *variance,
const double *box)
override;
36 [[nodiscard]]
bool isThreadSafe() const noexcept
override {
return false; }
42 void forceBatch(
long nSystems,
long nAtoms, const
double *const *positions,
43 const
int *const *atomicNrs,
double *const *forces,
44 double *energies,
double *variances,
45 const
double *const *boxes) override;
50 const
double *const *positions,
51 const
int *const *atomicNrs,
double *const *forces,
52 double *energies,
double *variances,
53 const
double *const *boxes, const
long *owners) override;
66 void computeSingle(
long N,
const double *R,
const int *atomicNrs,
double *F,
67 double *U,
const double *box);
68 void computeBatch(
long nSystems,
long nAtoms,
const double *
const *positions,
69 const int *
const *atomicNrs,
double *
const *forces,
70 double *energies,
const double *
const *boxes,
71 const std::int64_t *owners);
76 std::unique_ptr<RGPotEngine>
impl_;
Opaque rgpot-backed engine (nwchemc / cpmdc / metatomic / xtb).
RgpotPot(const RgpotPot &)=delete
RgpotPot(const eonc::Parameters &p)
bool engineAvailable() const
bool requiresIsolatedMoleculeLayout() const noexcept override
NWChem molecular SCF does not support PBC; CPMD may be periodic.
void computeSingle(long N, const double *R, const int *atomicNrs, double *F, double *U, const double *box)
std::unique_ptr< RGPotEngine > impl_
void forceBatchOwned(long nSystems, long nAtoms, const double *const *positions, const int *const *atomicNrs, double *const *forces, double *energies, double *variances, const double *const *boxes, const long *owners) override
System j runs on group owners[j] mod G when owners is given (an owner below zero falls back to j),...
void forceBatch(long nSystems, long nAtoms, const double *const *positions, const int *const *atomicNrs, double *const *forces, double *energies, double *variances, const double *const *boxes) override
void computeBatch(long nSystems, long nAtoms, const double *const *positions, const int *const *atomicNrs, double *const *forces, double *energies, const double *const *boxes, const std::int64_t *owners)
const std::string & backend() const noexcept
bool isThreadSafe() const noexcept override
Whether this potential's force() can be called from multiple threads on the SAME instance.
RgpotPot & operator=(const RgpotPot &)=delete
void force(long N, const double *R, const int *atomicNrs, double *F, double *U, double *variance, const double *box) override
bool supportsBatchEvaluation() const noexcept override
With cpmdc calculator groups ([RgpotPot] ranks_per_image), a batch is spread over the groups: system ...
void releaseWorkersAtExit()