Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / legacyheaders / update.h
index a83c71c20d17df9bbb02760e60de37d60ffad435..ce3e00d722eae19631d8c222c2613149385cdec5 100644 (file)
 /*
- * 
- *                This source code is part of
- * 
- *                 G   R   O   M   A   C   S
- * 
- *          GROningen MAchine for Chemical Simulations
- * 
- *                        VERSION 3.2.0
- * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
+ * 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,
- * check out http://www.gromacs.org for more information.
-
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2013,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.
- * 
- * If you want to redistribute modifications, 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 www.gromacs.org.
- * 
+ *
+ * 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 papers on the package - you can find them in the top README file.
- * 
- * For more info, check our website at http://www.gromacs.org
- * 
- * And Hey:
- * Gromacs Runs On Most of All Computer Systems
+ * the research papers on the package. Check out http://www.gromacs.org.
  */
 
 #ifndef _update_h
 #define _update_h
 
-#include "typedefs.h"
-#include "mshift.h"
-#include "tgroup.h"
-#include "network.h"
-#include "force.h"
-#include "pull.h"
-#include "gmx_random.h"
-#include "maths.h"
+#include "gromacs/legacyheaders/network.h"
+#include "gromacs/legacyheaders/tgroup.h"
+#include "gromacs/legacyheaders/typedefs.h"
+#include "gromacs/timing/wallcycle.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+struct t_graph;
+
 /* Abstract type for stochastic dynamics */
 typedef struct gmx_update *gmx_update_t;
 
 /* Initialize the stochastic dynamics struct */
-gmx_update_t init_update(FILE *fplog,t_inputrec *ir);
+gmx_update_t init_update(t_inputrec *ir);
 
 /* Store the random state from sd in state */
-void get_stochd_state(gmx_update_t sd,t_state *state);
+void get_stochd_state(gmx_update_t sd, t_state *state);
 
 /* Set the random in sd from state */
-void set_stochd_state(gmx_update_t sd,t_state *state);
+void set_stochd_state(gmx_update_t sd, t_state *state);
 
 /* Store the box at step step
  * as a reference state for simulations with box deformation.
  */
 void set_deform_reference_box(gmx_update_t upd,
-                                    gmx_large_int_t step,matrix box);
-
-void update_tcouple(FILE         *fplog,
-                          gmx_large_int_t   step,
-                          t_inputrec   *inputrec,   
-                          t_state      *state,
-                          gmx_ekindata_t *ekind,
-                          gmx_wallcycle_t wcycle,
-                          gmx_update_t upd,
-                          t_extmass    *MassQ,
-                          t_mdatoms    *md
-);
-
-void update_pcouple(FILE         *fplog,
-                          gmx_large_int_t   step,
-                          t_inputrec   *inputrec,   
-                          t_state      *state,
-                          matrix       pcoupl_mu,
-                          matrix       M,
-                          gmx_wallcycle_t wcycle,
-                          gmx_update_t upd,
-                          gmx_bool         bInitStep);
-
-void update_coords(FILE         *fplog,
-                         gmx_large_int_t   step,
-                         t_inputrec   *inputrec,  /* input record and box stuff        */
-                         t_mdatoms    *md,
-                         t_state      *state,
-                         gmx_bool     bMolPBC,
-                         rvec         *f,    /* forces on home particles */
-                         gmx_bool         bDoLR,
-                         rvec         *f_lr,
-                         t_fcdata     *fcd,
-                         gmx_ekindata_t *ekind,
-                         matrix       M,
-                         gmx_wallcycle_t wcycle,
-                         gmx_update_t upd,
-                         gmx_bool         bInitStep,
-                         int          bUpdatePart,
-                         t_commrec    *cr,  /* these shouldn't be here -- need to think about it */
-                         t_nrnb       *nrnb,
-                         gmx_constr_t constr,
-                         t_idef       *idef);
+                              gmx_int64_t step, matrix box);
+
+void update_tcouple(gmx_int64_t       step,
+                    t_inputrec       *inputrec,
+                    t_state          *state,
+                    gmx_ekindata_t   *ekind,
+                    t_extmass        *MassQ,
+                    t_mdatoms        *md
+                    );
+
+void update_pcouple(FILE             *fplog,
+                    gmx_int64_t       step,
+                    t_inputrec       *inputrec,
+                    t_state          *state,
+                    matrix            pcoupl_mu,
+                    matrix            M,
+                    gmx_bool          bInitStep);
+
+void update_coords(FILE             *fplog,
+                   gmx_int64_t       step,
+                   t_inputrec       *inputrec, /* input record and box stuff   */
+                   t_mdatoms        *md,
+                   t_state          *state,
+                   gmx_bool          bMolPBC,
+                   rvec             *f, /* forces on home particles */
+                   gmx_bool          bDoLR,
+                   rvec             *f_lr,
+                   tensor           *vir_lr_constr,
+                   t_fcdata         *fcd,
+                   gmx_ekindata_t   *ekind,
+                   matrix            M,
+                   gmx_update_t      upd,
+                   gmx_bool          bInitStep,
+                   int               bUpdatePart,
+                   t_commrec        *cr, /* these shouldn't be here -- need to think about it */
+                   t_nrnb           *nrnb,
+                   gmx_constr_t      constr,
+                   t_idef           *idef);
 
 /* Return TRUE if OK, FALSE in case of Shake Error */
 
