Add a basic TPI sanity test
authorAleksei Iupinov <a.yupinov@gmail.com>
Thu, 1 Feb 2018 16:16:52 +0000 (17:16 +0100)
committerAleksei Iupinov <a.yupinov@gmail.com>
Fri, 16 Mar 2018 13:27:46 +0000 (14:27 +0100)
The floating point exceptions are for now toggled off
in the test body instead of mdrun itself.

Refs #2391

Change-Id: I41b584f4753b9b0e126256a94c1304f0a870aa73

CMakeLists.txt
src/config.h.cmakein
src/gromacs/math/utilities.cpp
src/gromacs/math/utilities.h
src/programs/mdrun/tests/CMakeLists.txt
src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_0.xml [new file with mode: 0644]
src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_1.xml [new file with mode: 0644]
src/programs/mdrun/tests/spc216_with_methane.gro [new file with mode: 0644]
src/programs/mdrun/tests/spc216_with_methane.top [new file with mode: 0644]
src/programs/mdrun/tests/tpitest.cpp [new file with mode: 0644]

index f5ce6ba11a0246a4e68673f9e12f17b90e774ee1..1c334e0c3f854a56c23da64450bcb227abb08295 100644 (file)
@@ -418,6 +418,7 @@ find_library(HAVE_LIBM m)
 mark_as_advanced(HAVE_LIBM)
 check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME)
 check_library_exists(m feenableexcept "" HAVE_FEENABLEEXCEPT)
+check_library_exists(m fedisableexcept "" HAVE_FEDISABLEEXCEPT)
 
 include(TestSchedAffinity)
 test_sched_affinity(HAVE_SCHED_AFFINITY)
index 6059d4821278c3d3c08998d202b356b540dcbfd3..b71a0a4bef4cc4f0a1737baf6b53f28d6b84a145 100644 (file)
 /* Define if we have feenableexcept */
 #cmakedefine01 HAVE_FEENABLEEXCEPT
 
+/* Define if we have fedisableexcept */
+#cmakedefine01 HAVE_FEDISABLEEXCEPT
+
 /*! \endcond */
 
 #endif
index 7f60d1888fb5a3553af670f72f0793cb2a462722..652f1e603e2656993fef6c41d177b73c94b73ef5 100644 (file)
 
 #include <algorithm>
 
