MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
AngledPeriodicBoundary Class Reference

#include <AngledPeriodicBoundary.h>

+ Inheritance diagram for AngledPeriodicBoundary:

Public Member Functions

AngledPeriodicBoundarycopy () const final
 Used to create a copy of the object NB: purely virtual function. More...
 
void set (Vec3D normalLeft, Vec3D normalRight, Vec3D origin)
 Defines a periodic wall. More...
 
Mdouble distance (const BaseParticle &P)
 Returns the distance of the wall to the particle and sets left_wall = true, if the left wall is the wall closest to the particle. More...
 
Mdouble distance (const Vec3D &P)
 
void shiftPosition (BaseParticle *P)
 shifts the particle (after distance set the left_wall value) More...
 
void shiftPositions (Vec3D &P1, Vec3D &P2)
 only needed in StatisticsVector More...
 
void read (std::istream &is)
 reads wall More...
 
void oldRead (std::istream &is)
 
void write (std::ostream &os) const
 outputs wall More...
 
virtual std::string getName () const
 Returns the name of the object. More...
 
Vec3DgetNormal ()
 
Mdouble getOpeningAngle ()
 angle between walls in radians More...
 
void createPeriodicParticles (BaseParticle *P, ParticleHandler &pH)
 
bool checkBoundaryAfterParticleMoved (BaseParticle *P, ParticleHandler &pH UNUSED)
 
- Public Member Functions inherited from BaseBoundary
 BaseBoundary ()
 default constructor. More...
 
 BaseBoundary (const BaseBoundary &b)
 copy constructor More...
 
virtual ~BaseBoundary ()
 destructor More...
 
virtual void createPeriodicParticles (BaseParticle *P UNUSED, ParticleHandler &pH UNUSED)
 Creates periodic copies of given particle in case of periodic boundaries. More...
 
virtual bool checkBoundaryAfterParticleMoved (BaseParticle *P UNUSED, ParticleHandler &pH UNUSED)
 Checks if given particle passed the boundary. More...
 
virtual void checkBoundaryBeforeTimeStep (DPMBase *md UNUSED)
 Fills a (3D) boundary with particles. More...
 
void setHandler (BoundaryHandler *handler)
 Sets the boundary's BoundaryHandler. More...
 
BoundaryHandlergetHandler () const
 Returns the boundary's BoundaryHandler. More...
 
- Public Member Functions inherited from BaseObject
 BaseObject ()
 Default constructor. More...
 
 BaseObject (const BaseObject &p)
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()
 virtual destructor More...
 
