From fba71ad4ea8a7477a02f8d8b1bee682ce2eebb21 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Wed, 28 Jun 2017 08:10:41 +0200 Subject: [PATCH] Fix #251 Since isnan() is only available in c++11, I prefer not to backport this so v2.3 --- src/vatom/COM.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vatom/COM.cpp b/src/vatom/COM.cpp index 9e9ac4890..63fd49e69 100644 --- a/src/vatom/COM.cpp +++ b/src/vatom/COM.cpp @@ -23,6 +23,7 @@ #include "ActionRegister.h" #include "core/PlumedMain.h" #include "core/Atoms.h" +#include <cmath> using namespace std; @@ -111,7 +112,16 @@ void COM::calculate() { if(!nopbc) makeWhole(); double mass(0.0); vector<Tensor> deriv(getNumberOfAtoms()); - for(unsigned i=0; i<getNumberOfAtoms(); i++) mass+=getMass(i); + for(unsigned i=0; i<getNumberOfAtoms(); i++) { + double m=getMass(i); + if(isnan(m)) { + error( + "You are trying to compute a COM but masses are not known.\n" + " If you are using plumed driver, please use the --mc option" + ); + } + mass+=m; + } if( plumed.getAtoms().chargesWereSet() ) { double charge(0.0); for(unsigned i=0; i<getNumberOfAtoms(); i++) charge+=getCharge(i); -- GitLab