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 70 : if( getAction() ) { 36 68 : ActionWithAveraging* myav = dynamic_cast<ActionWithAveraging*>( getAction() ); 37 68 : plumed_assert( myav ); 38 68 : unormalised = myav->ignoreNormalization(); 39 : } 40 70 : } 41 : 42 98 : void AveragingVessel::finish( const std::vector<double>& buffer ) { 43 98 : wascleared=false; 44 1182011 : for(unsigned i=1; i<data.size(); ++i) { 45 1181913 : data[i]+=buffer[bufstart + i - 1]; 46 : } 47 98 : } 48 : 49 1278 : bool AveragingVessel::wasreset() const { 50 1278 : return wascleared; 51 : } 52 : 53 102 : void AveragingVessel::clear() { 54 102 : plumed_assert( wascleared ); 55 102 : data.assign( data.size(), 0.0 ); 56 102 : } 57 : 58 69 : void AveragingVessel::reset() { 59 69 : wascleared=true; 60 69 : } 61 : 62 216 : void AveragingVessel::setDataSize( const unsigned& size ) { 63 216 : if( data.size()!=(1+size) ) { 64 84 : data.resize( 1+size, 0 ); 65 : } 66 216 : } 67 : 68 : } 69 : } 70 :