Loading...
Searching...
No Matches
NEBForceProjection.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
17namespace eonc::neb {
18
21AtomMatrix computeTangent(const AtomMatrix &posDiffNext,
22 const AtomMatrix &posDiffPrev, double energy,
23 double energyPrev, double energyNext,
24 bool use_old_tangent);
25
27AtomMatrix forcePerp(const AtomMatrix &force, const AtomMatrix &tangent);
28
32 const AtomMatrix &tangent,
33 const AtomMatrix &forceDNEB);
34
36AtomMatrix computeDNEB(const AtomMatrix &forceSpring, const AtomMatrix &tangent,
37 const AtomMatrix &forcePerp);
38
40void zeroTranslation(AtomMatrix &projectedForce, int nFreeAtoms, int nAtoms);
41
42} // namespace eonc::neb
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition Eigen.h:37
void zeroTranslation(AtomMatrix &projectedForce, int nFreeAtoms, int nAtoms)
Zero net translational force for fully free systems.
AtomMatrix climbingImageForce(const AtomMatrix &force, const AtomMatrix &tangent, const AtomMatrix &forceDNEB)
Compute the climbing image projected force.
AtomMatrix computeTangent(const AtomMatrix &posDiffNext, const AtomMatrix &posDiffPrev, double energy, double energyPrev, double energyNext, bool use_old_tangent)
Compute the tangent vector at image i using the improved tangent scheme.
AtomMatrix forcePerp(const AtomMatrix &force, const AtomMatrix &tangent)
Compute the perpendicular component of force relative to the tangent.
AtomMatrix computeDNEB(const AtomMatrix &forceSpring, const AtomMatrix &tangent, const AtomMatrix &fPerp)
Compute the doubly-nudged elastic band perpendicular spring force.