5 #ifndef MultiParticle_H
6 #define MultiParticle_H
42 void write(std::ostream& os)
const override
49 for (
const auto & pebbleP :
pebblePos_) {os << pebbleP;}
50 os <<
" pebbleRadius_ ";
54 os <<
" principalDirections_ ";
56 os <<
" initPrincipalDirections_ ";
60 os <<
" rotationMatrix_ ";
69 void read(std::istream& is)
override
243 std::vector <Vec3D> globalPos;
295 return "DzhanibekovParticle";
297 return "VerticallyOriented";
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
float * p
Definition: Tutorial_Map_using.cpp:9
virtual const Vec3D & getAngularVelocity() const
Returns the angular velocity of this interactable.
Definition: BaseInteractable.cc:319
virtual const Vec3D & getVelocity() const
Returns the velocity of this interactable.
Definition: BaseInteractable.cc:307
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
Definition: BaseInteractable.h:197
void write(std::ostream &os) const override
Particle print function, which accepts an std::ostream as input.
Definition: BaseParticle.cc:319
bool isClump_
The particle is pebble.
Definition: BaseParticle.h:717
MatrixSymmetric3D getInertia() const
Definition: BaseParticle.h:314
bool isPebble_
pointer to a clump particle (for a pebble)
Definition: BaseParticle.h:715
BaseParticle * clumpParticle_
Function that updates necessary quantities of a clump particle after adding a pebble.
Definition: BaseParticle.h:713
Mdouble invMass_
Particle radius_.
Definition: BaseParticle.h:651
void read(std::istream &is) override
Particle read function, which accepts an std::istream as input.
Definition: BaseParticle.cc:368
Definition: ClumpParticle.h:20
Mdouble getKineticEnergy() const override
Definition: ClumpParticle.h:216
void setPrincipalDirections_e1(Vec3D e)
Definition: ClumpParticle.h:169
int nPebble_
Definition: ClumpParticle.h:314
Vec3D getInitPrincipalDirections_e1() const
Definition: ClumpParticle.h:136
void angularAccelerateClumpIterative(double timeStep)
Definition: ClumpParticle.cc:334
void updatePebblesVelPos()
Definition: ClumpParticle.cc:227
ClumpParticle * copy() const override
Definition: ClumpParticle.cc:78
bool isSphericalParticle() const override
Definition: ClumpParticle.h:102
void setPebble(int kPebble, ClumpParticle *pPebble)
Definition: ClumpParticle.h:193
MatrixSymmetric3D clumpInitInertia_
Definition: ClumpParticle.h:328
bool getDzhanibekovParticle()
Definition: ClumpParticle.h:258
Mdouble clumpMass_
Definition: ClumpParticle.h:322
std::vector< Mdouble > getPebbleRadii()
Definition: ClumpParticle.h:253
ClumpParticle()
Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1.
Definition: ClumpParticle.cc:16
Vec3D getPrincipalDirections_e2() const
Definition: ClumpParticle.h:126
MatrixSymmetric3D MtoS(Matrix3D M)
Definition: ClumpParticle.h:345
MatrixSymmetric3D clumpInertia_
Definition: ClumpParticle.h:326
void integrateAfterForceComputation(double time, double timeStep) override
Definition: ClumpParticle.cc:310
bool getVerticallyOriented()
Definition: ClumpParticle.h:264
std::vector< Mdouble > pebbleRadius_
Definition: ClumpParticle.h:332
Vec3D getInitPrincipalDirections_e2() const
Definition: ClumpParticle.h:140
Matrix3D getRotationMatrix() const
Definition: ClumpParticle.h:149
std::vector< Vec3D > pebblePos_
Definition: ClumpParticle.h:330
Matrix3D rotationMatrix_
Definition: ClumpParticle.h:340
void rotatePrincipalDirections(Vec3D rotation)
Definition: ClumpParticle.cc:126
std::string getName() const override
Definition: ClumpParticle.cc:84
void write(std::ostream &os) const override
Particle print function, which accepts an std::ostream as input.
Definition: ClumpParticle.h:42
Mdouble viscousDamping_
Definition: ClumpParticle.h:324
void setClumpMass(Mdouble mass)
Definition: ClumpParticle.h:204
std::vector< Mdouble > getFieldVTK(unsigned i) const override
Definition: ClumpParticle.h:301
void setInitPrincipalDirections(Matrix3D directions)
Definition: ClumpParticle.cc:120
void computeMass(const ParticleSpecies &s) override
Computes the particle's (inverse) mass and inertia.
Definition: ClumpParticle.cc:367
int NPebble() const
Definition: ClumpParticle.cc:90
void setClump()
Definition: ClumpParticle.cc:95
void actionsAfterAddObject() override
Definition: ClumpParticle.cc:167
void rotateTensorOfInertia()
Definition: ClumpParticle.cc:199
void setInitInertia(MatrixSymmetric3D inertia)
Definition: ClumpParticle.cc:191
Vec3D angularAcceleration_
Definition: ClumpParticle.h:320
std::string getNameVTK(unsigned i) const override
Definition: ClumpParticle.h:292
Vec3D getPrincipalDirections_e3() const
Definition: ClumpParticle.h:130
void setVerticallyOriented(bool d)
Definition: ClumpParticle.h:276
void updateExtraQuantities()
Definition: ClumpParticle.cc:381
Mdouble getRotationalEnergy() const override
Calculates the particle's rotational kinetic energy.
Definition: ClumpParticle.h:225
void integrateBeforeForceComputation(double time, double timeStep) override
Definition: ClumpParticle.cc:263
void setDzhanibekovParticle(bool d)
Definition: ClumpParticle.h:270
~ClumpParticle() override
Destructor, needs to be implemented and checked to see if it is the largest or smallest particle curr...
void setDamping(Mdouble damp)
Definition: ClumpParticle.h:211
Matrix3D StoM(MatrixSymmetric3D M)
Definition: ClumpParticle.h:348
void setPrincipalDirections(Matrix3D directions)
Definition: ClumpParticle.cc:114
void setPrincipalDirections_e3(Vec3D e)
Definition: ClumpParticle.h:181
std::vector< Vec3D > getPebblePositions()
Definition: ClumpParticle.h:242
Matrix3D initPrincipalDirections_
Definition: ClumpParticle.h:336
void setPrincipalDirections_e2(Vec3D e)
Definition: ClumpParticle.h:175
void read(std::istream &is) override
Particle read function, which accepts an std::istream as input.
Definition: ClumpParticle.h:69
unsigned getNumberOfFieldsVTK() const override
Definition: ClumpParticle.h:281
bool isVerticallyOriented_
Definition: ClumpParticle.h:318
std::vector< Mdouble > getPebbleRadius() const
Definition: ClumpParticle.h:188
Matrix3D transpose(Matrix3D M)
Definition: ClumpParticle.h:351
bool isDzhanibekovParticle_
Definition: ClumpParticle.h:316
void addPebble(Vec3D position, Mdouble radius)
Definition: ClumpParticle.cc:104
std::vector< ClumpParticle * > pebbleParticles_
Definition: ClumpParticle.h:338
std::string getTypeVTK(unsigned i) const override
Definition: ClumpParticle.h:286
Vec3D getInitPrincipalDirections_e3() const
Definition: ClumpParticle.h:144
void setClump(ClumpParticle *master)
Definition: ClumpParticle.h:198
Vec3D getPrincipalDirections_e1() const
Definition: ClumpParticle.h:121
Matrix3D principalDirections_
Definition: ClumpParticle.h:334
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Implementation of a 3D matrix.
Definition: Kernel/Math/Matrix.h:17
Mdouble YX
Definition: Kernel/Math/Matrix.h:22
Mdouble ZX
Definition: Kernel/Math/Matrix.h:22
Mdouble XY
Definition: Kernel/Math/Matrix.h:22
Mdouble YY
Definition: Kernel/Math/Matrix.h:22
Mdouble ZY
Definition: Kernel/Math/Matrix.h:22
Mdouble ZZ
Definition: Kernel/Math/Matrix.h:22
Mdouble YZ
Definition: Kernel/Math/Matrix.h:22
Mdouble XZ
Definition: Kernel/Math/Matrix.h:22
Mdouble XX
all nine matrix elements
Definition: Kernel/Math/Matrix.h:22
Implementation of a 3D symmetric matrix.
Definition: MatrixSymmetric.h:16
Base class for all non-spherical particle types.
Definition: NonSphericalParticle.h:16
Definition: ParticleSpecies.h:16
Definition: Kernel/Math/Vector.h:30
static Mdouble getLengthSquared(const Vec3D &a)
Calculates the squared length of a Vec3D: .
Definition: Kernel/Math/Vector.h:324
static Mdouble getLength(const Vec3D &a)
Calculates the length of a Vec3D: .
Definition: Vector.cc:350
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:56
RealScalar s
Definition: level1_cplx_impl.h:130
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286