Loading...
Searching...
No Matches
AtomicGPDimer Class Reference

#include <AtomicGPDimer.h>

Inheritance diagram for AtomicGPDimer:

Public Member Functions

 AtomicGPDimer (std::shared_ptr< Matter > matter, const Parameters &params, std::shared_ptr< Potential > pot)
 ~AtomicGPDimer ()=default
void compute (std::shared_ptr< Matter > matter, AtomMatrix initialDirection)
double getEigenvalue ()
AtomMatrix getEigenvector ()
Public Member Functions inherited from eonc::LowestEigenmode
 LowestEigenmode (std::shared_ptr< Potential > potPassed, const Parameters &parameters)
 ~LowestEigenmode ()=default

Static Public Attributes

static const char OPT_SCG [] = "scg"
static const char OPT_LBFGS [] = "lbfgs"
Static Public Attributes inherited from eonc::LowestEigenmode
static const char MINMODE_DIMER [] = "dimer"
static const char MINMODE_GPRDIMER [] = "gprdimer"
static const char MINMODE_LANCZOS [] = "lanczos"
static const char MINMODE_DAVIDSON [] = "davidson"

Private Attributes

std::shared_ptr< MattermatterCenter
AtomMatrix direction
AtomMatrix rotationalPlane
gpr::InputParameters p
atmd::AtomicDimer atomic_dimer
aux::ProblemSetUp problem_setup
gpr::AtomsConfiguration atoms_config
gpr::Observation init_observations
gpr::Observation init_middle_point
gpr::Coord orient_init
gpr::Coord R_init

Additional Inherited Members

Public Attributes inherited from eonc::LowestEigenmode
long totalForceCalls {0}
double statsTorque {0.0}
double statsCurvature {0.0}
double statsAngle {0.0}
long statsRotations {0}
long totalIterations {0}
Protected Attributes inherited from eonc::LowestEigenmode
std::shared_ptr< Potentialpot
const Parametersparams

Detailed Description

Definition at line 26 of file AtomicGPDimer.h.

Constructor & Destructor Documentation

◆ AtomicGPDimer()

AtomicGPDimer::AtomicGPDimer ( std::shared_ptr< Matter > matter,
const Parameters & params,
std::shared_ptr< Potential > pot )

Definition at line 43 of file AtomicGPDimer.cpp.

47 matterCenter = std::make_shared<Matter>(pot, params);
48 *matterCenter = *matter;
50 const Matrix3d cell = matter->getCell();
51 for (int i = 0; i < 9; i++) {
52 p.cell_dimensions.value[i] = cell.data()[i];
53 }
54}
Eigen::Matrix< double, 3, 3, eOnStorageOrder > Matrix3d
Definition Eigen.h:35
std::shared_ptr< Matter > matterCenter
gpr::InputParameters p
const Parameters & params
std::shared_ptr< Potential > pot
LowestEigenmode(std::shared_ptr< Potential > potPassed, const Parameters &parameters)
gpr::InputParameters eon_parameters_to_gpr(const Parameters &parameters)
Create a parameters object for gpr_dimer.

◆ ~AtomicGPDimer()

Member Function Documentation

◆ compute()

void AtomicGPDimer::compute ( std::shared_ptr< Matter > matter,
AtomMatrix initialDirection )

Definition at line 56 of file AtomicGPDimer.cpp.

