return &dd->comm->zones;
}
-void dd_get_ns_ranges(const gmx_domdec_t *dd, int icg,
- int *jcg0, int *jcg1, ivec shift0, ivec shift1)
-{
- gmx_domdec_zones_t *zones;
- int izone, d, dim;
-
- zones = &dd->comm->zones;
-
- izone = 0;
- while (icg >= zones->izone[izone].cg1)
- {
- izone++;
- }
-
- if (izone == 0)
- {
- *jcg0 = icg;
- }
- else if (izone < zones->nizone)
- {
- *jcg0 = zones->izone[izone].jcg0;
- }
- else
- {
- gmx_fatal(FARGS, "DD icg %d out of range: izone (%d) >= nizone (%d)",
- icg, izone, zones->nizone);
- }
-
- *jcg1 = zones->izone[izone].jcg1;
-
- for (d = 0; d < dd->ndim; d++)
- {
- dim = dd->dim[d];
- shift0[dim] = zones->izone[izone].shift0[dim];
- shift1[dim] = zones->izone[izone].shift1[dim];
- if (dd->comm->tric_dir[dim] || (isDlbOn(dd->comm) && d > 0))
- {
- /* A conservative approach, this can be optimized */
- shift0[dim] -= 1;
- shift1[dim] += 1;
- }
- }
-}
-
int dd_numHomeAtoms(const gmx_domdec_t &dd)
{
return dd.comm->atomRanges.numHomeAtoms();
/*! \brief Returns a pointer to the gmx_domdec_zones_t struct */
struct gmx_domdec_zones_t *domdec_zones(struct gmx_domdec_t *dd);
-/*! \brief Sets the j-charge-group range for i-charge-group \p icg */
-void dd_get_ns_ranges(const gmx_domdec_t *dd, int icg,
- int *jcg0, int *jcg1, ivec shift0, ivec shift1);
-
/*! \brief Returns the number of home atoms */
int dd_numHomeAtoms(const gmx_domdec_t &dd);
*/
real PMELoadBal_max_cutoff = 0;
- /**< tric_dir from \p gmx_ddbox_t is only stored here because dd_get_ns_ranges needs it */
- ivec tric_dir = { };
/**< box lower corner, required with dim's without pbc and -gcom */
rvec box0 = { };
/**< box size, required with dim's without pbc and -gcom */
comm_dd_ns_cell_sizes(dd, &ddbox, cell_ns_x0, cell_ns_x1, step);
}
- /* We need to store tric_dir for dd_get_ns_ranges called from ns.c */
- copy_ivec(ddbox.tric_dir, comm->tric_dir);
-
if (bSortCG)
{
wallcycle_sub_start(wcycle, ewcsDD_GRID);