leak:atoms_to_constraints
leak:atoms_to_settles
leak:balance_fep_lists
-leak:dd_init_bondeds
+leak:dd_make_reverse_top
+leak:makeBondedLinks
leak:dd_make_local_constraints
leak:dd_move_f
leak:dd_partition_system
}
}
-void dd_init_bondeds(FILE* fplog,
- gmx_domdec_t* dd,
- const gmx_mtop_t& mtop,
- const gmx::VirtualSitesHandler* vsite,
- const t_inputrec& inputrec,
- const gmx::DDBondedChecking ddBondedChecking,
- gmx::ArrayRef<cginfo_mb_t> cginfo_mb)
-{
- dd_make_reverse_top(fplog, dd, mtop, vsite, inputrec, ddBondedChecking);
-
- gmx_domdec_comm_t* comm = dd->comm;
-
- if (comm->systemInfo.filterBondedCommunication)
- {
- /* Communicate atoms beyond the cut-off for bonded interactions */
- comm->bondedLinks = makeBondedLinks(mtop, cginfo_mb);
- }
- else
- {
- /* Only communicate atoms based on cut-off */
- comm->bondedLinks = nullptr;
- }
-}
-
static void writeSettings(gmx::TextWriter* log,
gmx_domdec_t* dd,
const gmx_mtop_t& mtop,
struct gmx_domdec_zones_t;
struct gmx_localtop_t;
struct gmx_mtop_t;
-struct t_block;
-struct t_blocka;
struct t_commrec;
struct t_forcerec;
struct t_inputrec;
/*! \brief Return whether update groups are used */
bool ddUsesUpdateGroups(const gmx_domdec_t& dd);
-/*! \brief Initialize data structures for bonded interactions */
-void dd_init_bondeds(FILE* fplog,
- gmx_domdec_t* dd,
- const gmx_mtop_t& mtop,
- const gmx::VirtualSitesHandler* vsite,
- const t_inputrec& inputrec,
- gmx::DDBondedChecking ddBondedChecking,
- gmx::ArrayRef<cginfo_mb_t> cginfo_mb);
-
/*! \brief Returns whether molecules are always whole, i.e. not broken by PBC */
bool dd_moleculesAreAlwaysWhole(const gmx_domdec_t& dd);
*
* Also stores whether atoms are linked in \p cginfo_mb.
*/
-t_blocka* makeBondedLinks(const gmx_mtop_t& mtop, gmx::ArrayRef<cginfo_mb_t> cginfo_mb);
+void makeBondedLinks(gmx_domdec_t* dd, const gmx_mtop_t& mtop, gmx::ArrayRef<cginfo_mb_t> cginfo_mb);
/*! \brief Calculate the maximum distance involved in 2-body and multi-body bonded interactions */
void dd_bonded_cg_distance(const gmx::MDLogger& mdlog,
}
}
-t_blocka* makeBondedLinks(const gmx_mtop_t& mtop, gmx::ArrayRef<cginfo_mb_t> cginfo_mb)
+void makeBondedLinks(gmx_domdec_t* dd, const gmx_mtop_t& mtop, gmx::ArrayRef<cginfo_mb_t> cginfo_mb)
{
+
+ if (!dd->comm->systemInfo.filterBondedCommunication)
+ {
+ /* Only communicate atoms based on cut-off */
+ dd->comm->bondedLinks = nullptr;
+ return;
+ }
+
t_blocka* link = nullptr;
/* For each atom make a list of other atoms in the system
fprintf(debug, "Of the %d atoms %d are linked via bonded interactions\n", mtop.natoms, ncgi);
}
- return link;
+ dd->comm->bondedLinks = link;
}
typedef struct
constructVirtualSitesGlobal(mtop, globalState->x);
}
}
+ // Make the DD reverse topology, now that any vsites that are present are available
+ if (DOMAINDECOMP(cr))
+ {
+ dd_make_reverse_top(fplog, cr->dd, mtop, vsite.get(), *inputrec, domdecOptions.ddBondedChecking);
+ }
if (EEL_PME(fr->ic->eeltype) || EVDW_PME(fr->ic->vdwtype))
{
if (DOMAINDECOMP(cr))
{
GMX_RELEASE_ASSERT(fr, "fr was NULL while cr->duty was DUTY_PP");
- /* This call is not included in init_domain_decomposition mainly
+ /* This call is not included in init_domain_decomposition
* because fr->cginfo_mb is set later.
*/
- dd_init_bondeds(
- fplog, cr->dd, mtop, vsite.get(), *inputrec, domdecOptions.ddBondedChecking, fr->cginfo_mb);
+ makeBondedLinks(cr->dd, mtop, fr->cginfo_mb);
}
if (runScheduleWork.simulationWork.useGpuBufferOps)