diff --git a/src/PlumedMain.cpp b/src/PlumedMain.cpp index 02ce20ffe25f5a9d688549be6b07fa7a3160dfe4..3b7bcd4bedb3a7bfc1fb78b99979cdba74781c22 100644 --- a/src/PlumedMain.cpp +++ b/src/PlumedMain.cpp @@ -401,11 +401,19 @@ void PlumedMain::shareData(){ atoms.share(); } - void PlumedMain::performCalc(){ + waitData(); + justCalculate(); + justApply(); +} +void PlumedMain::waitData(){ if(!active)return; atoms.wait(); +} + + +void PlumedMain::justCalculate(){ // calculate the active actions in order (assuming *backward* dependence) for(ActionSet::iterator p=actionSet.begin();p!=actionSet.end();++p){ @@ -424,6 +432,9 @@ void PlumedMain::performCalc(){ else (*p)->calculate(); } } +} + +void PlumedMain::justApply(){ // apply them in reverse order for(ActionSet::reverse_iterator p=actionSet.rbegin();p!=actionSet.rend();++p){ diff --git a/src/PlumedMain.h b/src/PlumedMain.h index 1f32fa7859bcd0e2f40b5c590f22e55151d6c990..0b4a3835aa33ccf25321fddcf8ac90719a7b8fec 100644 --- a/src/PlumedMain.h +++ b/src/PlumedMain.h @@ -107,6 +107,10 @@ public: void performCalc(); /// Shortcut for prepareCalc() + performCalc() void calc(); + + void waitData(); + void justCalculate(); + void justApply(); /// Reference to atoms object Atoms& getAtoms(); /// Reference to the list of Action's