WearableTriangulatedWall Class Reference

#include <WearableTriangulatedWall.h>

+ Inheritance diagram for WearableTriangulatedWall:

Public Member Functions

 WearableTriangulatedWall ()
 Default constructor. More...
 
 WearableTriangulatedWall (const WearableTriangulatedWall &other)
 Copy constructor. More...
 
 WearableTriangulatedWall (Mdouble lengthU, Mdouble lengthV, Mdouble resolutionU, Mdouble resolutionV)
 Creates flat triangulated rectangle with certain resolution. More...
 
 ~WearableTriangulatedWall () override
 Destructor. More...
 
WearableTriangulatedWalloperator= (const WearableTriangulatedWall &other)
 
WearableTriangulatedWallcopy () const override
 Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism. More...
 
void read (std::istream &is) override
 Reads an WearableTriangulatedWall from an input stream, for example a restart file. More...
 
void write (std::ostream &os) const override
 Writes an WearableTriangulatedWall to an output stream, for example a restart file. More...
 
std::string getName () const override
 Returns the name of the object, here the string "WearableTriangulatedWall". More...
 
void computeWear () override
 
- Public Member Functions inherited from TriangulatedWall
 TriangulatedWall ()
 Default constructor. More...
 
 TriangulatedWall (const TriangulatedWall &other)
 Copy constructor. More...
 
 TriangulatedWall (std::string filename, const ParticleSpecies *species)
 Constructor setting values. More...
 
 TriangulatedWall (const std::vector< Vec3D > &points, const std::vector< std::vector< unsigned >> &cells, const ParticleSpecies *species)
 Constructor setting values. More...
 
void set (const std::vector< Vec3D > &points, const std::vector< std::vector< unsigned >> &cells)
 
void readVTK (std::string filename)
 
void writeVTK (VTKContainer &vtk) const override
 
 ~TriangulatedWall () override
 Destructor. More...
 
TriangulatedWalloperator= (const TriangulatedWall &other)
 
bool getDistanceAndNormal (const BaseParticle &p, Mdouble &distance, Vec3D &normal_return) const override
 Compute the distance from the wall for a given BaseParticle and return if there is a collision. If there is a collision, also return the normal vector. More...
 
void move (const Vec3D &move) override
 Move the TriangulatedWall to a new position, which is a Vec3D from the old position. More...
 
BaseInteractiongetInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
 Get the interaction between this TriangulatedWall and given BaseParticle at a given time. More...
 
- 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)
 
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
 
std::vector< BaseWall * > getRenderedWalls () const
 
void removeRenderedWalls ()
 
void renderWall (VTKContainer &vtk)
 
void addParticlesAtWall (unsigned numElements=50)
 
void setVelocityControl (Vec3D forceGoal, Vec3D gainFactor, Vec3D baseVelocity)
 
virtual void writeWallDetailsVTK (VTKData &data) const
 
- 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...
 
virtual 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...
 
virtual 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...
 
virtual void setOrientation (const Quaternion &orientation)
 Sets the orientation of this BaseInteractable. 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
 
virtual bool isFaceContact (const Vec3D &normal) 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 Member Functions

void storeDebris (Vec3D P, const Vec3D &debris)
 
void processDebris ()
 

Private Attributes

std::vector< std::vector< Vec3D > > debris_
 

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...
 
- Protected Attributes inherited from TriangulatedWall
std::vector< Vec3Dvertex_
 
std::vector< Faceface_
 

Constructor & Destructor Documentation

◆ WearableTriangulatedWall() [1/3]

WearableTriangulatedWall::WearableTriangulatedWall ( )

Default constructor.

30 {
31  logger(DEBUG, "WearableTriangulatedWall() constructed.");
32 }
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ DEBUG

References DEBUG, and logger.

Referenced by copy().

◆ WearableTriangulatedWall() [2/3]

WearableTriangulatedWall::WearableTriangulatedWall ( const WearableTriangulatedWall other)

Copy constructor.

