OpenMM
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
LocalCoordinatesSite Class Reference

This is a VirtualSite that uses the locations of three other particles to compute a local coordinate system, then places the virtual site at a fixed location in that coordinate system. More...

#include <VirtualSite.h>

+ Inheritance diagram for LocalCoordinatesSite:

Public Member Functions

 LocalCoordinatesSite (int particle1, int particle2, int particle3, const Vec3 &originWeights, const Vec3 &xWeights, const Vec3 &yWeights, const Vec3 &localPosition)
 Create a new LocalCoordinatesSite virtual site. More...
 
const Vec3getOriginWeights () const
 Get the weight factors for the three particles when computing the origin location. More...
 
const Vec3getXWeights () const
 Get the weight factors for the three particles when computing xdir. More...
 
const Vec3getYWeights () const
 Get the weight factors for the three particles when computing ydir. More...
 
const Vec3getLocalPosition () const
 Get the position of the virtual site in the local coordinate system. More...
 
- Public Member Functions inherited from VirtualSite
virtual ~VirtualSite ()
 
int getNumParticles () const
 Get the number of particles this virtual site depends on. More...
 
int getParticle (int particle) const
 Get the index of a particle this virtual site depends on. More...
 

Additional Inherited Members

- Protected Member Functions inherited from VirtualSite
 VirtualSite ()
 
void setParticles (const std::vector< int > &particleIndices)
 

Detailed Description

This is a VirtualSite that uses the locations of three other particles to compute a local coordinate system, then places the virtual site at a fixed location in that coordinate system.

The origin of the coordinate system and the directions of its x and y axes are each specified as a weighted sum of the locations of the three particles:

origin = wo1r1 + wo2r2 + wo3r3

xdir = wx1r1 + wx2r2 + wx3r3

ydir = wy1r1 + wy2r2 + wy3r3

For the origin, the three weights must add to one. For example if (wo1, wo2, wo3) = (1.0, 0.0, 0.0), the origin of the local coordinate system is at the location of particle 1. For xdir and ydir, the weights must add to zero. For excample, if (wx1, wx2, wx3) = (-1.0, 0.5, 0.5), the x axis points from particle 1 toward the midpoint between particles 2 and 3.

The z direction is computed as zdir = xdir x ydir. To ensure the axes are all orthogonal, ydir is then recomputed as ydir = zdir x xdir. All three axis vectors are then normalized, and the virtual site location is set to

origin + x*xdir + y*ydir + z*zdir

Constructor & Destructor Documentation

LocalCoordinatesSite ( int  particle1,
int  particle2,
int  particle3,
const Vec3 originWeights,
const Vec3 xWeights,
const Vec3 yWeights,
const Vec3 localPosition 
)

Create a new LocalCoordinatesSite virtual site.

Parameters
particle1the index of the first particle
particle2the index of the second particle
particle3the index of the third particle
originWeightsthe weight factors for the three particles when computing the origin location
xWeightsthe weight factors for the three particles when computing xdir
yWeightsthe weight factors for the three particles when computing ydir
localPositionthe position of the virtual site in the local coordinate system

Member Function Documentation

const Vec3& getLocalPosition ( ) const

Get the position of the virtual site in the local coordinate system.

const Vec3& getOriginWeights ( ) const

Get the weight factors for the three particles when computing the origin location.

const Vec3& getXWeights ( ) const

Get the weight factors for the three particles when computing xdir.

const Vec3& getYWeights ( ) const

Get the weight factors for the three particles when computing ydir.


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