From f2b3578ea231564eb35ac8c07a6be8db32db1121 Mon Sep 17 00:00:00 2001 From: Gareth Tribello <gt@eider.asg> Date: Wed, 13 Nov 2013 14:13:59 +0000 Subject: [PATCH] Mistakes in switching function input for multicolvar now trigger errors. Fixes #53 --- src/multicolvar/Angles.cpp | 4 ++++ src/multicolvar/Bridge.cpp | 4 ++++ src/multicolvar/CoordinationNumbers.cpp | 1 + 3 files changed, 9 insertions(+) diff --git a/src/multicolvar/Angles.cpp b/src/multicolvar/Angles.cpp index 06e8daa06..e01469986 100644 --- a/src/multicolvar/Angles.cpp +++ b/src/multicolvar/Angles.cpp @@ -136,7 +136,9 @@ use_sf(false) use_sf=true; weightHasDerivatives=true; sf1.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCH keyword : " + errors ); sf2.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCH keyword : " + errors ); log.printf(" only calculating angles for atoms separated by less than %s\n", sf1.description().c_str() ); } else { parse("SWITCHA",sfinput); @@ -144,9 +146,11 @@ use_sf(false) use_sf=true; weightHasDerivatives=true; sf1.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCHA keyword : " + errors ); sfinput.clear(); parse("SWITCHB",sfinput); if(sfinput.length()==0) error("found SWITCHA keyword without SWITCHB"); sf2.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCHB keyword : " + errors ); log.printf(" only calculating angles when the distance between GROUPA and GROUPB atoms is less than %s\n", sf1.description().c_str() ); log.printf(" only calculating angles when the distance between GROUPA and GROUPC atoms is less than %s\n", sf2.description().c_str() ); } diff --git a/src/multicolvar/Bridge.cpp b/src/multicolvar/Bridge.cpp index bb8457804..8efacd409 100644 --- a/src/multicolvar/Bridge.cpp +++ b/src/multicolvar/Bridge.cpp @@ -100,15 +100,19 @@ PLUMED_MULTICOLVAR_INIT(ao) std::string sfinput,errors; parse("SWITCH",sfinput); if( sfinput.length()>0 ){ sf1.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCH keyword : " + errors ); sf2.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCH keyword : " + errors ); } else { parse("SWITCHA",sfinput); if(sfinput.length()>0){ weightHasDerivatives=true; sf1.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCHA keyword : " + errors ); sfinput.clear(); parse("SWITCHB",sfinput); if(sfinput.length()==0) error("found SWITCHA keyword without SWITCHB"); sf2.set(sfinput,errors); + if( errors.length()!=0 ) error("problem reading SWITCHB keyword : " + errors ); } else { error("missing definition of switching functions"); } diff --git a/src/multicolvar/CoordinationNumbers.cpp b/src/multicolvar/CoordinationNumbers.cpp index 7038374b6..d8d1a6401 100644 --- a/src/multicolvar/CoordinationNumbers.cpp +++ b/src/multicolvar/CoordinationNumbers.cpp @@ -100,6 +100,7 @@ PLUMED_MULTICOLVAR_INIT(ao) std::string sw, errors; parse("SWITCH",sw); if(sw.length()>0){ switchingFunction.set(sw,errors); + if( errors.length()!=0 ) error("problem reading SWITCH keyword : " + errors ); } else { double r_0=-1.0, d_0; int nn, mm; parse("NN",nn); parse("MM",mm); -- GitLab