From 0a37e466a58aa563459e914e573e5cc471e8e456 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Wed, 27 Jan 2016 15:06:03 +0100 Subject: [PATCH] Added cmd("readInputLine") Allows to feed plumed with a single input line directly from the MD code. --- src/core/PlumedMain.cpp | 15 ++++++++++++++- src/core/PlumedMain.h | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/PlumedMain.cpp b/src/core/PlumedMain.cpp index ba0c1c535..12d1784d8 100644 --- a/src/core/PlumedMain.cpp +++ b/src/core/PlumedMain.cpp @@ -47,7 +47,7 @@ using namespace std; -enum { SETBOX, SETPOSITIONS, SETMASSES, SETCHARGES, SETPOSITIONSX, SETPOSITIONSY, SETPOSITIONSZ, SETVIRIAL, SETENERGY, SETFORCES, SETFORCESX, SETFORCESY, SETFORCESZ, CALC, PREPAREDEPENDENCIES, SHAREDATA, PREPARECALC, PERFORMCALC, SETSTEP, SETSTEPLONG, SETATOMSNLOCAL, SETATOMSGATINDEX, SETATOMSFGATINDEX, SETATOMSCONTIGUOUS, CREATEFULLLIST, GETFULLLIST, CLEARFULLLIST, READ, CLEAR, GETAPIVERSION, INIT, SETREALPRECISION, SETMDLENGTHUNITS, SETMDENERGYUNITS, SETMDTIMEUNITS, SETMDCHARGEUNITS, SETMDMASSUNITS, SETNATURALUNITS, SETNOVIRIAL, SETPLUMEDDAT, SETMPICOMM, SETMPIFCOMM, SETMPIMULTISIMCOMM, SETNATOMS, SETTIMESTEP, SETMDENGINE, SETLOG, SETLOGFILE, SETSTOPFLAG, GETEXCHANGESFLAG, SETEXCHANGESSEED, SETNUMBEROFREPLICAS, GETEXCHANGESLIST, RUNFINALJOBS, ISENERGYNEEDED, GETBIAS, SETKBT, SETRESTART }; +enum { SETBOX, SETPOSITIONS, SETMASSES, SETCHARGES, SETPOSITIONSX, SETPOSITIONSY, SETPOSITIONSZ, SETVIRIAL, SETENERGY, SETFORCES, SETFORCESX, SETFORCESY, SETFORCESZ, CALC, PREPAREDEPENDENCIES, SHAREDATA, PREPARECALC, PERFORMCALC, SETSTEP, SETSTEPLONG, SETATOMSNLOCAL, SETATOMSGATINDEX, SETATOMSFGATINDEX, SETATOMSCONTIGUOUS, CREATEFULLLIST, GETFULLLIST, CLEARFULLLIST, READ, CLEAR, GETAPIVERSION, INIT, SETREALPRECISION, SETMDLENGTHUNITS, SETMDENERGYUNITS, SETMDTIMEUNITS, SETMDCHARGEUNITS, SETMDMASSUNITS, SETNATURALUNITS, SETNOVIRIAL, SETPLUMEDDAT, SETMPICOMM, SETMPIFCOMM, SETMPIMULTISIMCOMM, SETNATOMS, SETTIMESTEP, SETMDENGINE, SETLOG, SETLOGFILE, SETSTOPFLAG, GETEXCHANGESFLAG, SETEXCHANGESSEED, SETNUMBEROFREPLICAS, GETEXCHANGESLIST, RUNFINALJOBS, ISENERGYNEEDED, GETBIAS, SETKBT, SETRESTART, READINPUTLINE }; namespace PLMD{ @@ -137,6 +137,7 @@ PlumedMain::PlumedMain(): word_map["getBias"]=GETBIAS; word_map["setKbT"]=SETKBT; word_map["setRestart"]=SETRESTART; + word_map["readInputLine"]=READINPUTLINE; } PlumedMain::~PlumedMain(){ @@ -297,6 +298,11 @@ void PlumedMain::cmd(const std::string & word,void*val){ if(val)readInputFile(static_cast<char*>(val)); else readInputFile("plumed.dat"); break; + case READINPUTLINE: + CHECK_INIT(initialized,word); + CHECK_NULL(val,word); + readInputLine(static_cast<char*>(val)); + break; case CLEAR: CHECK_INIT(initialized,word); actionSet.clearDelete(); @@ -533,6 +539,13 @@ void PlumedMain::readInputFile(std::string str){ pilots=actionSet.select<ActionPilot*>(); } +void PlumedMain::readInputLine(const std::string & str){ + plumed_assert(initialized); + if(str.empty()) return; + std::vector<std::string> words=Tools::getWords(str); + readInputWords(words); +} + void PlumedMain::readInputWords(const std::vector<std::string> & words){ plumed_assert(initialized); if(words.empty())return; diff --git a/src/core/PlumedMain.h b/src/core/PlumedMain.h index d66fd3c3f..7cfa1e528 100644 --- a/src/core/PlumedMain.h +++ b/src/core/PlumedMain.h @@ -196,6 +196,13 @@ public: */ void readInputWords(const std::vector<std::string> & str); +/** + Read an input string. + \param str name of the string + At variance with readInputWords(), this is splitting the string into words +*/ + void readInputLine(const std::string & str); + /** Initialize the object. Should be called once. -- GitLab