/usr/include/gromacs/pull_rotation.h is in gromacs-dev 4.6.5-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | /*
* This file is part of the GROMACS molecular simulation package.
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2008, The GROMACS development team,
* check out http://www.gromacs.org for more information.
* Copyright (c) 2012,2013, by the GROMACS development team, led by
* David van der Spoel, Berk Hess, 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 pull_rotation.h
*
* @brief Enforced rotation of protein parts or other groups of particles.
*
* This file contains routines that are used to enforce rotational motion
* upon a subgroup of particles.
*
*/
#ifndef _pull_rotation_h
#define _pull_rotation_h
#include "visibility.h"
#include "vec.h"
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
/*! \brief Initialize the enforced rotation groups.
*
* This routine does the memory allocation for various helper arrays, opens
* the output files etc.
*
* \param fplog General output file, normally md.log.
* \param ir Struct containing MD input parameters, among those
* also the enforced rotation parameters.
* \param nfile Number of entries in the fnm structure.
* \param fnm The filenames struct containing also the names
* of the rotation output files.
* \param cr Pointer to MPI communication data.
* \param x The positions of all MD particles.
* \param box The simulation box.
* \param mtop Molecular topology.
* \param oenv Needed to open the rotation output xvgr file.
* \param Flags Flags passed over from main, used to determine
* whether or not we are doing a rerun.
*/
GMX_LIBMD_EXPORT
extern void init_rot(FILE *fplog, t_inputrec *ir, int nfile, const t_filenm fnm[],
t_commrec *cr, rvec *x, matrix box, gmx_mtop_t *mtop, const output_env_t oenv,
gmx_bool bVerbose, unsigned long Flags);
/*! \brief Make a selection of the home atoms for all enforced rotation groups.
*
* This routine is similar to dd_make_local_pull_groups, but works only with
* domain decomposition. It should be called at every domain decomposition.
*
* \param dd Structure containing domain decomposition data.
* \param rot Pointer to all the enforced rotation data.
*/
extern void dd_make_local_rotation_groups(gmx_domdec_t *dd, t_rot *rot);
/*! \brief Calculation of the enforced rotation potential.
*
* This is the main enforced rotation module which is called during every time
* step. Here the rotation potential as well as the resulting forces are
* calculated.
*
* \param cr Pointer to MPI communication data.
* \param ir Struct containing MD input parameters, among those
* \param box Simulation box, needed to make group whole.
* \param x The positions of all the local particles.
* \param t Time.
* \param step The time step.
* \param wcycle During the potential calculation the wallcycles are
* counted. Later they enter the dynamic load balancing.
* \param bNS After domain decomposition / neighborsearching several
* local arrays have to be updated (masses, shifts)
*/
extern void do_rotation(t_commrec *cr, t_inputrec *ir, matrix box, rvec x[], real t,
gmx_large_int_t step, gmx_wallcycle_t wcycle, gmx_bool bNS);
/*! \brief Add the enforced rotation forces to the official force array.
*
* Adds the forces from enforced rotation potential to the local forces and
* sums up the contributions to the rotation potential from all the nodes. Since
* this needs communication, this routine should be called after the SR forces
* have been evaluated (in order not to spoil cycle counts).
* This routine also outputs data to the various rotation output files (e.g.
* the potential, the angle of the group, torques and more).
*
* \param rot Pointer to all the enforced rotation data.
* \param f The local forces to which the rotational forces have
* to be added.
* \param cr Pointer to MPI communication data.
* \param step The time step, used for output.
* \param t Time, used for output.
*/
extern real add_rot_forces(t_rot *rot, rvec f[], t_commrec *cr, gmx_large_int_t step, real t);
/*! \brief Close the enforced rotation output files.
*
* \param rot Pointer to all the enforced rotation data.
*/
GMX_LIBMD_EXPORT
extern void finish_rot(t_rot *rot);
#ifdef __cplusplus
}
#endif
#endif
|