All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Volume.cpp
Go to the documentation of this file.
1 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2  Copyright (c) 2013 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-code.org for more information.
6 
7  This file is part of plumed, version 2.0.
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 "Colvar.h"
23 #include "ActionRegister.h"
24 
25 #include <string>
26 #include <cmath>
27 
28 using namespace std;
29 
30 namespace PLMD{
31 namespace colvar{
32 
33 //+PLUMEDOC COLVAR VOLUME
34 /*
35 Calculate the volume of the simulation box.
36 
37 \par Examples
38 The following input tells plumed to print the volume of the system
39 \verbatim
40 VOLUME LABEL=vol
41 PRINT ARG=vol
42 \endverbatim
43 (See also \ref PRINT).
44 
45 */
46 //+ENDPLUMEDOC
47 
48 
49 class Volume : public Colvar {
50 
51 public:
52  Volume(const ActionOptions&);
53 // active methods:
54  virtual void calculate();
55 /// Register all the keywords for this action
56  static void registerKeywords( Keywords& keys );
57 };
58 
59 PLUMED_REGISTER_ACTION(Volume,"VOLUME")
60 
63 {
64  std::vector<AtomNumber> atoms;
65  checkRead();
66 
67  addValueWithDerivatives(); setNotPeriodic();
68  requestAtoms(atoms);
69 }
70 
71 void Volume::registerKeywords( Keywords& keys ){
72  Action::registerKeywords( keys );
73  ActionWithValue::registerKeywords( keys );
74  ActionAtomistic::registerKeywords( keys );
75 }
76 
77 
78 // calculator
79 void Volume::calculate(){
80 
81  double v=getBox().determinant();
82  setBoxDerivatives(-v*Tensor::identity());
83  setValue (v);
84 }
85 
86 }
87 }
88 
89 
90 
STL namespace.
#define PLUMED_COLVAR_INIT(ao)
Definition: Colvar.h:29
This class holds the keywords and their documentation.
Definition: Keywords.h:36
This class is used to bring the relevant information to the Action constructor.
Definition: Action.h:41
Provides the keyword VOLUME
Definition: Volume.cpp:49
This is the abstract base class to use for implementing new collective variables, within it there is ...
Definition: Colvar.h:39