Merge branch 'master' into pygromacs
[alexxy/gromacs.git] / src / gromacs / gmxana / gmx_rms.cpp
similarity index 97%
rename from src/gromacs/gmxana/gmx_rms.c
rename to src/gromacs/gmxana/gmx_rms.cpp
index 3e32fa29e142e02a984e85440a548b00b222b100..44f98652767aee87c6d1a252ec42c1387537b680 100644 (file)
  */
 #include "gmxpre.h"
 
-#include <math.h>
-#include <stdlib.h>
+#include <cmath>
+#include <cstdlib>
+
+#include <algorithm>
 
 #include "gromacs/commandline/pargs.h"
 #include "gromacs/fileio/confio.h"
@@ -77,9 +79,9 @@ static void norm_princ(t_atoms *atoms, int isize, atom_id *index, int natoms,
         {
             vec[m] += sqr(x[index[i]][m]);
         }
-        vec[m] = sqrt(vec[m] / isize);
+        vec[m] = std::sqrt(vec[m] / isize);
         /* calculate scaling constants */
-        vec[m] = 1 / (sqrt(3) * vec[m]);
+        vec[m] = 1.0 / (std::sqrt(3.0) * vec[m]);
     }
 
     /* scale coordinates */
@@ -497,7 +499,7 @@ int gmx_rms(int argc, char *argv[])
                 "\nWARNING: topology has %d atoms, whereas trajectory has %d\n",
                 top.atoms.nr, natoms_trx);
     }
-    natoms = min(top.atoms.nr, natoms_trx);
+    natoms = std::min(top.atoms.nr, natoms_trx);
     if (bMat || bBond || bPrev)
     {
         snew(mat_x, NFRAME);
@@ -560,7 +562,6 @@ int gmx_rms(int argc, char *argv[])
         {
             if (IS_CHEMBOND(k))
             {
-                iatom  = top.idef.il[k].iatoms;
                 ncons += top.idef.il[k].nr/3;
             }
         }
@@ -835,8 +836,8 @@ int gmx_rms(int argc, char *argv[])
         {
             if (bDeltaLog)
             {
-                delta_scalex = 8.0/log(2.0);
-                delta_xsize  = (int)(log(tel_mat/2)*delta_scalex+0.5)+1;
+                delta_scalex = 8.0/std::log(2.0);
+                delta_xsize  = static_cast<int>(std::log(static_cast<real>(tel_mat/2))*delta_scalex+0.5)+1;
             }
             else
             {
@@ -919,7 +920,7 @@ int gmx_rms(int argc, char *argv[])
                         {
                             rvec_sub(mat_x[i][ind_bond1[m]], mat_x[i][ind_bond2[m]], vec1);
                             rvec_sub(mat_x2_j[ind_bond1[m]], mat_x2_j[ind_bond2[m]], vec2);
-                            ang += acos(cos_angle(vec1, vec2));
+                            ang += std::acos(cos_angle(vec1, vec2));
                         }
                         bond_mat[i][j] = ang*180.0/(M_PI*ibond);
                         if (bond_mat[i][j] > bond_max)
@@ -961,12 +962,12 @@ int gmx_rms(int argc, char *argv[])
                     {
                         if ((j+my >= 0) && (j+my < tel_mat))
                         {
-                            abs_my = abs(my);
+                            abs_my = std::abs(my);
                             for (mx = -avl; mx <= avl; mx++)
                             {
                                 if ((i+mx >= 0) && (i+mx < tel_mat))
                                 {
-                                    weight      = (real)(avl+1-max(abs(mx), abs_my));
+                                    weight      = avl+1.0-std::max(std::abs(mx), abs_my);
                                     av_tot     += weight*rmsd_mat[i+mx][j+my];
                                     weight_tot += weight;
                                 }
@@ -1025,9 +1026,9 @@ int gmx_rms(int argc, char *argv[])
                         {
                             if (bDeltaLog)
                             {
-                                mx = (int)(log(mx)*delta_scalex+0.5);
+                                mx = static_cast<int>(std::log(static_cast<real>(mx))*delta_scalex+0.5);
                             }
-                            my             = (int)(rmsd_mat[i][j]*delta_scaley*del_lev+0.5);
+                            my             = static_cast<int>(rmsd_mat[i][j]*delta_scaley*del_lev+0.5);
                             delta_tot[mx] += 1.0;
                             if ((rmsd_mat[i][j] >= 0) && (rmsd_mat[i][j] <= delta_maxy))
                             {
@@ -1076,7 +1077,7 @@ int gmx_rms(int argc, char *argv[])
                 fp = ftp2FILE(efDAT, NFILE, fnm, "wb");
                 for (i = 0; i < tel_mat; i++)
                 {
-                    if (fwrite(rmsd_mat[i], sizeof(**rmsd_mat), tel_mat2, fp) != tel_mat2)
+                    if (static_cast<int>(fwrite(rmsd_mat[i], sizeof(**rmsd_mat), tel_mat2, fp)) != tel_mat2)
                     {
                         gmx_fatal(FARGS, "Error writing to output file");
                     }
@@ -1136,7 +1137,7 @@ int gmx_rms(int argc, char *argv[])
     for (i = 0; (i < teller); i++)
     {
         if (bSplit && i > 0 &&
-            fabs(time[bPrev ? freq*i : i]/output_env_get_time_factor(oenv)) < 1e-5)
+            std::abs(time[bPrev ? freq*i : i]/output_env_get_time_factor(oenv)) < 1e-5)
         {
             fprintf(fp, "%s\n", output_env_get_print_xvgr_codes(oenv) ? "&" : "");
         }
@@ -1165,20 +1166,20 @@ int gmx_rms(int argc, char *argv[])
             if (output_env_get_print_xvgr_codes(oenv))
             {
                 fprintf(fp, "@ subtitle \"of %s after lsq fit to mirror of %s\"\n",
-                        gn_rms[0], gn_fit);
+                        gn_rms[0], bFit ? gn_fit : "");
             }
         }
         else
         {
             if (output_env_get_print_xvgr_codes(oenv))
             {
-                fprintf(fp, "@ subtitle \"after lsq fit to mirror %s\"\n", gn_fit);
+                fprintf(fp, "@ subtitle \"after lsq fit to mirror %s\"\n", bFit ? gn_fit : "");
             }
             xvgr_legend(fp, nrms, (const char**)gn_rms, oenv);
         }
         for (i = 0; (i < teller); i++)
         {
-            if (bSplit && i > 0 && fabs(time[i]) < 1e-5)
+            if (bSplit && i > 0 && std::abs(time[i]) < 1e-5)
             {
                 fprintf(fp, "%s\n", output_env_get_print_xvgr_codes(oenv) ? "&" : "");
             }