}
}
+static void fbposres_wrapper(t_inputrec *ir,
+ t_nrnb *nrnb,
+ gmx_localtop_t *top,
+ matrix box, rvec x[],
+ gmx_enerdata_t *enerd,
+ t_forcerec *fr)
+{
+ t_pbc pbc;
+ real v;
+
+ /* Flat-bottomed position restraints always require full pbc */
+ set_pbc(&pbc, ir->ePBC, box);
+ v = fbposres(top->idef.il[F_FBPOSRES].nr, top->idef.il[F_FBPOSRES].iatoms,
+ top->idef.iparams_fbposres,
+ (const rvec*)x, fr->f_novirsum, fr->vir_diag_posres,
+ ir->ePBC == epbcNONE ? NULL : &pbc,
+ fr->rc_scaling, fr->ePBC, fr->posres_com);
+ enerd->term[F_FBPOSRES] += v;
+ inc_nrnb(nrnb, eNR_FBPOSRES, top->idef.il[F_FBPOSRES].nr/2);
+}
+
static void pull_potential_wrapper(FILE *fplog,
gmx_bool bSepDVDL,
t_commrec *cr,
enerd, lambda, fr);
}
+ if ((flags & GMX_FORCE_BONDED) && top->idef.il[F_FBPOSRES].nr > 0)
+ {
+ fbposres_wrapper(inputrec, nrnb, top, box, x, enerd, fr);
+ }
+
/* Compute the bonded and non-bonded energies and optionally forces */
do_force_lowlevel(fplog, step, fr, inputrec, &(top->idef),
cr, nrnb, wcycle, mdatoms,
if ((flags & GMX_FORCE_BONDED) && top->idef.il[F_FBPOSRES].nr > 0)
{
- /* Flat-bottomed position restraints always require full pbc */
- if (!(bStateChanged && bDoAdressWF))
- {
- set_pbc(&pbc, inputrec->ePBC, box);
- }
- v = fbposres(top->idef.il[F_FBPOSRES].nr, top->idef.il[F_FBPOSRES].iatoms,
- top->idef.iparams_fbposres,
- (const rvec*)x, fr->f_novirsum, fr->vir_diag_posres,
- inputrec->ePBC == epbcNONE ? NULL : &pbc,
- fr->rc_scaling, fr->ePBC, fr->posres_com);
- enerd->term[F_FBPOSRES] += v;
- inc_nrnb(nrnb, eNR_FBPOSRES, top->idef.il[F_FBPOSRES].nr/2);
+ fbposres_wrapper(inputrec, nrnb, top, box, x, enerd, fr);
}
/* Compute the bonded and non-bonded energies and optionally forces */