Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 : Copyright (c) 2016-2023 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 69 : void AveragingVessel::registerKeywords( Keywords& keys ) { 29 69 : Vessel::registerKeywords( keys ); 30 69 : } 31 : 32 70 : AveragingVessel::AveragingVessel( const vesselbase::VesselOptions& vo ): 33 : Vessel(vo), 34 70 : wascleared(true) 35 : { 36 70 : if( getAction() ) { 37 68 : ActionWithAveraging* myav = dynamic_cast<ActionWithAveraging*>( getAction() ); 38 68 : plumed_assert( myav ); unormalised = myav->ignoreNormalization(); 39 : } 40 70 : } 41 : 42 98 : void AveragingVessel::finish( const std::vector<double>& buffer ) { 43 1182011 : wascleared=false; for(unsigned i=1; i<data.size(); ++i) data[i]+=buffer[bufstart + i - 1]; 44 98 : } 45 : 46 1278 : bool AveragingVessel::wasreset() const { 47 1278 : return wascleared; 48 : } 49 : 50 102 : void AveragingVessel::clear() { 51 102 : plumed_assert( wascleared ); data.assign( data.size(), 0.0 ); 52 102 : } 53 : 54 69 : void AveragingVessel::reset() { 55 69 : wascleared=true; 56 69 : } 57 : 58 216 : void AveragingVessel::setDataSize( const unsigned& size ) { 59 216 : if( data.size()!=(1+size) ) data.resize( 1+size, 0 ); 60 216 : } 61 : 62 : } 63 : } 64 :