NAMD
Public Member Functions | List of all members
ComputeConsTorque Class Reference

#include <ComputeConsForce.h>

Inheritance diagram for ComputeConsTorque:
ComputeHomePatch Compute

Public Member Functions

 ComputeConsTorque (ComputeID, PatchID)
 
virtual ~ComputeConsTorque ()
 
virtual void doForce (FullAtom *, Results *)
 
- Public Member Functions inherited from ComputeHomePatch
 ComputeHomePatch (ComputeID c, PatchID pid)
 
virtual ~ComputeHomePatch ()
 
virtual void initialize ()
 
virtual void atomUpdate ()
 
virtual void doWork ()
 
- Public Member Functions inherited from Compute
 Compute (ComputeID)
 
int type ()
 
virtual ~Compute ()
 
void setNumPatches (int n)
 
int getNumPatches ()
 
virtual void patchReady (PatchID, int doneMigration, int seq)
 
virtual int noWork ()
 
virtual void finishPatch (int)
 
int sequence (void)
 
int priority (void)
 
int getGBISPhase (void)
 
virtual void gbisP2PatchReady (PatchID, int seq)
 
virtual void gbisP3PatchReady (PatchID, int seq)
 

Additional Inherited Members

- Public Attributes inherited from Compute
const ComputeID cid
 
LDObjHandle ldObjHandle
 
LocalWorkMsg *const localWorkMsg
 
- Protected Member Functions inherited from Compute
void enqueueWork ()
 
- Protected Attributes inherited from ComputeHomePatch
int numAtoms
 
Patchpatch
 
HomePatchhomePatch
 
- Protected Attributes inherited from Compute
int computeType
 
int basePriority
 
int gbisPhase
 
int gbisPhasePriority [3]
 

Detailed Description

Definition at line 17 of file ComputeConsForce.h.

Constructor & Destructor Documentation

◆ ComputeConsTorque()

ComputeConsTorque::ComputeConsTorque ( ComputeID  c,
PatchID  pid 
)

Definition at line 54 of file ComputeConsForce.C.

References ReductionMgr::Object(), REDUCTIONS_BASIC, and ReductionMgr::willSubmit().

55  : ComputeHomePatch(c,pid)
56 {
58 }
SubmitReduction * willSubmit(int setID, int size=-1)
Definition: ReductionMgr.C:366
static ReductionMgr * Object(void)
Definition: ReductionMgr.h:279
ComputeHomePatch(ComputeID c, PatchID pid)

◆ ~ComputeConsTorque()

ComputeConsTorque::~ComputeConsTorque ( )
virtual

Definition at line 60 of file ComputeConsForce.C.

61 {
62  delete reduction;
63 }

Member Function Documentation

◆ doForce()

void ComputeConsTorque::doForce ( FullAtom p,
Results r 
)
virtual

Implements ComputeHomePatch.

Definition at line 65 of file ComputeConsForce.C.

References ADD_TENSOR_OBJECT, ADD_VECTOR_OBJECT, Molecule::consTorqueIndexes, Results::f, Molecule::get_constorque_params(), ComputeHomePatch::homePatch, Patch::lattice, Vector::length(), Node::molecule, Results::normal, ComputeHomePatch::numAtoms, Node::Object(), outer(), CompAtom::position, Lattice::reverse_transform(), Node::simParameters, simParams, and SubmitReduction::submit().

66 { int localID,torqueID;
67  Molecule *molecule = Node::Object()->molecule;
69 
70  int32 *index = molecule->consTorqueIndexes; // Indexes into the torque array
71  Vector *forces = r->f[Results::normal];
72  Force extForce = 0.;
73  Tensor extVirial;
74  const BigReal consTorqueGlobVal = simParams->consTorqueGlobVal;
75  BigReal consTorqueVal;
76  Vector consTorqueAxis, consTorquePivot;
77  Vector atomRadius;
78  Vector torque;
79 
80  for (localID=0; localID<numAtoms; ++localID) {
81  // When the index is -1, it means there's no constant torque on this atom
82  if ((torqueID=index[p[localID].id]) != -1) {
83  // compute the torqueing force and add it to the net force
84  molecule->get_constorque_params(consTorqueVal, consTorqueAxis, consTorquePivot, p[localID].id);
85  consTorqueAxis /= consTorqueAxis.length();
86  atomRadius = p[localID].position - consTorquePivot;
87  torque = cross(consTorqueAxis, atomRadius) * consTorqueVal * consTorqueGlobVal;
88  forces[localID] += torque;
89  extForce += torque;
91  p[localID].position, p[localID].transform );
92  extVirial += outer(torque,vpos);
93  }
94  }
95  ADD_VECTOR_OBJECT(reduction,REDUCTION_EXT_FORCE_NORMAL,extForce);
96  ADD_TENSOR_OBJECT(reduction,REDUCTION_VIRIAL_NORMAL,extVirial);
97  reduction->submit();
98 }
static Node * Object()
Definition: Node.h:86
NAMD_HOST_DEVICE Position reverse_transform(Position data, const Transform &t) const
Definition: Lattice.h:143
void get_constorque_params(BigReal &v, Vector &a, Vector &p, int atomnum) const
Definition: Molecule.h:1423
Lattice & lattice
Definition: Patch.h:127
NAMD_HOST_DEVICE Tensor outer(const Vector &v1, const Vector &v2)
Definition: Tensor.h:241
Definition: Vector.h:72
#define ADD_TENSOR_OBJECT(R, RL, D)
Definition: ReductionMgr.h:44
SimParameters * simParameters
Definition: Node.h:181
int32_t int32
Definition: common.h:38
Position position
Definition: NamdTypes.h:77
Molecule stores the structural information for the system.
Definition: Molecule.h:175
int32 * consTorqueIndexes
Definition: Molecule.h:649
NAMD_HOST_DEVICE BigReal length(void) const
Definition: Vector.h:202
Force * f[maxNumForces]
Definition: PatchTypes.h:146
#define simParams
Definition: Output.C:129
Definition: Tensor.h:15
#define ADD_VECTOR_OBJECT(R, RL, D)
Definition: ReductionMgr.h:28
void submit(void)
Definition: ReductionMgr.h:324
Molecule * molecule
Definition: Node.h:179
HomePatch * homePatch
double BigReal
Definition: common.h:123

The documentation for this class was generated from the following files: