Merge branch 'release-2019' into master
[alexxy/gromacs.git] / src / gromacs / gmxana / gmx_wham.cpp
index 79900c51a2f439a6b09863ba2ae9ee434215b697..92c0a0fd20d991350dc74a3470e32ce1539e48e7 100644 (file)
@@ -2048,8 +2048,12 @@ static void read_tpr_header(const char *fn, t_UmbrellaHeader* header, t_Umbrella
         header->pcrd[i].pull_type     = ir->pull->coord[i].eType;
         header->pcrd[i].geometry      = ir->pull->coord[i].eGeom;
         header->pcrd[i].ngroup        = ir->pull->coord[i].ngroup;
-        /* Angle type coordinates are handled fully in degrees in gmx wham */
-        header->pcrd[i].k             = ir->pull->coord[i].k*pull_conversion_factor_internal2userinput(&ir->pull->coord[i]);
+        /* Angle type coordinates are handled fully in degrees in gmx wham.
+         * The pull "distance" appears with a power of -2 in the force constant,
+         * so we need to multiply with the internal units (radians for angle)
+         * to user units (degrees for an angle) with the same power.
+         */
+        header->pcrd[i].k             = ir->pull->coord[i].k/gmx::square(pull_conversion_factor_internal2userinput(&ir->pull->coord[i]));
         header->pcrd[i].init_dist     = ir->pull->coord[i].init;
 
         copy_ivec(ir->pull->coord[i].dim, header->pcrd[i].dim);