Parameters
[in]otherThe WearableTriangulatedWall that must be copied.
38  : TriangulatedWall(other)
39 {
40  debris_ = other.debris_;
41 }
TriangulatedWall()
Default constructor.
Definition: TriangulatedWall.cc:33
std::vector< std::vector< Vec3D > > debris_
Definition: WearableTriangulatedWall.h:87

References debris_.

◆ WearableTriangulatedWall() [3/3]

WearableTriangulatedWall::WearableTriangulatedWall ( Mdouble  lengthU,
Mdouble  lengthV,
Mdouble  resolutionU,
Mdouble  resolutionV 
)

Creates flat triangulated rectangle with certain resolution.

Parameters
lengthULength in u-direction
lengthVLength in v-direction
resolutionUMax stepsize in u-direction
resolutionVMax stepsize in v-direction
45 {
46  // Make resolutions fit
47  auto numU = static_cast<unsigned>(lengthU / resolutionU);
48  if (lengthU / numU > resolutionU)
49  {
50  numU++;
51  resolutionU = lengthU / numU;
52  }
53  auto numV = static_cast<unsigned>(lengthV / resolutionV);
54  if (lengthV / numV > resolutionV)
55  {
56  numV++;
57  resolutionV = lengthV / numV;
58  }
59 
60  // Actual number of points is one more
61  numU++;
62  numV++;
63 
64  std::vector<Vec3D> points;
65  std::vector<std::vector<unsigned>> cells;
66 
67  points.reserve(numU * numV);
68  cells.reserve(2 * (numU - 1) * (numV - 1));
69 
70  for (unsigned j = 0; j < numV; j++)
71  {
72  for (unsigned i = 0; i < numU; i++)
73  {
74  Vec3D p = Vec3D(i * resolutionU, j * resolutionV, 0.0);
75  points.push_back(p);
76 
77  if (i < numU - 1 && j < numV - 1)
78  {
79  // Bottom left
80  unsigned baseIdx = i + j * numU;
81  // Bottom left, top left, top right (clockwise)
82  cells.push_back({baseIdx, baseIdx + numU, baseIdx + numU + 1});
83  // Bottom left, top right, bottom right (clockwise)
84  cells.push_back({baseIdx, baseIdx + numU + 1, baseIdx + 1});
85  }
86  }
87  }
88 
89  TriangulatedWall::set(points, cells);
90 
91  // Initialize debris vector
92  std::vector<Vec3D> temp0(3, Vec3D(0.0, 0.0, 0.0));
93  std::vector<std::vector<Vec3D>> temp1(face_.size(), temp0);
94  debris_ = temp1;
95 }
std::vector< Face > face_
Definition: TriangulatedWall.h:158
void set(const std::vector< Vec3D > &points, const std::vector< std::vector< unsigned >> &cells)
Definition: TriangulatedWall.cc:117
Definition: Vector.h:51
const std::complex< Mdouble > i
Definition: ExtendedMath.h:51

References debris_, TriangulatedWall::face_, constants::i, and TriangulatedWall::set().

◆ ~WearableTriangulatedWall()

WearableTriangulatedWall::~WearableTriangulatedWall ( )
override

Destructor.

98 {
99  logger(DEBUG, "~WearableTriangulatedWall() has been called.");
100 }

References DEBUG, and logger.

Member Function Documentation

◆ computeWear()

void WearableTriangulatedWall::computeWear ( )
overridevirtual

Reimplemented from BaseWall.

