Converted pulling code to C++.
[alexxy/gromacs.git] / src / gromacs / pulling / pull.cpp
similarity index 99%
rename from src/gromacs/pulling/pull.c
rename to src/gromacs/pulling/pull.cpp
index a252388ef5ad0b9c4238e1050494e1bdc00fb5f2..a1960ea9d7d04db8644bdc4f31aa99e8718b10dd 100644 (file)
@@ -43,6 +43,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <algorithm>
+
 #include "gromacs/fileio/filenm.h"
 #include "gromacs/fileio/gmxfio.h"
 #include "gromacs/fileio/xvgr.h"
@@ -431,7 +433,7 @@ static double max_pull_distance2(const t_pull_coord *pcrd, const t_pbc *pbc)
     {
         if (pcrd->dim[m] != 0)
         {
-            max_d2 = min(max_d2, norm2(pbc->box[m]));
+            max_d2 = std::min(max_d2, static_cast<double>(norm2(pbc->box[m])));
         }
     }
 
@@ -447,13 +449,12 @@ static void low_get_pull_coord_dr(const t_pull *pull,
                                   dvec xg, dvec xref, double max_dist2,
                                   dvec dr)
 {
-    const t_pull_group *pgrp0, *pgrp1;
+    const t_pull_group *pgrp0;
     int                 m;
     dvec                xrefr, dref = {0, 0, 0};
     double              dr2;
 
     pgrp0 = &pull->group[pcrd->group[0]];
-    pgrp1 = &pull->group[pcrd->group[1]];
 
     /* Only the first group can be an absolute reference, in that case nat=0 */
     if (pgrp0->nat == 0)
@@ -522,7 +523,6 @@ static void get_pull_coord_dr(t_pull      *pull,
         const t_pull_group *pgrp2, *pgrp3;
         dvec                vec;
         int                 m;
-        double              invlen;
 
         pgrp2 = &pull->group[pcrd->group[2]];
         pgrp3 = &pull->group[pcrd->group[3]];
@@ -692,7 +692,6 @@ static void do_constraint(t_pull *pull, t_pbc *pbc,
     gmx_bool      bConverged_all, bConverged = FALSE;
     int           niter = 0, g, c, ii, j, m, max_iter = 100;
     double        a;
-    dvec          f;       /* the pull force */
     dvec          tmp, tmp3;
     t_pull_group *pgrp0, *pgrp1;
     t_pull_coord *pcrd;
@@ -853,6 +852,11 @@ static void do_constraint(t_pull *pull, t_pbc *pbc,
                     dsvmul( lambda*rm*pgrp0->invtm, vec, dr0);
                     dr_tot[c] += -lambda;
                     break;
+                default:
+                    gmx_incons("Invalid enumeration value for eGeom");
+                    /* Keep static analyzer happy */
+                    clear_dvec(dr0);
+                    clear_dvec(dr1);
             }
 
             /* DEBUG */