Remove unsed structs from nblist and use vector in t_nblist
[alexxy/gromacs.git] / src / gromacs / mdtypes / nblist.h
index 6427c9d26c64bc83b45bf707d34aae55706c9721..3b6e5b145f7a585e60932cd000345d090ffa8d33 100644 (file)
 #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.
@@ -79,95 +76,20 @@ enum gmx_table_format
     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
 {
@@ -193,25 +115,4 @@ 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 */