149 {
150  // Archard wear model, from https://en.wikipedia.org/wiki/Archard_equation
151  // Q = KWL/H
152  // Q is the total volume of wear debris produced
153  // K is a dimensionless constant (typically mild wear 1e-8, severe wear 1e-2)
154  // W is the total normal load
155  // L is the sliding distance
156  // H is the hardness of the softest contacting surfaces
157 
158  const Mdouble dt = getHandler()->getDPMBase()->getTimeStep();
159 
160  for (BaseInteraction* interaction : getInteractions())
161  {
162  // Ignore interactions from periodic particles. (Although it seems Q evaluates to 0 anyway (absolute normal force equals 0), but just to be sure)
163  if (static_cast<BaseParticle*>(interaction->getP())->getPeriodicFromParticle() != nullptr)
164  continue;
165 
166  Mdouble K = 1.0e-6; // For testing only, should be set by user
167  Mdouble W = interaction->getAbsoluteNormalForce();
168  // Pythagoras to get tangential magnitude from vector and normal magnitude
169  Mdouble tangentialRelativeVelocity = std::sqrt(interaction->getRelativeVelocity().getLengthSquared() -
170  interaction->getNormalRelativeVelocity() * interaction->getNormalRelativeVelocity());
171  Mdouble L = tangentialRelativeVelocity * dt;
172  Mdouble H = 1.0; // For testing only, should be set by user
173  Mdouble Q = K * W * L / H;
174 
175  storeDebris(interaction->getContactPoint(), interaction->getNormal() * -Q);
176 // storeDebris(interaction->getContactPoint(), Vec3D(0.0, 0.0, 1.0) * -Q);
177  }
178 
179  if (!getInteractions().empty())
180  {
181  processDebris();
182 
183  // Reset debris to zero
184  std::vector<Vec3D> temp0(3, Vec3D(0.0, 0.0, 0.0));
185  std::fill(debris_.begin(), debris_.end(), temp0);
186  }
187 }
double Mdouble
Definition: GeneralDefine.h:34
DPMBase * getDPMBase()
Gets the problem that is solved using this handler.
Definition: BaseHandler.h:725
const std::vector< BaseInteraction * > & getInteractions() const
Returns a list of interactions which belong to this interactable.
Definition: BaseInteractable.h:277
Stores information about interactions between two interactable objects; often particles but could be ...
Definition: BaseInteraction.h:60
Definition: BaseParticle.h:54
BaseParticle * getPeriodicFromParticle() const
Returns the 'original' particle this one's a periodic copy of.
Definition: BaseParticle.h:341
WallHandler * getHandler() const
A function which returns the WallHandler that handles this BaseWall.
Definition: BaseWall.cc:134
Mdouble getTimeStep() const
Returns the simulation time step.
Definition: DPMBase.cc:1250
void storeDebris(Vec3D P, const Vec3D &debris)
Definition: WearableTriangulatedWall.cc:189
void processDebris()
Definition: WearableTriangulatedWall.cc:229

References debris_, BaseHandler< T >::getDPMBase(), BaseWall::getHandler(), BaseInteractable::getInteractions(), BaseParticle::getPeriodicFromParticle(), DPMBase::getTimeStep(), processDebris(), and storeDebris().

◆ copy()

WearableTriangulatedWall * WearableTriangulatedWall::copy ( ) const
overridevirtual

Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism.

Returns
pointer to a WearableTriangulatedWall object allocated using new.

Reimplemented from TriangulatedWall.

119 {
120  return new WearableTriangulatedWall(*this);
121 }
WearableTriangulatedWall()
Default constructor.
Definition: WearableTriangulatedWall.cc:29

References WearableTriangulatedWall().

Referenced by operator=().

◆ getName()

std::string WearableTriangulatedWall::getName ( ) const
overridevirtual

Returns the name of the object, here the string "WearableTriangulatedWall".

Returns
The string "WearableTriangulatedWall".

Reimplemented from TriangulatedWall.

144 {
145  return "WearableTriangulatedWall";
146 }

◆ operator=()

WearableTriangulatedWall & WearableTriangulatedWall::operator= ( const WearableTriangulatedWall other)

Copy assignment operator.

Parameters
[in]otherThe WearableTriangulatedWall that must be copied.
106 {
107  logger(DEBUG, "WearableTriangulatedWall::operator= called.");
108  if (this == &other)
109  {
110  return *this;
111  }
112  return *(other.copy());
113 }
WearableTriangulatedWall * copy() const override
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism.
Definition: WearableTriangulatedWall.cc:118

References copy(), DEBUG, and logger.

◆ processDebris()

