Merge release-4-6 into master
[alexxy/gromacs.git] / src / gromacs / mdlib / iteratedconstraints.c
index 33851e0bd310b978555137e61006b4e6dd6bb7df..53b8439c03b93422c86b8c34067137020209c77a 100644 (file)
 /* maximum length of cyclic traps to check, emerging from limited numerical precision  */
 #define CYCLEMAX            20
 
-void gmx_iterate_init(gmx_iterate_t *iterate,gmx_bool bIterate)
+void gmx_iterate_init(gmx_iterate_t *iterate,gmx_bool bSetIterationActive)
 {
     int i;
 
     iterate->iter_i = 0;
-    iterate->bIterate = bIterate;
+    iterate->bIterationActive = bSetIterationActive;
     iterate->num_close = 0;
     for (i=0;i<MAXITERCONST+2;i++) 
     {
@@ -164,7 +164,7 @@ gmx_bool done_iterating(const t_commrec *cr,FILE *fplog, int nsteps, gmx_iterate
         
         if ((relerr < CONVERGEITER) || (err < CONVERGEITER) || (fom==0) || ((iterate->x == iterate->xprev) && iterate->iter_i > 1))
         {
-            iterate->bIterate = FALSE;
+            iterate->bIterationActive = FALSE;
             if (debug) 
             {
                 fprintf(debug,"Iterating NPT constraints: CONVERGED\n");
@@ -194,6 +194,7 @@ gmx_bool done_iterating(const t_commrec *cr,FILE *fplog, int nsteps, gmx_iterate
                        Better to give up convergence here than have the simulation die.
                     */
                     iterate->num_close++;
+                    iterate->bIterationActive = FALSE;
                     return TRUE;
                 } 
                 else 
@@ -205,6 +206,7 @@ gmx_bool done_iterating(const t_commrec *cr,FILE *fplog, int nsteps, gmx_iterate
                     {
                         md_print_warn(cr,fplog,"Slight numerical convergence deviation with NPT at step %d, relative error only %10.5g, likely not a problem, continuing\n",nsteps,relerr);
                         iterate->num_close++;
+                        iterate->bIterationActive = FALSE;
                         return TRUE;
                         /* if more than a few, check the total fraction.  If too high, die. */
                     } else if (iterate->num_close/(double)nsteps > FRACTION_CLOSE) {