--- /dev/null
+[
+{ include: ["<boost/smart_ptr/shared_ptr.hpp>", "private", "<boost/shared_ptr.hpp>", "public"] },
+{ include: ["<xmmintrin.h>", "public", "<emmintrin.h>", "public"] },
+{ include: ["<emmintrin.h>", "public", "<pmmintrin.h>", "public"] },
+{ include: ["<pmmintrin.h>", "public", "<smmintrin.h>", "public"] },
+{ include: ["<smmintrin.h>", "public", "<immintrin.h>", "public"] },
+{ include: ["<avxintrin.h>", "private", "<immintrin.h>", "public"] },
+{ include: ['"mpi.h"', "private", '"gromacs/utility/gmxmpi.h"', "public"] },
+{ include: ['"thread_mpi/atomic/gcc_x86.h"', "private", '"thread_mpi/atomic.h"', "public"] },
+{ include: ['<immintrin.h>', "public", '"gromacs/simd/simd.h"', "public"] },
+{ include: ['"gromacs/simd/impl_x86_avx_256/impl_x86_avx_256.h"', "private", '"gromacs/simd/simd.h"', "public"] },
+{ symbol: ["M_SQRT2", "private", '"gromacs/math/utilities.h"', "public"] }
+]
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 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.
+#
+# 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.
+
+# The build and source folder can be specified with -B and -S respectively.
+# By default it assume "-B. -S..".
+# include-what-you-use needs to be in the path. Add --apply if you want
+# changes to be applied. Any extra arguments are added as is to the
+# command (can be used for extra defines or include paths).
+
+filename=
+build_path=.
+src_path=..
+cmd="include-what-you-use -DHAVE_CONFIG_H -mavx"
+
+# Read all special arguments and add others to the command
+apply=0
+for arg in "$@"; do
+ if [ $arg == "--apply" ]; then
+ apply=1
+ elif [[ $arg == -[SB] ]]; then
+ echo -S and -B require an argument
+ exit 1
+ elif [[ $arg == -B* ]]; then
+ build_path=${arg:2}
+ elif [[ $arg == -S* ]]; then
+ src_path=${arg:2}
+ elif [[ $arg != -* ]]; then
+ if [ "$filename" == "" ]; then
+ filename=$arg
+ else
+ echo "This script can only be run on one file at a time"
+ exit 1
+ fi
+ else
+ cmd="$cmd $arg"
+ fi
+done
+
+if [ "$filename" == "" ]; then
+ echo "No file specified"
+ exit 1
+fi
+
+# We cannot detect wether it is a C++ or C header. Should be fine to always use C++
+if [ "${filename##*.}" == "h" ]; then
+ cmd="$cmd -x c++"
+fi
+
+cmd="$cmd $filename"
+
+# Always use C++11.
+if [ "${filename##*.}" == "cpp" -o "${filename##*.}" == "h" ]; then
+ cmd="$cmd -std=c++11"
+fi
+
+# keep gmxpre.h for source files
+if [ "${filename##*.}" == "cpp" -o "${filename##*.}" == "c" ]; then
+ cmd="$cmd -Xiwyu --pch_in_code -Xiwyu --prefix_header_includes=keep"
+fi
+
+if [ $src_path == "." ]; then
+ src_folder="src" # ./src confuses IWYU
+else
+ src_folder="$src_path/src"
+fi
+
+cmd="$cmd -I${src_folder} -I${src_folder}/external/thread_mpi/include
+ -I$build_path/src -I${src_folder}/external/boost
+ -Xiwyu --mapping_file=${src_path}/admin/iwyu.imp"
+
+if [ $apply -eq 1 ] ; then
+ cmd="$cmd 2>&1 | fix_includes.py --nosafe_headers ||
+ ${src_path}/docs/doxygen/includesorter.py $filename -B$build_path -S$src_path"
+fi
+
+eval $cmd
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include "gromacs/ewald/pme-internal.h"
+#include "gromacs/fft/fft.h"
#include "gromacs/fft/parallel_3dfft.h"
-#include "gromacs/fileio/pdbio.h"
#include "gromacs/legacyheaders/macros.h"
-#include "gromacs/legacyheaders/network.h"
#include "gromacs/legacyheaders/nrnb.h"
-#include "gromacs/legacyheaders/txtdump.h"
-#include "gromacs/legacyheaders/typedefs.h"
#include "gromacs/legacyheaders/types/commrec.h"
+#include "gromacs/legacyheaders/types/enums.h"
+#include "gromacs/legacyheaders/types/forcerec.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/nrnb.h"
#include "gromacs/math/gmxcomplex.h"
#include "gromacs/math/units.h"
#include "gromacs/math/vec.h"
+#include "gromacs/math/vectypes.h"
+/* Include the SIMD macro file and then check for support */
+#include "gromacs/simd/simd.h"
+#include "gromacs/simd/simd_math.h"
#include "gromacs/timing/cyclecounter.h"
#include "gromacs/timing/wallcycle.h"
+#include "gromacs/timing/walltime_accounting.h"
+#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/fatalerror.h"
-#include "gromacs/utility/futil.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/gmxomp.h"
+#include "gromacs/utility/real.h"
#include "gromacs/utility/smalloc.h"
-/* Include the SIMD macro file and then check for support */
-#include "gromacs/simd/simd.h"
-#include "gromacs/simd/simd_math.h"
+#ifdef DEBUG_PME
+#include "gromacs/fileio/pdbio.h"
+#include "gromacs/utility/cstringutil.h"
+#include "gromacs/utility/futil.h"
+#endif
+
#ifdef GMX_SIMD_HAVE_REAL
/* Turn on arbitrary width SIMD intrinsics for PME solve */
# define PME_SIMD_SOLVE
#define PME_SPREAD_SIMD4_ALIGNED
#define PME_ORDER 4
#endif
-#include "gromacs/ewald/pme-simd4.h"
+#include "gromacs/ewald/pme-simd4.h" /* IWYU pragma: keep */
#else
DO_BSPLINE(4);
#endif
#ifdef PME_SIMD4_SPREAD_GATHER
#define PME_SPREAD_SIMD4_ALIGNED
#define PME_ORDER 5
-#include "gromacs/ewald/pme-simd4.h"
+#include "gromacs/ewald/pme-simd4.h" /* IWYU pragma: keep */
#else
DO_BSPLINE(5);
#endif
#define PME_GATHER_F_SIMD4_ALIGNED
#define PME_ORDER 4
#endif
-#include "gromacs/ewald/pme-simd4.h"
+#include "gromacs/ewald/pme-simd4.h" /* IWYU pragma: keep */
#else
DO_FSPLINE(4);
#endif
#ifdef PME_SIMD4_SPREAD_GATHER
#define PME_GATHER_F_SIMD4_ALIGNED
#define PME_ORDER 5
-#include "gromacs/ewald/pme-simd4.h"
+#include "gromacs/ewald/pme-simd4.h" /* IWYU pragma: keep */
#else
DO_FSPLINE(5);
#endif
#include <stdio.h>
-#include "gromacs/legacyheaders/network.h"
-#include "gromacs/legacyheaders/typedefs.h"
-#include "gromacs/math/gmxcomplex.h"
+#include "gromacs/legacyheaders/types/commrec_fwd.h"
+#include "gromacs/legacyheaders/types/forcerec.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/interaction_const.h"
+#include "gromacs/legacyheaders/types/nrnb.h"
+#include "gromacs/math/vectypes.h"
#include "gromacs/timing/wallcycle.h"
#include "gromacs/timing/walltime_accounting.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
#ifndef _domdec_h
#define _domdec_h
-#include "gromacs/legacyheaders/genborn.h"
-#include "gromacs/legacyheaders/typedefs.h"
+#include <stdio.h>
+
#include "gromacs/legacyheaders/vsite.h"
+#include "gromacs/legacyheaders/types/commrec_fwd.h"
+#include "gromacs/legacyheaders/types/constr.h"
+#include "gromacs/legacyheaders/types/forcerec.h"
+#include "gromacs/legacyheaders/types/hw_info.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/mdatom.h"
+#include "gromacs/legacyheaders/types/nrnb.h"
+#include "gromacs/legacyheaders/types/shellfc.h"
+#include "gromacs/legacyheaders/types/state.h"
+#include "gromacs/math/vectypes.h"
#include "gromacs/timing/wallcycle.h"
+#include "gromacs/topology/block.h"
+#include "gromacs/topology/idef.h"
+#include "gromacs/topology/topology.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
#ifndef _commrec_h
#define _commrec_h
-#include "gromacs/legacyheaders/typedefs.h"
+#include <stddef.h>
+
+#include "gromacs/legacyheaders/types/commrec_fwd.h" // IWYU pragma: export
+#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
gmx_nodecomm_t nc;
/* For domain decomposition */
- gmx_domdec_t *dd;
+ struct gmx_domdec_t *dd;
/* The duties of this node, see the defines above */
- int duty;
+ int duty;
- gmx_multisim_t *ms;
+ struct gmx_multisim_t *ms;
/* these buffers are used as destination buffers if MPI_IN_PLACE isn't
supported.*/
#endif
#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
typedef real rvec5[5];
#include "gromacs/legacyheaders/types/genborn.h"
#include "gromacs/legacyheaders/types/hw_info.h"
#include "gromacs/legacyheaders/types/interaction_const.h"
+#include "gromacs/legacyheaders/types/nblist.h"
#include "gromacs/legacyheaders/types/ns.h"
#include "gromacs/legacyheaders/types/qmmmrec.h"
+#include "gromacs/math/vectypes.h"
#include "gromacs/topology/idef.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
#ifndef GMX_LEGACYHEADERS_TYPES_GENBORN_H
#define GMX_LEGACYHEADERS_TYPES_GENBORN_H
+#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/real.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "gromacs/legacyheaders/types/simple.h"
-
typedef struct
{
int nbonds;
#ifndef GMX_LEGACYHEADERS_TYPES_GROUP_H
#define GMX_LEGACYHEADERS_TYPES_GROUP_H
-#include "gromacs/legacyheaders/types/simple.h"
+#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
#include "do_fit.h"
+#include <math.h>
+#include <stdio.h>
+
#include "gromacs/linearalgebra/nrjac.h"
#include "gromacs/math/utilities.h"
#include "gromacs/math/vec.h"
#include "gromacs/legacyheaders/types/simple.h"
#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/real.h"
#ifdef __cplusplus
#include "config.h"
#include <assert.h>
+#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <time.h>
#include <algorithm>
#include "gromacs/legacyheaders/constr.h"
#include "gromacs/legacyheaders/domdec_network.h"
#include "gromacs/legacyheaders/force.h"
+#include "gromacs/legacyheaders/genborn.h"
#include "gromacs/legacyheaders/gmx_ga2la.h"
#include "gromacs/legacyheaders/gmx_omp_nthreads.h"
#include "gromacs/legacyheaders/gpu_utils.h"
-#include "gromacs/legacyheaders/macros.h"
#include "gromacs/legacyheaders/mdatoms.h"
#include "gromacs/legacyheaders/mdrun.h"
#include "gromacs/legacyheaders/names.h"
#include "gromacs/legacyheaders/nsgrid.h"
#include "gromacs/legacyheaders/shellfc.h"
#include "gromacs/legacyheaders/typedefs.h"
-#include "gromacs/listed-forces/bonded.h"
+#include "gromacs/legacyheaders/vsite.h"
+#include "gromacs/legacyheaders/types/commrec.h"
+#include "gromacs/legacyheaders/types/constr.h"
+#include "gromacs/legacyheaders/types/enums.h"
+#include "gromacs/legacyheaders/types/forcerec.h"
+#include "gromacs/legacyheaders/types/hw_info.h"
+#include "gromacs/legacyheaders/types/ifunc.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/mdatom.h"
+#include "gromacs/legacyheaders/types/nrnb.h"
+#include "gromacs/legacyheaders/types/ns.h"
+#include "gromacs/legacyheaders/types/nsgrid.h"
+#include "gromacs/legacyheaders/types/shellfc.h"
+#include "gromacs/legacyheaders/types/simple.h"
+#include "gromacs/legacyheaders/types/state.h"
#include "gromacs/math/vec.h"
+#include "gromacs/math/vectypes.h"
#include "gromacs/mdlib/nb_verlet.h"
#include "gromacs/mdlib/nbnxn_search.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/pulling/pull_rotation.h"
#include "gromacs/swap/swapcoords.h"
#include "gromacs/timing/wallcycle.h"
+#include "gromacs/topology/block.h"
+#include "gromacs/topology/idef.h"
#include "gromacs/topology/mtop_util.h"
+#include "gromacs/topology/topology.h"
+#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/basenetwork.h"
+#include "gromacs/utility/cstringutil.h"
#include "gromacs/utility/fatalerror.h"
-#include "gromacs/utility/futil.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/qsort_threadsafe.h"
+#include "gromacs/utility/real.h"
#include "gromacs/utility/smalloc.h"
#define DDRANK(dd, rank) (rank)
#ifndef _nbnxn_pairlist_h
#define _nbnxn_pairlist_h
+#include <stddef.h>
+
#include "thread_mpi/atomic.h"
#include "gromacs/legacyheaders/types/nblist.h"
+#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
#ifdef __cplusplus
extern "C" {
#include "config.h"
-#include <math.h>
-
#include <immintrin.h>
/* It is cleaner to start the AVX implementation from scratch rather than
#include "config.h"
#include <stdlib.h>
-#include <string.h>
#include "gromacs/legacyheaders/md_logging.h"
#include "gromacs/legacyheaders/types/commrec.h"
#include "gromacs/timing/cyclecounter.h"
#include "gromacs/utility/cstringutil.h"
-#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/smalloc.h"
*/
/* #define DEBUG_WCYCLE */
+#ifdef DEBUG_WCYCLE
+#include "gromacs/utility/fatalerror.h"
+#endif
+
typedef struct
{
int n;
#include "atomprop.h"
#include <ctype.h>
+#include <stdio.h>
#include <string.h>
#include "gromacs/fileio/strdb.h"
#include "mtop_util.h"
+#include <limits.h>
+#include <stddef.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include "gromacs/legacyheaders/types/enums.h"
#include "gromacs/legacyheaders/types/ifunc.h"
#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/simple.h"
+#include "gromacs/math/vectypes.h"
+#include "gromacs/topology/atoms.h"
#include "gromacs/topology/block.h"
-#include "gromacs/topology/symtab.h"
+#include "gromacs/topology/idef.h"
#include "gromacs/topology/topology.h"
#include "gromacs/topology/topsort.h"
#include "gromacs/utility/fatalerror.h"
+#include "gromacs/utility/real.h"
#include "gromacs/utility/smalloc.h"
static int gmx_mtop_maxresnr(const gmx_mtop_t *mtop, int maxres_renum)
#ifndef GMX_UTILITY_BASEDEFINITIONS_H
#define GMX_UTILITY_BASEDEFINITIONS_H
-/* Information about integer data type sizes */
-#include <limits.h>
#include <stdint.h>
#ifndef _MSC_VER
#include <inttypes.h>
#include "config.h"
-#include <cctype>
+#include <climits>
#include <cstdio>
#include <cstdlib>
#include <cstring>
-#include <algorithm>
#include <exception>
#ifdef HAVE_UNISTD_H
#include "config.h"
#include <cerrno>
-#include <cstdarg>
+#include <cstddef>
#include <cstdlib>
#include <cstring>
#include "thread_mpi/threads.h"
-#include "gromacs/utility/basenetwork.h"
#include "gromacs/utility/baseversion.h"
-#include "gromacs/utility/common.h"
#include "gromacs/utility/cstringutil.h"
#include "gromacs/utility/futil.h"
-#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/programcontext.h"
-#include "gromacs/utility/smalloc.h"
+
+#ifdef GMX_MPI
+#include "gromacs/utility/basenetwork.h"
+#include "gromacs/utility/gmxmpi.h"
+#else
+#include "gromacs/utility/common.h"
+#endif
static bool bDebug = false;
static tMPI_Thread_mutex_t where_mutex = TMPI_THREAD_MUTEX_INITIALIZER;
#endif /*MPI_INT64_T*/
#else
#ifdef GMX_THREAD_MPI
-#include "thread_mpi/mpi_bindings.h"
-#include "thread_mpi/tmpi.h"
+#include "thread_mpi/mpi_bindings.h" /* IWYU pragma: export */
+#include "thread_mpi/tmpi.h" /* IWYU pragma: export */
#else
typedef void* MPI_Comm;
typedef void* MPI_Request;
#include "config.h"
-#ifdef GMX_CXX11 // C++11 Compiler
-#include <memory>
-#include <utility>
-#else // C++03 Compiler
+#ifdef GMX_CXX11 // C++11 Compiler
+#include <memory> // IWYU pragma: export
+#include <utility> // IWYU pragma: export
+#else // C++03 Compiler
#include <boost/shared_ptr.hpp>
#endif
#include "thread_mpi/threads.h"
+#include "gromacs/math/vectypes.h"
+#include "gromacs/utility/basedefinitions.h"
+
#ifdef __cplusplus
extern "C" {
#endif
#include "config.h"
+#include <math.h>
+#include <stdio.h>
#include <stdlib.h>
+#include "thread_mpi/threads.h"
+
#include "gromacs/ewald/pme-load-balancing.h"
#include "gromacs/ewald/pme.h"
-#include "gromacs/fileio/confio.h"
+#include "gromacs/fileio/filenm.h"
#include "gromacs/fileio/mdoutf.h"
#include "gromacs/fileio/trajectory_writing.h"
-#include "gromacs/fileio/trnio.h"
+#include "gromacs/fileio/trx.h"
#include "gromacs/fileio/trxio.h"
-#include "gromacs/fileio/xtcio.h"
#include "gromacs/gmxpreprocess/compute_io.h"
#include "gromacs/imd/imd.h"
#include "gromacs/legacyheaders/bonded-threading.h"
-#include "gromacs/legacyheaders/calcmu.h"
-#include "gromacs/legacyheaders/checkpoint.h"
#include "gromacs/legacyheaders/constr.h"
-#include "gromacs/legacyheaders/disre.h"
#include "gromacs/legacyheaders/domdec.h"
#include "gromacs/legacyheaders/domdec_network.h"
+#include "gromacs/legacyheaders/ebin.h"
#include "gromacs/legacyheaders/force.h"
#include "gromacs/legacyheaders/md_logging.h"
#include "gromacs/legacyheaders/md_support.h"
#include "gromacs/legacyheaders/mdatoms.h"
#include "gromacs/legacyheaders/mdebin.h"
#include "gromacs/legacyheaders/mdrun.h"
-#include "gromacs/legacyheaders/names.h"
#include "gromacs/legacyheaders/network.h"
#include "gromacs/legacyheaders/nrnb.h"
#include "gromacs/legacyheaders/ns.h"
-#include "gromacs/legacyheaders/orires.h"
-#include "gromacs/legacyheaders/qmmm.h"
#include "gromacs/legacyheaders/shellfc.h"
#include "gromacs/legacyheaders/sighandler.h"
-#include "gromacs/legacyheaders/txtdump.h"
+#include "gromacs/legacyheaders/sim_util.h"
+#include "gromacs/legacyheaders/tgroup.h"
#include "gromacs/legacyheaders/typedefs.h"
#include "gromacs/legacyheaders/update.h"
#include "gromacs/legacyheaders/vcm.h"
#include "gromacs/legacyheaders/vsite.h"
+#include "gromacs/legacyheaders/types/commrec.h"
+#include "gromacs/legacyheaders/types/constr.h"
+#include "gromacs/legacyheaders/types/enums.h"
+#include "gromacs/legacyheaders/types/fcdata.h"
+#include "gromacs/legacyheaders/types/force_flags.h"
+#include "gromacs/legacyheaders/types/forcerec.h"
+#include "gromacs/legacyheaders/types/globsig.h"
+#include "gromacs/legacyheaders/types/group.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/interaction_const.h"
#include "gromacs/legacyheaders/types/iteratedconstraints.h"
+#include "gromacs/legacyheaders/types/mdatom.h"
+#include "gromacs/legacyheaders/types/membedt.h"
#include "gromacs/legacyheaders/types/nlistheuristics.h"
+#include "gromacs/legacyheaders/types/nrnb.h"
+#include "gromacs/legacyheaders/types/oenv.h"
+#include "gromacs/legacyheaders/types/shellfc.h"
+#include "gromacs/legacyheaders/types/state.h"
+#include "gromacs/math/utilities.h"
#include "gromacs/math/vec.h"
+#include "gromacs/math/vectypes.h"
#include "gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.h"
#include "gromacs/pbcutil/mshift.h"
#include "gromacs/pbcutil/pbc.h"
#include "gromacs/swap/swapcoords.h"
#include "gromacs/timing/wallcycle.h"
#include "gromacs/timing/walltime_accounting.h"
+#include "gromacs/topology/atoms.h"
+#include "gromacs/topology/idef.h"
#include "gromacs/topology/mtop_util.h"
+#include "gromacs/topology/topology.h"
+#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/cstringutil.h"
-#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/fatalerror.h"
+#include "gromacs/utility/real.h"
#include "gromacs/utility/smalloc.h"
#include "deform.h"