OpenMD 3.0
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
ShiftedMieBondType.hpp
1/*
2 * Copyright (c) 2004-present, The University of Notre Dame. All rights
3 * reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 * SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your
32 * research, please cite the appropriate papers when you publish your
33 * work. Good starting points are:
34 *
35 * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).
36 * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).
37 * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).
38 * [4] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
39 * [5] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).
40 * [6] Lamichhane, Gezelter & Newman, J. Chem. Phys. 141, 134109 (2014).
41 * [7] Lamichhane, Newman & Gezelter, J. Chem. Phys. 141, 134110 (2014).
42 * [8] Bhattarai, Newman & Gezelter, Phys. Rev. B 99, 094106 (2019).
43 */
44
45#ifndef TYPES_SHIFTEDMIEBONDTYPE_HPP
46#define TYPES_SHIFTEDMIEBONDTYPE_HPP
47
48#include "types/BondType.hpp"
49
50namespace OpenMD {
51
52 /**
53 * @class ShiftedMieBondType
54 *
55 * @brief ShiftedMieBondType is used to correct 1-3 bend interactions in
56 * the SDK force field.
57 *
58 * The functional form is given by:
59 \f[
60 V(r) = V_{Mie}(n,m,sigma,epsilon,r_{ij}) - V_{Mie}(n,m,sigma,epsilon,rs) for
61 r_{ij} < r_{s} \f]
62 * where
63 \f[
64 V_{Mie}(n,m,\sigma,\epsilon,r) = \left(\frac{n}{n-m}\right)
65 \left(\frac{n}{m}\right)^{m/(n-m)} \epsilon \left[\left( \frac{\sigma}{r}
66 \right)^{n} - \left( \frac{\sigma}{r} \right)^{m}\right] \f]
67 * and
68 \f[
69 r_{s} = e^{\frac{m \log (\sigma )+\log (m)-n \log (\sigma )-\log (n)}{m-n}}
70 \f]
71 */
73 public:
74 ShiftedMieBondType(RealType mySigma, RealType myEpsilon, int myNrep,
75 int myMatt) :
76 BondType(0.0) {
77 sigma = mySigma;
78 epsilon = myEpsilon;
79 n = myNrep;
80 m = myMatt;
81
82 rS_ = exp(log(pow(sigma, m - n) * RealType(m) / n));
83
84 nmScale_ = n * pow(RealType(n) / m, RealType(m) / (n - m)) / (n - m);
85
86 RealType rss = rS_ / sigma;
87 RealType rsi = 1.0 / rss;
88 RealType rsn = pow(rsi, n);
89 RealType rsm = pow(rsi, m);
90
91 potS_ = nmScale_ * epsilon * (rsn - rsm);
92
93 setEquilibriumBondLength(rS_);
94 }
95
96 virtual void calcForce(RealType r, RealType& V, RealType& dVdr) {
97 RealType ros, ri, rin, rim, rin1, rim1;
98
99 ros = r / sigma;
100 ri = 1.0 / ros;
101 rin = pow(ri, n);
102 rim = pow(ri, m);
103 rin1 = rin * ri;
104 rim1 = rim * ri;
105
106 V = nmScale_ * epsilon * (rin - rim) - potS_;
107 dVdr = nmScale_ * epsilon * (-n * rin1 + m * rim1) / sigma;
108 }
109
110 RealType getSigma() { return sigma; }
111
112 RealType getEpsilon() { return epsilon; }
113
114 int getNrep() { return n; }
115 int getMatt() { return m; }
116
117 private:
118 RealType sigma;
119 RealType epsilon;
120 int n;
121 int m;
122 RealType nmScale_;
123 RealType rS_;
124 RealType potS_;
125 };
126} // namespace OpenMD
127
128#endif
BondType class is responsible for calculating the force and energy of the bond.
Definition BondType.hpp:64
ShiftedMieBondType is used to correct 1-3 bend interactions in the SDK force field.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.