MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SineWall Class Reference

#include <SineWall.h>

+ Inheritance diagram for SineWall:

Public Member Functions

 SineWall ()
 Default constructor, sets a chute with default parameters. More...
 
 SineWall (const SineWall &other)
 Copy constructor. More...
 
 SineWall (Mdouble length, Mdouble sw_wavn, Mdouble sw_phshift, Mdouble sw_amp)
 Constructor in which all parameters are set. More...
 
 ~SineWall () override
 
void set (Mdouble length, Mdouble sw_wavn, Mdouble sw_phshift, Mdouble sw_amp)
 
SineWallcopy () const override
 Pure virtual function that can be overwritten in inherited classes in order to copy a BaseWall. More...
 
bool getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const override
 Pure virtual function that computes the distance of a BaseParticle to this wall and returns the normal of this wall if there is a collision. More...
 
BaseInteractiongetInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
 Returns the interaction between this wall and a given particle, nullptr if there is no interaction. More...
 
void read (std::istream &is) override
 
void write (std::ostream &os) const override
 
std::string getName () const override
 
- Public Member Functions inherited from BaseWall
 BaseWall ()
 Default constructor. More...
 
 BaseWall (const BaseWall &w)
 Copy constructor. More...
 
 ~BaseWall () override
 Default destructor. More...
 
virtual bool getDistanceNormalOverlap (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return, Mdouble &overlap) const
 
virtual bool getDistanceNormalOverlapSuperquadric (const SuperQuadricParticle &p, Mdouble &distance, Vec3D &normal_return, Mdouble &overlap) const
 
virtual Vec3D getFurthestPointSuperQuadric (const Vec3D &normalBodyFixed, const Vec3D &axes, Mdouble eps1, Mdouble eps2) const
 
virtual void setHandler (WallHandler *handler)
 A function which sets the WallHandler for this BaseWall. More...
 
WallHandlergetHandler () const
 A function which returns the WallHandler that handles this BaseWall. More...
 
void setIndSpecies (unsigned int indSpecies) override
 Define the species of this wall using the index of the species in the SpeciesHandler in this DPMBase. More...
 
void setSpecies (const ParticleSpecies *species)
 Defines the species of the current wall. More...
 
bool isFixed () const override
 
void setForceControl (Vec3D forceGoal, Vec3D gainFactor, Vec3D baseVelocity={0, 0, 0})
 Slowly adjusts the force on a wall towards a specified goal, by adjusting (prescribing) the velocity of the wall. More...
 
virtual bool isLocal (Vec3D &min, Vec3D &max) const
 
bool getLinePlaneIntersect (Vec3D &intersect, const Vec3D &p0, const Vec3D &p1, const Vec3D &n, const Vec3D &p)
 
bool isInsideWallVTK (const Vec3D &point, const Vec3D &normal, const Vec3D &position) const
 
void projectOntoWallVTK (Vec3D &point0, const Vec3D &point1, const Vec3D &normal, const Vec3D &position) const
 
void intersectVTK (std::vector< Vec3D > &points, Vec3D normal, Vec3D position) const
 
virtual BaseInteractiongetInteractionWithSuperQuad (SuperQuadricParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler)
 
virtual void writeVTK (VTKContainer &vtk) const
 
void getVTK (std::vector< Vec3D > &points, std::vector< std::vector< double >> &triangleStrips)
 
const Vec3D getAxis () const
 
virtual void actionsOnRestart ()
 No implementation but can be overidden in its derived classes. More...
 
virtual void actionsAfterParticleGhostUpdate ()
 No implementation but can be overidden in its derived classes. More...
 
virtual void handleParticleAddition (unsigned int id, BaseParticle *p)
 Handles the addition of particles to the particleHandler. More...
 
virtual void handleParticleRemoval (unsigned int id)
 Handles the addition of particles to the particleHandler. More...
 
virtual void checkInteractions (InteractionHandler *interactionHandler, unsigned int timeStamp)
 Check if all interactions are valid. More...
 
bool getVTKVisibility () const
 
void setVTKVisibility (bool vtkVisibility)
 
void addRenderedWall (BaseWall *w)
 
BaseWallgetRenderedWall (size_t i) const
 
void removeRenderedWalls ()
 
void renderWall (VTKContainer &vtk)
 
void addParticlesAtWall (unsigned numElements=50)
 
