1 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 Copyright (c) 2011-2021 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 "Vector.h" 23 #include "Exception.h" 24 #include <cmath> 25 26 namespace PLMD { 27 28 /// Small auxiliary class. 29 /// I use it to test a few things that I am scary of and could introduce bugs. 30 /// It checks at startup that Vector satifies some requirement so as to allow 31 /// accessing a vector of tensors as a 3 times longer array of doubles. 32 static class VectorChecks { 33 public: VectorChecks()34 VectorChecks() { 35 if( sizeof(VectorGeneric<2>)==2*sizeof(double) 36 && sizeof(VectorGeneric<3>)==3*sizeof(double) 37 && sizeof(VectorGeneric<4>)==4*sizeof(double)) return; 38 plumed_merror("sizeof(VectorGeneric<x>)!=x*sizeof(double). PLUMED cannot work properly in these conditions."); 39 } 40 } checks; 41 42 } 43 44 45 46