#include <vector>
#include "gromacs/utility/alignedallocator.h"
-#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/real.h"
-typedef unsigned long t_excl;
-
/* The interactions contained in a (possibly merged) table
* for computing electrostatic, VDW repulsion and/or VDW dispersion
* contributions.
GMX_TABLE_FORMAT_NR
};
-enum
+struct t_nblist
{
- eNL_VDWQQ,
- eNL_VDW,
- eNL_QQ,
- eNL_VDWQQ_FREE,
- eNL_VDW_FREE,
- eNL_QQ_FREE,
- eNL_VDWQQ_WATER,
- eNL_QQ_WATER,
- eNL_VDWQQ_WATERWATER,
- eNL_QQ_WATERWATER,
- eNL_NR
+ int nri = 0; /* Current number of i particles */
+ int maxnri = 0; /* Max number of i particles */
+ int nrj = 0; /* Current number of j particles */
+ int maxnrj = 0; /* ;Max number of j particles */
+ std::vector<int> iinr; /* The i-elements */
+ std::vector<int> gid; /* Index in energy arrays */
+ std::vector<int> shift; /* Shift vector index */
+ std::vector<int> jindex; /* Index in jjnr */
+ std::vector<int> jjnr; /* The j-atom list */
+ std::vector<int> excl_fep; /* Exclusions for FEP with Verlet scheme */
};
-#define MAX_CG 1024
-
-typedef struct
-{
- int ncg;
- int nj;
- int jcg[MAX_CG];
-} t_ns_buf;
-
-
-/* The maximum charge group size because of minimum size of t_excl
- * could be 32 bits.
- */
-#define MAX_CHARGEGROUP_SIZE 32
-
-/* The maximum charge group size for CG-CG nblists.
- * The excl entry in t_nblist uses blocks of this size.
- */
-#define MAX_CGCGSIZE 32
-
-typedef struct t_nblist
-{
- int igeometry; /* The type of list (atom, water, etc.) */
- int ielec; /* Coulomb loop type index for kernels */
- int ielecmod; /* Coulomb modifier (e.g. switch/shift) */
- int ivdw; /* VdW loop type index for kernels */
- int ivdwmod; /* VdW modifier (e.g. switch/shift) */
- int type; /* Type of interaction, listed in
- gmx_nblist_interaction_type */
-
- int nri, maxnri; /* Current/max number of i particles */
- int nrj, maxnrj; /* Current/max number of j particles */
- int* iinr; /* The i-elements */
- int* iinr_end; /* The end atom, only with enlistCG */
- int* gid; /* Index in energy arrays */
- int* shift; /* Shift vector index */
- int* jindex; /* Index in jjnr */
- int* jjnr; /* The j-atom list */
- int* jjnr_end; /* The end atom, only with enltypeCG */
- char* excl_fep; /* Exclusions for FEP with Verlet scheme */
- t_excl* excl; /* Exclusions, only with enltypeCG */
-
- /* We use separate pointers for kernels that compute both potential
- * and force (vf suffix), only potential (v) or only force (f)
- */
- void* kernelptr_vf;
- void* kernelptr_v;
- void* kernelptr_f;
-
- /* Pad the list of neighbors for each i atom with "-1" entries up to the
- * simd_padding_width, if it is larger than 0. This is necessary for many
- * accelerated kernels using single-instruction multiple-data operations
- * internally.
- */
- int simd_padding_width;
-
-} t_nblist;
-
-/* For atom I = nblist->iinr[N] (0 <= N < nblist->nri) there can be
- * several neighborlists (N's), for different energy groups (gid) and
- * different shifts (shift).
- * For corresponding J atoms for each list start at:
- * nblist->jjnr[JI]
- * with nblist->jindex[N] <= JI < nblist->jindex[N+1]
- *
- * enlist is of the form enlistUNIT1_UNIT2:
- * UNIT ATOM: there is one atom: iinr[N] or jjnr[JI]
- * UNIT SPC: there are 3 atoms: iinr[N],iinr[N]+1,iinr[N]+2, jjnr analog.
- * UNIT TIP4P: there are 4 atoms: iinr[N],...,iinr[N]+3, jjnr analog.
- * UNIT CG: there are N atoms: iinr[N],...,iinr_end[N]-1, jjnr analog.
- *
- * Clear?
- */
-
/* Structure describing the data in a single table */
struct t_forcetable
{
int stride; /* Distance to next table point (number of fp variables per table point in total) */
};
-struct gmx_ns_t
-{
- gmx_bool bCGlist;
- int* simple_aaj;
- t_excl* bexcl;
- gmx_bool* bHaveVdW;
- t_ns_buf** ns_buf;
- gmx_bool* bExcludeAlleg;
- int nra_alloc;
- int cg_alloc;
- int** nl_sr;
- int* nsr;
- int** nl_lr_ljc;
- int** nl_lr_one;
- int* nlr_ljc;
- int* nlr_one;
- /* the nblists should probably go in here */
- gmx_bool nblist_initialized; /* has the nblist been initialized? */
- int dump_nl; /* neighbour list dump level (from env. var. GMX_DUMP_NL)*/
-};
-
#endif /* GMX_MDTYPES_NBLIST_H */