Remove dependence of constraints on t_mdatoms
[alexxy/gromacs.git] / src / gromacs / mdlib / constr.cpp
index 16b5c6eba070c08518a1a1f34ac34631597fe9a4..a158fd6c050ae4206f6e759e4e7dea54387b64f4 100644 (file)
@@ -457,9 +457,10 @@ bool Constraints::Impl::apply(bool                      bLog,
 
     if (lincsd != nullptr)
     {
-        bOK = constrain_lincs(bLog || bEner, ir, step, lincsd, md, cr, ms, x, xprime, min_proj, box,
-                              pbc_null, lambda, dvdlambda, invdt, v.unpaddedArrayRef(),
-                              vir != nullptr, vir_r_m_dr, econq, nrnb, maxwarn, &warncount_lincs);
+        bOK = constrain_lincs(bLog || bEner, ir, step, lincsd, md.invmass, cr, ms, x, xprime,
+                              min_proj, box, pbc_null, md.nMassPerturbed != 0, lambda, dvdlambda,
+                              invdt, v.unpaddedArrayRef(), vir != nullptr, vir_r_m_dr, econq, nrnb,
+                              maxwarn, &warncount_lincs);
         if (!bOK && maxwarn < INT_MAX)
         {
             if (log != nullptr)
@@ -699,7 +700,7 @@ bool Constraints::Impl::apply(bool                      bLog,
     }
 
     return bOK;
-}
+} // namespace gmx
 
 ArrayRef<real> Constraints::rmsdData() const
 {
@@ -884,7 +885,7 @@ void Constraints::Impl::setConstraints(gmx_localtop_t* top, const t_mdatoms& md)
          */
         if (ir.eConstrAlg == econtLINCS)
         {
-            set_lincs(*idef, md, EI_DYNAMICS(ir.eI), cr, lincsd);
+            set_lincs(*idef, md.nr, md.invmass, md.lambda, EI_DYNAMICS(ir.eI), cr, lincsd);
         }
         if (ir.eConstrAlg == econtSHAKE)
         {
@@ -896,7 +897,7 @@ void Constraints::Impl::setConstraints(gmx_localtop_t* top, const t_mdatoms& md)
             }
             else
             {
-                make_shake_sblock_serial(shaked.get(), &top->idef, md);
+                make_shake_sblock_serial(shaked.get(), &top->idef, md.nr);
             }
         }
     }