-extern gmx_bool update_randomize_velocities(t_inputrec *ir, gmx_large_int_t step, t_mdatoms *md, t_state *state, gmx_update_t upd, t_idef *idef, gmx_constr_t constr);
-
-void update_constraints(FILE         *fplog,
-                              gmx_large_int_t   step,
-                              real         *dvdlambda, /* FEP stuff */
-                              t_inputrec   *inputrec,  /* input record and box stuff   */
-                              gmx_ekindata_t *ekind,
-                              t_mdatoms    *md,
-                              t_state      *state,
-                              gmx_bool     bMolPBC,
-                              t_graph      *graph,     
-                              rvec         force[],    /* forces on home particles */
-                              t_idef       *idef,
-                              tensor       vir_part,
-                              tensor       vir,
-                              t_commrec    *cr,
-                              t_nrnb       *nrnb,
-                              gmx_wallcycle_t wcycle,
-                              gmx_update_t upd,
-                              gmx_constr_t constr,
-                              gmx_bool         bInitStep,
-                              gmx_bool         bFirstHalf,
-                              gmx_bool         bCalcVir,
-                              real         vetanew);
+extern gmx_bool update_randomize_velocities(t_inputrec *ir, gmx_int64_t step, const t_commrec *cr, t_mdatoms *md, t_state *state, gmx_update_t upd, gmx_constr_t constr);
+
+void update_constraints(FILE             *fplog,
+                        gmx_int64_t       step,
+                        real             *dvdlambda, /* FEP stuff */
+                        t_inputrec       *inputrec,  /* input record and box stuff     */
+                        gmx_ekindata_t   *ekind,
+                        t_mdatoms        *md,
+                        t_state          *state,
+                        gmx_bool          bMolPBC,
+                        struct t_graph   *graph,
+                        rvec              force[], /* forces on home particles */
+                        t_idef           *idef,
+                        tensor            vir_part,
+                        t_commrec        *cr,
+                        t_nrnb           *nrnb,
+                        gmx_wallcycle_t   wcycle,
+                        gmx_update_t      upd,
+                        gmx_constr_t      constr,
+                        gmx_bool          bFirstHalf,
+                        gmx_bool          bCalcVir,
+                        real              vetanew);
 
 /* Return TRUE if OK, FALSE in case of Shake Error */
 