57 {
59 copyAtomMatrixToCoord(matterCenter->getPositionsFree(), R_init);
60 init_middle_point.clear();
62 init_observations.clear();
63 problem_setup.activateFrozenAtoms(
64 R_init, params.gpr_dimer_options.active_radius, atoms_config);
65 AtomMatrix freeOrient(matterCenter->numberOfFreeAtoms(), 3);
66 int j = 0;
67 for (int i = 0; i < matterCenter->numberOfAtoms(); i++) {
68 if (!matterCenter->getFixed(i)) {
69 freeOrient.row(j) = initialDirectionAtomMatrix.row(i);
70 j++;
71 if (j == matterCenter->numberOfFreeAtoms()) {
72 break;
73 }
74 }
75 }
76 copyAtomMatrixToCoord(freeOrient, orient_init);
79
80 auto potential = eonc::helpers::makePotential(params);
81 pot::PotentialWrapper wrapper(
82 [&potential](long N, const double *R, const int *atomicNrs, double *F,
83 double *U, double *variance, const double *box) {
84 potential->force(N, R, atomicNrs, F, U, variance, box);
85 });
86 eonc::FPEHandler fpeh;
87 fpeh.eat_fpe();
88 atomic_dimer.execute(wrapper);
89 fpeh.restore_fpe();
90 // Forcefully set the right positions
91 matter->setPositionsFreeV(atomic_dimer.getFinalCoordOfMidPoint());
92 this->totalIterations = atomic_dimer.getIterations();
93 this->totalForceCalls = atomic_dimer.getTotalForceCalls();
94 pot->forceCallCounter = atomic_dimer.getTotalForceCalls();
95 return;
96}
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition Eigen.h:37
gpr::AtomsConfiguration atoms_config
gpr::Observation init_observations
gpr::Coord orient_init
gpr::Observation init_middle_point
gpr::Coord R_init
atmd::AtomicDimer atomic_dimer
aux::ProblemSetUp problem_setup
gpr::AtomsConfiguration eon_matter_to_atmconf(Matter *matter)
Create a configuration of atoms for gpr_dimer.
std::shared_ptr< Potential > makePotential(const Parameters &params)

◆ getEigenvalue()

Definition at line 98 of file AtomicGPDimer.cpp.

98 {
99 return atomic_dimer.getFinalCurvature();
100}

◆ getEigenvector()

Definition at line 102 of file AtomicGPDimer.cpp.

102 {
103 const gpr::Coord &orient = atomic_dimer.getFinalOrientation();
104 long nFree = matterCenter->numberOfFreeAtoms();
105 return Eigen::Map<const AtomMatrix>(orient.data(), nFree, 3);
106}

Member Data Documentation

◆ atomic_dimer

atmd::AtomicDimer eonc::AtomicGPDimer::atomic_dimer
private

Definition at line 47 of file AtomicGPDimer.h.

◆ atoms_config

gpr::AtomsConfiguration eonc::AtomicGPDimer::atoms_config
private

Definition at line 49 of file AtomicGPDimer.h.

◆ direction

Definition at line 43 of file AtomicGPDimer.h.

◆ init_middle_point

gpr::Observation eonc::AtomicGPDimer::init_middle_point
private

Definition at line 50 of file AtomicGPDimer.h.

◆ init_observations

gpr::Observation eonc::AtomicGPDimer::init_observations
private

Definition at line 50 of file AtomicGPDimer.h.

◆ matterCenter

std::shared_ptr<Matter> eonc::AtomicGPDimer::matterCenter
private

Definition at line 42 of file AtomicGPDimer.h.

◆ OPT_LBFGS

const char AtomicGPDimer::OPT_LBFGS = "lbfgs"
static

Definition at line 31 of file AtomicGPDimer.h.

◆ OPT_SCG

const char AtomicGPDimer::OPT_SCG = "scg"
static

Definition at line 30 of file AtomicGPDimer.h.

◆ orient_init

Definition at line 51 of file AtomicGPDimer.h.

◆ p

gpr::InputParameters eonc::AtomicGPDimer::p
private

Definition at line 46 of file AtomicGPDimer.h.

◆ problem_setup

aux::ProblemSetUp eonc::AtomicGPDimer::problem_setup
private

Definition at line 48 of file AtomicGPDimer.h.

◆ R_init

gpr::Coord eonc::AtomicGPDimer::R_init
private

Definition at line 51 of file AtomicGPDimer.h.

◆ rotationalPlane


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