155 {
156 double energyDiff;
157 double forceDiff;
158
159 printf("\n---Beginning tests of potentials---\n");
160 printf("Checks the potential energy and the max force.\n");
161 printf(
"Reported as OK if within a tolerance of: %f\n\n",
tolerance);
162
165 printf("WARNING: LJ energy difference: %f\n", energyDiff);
166 } else {
169 printf("WARNING: LJ force difference: %f\n", forceDiff);
170 } else {
171 printf("OK: LJ\n");
172 }
173 }
174
177 printf("WARNING: EMT energy difference: %f\n", energyDiff);
178 } else {
181 printf("WARNING: EMT force difference: %f\n", forceDiff);
182 } else {
183 printf("OK: EMT\n");
184 }
185 }
186
187 energyDiff =
getEnergyDiff(Potential::POT_EDIP, -1033.250950);
189 printf("WARNING: EDIP energy difference: %f\n", energyDiff);
190 } else {
191 forceDiff =
getForceDiff(Potential::POT_EDIP, 7.080115);
193 printf("WARNING: EDIP force difference: %f\n", forceDiff);
194 } else {
195 printf("OK: EDIP\n");
196 }
197 }
198
199 energyDiff =
getEnergyDiff(Potential::POT_TERSOFF_SI, -1035.809985);
201 printf("WARNING: Tersoff energy difference: %f\n", energyDiff);
202 } else {
203 forceDiff =
getForceDiff(Potential::POT_TERSOFF_SI, 11.145002);
205 printf("WARNING: Tersoff force difference: %f\n", forceDiff);
206 } else {
207 printf("OK: Tersoff\n");
208 }
209 }
210
211 energyDiff =
getEnergyDiff(Potential::POT_SW_SI, -1449.795645);
213 printf("WARNING: SW energy difference: %f\n", energyDiff);
214 } else {
215 forceDiff =
getForceDiff(Potential::POT_SW_SI, 2.530904);
217 printf("WARNING: SW force difference: %f\n", forceDiff);
218 } else {
219 printf("OK: SW\n");
220 }
221 }
222
223 energyDiff =
getEnergyDiff(Potential::POT_LENOSKY_SI, -1410.679106);
225 printf("Lenosky energy difference: %f\n", energyDiff);
226 } else {
227 forceDiff =
getForceDiff(Potential::POT_LENOSKY_SI, 2.320168);
229 printf("Lenosky force difference: %f\n", forceDiff);
230 } else {
231 printf("OK: Lenosky\n");
232 }
233 }
234
235 energyDiff =
getEnergyDiff(Potential::POT_EAM_AL, -1206.825825);
237 printf("WARNING: Aluminum energy difference: %f\n", energyDiff);
238 } else {
239 forceDiff =
getForceDiff(Potential::POT_EAM_AL, 0.000246);
241 printf("WARNING: Aluminum force difference: %f\n", forceDiff);
242 } else {
243 printf("OK: Aluminum\n");
244 }
245 }
246
247 energyDiff =
getEnergyDiff(Potential::POT_QSC, -1232.806318);
249 printf("WARNING: QSC energy difference: %f\n", energyDiff);
250 } else {
253 printf("WARNING: QSC force difference: %f\n", forceDiff);
254 } else {
255 printf("OK: QSC\n");
256 }
257 }
258
259 energyDiff =
getEnergyDiff(Potential::POT_TIP4P, 4063.865115);
261 printf("WARNING: TIP4P energy difference: %f\n", energyDiff);
262 } else {
263 forceDiff =
getForceDiff(Potential::POT_TIP4P, 73.655248);
265 printf("WARNING: TIP4P force difference: %f\n", forceDiff);
266 } else {
267 printf("OK: TIP4P\n");
268 }
269 }
270}
double getEnergyDiff(std::string potTag, double refEnergy)
double getForceDiff(std::string potTag, double refForce)