eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
NEBSpringForce.h
Go to the documentation of this file.
1
/*
2
** This file is part of eOn.
3
**
4
** SPDX-License-Identifier: BSD-3-Clause
5
**
6
** Copyright (c) 2010--present, eOn Development Team
7
** All rights reserved.
8
**
9
** Repo:
10
** https://github.com/TheochemUI/eOn
11
*/
12
#pragma once
13
14
#include "
Eigen.h
"
15
#include "
Matter.h
"
16
#include "
Parameters.h
"
17
#include "
SafeMath.h
"
18
#include <variant>
19
#include <vector>
20
21
namespace
eonc::neb
{
22
24
struct
SpringResult
{
25
AtomMatrix
forceSpringPar
;
// Parallel (tangent) spring force
26
AtomMatrix
forceSpring
;
// Full spring force (needed for DNEB)
27
};
28
30
struct
UniformSpring
{
31
double
ksp
;
32
33
SpringResult
compute
(
long
i,
const
AtomMatrix
&tangent,
double
distNext,
34
double
distPrev,
const
AtomMatrix
&posDiffNext,
35
const
AtomMatrix
&posDiffPrev,
36
const
std::shared_ptr<Matter> &image)
const
;
37
};
38
40
struct
WeightedSpring
{
41
std::vector<double>
springConstants
;
42
43
SpringResult
compute
(
long
i,
const
AtomMatrix
&tangent,
double
distNext,
44
double
distPrev)
const
;
45
};
46
48
struct
OnsagerMachlupSpring
{
49
double
base_k
;
50
std::vector<AtomMatrix>
L_vecs
;
51
52
SpringResult
compute
(
long
i,
const
AtomMatrix
&tangent,
53
const
AtomMatrix
&posNext,
const
AtomMatrix
&posPrev,
54
const
AtomMatrix
&pos,
55
const
std::shared_ptr<Matter> &image)
const
;
56
};
57
58
using
SpringStrategy
=
59
std::variant<UniformSpring, WeightedSpring, OnsagerMachlupSpring>;
60
63
SpringStrategy
64
buildSpringStrategy
(
const
Parameters
¶ms,
65
const
std::vector<std::shared_ptr<Matter>> &path,
66
long
numImages,
int
atoms,
double
maxEnergy,
double
E_ref);
67
68
}
// namespace eonc::neb
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
Matter.h
Parameters.h
SafeMath.h
eonc::Parameters
Definition
Parameters.h:28
eonc::neb
Definition
NEBForceProjection.cpp:18
eonc::neb::buildSpringStrategy
SpringStrategy buildSpringStrategy(const Parameters ¶ms, const std::vector< std::shared_ptr< Matter > > &path, long numImages, int atoms, double maxEnergy, double E_ref)
Build the appropriate spring strategy from parameters and current path state.
Definition
NEBSpringForce.cpp:65
eonc::neb::SpringStrategy
std::variant< UniformSpring, WeightedSpring, OnsagerMachlupSpring > SpringStrategy
Definition
NEBSpringForce.h:58
eonc::neb::OnsagerMachlupSpring
Onsager-Machlup action-based springs (Mandelli & Parrinello 2021).
Definition
NEBSpringForce.h:48
eonc::neb::OnsagerMachlupSpring::compute
SpringResult compute(long i, const AtomMatrix &tangent, const AtomMatrix &posNext, const AtomMatrix &posPrev, const AtomMatrix &pos, const std::shared_ptr< Matter > &image) const
Definition
NEBSpringForce.cpp:46
eonc::neb::OnsagerMachlupSpring::L_vecs
std::vector< AtomMatrix > L_vecs
Definition
NEBSpringForce.h:50
eonc::neb::OnsagerMachlupSpring::base_k
double base_k
Definition
NEBSpringForce.h:49
eonc::neb::SpringResult
Result of spring force computation for a single image.
Definition
NEBSpringForce.h:24
eonc::neb::SpringResult::forceSpringPar
AtomMatrix forceSpringPar
Definition
NEBSpringForce.h:25
eonc::neb::SpringResult::forceSpring
AtomMatrix forceSpring
Definition
NEBSpringForce.h:26
eonc::neb::UniformSpring
Uniform spring constant for all images.
Definition
NEBSpringForce.h:30
eonc::neb::UniformSpring::compute
SpringResult compute(long i, const AtomMatrix &tangent, double distNext, double distPrev, const AtomMatrix &posDiffNext, const AtomMatrix &posDiffPrev, const std::shared_ptr< Matter > &image) const
Definition
NEBSpringForce.cpp:19
eonc::neb::UniformSpring::ksp
double ksp
Definition
NEBSpringForce.h:31
eonc::neb::WeightedSpring
Energy-weighted spring constants (variable per segment).
Definition
NEBSpringForce.h:40
eonc::neb::WeightedSpring::springConstants
std::vector< double > springConstants
Definition
NEBSpringForce.h:41
eonc::neb::WeightedSpring::compute
SpringResult compute(long i, const AtomMatrix &tangent, double distNext, double distPrev) const
Definition
NEBSpringForce.cpp:31
include
eon
NEBSpringForce.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf