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;
39
40 import com.sun.jna.ptr.DoubleByReference;
41 import com.sun.jna.ptr.IntByReference;
42
43 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_addParticle;
44 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_create;
45 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_createExceptionsFromBonds;
46 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_destroy;
47 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_getExceptionParameters;
48 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_getNumExceptions;
49 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_getParticleParameters;
50 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setCutoffDistance;
51 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setExceptionParameters;
52 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setNonbondedMethod;
53 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setPMEParameters;
54 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setParticleParameters;
55 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setSwitchingDistance;
56 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setUseDispersionCorrection;
57 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_setUseSwitchingFunction;
58 import static edu.uiowa.jopenmm.OpenMMLibrary.OpenMM_NonbondedForce_updateParametersInContext;
59
60
61
62
63 public class NonbondedForce extends Force {
64
65 public NonbondedForce() {
66 pointer = OpenMM_NonbondedForce_create();
67 }
68
69
70
71
72
73
74
75
76 public void addParticle(double charge, double sigma, double eps) {
77 OpenMM_NonbondedForce_addParticle(pointer, charge, sigma, eps);
78 }
79
80
81
82
83
84
85
86
87
88 public void setParticleParameters(int index, double charge, double sigma, double eps) {
89 OpenMM_NonbondedForce_setParticleParameters(pointer, index, charge, sigma, eps);
90 }
91
92
93
94
95
96
97
98
99
100 public void getParticleParameters(int index, DoubleByReference charge, DoubleByReference sigma, DoubleByReference eps) {
101 OpenMM_NonbondedForce_getParticleParameters(pointer, index, charge, sigma, eps);
102 }
103
104
105
106
107
108
109
110
111 public void createExceptionsFromBonds(BondArray bondArray, double coulomb14Scale, double lj14Scale) {
112 OpenMM_NonbondedForce_createExceptionsFromBonds(pointer, bondArray.getPointer(), coulomb14Scale, lj14Scale);
113 }
114
115
116
117
118
119
120
121
122
123
124
125 public void getExceptionParameters(int index, IntByReference particle1, IntByReference particle2,
126 DoubleByReference chargeProd, DoubleByReference sigma, DoubleByReference eps) {
127 OpenMM_NonbondedForce_getExceptionParameters(pointer, index, particle1, particle2, chargeProd, sigma, eps);
128 }
129
130
131
132
133
134
135
136
137
138
139
140 public void setExceptionParameters(int index, int particle1, int particle2, double chargeProd, double sigma, double eps) {
141 OpenMM_NonbondedForce_setExceptionParameters(pointer, index, particle1, particle2, chargeProd, sigma, eps);
142 }
143
144
145
146
147
148
149 public void setNonbondedMethod(int method) {
150 OpenMM_NonbondedForce_setNonbondedMethod(pointer, method);
151 }
152
153
154
155
156
157
158
159
160
161 public void setPMEParameters(double aEwald, int nx, int ny, int nz) {
162 OpenMM_NonbondedForce_setPMEParameters(pointer, aEwald, nx, ny, nz);
163 }
164
165
166
167
168
169
170 public void setCutoffDistance(double cutoffDistance) {
171 OpenMM_NonbondedForce_setCutoffDistance(pointer, cutoffDistance);
172 }
173
174
175
176
177
178
179 public void setUseSwitchingFunction(int useSwitchingFunction) {
180 OpenMM_NonbondedForce_setUseSwitchingFunction(pointer, useSwitchingFunction);
181 }
182
183
184
185
186
187
188 public void setSwitchingDistance(double switchingDistance) {
189 OpenMM_NonbondedForce_setSwitchingDistance(pointer, switchingDistance);
190 }
191
192
193
194
195
196
197 public void setUseDispersionCorrection(int useDispersionCorrection) {
198 OpenMM_NonbondedForce_setUseDispersionCorrection(pointer, useDispersionCorrection);
199 }
200
201
202
203
204
205
206 public int getNumExceptions() {
207 return OpenMM_NonbondedForce_getNumExceptions(pointer);
208 }
209
210
211
212
213
214
215 public void updateParametersInContext(Context context) {
216 if (context.hasContextPointer()) {
217 OpenMM_NonbondedForce_updateParametersInContext(pointer, context.getPointer());
218 }
219 }
220
221 public void destroy() {
222 if (pointer != null) {
223 OpenMM_NonbondedForce_destroy(pointer);
224 pointer = null;
225 }
226 }
227
228 }