8 #define MIN_DEBUG_LEVEL 4 26 {
int localID,forceID;
35 for (localID=0; localID<
numAtoms; ++localID) {
37 if ((forceID=index[p[localID].
id]) != -1) {
38 Vector sf = scaling * cf[forceID];
39 forces[localID] += sf;
42 p[localID].position, p[localID].transform );
43 extVirial +=
outer(sf,vpos);
46 DebugM(4,
"ComputeConsForce::doForce a extForce " << extForce <<
" extVirial " << extVirial <<
"\n" <<
endi);
66 {
int localID,torqueID;
76 Vector consTorqueAxis, consTorquePivot;
80 for (localID=0; localID<
numAtoms; ++localID) {
82 if ((torqueID=index[p[localID].
id]) != -1) {
85 consTorqueAxis /= consTorqueAxis.
length();
86 atomRadius = p[localID].
position - consTorquePivot;
87 torque = cross(consTorqueAxis, atomRadius) * consTorqueVal * consTorqueGlobVal;
88 forces[localID] += torque;
91 p[localID].position, p[localID].transform );
92 extVirial +=
outer(torque,vpos);
virtual void doForce(FullAtom *, Results *)
NAMD_HOST_DEVICE Position reverse_transform(Position data, const Transform &t) const
void get_constorque_params(BigReal &v, Vector &a, Vector &p, int atomnum) const
NAMD_HOST_DEVICE Tensor outer(const Vector &v1, const Vector &v2)
#define ADD_TENSOR_OBJECT(R, RL, D)
SimParameters * simParameters
std::ostream & endi(std::ostream &s)
SubmitReduction * willSubmit(int setID, int size=-1)
ComputeConsTorque(ComputeID, PatchID)
static ReductionMgr * Object(void)
Molecule stores the structural information for the system.
virtual void doForce(FullAtom *, Results *)
int32 * consTorqueIndexes
virtual ~ComputeConsForce()
NAMD_HOST_DEVICE BigReal length(void) const
ComputeConsForce(ComputeID, PatchID)
#define ADD_VECTOR_OBJECT(R, RL, D)
virtual ~ComputeConsTorque()