12 static constexpr bool value =
false;
20#define TINKER_ENABLE_ENUM_BITMASK(x) \
22 struct EnableEnumBitMask<x> \
24 static constexpr bool value = true; \
29constexpr typename std::enable_if<EnableEnumBitMask<E>::value, E>::type
32 using ut =
typename std::underlying_type<E>::type;
33 return static_cast<E
>(
static_cast<ut
>(lhs) |
static_cast<ut
>(rhs));
40 using ut =
typename std::underlying_type<E>::type;
41 return static_cast<bool>(
static_cast<ut
>(lhs) &
static_cast<ut
>(rhs));
108 static constexpr int xyz = 0x001;
109 static constexpr int vel = 0x002;
110 static constexpr int mass = 0x004;
111 static constexpr int traj = 0x008;
114 static constexpr int grad = 0x020;
117 static constexpr int md = 0x100;
153 static_assert(
v ? (bool)
g :
true,
"If calc::virial, must calc::grad.");
154 static_assert(
a ? (bool)
e :
true,
"If calc::analyz, must calc::energy.");
Sanity checks for version constants.
Definition: rcman.h:146
static constexpr int g
Definition: rcman.h:151
static constexpr int value
Definition: rcman.h:148
static constexpr int e
Definition: rcman.h:149
static constexpr int a
Definition: rcman.h:150
static constexpr int v
Definition: rcman.h:152
#define TINKER_EXTERN
Definition: macro.h:108
static constexpr int xyz
Use coordinates.
Definition: rcman.h:108
static constexpr int v4
Energy and gradient.
Definition: rcman.h:130
static constexpr int md
Run MD simulation.
Definition: rcman.h:117
static constexpr int v3
Definition: rcman.h:128
static constexpr int mass
Use mass.
Definition: rcman.h:110
static constexpr bool value
Definition: rcman.h:12
static constexpr int virial
Evaluate virial tensor.
Definition: rcman.h:115
static constexpr int grad
Evaluate energy gradient.
Definition: rcman.h:114
static constexpr int analyz
Evaluate number of interactions.
Definition: rcman.h:116
static constexpr int traj
Use multi-frame trajectory.
Definition: rcman.h:111
ResourceManagement(void(*f)(RcOp), RcOp op)
static constexpr int v0
Similar to Tinker energy routines. Energy only.
Definition: rcman.h:122
static constexpr int v6
Gradient and virial.
Definition: rcman.h:134
static constexpr int v5
Gradient only.
Definition: rcman.h:132
static constexpr int v1
Definition: rcman.h:125
static constexpr int energy
Evaluate energy.
Definition: rcman.h:113
static constexpr int vel
Use velocities.
Definition: rcman.h:109
static constexpr int vmask
Bits mask to clear energy-irrelevant flags.
Definition: rcman.h:120
Resource management. Allocates resources in the object constructor and deallocates resources in the o...
Definition: rcman.h:72
#define TINKER_ENABLE_ENUM_BITMASK(x)
Explicitly enables mathematical calculation by casting enum class to integer.
Definition: rcman.h:20
ResourceOperation RcOp
Definition: rcman.h:54
constexpr bool operator&(E lhs, E rhs)
Definition: rcman.h:38
constexpr std::enable_if< EnableEnumBitMask< E >::value, E >::type operator|(E lhs, E rhs)
Definition: rcman.h:30
ResourceOperation
Definition: rcman.h:46
void deviceData(RcOp)
Set up and clean up device environment.
int rc_flag
Global bitmask.
@ ALLOC
Allocates resource.
@ DEALLOC
Deallocates resource.
@ INIT
Initializes resource.
Bitmasks for MD.
Definition: rcman.h:107
Direct mathematical calculation of enum class is prohibited in C++.
Definition: rcman.h:11