Add tests for old gmx energy functionality
authorMark Abraham <mark.j.abraham@gmail.com>
Thu, 19 Jan 2017 20:58:23 +0000 (21:58 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Mon, 20 Feb 2017 12:39:46 +0000 (13:39 +0100)
Imported the edr and tpr files from the proposed new energyanalysis
tests so that we can observe that the old and new code are materially
the same, so we have a more stable change process for the large amount
of new code.

Extended gmx energy temporarily so that Einstein viscosity output
files are not hard coded (otherwise writing them in tests spams
output files).

Memory leak in inputrec.cpp was fixed (that only was detected
due to the dhdl test). A number of memory leaks in gmx_energy
were fixed as well.

Change-Id: I374b04bb20bb99df344b5b60a315b82c8c28828d

15 files changed:
src/gromacs/CMakeLists.txt
src/gromacs/energyanalysis/CMakeLists.txt [new file with mode: 0644]
src/gromacs/energyanalysis/tests/CMakeLists.txt [new file with mode: 0644]
src/gromacs/energyanalysis/tests/dhdl.edr [new file with mode: 0644]
src/gromacs/energyanalysis/tests/dhdl.tpr [new file with mode: 0644]
src/gromacs/energyanalysis/tests/ener.edr [new file with mode: 0644]
src/gromacs/energyanalysis/tests/legacyenergy.cpp [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/DhdlTest_ExtractDhdl.xml [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergy.xml [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyByNumber.xml [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyMixed.xml [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosity.xml [new file with mode: 0644]
src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosityIntegral.xml [new file with mode: 0644]
src/gromacs/gmxana/gmx_energy.cpp
src/gromacs/mdtypes/inputrec.cpp

index 65f2ac435360c91ea2ccf0d6d497b630ed4d5180..a553585861341b1565e42da88e11ce50b282371a 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2010,2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
+# Copyright (c) 2010,2011,2012,2013,2014,2015,2016,2017, 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.
@@ -106,6 +106,7 @@ if (NOT GMX_BUILD_MDRUN_ONLY)
     add_subdirectory(analysisdata)
     add_subdirectory(selection)
     add_subdirectory(trajectoryanalysis)
+    add_subdirectory(energyanalysis)
     add_subdirectory(tools)
 endif()
 
diff --git a/src/gromacs/energyanalysis/CMakeLists.txt b/src/gromacs/energyanalysis/CMakeLists.txt
new file mode 100644 (file)
index 0000000..16d0fa0
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2014,2015,2016,2017, 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.
+
+if (BUILD_TESTING)
+    add_subdirectory(tests)
+endif()
diff --git a/src/gromacs/energyanalysis/tests/CMakeLists.txt b/src/gromacs/energyanalysis/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5665a35
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2014,2015,2016,2017, 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.
+
+gmx_add_unit_test(EnergyAnalysisUnitTests energyanalysis-test
+        legacyenergy.cpp
+)
diff --git a/src/gromacs/energyanalysis/tests/dhdl.edr b/src/gromacs/energyanalysis/tests/dhdl.edr
new file mode 100644 (file)
index 0000000..e70053f
Binary files /dev/null and b/src/gromacs/energyanalysis/tests/dhdl.edr differ
diff --git a/src/gromacs/energyanalysis/tests/dhdl.tpr b/src/gromacs/energyanalysis/tests/dhdl.tpr
new file mode 100644 (file)
index 0000000..8084b18
Binary files /dev/null and b/src/gromacs/energyanalysis/tests/dhdl.tpr differ
diff --git a/src/gromacs/energyanalysis/tests/ener.edr b/src/gromacs/energyanalysis/tests/ener.edr
new file mode 100644 (file)
index 0000000..987f81a
Binary files /dev/null and b/src/gromacs/energyanalysis/tests/ener.edr differ
diff --git a/src/gromacs/energyanalysis/tests/legacyenergy.cpp b/src/gromacs/energyanalysis/tests/legacyenergy.cpp
new file mode 100644 (file)
index 0000000..3722065
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2017, 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
+ * Tests for gmx energy
+ *
+ * \todo These will be superseded by tests of the energyanalysis
+ * modules.
+ *
+ * \author Mark Abraham <mark.j.abraham@gmail.com>
+ */
+
+#include "gmxpre.h"
+
+#include <cstring>
+
+#include <string>
+
+#include "gromacs/gmxana/gmx_ana.h"
+#include "gromacs/utility/filestream.h"
+#include "gromacs/utility/path.h"
+
+#include "testutils/cmdlinetest.h"
+#include "testutils/integrationtests.h"
+#include "testutils/refdata.h"
+#include "testutils/testasserts.h"
+#include "testutils/xvgtest.h"
+
+namespace gmx
+{
+namespace test
+{
+namespace
+{
+
+class DhdlTest : public IntegrationTestFixture
+{
+    public:
+        DhdlTest() : data_(), checker_(data_.rootChecker()) {}
+
+        void runTest()
+        {
+            CommandLine caller;
+            caller.append("energy");
+
+            caller.addOption("-s", fileManager_.getInputFilePath("dhdl.tpr"));
+            caller.addOption("-f", fileManager_.getInputFilePath("dhdl.edr"));
+
+            std::string xvgFileName = fileManager_.getTemporaryFilePath("dhdl.xvg");
+            caller.addOption("-odh", xvgFileName);
+
+            EXPECT_EQ(0, gmx_energy(caller.argc(), caller.argv()));
+
+            EXPECT_TRUE(Path::exists(xvgFileName));
+            TextInputFile    xvgFile(xvgFileName);
+            XvgMatchSettings settings;
+            auto             outputFilesChecker = checker_.checkCompound("OutputFiles", "Files");
+            auto             fileChecker        = outputFilesChecker.checkCompound("File", "-o");
+            checkXvgFile(&xvgFile, &fileChecker, settings);
+        }
+
+        TestReferenceData    data_;
+        TestReferenceChecker checker_;
+};
+
+TEST_F(DhdlTest, ExtractDhdl)
+{
+    runTest();
+}
+
+class EnergyTest : public IntegrationTestFixture
+{
+    public:
+        EnergyTest() : data_(), checker_(data_.rootChecker()) {}
+
+        void runTest(const char *stringForStdin)
+        {
+            CommandLine caller;
+            caller.append("energy");
+
+            caller.addOption("-f", fileManager_.getInputFilePath("ener.edr"));
+
+            std::string xvgFileName = fileManager_.getTemporaryFilePath("energy.xvg");
+            caller.addOption("-o", xvgFileName);
+
+            redirectStringToStdin(stringForStdin);
+            EXPECT_EQ(0, gmx_energy(caller.argc(), caller.argv()));
+
+            EXPECT_TRUE(Path::exists(xvgFileName));
+            TextInputFile    xvgFile(xvgFileName);
+            XvgMatchSettings settings;
+            auto             outputFilesChecker = checker_.checkCompound("OutputFiles", "Files");
+            auto             fileChecker        = outputFilesChecker.checkCompound("File", "-o");
+            checkXvgFile(&xvgFile, &fileChecker, settings);
+        }
+
+        TestReferenceData    data_;
+        TestReferenceChecker checker_;
+};
+
+TEST_F(EnergyTest, ExtractEnergy)
+{
+    runTest("Potential\nKinetic-En.\nTotal-Energy\n");
+}
+
+TEST_F(EnergyTest, ExtractEnergyByNumber)
+{
+    runTest("4 6 9");
+}
+
+TEST_F(EnergyTest, ExtractEnergyMixed)
+{
+    runTest("Pressu\n7\nbox-z\nvol\n");
+}
+
+class ViscosityTest : public IntegrationTestFixture
+{
+    public:
+        ViscosityTest() : data_(), checker_(data_.rootChecker()) {}
+
+        std::string addFileToTest(CommandLine *caller,
+                                  const char  *optionName,
+                                  const char  *outputFileName)
+        {
+            std::string xvgFileName = fileManager_.getTemporaryFilePath(outputFileName);
+            caller->addOption(optionName, xvgFileName);
+            return xvgFileName;
+        }
+
+        void runTest(const char *optionName,
+                     const char *outputFileName)
+        {
+            CommandLine caller;
+            caller.append("energy");
+
+            caller.addOption("-f", fileManager_.getInputFilePath("ener.edr"));
+            caller.addOption("-vis", fileManager_.getTemporaryFilePath("visco.xvg"));
+
+            std::string xvgFileNameToTest;
+
+            /* -vis can write a lot of non-conditional output files,
+                so we use temporary paths to clean up files that are
+                not the ones being tested in this test */
+            if (0 == std::strcmp(optionName, "-evisco"))
+            {
+                xvgFileNameToTest = addFileToTest(&caller, optionName, outputFileName);
+            }
+            else
+            {
+                caller.addOption("-evisco", fileManager_.getTemporaryFilePath("evisco"));
+            }
+            if (0 == std::strcmp(optionName, "-eviscoi"))
+            {
+                xvgFileNameToTest = addFileToTest(&caller, optionName, outputFileName);
+            }
+            else
+            {
+                caller.addOption("-eviscoi", fileManager_.getTemporaryFilePath("eviscoi"));
+            }
+            if (0 == std::strcmp(optionName, "-corr"))
+            {
+                xvgFileNameToTest = addFileToTest(&caller, optionName, outputFileName);
+            }
+            else
+            {
+                caller.addOption("-corr", fileManager_.getTemporaryFilePath("enecorr"));
+            }
+
+            caller.addOption("-o", fileManager_.getTemporaryFilePath("energy"));
+
+            EXPECT_EQ(0, gmx_energy(caller.argc(), caller.argv()));
+
+            EXPECT_TRUE(Path::exists(xvgFileNameToTest));
+            TextInputFile    xvgFile(xvgFileNameToTest);
+            XvgMatchSettings settings;
+            settings.tolerance = relativeToleranceAsFloatingPoint(1e-4, 1e-5);
+            auto             outputFilesChecker = checker_.checkCompound("OutputFiles", "Files");
+            auto             fileChecker        = outputFilesChecker.checkCompound("File", "-o");
+            checkXvgFile(&xvgFile, &fileChecker, settings);
+        }
+
+        TestReferenceData    data_;
+        TestReferenceChecker checker_;
+};
+
+TEST_F(ViscosityTest, EinsteinViscosity)
+{
+    runTest("-evisco", "evisco.xvg");
+}
+
+TEST_F(ViscosityTest, EinsteinViscosityIntegral)
+{
+    runTest("-eviscoi", "eviscoi.xvg");
+}
+
+} // namespace
+} // namespace
+} // namespace
diff --git a/src/gromacs/energyanalysis/tests/refdata/DhdlTest_ExtractDhdl.xml b/src/gromacs/energyanalysis/tests/refdata/DhdlTest_ExtractDhdl.xml
new file mode 100644 (file)
index 0000000..994a0b6
--- /dev/null
@@ -0,0 +1,1239 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "dH/d\xl\f{} and \xD\f{}H"
+xaxis  label "Time (ps)"
+yaxis  label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)"
+TYPE xy
+subtitle "T = 300 (K) \xl\f{} state 0: (mass-lambda, coul-lambda, vdw-lambda, bonded-lambda, restraint-lambda) = (0.0000, 0.0000, 0.0000, 0.0000, 0.0000)"
+s0 legend "Total Energy (kJ/mol)"
+s1 legend "dH/d\xl\f{} mass-lambda = 0.0000"
+s2 legend "dH/d\xl\f{} coul-lambda = 0.0000"
+s3 legend "dH/d\xl\f{} vdw-lambda = 0.0000"
+s4 legend "dH/d\xl\f{} bonded-lambda = 0.0000"
+s5 legend "dH/d\xl\f{} restraint-lambda = 0.0000"
+s6 legend "\xD\f{}H \xl\f{} to (0.0000, 0.0000, 0.0000, 0.0000, 0.0000)"
+s7 legend "\xD\f{}H \xl\f{} to (0.0000, 0.0000, 0.0500, 0.0000, 0.0000)"
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">9</Int>
+          <Real>0.0000</Real>
+          <Real>18390.227</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-196.12737</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-13.036427</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">9</Int>
+          <Real>0.0100</Real>
+          <Real>21152.699</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-35.961620</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-2.2861712</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">9</Int>
+          <Real>0.0200</Real>
+          <Real>21066.111</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.7135231</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.017940877</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">9</Int>
+          <Real>0.0300</Real>
+          <Real>19459.748</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>7.3273606</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.29574844</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">9</Int>
+          <Real>0.0400</Real>
+          <Real>19005.387</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>6.0574341</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.22905751</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">9</Int>
+          <Real>0.0500</Real>
+          <Real>18289.822</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.3447599</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.19143827</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">9</Int>
+          <Real>0.0600</Real>
+          <Real>17736.605</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-11.790483</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.82747537</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">9</Int>
+          <Real>0.0700</Real>
+          <Real>17300.516</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-54.836746</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-3.6717050</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">9</Int>
+          <Real>0.0800</Real>
+          <Real>16784.359</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-34.148647</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-2.3589497</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">9</Int>
+          <Real>0.0900</Real>
+          <Real>16278.450</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-9.2076368</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.69482511</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">9</Int>
+          <Real>0.1000</Real>
+          <Real>15822.979</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.9046206</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.25472176</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">9</Int>
+          <Real>0.1100</Real>
+          <Real>15291.021</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-14.417473</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.99669981</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">9</Int>
+          <Real>0.1200</Real>
+          <Real>14932.876</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-5.5879068</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.46490976</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">9</Int>
+          <Real>0.1300</Real>
+          <Real>14519.196</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-24.104668</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.6748879</Real>
+        </Sequence>
+        <Sequence Name="Row14">
+          <Int Name="Length">9</Int>
+          <Real>0.1400</Real>
+          <Real>14052.404</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.2050481</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.10811933</Real>
+        </Sequence>
+        <Sequence Name="Row15">
+          <Int Name="Length">9</Int>
+          <Real>0.1500</Real>
+          <Real>13574.979</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.654684</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.59728938</Real>
+        </Sequence>
+        <Sequence Name="Row16">
+          <Int Name="Length">9</Int>
+          <Real>0.1600</Real>
+          <Real>13158.244</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>9.8413372</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.43559965</Real>
+        </Sequence>
+        <Sequence Name="Row17">
+          <Int Name="Length">9</Int>
+          <Real>0.1700</Real>
+          <Real>12742.010</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>8.8647861</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.37434009</Real>
+        </Sequence>
+        <Sequence Name="Row18">
+          <Int Name="Length">9</Int>
+          <Real>0.1800</Real>
+          <Real>12412.632</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-12.401940</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.94610727</Real>
+        </Sequence>
+        <Sequence Name="Row19">
+          <Int Name="Length">9</Int>
+          <Real>0.1900</Real>
+          <Real>12025.834</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-15.554813</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.0771699</Real>
+        </Sequence>
+        <Sequence Name="Row20">
+          <Int Name="Length">9</Int>
+          <Real>0.2000</Real>
+          <Real>11668.844</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-13.853206</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.94716883</Real>
+        </Sequence>
+        <Sequence Name="Row21">
+          <Int Name="Length">9</Int>
+          <Real>0.2100</Real>
+          <Real>11284.039</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-20.998755</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.4247464</Real>
+        </Sequence>
+        <Sequence Name="Row22">
+          <Int Name="Length">9</Int>
+          <Real>0.2200</Real>
+          <Real>10911.894</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-14.923985</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.0453514</Real>
+        </Sequence>
+        <Sequence Name="Row23">
+          <Int Name="Length">9</Int>
+          <Real>0.2300</Real>
+          <Real>10566.955</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-19.922283</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.4520115</Real>
+        </Sequence>
+        <Sequence Name="Row24">
+          <Int Name="Length">9</Int>
+          <Real>0.2400</Real>
+          <Real>10231.230</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.7994976</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.14404032</Real>
+        </Sequence>
+        <Sequence Name="Row25">
+          <Int Name="Length">9</Int>
+          <Real>0.2500</Real>
+          <Real>9968.4209</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>9.7707586</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.43524343</Real>
+        </Sequence>
+        <Sequence Name="Row26">
+          <Int Name="Length">9</Int>
+          <Real>0.2600</Real>
+          <Real>9683.9785</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.5255494</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.18996415</Real>
+        </Sequence>
+        <Sequence Name="Row27">
+          <Int Name="Length">9</Int>
+          <Real>0.2700</Real>
+          <Real>9378.0811</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.7950813</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.017419390</Real>
+        </Sequence>
+        <Sequence Name="Row28">
+          <Int Name="Length">9</Int>
+          <Real>0.2800</Real>
+          <Real>9007.4697</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-12.662108</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.87385261</Real>
+        </Sequence>
+        <Sequence Name="Row29">
+          <Int Name="Length">9</Int>
+          <Real>0.2900</Real>
+          <Real>8753.9697</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.3624085</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.18725003</Real>
+        </Sequence>
+        <Sequence Name="Row30">
+          <Int Name="Length">9</Int>
+          <Real>0.3000</Real>
+          <Real>8465.7949</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.3957028</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.027882095</Real>
+        </Sequence>
+        <Sequence Name="Row31">
+          <Int Name="Length">9</Int>
+          <Real>0.3100</Real>
+          <Real>8127.0200</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.6105075</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.086347379</Real>
+        </Sequence>
+        <Sequence Name="Row32">
+          <Int Name="Length">9</Int>
+          <Real>0.3200</Real>
+          <Real>7764.1157</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.106931</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.52358508</Real>
+        </Sequence>
+        <Sequence Name="Row33">
+          <Int Name="Length">9</Int>
+          <Real>0.3300</Real>
+          <Real>7480.6064</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.847497</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.62090510</Real>
+        </Sequence>
+        <Sequence Name="Row34">
+          <Int Name="Length">9</Int>
+          <Real>0.3400</Real>
+          <Real>7215.4707</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.040525</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.57890755</Real>
+        </Sequence>
+        <Sequence Name="Row35">
+          <Int Name="Length">9</Int>
+          <Real>0.3500</Real>
+          <Real>6892.3647</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>13.036567</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.63370013</Real>
+        </Sequence>
+        <Sequence Name="Row36">
+          <Int Name="Length">9</Int>
+          <Real>0.3600</Real>
+          <Real>6565.7085</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>10.898385</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.50941873</Real>
+        </Sequence>
+        <Sequence Name="Row37">
+          <Int Name="Length">9</Int>
+          <Real>0.3700</Real>
+          <Real>6260.1587</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.076806</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.57912481</Real>
+        </Sequence>
+        <Sequence Name="Row38">
+          <Int Name="Length">9</Int>
+          <Real>0.3800</Real>
+          <Real>6047.1582</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>14.722479</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.73049068</Real>
+        </Sequence>
+        <Sequence Name="Row39">
+          <Int Name="Length">9</Int>
+          <Real>0.3900</Real>
+          <Real>5769.3306</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>15.253819</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.76127720</Real>
+        </Sequence>
+        <Sequence Name="Row40">
+          <Int Name="Length">9</Int>
+          <Real>0.4000</Real>
+          <Real>5491.2158</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>15.621739</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.78124112</Real>
+        </Sequence>
+        <Sequence Name="Row41">
+          <Int Name="Length">9</Int>
+          <Real>0.4100</Real>
+          <Real>5239.2842</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>15.019732</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.74851453</Real>
+        </Sequence>
+        <Sequence Name="Row42">
+          <Int Name="Length">9</Int>
+          <Real>0.4200</Real>
+          <Real>4955.2236</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.970184</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.63469940</Real>
+        </Sequence>
+        <Sequence Name="Row43">
+          <Int Name="Length">9</Int>
+          <Real>0.4300</Real>
+          <Real>4695.3511</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>7.2544327</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.31172675</Real>
+        </Sequence>
+        <Sequence Name="Row44">
+          <Int Name="Length">9</Int>
+          <Real>0.4400</Real>
+          <Real>4476.2344</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.5105438</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.018204786</Real>
+        </Sequence>
+        <Sequence Name="Row45">
+          <Int Name="Length">9</Int>
+          <Real>0.4500</Real>
+          <Real>4234.5391</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.1897080</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.021179220</Real>
+        </Sequence>
+        <Sequence Name="Row46">
+          <Int Name="Length">9</Int>
+          <Real>0.4600</Real>
+          <Real>3972.7383</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.5433095</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.036578804</Real>
+        </Sequence>
+        <Sequence Name="Row47">
+          <Int Name="Length">9</Int>
+          <Real>0.4700</Real>
+          <Real>3675.9219</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.9355130</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.18048137</Real>
+        </Sequence>
+        <Sequence Name="Row48">
+          <Int Name="Length">9</Int>
+          <Real>0.4800</Real>
+          <Real>3402.2808</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.8340473</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.17349699</Real>
+        </Sequence>
+        <Sequence Name="Row49">
+          <Int Name="Length">9</Int>
+          <Real>0.4900</Real>
+          <Real>3210.3071</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>8.0225458</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.34982723</Real>
+        </Sequence>
+        <Sequence Name="Row50">
+          <Int Name="Length">9</Int>
+          <Real>0.5000</Real>
+          <Real>2963.7800</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.747848</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.56046647</Real>
+        </Sequence>
+        <Sequence Name="Row51">
+          <Int Name="Length">9</Int>
+          <Real>0.5100</Real>
+          <Real>2837.0615</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.7925872</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.018638892</Real>
+        </Sequence>
+        <Sequence Name="Row52">
+          <Int Name="Length">9</Int>
+          <Real>0.5200</Real>
+          <Real>2599.4478</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-10.107281</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.77151293</Real>
+        </Sequence>
+        <Sequence Name="Row53">
+          <Int Name="Length">9</Int>
+          <Real>0.5300</Real>
+          <Real>2392.7219</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-3.8234668</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.39228624</Real>
+        </Sequence>
+        <Sequence Name="Row54">
+          <Int Name="Length">9</Int>
+          <Real>0.5400</Real>
+          <Real>2141.3977</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.9235377</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.16121981</Real>
+        </Sequence>
+        <Sequence Name="Row55">
+          <Int Name="Length">9</Int>
+          <Real>0.5500</Real>
+          <Real>1894.3961</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.7242775</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.20739347</Real>
+        </Sequence>
+        <Sequence Name="Row56">
+          <Int Name="Length">9</Int>
+          <Real>0.5600</Real>
+          <Real>1650.1195</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.1604090</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.065963924</Real>
+        </Sequence>
+        <Sequence Name="Row57">
+          <Int Name="Length">9</Int>
+          <Real>0.5700</Real>
+          <Real>1442.5604</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-21.118731</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.3982593</Real>
+        </Sequence>
+        <Sequence Name="Row58">
+          <Int Name="Length">9</Int>
+          <Real>0.5800</Real>
+          <Real>1154.2802</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-11.551435</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.80686474</Real>
+        </Sequence>
+        <Sequence Name="Row59">
+          <Int Name="Length">9</Int>
+          <Real>0.5900</Real>
+          <Real>977.92596</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-19.052465</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-1.2597023</Real>
+        </Sequence>
+        <Sequence Name="Row60">
+          <Int Name="Length">9</Int>
+          <Real>0.6000</Real>
+          <Real>739.69891</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.54290044</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.15558498</Real>
+        </Sequence>
+        <Sequence Name="Row61">
+          <Int Name="Length">9</Int>
+          <Real>0.6100</Real>
+          <Real>502.32535</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.3928659</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.021699622</Real>
+        </Sequence>
+        <Sequence Name="Row62">
+          <Int Name="Length">9</Int>
+          <Real>0.6200</Real>
+          <Real>332.78494</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.9483552</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.10301653</Real>
+        </Sequence>
+        <Sequence Name="Row63">
+          <Int Name="Length">9</Int>
+          <Real>0.6300</Real>
+          <Real>117.40592</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.4123704</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.020102538</Real>
+        </Sequence>
+        <Sequence Name="Row64">
+          <Int Name="Length">9</Int>
+          <Real>0.6400</Real>
+          <Real>-35.941978</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-4.7306657</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.39635584</Real>
+        </Sequence>
+        <Sequence Name="Row65">
+          <Int Name="Length">9</Int>
+          <Real>0.6500</Real>
+          <Real>-246.84441</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-2.7428317</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.26893592</Real>
+        </Sequence>
+        <Sequence Name="Row66">
+          <Int Name="Length">9</Int>
+          <Real>0.6600</Real>
+          <Real>-401.82376</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-5.7742028</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.45050329</Real>
+        </Sequence>
+        <Sequence Name="Row67">
+          <Int Name="Length">9</Int>
+          <Real>0.6700</Real>
+          <Real>-515.35016</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-7.4531288</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.57305795</Real>
+        </Sequence>
+        <Sequence Name="Row68">
+          <Int Name="Length">9</Int>
+          <Real>0.6800</Real>
+          <Real>-706.58044</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.6042513</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.023598678</Real>
+        </Sequence>
+        <Sequence Name="Row69">
+          <Int Name="Length">9</Int>
+          <Real>0.6900</Real>
+          <Real>-890.52930</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.2660694</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.17871600</Real>
+        </Sequence>
+        <Sequence Name="Row70">
+          <Int Name="Length">9</Int>
+          <Real>0.7000</Real>
+          <Real>-1076.5763</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.0205736</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.085871026</Real>
+        </Sequence>
+        <Sequence Name="Row71">
+          <Int Name="Length">9</Int>
+          <Real>0.7100</Real>
+          <Real>-1205.3600</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>10.127654</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.45515704</Real>
+        </Sequence>
+        <Sequence Name="Row72">
+          <Int Name="Length">9</Int>
+          <Real>0.7200</Real>
+          <Real>-1401.7433</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>10.694732</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.49325097</Real>
+        </Sequence>
+        <Sequence Name="Row73">
+          <Int Name="Length">9</Int>
+          <Real>0.7300</Real>
+          <Real>-1511.8746</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>13.002579</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.62048405</Real>
+        </Sequence>
+        <Sequence Name="Row74">
+          <Int Name="Length">9</Int>
+          <Real>0.7400</Real>
+          <Real>-1686.1857</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.355764</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.58085251</Real>
+        </Sequence>
+        <Sequence Name="Row75">
+          <Int Name="Length">9</Int>
+          <Real>0.7500</Real>
+          <Real>-1870.8121</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.427918</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.52940631</Real>
+        </Sequence>
+        <Sequence Name="Row76">
+          <Int Name="Length">9</Int>
+          <Real>0.7600</Real>
+          <Real>-2049.8137</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>13.941729</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.67407155</Real>
+        </Sequence>
+        <Sequence Name="Row77">
+          <Int Name="Length">9</Int>
+          <Real>0.7700</Real>
+          <Real>-2238.1753</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>13.486353</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.64925963</Real>
+        </Sequence>
+        <Sequence Name="Row78">
+          <Int Name="Length">9</Int>
+          <Real>0.7800</Real>
+          <Real>-2392.8804</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.826356</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.61224586</Real>
+        </Sequence>
+        <Sequence Name="Row79">
+          <Int Name="Length">9</Int>
+          <Real>0.7900</Real>
+          <Real>-2588.4917</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>8.2970324</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.34881678</Real>
+        </Sequence>
+        <Sequence Name="Row80">
+          <Int Name="Length">9</Int>
+          <Real>0.8000</Real>
+          <Real>-2757.0720</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.945762</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.56193101</Real>
+        </Sequence>
+        <Sequence Name="Row81">
+          <Int Name="Length">9</Int>
+          <Real>0.8100</Real>
+          <Real>-2903.7708</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.3924117</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.18367814</Real>
+        </Sequence>
+        <Sequence Name="Row82">
+          <Int Name="Length">9</Int>
+          <Real>0.8200</Real>
+          <Real>-3047.7859</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.101733</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.51431257</Real>
+        </Sequence>
+        <Sequence Name="Row83">
+          <Int Name="Length">9</Int>
+          <Real>0.8300</Real>
+          <Real>-3161.5854</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>9.6307545</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.42988670</Real>
+        </Sequence>
+        <Sequence Name="Row84">
+          <Int Name="Length">9</Int>
+          <Real>0.8400</Real>
+          <Real>-3379.0830</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>12.023994</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.56784922</Real>
+        </Sequence>
+        <Sequence Name="Row85">
+          <Int Name="Length">9</Int>
+          <Real>0.8500</Real>
+          <Real>-3558.4021</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>11.185745</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.52070016</Real>
+        </Sequence>
+        <Sequence Name="Row86">
+          <Int Name="Length">9</Int>
+          <Real>0.8600</Real>
+          <Real>-3652.6042</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.8762925</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.010642702</Real>
+        </Sequence>
+        <Sequence Name="Row87">
+          <Int Name="Length">9</Int>
+          <Real>0.8700</Real>
+          <Real>-3829.2700</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.7260182</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.071571045</Real>
+        </Sequence>
+        <Sequence Name="Row88">
+          <Int Name="Length">9</Int>
+          <Real>0.8800</Real>
+          <Real>-3955.3086</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>6.0863285</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.22653362</Real>
+        </Sequence>
+        <Sequence Name="Row89">
+          <Int Name="Length">9</Int>
+          <Real>0.8900</Real>
+          <Real>-4086.2063</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.3721447</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.083420321</Real>
+        </Sequence>
+        <Sequence Name="Row90">
+          <Int Name="Length">9</Int>
+          <Real>0.9000</Real>
+          <Real>-4189.3530</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>3.2029264</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.073568165</Real>
+        </Sequence>
+        <Sequence Name="Row91">
+          <Int Name="Length">9</Int>
+          <Real>0.9100</Real>
+          <Real>-4346.2114</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.5930278</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.038073756</Real>
+        </Sequence>
+        <Sequence Name="Row92">
+          <Int Name="Length">9</Int>
+          <Real>0.9200</Real>
+          <Real>-4513.3115</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>5.4292865</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.20921849</Real>
+        </Sequence>
+        <Sequence Name="Row93">
+          <Int Name="Length">9</Int>
+          <Real>0.9300</Real>
+          <Real>-4716.2129</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.2852771</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.030672517</Real>
+        </Sequence>
+        <Sequence Name="Row94">
+          <Int Name="Length">9</Int>
+          <Real>0.9400</Real>
+          <Real>-4813.1924</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-7.1204696</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.53045851</Real>
+        </Sequence>
+        <Sequence Name="Row95">
+          <Int Name="Length">9</Int>
+          <Real>0.9500</Real>
+          <Real>-4961.3779</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.63605487</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.14009029</Real>
+        </Sequence>
+        <Sequence Name="Row96">
+          <Int Name="Length">9</Int>
+          <Real>0.9600</Real>
+          <Real>-5113.8364</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>1.3637644</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.024320509</Real>
+        </Sequence>
+        <Sequence Name="Row97">
+          <Int Name="Length">9</Int>
+          <Real>0.9700</Real>
+          <Real>-5263.4927</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.24821608</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>-0.11575874</Real>
+        </Sequence>
+        <Sequence Name="Row98">
+          <Int Name="Length">9</Int>
+          <Real>0.9800</Real>
+          <Real>-5368.6714</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.0372019</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0095707709</Real>
+        </Sequence>
+        <Sequence Name="Row99">
+          <Int Name="Length">9</Int>
+          <Real>0.9900</Real>
+          <Real>-5487.4829</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>4.7544155</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.15978737</Real>
+        </Sequence>
+        <Sequence Name="Row100">
+          <Int Name="Length">9</Int>
+          <Real>1.0000</Real>
+          <Real>-5616.9009</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>2.7037058</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.0000000</Real>
+          <Real>0.044261467</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
diff --git a/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergy.xml b/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergy.xml
new file mode 100644 (file)
index 0000000..7d47bed
--- /dev/null
@@ -0,0 +1,378 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "GROMACS Energies"
+xaxis  label "Time (ps)"
+yaxis  label "(kJ/mol)"
+TYPE xy
+s0 legend "Potential"
+s1 legend "Kinetic En."
+s2 legend "Total Energy"
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">4</Int>
+          <Real>0.000000</Real>
+          <Real>-32102.556641</Real>
+          <Real>6147.870117</Real>
+          <Real>-25954.687500</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">4</Int>
+          <Real>0.200000</Real>
+          <Real>-34450.820312</Real>
+          <Real>5885.405273</Real>
+          <Real>-28565.414062</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">4</Int>
+          <Real>0.400000</Real>
+          <Real>-33708.703125</Real>
+          <Real>6146.063477</Real>
+          <Real>-27562.640625</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">4</Int>
+          <Real>0.600000</Real>
+          <Real>-33897.753906</Real>
+          <Real>6079.209473</Real>
+          <Real>-27818.544922</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">4</Int>
+          <Real>0.800000</Real>
+          <Real>-33992.132812</Real>
+          <Real>6242.735352</Real>
+          <Real>-27749.398438</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">4</Int>
+          <Real>1.000000</Real>
+          <Real>-34110.496094</Real>
+          <Real>6005.650391</Real>
+          <Real>-28104.845703</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">4</Int>
+          <Real>1.200000</Real>
+          <Real>-34426.128906</Real>
+          <Real>6251.612305</Real>
+          <Real>-28174.515625</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">4</Int>
+          <Real>1.400000</Real>
+          <Real>-33967.996094</Real>
+          <Real>6241.403809</Real>
+          <Real>-27726.591797</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">4</Int>
+          <Real>1.600000</Real>
+          <Real>-34323.785156</Real>
+          <Real>6419.104492</Real>
+          <Real>-27904.679688</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">4</Int>
+          <Real>1.800000</Real>
+          <Real>-34305.316406</Real>
+          <Real>6256.709473</Real>
+          <Real>-28048.607422</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">4</Int>
+          <Real>2.000000</Real>
+          <Real>-34260.628906</Real>
+          <Real>6094.508301</Real>
+          <Real>-28166.121094</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">4</Int>
+          <Real>2.200000</Real>
+          <Real>-34596.117188</Real>
+          <Real>6014.866699</Real>
+          <Real>-28581.250000</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">4</Int>
+          <Real>2.400000</Real>
+          <Real>-34348.128906</Real>
+          <Real>6177.041016</Real>
+          <Real>-28171.087891</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">4</Int>
+          <Real>2.600000</Real>
+          <Real>-33940.769531</Real>
+          <Real>5990.643066</Real>
+          <Real>-27950.126953</Real>
+        </Sequence>
+        <Sequence Name="Row14">
+          <Int Name="Length">4</Int>
+          <Real>2.800000</Real>
+          <Real>-34303.445312</Real>
+          <Real>6077.416992</Real>
+          <Real>-28226.027344</Real>
+        </Sequence>
+        <Sequence Name="Row15">
+          <Int Name="Length">4</Int>
+          <Real>3.000000</Real>
+          <Real>-34235.710938</Real>
+          <Real>6137.697754</Real>
+          <Real>-28098.013672</Real>
+        </Sequence>
+        <Sequence Name="Row16">
+          <Int Name="Length">4</Int>
+          <Real>3.200000</Real>
+          <Real>-34002.332031</Real>
+          <Real>6238.207031</Real>
+          <Real>-27764.125000</Real>
+        </Sequence>
+        <Sequence Name="Row17">
+          <Int Name="Length">4</Int>
+          <Real>3.400000</Real>
+          <Real>-34057.250000</Real>
+          <Real>6159.159180</Real>
+          <Real>-27898.089844</Real>
+        </Sequence>
+        <Sequence Name="Row18">
+          <Int Name="Length">4</Int>
+          <Real>3.600000</Real>
+          <Real>-34600.128906</Real>
+          <Real>6063.009766</Real>
+          <Real>-28537.119141</Real>
+        </Sequence>
+        <Sequence Name="Row19">
+          <Int Name="Length">4</Int>
+          <Real>3.800000</Real>
+          <Real>-34239.929688</Real>
+          <Real>6266.519043</Real>
+          <Real>-27973.410156</Real>
+        </Sequence>
+        <Sequence Name="Row20">
+          <Int Name="Length">4</Int>
+          <Real>4.000000</Real>
+          <Real>-34098.769531</Real>
+          <Real>6216.680176</Real>
+          <Real>-27882.089844</Real>
+        </Sequence>
+        <Sequence Name="Row21">
+          <Int Name="Length">4</Int>
+          <Real>4.200000</Real>
+          <Real>-34068.769531</Real>
+          <Real>6327.523926</Real>
+          <Real>-27741.246094</Real>
+        </Sequence>
+        <Sequence Name="Row22">
+          <Int Name="Length">4</Int>
+          <Real>4.400000</Real>
+          <Real>-33888.636719</Real>
+          <Real>6213.844727</Real>
+          <Real>-27674.792969</Real>
+        </Sequence>
+        <Sequence Name="Row23">
+          <Int Name="Length">4</Int>
+          <Real>4.600000</Real>
+          <Real>-33936.765625</Real>
+          <Real>6261.648438</Real>
+          <Real>-27675.117188</Real>
+        </Sequence>
+        <Sequence Name="Row24">
+          <Int Name="Length">4</Int>
+          <Real>4.800000</Real>
+          <Real>-33911.062500</Real>
+          <Real>6168.812500</Real>
+          <Real>-27742.250000</Real>
+        </Sequence>
+        <Sequence Name="Row25">
+          <Int Name="Length">4</Int>
+          <Real>5.000000</Real>
+          <Real>-33947.417969</Real>
+          <Real>6095.376953</Real>
+          <Real>-27852.041016</Real>
+        </Sequence>
+        <Sequence Name="Row26">
+          <Int Name="Length">4</Int>
+          <Real>5.200000</Real>
+          <Real>-34157.207031</Real>
+          <Real>5930.162109</Real>
+          <Real>-28227.044922</Real>
+        </Sequence>
+        <Sequence Name="Row27">
+          <Int Name="Length">4</Int>
+          <Real>5.400000</Real>
+          <Real>-33914.910156</Real>
+          <Real>6003.146973</Real>
+          <Real>-27911.763672</Real>
+        </Sequence>
+        <Sequence Name="Row28">
+          <Int Name="Length">4</Int>
+          <Real>5.600000</Real>
+          <Real>-33877.945312</Real>
+          <Real>6124.571777</Real>
+          <Real>-27753.373047</Real>
+        </Sequence>
+        <Sequence Name="Row29">
+          <Int Name="Length">4</Int>
+          <Real>5.800000</Real>
+          <Real>-34020.351562</Real>
+          <Real>6162.232910</Real>
+          <Real>-27858.119141</Real>
+        </Sequence>
+        <Sequence Name="Row30">
+          <Int Name="Length">4</Int>
+          <Real>6.000000</Real>
+          <Real>-34128.800781</Real>
+          <Real>6059.147461</Real>
+          <Real>-28069.652344</Real>
+        </Sequence>
+        <Sequence Name="Row31">
+          <Int Name="Length">4</Int>
+          <Real>6.200000</Real>
+          <Real>-34273.890625</Real>
+          <Real>6066.780273</Real>
+          <Real>-28207.109375</Real>
+        </Sequence>
+        <Sequence Name="Row32">
+          <Int Name="Length">4</Int>
+          <Real>6.400000</Real>
+          <Real>-33896.531250</Real>
+          <Real>6135.265137</Real>
+          <Real>-27761.265625</Real>
+        </Sequence>
+        <Sequence Name="Row33">
+          <Int Name="Length">4</Int>
+          <Real>6.600000</Real>
+          <Real>-34351.207031</Real>
+          <Real>6222.209961</Real>
+          <Real>-28128.996094</Real>
+        </Sequence>
+        <Sequence Name="Row34">
+          <Int Name="Length">4</Int>
+          <Real>6.800000</Real>
+          <Real>-34294.121094</Real>
+          <Real>6135.084961</Real>
+          <Real>-28159.035156</Real>
+        </Sequence>
+        <Sequence Name="Row35">
+          <Int Name="Length">4</Int>
+          <Real>7.000000</Real>
+          <Real>-34033.593750</Real>
+          <Real>6281.751953</Real>
+          <Real>-27751.841797</Real>
+        </Sequence>
+        <Sequence Name="Row36">
+          <Int Name="Length">4</Int>
+          <Real>7.200000</Real>
+          <Real>-33949.714844</Real>
+          <Real>6196.525391</Real>
+          <Real>-27753.189453</Real>
+        </Sequence>
+        <Sequence Name="Row37">
+          <Int Name="Length">4</Int>
+          <Real>7.400000</Real>
+          <Real>-33534.386719</Real>
+          <Real>5933.003418</Real>
+          <Real>-27601.382812</Real>
+        </Sequence>
+        <Sequence Name="Row38">
+          <Int Name="Length">4</Int>
+          <Real>7.600000</Real>
+          <Real>-34207.582031</Real>
+          <Real>6100.635742</Real>
+          <Real>-28106.945312</Real>
+        </Sequence>
+        <Sequence Name="Row39">
+          <Int Name="Length">4</Int>
+          <Real>7.800000</Real>
+          <Real>-34221.773438</Real>
+          <Real>6173.767090</Real>
+          <Real>-28048.005859</Real>
+        </Sequence>
+        <Sequence Name="Row40">
+          <Int Name="Length">4</Int>
+          <Real>8.000000</Real>
+          <Real>-34048.535156</Real>
+          <Real>6069.120117</Real>
+          <Real>-27979.414062</Real>
+        </Sequence>
+        <Sequence Name="Row41">
+          <Int Name="Length">4</Int>
+          <Real>8.200000</Real>
+          <Real>-34067.558594</Real>
+          <Real>6030.937988</Real>
+          <Real>-28036.621094</Real>
+        </Sequence>
+        <Sequence Name="Row42">
+          <Int Name="Length">4</Int>
+          <Real>8.400000</Real>
+          <Real>-34414.148438</Real>
+          <Real>6250.905273</Real>
+          <Real>-28163.242188</Real>
+        </Sequence>
+        <Sequence Name="Row43">
+          <Int Name="Length">4</Int>
+          <Real>8.600000</Real>
+          <Real>-33985.910156</Real>
+          <Real>6157.070312</Real>
+          <Real>-27828.839844</Real>
+        </Sequence>
+        <Sequence Name="Row44">
+          <Int Name="Length">4</Int>
+          <Real>8.800000</Real>
+          <Real>-33963.457031</Real>
+          <Real>6056.696289</Real>
+          <Real>-27906.761719</Real>
+        </Sequence>
+        <Sequence Name="Row45">
+          <Int Name="Length">4</Int>
+          <Real>9.000000</Real>
+          <Real>-34317.792969</Real>
+          <Real>6261.636230</Real>
+          <Real>-28056.156250</Real>
+        </Sequence>
+        <Sequence Name="Row46">
+          <Int Name="Length">4</Int>
+          <Real>9.200000</Real>
+          <Real>-34095.843750</Real>
+          <Real>6217.412109</Real>
+          <Real>-27878.431641</Real>
+        </Sequence>
+        <Sequence Name="Row47">
+          <Int Name="Length">4</Int>
+          <Real>9.400000</Real>
+          <Real>-34211.437500</Real>
+          <Real>6132.755371</Real>
+          <Real>-28078.681641</Real>
+        </Sequence>
+        <Sequence Name="Row48">
+          <Int Name="Length">4</Int>
+          <Real>9.600000</Real>
+          <Real>-34119.976562</Real>
+          <Real>6159.531250</Real>
+          <Real>-27960.445312</Real>
+        </Sequence>
+        <Sequence Name="Row49">
+          <Int Name="Length">4</Int>
+          <Real>9.800000</Real>
+          <Real>-34448.562500</Real>
+          <Real>6217.981934</Real>
+          <Real>-28230.580078</Real>
+        </Sequence>
+        <Sequence Name="Row50">
+          <Int Name="Length">4</Int>
+          <Real>10.000000</Real>
+          <Real>-33944.414062</Real>
+          <Real>6107.636719</Real>
+          <Real>-27836.777344</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
diff --git a/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyByNumber.xml b/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyByNumber.xml
new file mode 100644 (file)
index 0000000..680c560
--- /dev/null
@@ -0,0 +1,378 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "GROMACS Energies"
+xaxis  label "Time (ps)"
+yaxis  label "(kJ/mol), (bar)"
+TYPE xy
+s0 legend "Coul. recip."
+s1 legend "Kinetic En."
+s2 legend "Pres. DC"
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">4</Int>
+          <Real>0.000000</Real>
+          <Real>412.675140</Real>
+          <Real>6147.870117</Real>
+          <Real>-277.241913</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">4</Int>
+          <Real>0.200000</Real>
+          <Real>286.838928</Real>
+          <Real>5885.405273</Real>
+          <Real>-305.226624</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">4</Int>
+          <Real>0.400000</Real>
+          <Real>318.294525</Real>
+          <Real>6146.063477</Real>
+          <Real>-276.163300</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">4</Int>
+          <Real>0.600000</Real>
+          <Real>316.279175</Real>
+          <Real>6079.209473</Real>
+          <Real>-271.288391</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">4</Int>
+          <Real>0.800000</Real>
+          <Real>303.799255</Real>
+          <Real>6242.735352</Real>
+          <Real>-274.734497</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">4</Int>
+          <Real>1.000000</Real>
+          <Real>299.513519</Real>
+          <Real>6005.650391</Real>
+          <Real>-278.492157</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">4</Int>
+          <Real>1.200000</Real>
+          <Real>293.994965</Real>
+          <Real>6251.612305</Real>
+          <Real>-283.624084</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">4</Int>
+          <Real>1.400000</Real>
+          <Real>292.305603</Real>
+          <Real>6241.403809</Real>
+          <Real>-271.350677</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">4</Int>
+          <Real>1.600000</Real>
+          <Real>295.773956</Real>
+          <Real>6419.104492</Real>
+          <Real>-282.657257</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">4</Int>
+          <Real>1.800000</Real>
+          <Real>277.526611</Real>
+          <Real>6256.709473</Real>
+          <Real>-278.745453</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">4</Int>
+          <Real>2.000000</Real>
+          <Real>298.229156</Real>
+          <Real>6094.508301</Real>
+          <Real>-271.631927</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">4</Int>
+          <Real>2.200000</Real>
+          <Real>304.681488</Real>
+          <Real>6014.866699</Real>
+          <Real>-276.008667</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">4</Int>
+          <Real>2.400000</Real>
+          <Real>305.796234</Real>
+          <Real>6177.041016</Real>
+          <Real>-272.094727</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">4</Int>
+          <Real>2.600000</Real>
+          <Real>306.506500</Real>
+          <Real>5990.643066</Real>
+          <Real>-260.638428</Real>
+        </Sequence>
+        <Sequence Name="Row14">
+          <Int Name="Length">4</Int>
+          <Real>2.800000</Real>
+          <Real>333.718231</Real>
+          <Real>6077.416992</Real>
+          <Real>-257.015717</Real>
+        </Sequence>
+        <Sequence Name="Row15">
+          <Int Name="Length">4</Int>
+          <Real>3.000000</Real>
+          <Real>309.297546</Real>
+          <Real>6137.697754</Real>
+          <Real>-263.238159</Real>
+        </Sequence>
+        <Sequence Name="Row16">
+          <Int Name="Length">4</Int>
+          <Real>3.200000</Real>
+          <Real>293.729523</Real>
+          <Real>6238.207031</Real>
+          <Real>-266.992706</Real>
+        </Sequence>
+        <Sequence Name="Row17">
+          <Int Name="Length">4</Int>
+          <Real>3.400000</Real>
+          <Real>293.085510</Real>
+          <Real>6159.159180</Real>
+          <Real>-262.892700</Real>
+        </Sequence>
+        <Sequence Name="Row18">
+          <Int Name="Length">4</Int>
+          <Real>3.600000</Real>
+          <Real>261.200470</Real>
+          <Real>6063.009766</Real>
+          <Real>-264.705597</Real>
+        </Sequence>
+        <Sequence Name="Row19">
+          <Int Name="Length">4</Int>
+          <Real>3.800000</Real>
+          <Real>316.416992</Real>
+          <Real>6266.519043</Real>
+          <Real>-262.703918</Real>
+        </Sequence>
+        <Sequence Name="Row20">
+          <Int Name="Length">4</Int>
+          <Real>4.000000</Real>
+          <Real>306.888702</Real>
+          <Real>6216.680176</Real>
+          <Real>-266.768372</Real>
+        </Sequence>
+        <Sequence Name="Row21">
+          <Int Name="Length">4</Int>
+          <Real>4.200000</Real>
+          <Real>288.428619</Real>
+          <Real>6327.523926</Real>
+          <Real>-269.623749</Real>
+        </Sequence>
+        <Sequence Name="Row22">
+          <Int Name="Length">4</Int>
+          <Real>4.400000</Real>
+          <Real>316.909424</Real>
+          <Real>6213.844727</Real>
+          <Real>-272.557800</Real>
+        </Sequence>
+        <Sequence Name="Row23">
+          <Int Name="Length">4</Int>
+          <Real>4.600000</Real>
+          <Real>315.392242</Real>
+          <Real>6261.648438</Real>
+          <Real>-269.936920</Real>
+        </Sequence>
+        <Sequence Name="Row24">
+          <Int Name="Length">4</Int>
+          <Real>4.800000</Real>
+          <Real>306.055420</Real>
+          <Real>6168.812500</Real>
+          <Real>-262.402161</Real>
+        </Sequence>
+        <Sequence Name="Row25">
+          <Int Name="Length">4</Int>
+          <Real>5.000000</Real>
+          <Real>294.990906</Real>
+          <Real>6095.376953</Real>
+          <Real>-258.683838</Real>
+        </Sequence>
+        <Sequence Name="Row26">
+          <Int Name="Length">4</Int>
+          <Real>5.200000</Real>
+          <Real>289.555115</Real>
+          <Real>5930.162109</Real>
+          <Real>-259.584320</Real>
+        </Sequence>
+        <Sequence Name="Row27">
+          <Int Name="Length">4</Int>
+          <Real>5.400000</Real>
+          <Real>307.466949</Real>
+          <Real>6003.146973</Real>
+          <Real>-266.808014</Real>
+        </Sequence>
+        <Sequence Name="Row28">
+          <Int Name="Length">4</Int>
+          <Real>5.600000</Real>
+          <Real>299.525543</Real>
+          <Real>6124.571777</Real>
+          <Real>-271.693329</Real>
+        </Sequence>
+        <Sequence Name="Row29">
+          <Int Name="Length">4</Int>
+          <Real>5.800000</Real>
+          <Real>303.685181</Real>
+          <Real>6162.232910</Real>
+          <Real>-265.650055</Real>
+        </Sequence>
+        <Sequence Name="Row30">
+          <Int Name="Length">4</Int>
+          <Real>6.000000</Real>
+          <Real>302.508575</Real>
+          <Real>6059.147461</Real>
+          <Real>-262.166931</Real>
+        </Sequence>
+        <Sequence Name="Row31">
+          <Int Name="Length">4</Int>
+          <Real>6.200000</Real>
+          <Real>305.190033</Real>
+          <Real>6066.780273</Real>
+          <Real>-268.883850</Real>
+        </Sequence>
+        <Sequence Name="Row32">
+          <Int Name="Length">4</Int>
+          <Real>6.400000</Real>
+          <Real>316.891418</Real>
+          <Real>6135.265137</Real>
+          <Real>-264.964966</Real>
+        </Sequence>
+        <Sequence Name="Row33">
+          <Int Name="Length">4</Int>
+          <Real>6.600000</Real>
+          <Real>305.526703</Real>
+          <Real>6222.209961</Real>
+          <Real>-263.851654</Real>
+        </Sequence>
+        <Sequence Name="Row34">
+          <Int Name="Length">4</Int>
+          <Real>6.800000</Real>
+          <Real>306.182434</Real>
+          <Real>6135.084961</Real>
+          <Real>-261.104309</Real>
+        </Sequence>
+        <Sequence Name="Row35">
+          <Int Name="Length">4</Int>
+          <Real>7.000000</Real>
+          <Real>313.867401</Real>
+          <Real>6281.751953</Real>
+          <Real>-263.505280</Real>
+        </Sequence>
+        <Sequence Name="Row36">
+          <Int Name="Length">4</Int>
+          <Real>7.200000</Real>
+          <Real>327.160248</Real>
+          <Real>6196.525391</Real>
+          <Real>-260.642639</Real>
+        </Sequence>
+        <Sequence Name="Row37">
+          <Int Name="Length">4</Int>
+          <Real>7.400000</Real>
+          <Real>330.673920</Real>
+          <Real>5933.003418</Real>
+          <Real>-255.867264</Real>
+        </Sequence>
+        <Sequence Name="Row38">
+          <Int Name="Length">4</Int>
+          <Real>7.600000</Real>
+          <Real>299.878540</Real>
+          <Real>6100.635742</Real>
+          <Real>-263.021698</Real>
+        </Sequence>
+        <Sequence Name="Row39">
+          <Int Name="Length">4</Int>
+          <Real>7.800000</Real>
+          <Real>298.238159</Real>
+          <Real>6173.767090</Real>
+          <Real>-263.497375</Real>
+        </Sequence>
+        <Sequence Name="Row40">
+          <Int Name="Length">4</Int>
+          <Real>8.000000</Real>
+          <Real>346.477814</Real>
+          <Real>6069.120117</Real>
+          <Real>-252.196213</Real>
+        </Sequence>
+        <Sequence Name="Row41">
+          <Int Name="Length">4</Int>
+          <Real>8.200000</Real>
+          <Real>314.671814</Real>
+          <Real>6030.937988</Real>
+          <Real>-262.904236</Real>
+        </Sequence>
+        <Sequence Name="Row42">
+          <Int Name="Length">4</Int>
+          <Real>8.400000</Real>
+          <Real>306.445038</Real>
+          <Real>6250.905273</Real>
+          <Real>-275.029877</Real>
+        </Sequence>
+        <Sequence Name="Row43">
+          <Int Name="Length">4</Int>
+          <Real>8.600000</Real>
+          <Real>337.485474</Real>
+          <Real>6157.070312</Real>
+          <Real>-268.037445</Real>
+        </Sequence>
+        <Sequence Name="Row44">
+          <Int Name="Length">4</Int>
+          <Real>8.800000</Real>
+          <Real>313.903717</Real>
+          <Real>6056.696289</Real>
+          <Real>-263.511719</Real>
+        </Sequence>
+        <Sequence Name="Row45">
+          <Int Name="Length">4</Int>
+          <Real>9.000000</Real>
+          <Real>286.324554</Real>
+          <Real>6261.636230</Real>
+          <Real>-268.191803</Real>
+        </Sequence>
+        <Sequence Name="Row46">
+          <Int Name="Length">4</Int>
+          <Real>9.200000</Real>
+          <Real>296.164307</Real>
+          <Real>6217.412109</Real>
+          <Real>-265.517853</Real>
+        </Sequence>
+        <Sequence Name="Row47">
+          <Int Name="Length">4</Int>
+          <Real>9.400000</Real>
+          <Real>278.793793</Real>
+          <Real>6132.755371</Real>
+          <Real>-278.546753</Real>
+        </Sequence>
+        <Sequence Name="Row48">
+          <Int Name="Length">4</Int>
+          <Real>9.600000</Real>
+          <Real>322.638519</Real>
+          <Real>6159.531250</Real>
+          <Real>-273.344574</Real>
+        </Sequence>
+        <Sequence Name="Row49">
+          <Int Name="Length">4</Int>
+          <Real>9.800000</Real>
+          <Real>294.918335</Real>
+          <Real>6217.981934</Real>
+          <Real>-271.223114</Real>
+        </Sequence>
+        <Sequence Name="Row50">
+          <Int Name="Length">4</Int>
+          <Real>10.000000</Real>
+          <Real>323.157379</Real>
+          <Real>6107.636719</Real>
+          <Real>-266.596802</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
diff --git a/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyMixed.xml b/src/gromacs/energyanalysis/tests/refdata/EnergyTest_ExtractEnergyMixed.xml
new file mode 100644 (file)
index 0000000..cd6370f
--- /dev/null
@@ -0,0 +1,430 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "GROMACS Energies"
+xaxis  label "Time (ps)"
+yaxis  label "(kJ/mol), (bar), (nm), (nm^3)"
+TYPE xy
+s0 legend "Total Energy"
+s1 legend "Pressure"
+s2 legend "Box-Z"
+s3 legend "Volume"
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">5</Int>
+          <Real>0.000000</Real>
+          <Real>-25954.687500</Real>
+          <Real>-4113.184082</Real>
+          <Real>2.908700</Real>
+          <Real>24.609161</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">5</Int>
+          <Real>0.200000</Real>
+          <Real>-28565.414062</Real>
+          <Real>2182.145752</Real>
+          <Real>2.862453</Real>
+          <Real>23.453901</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">5</Int>
+          <Real>0.400000</Real>
+          <Real>-27562.640625</Real>
+          <Real>-1272.206055</Real>
+          <Real>2.910590</Real>
+          <Real>24.657173</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">5</Int>
+          <Real>0.600000</Real>
+          <Real>-27818.544922</Real>
+          <Real>52.116547</Real>
+          <Real>2.919243</Real>
+          <Real>24.877728</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">5</Int>
+          <Real>0.800000</Real>
+          <Real>-27749.398438</Real>
+          <Real>21.307526</Real>
+          <Real>2.913108</Real>
+          <Real>24.721209</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">5</Int>
+          <Real>1.000000</Real>
+          <Real>-28104.845703</Real>
+          <Real>-255.442398</Real>
+          <Real>2.906520</Real>
+          <Real>24.553862</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">5</Int>
+          <Real>1.200000</Real>
+          <Real>-28174.515625</Real>
+          <Real>563.564453</Real>
+          <Real>2.897688</Real>
+          <Real>24.330708</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">5</Int>
+          <Real>1.400000</Real>
+          <Real>-27726.591797</Real>
+          <Real>-1227.515869</Real>
+          <Real>2.919131</Real>
+          <Real>24.874872</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">5</Int>
+          <Real>1.600000</Real>
+          <Real>-27904.679688</Real>
+          <Real>915.864136</Real>
+          <Real>2.899337</Real>
+          <Real>24.372284</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">5</Int>
+          <Real>1.800000</Real>
+          <Real>-28048.607422</Real>
+          <Real>-279.529633</Real>
+          <Real>2.906079</Real>
+          <Real>24.542704</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">5</Int>
+          <Real>2.000000</Real>
+          <Real>-28166.121094</Real>
+          <Real>-458.908936</Real>
+          <Real>2.918627</Real>
+          <Real>24.861990</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">5</Int>
+          <Real>2.200000</Real>
+          <Real>-28581.250000</Real>
+          <Real>-189.055450</Real>
+          <Real>2.910862</Real>
+          <Real>24.664082</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">5</Int>
+          <Real>2.400000</Real>
+          <Real>-28171.087891</Real>
+          <Real>371.100586</Real>
+          <Real>2.917799</Real>
+          <Real>24.840837</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">5</Int>
+          <Real>2.600000</Real>
+          <Real>-27950.126953</Real>
+          <Real>445.505615</Real>
+          <Real>2.938793</Real>
+          <Real>25.380903</Real>
+        </Sequence>
+        <Sequence Name="Row14">
+          <Int Name="Length">5</Int>
+          <Real>2.800000</Real>
+          <Real>-28226.027344</Real>
+          <Real>-383.208984</Real>
+          <Real>2.945657</Real>
+          <Real>25.559153</Real>
+        </Sequence>
+        <Sequence Name="Row15">
+          <Int Name="Length">5</Int>
+          <Real>3.000000</Real>
+          <Real>-28098.013672</Real>
+          <Real>-739.696289</Real>
+          <Real>2.933936</Real>
+          <Real>25.255260</Real>
+        </Sequence>
+        <Sequence Name="Row16">
+          <Int Name="Length">5</Int>
+          <Real>3.200000</Real>
+          <Real>-27764.125000</Real>
+          <Real>556.054443</Real>
+          <Real>2.927019</Real>
+          <Real>25.077057</Real>
+        </Sequence>
+        <Sequence Name="Row17">
+          <Int Name="Length">5</Int>
+          <Real>3.400000</Real>
+          <Real>-27898.089844</Real>
+          <Real>-191.586060</Real>
+          <Real>2.934578</Real>
+          <Real>25.271851</Real>
+        </Sequence>
+        <Sequence Name="Row18">
+          <Int Name="Length">5</Int>
+          <Real>3.600000</Real>
+          <Real>-28537.119141</Real>
+          <Real>-64.853195</Real>
+          <Real>2.931219</Real>
+          <Real>25.185162</Real>
+        </Sequence>
+        <Sequence Name="Row19">
+          <Int Name="Length">5</Int>
+          <Real>3.800000</Real>
+          <Real>-27973.410156</Real>
+          <Real>-586.303345</Real>
+          <Real>2.934929</Real>
+          <Real>25.280926</Real>
+        </Sequence>
+        <Sequence Name="Row20">
+          <Int Name="Length">5</Int>
+          <Real>4.000000</Real>
+          <Real>-27882.089844</Real>
+          <Real>-361.731506</Real>
+          <Real>2.927429</Real>
+          <Real>25.087599</Real>
+        </Sequence>
+        <Sequence Name="Row21">
+          <Int Name="Length">5</Int>
+          <Real>4.200000</Real>
+          <Real>-27741.246094</Real>
+          <Real>259.893829</Real>
+          <Real>2.922239</Real>
+          <Real>24.954405</Real>
+        </Sequence>
+        <Sequence Name="Row22">
+          <Int Name="Length">5</Int>
+          <Real>4.400000</Real>
+          <Real>-27674.792969</Real>
+          <Real>520.501953</Real>
+          <Real>2.916972</Real>
+          <Real>24.819725</Real>
+        </Sequence>
+        <Sequence Name="Row23">
+          <Int Name="Length">5</Int>
+          <Real>4.600000</Real>
+          <Real>-27675.117188</Real>
+          <Real>268.957916</Real>
+          <Real>2.921674</Real>
+          <Real>24.939926</Real>
+        </Sequence>
+        <Sequence Name="Row24">
+          <Int Name="Length">5</Int>
+          <Real>4.800000</Real>
+          <Real>-27742.250000</Real>
+          <Real>-204.915268</Real>
+          <Real>2.935492</Real>
+          <Real>25.295462</Real>
+        </Sequence>
+        <Sequence Name="Row25">
+          <Int Name="Length">5</Int>
+          <Real>5.000000</Real>
+          <Real>-27852.041016</Real>
+          <Real>5.506622</Real>
+          <Real>2.942482</Real>
+          <Real>25.476610</Real>
+        </Sequence>
+        <Sequence Name="Row26">
+          <Int Name="Length">5</Int>
+          <Real>5.200000</Real>
+          <Real>-28227.044922</Real>
+          <Real>-274.371277</Real>
+          <Real>2.940779</Real>
+          <Real>25.432384</Real>
+        </Sequence>
+        <Sequence Name="Row27">
+          <Int Name="Length">5</Int>
+          <Real>5.400000</Real>
+          <Real>-27911.763672</Real>
+          <Real>592.697144</Real>
+          <Real>2.927356</Real>
+          <Real>25.085735</Real>
+        </Sequence>
+        <Sequence Name="Row28">
+          <Int Name="Length">5</Int>
+          <Real>5.600000</Real>
+          <Real>-27753.373047</Real>
+          <Real>683.389648</Real>
+          <Real>2.918517</Real>
+          <Real>24.859180</Real>
+        </Sequence>
+        <Sequence Name="Row29">
+          <Int Name="Length">5</Int>
+          <Real>5.800000</Real>
+          <Real>-27858.119141</Real>
+          <Real>-500.987946</Real>
+          <Real>2.929479</Real>
+          <Real>25.140350</Real>
+        </Sequence>
+        <Sequence Name="Row30">
+          <Int Name="Length">5</Int>
+          <Real>6.000000</Real>
+          <Real>-28069.652344</Real>
+          <Real>-272.158386</Real>
+          <Real>2.935930</Real>
+          <Real>25.306805</Real>
+        </Sequence>
+        <Sequence Name="Row31">
+          <Int Name="Length">5</Int>
+          <Real>6.200000</Real>
+          <Real>-28207.109375</Real>
+          <Real>682.146118</Real>
+          <Real>2.923578</Real>
+          <Real>24.988716</Real>
+        </Sequence>
+        <Sequence Name="Row32">
+          <Int Name="Length">5</Int>
+          <Real>6.400000</Real>
+          <Real>-27761.265625</Real>
+          <Real>-251.639786</Real>
+          <Real>2.930740</Real>
+          <Real>25.172831</Real>
+        </Sequence>
+        <Sequence Name="Row33">
+          <Int Name="Length">5</Int>
+          <Real>6.600000</Real>
+          <Real>-28128.996094</Real>
+          <Real>136.933014</Real>
+          <Real>2.932798</Real>
+          <Real>25.225883</Real>
+        </Sequence>
+        <Sequence Name="Row34">
+          <Int Name="Length">5</Int>
+          <Real>6.800000</Real>
+          <Real>-28159.035156</Real>
+          <Real>-172.420929</Real>
+          <Real>2.937919</Real>
+          <Real>25.358250</Real>
+        </Sequence>
+        <Sequence Name="Row35">
+          <Int Name="Length">5</Int>
+          <Real>7.000000</Real>
+          <Real>-27751.841797</Real>
+          <Real>187.738708</Real>
+          <Real>2.933440</Real>
+          <Real>25.242456</Real>
+        </Sequence>
+        <Sequence Name="Row36">
+          <Int Name="Length">5</Int>
+          <Real>7.200000</Real>
+          <Real>-27753.189453</Real>
+          <Real>181.039490</Real>
+          <Real>2.938785</Real>
+          <Real>25.380699</Real>
+        </Sequence>
+        <Sequence Name="Row37">
+          <Int Name="Length">5</Int>
+          <Real>7.400000</Real>
+          <Real>-27601.382812</Real>
+          <Real>-59.191101</Real>
+          <Real>2.947856</Real>
+          <Real>25.616447</Real>
+        </Sequence>
+        <Sequence Name="Row38">
+          <Int Name="Length">5</Int>
+          <Real>7.600000</Real>
+          <Real>-28106.945312</Real>
+          <Real>234.138947</Real>
+          <Real>2.934338</Real>
+          <Real>25.265654</Real>
+        </Sequence>
+        <Sequence Name="Row39">
+          <Int Name="Length">5</Int>
+          <Real>7.800000</Real>
+          <Real>-28048.005859</Real>
+          <Real>352.149719</Real>
+          <Real>2.933455</Real>
+          <Real>25.242838</Real>
+        </Sequence>
+        <Sequence Name="Row40">
+          <Int Name="Length">5</Int>
+          <Real>8.000000</Real>
+          <Real>-27979.414062</Real>
+          <Real>-506.414001</Real>
+          <Real>2.954965</Real>
+          <Real>25.802214</Real>
+        </Sequence>
+        <Sequence Name="Row41">
+          <Int Name="Length">5</Int>
+          <Real>8.200000</Real>
+          <Real>-28036.621094</Real>
+          <Real>-413.985809</Real>
+          <Real>2.934557</Real>
+          <Real>25.271296</Real>
+        </Sequence>
+        <Sequence Name="Row42">
+          <Int Name="Length">5</Int>
+          <Real>8.400000</Real>
+          <Real>-28163.242188</Real>
+          <Real>449.511932</Real>
+          <Real>2.912586</Real>
+          <Real>24.707930</Real>
+        </Sequence>
+        <Sequence Name="Row43">
+          <Int Name="Length">5</Int>
+          <Real>8.600000</Real>
+          <Real>-27828.839844</Real>
+          <Real>421.591461</Real>
+          <Real>2.925114</Real>
+          <Real>25.028139</Real>
+        </Sequence>
+        <Sequence Name="Row44">
+          <Int Name="Length">5</Int>
+          <Real>8.800000</Real>
+          <Real>-27906.761719</Real>
+          <Real>-277.707733</Real>
+          <Real>2.933428</Real>
+          <Real>25.242149</Real>
+        </Sequence>
+        <Sequence Name="Row45">
+          <Int Name="Length">5</Int>
+          <Real>9.000000</Real>
+          <Real>-28056.156250</Real>
+          <Real>-76.575607</Real>
+          <Real>2.924834</Real>
+          <Real>25.020935</Real>
+        </Sequence>
+        <Sequence Name="Row46">
+          <Int Name="Length">5</Int>
+          <Real>9.200000</Real>
+          <Real>-27878.431641</Real>
+          <Real>-443.641296</Real>
+          <Real>2.929722</Real>
+          <Real>25.146606</Real>
+        </Sequence>
+        <Sequence Name="Row47">
+          <Int Name="Length">5</Int>
+          <Real>9.400000</Real>
+          <Real>-28078.681641</Real>
+          <Real>727.809448</Real>
+          <Real>2.906425</Real>
+          <Real>24.551456</Real>
+        </Sequence>
+        <Sequence Name="Row48">
+          <Int Name="Length">5</Int>
+          <Real>9.600000</Real>
+          <Real>-27960.445312</Real>
+          <Real>-348.396515</Real>
+          <Real>2.915571</Real>
+          <Real>24.783981</Real>
+        </Sequence>
+        <Sequence Name="Row49">
+          <Int Name="Length">5</Int>
+          <Real>9.800000</Real>
+          <Real>-28230.580078</Real>
+          <Real>260.881683</Real>
+          <Real>2.919360</Real>
+          <Real>24.880718</Real>
+        </Sequence>
+        <Sequence Name="Row50">
+          <Int Name="Length">5</Int>
+          <Real>10.000000</Real>
+          <Real>-27836.777344</Real>
+          <Real>-291.007599</Real>
+          <Real>2.927743</Real>
+          <Real>25.095673</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
diff --git a/src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosity.xml b/src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosity.xml
new file mode 100644 (file)
index 0000000..e25077a
--- /dev/null
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "Shear viscosity using Einstein relation"
+xaxis  label "Time (ps)"
+yaxis  label "(kg m\S-1\N s\S-1\N)"
+TYPE xy
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">5</Int>
+          <Real>0.1</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">5</Int>
+          <Real>0.3</Real>
+          <Real>0.000176958</Real>
+          <Real>0.0001997</Real>
+          <Real>0.000227414</Real>
+          <Real>0.000201357</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">5</Int>
+          <Real>0.5</Real>
+          <Real>0.00032058</Real>
+          <Real>0.000336305</Real>
+          <Real>0.000523275</Real>
+          <Real>0.000393386</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">5</Int>
+          <Real>0.7</Real>
+          <Real>0.000438803</Real>
+          <Real>0.000332506</Real>
+          <Real>0.000720448</Real>
+          <Real>0.000497252</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">5</Int>
+          <Real>0.9</Real>
+          <Real>0.000479678</Real>
+          <Real>0.00026701</Real>
+          <Real>0.000834344</Real>
+          <Real>0.000527011</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">5</Int>
+          <Real>1.1</Real>
+          <Real>0.000518115</Real>
+          <Real>0.0002171</Real>
+          <Real>0.000888733</Real>
+          <Real>0.000541316</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">5</Int>
+          <Real>1.3</Real>
+          <Real>0.000521</Real>
+          <Real>0.000157779</Real>
+          <Real>0.00086004</Real>
+          <Real>0.00051294</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">5</Int>
+          <Real>1.5</Real>
+          <Real>0.000545937</Real>
+          <Real>0.000116376</Real>
+          <Real>0.000702937</Real>
+          <Real>0.000455084</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">5</Int>
+          <Real>1.7</Real>
+          <Real>0.000564482</Real>
+          <Real>0.000149521</Real>
+          <Real>0.000433129</Real>
+          <Real>0.000382377</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">5</Int>
+          <Real>1.9</Real>
+          <Real>0.000643496</Real>
+          <Real>0.000253498</Real>
+          <Real>0.000142306</Real>
+          <Real>0.000346433</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">5</Int>
+          <Real>2.1</Real>
+          <Real>0.000680419</Real>
+          <Real>0.000327415</Real>
+          <Real>4.35872e-05</Real>
+          <Real>0.000350474</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">5</Int>
+          <Real>2.3</Real>
+          <Real>0.000715131</Real>
+          <Real>0.000369339</Real>
+          <Real>-5.31824e-05</Real>
+          <Real>0.000343763</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">5</Int>
+          <Real>2.5</Real>
+          <Real>0.000818337</Real>
+          <Real>0.000399551</Real>
+          <Real>-8.46781e-05</Real>
+          <Real>0.000377737</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">5</Int>
+          <Real>2.7</Real>
+          <Real>0.000924901</Real>
+          <Real>0.000419762</Real>
+          <Real>7.73914e-06</Real>
+          <Real>0.000450801</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
diff --git a/src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosityIntegral.xml b/src/gromacs/energyanalysis/tests/refdata/ViscosityTest_EinsteinViscosityIntegral.xml
new file mode 100644 (file)
index 0000000..9d19a30
--- /dev/null
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+  <OutputFiles Name="Files">
+    <File Name="-o">
+      <XvgLegend Name="Legend">
+        <String Name="XvgLegend"><![CDATA[
+title "Shear viscosity integral"
+xaxis  label "Time (ps)"
+yaxis  label "(kg m\S-1\N s\S-1\N ps)"
+TYPE xy
+]]></String>
+      </XvgLegend>
+      <XvgData Name="Data">
+        <Sequence Name="Row0">
+          <Int Name="Length">5</Int>
+          <Real>0</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+          <Real>0</Real>
+        </Sequence>
+        <Sequence Name="Row1">
+          <Int Name="Length">5</Int>
+          <Real>0.2</Real>
+          <Real>3.53916e-05</Real>
+          <Real>3.994e-05</Real>
+          <Real>4.54828e-05</Real>
+          <Real>4.02715e-05</Real>
+        </Sequence>
+        <Sequence Name="Row2">
+          <Int Name="Length">5</Int>
+          <Real>0.4</Real>
+          <Real>9.95076e-05</Real>
+          <Real>0.000107201</Real>
+          <Real>0.000150138</Real>
+          <Real>0.000118949</Real>
+        </Sequence>
+        <Sequence Name="Row3">
+          <Int Name="Length">5</Int>
+          <Real>0.6</Real>
+          <Real>0.000187268</Real>
+          <Real>0.000173702</Real>
+          <Real>0.000294227</Real>
+          <Real>0.000218399</Real>
+        </Sequence>
+        <Sequence Name="Row4">
+          <Int Name="Length">5</Int>
+          <Real>0.8</Real>
+          <Real>0.000283204</Real>
+          <Real>0.000227104</Real>
+          <Real>0.000461096</Real>
+          <Real>0.000323801</Real>
+        </Sequence>
+        <Sequence Name="Row5">
+          <Int Name="Length">5</Int>
+          <Real>1</Real>
+          <Real>0.000386827</Real>
+          <Real>0.000270524</Real>
+          <Real>0.000638843</Real>
+          <Real>0.000432065</Real>
+        </Sequence>
+        <Sequence Name="Row6">
+          <Int Name="Length">5</Int>
+          <Real>1.2</Real>
+          <Real>0.000491027</Real>
+          <Real>0.00030208</Real>
+          <Real>0.000810851</Real>
+          <Real>0.000534652</Real>
+        </Sequence>
+        <Sequence Name="Row7">
+          <Int Name="Length">5</Int>
+          <Real>1.4</Real>
+          <Real>0.000600214</Real>
+          <Real>0.000325355</Real>
+          <Real>0.000951438</Real>
+          <Real>0.000625669</Real>
+        </Sequence>
+        <Sequence Name="Row8">
+          <Int Name="Length">5</Int>
+          <Real>1.6</Real>
+          <Real>0.000713111</Real>
+          <Real>0.000355259</Real>
+          <Real>0.00103806</Real>
+          <Real>0.000702145</Real>
+        </Sequence>
+        <Sequence Name="Row9">
+          <Int Name="Length">5</Int>
+          <Real>1.8</Real>
+          <Real>0.00084181</Real>
+          <Real>0.000405959</Real>
+          <Real>0.00106653</Real>
+          <Real>0.000771431</Real>
+        </Sequence>
+        <Sequence Name="Row10">
+          <Int Name="Length">5</Int>
+          <Real>2</Real>
+          <Real>0.000977894</Real>
+          <Real>0.000471442</Real>
+          <Real>0.00107524</Real>
+          <Real>0.000841526</Real>
+        </Sequence>
+        <Sequence Name="Row11">
+          <Int Name="Length">5</Int>
+          <Real>2.2</Real>
+          <Real>0.00112092</Real>
+          <Real>0.00054531</Real>
+          <Real>0.00106461</Real>
+          <Real>0.000910279</Real>
+        </Sequence>
+        <Sequence Name="Row12">
+          <Int Name="Length">5</Int>
+          <Real>2.4</Real>
+          <Real>0.00128459</Real>
+          <Real>0.00062522</Real>
+          <Real>0.00104767</Real>
+          <Real>0.000985826</Real>
+        </Sequence>
+        <Sequence Name="Row13">
+          <Int Name="Length">5</Int>
+          <Real>2.6</Real>
+          <Real>0.00146957</Real>
+          <Real>0.000709173</Real>
+          <Real>0.00104922</Real>
+          <Real>0.00107599</Real>
+        </Sequence>
+      </XvgData>
+    </File>
+  </OutputFiles>
+</ReferenceData>
index a55123d77cce494d318c6e51ba42b893bd1f82d0..984b966cc0450dd192c6d11fdd51a46b6e90c5cb 100644 (file)
@@ -69,6 +69,7 @@
 #include "gromacs/utility/gmxassert.h"
 #include "gromacs/utility/pleasecite.h"
 #include "gromacs/utility/smalloc.h"
+#include "gromacs/utility/strconvert.h"
 
 static real       minthird = -1.0/3.0, minsixth = -1.0/6.0;
 static const int  NOTSET   = -23451;
@@ -99,6 +100,19 @@ typedef struct {
     gmx_bool         bHaveSums;
 } enerdata_t;
 
+static void done_enerdata_t(int nset, enerdata_t *edat)
+{
+    sfree(edat->step);
+    sfree(edat->steps);
+    sfree(edat->points);
+    for (int i = 0; i < nset; i++)
+    {
+        sfree(edat->s[i].ener);
+        sfree(edat->s[i].es);
+    }
+    sfree(edat->s);
+}
+
 static double mypow(double x, double y)
 {
     if (x > 0)
@@ -367,6 +381,7 @@ static void get_dhdl_parms(const char *topnm, t_inputrec *ir)
 
     /* all we need is the ir to be able to write the label */
     read_tpx(topnm, ir, box, &natoms, nullptr, nullptr, &mtop);
+    done_mtop(&mtop);
 }
 
 static void get_orires_parms(const char *topnm, t_inputrec *ir,
@@ -921,24 +936,17 @@ static enerdata_t *calc_sum(int nset, enerdata_t *edat, int nbmin, int nbmax)
     return esum;
 }
 
-static char *ee_pr(double ee, char *buf)
+static void ee_pr(double ee, int buflen, char *buf)
 {
-    char   tmp[100];
-    double rnd;
-
-    if (ee < 0)
-    {
-        sprintf(buf, "%s", "--");
-    }
-    else
+    snprintf(buf, buflen, "%s", "--");
+    if (ee >= 0)
     {
         /* Round to two decimals by printing. */
-        sprintf(tmp, "%.1e", ee);
-        sscanf(tmp, "%lf", &rnd);
-        sprintf(buf, "%g", rnd);
+        char   tmp[100];
+        snprintf(tmp, sizeof(tmp), "%.1e", ee);
+        double rnd = gmx::doubleFromString(tmp);
+        snprintf(buf, buflen, "%g", rnd);
     }
-
-    return buf;
 }
 
 static void remove_drift(int nset, int nbmin, int nbmax, real dt, enerdata_t *edat)
@@ -1130,6 +1138,7 @@ static void calc_fluctuation_props(FILE *fp,
 }
 
 static void analyse_ener(gmx_bool bCorr, const char *corrfn,
+                         const char *eviscofn, const char *eviscoifn,
                          gmx_bool bFee, gmx_bool bSum, gmx_bool bFluct,
                          gmx_bool bVisco, const char *visfn, int nmol,
                          gmx_int64_t start_step, double start_t,
@@ -1295,8 +1304,9 @@ static void analyse_ener(gmx_bool bCorr, const char *corrfn,
                 totaldrift /= nmol;
             }
 
+            ee_pr(pr_errest, sizeof(eebuf), eebuf);
             fprintf(stdout, "%-24s %10g %10s %10g %10g",
-                    leg[i], pr_aver, ee_pr(pr_errest, eebuf), pr_stddev, totaldrift);
+                    leg[i], pr_aver, eebuf, pr_stddev, totaldrift);
             if (bFee)
             {
                 fprintf(stdout, "  %10g", fee[i]);
@@ -1315,8 +1325,9 @@ static void analyse_ener(gmx_bool bCorr, const char *corrfn,
         if (bSum)
         {
             totaldrift = (edat->nsteps - 1)*esum->s[0].slope;
+            ee_pr(esum->s[0].ee/nmol, sizeof(eebuf), eebuf);
             fprintf(stdout, "%-24s %10g %10s %10s %10g  (%s)",
-                    "Total", esum->s[0].av/nmol, ee_pr(esum->s[0].ee/nmol, eebuf),
+                    "Total", esum->s[0].av/nmol, eebuf,
                     "--", totaldrift/nmol, enm[set[0]].unit);
             /* pr_aver,pr_stddev,a,totaldrift */
             if (bFee)
@@ -1384,7 +1395,7 @@ static void analyse_ener(gmx_bool bCorr, const char *corrfn,
                 eneint[2][i+1] = eneint[2][i] + 0.5*(edat->s[5].es[i].sum + edat->s[7].es[i].sum)*Dt/edat->points[i];
             }
 
-            einstein_visco("evisco.xvg", "eviscoi.xvg",
+            einstein_visco(eviscofn, eviscoifn,
                            3, edat->nframes+1, eneint, Vaver, Temp, Dt, oenv);
 
             for (i = 0; i < 3; i++)
@@ -1665,7 +1676,9 @@ static void do_dhdl(t_enxframe *fr, const t_inputrec *ir, FILE **fp_dhdl,
             }
         }
     }
-
+    // Clean up!
+    sfree(native_lambda_vec);
+    sfree(lambda_components);
     if (nblock_hist == 0 && nblock_dh == 0)
     {
         /* don't do anything */
@@ -2039,6 +2052,8 @@ int gmx_energy(int argc, char *argv[])
         { efXVG, "-oten", "oriten",  ffOPTWR },
         { efXVG, "-corr", "enecorr", ffOPTWR },
         { efXVG, "-vis",  "visco",   ffOPTWR },
+        { efXVG, "-evisco",  "evisco",  ffOPTWR },
+        { efXVG, "-eviscoi", "eviscoi", ffOPTWR },
         { efXVG, "-ravg", "runavgdf", ffOPTWR },
         { efXVG, "-odh",  "dhdl", ffOPTWR }
     };
@@ -2166,7 +2181,6 @@ int gmx_energy(int argc, char *argv[])
                     (gmx_strcasecmp(interaction_function[j].longname, leg[i]) == 0);
             }
         }
-
         if (bPrAll && nset > 1)
         {
             gmx_fatal(FARGS, "Printing averages can only be done when a single set is selected");
@@ -2274,6 +2288,7 @@ int gmx_energy(int argc, char *argv[])
                     }
                     xvgr_legend(fodt, norsel, (const char**)odtleg, oenv);
                 }
+                sfree(odtleg);
             }
         }
         if (bOTEN)
@@ -2715,7 +2730,7 @@ int gmx_energy(int argc, char *argv[])
     while (bCont && (timecheck == 0));
 
     fprintf(stderr, "\n");
-    close_enx(fp);
+    done_ener_file(fp);
     if (out)
     {
         xvgrclose(out);
@@ -2817,6 +2832,7 @@ int gmx_energy(int argc, char *argv[])
     {
         double dt = (frame[cur].t-start_t)/(edat.nframes-1);
         analyse_ener(opt2bSet("-corr", NFILE, fnm), opt2fn("-corr", NFILE, fnm),
+                     opt2fn("-evisco", NFILE, fnm), opt2fn("-eviscoi", NFILE, fnm),
                      bFee, bSum, bFluct,
                      bVisco, opt2fn("-vis", NFILE, fnm),
                      nmol,
@@ -2835,7 +2851,17 @@ int gmx_energy(int argc, char *argv[])
         fec(opt2fn("-f2", NFILE, fnm), opt2fn("-ravg", NFILE, fnm),
             reftemp, nset, set, leg, &edat, time, oenv);
     }
-
+    // Clean up!
+    done_enerdata_t(nset, &edat);
+    sfree(time);
+    free_enxframe(&frame[0]);
+    free_enxframe(&frame[1]);
+    sfree(frame);
+    free_enxnms(nre, enm);
+    sfree(ppa);
+    sfree(set);
+    sfree(leg);
+    sfree(bIsEner);
     {
         const char *nxy = "-nxy";
 
@@ -2849,6 +2875,8 @@ int gmx_energy(int argc, char *argv[])
         do_view(oenv, opt2fn_null("-oten", NFILE, fnm), nxy);
         do_view(oenv, opt2fn_null("-odh", NFILE, fnm), nxy);
     }
+    output_env_done(oenv);
+    done_filenms(NFILE, fnm);
 
     return 0;
 }
index 79435f5300599c924aa3a9a186293aec76207e55..c4daccd6db33476c188ac960da3c9bc82c7274e9 100644 (file)
@@ -277,6 +277,18 @@ static void done_pull_params(pull_params_t *pull)
     sfree(pull->coord);
 }
 
+static void done_lambdas(t_lambda *fep)
+{
+    if (fep->n_lambda > 0)
+    {
+        for (int i = 0; i < efptNR; i++)
+        {
+            sfree(fep->all_lambda[i]);
+        }
+        sfree(fep->all_lambda);
+    }
+}
+
 void done_inputrec(t_inputrec *ir)
 {
     sfree(ir->opts.nrdf);
@@ -300,6 +312,8 @@ void done_inputrec(t_inputrec *ir)
     sfree(ir->opts.SAsteps);
     sfree(ir->opts.bOPT);
     sfree(ir->opts.bTS);
+    sfree(ir->opts.egp_flags);
+    done_lambdas(ir->fepvals);
     sfree(ir->fepvals);
     sfree(ir->expandedvals);
     sfree(ir->simtempvals);