#include <MetatomicDynPot.h>
Public Member Functions | |
| MetatomicDynPot (const eonc::Parameters ¶ms) | |
| Production: process-default MetatomicLoader::instance(). | |
| MetatomicDynPot (const eonc::Parameters ¶ms, IMetatomicLoader &loader) | |
| Test seam: injected loader, no process-default libmetatomic_pot load. | |
| ~MetatomicDynPot () override | |
| void | force (long nAtoms, const double *positions, const int *atomicNrs, double *forces, double *energy, double *variance, const double *box) override |
| bool | isThreadSafe () const noexcept override |
| Whether this potential's force() can be called from multiple threads on the SAME instance. | |
| bool | needsPerImageInstance () const noexcept override |
| Whether NEB should create separate Potential instances per image for true parallel force evaluation. | |
| Public Member Functions inherited from eonc::Potential | |
| Potential (PotType a_ptype) | |
| Production default: construction-scope registry, else PotRegistry::get(). | |
| Potential (PotType a_ptype, IPotRegistry ®istry) | |
| Test seam: injected registry, no process-default get() counters. | |
| Potential (PotType a_ptype, const Parameters &p) | |
| Potential (const Parameters &a_params) | |
| virtual | ~Potential () |
| void | force (std::span< const double > positions, std::span< const int > atomicNrs, std::span< double > forces, double *energy, double *variance, std::span< const double > box) |
| C++ call site: size-checked view over the raw FFI force(). | |
| virtual void | setFixedMask (long nAtoms, const double *isFixed) |
| Optional frozen-atom mask (nAtoms*3, 1.0 = fixed). | |
| std::tuple< double, AtomMatrix > | get_ef (const AtomMatrix &pos, const VectorXi &atmnrs, const Matrix3d &box) |
| PotType | getType () const |
| virtual double | finiteCutoff () const noexcept |
| Finite interaction range in position length units. | |
| virtual bool | isSurrogate () const noexcept |
| Whether this is a surrogate (GP) potential. | |
| virtual bool | requiresIsolatedMoleculeLayout () const noexcept |
| True for molecular QM / non-PBC backends (NWChem socket, ASE ORCA/NWChem, …). | |
| virtual unsigned | layoutFlags () const noexcept |
| virtual bool | isSharedInstanceThreadSafe () const noexcept |
| Conservative gate for sharing one Potential instance across threads. | |
| virtual std::shared_ptr< Potential > | clonePotential () const |
| Independent instance that does not reload from disk. | |
| virtual bool | supportsBatchEvaluation () const noexcept |
| Whether this potential supports batched evaluation of N systems in a single call. | |
| virtual bool | computesStress () const noexcept |
| True when force() leaves a Cauchy stress that cauchyStress() can read until the next force() on this instance. | |
| virtual Matrix3d | cauchyStress () const |
| Cauchy stress in eV/Angstrom^3. | |
| virtual 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) |
| Evaluate forces for N systems in a single call. | |
| virtual 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) |
Private Attributes | |
| IMetatomicLoader & | loader_ |
| EonMtaPot * | m_handle {nullptr} |
Additional Inherited Members | |
| Public Types inherited from eonc::Potential | |
| enum class | PotLayout : unsigned { InProcess = 1u << 0 , NeedsWorkingDirectory = 1u << 1 , Subprocess = 1u << 2 } |
| How the pot is executed. Combine with bitwise or. More... | |
| Public Attributes inherited from eonc::Potential | |
| std::atomic< size_t > | forceCallCounter |
| Protected Attributes inherited from eonc::Potential | |
| PotType | ptype |
Definition at line 18 of file MetatomicDynPot.h.
|
explicit |
Production: process-default MetatomicLoader::instance().
Definition at line 40 of file MetatomicDynPot.cpp.
| eonc::MetatomicDynPot::MetatomicDynPot | ( | const eonc::Parameters & | params, |
| IMetatomicLoader & | loader ) |
Test seam: injected loader, no process-default libmetatomic_pot load.
Definition at line 43 of file MetatomicDynPot.cpp.
|
override |
|
overridevirtual |
Implements eonc::Potential.
Definition at line 64 of file MetatomicDynPot.cpp.
|
inlinenodiscardoverridevirtualnoexcept |
Whether this potential's force() can be called from multiple threads on the SAME instance.
Python-based potentials return false. Potentials with internal mutex (MetatomicPotential) return true but serialize internally – use needsPerImageInstance() to check if separate instances would enable true parallelism.
Reimplemented from eonc::Potential.
Definition at line 30 of file MetatomicDynPot.h.
|
inlinenodiscardoverridevirtualnoexcept |
Whether NEB should create separate Potential instances per image for true parallel force evaluation.
When true, NEB calls makePotential() once per image instead of sharing one instance. Override in potentials that use internal mutexes (e.g. MetatomicPotential).
Reimplemented from eonc::Potential.
Definition at line 31 of file MetatomicDynPot.h.
|
private |
Definition at line 36 of file MetatomicDynPot.h.
|
private |
Definition at line 37 of file MetatomicDynPot.h.