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 */
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;
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;
/* 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;
int n_intercg_excl;
/* Vsite stuff */
- int *ga2la_vsite;
+ gmx_hash_t ga2la_vsite;
gmx_domdec_specat_comm_p_t vsite_comm;
/* Constraint stuff */
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