1 /* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*-
4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
10 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12 * Copyright (c) 2001-2012, The GROMACS development team,
13 * check out http://www.gromacs.org for more information.
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * as published by the Free Software Foundation; either version 2
18 * of the License, or (at your option) any later version.
20 * If you want to redistribute modifications, please consider that
21 * scientific software is very special. Version control is crucial -
22 * bugs must be traceable. We will be happy to consider code for
23 * inclusion in the official distribution, but derived work must not
24 * be called official GROMACS. Details are found in the README & COPYING
25 * files - if they are missing, get the official version at www.gromacs.org.
27 * To help us fund GROMACS development, we humbly ask that you cite
28 * the papers on the package - you can find them in the top README file.
30 * For more info, check our website at http://www.gromacs.org
33 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
37 * This header has the sole purpose of generating kernels for the supported
38 * electrostatics types: cut-off, reaction-field, Ewald, and tabulated Ewald.
40 * The Ewald kernels have twin-range cut-off versions with rcoul != rvdw which
41 * require an extra distance check to enable PP-PME load balancing
42 * (otherwise, by default rcoul == rvdw).
44 * NOTE: No include fence as it is meant to be included multiple times.
47 /* Analytical plain cut-off kernels */
49 #define NB_KERNEL_FUNC_NAME(x,...) x##_cutoff##__VA_ARGS__
50 #include "nbnxn_cuda_kernel.cuh"
52 #undef NB_KERNEL_FUNC_NAME
54 /* Analytical reaction-field kernels */
56 #define NB_KERNEL_FUNC_NAME(x,...) x##_rf##__VA_ARGS__
57 #include "nbnxn_cuda_kernel.cuh"
59 #undef NB_KERNEL_FUNC_NAME
61 /* Analytical Ewald interaction kernels
64 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald##__VA_ARGS__
65 #include "nbnxn_cuda_kernel.cuh"
67 #undef NB_KERNEL_FUNC_NAME
69 /* Analytical Ewald interaction kernels with twin-range cut-off
72 #define VDW_CUTOFF_CHECK
73 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_twin##__VA_ARGS__
74 #include "nbnxn_cuda_kernel.cuh"
76 #undef VDW_CUTOFF_CHECK
77 #undef NB_KERNEL_FUNC_NAME
79 /* Tabulated Ewald interaction kernels */
81 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_tab##__VA_ARGS__
82 #include "nbnxn_cuda_kernel.cuh"
84 #undef NB_KERNEL_FUNC_NAME
86 /* Tabulated Ewald interaction kernels with twin-range cut-off */
88 #define VDW_CUTOFF_CHECK
89 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_tab_twin##__VA_ARGS__
90 #include "nbnxn_cuda_kernel.cuh"
92 #undef VDW_CUTOFF_CHECK
93 #undef NB_KERNEL_FUNC_NAME