added Verlet scheme and NxN non-bonded functionality
[alexxy/gromacs.git] / include / types / commrec.h
index 0d2fce9813e544359fab0a5e5574d324293378db..793bb6e0b6ea73adae3b523eedf6ae554b7808de 100644 (file)
@@ -61,8 +61,8 @@ extern "C" {
 typedef struct gmx_domdec_master *gmx_domdec_master_p_t;
 
 typedef struct {
-  int  j0;       /* j-cell start               */
-  int  j1;       /* j-cell end                 */
+  int  j0;       /* j-zone start               */
+  int  j1;       /* j-zone end                 */
   int  cg1;      /* i-charge-group end         */
   int  jcg0;     /* j-charge-group start       */
   int  jcg1;     /* j-charge-group end         */
@@ -70,6 +70,13 @@ typedef struct {
   ivec shift1;   /* Maximum shifts to consider */
 } gmx_domdec_ns_ranges_t;
 
+typedef struct {
+  rvec x0;       /* Zone lower corner in triclinic coordinates         */
+  rvec x1;       /* Zone upper corner in triclinic coordinates         */
+  rvec bb_x0;    /* Zone bounding box lower corner in Cartesian coords */
+  rvec bb_x1;    /* Zone bounding box upper corner in Cartesian coords */
+} gmx_domdec_zone_size_t;
+
 typedef struct {
   /* The number of zones including the home zone */
   int  n;
@@ -81,10 +88,16 @@ typedef struct {
   int  nizone;
   /* The neighbor search charge group ranges for each i-zone */
   gmx_domdec_ns_ranges_t izone[DD_MAXIZONE];
+  /* Boundaries of the zones */
+  gmx_domdec_zone_size_t size[DD_MAXZONE];
+  /* The cg density of the home zone */
+  real dens_zone0;
 } gmx_domdec_zones_t;
 
 typedef struct gmx_ga2la *gmx_ga2la_t;
 
+typedef struct gmx_hash *gmx_hash_t;
+
 typedef struct gmx_reverse_top *gmx_reverse_top_p_t;
 
 typedef struct gmx_domdec_constraints *gmx_domdec_constraints_p_t;
@@ -169,6 +182,7 @@ typedef struct {
 
   /* Are there inter charge group constraints */
   gmx_bool bInterCGcons;
+  gmx_bool bInterCGsettles;
 
   /* Global atom number to interaction list */
   gmx_reverse_top_p_t reverse_top;
@@ -179,7 +193,7 @@ typedef struct {
   int  n_intercg_excl;
 
   /* Vsite stuff */
-  int  *ga2la_vsite;
+  gmx_hash_t  ga2la_vsite;
   gmx_domdec_specat_comm_p_t vsite_comm;
 
   /* Constraint stuff */
@@ -261,6 +275,12 @@ typedef struct {
   MPI_Comm mpi_comm_mysim;
   MPI_Comm mpi_comm_mygroup;
 
+  /* intra-node stuff */
+  int nodeid_intra;         /* ID over all intra nodes */ 
+  int nodeid_group_intra;   /* ID within my group (separate 0-n IDs for PP/PME-only nodes) */
+  int nnodes_intra;         /* total number of intra nodes */
+  int nnodes_pp_intra;      /* total number of PP intra nodes */
+
 #ifdef GMX_THREAD_SHM_FDECOMP
   gmx_commrec_thread_t thread;
 #endif