void WearableTriangulatedWall::processDebris ( )
private
230 {
231  for (unsigned i = 0; i < face_.size(); i++)
232  {
233  *face_[i].vertex[0] += debris_[i][0];
234  *face_[i].vertex[1] += debris_[i][1];
235  *face_[i].vertex[2] += debris_[i][2];
236  }
237 
238  //set normals and positions
239  for (auto& face: face_)
240  {
241  face.normal = Vec3D::getUnitVector(
242  Vec3D::cross(*face.vertex[1] - *face.vertex[0], *face.vertex[2] - *face.vertex[0]));
243  }
244 
245  //set edge normals (inwards facing)
246  for (auto& face: face_)
247  {
248  face.edgeNormal[0] = Vec3D::getUnitVector(Vec3D::cross(face.normal, *face.vertex[1] - *face.vertex[0]));
249  face.edgeNormal[1] = Vec3D::getUnitVector(Vec3D::cross(face.normal, *face.vertex[2] - *face.vertex[1]));
250  face.edgeNormal[2] = Vec3D::getUnitVector(Vec3D::cross(face.normal, *face.vertex[0] - *face.vertex[2]));
251  }
252 }
static Vec3D cross(const Vec3D &a, const Vec3D &b)
Calculates the cross product of two Vec3D: .
Definition: Vector.cc:163
static Vec3D getUnitVector(const Vec3D &a)
Returns a unit Vec3D based on a.
Definition: Vector.cc:345

References Vec3D::cross(), debris_, TriangulatedWall::face_, Vec3D::getUnitVector(), and constants::i.

Referenced by computeWear().

◆ read()

void WearableTriangulatedWall::read ( std::istream &  is)
overridevirtual

Reads an WearableTriangulatedWall from an input stream, for example a restart file.

Parameters
[in]isThe input stream from which the WearableTriangulatedWall is read, usually a restart file.

Reimplemented from TriangulatedWall.

127 {
129 }
void read(std::istream &is) override
Reads an TriangulatedWall from an input stream, for example a restart file.
Definition: TriangulatedWall.cc:303

References TriangulatedWall::read().

◆ storeDebris()

void WearableTriangulatedWall::storeDebris ( Vec3D  P,
const Vec3D debris 
)
private
190 {
191  // Not sure if needed for triangulated wall?
192 // // Rotate global point back to local coordinate system.
193 // P -= getPosition();
194 // getOrientation().rotateBack(P);
195 
196  unsigned it = 0;
197  for (auto& f : face_)
198  {
199  const Vec3D a = *f.vertex[0] - P;
200  const Vec3D b = *f.vertex[1] - P;
201  const Vec3D c = *f.vertex[2] - P;
202 
203  const Vec3D u = Vec3D::cross(b, c);
204  const Vec3D v = Vec3D::cross(c, a);
205  const Vec3D w = Vec3D::cross(a, b);
206 
207  // When all are pointing in same direction, the point is inside (or on edge of) the triangle.
208  if (!(Vec3D::dot(u, v) < 0.0 || Vec3D::dot(u, w) < 0.0))
209  {
210  break;
211  }
212 
213  it++;
214  }
215 
216  // temporary because this should not happen
217  if (it >= face_.size())
218  {
219 // logger(INFO, "does this happen?");
220  return;
221  }
222 
223  // For now every vertex simply gets 1/3 of debris
224  debris_[it][0] += debris / 3.0;
225  debris_[it][1] += debris / 3.0;
226  debris_[it][2] += debris / 3.0;
227 }
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:76
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:73

References Vec3D::cross(), debris_, Vec3D::dot(), TriangulatedWall::face_, and Global_Physical_Variables::P.

Referenced by computeWear().

◆ write()

void WearableTriangulatedWall::write ( std::ostream &  os) const
overridevirtual

Writes an WearableTriangulatedWall to an output stream, for example a restart file.

Parameters
[in]osThe output stream where the WearableTriangulatedWall must be written to, usually a restart file.

Reimplemented from TriangulatedWall.

136 {
138 }
void write(std::ostream &os) const override
Writes an TriangulatedWall to an output stream, for example a restart file.
Definition: TriangulatedWall.cc:312

References TriangulatedWall::write().

Member Data Documentation

◆ debris_

std::vector<std::vector<Vec3D> > WearableTriangulatedWall::debris_
private

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