virtual void moveInHandler (const unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (const unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (const unsigned int id)
 Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More...
 
unsigned int getIndex () const
 Returns the index of the object in the handler. More...
 
unsigned int getId () const
 Returns the unique identifier of any particular object. More...
 

Private Attributes

Vec3D leftNormal_
 
Vec3D rightNormal_
 outward unit normal vector for right wall More...
 
Vec3D origin_
 common point of both walls More...
 
bool leftWall_
 true if closest wall is the left wall More...
 
Vec3D leftRadialAxis_
 outward unit normal vector for left wall More...
 
Vec3D rightRadialAxis_
 outward unit normal vector for right wall More...
 
Vec3D differenceRadialAxis_
 
Vec3D differenceNormal_
 
Matrix3D rotateLeft
 
Matrix3D rotateRight
 
Vec3D commonAxis_
 The normalized cross product of the left and right normal vector. This vector points in the direction around which the particle is rotated when it is moved from one boundary to the other. This is an internal variable set in the constructor, thus cannot be changed directly by the user. More...
 

Detailed Description

Definition at line 45 of file AngledPeriodicBoundary.h.

Member Function Documentation

bool AngledPeriodicBoundary::checkBoundaryAfterParticleMoved ( BaseParticle P,
ParticleHandler &pH  UNUSED 
)
Todo:
TW: can't we do the shift in the createPeriodicParticles function only? We are checking the distance three times!

Definition at line 297 of file AngledPeriodicBoundary.cc.

References distance(), and shiftPosition().

298 {
299  if (distance(*P) < 0)
300  {
301  shiftPosition(P);
302  }
303  return false;
304 }
Mdouble distance(const BaseParticle &P)
Returns the distance of the wall to the particle and sets left_wall = true, if the left wall is the w...
void shiftPosition(BaseParticle *P)
shifts the particle (after distance set the left_wall value)
AngledPeriodicBoundary * AngledPeriodicBoundary::copy ( ) const
finalvirtual

Used to create a copy of the object NB: purely virtual function.

Implements BaseBoundary.

Definition at line 34 of file AngledPeriodicBoundary.cc.

35 {
36 #ifdef DEBUG_CONSTRUCTOR
37  std::cout << "AngledPeriodicBoundary::copy() const finished" << std::endl;
38 #endif
39  return new AngledPeriodicBoundary(*this);
40 }
void AngledPeriodicBoundary::createPeriodicParticles ( BaseParticle P,
ParticleHandler pH 
)

Definition at line 263 of file AngledPeriodicBoundary.cc.

References ParticleHandler::addObject(), BaseParticle::copy(), BaseInteractable::copyInteractionsForPeriodicParticles(), distance(), BaseParticle::getInteractionRadius(), ParticleHandler::getLargestParticle(), BaseParticle::getPeriodicFromParticle(), BaseParticle::setPeriodicFromParticle(), and shiftPosition().

264 {
265  if (distance(*p) < p->getInteractionRadius() + pH.getLargestParticle()->getInteractionRadius())
266  {
267  //std::cout << "Copy particle " << p->getIndex() << " to new ghost particle" << std::endl;
268  //Step 1: Copy the particle to new ghost particle.
269  BaseParticle* pGhost = p->copy();
270 
271  //std::cout << "pGhostInteractions " << pGhost->getInteractions().size();
272  //Step 2: Copy the interactions to the ghost particle.
274  //std::cout << "-> " << pGhost->getInteractions().size() << std::endl;
275 
276  //Step 3: Shift the ghost to the 'reflected' location.
277  shiftPosition(pGhost);
278  //rotateHistory
279  //std::cout << "pGhostPosition " << pGhost->getPosition() << std::endl;
280 
281  // BaseParticle* F0 = P->copy();
282  // shiftPosition(F0);
283 
284  //Step 4: If Particle is double shifted, get correct original particle
285  BaseParticle* from = p;
286  while (from->getPeriodicFromParticle() != nullptr)
287  from = from->getPeriodicFromParticle();
288  pGhost->setPeriodicFromParticle(from);
289 
290  pH.addObject(pGhost);
291  }
292 }
BaseParticle * getLargestParticle() const
Gets a pointer to the largest BaseParticle (by interactionRadius) in this ParticleHandler.
void setPeriodicFromParticle(BaseParticle *p)
Assigns the pointer to the 'original' particle this one's a periodic copy of.
BaseParticle * getPeriodicFromParticle() const
Returns the 'original' particle this one's a periodic copy of.
virtual void addObject(BaseParticle *P)
Adds a BaseParticle to the ParticleHandler.
Mdouble distance(const BaseParticle &P)
Returns the distance of the wall to the particle and sets left_wall = true, if the left wall is the w...
void copyInteractionsForPeriodicParticles(const BaseInteractable &p)
Copies interactions to this BaseInteractable whenever a periodic copy made.
void shiftPosition(BaseParticle *P)
shifts the particle (after distance set the left_wall value)
Mdouble getInteractionRadius() const
Returns the particle's interaction radius, which might be different from radius_ (e.g., when dealing with wet particles)
virtual BaseParticle * copy() const
Particle copy method. It calls to copy constructor of this Particle, useful for polymorfism.
Mdouble AngledPeriodicBoundary::distance ( const BaseParticle P)

Returns the distance of the wall to the particle and sets left_wall = true, if the left wall is the wall closest to the particle.

Since this function should be called before calculating any Particle-Wall interactions, it can also be used to set the shift vector in case of curved walls.

Definition at line 84 of file AngledPeriodicBoundary.cc.

References BaseInteractable::getPosition().

Referenced by checkBoundaryAfterParticleMoved(), and createPeriodicParticles().

85 {
86  return distance(P.getPosition());
87 }
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
Mdouble distance(const BaseParticle &P)
Returns the distance of the wall to the particle and sets left_wall = true, if the left wall is the w...
Mdouble AngledPeriodicBoundary::distance ( const Vec3D P)

Definition at line 92 of file AngledPeriodicBoundary.cc.

References Vec3D::dot(), leftNormal_, leftWall_, origin_, and rightNormal_.

93 {
94  Vec3D position = P - origin_;
95  Mdouble distance_left = Vec3D::dot(position, leftNormal_);
96  Mdouble distance_right = -Vec3D::dot(position, rightNormal_);
97 
98  if (distance_left < distance_right)
99  {
100  leftWall_ = true;
101  //std::cout << "left wall, " << position << ", distance " << distance_left << "<" << distance_right << std::endl;
102  return distance_left;
103  }
104  else
105  {
106  leftWall_ = false;
107  //std::cout << "right wall, " << position << ", distance " << distance_right << "<" << distance_left << std::endl;
108  return distance_right;
109  }
110 }
Vec3D origin_
common point of both walls
double Mdouble
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:167
bool leftWall_
true if closest wall is the left wall
Vec3D rightNormal_
outward unit normal vector for right wall
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:45
std::string AngledPeriodicBoundary::getName ( ) const
virtual

Returns the name of the object.

Implements BaseObject.

Definition at line 236 of file AngledPeriodicBoundary.cc.

237 {
238  return "AngledPeriodicBoundary";
239 }
Vec3D & AngledPeriodicBoundary::getNormal ( )

Definition at line 244 of file AngledPeriodicBoundary.cc.

References leftNormal_, leftWall_, and rightNormal_.

245 {
246  if (leftWall_)
247  return leftNormal_;
248  else
249  return rightNormal_;
250 }
bool leftWall_
true if closest wall is the left wall
Vec3D rightNormal_
outward unit normal vector for right wall
Mdouble AngledPeriodicBoundary::getOpeningAngle ( )

angle between walls in radians

Definition at line 255 of file AngledPeriodicBoundary.cc.

References Vec3D::dot(), leftNormal_, and rightNormal_.

256 {
257  return acos(Vec3D::dot(leftNormal_, rightNormal_));
258 }
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:167
Vec3D rightNormal_
outward unit normal vector for right wall
void AngledPeriodicBoundary::oldRead ( std::istream &  is)

Definition at line 215 of file AngledPeriodicBoundary.cc.

References leftNormal_, origin_, rightNormal_, and set().

216 {
217  std::string dummy;
218  is >> dummy >> leftNormal_ >> dummy >> rightNormal_ >> dummy >> origin_;
219  set(leftNormal_, rightNormal_, origin_);
220 }
Vec3D origin_
common point of both walls
void set(Vec3D normalLeft, Vec3D normalRight, Vec3D origin)
Defines a periodic wall.
Vec3D rightNormal_
outward unit normal vector for right wall
void AngledPeriodicBoundary::read ( std::istream &  is)
virtual

reads wall

Implements BaseBoundary.

Definition at line 204 of file AngledPeriodicBoundary.cc.

References leftNormal_, origin_, BaseBoundary::read(), rightNormal_, and set().

205 {
206  BaseBoundary::read(is);
207  std::string dummy;
208  is >> dummy >> leftNormal_ >> dummy >> rightNormal_ >> dummy >> origin_;
209  set(leftNormal_, rightNormal_, origin_);
210 }
Vec3D origin_
common point of both walls
void set(Vec3D normalLeft, Vec3D normalRight, Vec3D origin)
Defines a periodic wall.
Vec3D rightNormal_
outward unit normal vector for right wall
void read(std::istream &is)=0
Reads the object's id_ from given istream NB: purely virtual function, overriding the version of Base...
Definition: BaseBoundary.cc:67
void AngledPeriodicBoundary::set ( Vec3D  normalLeft,
Vec3D  normalRight,
Vec3D  origin 
)

Defines a periodic wall.

given a normal vector s.t. all particles are within {x: position_left<=normal*x<position_right}. The shift vector is set assuming that the domain is rectangular (shift parallel to normal).

Parameters
[in]normalLeft
[in]normalRight
[in]origin
Todo:
TW: Note, I cannot calculate angular shift; this needs to be revisited when we complete quaternion implementation

Definition at line 50 of file AngledPeriodicBoundary.cc.

References commonAxis_, Vec3D::cross(), differenceNormal_, differenceRadialAxis_, Vec3D::dot(), Vec3D::getLength(), leftNormal_, leftRadialAxis_, origin_, rightNormal_, rightRadialAxis_, rotateLeft, rotateRight, Vec3D::X, Vec3D::Y, and Vec3D::Z.

Referenced by oldRead(), and read().

51 {
52  origin_ = origin;
53  leftNormal_ = normalLeft / Vec3D::getLength(normalLeft);
54  rightNormal_ = normalRight / Vec3D::getLength(normalRight);
55  //http://math.stackexchange.com/questions/180418/calculate-rotation-matrix-to-align-vector-a-to-vector-b-in-3d
59  Matrix3D vx = {0, -v.Z, v.Y,
60  v.Z, 0, -v.X,
61  -v.Y, v.X, 0};
62  Matrix3D eye = {1, 0, 0, 0, 1, 0, 0, 0, 1};
63  rotateLeft = eye - vx + vx * vx * ((1 - c) / s / s);
64  rotateRight = eye + vx + vx * vx * ((1 - c) / s / s);
65  //std::cout << "rotationMatrix" << rotationMatrix << std::endl;
66  commonAxis_ = v / s;
72  // walls; maybe this has to wait till quaternions are implemented.}
73  //angularShift = 0;
74  // std::cout << "common_axis " << common_axis
75  // << ", radialAxis_left " << radialAxis_left
76  // << ", radialAxis_right " << radialAxis_right
77  // << ", angularShift " << angularShift
78  // << std::endl;
79 }
Vec3D origin_
common point of both walls
Mdouble X
the vector components
Definition: Vector.h:52
double Mdouble
Vec3D leftRadialAxis_
outward unit normal vector for left wall
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:167
Vec3D commonAxis_
The normalized cross product of the left and right normal vector. This vector points in the direction...
static Vec3D cross(const Vec3D &a, const Vec3D &b)
Calculates the cross product of two Vec3D: .
Definition: Vector.cc:255
Mdouble Y
Definition: Vector.h:52
Vec3D rightRadialAxis_
outward unit normal vector for right wall
Mdouble getLength() const
Calculates the length of this Vec3D: .
Definition: Vector.cc:403
Vec3D rightNormal_
outward unit normal vector for right wall
Implementation of a 3D matrix.
Definition: Matrix.h:36
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:45
Mdouble Z
Definition: Vector.h:52
void AngledPeriodicBoundary::shiftPosition ( BaseParticle P)

shifts the particle (after distance set the left_wall value)

Todo:
add velocity, angular, springs shift
Todo:
TW: not sure how to calculate the angular position in common_axis direction; this needs to be revisited when we complete quaternion implementation

Definition at line 115 of file AngledPeriodicBoundary.cc.

References BaseParticle::accelerate(), BaseParticle::angularAccelerate(), differenceNormal_, differenceRadialAxis_, Vec3D::dot(), BaseInteractable::getAngularVelocity(), BaseObject::getIndex(), BaseInteractable::getInteractions(), BaseInteractable::getOrientation(), BaseInteractable::getPosition(), BaseInteractable::getVelocity(), leftNormal_, leftRadialAxis_, leftWall_, BaseInteractable::move(), origin_, rightNormal_, rightRadialAxis_, BaseInteractable::rotate(), rotateLeft, and rotateRight.

Referenced by checkBoundaryAfterParticleMoved(), and createPeriodicParticles().

116 {
117  Vec3D position = P->getPosition() - origin_;
118  if (leftWall_)
119  {
120  Mdouble normalDistance = Vec3D::dot(position, leftNormal_);
121  Mdouble radialDistance = Vec3D::dot(position, leftRadialAxis_);
122  P->move(normalDistance * differenceNormal_ + radialDistance * differenceRadialAxis_);
123  Mdouble normalVelocity = Vec3D::dot(P->getVelocity(), leftNormal_);
124  Mdouble radialVelocity = Vec3D::dot(P->getVelocity(), leftRadialAxis_);
125  P->accelerate(normalVelocity * differenceNormal_ + radialVelocity * differenceRadialAxis_);
126  Mdouble normalAngularDistance = Vec3D::dot(P->getOrientation(), leftNormal_);
127  Mdouble radialAngularDistance = Vec3D::dot(P->getOrientation(), leftRadialAxis_);
129  P->rotate(normalAngularDistance * differenceNormal_ + radialAngularDistance * differenceRadialAxis_);
130  Mdouble normalAngularVelocity = Vec3D::dot(P->getAngularVelocity(), leftNormal_);
131  Mdouble radialAngularVelocity = Vec3D::dot(P->getAngularVelocity(), leftRadialAxis_);
132  P->angularAccelerate(normalAngularVelocity * differenceNormal_ + radialAngularVelocity * differenceRadialAxis_);
133  leftWall_ = false;
134  //std::cout << "shift to right wall, " << P->getInteractions().size() << std::endl;
135  for (BaseInteraction* i : P->getInteractions())
136  {
137  if (i->getP()->getIndex() >= P->getIndex())
138  {
139  i->rotateHistory(rotateRight);
140  }
141  }
142  }
143  else
144  {
145  Mdouble normalDistance = Vec3D::dot(position, rightNormal_);
146  Mdouble radialDistance = Vec3D::dot(position, rightRadialAxis_);
147  P->move(-normalDistance * differenceNormal_ - radialDistance * differenceRadialAxis_);
148  Mdouble normalVelocity = Vec3D::dot(P->getVelocity(), rightNormal_);
149  Mdouble radialVelocity = Vec3D::dot(P->getVelocity(), rightRadialAxis_);
150  P->accelerate(-normalVelocity * differenceNormal_ - radialVelocity * differenceRadialAxis_);
151  Mdouble normalAngularDistance = Vec3D::dot(P->getOrientation(), rightNormal_);
152  Mdouble radialAngularDistance = Vec3D::dot(P->getOrientation(), rightRadialAxis_);
153  P->rotate(-normalAngularDistance * differenceNormal_ - radialAngularDistance * differenceRadialAxis_);
154  Mdouble normalAngularVelocity = Vec3D::dot(P->getAngularVelocity(), rightNormal_);
155  Mdouble radialAngularVelocity = Vec3D::dot(P->getAngularVelocity(), rightRadialAxis_);
156  P->angularAccelerate(-normalAngularVelocity * differenceNormal_ - radialAngularVelocity * differenceRadialAxis_);
157  leftWall_ = true;
158  //std::cout << "shift to left wall, " << P->getPosition() << std::endl;
159  for (BaseInteraction* i : P->getInteractions())
160  {
161  if (i->getP()->getIndex() >= P->getIndex()) //if it is the deleted interaction
162  {
163  i->rotateHistory(rotateLeft);
164  }
165  }
166  }
167 }
Vec3D origin_
common point of both walls
unsigned int getIndex() const
Returns the index of the object in the handler.
Definition: BaseObject.cc:108
void rotate(const Vec3D &rotate)
Rotates this BaseInteractable.
double Mdouble
Vec3D leftRadialAxis_
outward unit normal vector for left wall
virtual const Vec3D & getAngularVelocity() const
Returns the angular velocity of this interactable.
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:167
void accelerate(const Vec3D &vel)
Increases the particle's velocity_ by the given vector.
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
const Vec3D & getOrientation() const
Returns the orientation of this BaseInteractable.
Stores information about interactions between two interactable objects; often particles but could be ...
bool leftWall_
true if closest wall is the left wall
Vec3D rightRadialAxis_
outward unit normal vector for right wall
Vec3D rightNormal_
outward unit normal vector for right wall
void angularAccelerate(const Vec3D &angVel)
Increases the particle's angularVelocity_ by the given vector.
const std::list< BaseInteraction * > & getInteractions() const
Returns a reference to the list of interactions in this BaseInteractable.
virtual const Vec3D & getVelocity() const
Returns the velocity of this interactable.
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:45
virtual void move(const Vec3D &move)
Moves this BaseInteractable by adding an amount to the position.
void AngledPeriodicBoundary::shiftPositions ( Vec3D P1,
Vec3D P2 
)

only needed in StatisticsVector

Todo:
TW: this still doesn't shift all data

Definition at line 172 of file AngledPeriodicBoundary.cc.

References differenceNormal_, differenceRadialAxis_, Vec3D::dot(), leftNormal_, leftRadialAxis_, leftWall_, origin_, rightNormal_, and rightRadialAxis_.

173 {
175  Vec3D position1 = P1 - origin_;
176  Vec3D position2 = P2 - origin_;
177  Mdouble normalDistance;
178  Mdouble radialDistance;
179  if (leftWall_)
180  {
181  normalDistance = Vec3D::dot(position1, leftNormal_);
182  radialDistance = Vec3D::dot(position1, leftRadialAxis_);
183  P1 += (normalDistance * differenceNormal_ + radialDistance * differenceRadialAxis_);
184  normalDistance = Vec3D::dot(position2, leftNormal_);
185  radialDistance = Vec3D::dot(position2, leftRadialAxis_);
186  P2 += (normalDistance * differenceNormal_ + radialDistance * differenceRadialAxis_);
187  leftWall_ = false;
188  }
189  else
190  {
191  normalDistance = Vec3D::dot(position1, rightNormal_);
192  radialDistance = Vec3D::dot(position1, rightRadialAxis_);
193  P1 += (-normalDistance * differenceNormal_ - radialDistance * differenceRadialAxis_);
194  normalDistance = Vec3D::dot(position2, rightNormal_);
195  radialDistance = Vec3D::dot(position2, rightRadialAxis_);
196  P2 += (-normalDistance * differenceNormal_ - radialDistance * differenceRadialAxis_);
197  leftWall_ = true;
198  }
199 }
Vec3D origin_
common point of both walls
double Mdouble
Vec3D leftRadialAxis_
outward unit normal vector for left wall
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:167
bool leftWall_
true if closest wall is the left wall
Vec3D rightRadialAxis_
outward unit normal vector for right wall
Vec3D rightNormal_
outward unit normal vector for right wall
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:45
void AngledPeriodicBoundary::write ( std::ostream &  os) const
virtual

outputs wall

Implements BaseBoundary.

Definition at line 225 of file AngledPeriodicBoundary.cc.

References leftNormal_, origin_, rightNormal_, and BaseBoundary::write().

226 {
228  os << " normal_left " << leftNormal_
229  << " normal_right " << rightNormal_
230  << " origin " << origin_;
231 }
Vec3D origin_
common point of both walls
void write(std::ostream &os) const =0
Adds object's id_ to given ostream NB: purely virtual function, overriding the version of BaseObject...
Definition: BaseBoundary.cc:76
Vec3D rightNormal_
outward unit normal vector for right wall

Member Data Documentation

Vec3D AngledPeriodicBoundary::commonAxis_
private

The normalized cross product of the left and right normal vector. This vector points in the direction around which the particle is rotated when it is moved from one boundary to the other. This is an internal variable set in the constructor, thus cannot be changed directly by the user.

Definition at line 179 of file AngledPeriodicBoundary.h.

Referenced by set().

Vec3D AngledPeriodicBoundary::differenceNormal_
private

Definition at line 166 of file AngledPeriodicBoundary.h.

Referenced by set(), shiftPosition(), and shiftPositions().

Vec3D AngledPeriodicBoundary::differenceRadialAxis_
private

Definition at line 162 of file AngledPeriodicBoundary.h.

Referenced by set(), shiftPosition(), and shiftPositions().

Vec3D AngledPeriodicBoundary::leftNormal_
private

outward unit normal vector for left wall

Definition at line 135 of file AngledPeriodicBoundary.h.

Referenced by distance(), getNormal(), getOpeningAngle(), oldRead(), read(), set(), shiftPosition(), shiftPositions(), and write().

Vec3D AngledPeriodicBoundary::leftRadialAxis_
private

outward unit normal vector for left wall

Definition at line 154 of file AngledPeriodicBoundary.h.

Referenced by set(), shiftPosition(), and shiftPositions().

bool AngledPeriodicBoundary::leftWall_
private

true if closest wall is the left wall

Definition at line 150 of file AngledPeriodicBoundary.h.

Referenced by distance(), getNormal(), shiftPosition(), and shiftPositions().

Vec3D AngledPeriodicBoundary::origin_
private

common point of both walls

Definition at line 145 of file AngledPeriodicBoundary.h.

Referenced by distance(), oldRead(), read(), set(), shiftPosition(), shiftPositions(), and write().

Vec3D AngledPeriodicBoundary::rightNormal_
private

outward unit normal vector for right wall

Definition at line 140 of file AngledPeriodicBoundary.h.

Referenced by distance(), getNormal(), getOpeningAngle(), oldRead(), read(), set(), shiftPosition(), shiftPositions(), and write().

Vec3D AngledPeriodicBoundary::rightRadialAxis_
private

outward unit normal vector for right wall

Definition at line 158 of file AngledPeriodicBoundary.h.

Referenced by set(), shiftPosition(), and shiftPositions().

Matrix3D AngledPeriodicBoundary::rotateLeft
private

Definition at line 168 of file AngledPeriodicBoundary.h.

Referenced by set(), and shiftPosition().

Matrix3D AngledPeriodicBoundary::rotateRight
private

Definition at line 170 of file AngledPeriodicBoundary.h.

Referenced by set(), and shiftPosition().


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