Loading...
Searching...
No Matches
eonc::SurrogatePotential Class Referenceabstract

#include <SurrogatePotential.h>

Inheritance diagram for eonc::SurrogatePotential:

Public Member Functions

 SurrogatePotential (PotType a_ptype, const Parameters &a_params)
virtual ~SurrogatePotential ()=default
bool isSurrogate () const noexcept override
 Whether this is a surrogate (GP) potential.
std::tuple< double, AtomMatrix, double > get_ef_var (const AtomMatrix pos, const VectorXi atmnrs, const Matrix3d box)
virtual void train_optimize (const MatrixXd &a_features, const MatrixXd &a_targets)=0
Public Member Functions inherited from eonc::Potential
 Potential (PotType a_ptype)
 Potential (PotType a_ptype, const Parameters &)
 Potential (const Parameters &a_params)
virtual ~Potential ()
virtual void force (long nAtoms, const double *positions, const int *atomicNrs, double *forces, double *energy, double *variance, const double *box)=0
std::tuple< double, AtomMatrixget_ef (const AtomMatrix &pos, const VectorXi &atmnrs, const Matrix3d &box)
PotType getType () const
virtual bool requiresIsolatedMoleculeLayout () const noexcept
 True for molecular QM / non-PBC backends (NWChem socket, ASE ORCA/NWChem, …).
virtual bool isThreadSafe () const noexcept
 Whether this potential's force() can be called from multiple threads on the SAME instance.
virtual bool isSharedInstanceThreadSafe () const noexcept
 Conservative gate for sharing one Potential instance across threads.
virtual bool needsPerImageInstance () const noexcept
 Whether NEB should create separate Potential instances per image for true parallel force evaluation.
virtual bool supportsBatchEvaluation () const noexcept
 Whether this potential supports batched evaluation of 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)
 Evaluate forces for N systems in a single call.

Additional Inherited Members

Public Attributes inherited from eonc::Potential
std::atomic< size_t > forceCallCounter
Protected Attributes inherited from eonc::Potential
PotType ptype

Detailed Description

Definition at line 18 of file SurrogatePotential.h.

Constructor & Destructor Documentation

◆ SurrogatePotential()

eonc::SurrogatePotential::SurrogatePotential ( PotType a_ptype,
const Parameters & a_params )
inline

Definition at line 21 of file SurrogatePotential.h.

22 : Potential(a_ptype, a_params) {}
Potential(PotType a_ptype)
Definition Potential.h:35

◆ ~SurrogatePotential()

virtual eonc::SurrogatePotential::~SurrogatePotential ( )
virtualdefault

Member Function Documentation

◆ get_ef_var()

std::tuple< double, AtomMatrix, double > SurrogatePotential::get_ef_var ( const AtomMatrix pos,
const VectorXi atmnrs,
const Matrix3d box )

Definition at line 15 of file SurrogatePotential.cpp.

16 {
17 double energy{std::numeric_limits<double>::infinity()};
18 long nAtoms = static_cast<long>(pos.rows());
19 AtomMatrix forces{MatrixXd::Zero(nAtoms, 3)};
20 double var{0};
21 this->force(nAtoms, pos.data(), atmnrs.data(), forces.data(), &energy, &var,
22 box.data());
23 return std::make_tuple(energy, forces, var);
24};
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition Eigen.h:37
virtual void force(long nAtoms, const double *positions, const int *atomicNrs, double *forces, double *energy, double *variance, const double *box)=0

◆ isSurrogate()

bool eonc::SurrogatePotential::isSurrogate ( ) const
inlinenodiscardoverridevirtualnoexcept

Whether this is a surrogate (GP) potential.

Override in SurrogatePotential.

Reimplemented from eonc::Potential.

Definition at line 24 of file SurrogatePotential.h.

24{ return true; }

◆ train_optimize()

virtual void eonc::SurrogatePotential::train_optimize ( const MatrixXd & a_features,
const MatrixXd & a_targets )
pure virtual

Implemented in CatLearnPot.


The documentation for this class was generated from the following files: