1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package ffx.openmm.amoeba;
39
40 import ffx.openmm.Context;
41 import ffx.openmm.DoubleArray;
42 import ffx.openmm.Force;
43 import ffx.openmm.IntArray;
44
45 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_addMultipole;
46 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_create;
47 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_destroy;
48 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setAEwald;
49 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setCovalentMap;
50 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setCutoffDistance;
51 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setEwaldErrorTolerance;
52 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setExtrapolationCoefficients;
53 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setMultipoleParameters;
54 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setMutualInducedMaxIterations;
55 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setMutualInducedTargetEpsilon;
56 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setNonbondedMethod;
57 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setPmeGridDimensions;
58 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_setPolarizationType;
59 import static edu.uiowa.jopenmm.OpenMMAmoebaLibrary.OpenMM_AmoebaMultipoleForce_updateParametersInContext;
60
61
62
63
64 public class MultipoleForce extends Force {
65
66 public MultipoleForce() {
67 pointer = OpenMM_AmoebaMultipoleForce_create();
68 }
69
70
71
72
73
74
75 public void setPolarizationType(int method) {
76 OpenMM_AmoebaMultipoleForce_setPolarizationType(pointer, method);
77 }
78
79
80
81
82
83
84 public void setExtrapolationCoefficients(DoubleArray exptCoefficients) {
85 OpenMM_AmoebaMultipoleForce_setExtrapolationCoefficients(pointer, exptCoefficients.getPointer());
86 }
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 public void addMultipole(double charge, DoubleArray dipole, DoubleArray quadrupole, int axisType,
103 int zaxis, int xaxis, int yaxis, double thole, double pdamp, double polarizability) {
104 OpenMM_AmoebaMultipoleForce_addMultipole(pointer, charge, dipole.getPointer(), quadrupole.getPointer(),
105 axisType, zaxis, xaxis, yaxis, thole, pdamp, polarizability);
106 }
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 public void setMultipoleParameters(int index, double charge, DoubleArray dipoles, DoubleArray quadrupoles,
124 int axisType, int zaxis, int xaxis, int yaxis,
125 double thole, double pdamp, double polarizability) {
126 OpenMM_AmoebaMultipoleForce_setMultipoleParameters(pointer, index, charge,
127 dipoles.getPointer(), quadrupoles.getPointer(), axisType, zaxis, xaxis, yaxis, thole, pdamp, polarizability);
128 }
129
130
131
132
133
134
135 public void setNonbondedMethod(int method) {
136 OpenMM_AmoebaMultipoleForce_setNonbondedMethod(pointer, method);
137 }
138
139
140
141
142
143
144 public void setCutoffDistance(double cutoff) {
145 OpenMM_AmoebaMultipoleForce_setCutoffDistance(pointer, cutoff);
146 }
147
148
149
150
151
152
153 public void setAEwald(double aewald) {
154 OpenMM_AmoebaMultipoleForce_setAEwald(pointer, aewald);
155 }
156
157
158
159
160
161
162 public void setEwaldErrorTolerance(double ewaldTolerance) {
163 OpenMM_AmoebaMultipoleForce_setEwaldErrorTolerance(pointer, ewaldTolerance);
164 }
165
166
167
168
169
170
171 public void setPmeGridDimensions(IntArray gridDimensions) {
172 OpenMM_AmoebaMultipoleForce_setPmeGridDimensions(pointer, gridDimensions.getPointer());
173 }
174
175
176
177
178
179
180
181
182 public void setMutualInducedMaxIterations(int iterations) {
183 OpenMM_AmoebaMultipoleForce_setMutualInducedMaxIterations(pointer, iterations);
184 }
185
186
187
188
189
190
191 public void setMutualInducedTargetEpsilon(double epsilon) {
192 OpenMM_AmoebaMultipoleForce_setMutualInducedTargetEpsilon(pointer, epsilon);
193 }
194
195
196
197
198
199
200
201
202 public void setCovalentMap(int i, int covalentType, IntArray covalentMap) {
203 OpenMM_AmoebaMultipoleForce_setCovalentMap(pointer, i, covalentType, covalentMap.getPointer());
204 }
205
206
207
208
209
210
211 public void updateParametersInContext(Context context) {
212 if (context.hasContextPointer()) {
213 OpenMM_AmoebaMultipoleForce_updateParametersInContext(pointer, context.getPointer());
214 }
215 }
216
217
218
219
220 public void destroy() {
221 if (pointer != null) {
222 OpenMM_AmoebaMultipoleForce_destroy(pointer);
223 pointer = null;
224 }
225 }
226
227 }