@@ -228,3 +228,121 @@ TEST_CASE("ExchangePolarization-4", "[ff][hippo][expol]")
228
228
finish ();
229
229
testEnd ();
230
230
}
231
+
232
+ TEST_CASE (" ExchangePolarization-5" , " [ff][hippo][expol]" )
233
+ {
234
+ const char * xn = " crys.xyz" ;
235
+ const char * kn = " expols2.key" ;
236
+ const char * argv[] = {" dummy" , xn, " -k" , kn};
237
+ int argc = 4 ;
238
+
239
+ TestFile fx1 (TINKER9_DIRSTR " /test/file/expol/crys.xyz" );
240
+ TestFile fk1 (TINKER9_DIRSTR " /test/file/expol/expol.key" , kn,
241
+ " \n "
242
+ " exchange-polar s2"
243
+ " \n " );
244
+ TestFile fp1 (TINKER9_DIRSTR " /test/file/expol/expol.prm" );
245
+
246
+ const double eps_e = testGetEps (0.0001 , 0.0001 );
247
+ const double eps_g = testGetEps (0.0001 , 0.0001 );
248
+ const double eps_v = testGetEps (0.001 , 0.001 );
249
+
250
+ TestReference r (TINKER9_DIRSTR " /test/ref/expol.5.txt" );
251
+ auto ref_c = r.getCount ();
252
+ auto ref_e = r.getEnergy ();
253
+ auto ref_v = r.getVirial ();
254
+ auto ref_g = r.getGradient ();
255
+
256
+ rc_flag = calc::xyz | calc::vmask;
257
+ testBeginWithArgs (argc, argv);
258
+ initialize ();
259
+
260
+ energy (calc::v0);
261
+ COMPARE_REALS (esum, ref_e, eps_e);
262
+
263
+ energy (calc::v1);
264
+ COMPARE_REALS (esum, ref_e, eps_e);
265
+ COMPARE_GRADIENT (ref_g, eps_g);
266
+ for (int i = 0 ; i < 3 ; ++i)
267
+ for (int j = 0 ; j < 3 ; ++j)
268
+ COMPARE_REALS (vir[i * 3 + j], ref_v[i][j], eps_v);
269
+
270
+ energy (calc::v3);
271
+ COMPARE_REALS (esum, ref_e, eps_e);
272
+ COMPARE_INTS (countReduce (nep), ref_c);
273
+
274
+ energy (calc::v4);
275
+ COMPARE_REALS (esum, ref_e, eps_e);
276
+ COMPARE_GRADIENT (ref_g, eps_g);
277
+
278
+ energy (calc::v5);
279
+ COMPARE_GRADIENT (ref_g, eps_g);
280
+
281
+ energy (calc::v6);
282
+ COMPARE_GRADIENT (ref_g, eps_g);
283
+ for (int i = 0 ; i < 3 ; ++i)
284
+ for (int j = 0 ; j < 3 ; ++j)
285
+ COMPARE_REALS (vir[i * 3 + j], ref_v[i][j], eps_v);
286
+
287
+ finish ();
288
+ testEnd ();
289
+ }
290
+
291
+ TEST_CASE (" ExchangePolarization-6" , " [ff][hippo][expol]" )
292
+ {
293
+ const char * xn = " crys.xyz" ;
294
+ const char * kn = " expolg.key" ;
295
+ const char * argv[] = {" dummy" , xn, " -k" , kn};
296
+ int argc = 4 ;
297
+
298
+ TestFile fx1 (TINKER9_DIRSTR " /test/file/expol/crys.xyz" );
299
+ TestFile fk1 (TINKER9_DIRSTR " /test/file/expol/expol.key" , kn,
300
+ " \n "
301
+ " exchange-polar g"
302
+ " \n " );
303
+ TestFile fp1 (TINKER9_DIRSTR " /test/file/expol/expol.prm" );
304
+
305
+ const double eps_e = testGetEps (0.0001 , 0.0001 );
306
+ const double eps_g = testGetEps (0.0001 , 0.0001 );
307
+ const double eps_v = testGetEps (0.001 , 0.001 );
308
+
309
+ TestReference r (TINKER9_DIRSTR " /test/ref/expol.6.txt" );
310
+ auto ref_c = r.getCount ();
311
+ auto ref_e = r.getEnergy ();
312
+ auto ref_v = r.getVirial ();
313
+ auto ref_g = r.getGradient ();
314
+
315
+ rc_flag = calc::xyz | calc::vmask;
316
+ testBeginWithArgs (argc, argv);
317
+ initialize ();
318
+
319
+ energy (calc::v0);
320
+ COMPARE_REALS (esum, ref_e, eps_e);
321
+
322
+ energy (calc::v1);
323
+ COMPARE_REALS (esum, ref_e, eps_e);
324
+ COMPARE_GRADIENT (ref_g, eps_g);
325
+ for (int i = 0 ; i < 3 ; ++i)
326
+ for (int j = 0 ; j < 3 ; ++j)
327
+ COMPARE_REALS (vir[i * 3 + j], ref_v[i][j], eps_v);
328
+
329
+ energy (calc::v3);
330
+ COMPARE_REALS (esum, ref_e, eps_e);
331
+ COMPARE_INTS (countReduce (nep), ref_c);
332
+
333
+ energy (calc::v4);
334
+ COMPARE_REALS (esum, ref_e, eps_e);
335
+ COMPARE_GRADIENT (ref_g, eps_g);
336
+
337
+ energy (calc::v5);
338
+ COMPARE_GRADIENT (ref_g, eps_g);
339
+
340
+ energy (calc::v6);
341
+ COMPARE_GRADIENT (ref_g, eps_g);
342
+ for (int i = 0 ; i < 3 ; ++i)
343
+ for (int j = 0 ; j < 3 ; ++j)
344
+ COMPARE_REALS (vir[i * 3 + j], ref_v[i][j], eps_v);
345
+
346
+ finish ();
347
+ testEnd ();
348
+ }
0 commit comments