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