forked from plumed/plumed2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Constant.cpp
102 lines (76 loc) · 2.52 KB
/
Constant.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 2013 The plumed team
(see the PEOPLE file at the root of the distribution for a list of names)
See http://www.plumed-code.org for more information.
This file is part of plumed, version 2.0.
plumed is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
plumed is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with plumed. If not, see <http://www.gnu.org/licenses/>.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
#include "Colvar.h"
#include "ActionRegister.h"
#include "core/PlumedMain.h"
#include "core/Atoms.h"
#include <string>
#include <cmath>
namespace PLMD{
namespace colvar{
//+PLUMEDOC COLVAR CONSTANT
/*
Return a constant quantity.
Useful in combination with functions.
\par Examples
The following input instructs plumed to compute the distance
between atoms 1 and 2. If this distance is between 1.0 and 2.0, it is
printed. If it is lower than 1.0 (larger than 2.0), 1.0 (2.0) is printed
\verbatim
one: CONSTANT VALUE=1.0
two: CONSTANT VALUE=2.0
dis: DISTANCE ATOMS=1,2
sss: SORT ARG=one,dis,two
PRINT ARG=sss.2
\endverbatim
(See also \ref DISTANCE, \ref SORT, and \ref PRINT).
*/
//+ENDPLUMEDOC
class Constant : public Colvar {
double value;
public:
Constant(const ActionOptions&);
// active methods:
virtual void calculate();
static void registerKeywords( Keywords& keys );
};
using namespace std;
PLUMED_REGISTER_ACTION(Constant,"CONSTANT")
Constant::Constant(const ActionOptions&ao):
PLUMED_COLVAR_INIT(ao),
value(0.0)
{
parse("VALUE",value);
addValueWithDerivatives();
setNotPeriodic();
// fake request to avoid errors:
std::vector<AtomNumber> atoms;
requestAtoms(atoms);
}
void Constant::registerKeywords( Keywords& keys ){
Action::registerKeywords( keys );
ActionAtomistic::registerKeywords( keys );
ActionWithValue::registerKeywords( keys );
keys.remove("NUMERICAL_DERIVATIVES");
keys.add("compulsory","VALUE","The value of the constant");
}
// calculator
void Constant::calculate(){
setValue(value);
}
}
}