Precision fix for rescbt code.
authorDavid van der Spoel <spoel@xray.bmc.uu.se>
Wed, 13 Feb 2019 19:13:58 +0000 (20:13 +0100)
committerDavid van der Spoel <spoel@xray.bmc.uu.se>
Mon, 18 Feb 2019 08:08:42 +0000 (09:08 +0100)
The compute_restangles function was not sufficiently
precise. In fact it return completely different
results in single and double precision. By making part
of the function work in double the issue is fixed.

New tests added.

Part of #2795
Fixes #2862

Change-Id: Iad7f2bc45be996ba3e16358aab838c5427b157b8

22 files changed:
src/gromacs/listed_forces/bonded.cpp
src/gromacs/listed_forces/restcbt.cpp
src/gromacs/listed_forces/restcbt.h
src/gromacs/listed_forces/tests/bonded.cpp
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_36.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_37.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_38.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_39.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_40.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_41.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_42.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_43.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_44.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_45.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_46.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_47.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_48.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_49.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_50.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_51.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_52.xml [new file with mode: 0644]
src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_53.xml [new file with mode: 0644]

index 8c03e0a29ab7572931e766648a0024c5fac88820..7c4f176ee8fe713082e3e90670c01293c3011420 100644 (file)
@@ -2429,13 +2429,13 @@ real restrangles(int nbonds,
                  const t_mdatoms gmx_unused *md, t_fcdata gmx_unused *fcd,
                  int gmx_unused *global_atom_index)
 {
-    int  i, d, ai, aj, ak, type, m;
-    int  t1, t2;
-    real v, vtot;
-    ivec jt, dt_ij, dt_kj;
-    rvec f_i, f_j, f_k;
-    real prefactor, ratio_ante, ratio_post;
-    rvec delta_ante, delta_post, vec_temp;
+    int    i, d, ai, aj, ak, type, m;
+    int    t1, t2;
+    real   v, vtot;
+    ivec   jt, dt_ij, dt_kj;
+    rvec   f_i, f_j, f_k;
+    double prefactor, ratio_ante, ratio_post;
+    rvec   delta_ante, delta_post, vec_temp;
 
     vtot = 0.0;
     for (i = 0; (i < nbonds); )
index 6e88355ff27285d6f285be24e8d1560b5d293522..01d0a67ea5b27ba2cd4bbacc5f0d2b6bac7b8231 100644 (file)
 
 void compute_factors_restangles(int type, const t_iparams forceparams[],
                                 rvec delta_ante,  rvec delta_post,
-                                real *prefactor, real *ratio_ante, real *ratio_post, real *v)
+                                double *prefactor, double *ratio_ante, double *ratio_post, real *v)
 {
-    real theta_equil, k_bending;
-    real cosine_theta_equil;
-    real c_ante, c_cros, c_post;
-    real norm;
-    real delta_cosine, cosine_theta;
-    real sine_theta_sq;
-    real term_theta_theta_equil;
+    // These variables are double to make the code
+    // reproducible.
+    double theta_equil, k_bending;
+    double cosine_theta_equil;
+    double c_ante, c_cros, c_post;
+    double norm;
+    double delta_cosine, cosine_theta;
+    double sine_theta_sq;
+    double term_theta_theta_equil;
 
     k_bending          = forceparams[type].harmonic.krA;
     theta_equil        =  forceparams[type].harmonic.rA*DEG2RAD;
index 56dca730fe5d6059bb3a7b5e025a10a099fa057e..6670abd2e0eb685a9f6c4b4c8899fa24555cf88a 100644 (file)
@@ -79,7 +79,7 @@
 
 void compute_factors_restangles(int type, const t_iparams forceparams[],
                                 rvec delta_ante,  rvec delta_post,
-                                real *prefactor, real *ratio_ante, real *ratio_post, real *v);
+                                double *prefactor, double *ratio_ante, double *ratio_post, real *v);
 
 
 /*! \brief Compute factors for restricted dihedral potentials.
index a2f0158389f7e0d5d9922d9102538cae79c95520..80cbd03d05577c1d99e7e291bb6704416c0b2516 100644 (file)
@@ -660,8 +660,8 @@ std::vector<iListInput> c_InputRestraints =
     { iListInput(1e-4, 1e-8).setPDihedrals(F_ANGRES, -105.0, 15.0, 2) },
     { iListInput(1e-4, 1e-8).setPDihedrals(F_ANGRESZ, -100.0, 10.0, 2, -80.0, 20.0) },
     { iListInput(1e-4, 1e-8).setPDihedrals(F_ANGRESZ, -105.0, 15.0, 2) },
-    //{ iListInput(2e-3, 1e-8).setHarmonic(F_RESTRANGLES, 100.0, 50.0) },
-    //{ iListInput(2e-3, 1e-8).setHarmonic(F_RESTRANGLES, 100.0, 50.0, 110.0, 45.0) }
+    { iListInput(2e-3, 1e-8).setHarmonic(F_RESTRANGLES, 100.0, 50.0) },
+    { iListInput(2e-3, 1e-8).setHarmonic(F_RESTRANGLES, 100.0, 50.0, 110.0, 45.0) }
 };
 
 //! Coordinates for testing
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_36.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_36.xml
new file mode 100644 (file)
index 0000000..458842d
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">13793.486079955308</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">-7.1054273576010019e-15</Real>
+        <Real Name="Y">5.6843418860808015e-14</Real>
+        <Real Name="Z">-7.6833543971588369e-09</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">-2761787.8827562206</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-2748083.9432400633</Real>
+          <Real Name="Y">643.09135302869788</Real>
+          <Real Name="Z">-275493.59129982314</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">5509923.1808657609</Real>
+          <Real Name="Y">-963.09638345872963</Real>
+          <Real Name="Z">275170.50497721677</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-51.354869477236797</Real>
+          <Real Name="Y">320.00503043003181</Real>
+          <Real Name="Z">323.08632259866607</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_37.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_37.xml
new file mode 100644 (file)
index 0000000..458842d
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">13793.486079955308</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">-7.1054273576010019e-15</Real>
+        <Real Name="Y">5.6843418860808015e-14</Real>
+        <Real Name="Z">-7.6833543971588369e-09</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">-2761787.8827562206</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-2748083.9432400633</Real>
+          <Real Name="Y">643.09135302869788</Real>
+          <Real Name="Z">-275493.59129982314</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">5509923.1808657609</Real>
+          <Real Name="Y">-963.09638345872963</Real>
+          <Real Name="Z">275170.50497721677</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-51.354869477236797</Real>
+          <Real Name="Y">320.00503043003181</Real>
+          <Real Name="Z">323.08632259866607</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_38.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_38.xml
new file mode 100644 (file)
index 0000000..458842d
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">13793.486079955308</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">-7.1054273576010019e-15</Real>
+        <Real Name="Y">5.6843418860808015e-14</Real>
+        <Real Name="Z">-7.6833543971588369e-09</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">-2761787.8827562206</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-2748083.9432400633</Real>
+          <Real Name="Y">643.09135302869788</Real>
+          <Real Name="Z">-275493.59129982314</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">5509923.1808657609</Real>
+          <Real Name="Y">-963.09638345872963</Real>
+          <Real Name="Z">275170.50497721677</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-51.354869477236797</Real>
+          <Real Name="Y">320.00503043003181</Real>
+          <Real Name="Z">323.08632259866607</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_39.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_39.xml
new file mode 100644 (file)
index 0000000..ca8d6dd
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">28.457808166910006</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">0</Real>
+        <Real Name="Y">1.7053025658242404e-13</Real>
+        <Real Name="Z">1.1368683772161603e-13</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">441.19351846675175</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">-441.19351846675227</Real>
+          <Real Name="Z">6.8212102632969618e-13</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">6.8212102632969618e-13</Real>
+          <Real Name="Z">601.62752518193292</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">-601.62752518193349</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_40.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_40.xml
new file mode 100644 (file)
index 0000000..ca8d6dd
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">28.457808166910006</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">0</Real>
+        <Real Name="Y">1.7053025658242404e-13</Real>
+        <Real Name="Z">1.1368683772161603e-13</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">441.19351846675175</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">-441.19351846675227</Real>
+          <Real Name="Z">6.8212102632969618e-13</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">6.8212102632969618e-13</Real>
+          <Real Name="Z">601.62752518193292</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">-601.62752518193349</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_41.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_41.xml
new file mode 100644 (file)
index 0000000..ca8d6dd
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">28.457808166910006</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">0</Real>
+        <Real Name="Y">1.7053025658242404e-13</Real>
+        <Real Name="Z">1.1368683772161603e-13</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">441.19351846675175</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">-441.19351846675227</Real>
+          <Real Name="Z">6.8212102632969618e-13</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">6.8212102632969618e-13</Real>
+          <Real Name="Z">601.62752518193292</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">0</Real>
+          <Real Name="Y">0</Real>
+          <Real Name="Z">-601.62752518193349</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_42.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_42.xml
new file mode 100644 (file)
index 0000000..63eabbc
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">181.72792025950673</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">4.5474735088646412e-13</Real>
+        <Real Name="Y">-4.5474735088646412e-13</Real>
+        <Real Name="Z">0</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">105.65070375739712</Real>
+          <Real Name="Y">-168.65747820489509</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-3076.5687111064121</Real>
+          <Real Name="Y">-5986.1289531038201</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-336.58711384843497</Real>
+          <Real Name="Y">3364.8371236971734</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">3307.5051211974505</Real>
+          <Real Name="Y">2789.9493076115414</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_43.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_43.xml
new file mode 100644 (file)
index 0000000..63eabbc
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">181.72792025950673</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">4.5474735088646412e-13</Real>
+        <Real Name="Y">-4.5474735088646412e-13</Real>
+        <Real Name="Z">0</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">105.65070375739712</Real>
+          <Real Name="Y">-168.65747820489509</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-3076.5687111064121</Real>
+          <Real Name="Y">-5986.1289531038201</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-336.58711384843497</Real>
+          <Real Name="Y">3364.8371236971734</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">3307.5051211974505</Real>
+          <Real Name="Y">2789.9493076115414</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_44.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_44.xml
new file mode 100644 (file)
index 0000000..63eabbc
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="No">
+      <Real Name="Epot ">181.72792025950673</Real>
+      <Real Name="dVdlambda ">0</Real>
+      <Vector Name="Central shift forces">
+        <Real Name="X">4.5474735088646412e-13</Real>
+        <Real Name="Y">-4.5474735088646412e-13</Real>
+        <Real Name="Z">0</Real>
+      </Vector>
+      <Sequence Name="Forces">
+        <Int Name="Length">4</Int>
+        <Vector>
+          <Real Name="X">105.65070375739712</Real>
+          <Real Name="Y">-168.65747820489509</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-3076.5687111064121</Real>
+          <Real Name="Y">-5986.1289531038201</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">-336.58711384843497</Real>
+          <Real Name="Y">3364.8371236971734</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Vector>
+          <Real Name="X">3307.5051211974505</Real>
+          <Real Name="Y">2789.9493076115414</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+      </Sequence>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_45.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_45.xml
new file mode 100644 (file)
index 0000000..8605cec
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_46.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_46.xml
new file mode 100644 (file)
index 0000000..8605cec
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_47.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_47.xml
new file mode 100644 (file)
index 0000000..8605cec
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">13793.486079955308</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">-7.1054273576010019e-15</Real>
+          <Real Name="Y">5.6843418860808015e-14</Real>
+          <Real Name="Z">-7.6833543971588369e-09</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">-2761787.8827562206</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-2748083.9432400633</Real>
+            <Real Name="Y">643.09135302869788</Real>
+            <Real Name="Z">-275493.59129982314</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">5509923.1808657609</Real>
+            <Real Name="Y">-963.09638345872963</Real>
+            <Real Name="Z">275170.50497721677</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-51.354869477236797</Real>
+            <Real Name="Y">320.00503043003181</Real>
+            <Real Name="Z">323.08632259866607</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_48.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_48.xml
new file mode 100644 (file)
index 0000000..96c6aed
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_49.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_49.xml
new file mode 100644 (file)
index 0000000..96c6aed
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_50.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_50.xml
new file mode 100644 (file)
index 0000000..96c6aed
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">28.457808166910006</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">0</Real>
+          <Real Name="Y">1.7053025658242404e-13</Real>
+          <Real Name="Z">1.1368683772161603e-13</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">441.19351846675175</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">-441.19351846675227</Real>
+            <Real Name="Z">6.8212102632969618e-13</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">6.8212102632969618e-13</Real>
+            <Real Name="Z">601.62752518193292</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">0</Real>
+            <Real Name="Y">0</Real>
+            <Real Name="Z">-601.62752518193349</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_51.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_51.xml
new file mode 100644 (file)
index 0000000..287aca8
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_52.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_52.xml
new file mode 100644 (file)
index 0000000..287aca8
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>
diff --git a/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_53.xml b/src/gromacs/listed_forces/tests/refdata/Restraints_ListedForcesTest_Ifunc_53.xml
new file mode 100644 (file)
index 0000000..287aca8
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <FunctionType Name="RESTRANGLES">
+    <FEP Name="Yes">
+      <Lambda Name="0">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="0.5">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+      <Lambda Name="1">
+        <Real Name="Epot ">181.72792025950673</Real>
+        <Real Name="dVdlambda ">0</Real>
+        <Vector Name="Central shift forces">
+          <Real Name="X">4.5474735088646412e-13</Real>
+          <Real Name="Y">-4.5474735088646412e-13</Real>
+          <Real Name="Z">0</Real>
+        </Vector>
+        <Sequence Name="Forces">
+          <Int Name="Length">4</Int>
+          <Vector>
+            <Real Name="X">105.65070375739712</Real>
+            <Real Name="Y">-168.65747820489509</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-3076.5687111064121</Real>
+            <Real Name="Y">-5986.1289531038201</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">-336.58711384843497</Real>
+            <Real Name="Y">3364.8371236971734</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+          <Vector>
+            <Real Name="X">3307.5051211974505</Real>
+            <Real Name="Y">2789.9493076115414</Real>
+            <Real Name="Z">0</Real>
+          </Vector>
+        </Sequence>
+      </Lambda>
+    </FEP>
+  </FunctionType>
+</ReferenceData>