OpenMD 3.0
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
OplsTorsionType.hpp
Go to the documentation of this file.
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/**
46 * @file OplsTorsionType.hpp
47 * @author teng lin
48 * @date 11/16/2004
49 * @version 1.0
50 */
51
52#ifndef TYPES_OPLSTORSIONTYPE_HPP
53#define TYPES_OPLSTORSIONTYPE_HPP
54
56
57namespace OpenMD {
58
59 /**
60 * @class OplsTorsionType OplsTorsionType.hpp "types/OplsTorsionType.hpp"
61 * These torsion types are defined identically with functional form given
62 * in the following paper:
63 *
64 * "Development and Testing of the OPLS All-Atom Force Field on
65 * Conformational Energetics and Properties of Organic Liquids," by
66 * William L. Jorgensen, David S. Maxwell, and Julian Tirado-Rives,
67 * J. Am. Chem. Soc.; 1996; 118(45) pp 11225 - 11236;
68 * DOI: 10.1021/ja9621760
69 *
70 * This torsion potential has the form:
71 *
72 * \f[ V_{tors} = 0.5 (v_1 (1+\cos(\phi)) + v_2 (1-\cos(2 \phi)) + v_3
73 * (1+\cos(3 \phi))) \f]
74 *
75 * Notes:
76 *
77 * 1. OpenMD converts internally to a Polynomial torsion type because
78 * all of the phase angles are zero in the OPLS paper.
79 * 2. Coefficients are assumed to be in kcal / mol, and be careful about
80 * that factor of 1/2 when importing the coefficients!
81 */
83 public:
84 OplsTorsionType(RealType v1, RealType v2, RealType v3, bool trans180) :
85 PolynomialTorsionType(), v1_(v1), v2_(v2), v3_(v3) {
86 // convert OPLS Torsion Type to Polynomial Torsion type
87 RealType c0 = v2 + 0.5 * (v1 + v3);
88 RealType c1 = 0.5 * (v1 - 3.0 * v3);
89 RealType c2 = -v2;
90 RealType c3 = 2.0 * v3;
91
92 if (!trans180) {
93 c1 = -c1;
94 c3 = -c3;
95 }
96
97 setCoefficient(0, c0);
98 setCoefficient(1, c1);
99 setCoefficient(2, c2);
100 setCoefficient(3, c3);
101 }
102
103 friend std::ostream& operator<<(std::ostream& os, OplsTorsionType& ott);
104
105 private:
106 RealType v1_;
107 RealType v2_;
108 RealType v3_;
109 };
110
111 std::ostream& operator<<(std::ostream& os, OplsTorsionType& ott) {
112 os << "This OplsTorsionType has below form:" << std::endl;
113 os << ott.v1_ << "/2*(1+cos(phi))"
114 << " + " << ott.v2_ << "/2*(1-cos(2*phi))"
115 << " + " << ott.v3_ << "/2*(1+cos(3*phi))" << std::endl;
116 return os;
117 }
118
119} // namespace OpenMD
120
121#endif // TYPES_OPLSTORSIONTYPE_HPP
These torsion types are defined identically with functional form given in the following paper:
"types/PolynomialTorsionType.hpp"
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.