pull_t* pull_work,
FILE* log_p,
const t_commrec* cr_p,
+ bool useUpdateGroups,
const gmx_multisim_t* ms,
t_nrnb* nrnb,
gmx_wallcycle* wcycle_p,
pull_t* pull_work,
FILE* log,
const t_commrec* cr,
+ const bool useUpdateGroups,
const gmx_multisim_t* ms,
t_nrnb* nrnb,
gmx_wallcycle* wcycle,
bool pbcHandlingRequired,
int numConstraints,
int numSettles) :
- impl_(new Impl(mtop, ir, pull_work, log, cr, ms, nrnb, wcycle, pbcHandlingRequired, numConstraints, numSettles))
+ impl_(new Impl(mtop, ir, pull_work, log, cr, useUpdateGroups, ms, nrnb, wcycle, pbcHandlingRequired, numConstraints, numSettles))
{
}
pull_t* pull_work,
FILE* log_p,
const t_commrec* cr_p,
+ const bool mayHaveSplitConstraints,
const gmx_multisim_t* ms_p,
t_nrnb* nrnb_p,
gmx_wallcycle* wcycle_p,
}
}
+ // When there are multiple PP domains and update groups are not in use,
+ // the constraints might be split across them.
if (ir.eConstrAlg == ConstraintAlgorithm::Lincs)
{
- lincsd = init_lincs(log,
- mtop,
- nflexcon,
- at2con_mt,
- DOMAINDECOMP(cr) && ddHaveSplitConstraints(*cr->dd),
- ir.nLincsIter,
- ir.nProjOrder);
+ lincsd = init_lincs(
+ log, mtop, nflexcon, at2con_mt, mayHaveSplitConstraints, ir.nLincsIter, ir.nProjOrder);
}
if (ir.eConstrAlg == ConstraintAlgorithm::Shake)
{
- if (DOMAINDECOMP(cr) && ddHaveSplitConstraints(*cr->dd))
+ if (mayHaveSplitConstraints)
{
gmx_fatal(FARGS,
- "SHAKE is not supported with domain decomposition and constraint that "
+ "SHAKE is not supported with domain decomposition and constraints that "
"cross domain boundaries, use LINCS");
}
if (nflexcon)