EAM (Embedded Atom Method) potential with cell list neighbor finding. More...
#include <EAM.h>
Classes | |
| struct | element_parameters |
Public Member Functions | |
| EAM (const eonc::Parameters ¶ms) | |
| ~EAM () override=default | |
| void | cleanMemory () |
| void | force (long N, const double *R, const int *atomicNrs, double *F, double *U, double *variance, const double *fullbox) override |
| bool | isSharedInstanceThreadSafe () const noexcept override |
| Cell lists live on the instance; two threads cannot share one EAM. | |
| 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 bool | isThreadSafe () const noexcept |
| Whether this potential's force() can be called from multiple threads on the SAME instance. | |
| virtual unsigned | layoutFlags () const noexcept |
| virtual bool | needsPerImageInstance () const noexcept |
| Whether NEB should create separate Potential instances per image for true parallel force evaluation. | |
| 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 Member Functions | |
| void | calc_force (long N, double *R, const int *atomicNrs, double *F, double *U, const double *box) |
| void | new_celllist (long N, const double *box, long *num_axis, long *cell_length, long *celllist_new, long num_cells, double *Rnew) |
| void | cell_to_neighbor (long N, long num_of_cells, long *num_axis, long *cell_length, long *celllist_new, long *neigh_list) |
| int | update_cell_list (long N, long num_cells, long *num_axis, long *cell_length, long *celllist_old, double *Rnew) |
| element_parameters | get_element_parameters (int atomic_number) |
Static Private Member Functions | |
| static double | embedding_function (const double *func_coeff, double rho) |
| static double | embedding_force (const double *func_coeff, double rho) |
Private Attributes | |
| std::vector< long > | celllist_old_ |
| std::vector< long > | celllist_new_ |
| std::vector< long > | neigh_list_ |
| bool | initialized_ {false} |
| std::array< double, 3 > | rc_ |
Static Private Attributes | |
| static const element_parameters | el_params [] |
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 |
EAM (Embedded Atom Method) potential with cell list neighbor finding.
|
inlineexplicit |
|
overridedefault |
|
private |
Definition at line 130 of file EAM.cpp.
|
private |
Definition at line 255 of file EAM.cpp.
| void EAM::cleanMemory | ( | ) |
|
staticnodiscardprivate |
|
staticnodiscardprivate |
|
overridevirtual |
Implements eonc::Potential.
Definition at line 29 of file EAM.cpp.
|
nodiscardprivate |
|
inlinenodiscardoverridevirtualnoexcept |
Cell lists live on the instance; two threads cannot share one EAM.
Reimplemented from eonc::Potential.
Definition at line 39 of file EAM.h.
|
private |
Definition at line 233 of file EAM.cpp.
|
private |
Definition at line 331 of file EAM.cpp.
|
staticprivate |
Definition at line 15 of file EAM.h.