Merge gromacs-4-6 into master
[alexxy/gromacs.git] / src / gromacs / gmxlib / checkpoint.c
index 41dbdc01494337ee8e831780c07689ec6a2105d8..41a6a517531ceba57f036ddbfaba2c45b0794464 100644 (file)
@@ -1406,7 +1406,6 @@ static void check_match(FILE *fplog,
     check_string(fplog,"Build machine",BUILD_MACHINE,bmach  ,&mm);
     check_string(fplog,"Program name" ,Program()    ,fprog  ,&mm);
     
-    npp = cr->nnodes - cr->npmenodes;
     check_int   (fplog,"#nodes"       ,cr->nnodes   ,npp_f+npme_f ,&mm);
     if (bPartDecomp)
     {
@@ -1414,9 +1413,15 @@ static void check_match(FILE *fplog,
         dd_nc[YY] = 1;
         dd_nc[ZZ] = 1;
     }
-    if (npp > 1)
+    if (cr->nnodes > 1)
     {
         check_int (fplog,"#PME-nodes"  ,cr->npmenodes,npme_f     ,&mm);
+
+        npp = cr->nnodes;
+        if (cr->npmenodes >= 0)
+        {
+            npp -= cr->npmenodes;
+        }
         if (npp == npp_f)
         {
             check_int (fplog,"#DD-cells[x]",dd_nc[XX]    ,dd_nc_f[XX],&mm);
@@ -1557,10 +1562,12 @@ static void read_checkpoint(const char *fn,FILE **pfplog,
     if (!PAR(cr))
     {
         nppnodes = 1;
+        cr->npmenodes = 0;
     }
     else if (bPartDecomp)
     {
         nppnodes = cr->nnodes;
+        cr->npmenodes = 0;
     }
     else if (cr->nnodes == nppnodes_f + npmenodes_f)
     {
@@ -1659,7 +1666,7 @@ static void read_checkpoint(const char *fn,FILE **pfplog,
         cp_error();
     }
     *bReadEkin = ((flags_eks & (1<<eeksEKINH)) || (flags_eks & (1<<eeksEKINF)) || (flags_eks & (1<<eeksEKINO)) ||
-                  (flags_eks & (1<<eeksEKINSCALEF)) | (flags_eks & (1<<eeksEKINSCALEH)) | (flags_eks & (1<<eeksVSCALE)));
+                  ((flags_eks & (1<<eeksEKINSCALEF)) | (flags_eks & (1<<eeksEKINSCALEH)) | (flags_eks & (1<<eeksVSCALE))));
     
     ret = do_cpt_enerhist(gmx_fio_getxdr(fp),TRUE,
                           flags_enh,&state->enerhist,NULL);