Move essential dynamics / flooding code to separate directory
authorCarsten Kutzner <ckutzne@gwdg.de>
Tue, 7 Jan 2014 17:48:38 +0000 (18:48 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Sat, 11 Jan 2014 13:41:09 +0000 (14:41 +0100)
Part of #1415 Get rid of legacyheaders.

Additional changes:
- provided doxygen-style documentation for functions in edsam.h
  (partly copied over from edsam.c and removed there to avoid
  duplication)
- uncrustified edsam.c and edsam.h

Change-Id: If4af498470c5200d50ac1d1b5537917c873380b5

src/gromacs/CMakeLists.txt
src/gromacs/essentialdynamics/CMakeLists.txt [new file with mode: 0644]
src/gromacs/essentialdynamics/edsam.c [moved from src/gromacs/mdlib/edsam.c with 98% similarity]
src/gromacs/essentialdynamics/edsam.h [new file with mode: 0644]
src/gromacs/legacyheaders/edsam.h [deleted file]
src/gromacs/legacyheaders/mdrun.h
src/gromacs/mdlib/constr.c
src/gromacs/mdlib/sim_util.c
src/gromacs/mdlib/update.c
src/programs/mdrun/membed.c
src/programs/mdrun/runner.c

index 1eb7d8c09ad2fc5be2049131ac72e446699edd29..cae997f4e6adb37ae24f1c973c1f8064c687a1aa 100644 (file)
@@ -57,6 +57,7 @@ add_subdirectory(options)
 add_subdirectory(timing)
 add_subdirectory(utility)
 add_subdirectory(fileio)
+add_subdirectory(essentialdynamics)
 if (NOT GMX_BUILD_MDRUN_ONLY)
     add_subdirectory(legacyheaders)
     add_subdirectory(gmxana)
diff --git a/src/gromacs/essentialdynamics/CMakeLists.txt b/src/gromacs/essentialdynamics/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3e8b453
--- /dev/null
@@ -0,0 +1,40 @@
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2014, 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.
+
+file(GLOB ESSENTIALDYNAMICS_SOURCES *.cpp *.c)
+set(LIBGROMACS_SOURCES ${LIBGROMACS_SOURCES} ${ESSENTIALDYNAMICS_SOURCES} PARENT_SCOPE)
+
+if (BUILD_TESTING)
+#    add_subdirectory(tests)
+endif (BUILD_TESTING)
similarity index 98%
rename from src/gromacs/mdlib/edsam.c
rename to src/gromacs/essentialdynamics/edsam.c
index d85d598195a4abc19b451560f893f40a579ee703..f862b6db9293131380b853bb5a0e810ecd3253e8 100644 (file)
 #include "physics.h"
 #include "nrjac.h"
 #include "mtop_util.h"
-#include "edsam.h"
+#include "gromacs/essentialdynamics/edsam.h"
 #include "gromacs/fileio/gmxfio.h"
 #include "xvgr.h"
-#include "groupcoord.h"
+#include "gromacs/mdlib/groupcoord.h"
 
 
 /* We use the same defines as in mvdata.c here */
@@ -238,12 +238,12 @@ static void write_edo_legend(gmx_edsam_t ed, int nED, const output_env_t oenv);
  * for any of the ED groups? */
 static gmx_bool bNeedDoEdsam(t_edpar *edi)
 {
-    return     edi->vecs.mon.neig
-            || edi->vecs.linfix.neig
-            || edi->vecs.linacc.neig
-            || edi->vecs.radfix.neig
-            || edi->vecs.radacc.neig
-            || edi->vecs.radcon.neig;
+    return edi->vecs.mon.neig
+           || edi->vecs.linfix.neig
+           || edi->vecs.linacc.neig
+           || edi->vecs.radfix.neig
+           || edi->vecs.radacc.neig
+           || edi->vecs.radcon.neig;
 }
 
 
@@ -1054,14 +1054,14 @@ static void do_single_flood(
 
 /* Main flooding routine, called from do_force */
 extern void do_flood(
-        t_commrec       *cr,      /* Communication record */
-        t_inputrec      *ir,      /* Input record */
-        rvec             x[],     /* Positions on the local processor */
-        rvec             force[], /* forcefield forces, to these the flooding forces are added */
-        gmx_edsam_t      ed,      /* ed data structure contains all ED and flooding groups */
-        matrix           box,     /* the box */
-        gmx_int64_t      step,    /* The relative time step since ir->init_step is already subtracted */
-        gmx_bool         bNS)     /* Are we in a neighbor searching step? */
+        t_commrec       *cr,
+        t_inputrec      *ir,
+        rvec             x[],
+        rvec             force[],
+        gmx_edsam_t      ed,
+        matrix           box,
+        gmx_int64_t      step,
+        gmx_bool         bNS)
 {
     t_edpar *edi;
 
@@ -2606,7 +2606,7 @@ static void write_edo_legend(gmx_edsam_t ed, int nED, const output_env_t oenv)
     edi         = ed->edpar;
     for (nr_edi = 1; nr_edi <= nED; nr_edi++)
     {
-        if ( bNeedDoEdsam(edi) ) /* Only print ED legend if at least one ED option is on */
+        if (bNeedDoEdsam(edi))  /* Only print ED legend if at least one ED option is on */
         {
             nice_legend(&setname, &nsets, &LegendStr, "RMSD to ref", "nm", get_EDgroupChar(nr_edi, nED) );
 
@@ -2648,12 +2648,14 @@ static void write_edo_legend(gmx_edsam_t ed, int nED, const output_env_t oenv)
 }
 
 
-void init_edsam(gmx_mtop_t   *mtop,  /* global topology                    */
-                t_inputrec   *ir,    /* input record                       */
-                t_commrec    *cr,    /* communication record               */
-                gmx_edsam_t   ed,    /* contains all ED data               */
-                rvec          x[],   /* positions of the whole MD system   */
-                matrix        box,   /* the box                            */
+/* Init routine for ED and flooding. Calls init_edi in a loop for every .edi-cycle
+ * contained in the input file, creates a NULL terminated list of t_edpar structures */
+void init_edsam(gmx_mtop_t   *mtop,
+                t_inputrec   *ir,
+                t_commrec    *cr,
+                gmx_edsam_t   ed,
+                rvec          x[],
+                matrix        box,
                 edsamstate_t *EDstate)
 {
     t_edpar *edi = NULL;                    /* points to a single edi data set */
@@ -3004,8 +3006,8 @@ void init_edsam(gmx_mtop_t   *mtop,  /* global topology                    */
 void do_edsam(t_inputrec     *ir,
               gmx_int64_t     step,
               t_commrec      *cr,
-              rvec            xs[], /* The local current positions on this processor */
-              rvec            v[],  /* The velocities */
+              rvec            xs[],
+              rvec            v[],
               matrix          box,
               gmx_edsam_t     ed)
 {
@@ -3041,7 +3043,7 @@ void do_edsam(t_inputrec     *ir,
     while (edi != NULL)
     {
         edinr++;
-        if ( bNeedDoEdsam(edi) )
+        if (bNeedDoEdsam(edi))
         {
 
             buf = edi->buf->do_edsam;
diff --git a/src/gromacs/essentialdynamics/edsam.h b/src/gromacs/essentialdynamics/edsam.h
new file mode 100644 (file)
index 0000000..9a1c410
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2013, 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.
+ */
+/*! \libinternal \file
+ *
+ * \brief
+ * Declares functions to calculate both essential dynamics constraints
+ * as well as flooding potentials and forces.
+ *
+ * \authors Bert de Groot <bgroot@gwdg.de>, Oliver Lange <oliver.lange@tum.de>,
+ * Carsten Kutzner <ckutzne@gwdg.de>
+ *
+ * \inlibraryapi
+ */
+#ifndef GMX_ESSENTIALDYNAMICS_EDSAM_H
+#define GMX_ESSENTIALDYNAMICS_EDSAM_H
+
+#include "typedefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! \brief Applies essential dynamics constrains as defined in the .edi input file.
+ *
+ * \param ir                MD input parameter record.
+ * \param step              Number of the time step.
+ * \param cr                Data needed for MPI communication.
+ * \param xs                The local positions on this processor.
+ * \param v                 The local velocities.
+ * \param box               The simulation box.
+ * \param ed                The essential dynamics data.
+ */
+void do_edsam(t_inputrec *ir, gmx_int64_t step,
+              t_commrec *cr, rvec xs[], rvec v[], matrix box, gmx_edsam_t ed);
+
+
+/*! \brief Reads in the .edi file containing the essential dynamics and flooding data.
+ *
+ * This function opens the ED input and output files, reads in all datasets it finds
+ * in the input file, and cross-checks whether the .edi file information is consistent
+ * with the essential dynamics data found in the checkpoint file (if present).
+ * gmx make_edi can be used to create an .edi input file.
+ *
+ * \param natoms            Number of atoms of the whole MD system.
+ * \param EDstate           Essential dynamics and flooding data stored in the checkpoint file.
+ * \param nfile             Number of entries (files) in the fnm structure.
+ * \param fnm               The filenames struct; it contains also the names of the
+ *                          essential dynamics and flooding in + output files.
+ * \param Flags             Flags passed over from main, used to determine
+ *                          whether we are appending.
+ * \param oenv              Needed to open the output xvgr file.
+ * \param cr                Data needed for MPI communication.
+ * \returns                 Pointer to the initialized essential dynamics / flooding data.
+ */
+gmx_edsam_t ed_open(int natoms, edsamstate_t *EDstate, int nfile, const t_filenm fnm[],
+                    unsigned long Flags, const output_env_t oenv, t_commrec *cr);
+
+
+/*! \brief Initializes the essential dynamics and flooding module.
+ *
+ * \param mtop              Molecular topology.
+ * \param ir                MD input parameter record.
+ * \param cr                Data needed for MPI communication.
+ * \param ed                The essential dynamics data.
+ * \param x                 Positions of the whole MD system.
+ * \param box               The simulation box.
+ * \param EDstate           ED data stored in the checkpoint file.
+ */
+void init_edsam(gmx_mtop_t *mtop, t_inputrec *ir, t_commrec *cr,
+                gmx_edsam_t ed, rvec x[], matrix box, edsamstate_t *EDstate);
+
+
+/*! \brief Make a selection of the home atoms for the ED groups.
+ *
+ * Should be called at every domain decomposition.
+ *
+ * \param dd                Domain decomposition data.
+ * \param ed                Essential dynamics and flooding data.
+ */
+void dd_make_local_ed_indices(gmx_domdec_t *dd, gmx_edsam_t ed);
+
+
+/*! \brief Evaluate the flooding potential(s) and forces as requested in the .edi input file.
+ *
+ * \param cr                Data needed for MPI communication.
+ * \param ir                MD input parameter record.
+ * \param x                 Positions on the local processor.
+ * \param force             Forcefield forces to which the flooding forces are added.
+ * \param ed                The essential dynamics data.
+ * \param box               The simulation box.
+ * \param step              Number of the time step.
+ * \param bNS               Are we in a neighbor searching step?
+ */
+void do_flood(t_commrec *cr, t_inputrec *ir, rvec x[], rvec force[], gmx_edsam_t ed,
+              matrix box, gmx_int64_t step, gmx_bool bNS);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/gromacs/legacyheaders/edsam.h b/src/gromacs/legacyheaders/edsam.h
deleted file mode 100644 (file)
index f4bd76d..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, 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.
- */
-
-#ifndef _edsam_h
-#define _edsam_h
-
-#include "typedefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void do_edsam(t_inputrec *ir, gmx_int64_t step,
-              t_commrec *cr, rvec xs[], rvec v[], matrix box, gmx_edsam_t ed);
-/* Essential dynamics constraints, called from constrain() */
-
-gmx_edsam_t ed_open(int natoms, edsamstate_t *EDstate, int nfile, const t_filenm fnm[],
-                    unsigned long Flags, const output_env_t oenv, t_commrec *cr);
-/* Sets the ED input/output filenames, opens output file */
-
-void init_edsam(gmx_mtop_t *mtop, t_inputrec *ir, t_commrec *cr,
-                gmx_edsam_t ed, rvec x[], matrix box, edsamstate_t *edsamstate);
-/* Init routine for ED and flooding. Calls init_edi in a loop for every .edi-cycle
- * contained in the input file, creates a NULL terminated list of t_edpar structures */
-
-void dd_make_local_ed_indices(gmx_domdec_t *dd, gmx_edsam_t ed);
-/* Make a selection of the home atoms for the ED groups.
- * Should be called at every domain decomposition. */
-
-void do_flood(t_commrec *cr, t_inputrec *ir, rvec x[], rvec force[], gmx_edsam_t ed,
-              matrix box, gmx_int64_t step, gmx_bool bNS);
-/* Flooding - called from do_force() */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _edsam_h */
index 40c108cc6750bca6805ca17f96216ca245c86d1c..51c370f08a9fdaff0cd1c697b21a0c767f0f77ab 100644 (file)
@@ -46,7 +46,6 @@
 #include "tgroup.h"
 #include "../fileio/filenm.h"
 #include "mshift.h"
-#include "edsam.h"
 #include "mdebin.h"
 #include "vcm.h"
 #include "vsite.h"
index 469ef5b9685dc487716631fcd9447a7f863221b4..e73e77d274c429062eeb107eaa621305fc107192 100644 (file)
@@ -58,6 +58,8 @@
 #include "gromacs/fileio/gmxfio.h"
 #include "macros.h"
 #include "gmx_omp_nthreads.h"
+#include "gromacs/essentialdynamics/edsam.h"
+
 
 typedef struct gmx_constr {
     int                ncon_tot;       /* The total number of constraints    */
index b76cfcc948ca5e23e6c1dd2bf6578904bfe06cca..3ae2e92c55551716065f592bfaa0d94b03456dd5 100644 (file)
@@ -85,6 +85,7 @@
 #include "gromacs/timing/wallcycle.h"
 #include "gromacs/timing/walltime_accounting.h"
 #include "gromacs/utility/gmxmpi.h"
+#include "gromacs/essentialdynamics/edsam.h"
 
 #include "adress.h"
 #include "qmmm.h"
index 2297ec1e0676db827ac512f5888dcff88a30528c..06ea1fec250ab1991d47ef0753e34de0160c4e9f 100644 (file)
@@ -60,7 +60,6 @@
 #include "txtdump.h"
 #include "mdrun.h"
 #include "constr.h"
-#include "edsam.h"
 #include "pull.h"
 #include "disre.h"
 #include "orires.h"
index 1b46fb3e6075650602975546c3f1f45067e95adf..738cb3fe30b50daae91de56f81ee0874c8577362 100644 (file)
@@ -45,7 +45,7 @@
 #include "macros.h"
 #include "main.h"
 #include "gromacs/fileio/futil.h"
-#include "edsam.h"
+#include "gromacs/essentialdynamics/edsam.h"
 #include "index.h"
 #include "physics.h"
 #include "names.h"
index ed32d5f0995fbda6da65a30184111fa539b1aa15..6452f7885065c3d76be7a06f13c7e1e4267b6bdc 100644 (file)
@@ -87,6 +87,7 @@
 #include "gromacs/timing/wallcycle.h"
 #include "gromacs/utility/gmxmpi.h"
 #include "gromacs/utility/gmxomp.h"
+#include "gromacs/essentialdynamics/edsam.h"
 
 #ifdef GMX_FAHCORE
 #include "corewrap.h"