void setVelocityControl (Vec3D forceGoal, Vec3D gainFactor, Vec3D baseVelocity)
 
- Public Member Functions inherited from BaseInteractable
 BaseInteractable ()
 Default BaseInteractable constructor. More...
 
 BaseInteractable (const BaseInteractable &p)
 Copy constructor. More...
 
 ~BaseInteractable () override
 Destructor, it simply destructs the BaseInteractable and all the objects it contains. More...
 
unsigned int getIndSpecies () const
 Returns the index of the species associated with the interactable object. More...
 
const ParticleSpeciesgetSpecies () const
 Returns a pointer to the species of this BaseInteractable. More...
 
void setSpecies (const ParticleSpecies *species)
 Sets the species of this BaseInteractable. More...
 
const Vec3DgetForce () const
 Returns the force on this BaseInteractable. More...
 
const Vec3DgetTorque () const
 Returns the torque on this BaseInteractable. More...
 
void setForce (const Vec3D &force)
 Sets the force on this BaseInteractable. More...
 
void setTorque (const Vec3D &torque)
 Sets the torque on this BaseInteractable. More...
 
void addForce (const Vec3D &addForce)
 Adds an amount to the force on this BaseInteractable. More...
 
void addTorque (const Vec3D &addTorque)
 Adds an amount to the torque on this BaseInteractable. More...
 
void resetForceTorque (int numberOfOMPthreads)
 
void sumForceTorqueOMP ()
 
const Vec3DgetPosition () const
 Returns the position of this BaseInteractable. More...
 
const QuaterniongetOrientation () const
 Returns the orientation of this BaseInteractable. More...
 
void setPosition (const Vec3D &position)
 Sets the position of this BaseInteractable. More...
 
void setOrientationViaNormal (Vec3D normal)
 Sets the orientation of this BaseInteractable by defining the vector that results from the rotation of the (1,0,0) vector. More...
 
void setOrientationViaEuler (Vec3D eulerAngle)
 Sets the orientation of this BaseInteractable by defining the euler angles. More...
 
void setOrientation (const Quaternion &orientation)
 Sets the orientation of this BaseInteractable. More...
 
virtual void move (const Vec3D &move)
 Moves this BaseInteractable by adding an amount to the position. More...
 
virtual void rotate (const Vec3D &angularVelocityDt)
 Rotates this BaseInteractable. More...
 
const std::vector
< BaseInteraction * > & 
getInteractions () const
 Returns a list of interactions which belong to this interactable. More...
 
void addInteraction (BaseInteraction *I)
 Adds an interaction to this BaseInteractable. More...
 
bool removeInteraction (BaseInteraction *I)
 Removes an interaction from this BaseInteractable. More...
 
void copyInteractionsForPeriodicParticles (const BaseInteractable &p)
 Copies interactions to this BaseInteractable whenever a periodic copy made. More...
 
void setVelocity (const Vec3D &velocity)
 set the velocity of the BaseInteractable. More...
 
void setAngularVelocity (const Vec3D &angularVelocity)
 set the angular velocity of the BaseInteractble. More...
 
void addVelocity (const Vec3D &velocity)
 adds an increment to the velocity. More...
 
void addAngularVelocity (const Vec3D &angularVelocity)
 add an increment to the angular velocity. More...
 
virtual const Vec3DgetVelocity () const
 Returns the velocity of this interactable. More...
 
virtual const Vec3DgetAngularVelocity () const
 Returns the angular velocity of this interactable. More...
 
void setPrescribedPosition (const std::function< Vec3D(double)> &prescribedPosition)
 Allows the position of an infinite mass interactable to be prescribed. More...
 
void applyPrescribedPosition (double time)
 Computes the position from the user defined prescribed position function. More...
 
void setPrescribedVelocity (const std::function< Vec3D(double)> &prescribedVelocity)
 Allows the velocity of an infinite mass interactable to be prescribed. More...
 
void applyPrescribedVelocity (double time)
 Computes the velocity from the user defined prescribed velocity function. More...
 
void setPrescribedOrientation (const std::function< Quaternion(double)> &prescribedOrientation)
 Allows the orientation of the infinite mass interactbale to be prescribed. More...
 
void applyPrescribedOrientation (double time)
 Computes the orientation from the user defined prescribed orientation function. More...
 
void setPrescribedAngularVelocity (const std::function< Vec3D(double)> &prescribedAngularVelocity)
 Allows the angular velocity of the infinite mass interactable to be prescribed. More...
 
