added Verlet scheme and NxN non-bonded functionality
[alexxy/gromacs.git] / src / kernel / pme_switch.h
1 /* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*-
2  *
3  * 
4  *                This source code is part of
5  * 
6  *                 G   R   O   M   A   C   S
7  * 
8  *          GROningen MAchine for Chemical Simulations
9  * 
10  *                        VERSION 4.6.0
11  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
12  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
13  * Copyright (c) 2001-2011, The GROMACS development team,
14  * check out http://www.gromacs.org for more information.
15
16  * This program is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU General Public License
18  * as published by the Free Software Foundation; either version 2
19  * of the License, or (at your option) any later version.
20  * 
21  * If you want to redistribute modifications, please consider that
22  * scientific software is very special. Version control is crucial -
23  * bugs must be traceable. We will be happy to consider code for
24  * inclusion in the official distribution, but derived work must not
25  * be called official GROMACS. Details are found in the README & COPYING
26  * files - if they are missing, get the official version at www.gromacs.org.
27  * 
28  * To help us fund GROMACS development, we humbly ask that you cite
29  * the papers on the package - you can find them in the top README file.
30  * 
31  * For more info, check our website at http://www.gromacs.org
32  * 
33  * And Hey:
34  * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
35  */
36
37 #ifndef _pme_switch_h
38 #define _pme_switch_h
39
40 typedef struct pme_switch *pme_switch_t;
41
42 /* Initialze the PME grid tuning data and infrastructure */
43 void switch_pme_init(pme_switch_t *pmes_p,
44                      const t_inputrec *ir,matrix box,
45                      const interaction_const_t *ic,
46                      gmx_pme_t pmedata);
47
48 /* Adjust the PME grid and Coulomb cut-off.
49  * Returns TRUE the tuning continues, FALSE is the tuning is done.
50  */
51 gmx_bool switch_pme(pme_switch_t pmes,
52                     t_commrec *cr,
53                     FILE *fp_err,
54                     FILE *fp_log,
55                     t_inputrec *ir,
56                     t_state *state,
57                     double cycles,
58                     interaction_const_t *ic,
59                     nonbonded_verlet_t *nbv,
60                     gmx_pme_t *pmedata,
61                     int step);
62
63 /* Restart the PME tuning, discarding all timings gathered up till now */
64 void restart_switch_pme(pme_switch_t pmes, int n);
65
66 #endif /* _pme_switch_h */