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_legacy.cuh"
51 #include "nbnxn_cuda_kernel.cuh"
53 #undef NB_KERNEL_FUNC_NAME
55 /* Analytical reaction-field kernels */
57 #define NB_KERNEL_FUNC_NAME(x,...) x##_rf##__VA_ARGS__
58 #include "nbnxn_cuda_kernel_legacy.cuh"
59 #include "nbnxn_cuda_kernel.cuh"
61 #undef NB_KERNEL_FUNC_NAME
63 /* Analytical Ewald interaction kernels
64 * NOTE: no legacy kernels with analytical Ewald.
67 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald##__VA_ARGS__
68 #include "nbnxn_cuda_kernel.cuh"
70 #undef NB_KERNEL_FUNC_NAME
72 /* Analytical Ewald interaction kernels with twin-range cut-off
73 * NOTE: no legacy kernels with analytical Ewald.
76 #define VDW_CUTOFF_CHECK
77 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_twin##__VA_ARGS__
78 #include "nbnxn_cuda_kernel.cuh"
80 #undef VDW_CUTOFF_CHECK
81 #undef NB_KERNEL_FUNC_NAME
83 /* Tabulated Ewald interaction kernels */
85 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_tab##__VA_ARGS__
86 #include "nbnxn_cuda_kernel_legacy.cuh"
87 #include "nbnxn_cuda_kernel.cuh"
89 #undef NB_KERNEL_FUNC_NAME
91 /* Tabulated Ewald interaction kernels with twin-range cut-off */
93 #define VDW_CUTOFF_CHECK
94 #define NB_KERNEL_FUNC_NAME(x,...) x##_ewald_tab_twin##__VA_ARGS__
95 #include "nbnxn_cuda_kernel_legacy.cuh"
96 #include "nbnxn_cuda_kernel.cuh"
98 #undef VDW_CUTOFF_CHECK
99 #undef NB_KERNEL_FUNC_NAME