Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 : Copyright (c) 2016-2020 The plumed team 3 : (see the PEOPLE file at the root of the distribution for a list of names) 4 : 5 : See http://www.plumed.org for more information. 6 : 7 : This file is part of plumed, version 2. 8 : 9 : plumed is free software: you can redistribute it and/or modify 10 : it under the terms of the GNU Lesser General Public License as published by 11 : the Free Software Foundation, either version 3 of the License, or 12 : (at your option) any later version. 13 : 14 : plumed is distributed in the hope that it will be useful, 15 : but WITHOUT ANY WARRANTY; without even the implied warranty of 16 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 : GNU Lesser General Public License for more details. 18 : 19 : You should have received a copy of the GNU Lesser General Public License 20 : along with plumed. If not, see <http://www.gnu.org/licenses/>. 21 : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ 22 : #include "AveragingVessel.h" 23 : #include "ActionWithAveraging.h" 24 : 25 : namespace PLMD { 26 : namespace vesselbase { 27 : 28 66 : void AveragingVessel::registerKeywords( Keywords& keys ) { 29 66 : Vessel::registerKeywords( keys ); 30 66 : } 31 : 32 67 : AveragingVessel::AveragingVessel( const vesselbase::VesselOptions& vo ): 33 : Vessel(vo), 34 67 : wascleared(true) 35 : { 36 67 : if( getAction() ) { 37 65 : ActionWithAveraging* myav = dynamic_cast<ActionWithAveraging*>( getAction() ); 38 65 : plumed_assert( myav ); unormalised = myav->ignoreNormalization(); 39 : } 40 67 : } 41 : 42 96 : void AveragingVessel::finish( const std::vector<double>& buffer ) { 43 3522831 : wascleared=false; for(unsigned i=1; i<data.size(); ++i) data[i]+=buffer[bufstart + i - 1]; 44 96 : } 45 : 46 273 : bool AveragingVessel::wasreset() const { 47 273 : return wascleared; 48 : } 49 : 50 99 : void AveragingVessel::clear() { 51 198 : plumed_assert( wascleared ); data.assign( data.size(), 0.0 ); 52 99 : } 53 : 54 67 : void AveragingVessel::reset() { 55 67 : wascleared=true; 56 67 : } 57 : 58 209 : void AveragingVessel::setDataSize( const unsigned& size ) { 59 209 : if( data.size()!=(1+size) ) data.resize( 1+size, 0 ); 60 209 : } 61 : 62 : } 63 5517 : } 64 :