LocalCoordinatesSite¶
-
class
simtk.openmm.openmm.
LocalCoordinatesSite
(*args)¶ 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 = w<sub>1</sub>r<sub>1</sub> + w<sub>2</sub>r<sub>2</sub> + w<sub>3</sub>r<sub>3</sub>
xdir = w<sub>1</sub>r<sub>1</sub> + w<sub>2</sub>r<sub>2</sub> + w<sub>3</sub>r<sub>3</sub>
ydir = w<sub>1</sub>r<sub>1</sub> + w<sub>2</sub>r<sub>2</sub> + w<sub>3</sub>r<sub>3</sub>
For the origin, the three weights must add to one. For example if (w<sub>1</sub>, w<sub>2</sub>, w<sub>3</sub>) = (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 (w<sub>1</sub>, w<sub>2</sub>, w<sub>3</sub>) = (-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
-
__init__
(self, particle1, particle2, particle3, originWeights, xWeights, yWeights, localPosition) → LocalCoordinatesSite¶ __init__(self, other) -> LocalCoordinatesSite
Create a new LocalCoordinatesSite virtual site.
Parameters: - particle1 (int) – the index of the first particle
- particle2 (int) – the index of the second particle
- particle3 (int) – the index of the third particle
- originWeights (Vec3) – the weight factors for the three particles when computing the origin location
- xWeights (Vec3) – the weight factors for the three particles when computing xdir
- yWeights (Vec3) – the weight factors for the three particles when computing ydir
- localPosition (Vec3) – the position of the virtual site in the local coordinate system
Methods
__init__
((self, particle1, particle2, ...)__init__(self, other) -> LocalCoordinatesSite getLocalPosition
((self) -> Vec3 const &)Get the position of the virtual site in the local coordinate system. getNumParticles
((self) -> int)Get the number of particles this virtual site depends on. getOriginWeights
((self) -> Vec3 const &)Get the weight factors for the three particles when computing the origin location. getParticle
((self, particle) -> int)Get the index of a particle this virtual site depends on. getXWeights
((self) -> Vec3 const &)Get the weight factors for the three particles when computing xdir. getYWeights
((self) -> Vec3 const &)Get the weight factors for the three particles when computing ydir. -
getOriginWeights
(self) → Vec3 const &¶ Get the weight factors for the three particles when computing the origin location.
-
getXWeights
(self) → Vec3 const &¶ Get the weight factors for the three particles when computing xdir.
-
getYWeights
(self) → Vec3 const &¶ Get the weight factors for the three particles when computing ydir.
-
getLocalPosition
(self) → Vec3 const &¶ Get the position of the virtual site in the local coordinate system.
-
getNumParticles
(self) → int¶ Get the number of particles this virtual site depends on.
-
getParticle
(self, particle) → int¶ Get the index of a particle this virtual site depends on.
Parameters: particle (int) – the particle to get (between 0 and getNumParticles()) Returns: the index of the particle in the System Return type: int
-