void applyPrescribedAngularVelocity (double time)
 Computes the angular velocity from the user defined prescribed angular velocity. More...
 
virtual const Vec3D getVelocityAtContact (const Vec3D &contact) const
 Returns the velocity at the contact point, use by many force laws. More...
 
void integrateBeforeForceComputation (double time, double timeStep)
 This is part of integrate routine for objects with infinite mass. More...
 
void integrateAfterForceComputation (double time, double timeStep)
 This is part of the integration routine for objects with infinite mass. More...
 
virtual Mdouble getInvMass () const
 
virtual Mdouble getCurvature (const Vec3D &labFixedCoordinates) const
 
- Public Member Functions inherited from BaseObject
 BaseObject ()=default
 Default constructor. More...
 
 BaseObject (const BaseObject &p)=default
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()=default
 virtual destructor More...
 
virtual void moveInHandler (unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (unsigned long 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...
 
void setGroupId (unsigned groupId)
 
unsigned getGroupId () const
 

Private Attributes

Mdouble l_
 
Mdouble sw_amp_
 
Mdouble sw_wavn_
 
Mdouble sw_phshift_
 

Additional Inherited Members

- Static Public Member Functions inherited from BaseWall
static void addToVTK (const std::vector< Vec3D > &points, VTKContainer &vtk)
 Takes the points provided and adds a triangle strip connecting these points to the vtk container. More...
 

Detailed Description

A half-infinite surface which has a sinusoidal direction in the x direction, and no variation in the y direction.

The equation of the surface is z = sw_amp * sin( sw_wavn * x + sw_phshift ) for x < l Because this is nonlinear, we must solve for the interaction location using Newton's method.

Definition at line 40 of file SineWall.h.

Constructor & Destructor Documentation

SineWall::SineWall ( )

Default constructor, sets a chute with default parameters.

Definition at line 30 of file SineWall.cc.

References DEBUG, l_, logger, sw_amp_, sw_phshift_, and sw_wavn_.

Referenced by copy().

31 {
32  l_ = 1.0;
33  sw_wavn_ = 0.0;
34  sw_phshift_ = 0.0;
35  sw_amp_ = 0.0;
36  logger(DEBUG, "SineWall() constructor finished");
37 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here...
Mdouble sw_amp_
Definition: SineWall.h:77
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
Mdouble sw_wavn_
Definition: SineWall.h:78
SineWall::SineWall ( const SineWall other)

Copy constructor.

Definition at line 39 of file SineWall.cc.

References DEBUG, l_, logger, sw_amp_, sw_phshift_, and sw_wavn_.

39  : BaseWall(other)
40 {
41  l_ = other.l_;
42  sw_wavn_ = other.sw_wavn_;
43  sw_phshift_ = other.sw_phshift_;
44  sw_amp_ = other.sw_amp_;
45  logger(DEBUG, "SineWall copy constructor finished");
46 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here...
Mdouble sw_amp_
Definition: SineWall.h:77
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
BaseWall()
Default constructor.
Definition: BaseWall.cc:36
Mdouble sw_wavn_
Definition: SineWall.h:78
SineWall::SineWall ( Mdouble  length,
Mdouble  sw_wavn,
Mdouble  sw_phshift,
Mdouble  sw_amp 
)

Constructor in which all parameters are set.

Definition at line 48 of file SineWall.cc.

References DEBUG, l_, logger, sw_amp_, sw_phshift_, and sw_wavn_.

49 {
50  l_ = length;
51  sw_wavn_ = sw_wavn;
52  sw_phshift_ = sw_phshift;
53  sw_amp_ = sw_amp;
54  logger(DEBUG, "SineWall(params) constructor finished");
55 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here...
Mdouble sw_amp_
Definition: SineWall.h:77
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
Mdouble sw_wavn_
Definition: SineWall.h:78
SineWall::~SineWall ( )
override

Definition at line 57 of file SineWall.cc.

References DEBUG, and logger.

58 {
59  logger(DEBUG, "SineWall destructor finished");
60 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here...

Member Function Documentation

SineWall * SineWall::copy ( ) const
overridevirtual

Pure virtual function that can be overwritten in inherited classes in order to copy a BaseWall.

Returns
A pointer to the new BaseWall.

Implements BaseWall.

Definition at line 70 of file SineWall.cc.

References SineWall().

71 {
72  return new SineWall(*this);
73 }
SineWall()
Default constructor, sets a chute with default parameters.
Definition: SineWall.cc:30
bool SineWall::getDistanceAndNormal ( const BaseParticle P,
Mdouble distance,
Vec3D normal_return 
) const
overridevirtual

Pure virtual function that computes the distance of a BaseParticle to this wall and returns the normal of this wall if there is a collision.

Beware, the distance and normal are output parameters, not return values!

Parameters
[in]PReference to the BaseParticle we want to compute the distance to the BaseWall of.
[out]distanceDistance of the BaseParticle to the BaseWall.
[out]normal_returnThe normal of the wall. Is only given if there is a collision.
Returns
A boolean which indicates if there is a collision between the BaseParticle and the wall.

Implements BaseWall.

Definition at line 75 of file SineWall.cc.

References A, mathsFunc::cos(), Vec3D::getLength(), BaseInteractable::getPosition(), BaseParticle::getRadius(), BaseParticle::getWallInteractionRadius(), R, mathsFunc::sin(), mathsFunc::square(), sw_amp_, sw_phshift_, sw_wavn_, Vec3D::X, Vec3D::Y, and Vec3D::Z.

Referenced by getInteractionWith().

76 {
77  /* Define some shortcuts */
78  double x0 = p.getPosition().X;
79  double y0 = p.getPosition().Y;
80  double z0 = p.getPosition().Z;
81  double a = p.getRadius();
82 
83  // more shortcuts
84  double A = sw_amp_;
85  double k = sw_wavn_;
86  double ph = sw_phshift_;
87 
88  /* First, check whether the particle is definitely out of contact with the
89  * chute. This will be so if the particle's interaction radius is small and
90  * the particle's z-position is high. */
91  // TODO do this properly
92  if (z0 > A + a)
93  return false;
94 
95  /* Or, if the particle lies under the surface, then it is expelled
96  * perpendicularly. This shouldn't happen very often provided that the step
97  * size is small.*/
98  else if (z0 < A * sin(k * x0 + ph))
99  {
100  fprintf(stderr, "Particle at x0=%f, z0=%f is under SineWall\n", x0, z0);
101  // exit(-1);
102 
103  distance = A * sin(k * x0 + ph) - z0;
104  normal_return = Vec3D(0, 0, 1);
105  return true;
106  }
107 
108  /* Otherwise, find the contact point by using Newton's method to minimise
109  * (half of the squared) distance */
110  else
111  {
112  // Iterate according to Newton-Raphson
113  double q = x0;
114  double correction = 0;
115  // fprintf(stderr, "x0 = %lf, z0 = %lf, q = %lf\n", x0, z0, q);
116  do
117  {
118  double z = A * sin(k * q + ph);
119  double dzdq = A * k * cos(k * q + ph);
120  double d2zdq2 = -A * pow(k, 2) * sin(k * q + ph);
121 
122  // (Half of the square of the) distance. Not used.
123  double R = 0.5 * (pow(q - x0, 2) + pow(z - z0, 2));
124  // derivative of half the squared distance -- to be zeroed
125  double dRdq = q - x0 + (z - z0) * dzdq;
126  // second derivative of half the squared distance
127  double d2Rdq2 = 1 + (z - z0) * d2zdq2 + pow(dzdq, 2);
128  // The required correction to our current estimate. (Note the sign
129  // convention that this is to be subtracted.)
130  correction = dRdq / d2Rdq2;
131  //fprintf(stderr, "x0 = %.12lf, z0 = %.12lf, q = %.12lf, dRdq = %e, d2Rdq2 = %e, correction = %.e\n",
132  // x0, z0, q, dRdq, d2Rdq2, correction);
133  // N-R update
134  q -= correction;
135  // Perhaps this form is useful for reducing rounding errors?
136  // q = (q*d2Rdq2 - dRdq)/d2Rdq2;
137  } while (fabs(correction) > 1e-14);
138  //fprintf(stderr, "correction = %e\n", fabs(correction));
139 
140  // The standard Newton-Raphson iteration won't work, because the problem is
141  // too oscillatory (and N-R will converge on a near-root minimum, not the
142  // root). Neither does the following, a modified N-R which takes second and
143  // third derivatives into account.
144  /*
145  double q = x0;
146  double correction = 0;
147  do
148  {
149  // derivative of half the squared distance
150  double dRdq = q - x0 - A*pow(k,2)*z0*cos(k*q+ph) + 0.5*pow(A,2)*pow(k,3)*sin(2*k*q+2*ph);
151  // second derivative
152  double d2Rdq2 = 1 + pow(A,2)*pow(k,4)*cos(2*k*q+2*ph) + A*pow(k,3)*z0*sin(k*q+ph);
153  // third derivative
154  double d2Rdq2d = A*pow(k,4)*cos(k*q+ph) * (z0 - 4*A*k*sin(k*q+ph));
155 
156  double discriminant = d2Rdq2*d2Rdq2 - 2*dRdq*d2Rdq2d;
157  double newq = discriminant > 0 ?
158  q - (d2Rdq2 - sqrt(discriminant)) / d2Rdq2d
159  : q - dRdq / d2Rdq2;
160  double correction = newq/q - 1;
161  fprintf(stderr, "x0 = %.12lf, z0 = %.12lf, q = %.12lf, newq = %.12lf, correction = %e\n",
162  x0, z0, q, newq, correction);
163  q = newq;
164  } while (fabs(correction) > 1e-7);
165  fprintf(stderr, "converged, fabs(correction) = %e\n", fabs(correction));
166  */
167 
168  Mdouble distanceSquared
169  = pow(q - x0, 2) + pow(sw_amp_ * sin(sw_wavn_ * q + sw_phshift_) - z0, 2);
170 
171  if (distanceSquared >= mathsFunc::square(p.getWallInteractionRadius(this))
172  && z0 > sw_amp_ * sin(sw_wavn_ * q + sw_phshift_))
173  {
174  return false;
175  }
176  else
177  {
178  Vec3D ContactPoint;
179  distance = sqrt(distanceSquared);
180  ContactPoint.X = q;
181  ContactPoint.Y = y0;
182  ContactPoint.Z = sw_amp_ * sin(sw_wavn_ * q + sw_phshift_);
183  // normal_return = ContactPoint - p.getPosition();
184  normal_return = ContactPoint - p.getPosition();
185  normal_return /= normal_return.getLength();
186  return true;
187  }
188  }
189 }
Mdouble X
the vector components
Definition: Vector.h:65
double Mdouble
Definition: GeneralDefine.h:34
Mdouble sw_amp_
Definition: SineWall.h:77
static Mdouble getLength(const Vec3D &a)
Calculates the length of a Vec3D: .
Definition: Vector.cc:331
Mdouble cos(Mdouble x)
Definition: ExtendedMath.cc:64
Mdouble sin(Mdouble x)
Definition: ExtendedMath.cc:44
Mdouble sw_phshift_
Definition: SineWall.h:79
Mdouble Y
Definition: Vector.h:65
Mdouble sw_wavn_
Definition: SineWall.h:78
Definition: Vector.h:49
T square(const T val)
squares a number
Definition: ExtendedMath.h:106
Mdouble Z
Definition: Vector.h:65
BaseInteraction * SineWall::getInteractionWith ( BaseParticle p,
unsigned  timeStamp,
InteractionHandler interactionHandler 
)
overridevirtual

Returns the interaction between this wall and a given particle, nullptr if there is no interaction.

Parameters
[in]pPointer to the BaseParticle which we want to check the interaction for.
[in]timeStampThe time at which we want to look at the interaction.
[in]interactionHandlerA pointer to the InteractionHandler in which the interaction can be found.
Returns
A pointer to the BaseInteraction that happened between this BaseWall and the BaseParticle at the timeStamp.
Todo:
Hacked please fix
Todo:
{DK: What is the contact point for interactions with walls}

Reimplemented from BaseWall.

Definition at line 192 of file SineWall.cc.

References getDistanceAndNormal(), InteractionHandler::getInteraction(), BaseInteractable::getPosition(), BaseParticle::getRadius(), BaseInteraction::setContactPoint(), BaseInteraction::setDistance(), BaseInteraction::setNormal(), and BaseInteraction::setOverlap().

193 {
194  Mdouble distance;
195  Vec3D normal;
196  if (getDistanceAndNormal(*p, distance, normal))
197  {
198  BaseInteraction* c = interactionHandler->getInteraction(p, this, timeStamp);
199  c->setNormal(-normal);
200  c->setDistance(distance);
201  c->setOverlap(p->getRadius() - distance);
202  // c->setContactPoint( p->getPosition() - (p->getRadius() - 0.5*c->getOverlap()) * c->getNormal());
203  c->setContactPoint(p->getPosition() + distance * normal);
205  return c;
206  }
207  else
208  return nullptr;
209 }
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
void setNormal(Vec3D normal)
Sets the normal vector between the two interacting objects.
void setOverlap(Mdouble overlap)
Set the overlap between the two interacting object.
double Mdouble
Definition: GeneralDefine.h:34
bool getDistanceAndNormal(const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const override
Pure virtual function that computes the distance of a BaseParticle to this wall and returns the norma...
Definition: SineWall.cc:75
void setContactPoint(Vec3D contactPoint)
Set the location of the contact point between the two interacting objects.
void setDistance(Mdouble distance)
Sets the interaction distance between the two interacting objects.
Stores information about interactions between two interactable objects; often particles but could be ...
BaseInteraction * getInteraction(BaseInteractable *P, BaseInteractable *I, unsigned timeStamp)
Returns the Interaction between the BaseInteractable's P and I.
Mdouble getRadius() const
Returns the particle's radius.
Definition: BaseParticle.h:348
Definition: Vector.h:49
std::string SineWall::getName ( ) const
overridevirtual
Returns
The string "SineWall".

Implements BaseObject.

Definition at line 239 of file SineWall.cc.

240 {
241  return "SineWall";
242 }
void SineWall::read ( std::istream &  is)
overridevirtual
Parameters
[in,out]isThe input stream from which the SineWall is read.

Reimplemented from BaseWall.

Definition at line 214 of file SineWall.cc.

References l_, BaseWall::read(), sw_amp_, sw_phshift_, and sw_wavn_.

215 {
216  BaseWall::read(is);
217  std::string dummy;
218  is >> dummy >> l_
219  >> dummy >> sw_wavn_
220  >> dummy >> sw_phshift_
221  >> dummy >> sw_amp_;
222 }
Mdouble sw_amp_
Definition: SineWall.h:77
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
void read(std::istream &is) override
Function that reads a BaseWall from an input stream, usually a restart file.
Definition: BaseWall.cc:80
Mdouble sw_wavn_
Definition: SineWall.h:78
void SineWall::set ( Mdouble  length,
Mdouble  sw_wavn,
Mdouble  sw_phshift,
Mdouble  sw_amp 
)

Definition at line 62 of file SineWall.cc.

References l_, sw_amp_, sw_phshift_, and sw_wavn_.

63 {
64  l_ = length;
65  sw_wavn_ = sw_wavn;
66  sw_phshift_ = sw_phshift;
67  sw_amp_ = sw_amp;
68 }
Mdouble sw_amp_
Definition: SineWall.h:77
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
Mdouble sw_wavn_
Definition: SineWall.h:78
void SineWall::write ( std::ostream &  os) const
overridevirtual
Parameters
[in,out]osThe outpus stream to which the SineWall is written.

Reimplemented from BaseWall.

Definition at line 227 of file SineWall.cc.

References l_, sw_amp_, sw_phshift_, sw_wavn_, and BaseWall::write().

228 {
229  BaseWall::write(os);
230  os << " Length " << l_
231  << " sw_wavn " << sw_wavn_
232  << " sw_phshift " << sw_phshift_
233  << " sw_amp " << sw_amp_;
234 }
Mdouble sw_amp_
Definition: SineWall.h:77
void write(std::ostream &os) const override
Function that writes a BaseWall to an output stream, usually a restart file.
Definition: BaseWall.cc:102
Mdouble l_
Definition: SineWall.h:76
Mdouble sw_phshift_
Definition: SineWall.h:79
Mdouble sw_wavn_
Definition: SineWall.h:78

Member Data Documentation

Mdouble SineWall::l_
private

Definition at line 76 of file SineWall.h.

Referenced by read(), set(), SineWall(), and write().

Mdouble SineWall::sw_amp_
private

Definition at line 77 of file SineWall.h.

Referenced by getDistanceAndNormal(), read(), set(), SineWall(), and write().

Mdouble SineWall::sw_phshift_
private

Definition at line 79 of file SineWall.h.

Referenced by getDistanceAndNormal(), read(), set(), SineWall(), and write().

Mdouble SineWall::sw_wavn_
private

Definition at line 78 of file SineWall.h.

Referenced by getDistanceAndNormal(), read(), set(), SineWall(), and write().


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