-void update_box(FILE         *fplog,
-                      gmx_large_int_t   step,
-                      t_inputrec   *inputrec,  /* input record and box stuff   */
-                      t_mdatoms    *md,
-                      t_state      *state,
-                      t_graph      *graph,
-                      rvec         force[],    /* forces on home particles */
-                      matrix       *scale_tot,
-                      matrix       pcoupl_mu,              
-                      t_nrnb       *nrnb,
-                      gmx_wallcycle_t wcycle,
-                      gmx_update_t upd,
-                      gmx_bool         bInitStep,
-                      gmx_bool         bFirstHalf);
+void update_box(FILE             *fplog,
+                gmx_int64_t       step,
+                t_inputrec       *inputrec, /* input record and box stuff      */
+                t_mdatoms        *md,
+                t_state          *state,
+                rvec              force[], /* forces on home particles */
+                matrix           *scale_tot,
+                matrix            pcoupl_mu,
+                t_nrnb           *nrnb,
+                gmx_update_t      upd);
 /* Return TRUE if OK, FALSE in case of Shake Error */
 
-void calc_ke_part(t_state *state,t_grpopts *opts,t_mdatoms *md,
-                        gmx_ekindata_t *ekind,t_nrnb *nrnb,gmx_bool bEkinAveVel, gmx_bool bSaveOld);
+void calc_ke_part(t_state *state, t_grpopts *opts, t_mdatoms *md,
+                  gmx_ekindata_t *ekind, t_nrnb *nrnb, gmx_bool bEkinAveVel, gmx_bool bSaveOld);
 /*
  * Compute the partial kinetic energy for home particles;
  * will be accumulated in the calling routine.
  * The tensor is
  *
  * Ekin = SUM(i) 0.5 m[i] v[i] (x) v[i]
- *    
+ *
  *     use v[i] = v[i] - u[i] when calculating temperature
  *
  * u must be accumulated already.
@@ -174,81 +163,82 @@ void calc_ke_part(t_state *state,t_grpopts *opts,t_mdatoms *md,
 
 
 void
-init_ekinstate(ekinstate_t *ekinstate,const t_inputrec *ir);
+init_ekinstate(ekinstate_t *ekinstate, const t_inputrec *ir);
 
 void
-update_ekinstate(ekinstate_t *ekinstate,gmx_ekindata_t *ekind);
+update_ekinstate(ekinstate_t *ekinstate, gmx_ekindata_t *ekind);
 
 void
 restore_ekinstate_from_state(t_commrec *cr,
-                            gmx_ekindata_t *ekind,ekinstate_t *ekinstate);
+                             gmx_ekindata_t *ekind, ekinstate_t *ekinstate);
 
-void berendsen_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt);
+void berendsen_tcoupl(t_inputrec *ir, gmx_ekindata_t *ekind, real dt);
 
-void andersen_tcoupl(t_inputrec *ir,t_mdatoms *md,t_state *state, gmx_rng_t rng, real rate, t_idef *idef, int nblocks, int *sblock,gmx_bool *randatom, int *randatom_list, gmx_bool *randomize, real *boltzfac);
+void andersen_tcoupl(t_inputrec *ir, gmx_int64_t step,
+                     const t_commrec *cr, const t_mdatoms *md, t_state *state, real rate, const gmx_bool *randomize, const real *boltzfac);
 
-void nosehoover_tcoupl(t_grpopts *opts,gmx_ekindata_t *ekind,real dt,
-                             double xi[],double vxi[],t_extmass *MassQ);
+void nosehoover_tcoupl(t_grpopts *opts, gmx_ekindata_t *ekind, real dt,
+                       double xi[], double vxi[], t_extmass *MassQ);
 
 t_state *init_bufstate(const t_state *template_state);
 
 void destroy_bufstate(t_state *state);
 
-void trotter_update(t_inputrec *ir, gmx_large_int_t step, gmx_ekindata_t *ekind, 
-                          gmx_enerdata_t *enerd, t_state *state, tensor vir, t_mdatoms *md, 
-                          t_extmass *MassQ, int **trotter_seqlist, int trotter_seqno);
+void trotter_update(t_inputrec *ir, gmx_int64_t step, gmx_ekindata_t *ekind,
+                    gmx_enerdata_t *enerd, t_state *state, tensor vir, t_mdatoms *md,
+                    t_extmass *MassQ, int **trotter_seqlist, int trotter_seqno);
 
-int **init_npt_vars(t_inputrec *ir, t_state *state, t_extmass *Mass, gmx_bool bTrotter); 
+int **init_npt_vars(t_inputrec *ir, t_state *state, t_extmass *Mass, gmx_bool bTrotter);
 
 real NPT_energy(t_inputrec *ir, t_state *state, t_extmass *MassQ);
 /* computes all the pressure/tempertature control energy terms to get a conserved energy */
 
 void NBaroT_trotter(t_grpopts *opts, real dt,
-                          double xi[],double vxi[],real *veta, t_extmass *MassQ);
+                    double xi[], double vxi[], real *veta, t_extmass *MassQ);
 