-#if !GMX_NATIVE_WINDOWS
-// for fp exception control stuff
-#include <fenv.h>
-#endif
+#include <cfenv>
+
+//! Floating point exception set that we use and care about
+constexpr int c_FPexceptions = FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW;
 
 int
 gmx_within_tol(double   f1,
@@ -120,7 +120,7 @@ int gmx_greatest_common_divisor(int p, int q)
 int gmx_feenableexcept()
 {
 #if HAVE_FEENABLEEXCEPT
-    return feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
+    return feenableexcept(c_FPexceptions);
 #elif (defined(__i386__) || defined(__x86_64__)) && defined(__APPLE__)
     /* Author:  David N. Williams
      * License:  Public Domain
@@ -128,9 +128,8 @@ int gmx_feenableexcept()
      * Might also work on non-Apple Unix. But should be tested
      * before enabling.
      */
-    unsigned int  excepts = FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW;
     static fenv_t fenv;
-    unsigned int  new_excepts = excepts & FE_ALL_EXCEPT;
+    unsigned int  new_excepts = c_FPexceptions & FE_ALL_EXCEPT;
 
     if (fegetenv (&fenv) )
     {
@@ -147,6 +146,28 @@ int gmx_feenableexcept()
 #endif
 }
 
+int gmx_fedisableexcept()
+{
+#if HAVE_FEDISABLEEXCEPT
+    return fedisableexcept(c_FPexceptions);
+#elif (defined(__i386__) || defined(__x86_64__)) && defined(__APPLE__)
+    static fenv_t fenv;
+    unsigned int  new_excepts = c_FPexceptions & FE_ALL_EXCEPT;
+    if (fegetenv (&fenv) )
+    {
+        return -1;
+    }
+
+    // mask
+    fenv.__control |= new_excepts;
+    fenv.__mxcsr   |= new_excepts << 7;
+
+    return fesetenv(&fenv);
+#else
+    return -1;
+#endif
+}
+
 real max_cutoff(real cutoff1, real cutoff2)
 {
     if (cutoff1 == 0 || cutoff2 == 0)
index eba796a91027c48aaf0ce88b541d1bb282201293..a90cb2b6b55bf1b276f077ecddb9a29cd5e57e92 100644 (file)
@@ -167,6 +167,14 @@ gmx_greatest_common_divisor(int p, int q);
  */
 int gmx_feenableexcept();
 
+/*! \brief Disable floating-point exceptions if supported on OS
+ *
+ * Disables division-by-zero, invalid value, and overflow.
+ *
+ * \returns 0 if successful in disabling exceptions, anything else in case of failure/unsupported OS.
+ */
+int gmx_fedisableexcept();
+
 /*! \brief Return cut-off to use
  *
  * Takes the max of two cut-offs. However a cut-off of 0
index c926529a7b85a3076b346ec91a7c6e6aaad67466..7bdc45edef681a9117f2be54d9d514f2c546c646 100644 (file)
@@ -58,6 +58,7 @@ gmx_add_gtest_executable(
     swapcoords.cpp
     interactiveMD.cpp
     termination.cpp
+    tpitest.cpp
     # pseudo-library for code for testing mdrun
     $<TARGET_OBJECTS:mdrun_test_objlib>
     # pseudo-library for code for mdrun
diff --git a/src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_0.xml b/src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_0.xml
new file mode 100644 (file)
index 0000000..fad2360
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <Real Name="V">6.4562600000000003</Real>
+  <Real Name="mu">869.80700000000002</Real>
+</ReferenceData>
diff --git a/src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_1.xml b/src/programs/mdrun/tests/refdata/Simple_TpiTest_ReproducesOutput_1.xml
new file mode 100644 (file)
index 0000000..1f20dab
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <Real Name="V">6.4562600000000003</Real>
+  <Real Name="mu">91.505499999999998</Real>
+</ReferenceData>
diff --git a/src/programs/mdrun/tests/spc216_with_methane.gro b/src/programs/mdrun/tests/spc216_with_methane.gro
new file mode 100644 (file)
index 0000000..7b33f16
--- /dev/null
@@ -0,0 +1,656 @@
+water and methane
+  653
+    1SOL     OW    1   0.005   0.600   0.244  0.1823 -0.4158  0.4875
+    1SOL    HW1    2  -0.017   0.690   0.270 -1.7457 -0.5883 -0.4604
+    1SOL    HW2    3   0.051   0.610   0.161  2.5085 -0.1501  1.7627
+    2SOL     OW    4   0.155   0.341   0.735  0.6282  0.4390  0.0015
+    2SOL    HW1    5   0.140   0.284   0.660 -0.3206  0.0700  0.4631
+    2SOL    HW2    6   0.081   0.402   0.734 -0.1556 -0.4529  1.4404
+    3SOL     OW    7   1.853   0.500   0.554  0.0780  0.6477  0.1596
+    3SOL    HW1    8   1.788   0.505   0.484 -0.5409 -1.2601  0.5636
+    3SOL    HW2    9   1.809   0.533   0.632 -0.0335  0.4430  0.1829
+    4SOL     OW   10   0.732   1.356   1.314  0.3818 -0.1526  0.0053
+    4SOL    HW1   11   0.724   1.291   1.245 -0.6376  0.1642 -0.1766
+    4SOL    HW2   12   0.767   1.434   1.270  0.7292 -0.2888  0.0444
+    5SOL     OW   13   1.746   1.593   0.575 -0.4779 -0.0868  0.0596
+    5SOL    HW1   14   1.735   1.666   0.637  0.2545 -0.2925  0.4446
+    5SOL    HW2   15   1.708   1.518   0.621  1.8857 -0.6672  1.1321
+    6SOL     OW   16   1.759   0.582   0.800  0.1066  0.3638  0.1453
+    6SOL    HW1   17   1.673   0.542   0.815  0.2653 -0.5059 -1.2580
+    6SOL    HW2   18   1.787   0.608   0.888 -0.6999 -1.1652  0.8946
+    7SOL     OW   19   0.965   0.529   0.941  0.0464  0.6791 -0.5470
+    7SOL    HW1   20   0.912   0.531   1.020  0.7588 -0.9814 -0.0074
+    7SOL    HW2   21   0.902   0.533   0.869 -0.5440  3.3012  0.0802
+    8SOL     OW   22   0.091   0.598   1.836  0.0326  0.2995  0.5048
+    8SOL    HW1   23   0.091   0.507   1.806 -1.9591  0.6076 -0.4926
+    8SOL    HW2   24   0.174   0.634   1.804  0.0499 -0.6923 -0.5988
+    9SOL     OW   25   0.796   1.279   0.780  0.0287  0.9120  0.0338
+    9SOL    HW1   26   0.731   1.331   0.734 -0.7066  0.7743  0.9173
+    9SOL    HW2   27   0.799   1.196   0.733  0.1127  1.1975 -0.4621
+   10SOL     OW   28   0.737   0.813   0.145 -0.2045 -0.2755 -0.1129
+   10SOL    HW1   29   0.765   0.723   0.130  2.0853  0.6254 -1.4381
+   10SOL    HW2   30   0.771   0.835   0.231  0.8150 -0.0891 -0.5595
+   11SOL     OW   31   0.547   1.092   0.477  0.7492 -0.2399 -0.7211
+   11SOL    HW1   32   0.529   1.089   0.571 -1.6704 -1.5609 -1.1701
+   11SOL    HW2   33   0.463   1.072   0.436  1.8685 -0.1447 -3.1641
+   12SOL     OW   34   0.729   1.093   1.672 -0.3320 -0.4160 -0.1770
+   12SOL    HW1   35   0.781   1.129   1.744 -3.0691  0.8046  1.2710
+   12SOL    HW2   36   0.762   1.004   1.660 -0.3590 -0.9619  3.2122
+   13SOL     OW   37   0.570   1.373   1.080  0.5042 -0.2319 -0.2229
+   13SOL    HW1   38   0.625   1.297   1.099 -1.3369 -1.5288  0.0461
+   13SOL    HW2   39   0.544   1.361   0.988 -1.9170 -1.3747  0.5551
+   14SOL     OW   40   1.431   1.407   1.448 -0.0622  0.3206 -0.1113
+   14SOL    HW1   41   1.471   1.367   1.526 -0.0250 -0.0867 -0.3344
+   14SOL    HW2   42   1.398   1.332   1.397 -0.3689  0.6034 -0.3325
+   15SOL     OW   43   0.544   0.321   1.628  0.2713  0.2958 -0.0287
+   15SOL    HW1   44   0.458   0.278   1.627  0.2912  0.2480  0.2043
+   15SOL    HW2   45   0.579   0.307   1.540  0.4867 -0.5991  0.1932
+   16SOL     OW   46   1.482   0.418   0.684  0.2029  0.6095 -0.1120
+   16SOL    HW1   47   1.396   0.411   0.641 -0.0022  0.9048  0.2426
+   16SOL    HW2   48   1.490   0.336   0.734 -0.2046  0.9013  0.4457
+   17SOL     OW   49   0.383   1.854   0.680 -0.5139  0.5358  0.4888
+   17SOL    HW1   50   0.421   1.821   0.599  0.7665  0.7680  0.9853
+   17SOL    HW2   51   0.458   1.885   0.731 -1.3106  0.4418  1.7385
+   18SOL     OW   52   1.132   1.589   1.714  0.2895 -0.1975 -0.0185
+   18SOL    HW1   53   1.043   1.553   1.717  0.5306 -0.7027  2.3217
+   18SOL    HW2   54   1.155   1.588   1.621 -0.5281 -4.1539 -0.3015
+   19SOL     OW   55   0.395   1.440   0.467  0.5492  0.0979  0.3540
+   19SOL    HW1   56   0.368   1.353   0.437 -0.1402  0.0430  1.1291
+   19SOL    HW2   57   0.315   1.491   0.468  1.3744  1.5434 -2.6982
+   20SOL     OW   58   0.305   1.125   0.948  0.2111 -0.2977 -0.8856
+   20SOL    HW1   59   0.295   1.202   0.892  2.3617  0.9048  0.3267
+   20SOL    HW2   60   0.271   1.153   1.033  0.1365 -1.0047 -0.6756
+   21SOL     OW   61   0.724   1.826   1.501  0.0298  0.4019 -0.0972
+   21SOL    HW1   62   0.768   1.794   1.579 -0.4863 -1.1317 -0.4356
+   21SOL    HW2   63   0.660   1.759   1.479  0.8721  0.2961 -2.4245
+   22SOL     OW   64   0.514   0.998   0.125  0.6098  0.7181 -0.7434
+   22SOL    HW1   65   0.597   0.957   0.101  0.9105  1.6725 -1.3616
+   22SOL    HW2   66   0.482   1.036   0.043 -0.2917  0.6175 -0.4394
+   23SOL     OW   67   1.315   0.291   1.516 -0.0316  0.1776  0.0042
+   23SOL    HW1   68   1.404   0.271   1.488 -0.3833 -0.6259 -0.5615
+   23SOL    HW2   69   1.300   0.382   1.490 -0.3373 -0.5364 -2.3890
+   24SOL     OW   70   0.062   0.829   0.562 -0.1329 -0.4901  0.1105
+   24SOL    HW1   71   0.100   0.870   0.484 -0.6830 -0.5973 -0.2147
+   24SOL    HW2   72  -0.009   0.888   0.588 -1.4347 -1.6123 -0.8158
+   25SOL     OW   73   0.236   1.600   0.680  0.0347 -0.3240  0.4242
+   25SOL    HW1   74   0.202   1.585   0.592  1.3235 -1.8349  0.1530
+   25SOL    HW2   75   0.267   1.691   0.679 -0.8062 -0.0476 -0.3902
+   26SOL     OW   76   0.071   1.691   0.164  0.0618 -0.1646  0.2129
+   26SOL    HW1   77   0.075   1.759   0.097 -0.3582 -0.6286 -0.2942
+   26SOL    HW2   78   0.089   1.609   0.116  1.2034 -0.3431  0.9259
+   27SOL     OW   79   1.692   0.825   0.708 -0.5641 -0.5462 -0.0453
+   27SOL    HW1   80   1.604   0.794   0.687 -0.6763 -0.2255 -0.0492
+   27SOL    HW2   81   1.733   0.751   0.752 -1.0728 -0.4631  0.5871
+   28SOL     OW   82   1.579   1.053   0.254 -0.8033 -0.0906 -0.0352
+   28SOL    HW1   83   1.484   1.038   0.253 -0.5163 -1.9637 -0.8677
+   28SOL    HW2   84   1.612   0.993   0.321 -0.3926  1.8899  1.5777
+   29SOL     OW   85   0.255   0.444   1.549 -0.3923  0.0985  0.0998
+   29SOL    HW1   86   0.315   0.457   1.623 -0.3069  1.0962 -0.1358
+   29SOL    HW2   87   0.201   0.370   1.575  0.7050 -0.5864  0.4719
+   30SOL     OW   88   0.517   1.454   0.771  0.5258  0.3188  0.1433
+   30SOL    HW1   89   0.540   1.448   0.678 -0.7306  1.1517 -0.2395
+   30SOL    HW2   90   0.432   1.499   0.771 -0.5682 -1.6745  1.5617
+   31SOL     OW   91   1.290   1.247   1.248 -0.1525 -0.1170 -0.3420
+   31SOL    HW1   92   1.225   1.308   1.284  0.8657  0.1540  1.1053
+   31SOL    HW2   93   1.238   1.177   1.208 -1.3298  0.9308 -0.6961
+   32SOL     OW   94   1.161   0.046   0.549 -0.7899  0.0165 -0.2292
+   32SOL    HW1   95   1.234   0.006   0.596 -1.1893 -0.2501  0.1682
+   32SOL    HW2   96   1.172   0.017   0.459 -0.7270 -0.4863 -0.0610
+   33SOL     OW   97   0.200   0.931   1.248  0.1834 -0.0182 -0.3383
+   33SOL    HW1   98   0.256   0.920   1.171  0.0813 -1.0292 -0.2797
+   33SOL    HW2   99   0.213   0.850   1.299 -0.7054  0.0873  0.0770
+   34SOL     OW  100   1.653   0.813   0.403 -0.4229  0.4610 -0.5574
+   34SOL    HW1  101   1.632   0.721   0.384  0.8351  0.2066 -0.7345
+   34SOL    HW2  102   1.697   0.810   0.488 -0.8967  0.9684 -0.2935
+   35SOL     OW  103   1.138   1.632   1.408  0.2235  0.1534 -0.3000
+   35SOL    HW1  104   1.106   1.554   1.363  2.5410 -2.2790  2.0813
+   35SOL    HW2  105   1.080   1.702   1.379 -2.4493 -2.5989 -1.8891
+   36SOL     OW  106   0.309   0.377   1.834 -0.4182 -0.4312 -0.3901
+   36SOL    HW1  107   0.270   0.293   1.810  1.5773 -1.5836  0.2316
+   36SOL    HW2  108   0.356   0.359   1.915 -0.2928  1.3958 -0.0364
+   37SOL     OW  109   1.437   1.245   1.000 -0.0010  0.2071 -0.1808
+   37SOL    HW1  110   1.416   1.156   0.973 -1.6468  1.1111 -1.9656
+   37SOL    HW2  111   1.405   1.252   1.090  0.6670 -1.1529  0.1781
+   38SOL     OW  112   1.424   1.753   0.580  0.2135 -0.3184  0.0506
+   38SOL    HW1  113   1.415   1.709   0.496 -0.3394 -0.8115  0.3676
+   38SOL    HW2  114   1.382   1.694   0.643 -0.0567  0.4046  0.5551
+   39SOL     OW  115   0.842   0.793   0.396 -0.1790 -0.0812 -0.1655
+   39SOL    HW1  116   0.827   0.699   0.405  0.8753 -0.1486  1.0973
+   39SOL    HW2  117   0.773   0.834   0.448 -0.1571 -0.1809 -0.0577
+   40SOL     OW  118   1.184   0.226   0.775  0.0987  0.3445 -0.0968
+   40SOL    HW1  119   1.151   0.212   0.686  1.4235  1.3947 -0.7627
+   40SOL    HW2  120   1.273   0.191   0.774 -0.0295 -0.0600  0.9650
+   41SOL     OW  121   1.645   1.631   0.294 -0.1345  0.2473 -0.0927
+   41SOL    HW1  122   1.700   1.553   0.302  3.4777  2.7807  1.0014
+   41SOL    HW2  123   1.633   1.661   0.384 -2.3958  0.4256 -0.4190
+   42SOL     OW  124   0.990   0.346   1.386  0.0430  0.1267 -0.1927
+   42SOL    HW1  125   1.000   0.372   1.477 -2.1829 -1.0234  0.4135
+   42SOL    HW2  126   1.076   0.311   1.362  1.1511  1.9943  0.9059
+   43SOL     OW  127   1.202   0.168   0.212 -1.0083  0.3755  0.1937
+   43SOL    HW1  128   1.264   0.196   0.145  0.7411 -0.2800  1.5089
+   43SOL    HW2  129   1.128   0.131   0.163  0.1573  0.0522 -1.3518
+   44SOL     OW  130   1.107   1.012   1.474  0.1787 -0.3903  0.2368
+   44SOL    HW1  131   1.103   1.064   1.393 -2.8553 -3.0802 -1.4572
+   44SOL    HW2  132   1.098   1.077   1.544  2.7027  1.9887 -1.5560
+   45SOL     OW  133   1.100   1.061   1.152  0.5007  0.1964  0.5163
+   45SOL    HW1  134   1.055   1.105   1.080  0.6653 -0.2221  0.1570
+   45SOL    HW2  135   1.038   0.995   1.183  0.0876  0.9561  1.3329
+   46SOL     OW  136   1.136   0.703   0.486 -0.1829  0.0543  0.1652
+   46SOL    HW1  137   1.042   0.696   0.470 -0.1004 -2.0729  0.5023
+   46SOL    HW2  138   1.176   0.703   0.399 -0.2869 -2.7402  0.0715
+   47SOL     OW  139   0.205   0.758   0.832  0.1211 -0.5871  0.3969
+   47SOL    HW1  140   0.160   0.782   0.751  0.6567 -1.4270 -0.1532
+   47SOL    HW2  141   0.153   0.798   0.901  0.0933  0.8180 -0.4036
+   48SOL     OW  142   0.014   1.547   1.653  0.0626  0.4351  0.1221
+   48SOL    HW1  143  -0.068   1.593   1.633  0.0169  1.2500  2.0845
+   48SOL    HW2  144  -0.011   1.455   1.659 -0.7796  0.7015  0.9501
+   49SOL     OW  145   0.937   0.550   0.310 -0.4266  0.1699 -0.0318
+   49SOL    HW1  146   0.940   0.460   0.342 -1.3375 -0.2757 -1.1180
+   49SOL    HW2  147   1.018   0.561   0.260 -1.7099 -1.1003 -2.4930
+   50SOL     OW  148   1.594   0.494   1.709 -0.0166  0.2988  0.0705
+   50SOL    HW1  149   1.526   0.554   1.740 -1.2253 -0.8979 -0.2534
+   50SOL    HW2  150   1.597   0.508   1.614  1.3720  1.5596  0.2831
+   51SOL     OW  151   1.317   0.968   0.261 -0.3666  0.0273 -0.2007
+   51SOL    HW1  152   1.326   0.873   0.258  2.6967  0.1307  3.0264
+   51SOL    HW2  153   1.237   0.982   0.311  1.1619 -0.9005  2.6027
+   52SOL     OW  154   0.818   0.220   0.930 -0.2358 -0.1122  0.7203
+   52SOL    HW1  155   0.896   0.264   0.962 -0.5134 -0.4077  1.8296
+   52SOL    HW2  156   0.843   0.128   0.924  0.2529  0.1261 -1.3134
+   53SOL     OW  157   1.063   1.375   0.602 -0.1037  0.4271 -0.4463
+   53SOL    HW1  158   1.080   1.291   0.646  0.8360 -1.0279 -3.4337
+   53SOL    HW2  159   1.144   1.425   0.613 -0.7715  1.0792  1.5996
+   54SOL     OW  160   0.402   0.050   1.093 -0.3397  0.0770 -0.0682
+   54SOL    HW1  161   0.419  -0.043   1.079 -0.9714  0.1003 -1.0092
+   54SOL    HW2  162   0.426   0.092   1.010 -0.9941  0.6253  0.0181
+   55SOL     OW  163   1.638   1.025   0.883  0.0757  0.2175 -0.6114
+   55SOL    HW1  164   1.604   1.095   0.826  0.1478  0.1813 -0.6999
+   55SOL    HW2  165   1.670   0.959   0.822 -0.0596  0.0744 -0.5271
+   56SOL     OW  166   1.398   1.680   1.499 -0.4326 -0.1587  0.4298
+   56SOL    HW1  167   1.380   1.610   1.437 -0.8688  1.3026 -1.1337
+   56SOL    HW2  168   1.312   1.714   1.522 -0.1861  0.3706  0.5817
+   57SOL     OW  169   0.233   0.934   0.223  0.8457 -0.4228 -0.3137
+   57SOL    HW1  170   0.220   0.964   0.133 -0.8989 -2.8830 -0.9538
+   57SOL    HW2  171   0.299   0.865   0.215  1.2989 -0.0754  0.4245
+   58SOL     OW  172   1.441   0.685   0.696  0.2354  0.4515 -0.4124
+   58SOL    HW1  173   1.354   0.700   0.734 -0.2181  0.6376 -1.4924
+   58SOL    HW2  174   1.463   0.595   0.721  0.2007  0.7651  0.7684
+   59SOL     OW  175   0.337   1.268   0.247 -0.0093 -0.4920  0.1373
+   59SOL    HW1  176   0.344   1.178   0.215  2.3331 -0.5413  0.6397
+   59SOL    HW2  177   0.250   1.273   0.286  0.5826 -3.2231  2.0231
+   60SOL     OW  178   0.898   0.118   0.200 -0.3551  0.2302 -0.0587
+   60SOL    HW1  179   0.911   0.132   0.106  0.2985 -1.4100 -0.2193
+   60SOL    HW2  180   0.829   0.180   0.223 -0.2792  0.9071 -1.5410
+   61SOL     OW  181   1.836   1.848   1.626  0.0758 -0.2851  0.2067
+   61SOL    HW1  182   1.827   1.886   1.713 -0.3224  1.3741 -0.5508
+   61SOL    HW2  183   1.760   1.789   1.619 -1.1443  1.2674  0.1338
+   62SOL     OW  184   1.709   1.339   0.320 -0.0310  0.2465 -0.1588
+   62SOL    HW1  185   1.682   1.260   0.274 -0.3448  0.1521  0.1802
+   62SOL    HW2  186   1.803   1.329   0.333 -0.1206 -0.2203  0.1609
+   63SOL     OW  187   0.565   0.045   0.300  0.0049 -0.4326 -0.1368
+   63SOL    HW1  188   0.507   0.057   0.225 -0.1634 -2.5297 -0.3735
+   63SOL    HW2  189   0.526  -0.026   0.350  1.0811 -0.2485  1.0029
+   64SOL     OW  190   1.628   0.075   0.522 -0.1732 -0.1708 -0.0354
+   64SOL    HW1  191   1.564   0.147   0.528  0.0770 -0.0114  0.6735
+   64SOL    HW2  192   1.585   0.001   0.564  0.2490  0.0361  0.7716
+   65SOL     OW  193   0.217   0.088   1.291 -0.4462  0.0630  0.0515
+   65SOL    HW1  194   0.299   0.084   1.242 -0.2119  1.3491  0.3286
+   65SOL    HW2  195   0.231   0.028   1.365  0.0105 -0.1842 -0.2283
+   66SOL     OW  196   1.107   1.599   0.835  0.2849  0.8202 -0.0344
+   66SOL    HW1  197   1.035   1.596   0.772  0.7229 -2.5884 -0.4613
+   66SOL    HW2  198   1.184   1.575   0.784  0.8991 -0.4540  1.4607
+   67SOL     OW  199   0.526   0.552   0.449  0.1748 -0.6067  0.3229
+   67SOL    HW1  200   0.434   0.575   0.446  0.6174  1.3015  0.5709
+   67SOL    HW2  201   0.527   0.459   0.471 -1.6192 -0.0837  2.7272
+   68SOL     OW  202   1.370   0.230   1.838  0.4671 -0.0369  0.5305
+   68SOL    HW1  203   1.436   0.291   1.805 -1.2860  1.7105  0.1811
+   68SOL    HW2  204   1.357   0.168   1.766 -0.4179  1.3780 -0.5543
+   69SOL     OW  205   0.265   0.145   0.335 -0.3628  0.3179  0.3174
+   69SOL    HW1  206   0.205   0.108   0.401 -1.9831  1.8944 -0.2337
+   69SOL    HW2  207   0.215   0.142   0.254  1.1223 -0.3200 -0.5913
+   70SOL     OW  208   0.640   0.255   0.072 -0.5708  0.2064  0.1379
+   70SOL    HW1  209   0.592   0.297   0.143  0.6043 -0.4147  1.3207
+   70SOL    HW2  210   0.603   0.167   0.066 -0.6735  0.2601 -0.0204
+   71SOL     OW  211   1.053   1.444   1.188 -0.0691 -0.6794 -0.2630
+   71SOL    HW1  212   1.050   1.387   1.111 -2.0209  0.6149 -1.1791
+   71SOL    HW2  213   1.105   1.519   1.161 -1.8638  0.4079 -0.8057
+   72SOL     OW  214   1.220   0.833   1.310 -0.3143  0.7335 -0.3290
+   72SOL    HW1  215   1.162   0.770   1.266  1.2222 -1.5075  0.7975
+   72SOL    HW2  216   1.167   0.868   1.382  0.2237 -2.6185  1.7829
+   73SOL     OW  217   0.826   1.515   0.927  0.3270 -0.2701 -0.4080
+   73SOL    HW1  218   0.920   1.501   0.924  0.2200 -1.3970  1.3889
+   73SOL    HW2  219   0.788   1.433   0.895 -0.0893 -0.7359  1.2522
+   74SOL     OW  220   0.947   0.419   0.683 -0.1867  0.1362 -0.5691
+   74SOL    HW1  221   0.950   0.388   0.592 -0.7514  0.0847 -0.5674
+   74SOL    HW2  222   0.861   0.392   0.715 -0.0499  0.2952 -0.0654
+   75SOL     OW  223   0.532   1.697   0.437 -0.6446 -0.7155  0.7480
+   75SOL    HW1  224   0.627   1.686   0.437 -0.8548 -2.6894 -0.0127
+   75SOL    HW2  225   0.498   1.614   0.471 -2.1241 -0.3559  0.1956
+   76SOL     OW  226   1.398   1.337   0.222 -0.5257  0.2643  0.0180
+   76SOL    HW1  227   1.405   1.361   0.314 -1.0932  1.0998 -0.1528
+   76SOL    HW2  228   1.433   1.412   0.175  2.1972 -1.1944 -0.3851
+   77SOL     OW  229   0.212   1.702   1.770  0.8164 -0.0679 -0.0905
+   77SOL    HW1  230   0.262   1.670   1.695  1.2871  4.6169 -1.9424
+   77SOL    HW2  231   0.127   1.724   1.734  0.7133  1.2614  0.9604
+   78SOL     OW  232   0.699   0.270   0.386 -0.8177 -0.5114  0.3479
+   78SOL    HW1  233   0.669   0.287   0.475  1.2496  0.7505  0.8311
+   78SOL    HW2  234   0.636   0.206   0.352 -1.7993 -0.8114  2.6001
+   79SOL     OW  235   1.364   0.635   1.746 -0.7384 -0.1142  0.3285
+   79SOL    HW1  236   1.350   0.721   1.707  0.1639 -0.6765 -1.2647
+   79SOL    HW2  237   1.276   0.603   1.766 -1.1202  0.8395  0.1977
+   80SOL     OW  238   1.316   1.494   0.695  0.5271  0.4903 -0.2267
+   80SOL    HW1  239   1.355   1.490   0.782  1.4716  2.4892 -0.5239
+   80SOL    HW2  240   1.366   1.430   0.644 -0.3994 -1.1000  0.8041
+   81SOL     OW  241   0.532   0.838   0.958 -0.4993 -0.0110  0.1528
+   81SOL    HW1  242   0.442   0.838   0.927 -0.3290  1.0927 -0.3788
+   81SOL    HW2  243   0.526   0.856   1.052 -0.7970  0.7189 -0.0061
+   82SOL     OW  244   1.373   0.209   0.411 -0.4600 -0.0336  0.2506
+   82SOL    HW1  245   1.349   0.299   0.436  0.8064  0.1217  0.9551
+   82SOL    HW2  246   1.302   0.180   0.354 -1.2353  1.1687  0.5895
+   83SOL     OW  247   0.863   0.622   1.815  0.1086 -0.0512 -0.2934
+   83SOL    HW1  248   0.776   0.662   1.825  0.2746 -0.0065  1.0405
+   83SOL    HW2  249   0.847   0.528   1.822  0.1601 -0.0462 -0.1118
+   84SOL     OW  250   1.783   0.582   1.418  0.6465  0.6810  0.3160
+   84SOL    HW1  251   1.875   0.567   1.396  0.4674  0.4019 -0.2379
+   84SOL    HW2  252   1.784   0.663   1.469  1.2410  0.4910  0.6118
+   85SOL     OW  253   0.613   0.312   1.111  0.2122 -0.1926  0.0935
+   85SOL    HW1  254   0.548   0.299   1.042 -1.2204 -0.4568  1.4556
+   85SOL    HW2  255   0.683   0.250   1.090 -0.5503 -0.7886 -0.7088
+   86SOL     OW  256   0.672   0.064   0.643 -0.4134 -0.2417 -0.2832
+   86SOL    HW1  257   0.713   0.018   0.570  1.2261 -0.1055  0.5337
+   86SOL    HW2  258   0.745   0.093   0.698 -1.5062  1.5431  0.2971
+   87SOL     OW  259   0.944   0.065   0.742 -0.4039  0.1338 -0.1715
+   87SOL    HW1  260   0.972  -0.020   0.777 -1.0742  0.3828  0.9718
+   87SOL    HW2  261   1.010   0.086   0.676  0.5369 -0.6258  0.5115
+   88SOL     OW  262   1.518   1.398   0.544  0.3191  0.1672  0.1253
+   88SOL    HW1  263   1.542   1.340   0.617  1.3829 -3.0497 -2.6516
+   88SOL    HW2  264   1.585   1.383   0.478 -0.9695  2.5176 -1.7930
+   89SOL     OW  265   1.383   0.745   0.981  0.6221  0.4835 -0.5502
+   89SOL    HW1  266   1.424   0.776   1.062  0.3016  0.6178 -0.4363
+   89SOL    HW2  267   1.382   0.650   0.990  2.1328  0.3926 -1.1555
+   90SOL     OW  268   1.430   0.711   0.228 -0.5541 -0.2056 -0.2440
+   90SOL    HW1  269   1.484   0.752   0.161  1.4464 -1.4288  0.5632
+   90SOL    HW2  270   1.487   0.704   0.304 -2.0971 -0.8420  0.8945
+   91SOL     OW  271   0.594   1.349   0.251  0.4694 -0.3366 -0.1842
+   91SOL    HW1  272   0.504   1.319   0.264  0.4413 -0.5655 -0.8713
+   91SOL    HW2  273   0.591   1.399   0.170  0.3740  2.1788  1.3333
+   92SOL     OW  274   0.012   1.346   0.947 -0.5059  0.3559 -0.8179
+   92SOL    HW1  275   0.035   1.286   1.017 -1.8536  0.1320 -0.5600
+   92SOL    HW2  276   0.082   1.411   0.947 -0.5934  0.4480  0.8287
+   93SOL     OW  277   0.975   0.631   1.569  0.3983 -0.5427 -0.0867
+   93SOL    HW1  278   0.951   0.615   1.661  1.8703  0.5422  0.4925
+   93SOL    HW2  279   0.916   0.701   1.541  0.5134 -0.3107  0.2594
+   94SOL     OW  280   0.424   0.348   0.217  0.1101  0.2239 -0.2278
+   94SOL    HW1  281   0.386   0.282   0.276 -0.3617  0.8853  0.2184
+   94SOL    HW2  282   0.371   0.426   0.232  0.5477  0.6496 -0.8958
+   95SOL     OW  283   1.796   1.062   1.504  0.2695  0.6634 -0.0751
+   95SOL    HW1  284   1.834   0.988   1.550  1.3024  0.4717 -1.2049
+   95SOL    HW2  285   1.725   1.025   1.453  1.7321  0.1617 -1.8100
+   96SOL     OW  286   0.776   1.177   1.110 -0.1065  0.8948 -0.3445
+   96SOL    HW1  287   0.821   1.160   1.027 -0.7478 -1.4805 -0.2468
+   96SOL    HW2  288   0.783   1.095   1.158  1.2731  2.6040  2.4881
+   97SOL     OW  289   1.646   1.672   1.639 -0.7898 -0.2604 -0.5233
+   97SOL    HW1  290   1.620   1.703   1.726 -1.0611 -0.1904 -0.6292
+   97SOL    HW2  291   1.566   1.678   1.587  0.1940  3.0779 -1.7466
+   98SOL     OW  292   0.939   1.027   0.909  0.0792  0.1363  0.3449
+   98SOL    HW1  293   0.975   0.941   0.888  0.5802  0.7760 -1.5203
+   98SOL    HW2  294   0.899   1.057   0.828  0.0139  1.7174  0.9382
+   99SOL     OW  295   1.706   1.046   1.150 -0.0080  0.1842 -0.0903
+   99SOL    HW1  296   1.617   1.024   1.177  0.1120  1.5197  1.4922
+   99SOL    HW2  297   1.704   1.046   1.054 -1.3207 -1.2705 -0.0770
+  100SOL     OW  298   1.111   0.060   1.299  0.6560 -0.4016  0.2593
+  100SOL    HW1  299   1.057  -0.014   1.271  2.1510 -1.8943  1.2423
+  100SOL    HW2  300   1.161   0.083   1.221 -2.4139  1.9814 -1.1128
+  101SOL     OW  301   1.054   1.138   1.722 -0.5332 -0.8115 -0.1786
+  101SOL    HW1  302   0.985   1.166   1.783 -0.2649 -1.4601  0.4295
+  101SOL    HW2  303   1.121   1.206   1.729 -0.3829 -1.0225  0.4524
+  102SOL     OW  304   0.779   1.078   0.328  0.3264 -0.0895  0.3044
+  102SOL    HW1  305   0.689   1.092   0.359  0.3399  1.9332 -0.5641
+  102SOL    HW2  306   0.823   1.161   0.344  1.5363 -0.4619 -1.0674
+  103SOL     OW  307   0.597   1.033   1.410  0.5611 -0.0677 -0.1702
+  103SOL    HW1  308   0.652   1.088   1.466  1.5061 -0.8838 -0.2823
+  103SOL    HW2  309   0.659   0.982   1.358 -0.2060  2.0267 -3.3556
+  104SOL     OW  310   1.397   0.447   1.174 -0.2703 -0.3920  0.0860
+  104SOL    HW1  311   1.329   0.477   1.236 -1.9939  1.4621 -2.6202
+  104SOL    HW2  312   1.349   0.431   1.093  1.6783 -4.4843 -0.3707
+  105SOL     OW  313   0.342   1.754   1.444 -0.7895 -0.3252  0.5390
+  105SOL    HW1  314   0.432   1.725   1.434 -0.4843  0.8878 -0.3721
+  105SOL    HW2  315   0.289   1.686   1.404 -0.2417 -0.7319  0.5069
+  106SOL     OW  316   0.002   1.006   0.356 -0.0082 -0.1035  0.3071
+  106SOL    HW1  317  -0.063   0.996   0.287  1.1105 -0.6804 -0.6858
+  106SOL    HW2  318   0.085   0.984   0.314  0.8663  0.8560  1.4823
+  107SOL     OW  319   0.447   0.278   0.844  0.5699 -0.2726  0.1385
+  107SOL    HW1  320   0.353   0.299   0.848 -0.0268 -2.5891 -0.5926
+  107SOL    HW2  321   0.468   0.279   0.751  1.1462 -0.2559  0.2661
+  108SOL     OW  322   1.114   1.213   0.176 -0.5160  0.4537 -0.4754
+  108SOL    HW1  323   1.193   1.266   0.182 -0.1529  0.2045 -2.8947
+  108SOL    HW2  324   1.111   1.183   0.086 -2.4625 -0.9720  0.0273
+  109SOL     OW  325   1.481   1.728   1.247 -0.1655 -0.4445  0.5919
+  109SOL    HW1  326   1.396   1.723   1.205  0.8162  1.6705 -1.7794
+  109SOL    HW2  327   1.462   1.727   1.341 -2.6390 -1.7162  0.1293
+  110SOL     OW  328   1.138   0.825   0.006  0.3403 -0.2263  0.6843
+  110SOL    HW1  329   1.188   0.906   0.011  2.4061 -1.3404 -1.0926
+  110SOL    HW2  330   1.068   0.836   0.071  1.9808  1.9921  2.1470
+  111SOL     OW  331   0.413   1.587   1.126 -0.4510 -0.1948  0.2874
+  111SOL    HW1  332   0.451   1.503   1.103  0.8830  0.2222  0.9179
+  111SOL    HW2  333   0.357   1.569   1.201 -1.2876 -0.7672 -0.4700
+  112SOL     OW  334   0.578   0.590   1.601 -0.2121  0.4248  0.2637
+  112SOL    HW1  335   0.575   0.494   1.609  0.4014  0.1196 -2.8748
+  112SOL    HW2  336   0.523   0.621   1.673  1.0861 -2.2013  2.4997
+  113SOL     OW  337   0.002   0.779   1.615  0.7813 -0.7307 -0.2776
+  113SOL    HW1  338   0.016   0.699   1.667  3.4450 -0.3780 -0.3442
+  113SOL    HW2  339  -0.021   0.846   1.679  0.6986 -1.0630  0.0413
+  114SOL     OW  340   0.992   0.139   1.797  0.3564 -0.2052  0.2572
+  114SOL    HW1  341   1.059   0.117   1.732 -0.1788 -0.0542 -0.3569
+  114SOL    HW2  342   0.944   0.212   1.759  0.9191  0.7955  1.4597
+  115SOL     OW  343   0.241   0.160   1.602  0.4831 -0.1816 -0.7919
+  115SOL    HW1  344   0.156   0.128   1.634  0.3119  0.6631 -0.3942
+  115SOL    HW2  345   0.267   0.096   1.536 -1.5273  0.7510 -2.5467
+  116SOL     OW  346   0.586   0.808   1.228  0.2997 -0.4046 -0.1919
+  116SOL    HW1  347   0.602   0.794   1.321 -0.7320  0.6096  0.1501
+  116SOL    HW2  348   0.589   0.720   1.190 -0.6107 -0.9722  1.0146
+  117SOL     OW  349   1.289   1.008   0.944 -0.3185 -0.4256  0.0058
+  117SOL    HW1  350   1.228   0.995   1.016  1.2257 -0.3232  1.3683
+  117SOL    HW2  351   1.348   0.933   0.949 -0.2008 -0.4172 -1.1646
+  118SOL     OW  352   1.187   0.580   0.165  0.3280 -0.3664  0.3273
+  118SOL    HW1  353   1.275   0.613   0.184  0.3810 -0.8104  0.8781
+  118SOL    HW2  354   1.150   0.643   0.104  0.4595  0.6771  1.3106
+  119SOL     OW  355   0.128   0.363   1.323 -0.0700  0.0085 -0.1949
+  119SOL    HW1  356   0.163   0.288   1.275  0.8070  0.0786  0.3254
+  119SOL    HW2  357   0.200   0.392   1.379 -1.1518 -0.2325  1.3565
+  120SOL     OW  358   0.061   1.186   1.158  0.4563  0.0669  0.1443
+  120SOL    HW1  359   0.104   1.123   1.216  1.6294 -0.5795 -1.3865
+  120SOL    HW2  360  -0.028   1.154   1.150  0.8566 -1.0241 -0.0685
+  121SOL     OW  361   0.280   0.690   1.377  0.0612 -0.5249 -0.4113
+  121SOL    HW1  362   0.248   0.623   1.436  2.7647 -0.7044  0.9387
+  121SOL    HW2  363   0.354   0.649   1.331  1.8039  1.5013  0.5020
+  122SOL     OW  364   1.833   0.972   1.801 -0.2131 -0.4145  0.3714
+  122SOL    HW1  365   1.749   0.997   1.840 -1.2497  0.3115 -2.2315
+  122SOL    HW2  366   1.892   1.044   1.823 -0.9338  0.2591  0.1444
+  123SOL     OW  367   0.141   1.603   0.414  0.3883  0.0585  0.0978
+  123SOL    HW1  368   0.133   1.634   0.323  0.8960 -0.8732 -0.2699
+  123SOL    HW2  369   0.051   1.606   0.448 -0.0498 -1.0693 -0.9321
+  124SOL     OW  370   1.560   0.559   0.427 -0.0216  0.5022 -0.4211
+  124SOL    HW1  371   1.601   0.486   0.380 -2.0502 -0.9402 -0.0325
+  124SOL    HW2  372   1.511   0.517   0.498 -1.5476  2.2157 -0.4319
+  125SOL     OW  373   0.996   0.813   0.704 -0.1978  0.1388 -0.1498
+  125SOL    HW1  374   1.063   0.744   0.703  0.3067  0.6290 -1.7186
+  125SOL    HW2  375   0.913   0.766   0.693  0.0989 -0.2822 -0.6183
+  126SOL     OW  376   0.868   1.729   1.730  0.0281  0.1797 -0.7823
+  126SOL    HW1  377   0.942   1.789   1.717 -1.1948  1.9851  0.3784
+  126SOL    HW2  378   0.842   1.741   1.821 -0.0835 -2.3569 -0.4305
+  127SOL     OW  379   1.789   1.270   1.671 -0.4728  0.2798  0.3146
+  127SOL    HW1  380   1.723   1.273   1.741 -1.8178  2.0205 -0.9753
+  127SOL    HW2  381   1.770   1.190   1.624  0.7075 -1.1325  2.1509
+  128SOL     OW  382   0.429   1.108   1.723  0.1544 -0.3079  0.1986
+  128SOL    HW1  383   0.516   1.097   1.684 -0.4514  0.4598 -1.4119
+  128SOL    HW2  384   0.368   1.089   1.651 -0.9869  0.7867  0.8568
+  129SOL     OW  385   1.645   0.313   0.302 -0.6779 -0.2001 -0.2455
+  129SOL    HW1  386   1.704   0.328   0.228 -1.1186 -0.2033 -0.5945
+  129SOL    HW2  387   1.596   0.235   0.279 -0.5821 -0.3981  0.2017
+  130SOL     OW  388   0.911   0.913   1.641 -0.9318  0.4624 -0.7830
+  130SOL    HW1  389   0.949   0.979   1.583 -2.1402  1.7456 -0.1606
+  130SOL    HW2  390   0.986   0.867   1.678 -0.0066  2.4026 -0.1816
+  131SOL     OW  391   1.058   1.317   0.952 -0.8086 -0.0363 -0.2081
+  131SOL    HW1  392   1.003   1.272   0.889 -1.2713  0.1838  0.0344
+  131SOL    HW2  393   1.144   1.321   0.910 -1.2565  0.6379 -1.0784
+  132SOL     OW  394   0.511   1.081   0.739 -1.0025 -0.0666  0.1815
+  132SOL    HW1  395   0.447   1.108   0.805 -2.4376 -1.3233 -0.6516
+  132SOL    HW2  396   0.568   1.019   0.785 -0.2783  1.1289  0.9507
+  133SOL     OW  397   0.285   0.503   0.910 -0.4210  0.2898 -0.2476
+  133SOL    HW1  398   0.233   0.459   0.843  1.5523 -0.2180 -1.5119
+  133SOL    HW2  399   0.298   0.591   0.877 -0.0853  0.2705 -0.1709
+  134SOL     OW  400   0.674   0.539   0.187 -0.1741  0.3018  0.4115
+  134SOL    HW1  401   0.623   0.512   0.263  0.5879 -1.0290  0.4599
+  134SOL    HW2  402   0.764   0.515   0.208  0.3944  2.0605  0.0540
+  135SOL     OW  403   1.260   0.591   1.441 -0.0711 -0.3111  0.1552
+  135SOL    HW1  404   1.173   0.593   1.479 -0.1192 -1.3540  0.1238
+  135SOL    HW2  405   1.286   0.683   1.435 -1.8560  0.1173 -1.4502
+  136SOL     OW  406   1.148   0.087   1.574 -0.9736 -0.3746  0.3638
+  136SOL    HW1  407   1.181   0.176   1.561  1.7731 -1.2568  1.0305
+  136SOL    HW2  408   1.138   0.052   1.485  2.9650 -1.1229  0.1136
+  137SOL     OW  409   0.210   1.415   0.061 -0.2491 -0.4412  0.2942
+  137SOL    HW1  410   0.289   1.413   0.116 -0.5031 -0.3641  0.6618
+  137SOL    HW2  411   0.243   1.432  -0.027  0.0174  1.4375  0.7313
+  138SOL     OW  412   0.105   0.047   0.820  0.3959  0.2991  0.0300
+  138SOL    HW1  413   0.094   0.131   0.776 -0.9519 -0.6603 -1.5166
+  138SOL    HW2  414   0.190   0.015   0.790  0.8202  1.0145  0.4649
+  139SOL     OW  415   0.575   1.728   0.881 -0.3117  0.1583  0.4072
+  139SOL    HW1  416   0.542   1.639   0.896 -0.8514  0.5344  1.5039
+  139SOL    HW2  417   0.629   1.721   0.802  1.4058 -1.5886  1.7098
+  140SOL     OW  418   0.964   0.679   1.295  0.2869 -0.2653  0.7807
+  140SOL    HW1  419   0.968   0.634   1.380 -0.0459 -0.5819  0.6255
+  140SOL    HW2  420   0.908   0.624   1.241  1.1585 -0.4952  0.0927
+  141SOL     OW  421   0.038   0.532   1.056  0.4558  0.0500 -0.1209
+  141SOL    HW1  422   0.032   0.488   1.141  1.5562  1.7609  0.8655
+  141SOL    HW2  423   0.123   0.504   1.021  0.3521 -0.0328 -0.3071
+  142SOL     OW  424   0.421   0.753   0.165 -0.0407 -0.2100  0.1967
+  142SOL    HW1  425   0.436   0.844   0.141 -0.5029 -0.0369  0.5633
+  142SOL    HW2  426   0.509   0.717   0.178  0.1348  0.2213  0.2070
+  143SOL     OW  427   1.324   0.904   1.624  1.0762 -0.8165  0.4165
+  143SOL    HW1  428   1.329   0.928   1.716 -1.5403 -0.4747  0.5047
+  143SOL    HW2  429   1.236   0.931   1.596  2.4504  0.6983 -2.6520
+  144SOL     OW  430   0.732   0.704   0.718  0.0771  0.4227  0.0065
+  144SOL    HW1  431   0.709   0.614   0.743  0.0107  0.8290  1.4635
+  144SOL    HW2  432   0.700   0.757   0.790  0.6118  1.5690 -0.5968
+  145SOL     OW  433   1.583   0.679   1.262 -0.3123  0.9622 -0.3549
+  145SOL    HW1  434   1.557   0.609   1.201 -1.5669  1.4574 -0.3935
+  145SOL    HW2  435   1.652   0.639   1.315  0.4282  0.3518 -1.7523
+  146SOL     OW  436   0.528   1.467   1.839  0.3102  0.4490 -0.4735
+  146SOL    HW1  437   0.579   1.460   1.758 -0.3168 -0.4040 -0.8050
+  146SOL    HW2  438   0.442   1.434   1.816  0.4957 -1.0398  0.8606
+  147SOL     OW  439   0.840   0.459   1.175 -0.0390 -0.2074  0.0596
+  147SOL    HW1  440   0.892   0.425   1.247  1.2875  1.0698 -0.2676
+  147SOL    HW2  441   0.758   0.410   1.179  0.2575 -0.5741  2.0556
+  148SOL     OW  442   0.898   1.762   1.289 -0.0258 -0.3272  0.3500
+  148SOL    HW1  443   0.833   1.708   1.245  0.5574 -0.8435  0.1070
+  148SOL    HW2  444   0.851   1.801   1.363 -0.6747 -0.4782  0.0182
+  149SOL     OW  445   0.240   0.537   0.438  0.0973 -0.0193  0.0246
+  149SOL    HW1  446   0.236   0.629   0.414 -0.0976  0.8547  3.1703
+  149SOL    HW2  447   0.156   0.520   0.481  0.2380 -1.5922 -0.2902
+  150SOL     OW  448   0.167   1.257   1.465 -0.0175 -0.1640 -0.2819
+  150SOL    HW1  449   0.226   1.189   1.433  1.2020  1.3149 -1.2321
+  150SOL    HW2  450   0.091   1.209   1.499  2.0974 -2.1736  1.8520
+  151SOL     OW  451   1.448   0.931   1.184  0.1071  0.1399  0.1917
+  151SOL    HW1  452   1.365   0.938   1.232  0.5540  0.1868  0.9605
+  151SOL    HW2  453   1.495   0.860   1.227  0.2740 -0.1986 -0.5408
+  152SOL     OW  454   1.046   0.926   0.250 -0.6933 -0.1237  0.2538
+  152SOL    HW1  455   1.016   1.015   0.233 -1.1037 -0.7282 -2.3918
+  152SOL    HW2  456   0.981   0.891   0.312 -2.0415  0.5621 -0.7431
+  153SOL     OW  457   1.697   1.681   1.059 -0.2543 -0.7362  0.1995
+  153SOL    HW1  458   1.786   1.691   1.095 -0.3965  0.4371  0.2585
+  153SOL    HW2  459   1.641   1.677   1.137 -0.3755 -0.0992  0.1528
+  154SOL     OW  460   1.264   1.681   1.111  0.1793 -0.5189 -0.2497
+  154SOL    HW1  461   1.261   1.758   1.053  1.7480  0.1655  0.5563
+  154SOL    HW2  462   1.309   1.615   1.059 -1.8673 -1.1698 -1.2370
+  155SOL     OW  463   0.199   1.529   0.946  0.1219 -0.3495 -0.5337
+  155SOL    HW1  464   0.223   1.579   1.024  2.0497 -0.7833 -0.8147
+  155SOL    HW2  465   0.189   1.595   0.877  0.7406 -0.1690 -0.4524
+  156SOL     OW  466   0.413   1.850   0.088  0.6024 -0.0153  0.0548
+  156SOL    HW1  467   0.320   1.848   0.112  0.7607 -0.7892  0.5918
+  156SOL    HW2  468   0.418   1.798   0.008  0.7989 -1.1020  0.7781
+  157SOL     OW  469   0.748   1.654   0.109  0.0532 -0.2063 -0.2413
+  157SOL    HW1  470   0.692   1.593   0.061 -1.6524  1.2952 -0.2546
+  157SOL    HW2  471   0.687   1.715   0.150  1.6694  1.1019  0.2907
+  158SOL     OW  472   1.458   0.115   0.761  0.6646  0.0012 -0.3672
+  158SOL    HW1  473   1.436   0.025   0.739 -0.2017  0.1036  0.0692
+  158SOL    HW2  474   1.548   0.110   0.793  0.2372 -0.8712  0.7125
+  159SOL     OW  475   1.338   1.663   0.337  0.0918  0.0030 -0.3212
+  159SOL    HW1  476   1.244   1.654   0.324  0.3347  1.1393 -3.3671
+  159SOL    HW2  477   1.377   1.616   0.263  1.9313 -0.7064  1.0542
+  160SOL     OW  478   0.088   0.231   0.153 -0.1407  0.1993  0.6057
+  160SOL    HW1  479   0.016   0.278   0.110 -1.1478  0.7008  2.8087
+  160SOL    HW2  480   0.044   0.168   0.210  1.1963 -1.5358 -0.2335
+  161SOL     OW  481   1.283   0.951   0.550  0.0367 -0.4990 -0.2473
+  161SOL    HW1  482   1.362   0.897   0.559 -0.6926 -1.7377 -1.1492
+  161SOL    HW2  483   1.214   0.888   0.528 -1.0495  0.6751 -0.2095
+  162SOL     OW  484   0.885   1.501   1.606  0.3989 -0.2065 -0.0986
+  162SOL    HW1  485   0.812   1.459   1.652  0.5494  0.0827  0.4159
+  162SOL    HW2  486   0.879   1.593   1.632  0.6767 -0.1003 -0.4140
+  163SOL     OW  487   0.807   1.803   0.428  0.5850  0.0805  0.0023
+  163SOL    HW1  488   0.762   1.842   0.353 -0.3587 -0.2961  0.3542
+  163SOL    HW2  489   0.895   1.783   0.396  0.0905 -0.3758 -1.1018
+  164SOL     OW  490   1.804   1.664   1.361  0.4053 -0.6471  0.0447
+  164SOL    HW1  491   1.744   1.596   1.392  0.2468  0.3319  2.0102
+  164SOL    HW2  492   1.797   1.733   1.427  0.4871  1.3243 -1.9667
+  165SOL     OW  493   0.013   0.096   1.087 -0.1594 -0.2881 -0.0326
+  165SOL    HW1  494   0.082   0.103   1.154 -1.3044  2.4442  0.9139
+  165SOL    HW2  495   0.061   0.086   1.005  1.2950 -2.1038  0.9922
+  166SOL     OW  496   0.056   0.190   0.535 -0.8500 -0.0155 -0.2255
+  166SOL    HW1  497  -0.034   0.159   0.535 -1.0624  0.5389  1.8354
+  166SOL    HW2  498   0.058   0.259   0.469 -2.2319  0.8203  0.5893
+  167SOL     OW  499   1.309   1.603   0.061 -0.1846  0.2039 -0.0659
+  167SOL    HW1  500   1.221   1.598   0.023 -0.0875 -1.2432 -0.1217
+  167SOL    HW2  501   1.352   1.673   0.013 -1.4978  1.3326  0.3530
+  168SOL     OW  502   1.001   1.275   1.418  0.1961  0.2455 -0.5259
+  168SOL    HW1  503   0.975   1.323   1.340 -0.7940  0.1687 -0.2492
+  168SOL    HW2  504   0.991   1.338   1.490 -0.2898 -0.1090 -0.2771
+  169SOL     OW  505   0.869   1.045   0.628  0.0408 -0.0640  0.0010
+  169SOL    HW1  506   0.849   1.047   0.534 -0.4359  1.2988  0.1199
+  169SOL    HW2  507   0.928   0.971   0.638  0.1610 -0.1753 -1.3973
+  170SOL     OW  508   1.581   1.502   0.042  0.3486  0.5272 -0.6055
+  170SOL    HW1  509   1.536   1.586   0.051 -1.4792 -0.6154  1.4154
+  170SOL    HW2  510   1.669   1.518   0.078 -0.3017  1.3279  0.6445
+  171SOL     OW  511   0.163   1.528   1.312  0.0348  0.3933  0.2362
+  171SOL    HW1  512   0.147   1.436   1.331  1.0306 -0.3305 -2.3119
+  171SOL    HW2  513   0.078   1.570   1.325 -0.7793 -1.1381 -0.0225
+  172SOL     OW  514   1.732   1.393   1.356  0.1865 -0.2101  0.3886
+  172SOL    HW1  515   1.708   1.363   1.443 -1.7684 -1.3902 -0.5414
+  172SOL    HW2  516   1.774   1.318   1.315 -0.9957 -0.4001 -0.4945
+  173SOL     OW  517   1.219   1.169   0.712  0.7108  0.0799  0.3876
+  173SOL    HW1  518   1.239   1.106   0.781 -0.5986  0.3617  1.0436
+  173SOL    HW2  519   1.248   1.127   0.631 -0.0776 -1.3392  0.8280
+  174SOL     OW  520   0.916   1.795   0.997 -0.3173  0.5315 -0.6086
+  174SOL    HW1  521   0.927   1.762   1.087 -1.4594  1.0705 -0.2562
+  174SOL    HW2  522   0.870   1.724   0.951  0.2503  0.2632 -0.7627
+  175SOL     OW  523   0.692   1.417   0.534 -0.4818  0.1942  0.1468
+  175SOL    HW1  524   0.775   1.399   0.489 -0.5134 -0.7626  0.4633
+  175SOL    HW2  525   0.626   1.372   0.482 -0.3647 -1.9769  1.8356
+  176SOL     OW  526   1.596   0.304   1.445  0.3175 -0.3135 -0.3898
+  176SOL    HW1  527   1.601   0.229   1.386 -0.2043  0.2695 -1.1878
+  176SOL    HW2  528   1.664   0.364   1.414 -0.5382  0.3797 -0.9635
+  177SOL     OW  529   0.110   1.254   0.395  0.8718  0.0832 -0.2134
+  177SOL    HW1  530   0.064   1.171   0.384  1.1078  0.0548 -0.9772
+  177SOL    HW2  531   0.119   1.263   0.490 -2.4736  1.0684  0.0644
+  178SOL     OW  532   0.366   0.651   1.780 -0.3176 -0.4077  0.2699
+  178SOL    HW1  533   0.375   0.705   1.858  0.3938 -0.8403  0.4906
+  178SOL    HW2  534   0.371   0.561   1.813  0.6242 -0.5852 -0.3474
+  179SOL     OW  535   0.709   0.281   1.425 -0.2923 -0.3998 -0.3144
+  179SOL    HW1  536   0.703   0.185   1.419 -0.3200 -0.5026  1.1601
+  179SOL    HW2  537   0.803   0.298   1.433 -0.3159 -0.3427 -0.1457
+  180SOL     OW  538   1.778   0.392   0.025  0.1767  0.1091  0.2609
+  180SOL    HW1  539   1.709   0.415  -0.038  0.7657  1.2727  0.0323
+  180SOL    HW2  540   1.818   0.476   0.049  1.0650 -0.4929  0.9148
+  181SOL     OW  541   1.573   0.890   1.471  0.1204  0.8595  0.4310
+  181SOL    HW1  542   1.582   0.815   1.413  1.1199  1.7859 -0.6159
+  181SOL    HW2  543   1.492   0.872   1.520 -0.5716 -0.0790 -1.0080
+  182SOL     OW  544   1.797   0.031   0.294 -0.0270 -0.4136  0.4942
+  182SOL    HW1  545   1.793  -0.063   0.279 -0.9247  0.1595 -3.2590
+  182SOL    HW2  546   1.726   0.048   0.357 -0.0789 -2.1643  0.9253
+  183SOL     OW  547   1.286   1.295   1.789 -0.1058 -0.0729  0.2014
+  183SOL    HW1  548   1.312   1.386   1.777  2.5978 -0.4213  2.8308
+  183SOL    HW2  549   1.349   1.245   1.737  0.7367 -0.6255  1.7384
+  184SOL     OW  550   0.702   0.764   1.460  0.1077  0.2028  0.1007
+  184SOL    HW1  551   0.657   0.684   1.486 -1.0328  1.1151  0.9885
+  184SOL    HW2  552   0.735   0.800   1.543  0.7375  0.5908 -0.3136
+  185SOL     OW  553   1.472   1.539   0.971  0.3685  0.0007 -0.1396
+  185SOL    HW1  554   1.527   1.610   1.005  1.9000 -0.6298 -1.2404
+  185SOL    HW2  555   1.526   1.461   0.980 -1.2975 -1.0340  1.0200
+  186SOL     OW  556   0.796   0.342   1.743  0.0647  0.2087 -0.1905
+  186SOL    HW1  557   0.707   0.346   1.708 -0.3481  0.2139  0.8310
+  186SOL    HW2  558   0.785   0.316   1.835  1.1248  0.0596 -0.0939
+  187SOL     OW  559   1.487   1.196   1.625  0.4477  0.5894  0.6552
+  187SOL    HW1  560   1.548   1.170   1.694  2.1930  1.6754 -0.4105
+  187SOL    HW2  561   1.492   1.124   1.561 -0.7804 -0.1724  1.3911
+  188SOL     OW  562   0.315   1.419   1.668 -0.4269  0.4976  0.2966
+  188SOL    HW1  563   0.356   1.333   1.667 -1.1730  0.0661  2.6060
+  188SOL    HW2  564   0.233   1.407   1.620 -0.2799  0.0302  0.1602
+  189SOL     OW  565   0.000   0.814   1.008 -0.2210  0.1754 -0.2464
+  189SOL    HW1  566  -0.002   0.723   1.036  0.1164  0.1740 -0.2193
+  189SOL    HW2  567  -0.041   0.862   1.081  3.2990  0.5086  1.6467
+  190SOL     OW  568   1.032   0.288   0.415 -0.1519 -0.0754  0.3182
+  190SOL    HW1  569   0.963   0.222   0.421 -0.1008 -0.1269  0.3370
+  190SOL    HW2  570   1.089   0.257   0.345 -0.7622  0.5406 -0.4522
+  191SOL     OW  571   0.701   0.456   0.847 -0.4419  0.4681 -0.1803
+  191SOL    HW1  572   0.753   0.382   0.877  0.3932  0.7910 -0.8278
+  191SOL    HW2  573   0.610   0.427   0.857 -0.2297  0.7292  3.0945
+  192SOL     OW  574   1.627   0.171   1.737 -0.0843 -0.6683 -0.2299
+  192SOL    HW1  575   1.648   0.209   1.652 -1.2194  0.7121  0.0805
+  192SOL    HW2  576   1.644   0.241   1.800  0.3143 -1.5331  0.6388
+  193SOL     OW  577   0.323   0.958   1.510  0.8214  0.2761  0.1865
+  193SOL    HW1  578   0.400   0.939   1.457 -0.0335  0.5136 -1.1590
+  193SOL    HW2  579   0.255   0.898   1.478  0.1442  0.7849  0.6396
+  194SOL     OW  580   0.821   1.189   0.033  0.7230  0.2025  0.1811
+  194SOL    HW1  581   0.815   1.128   0.107 -1.5800  0.9849  0.6960
+  194SOL    HW2  582   0.784   1.270   0.067  0.5179  0.8440 -1.5475
+  195SOL     OW  583   0.715   1.616   1.172  0.3272  0.1027  0.1359
+  195SOL    HW1  584   0.756   1.581   1.093  1.3288 -0.8263  1.0564
+  195SOL    HW2  585   0.623   1.628   1.149  0.5732 -0.3826 -1.0964
+  196SOL     OW  586   1.505   1.805   1.833  0.0644 -0.5227 -0.2325
+  196SOL    HW1  587   1.540   1.873   1.775 -0.6363 -0.8056 -0.9864
+  196SOL    HW2  588   1.506   1.846   1.920  0.3753  0.1810 -0.5619
+  197SOL     OW  589   0.838   0.896   1.211 -0.4776 -0.5819  0.4604
+  197SOL    HW1  590   0.751   0.856   1.204 -0.7558  0.0597  0.2601
+  197SOL    HW2  591   0.885   0.839   1.272 -1.7175  0.2815  2.2857
+  198SOL     OW  592   1.331   1.018   0.010 -0.4672 -0.2101 -0.2947
+  198SOL    HW1  593   1.334   0.992   0.102 -1.0490 -0.1719 -0.2637
+  198SOL    HW2  594   1.328   1.113   0.011  1.4277 -0.1154 -0.4045
+  199SOL     OW  595   1.740   1.770   0.797  0.2027  0.2325 -0.0524
+  199SOL    HW1  596   1.736   1.738   0.887  2.6560 -0.4792 -0.1416
+  199SOL    HW2  597   1.811   1.835   0.798 -0.3223  0.8364 -1.2781
+  200SOL     OW  598   0.197   1.145   0.013  0.2240  0.8576  0.7433
+  200SOL    HW1  599   0.278   1.144  -0.037  0.6253  0.5874  1.3956
+  200SOL    HW2  600   0.177   1.238   0.025  0.3334  0.9227  0.4177
+  201SOL     OW  601   0.122   1.292   0.675 -0.3671  0.2154 -0.0378
+  201SOL    HW1  602   0.041   1.320   0.716 -0.5104 -0.4630  0.1516
+  201SOL    HW2  603   0.186   1.359   0.698 -0.4702 -0.0923  1.1957
+  202SOL     OW  604   0.657   1.362   1.581  0.1997 -0.5559 -0.0528
+  202SOL    HW1  605   0.666   1.268   1.596  1.2042 -0.5582 -0.6486
+  202SOL    HW2  606   0.667   1.373   1.486  0.4830  0.1893  0.0563
+  203SOL     OW  607   1.674   0.094   1.271  0.0036 -0.0188  0.0723
+  203SOL    HW1  608   1.766   0.107   1.246 -0.1186  1.3906  0.2757
+  203SOL    HW2  609   1.645   0.018   1.221  0.9219  0.2964 -0.9485
+  204SOL     OW  610   0.406   0.320   0.534 -0.3975  0.8945 -0.0319
+  204SOL    HW1  611   0.332   0.379   0.519 -0.5592 -0.0524 -3.3378
+  204SOL    HW2  612   0.378   0.237   0.494  0.8998 -0.6322  2.1519
+  205SOL     OW  613   1.602   1.329   0.808 -0.0543 -0.2794  0.0018
+  205SOL    HW1  614   1.539   1.298   0.873  0.0647  1.3093  0.8743
+  205SOL    HW2  615   1.685   1.292   0.836 -0.3532 -1.3058 -0.4265
+  206SOL     OW  616   0.504   0.525   1.274 -0.1373  0.6219  0.1464
+  206SOL    HW1  617   0.581   0.508   1.329 -0.1329  1.8063  0.5251
+  206SOL    HW2  618   0.504   0.454   1.210 -0.6928 -1.3916  2.2639
+  207SOL     OW  619   0.939   1.622   0.615  0.0376  0.2169 -0.8057
+  207SOL    HW1  620   0.864   1.660   0.569 -0.2825 -0.9206 -1.2431
+  207SOL    HW2  621   0.946   1.533   0.580  0.4289 -0.3187  0.5869
+  208SOL     OW  622   1.222   0.448   0.958  0.8093  0.1695  0.0716
+  208SOL    HW1  623   1.230   0.403   0.874 -0.7606 -2.3903  1.2470
+  208SOL    HW2  624   1.131   0.478   0.961  0.7570 -0.0912  1.0302
+  209SOL     OW  625   1.162   0.079   1.002 -0.1201  0.0294 -0.0134
+  209SOL    HW1  626   1.152   0.158   0.948 -1.6848 -0.0229  0.1683
+  209SOL    HW2  627   1.090   0.022   0.974  1.8094 -1.9202 -1.1086
+  210SOL     OW  628   0.951   1.274   0.372 -0.2479  0.5020 -0.2795
+  210SOL    HW1  629   1.002   1.247   0.297 -0.3032 -0.8555  0.1568
+  210SOL    HW2  630   1.015   1.296   0.439 -0.2177 -0.1231 -0.1009
+  211SOL     OW  631   0.570   1.596   1.430 -0.0067 -0.0669  0.2383
+  211SOL    HW1  632   0.637   1.550   1.379  0.2717 -0.1940  0.7151
+  211SOL    HW2  633   0.518   1.527   1.471 -1.0547  0.0175 -0.9171
+  212SOL     OW  634   1.490   0.038   0.235  0.3812 -0.5175  0.0030
+  212SOL    HW1  635   1.467  -0.050   0.265  1.2784 -0.8382 -0.2278
+  212SOL    HW2  636   1.472   0.095   0.309  0.9136 -1.0588  0.5495
+  213SOL     OW  637   1.274   0.440   0.514  0.3406 -0.4876 -0.2221
+  213SOL    HW1  638   1.201   0.390   0.477 -0.5303  0.5126  0.1369
+  213SOL    HW2  639   1.247   0.531   0.509  1.3323 -0.1447  0.4304
+  214SOL     OW  640   1.673   0.249   0.968  0.2535  0.0918  0.1841
+  214SOL    HW1  641   1.723   0.211   1.040 -0.3275 -0.9696  0.0332
+  214SOL    HW2  642   1.656   0.339   0.995  0.9016 -0.0077  0.9253
+  215SOL     OW  643   1.625   1.226   0.027  0.6308 -0.1048  0.8494
+  215SOL    HW1  644   1.594   1.313   0.049 -0.0604 -0.0212 -0.4190
+  215SOL    HW2  645   1.593   1.170   0.098  1.5560  0.7563  1.9532
+  216SOL     OW  646   1.002   1.711   0.243  0.1020 -0.6172  0.1515
+  216SOL    HW1  647   0.926   1.677   0.196  0.3933 -1.2573  0.1242
+  216SOL    HW2  648   0.988   1.805   0.248 -2.5080 -1.0870  3.3619
+    1CH4      C  649  -0.024  -0.222  -0.640  0.0000  0.0000  0.0000
+    1CH4     H1  650  -0.083  -0.303  -0.646  0.0000  0.0000  0.0000
+    1CH4     H2  651  -0.080  -0.140  -0.642  0.0000  0.0000  0.0000
+    1CH4     H3  652   0.040  -0.221  -0.716  0.0000  0.0000  0.0000
+    1CH4     H4  653   0.027  -0.225  -0.553  0.0000  0.0000  0.0000
+   1.86206   1.86206   1.86206
diff --git a/src/programs/mdrun/tests/spc216_with_methane.top b/src/programs/mdrun/tests/spc216_with_methane.top
new file mode 100644 (file)
index 0000000..10a8587
--- /dev/null
@@ -0,0 +1,33 @@
+#include "oplsaa.ff/forcefield.itp"
+
+[ atomtypes ]
+;name  at.num      mass        charge   ptype       sigma        epsilon
+  CH4    0          0.0        0.000       A        0.371        1.26
+
+#include "oplsaa.ff/spce.itp"
+
+[ moleculetype ]
+; Name            nrexcl
+ methane          3
+
+[ atoms ]
+;   nr       type  resnr residue  atom   cgnr     charge       mass
+     1   opls_138      1    METH     C      1      -0.24     12.011
+     2   opls_140      1    METH    H1      1       0.06      1.008
+     3   opls_140      1    METH    H2      1       0.06      1.008
+     4   opls_140      1    METH    H3      1       0.06      1.008
+     5   opls_140      1    METH    H4      1       0.06      1.008
+
+[ bonds ]
+;  ai    aj funct            c0            c1            c2            c3
+    1     2     1
+    1     3     1
+    1     4     1
+    1     5     1
+
+[ system ]
+Water and methane
+
+[ molecules ]
+SOL     216
+methane   1
diff --git a/src/programs/mdrun/tests/tpitest.cpp b/src/programs/mdrun/tests/tpitest.cpp
new file mode 100644 (file)
index 0000000..afc3198
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2018, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*! \internal \file
+ * \brief
+ * This implements basic TPI sanity test.
+ * It runs the input system with TPI for several steps, and checks the log output.
+ *
+ * \author Aleksei Iupinov <a.yupinov@gmail.com>
+ * \author Berk Hess <hess@kth.se>
+ * \ingroup module_mdrun_integration_tests
+ */
+#include "gmxpre.h"
+
+// FIXME: we should be properly enabling (or, for TPI, disabling) FP exceptions in mdrun, not here.
+// Remove this include and the exception toggling calls.
+#include "gromacs/math/utilities.h"
+#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/textreader.h"
+
+#include "testutils/refdata.h"
+#include "testutils/testasserts.h"
+
+#include "moduletest.h"
+
+namespace gmx
+{
+namespace test
+{
+namespace
+{
+
+/*! \brief A basic TPI runner.
+ * The only input parameter used currently: input system random seed (ld-seed).
+ */
+class TpiTest : public MdrunTestFixture,
+                public ::testing::WithParamInterface<int>
+{
+    public:
+        //! Runs the test with the given inputs
+        void runTest();
+};
+
+void TpiTest::runTest()
+{
+    runner_.useTopGroAndNdxFromDatabase("spc216_with_methane");
+    runner_.ndxFileName_ = "";
+    ASSERT_EQ(0, runner_.callGrompp());
+
+    gmx_fedisableexcept();
+
+    auto        rerunFileName = fileManager_.getInputFilePath("spc216.gro");
+    CommandLine commandLine;
+    commandLine.append("-rerun");
+    commandLine.append(rerunFileName);
+    ASSERT_EQ(0, runner_.callMdrun(commandLine));
+
+    gmx_feenableexcept();
+
+    const std::string    logFileContexts = TextReader::readFileToString(runner_.logFileName_);
+    const std::string    tpiOutputs      = logFileContexts.substr(logFileContexts.find("Started Test Particle Insertion"));
+
+    TestReferenceData    refData;
+    TestReferenceChecker checker(refData.rootChecker());
+
+    // Output values, their output patterns and relative tolerances (empirical)
+    const std::map<std::string, std::pair<std::string, double> > valuesToCheck = {
+        {"V", {"<V>  =", 1e-10}},
+        {"mu", {"<mu> =", 1e-3}}
+    };
+
+    for (const auto &valueDesc : valuesToCheck)
+    {
+        const auto &name              = valueDesc.first;
+        const auto &pattern           = valueDesc.second.first;
+        const auto &relativeTolerance = valueDesc.second.second;
+        auto        startIndex        = tpiOutputs.find(pattern);
+        ASSERT_NE(startIndex, std::string::npos);
+        startIndex += pattern.size();
+        const double actualValue = std::stod(tpiOutputs.substr(startIndex));
+        checker.setDefaultTolerance(relativeToleranceAsFloatingPoint(actualValue, relativeTolerance));
+        checker.checkDouble(actualValue, name.c_str());
+    }
+}
+
+TEST_P(TpiTest, ReproducesOutput)
+{
+    const int         randomSeed  = GetParam();
+
+    const int         nsteps          = 200;
+    const std::string mdpFileContents = formatString(R"(
+        integrator               = tpi
+        ld-seed                  = %d
+        rtpi                     = 0.05
+        nstlog                   = 0
+        nstenergy                = 0
+        cutoff-scheme            = group
+        nstlist                  = 10
+        ns_type                  = grid
+        rlist                    = 0.9
+        coulombtype              = reaction-field
+        rcoulomb                 = 0.9
+        epsilon-r                = 1
+        epsilon-rf               = 0
+        vdw-type                 = cut-off
+        rvdw                     = 0.9
+        Tcoupl                   = no
+        tc-grps                  = System
+        tau_t                    = 0.5
+        ref_t                    = 298
+        nsteps                   = %d
+    )", randomSeed, nsteps);
+
+    runner_.useStringAsMdpFile(mdpFileContents);
+    runTest();
+}
+
+INSTANTIATE_TEST_CASE_P(Simple, TpiTest, ::testing::Values(1993, 2994));
+
+}
+}
+}