NuTo
Numerics Tool
CollidableParticleSphere.h
Go to the documentation of this file.
1 /*
2  * CollidableSphere.h
3  *
4  * Created on: 17 Jan 2014
5  * Author: ttitsche
6  */
7 
8 #pragma once
9 
11 
12 
13 namespace NuTo
14 {
15 
16 class CollidableBase;
17 class CollidableWallPhysical;
18 class CollidableWallVirtual;
19 class CollidableWallCylinder;
20 class CollidableWallBase;
21 
22 namespace Visualize
23 {
24 class UnstructuredGrid;
25 }
26 
29 {
31  friend class CollidableWallPhysical;
32  friend class CollidableWallVirtual;
33  friend class CollidableWallCylinder;
34  friend class CollidableWallBase;
35 
36 public:
43  CollidableParticleSphere(Eigen::Vector3d rPosition, Eigen::Vector3d rVelocity, double rRadius, double rGrowthRate,
44  int rIndex);
45 
48  void MoveAndGrow(double rTime) override;
49 
51  double GetKineticEnergy() const override;
52 
54  double GetVolume() const override;
55 
58  void PerformCollision(CollidableBase& rCollidable) override;
59 
62  void PerformCollision(CollidableParticleSphere& rSphere) override;
63 
66  void PerformCollision(CollidableWallBase& rWall) override;
67 
72  double PredictCollision(CollidableBase& rCollidable, int& rType) override;
73 
79  double PredictCollision(CollidableParticleSphere& rSphere, int& rType) override;
80 
85  double PredictCollision(CollidableWallBase& rWall, int& rType) override;
86 
89  void GetLocalEventsToDelete(LocalEvents& rEventsToDelete) const override;
90 
94  Eigen::MatrixXd ExportRow(bool rInitialRadius = false) const;
95 
98  void VisualizationDynamic(Visualize::UnstructuredGrid& rVisualizer, bool rFinal) const;
99 
101  void ResetVelocity();
102 
106  void SetGrowthRate(double rGrowthRateFactor, double rTime);
107 
109  const Eigen::Vector3d& GetPosition() const;
110 
112  double GetRadius() const;
113 
115  double GetRadius0() const;
116 
117 private:
119  double mRadius;
120 
122  double mRadiusGrowth;
123 
125  double mRadius0;
126 
128  double mGrowthRate;
129 
131  double mTimeOfLastUpdate;
132 
134  double mTimeOfGrowthReset;
135 
142  double SphereCollision1D(double rVelocity1, double rVelocity2, double rMass1, double rMass2) const;
143 
146  void Print(std::ostream& rReturnStream) const override;
147 };
148 
149 } /* namespace NuTo */
class for spherical collidables
Definition: CollidableParticleSphere.h:28
base class for all particles TODO: Idea: implement an interface that somehow every particle knows how...
Definition: CollidableParticleBase.h:19
class for planar physical walls
Definition: CollidableWallPhysical.h:17
visualization of unstructured grids
Definition: UnstructuredGrid.h:18
Base class for all collidables.
Definition: CollidableBase.h:22
virtual, inner, planar wall of the specimen
Definition: CollidableWallVirtual.h:17
Definition: Exception.h:6
base class for walls
Definition: CollidableWallBase.h:23
class for cylindric walls
Definition: CollidableWallCylinder.h:17
std::vector< Event * > LocalEvents
Definition: CollidableBase.h:17
def Visualize(structure, file)
Definition: Truss1D2N.py:63