-void vrescale_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt,
-                           double therm_integral[],
-                           gmx_rng_t rng);
+void vrescale_tcoupl(t_inputrec *ir, gmx_int64_t step,
+                     gmx_ekindata_t *ekind, real dt,
+                     double therm_integral[]);
 /* Compute temperature scaling. For V-rescale it is done in update. */
 
-real vrescale_energy(t_grpopts *opts,double therm_integral[]);
+real vrescale_energy(t_grpopts *opts, double therm_integral[]);
 /* Returns the V-rescale contribution to the conserved energy */
 
-void rescale_velocities(gmx_ekindata_t *ekind,t_mdatoms *mdatoms,
-                              int start,int end,rvec v[]);
+void rescale_velocities(gmx_ekindata_t *ekind, t_mdatoms *mdatoms,
+                        int start, int end, rvec v[]);
 /* Rescale the velocities with the scaling factor in ekind */
 
-void update_annealing_target_temp(t_grpopts *opts,real t); 
+void update_annealing_target_temp(t_grpopts *opts, real t);
 /* Set reference temp for simulated annealing at time t*/
 
-real calc_temp(real ekin,real nrdf);
+real calc_temp(real ekin, real nrdf);
 /* Calculate the temperature */
 
-real calc_pres(int ePBC,int nwall,matrix box,tensor ekin,tensor vir,
-              tensor pres);
+real calc_pres(int ePBC, int nwall, matrix box, tensor ekin, tensor vir,
+               tensor pres);
 /* Calculate the pressure tensor, returns the scalar pressure.
  * The unit of pressure is bar.
  */
 
-void parrinellorahman_pcoupl(FILE *fplog,gmx_large_int_t step,
-                                   t_inputrec *ir,real dt,tensor pres,
-                                   tensor box,tensor box_rel,tensor boxv,
-                                   tensor M,matrix mu,
-                                   gmx_bool bFirstStep);
-  
-void berendsen_pcoupl(FILE *fplog,gmx_large_int_t step,
-                            t_inputrec *ir,real dt,tensor pres,matrix box,
-                            matrix mu);
-
-
-void berendsen_pscale(t_inputrec *ir,matrix mu,
-                            matrix box,matrix box_rel,
-                            int start,int nr_atoms,
-                            rvec x[],unsigned short cFREEZE[],
-                            t_nrnb *nrnb);
-
-void correct_ekin(FILE *log,int start,int end,rvec v[],
-                        rvec vcm,real mass[],real tmass,tensor ekin);
+void parrinellorahman_pcoupl(FILE *fplog, gmx_int64_t step,
+                             t_inputrec *ir, real dt, tensor pres,
+                             tensor box, tensor box_rel, tensor boxv,
+                             tensor M, matrix mu,
+                             gmx_bool bFirstStep);
+
+void berendsen_pcoupl(FILE *fplog, gmx_int64_t step,
+                      t_inputrec *ir, real dt, tensor pres, matrix box,
+                      matrix mu);
+
+
+void berendsen_pscale(t_inputrec *ir, matrix mu,
+                      matrix box, matrix box_rel,
+                      int start, int nr_atoms,
+                      rvec x[], unsigned short cFREEZE[],
+                      t_nrnb *nrnb);
+
+void correct_ekin(FILE *log, int start, int end, rvec v[],
+                  rvec vcm, real mass[], real tmass, tensor ekin);
 /* Correct ekin for vcm */
 
 
@@ -256,5 +246,4 @@ void correct_ekin(FILE *log,int start,int end,rvec v[],
 }
 #endif
 
-#endif /* _update_h */
-
+#endif  /* _update_h */