SlidingFrictionInteraction.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef SLIDINGFRICTIONINTERACTION_H
6 #define SLIDINGFRICTIONINTERACTION_H
7 
9 #include "Math/Vector.h"
10 
11 class BaseParticle;
12 
14 
15 class BaseInteractable;
16 
22 {
23 public:
28 
33 
34  //used for mpi
36 
41 
45  ~SlidingFrictionInteraction() override;
46 
51  void computeFrictionForce();
52 
56  void read(std::istream& is) override;
57 
61  void write(std::ostream& os) const override;
62 
66  void integrate(Mdouble timeStep) override;
67 
71  Mdouble getElasticEnergy() const override;
72 
76  Mdouble getTangentialOverlap() const override;
77 
81  std::string getBaseName() const;
82 
83  void setSlidingSpring(Vec3D slidingSpring);
84 
85  Vec3D getSlidingSpring() const;
86 
87  //setters and getters
91  const Vec3D getTangentialForce() const override;
92 
96  void addTangentialForce(Vec3D force) {
97  tangentialForce_ = Vec3D(0.0,0.0,0.0);
98  tangentialForce_ += force;
99  }
100 
104  const SlidingFrictionSpecies* getSpecies() const;
105 
111  void reverseHistory() override;
112 
113  void rotateHistory(Matrix3D& rotationMatrix) override;
114 
115  void moveSlidingSpring(Vec3D displacement);
116 
117  void computeSlidingSpring(const Vec3D& tangentialRelativeVelocity);
118 
119  void setIsSuperQuadricInteraction(bool isSuperQuadricInteraction);
120 
121 
122 protected:
137 
139 };
140 
141 #endif
float * p
Definition: Tutorial_Map_using.cpp:9
Defines the basic properties that a interactable object can have.
Definition: BaseInteractable.h:34
Stores information about interactions between two interactable objects; often particles but could be ...
Definition: BaseInteraction.h:39
Definition: BaseParticle.h:33
Implementation of a 3D matrix.
Definition: Kernel/Math/Matrix.h:17
Computes the forces corresponding to sliding friction.
Definition: SlidingFrictionInteraction.h:22
Mdouble getElasticEnergy() const override
Returns the amount of elastic energy stored in sliding spring.
Definition: SlidingFrictionInteraction.cc:185
void computeSlidingSpring(const Vec3D &tangentialRelativeVelocity)
Definition: SlidingFrictionInteraction.cc:151
void integrate(Mdouble timeStep) override
Increments the amount of compression in sliding spring.
Definition: SlidingFrictionInteraction.cc:177
void moveSlidingSpring(Vec3D displacement)
Definition: SlidingFrictionInteraction.cc:256
Vec3D tangentialForce_
Computes the tangential force such that . Set and computed in computeFrictionForce().
Definition: SlidingFrictionInteraction.h:136
void read(std::istream &is) override
Interaction read function, which accepts an std::istream as input.
Definition: SlidingFrictionInteraction.cc:74
const SlidingFrictionSpecies * getSpecies() const
Returns a const pointer of type SlidingFrictionSpecies*.
Definition: SlidingFrictionInteraction.cc:214
const Vec3D getTangentialForce() const override
Returns the sliding friction force vector.
Definition: SlidingFrictionInteraction.cc:206
std::string getBaseName() const
Returns the type/name of interaction (sliding friction interaction)
Definition: SlidingFrictionInteraction.cc:223
SlidingFrictionSpecies SpeciesType
An alias name for SlidingFrictionSpecies data type.
Definition: SlidingFrictionInteraction.h:27
void computeFrictionForce()
Computes the tangential force generated due to compression in the sliding spring. Does take into acco...
Definition: SlidingFrictionInteraction.cc:84
void write(std::ostream &os) const override
Interaction write function, which accepts an std::ostream as input.
Definition: SlidingFrictionInteraction.cc:65
Mdouble getTangentialOverlap() const override
Returns the amount of tangential overlap which is needed by BaseInteraction::writeToFstat().
Definition: SlidingFrictionInteraction.cc:197
Vec3D slidingSpring_
Stores the amount of sliding spring ( ) compression from the expression . Set in the member function ...
Definition: SlidingFrictionInteraction.h:127
void setSlidingSpring(Vec3D slidingSpring)
Definition: SlidingFrictionInteraction.cc:229
void setIsSuperQuadricInteraction(bool isSuperQuadricInteraction)
Definition: SlidingFrictionInteraction.cc:261
void reverseHistory() override
A useful feature if one wants to return to the initial state of the spring. However,...
Definition: SlidingFrictionInteraction.cc:237
SlidingFrictionInteraction()
Definition: SlidingFrictionInteraction.cc:29
void addTangentialForce(Vec3D force)
adds an extra tangential force, mainly for the tangential lubrication force from LiquidMigrationLS mo...
Definition: SlidingFrictionInteraction.h:96
void rotateHistory(Matrix3D &rotationMatrix) override
When periodic particles are used, some interactions need certain history properties rotated (e....
Definition: SlidingFrictionInteraction.cc:244
Vec3D slidingSpringVelocity_
Stores the rate at which the sliding spring compressed or relaxed. Set in the member function compute...
Definition: SlidingFrictionInteraction.h:132
bool isSuperQuadricInteraction_
Definition: SlidingFrictionInteraction.h:138
Vec3D getSlidingSpring() const
Definition: SlidingFrictionInteraction.cc:251
~SlidingFrictionInteraction() override
Destructor.
Definition: SlidingFrictionInteraction.cc:55
SlidingFrictionSpecies contains the parameters used to describe sliding friction.
Definition: SlidingFrictionSpecies.h:17
Definition: Kernel/Math/Vector.h:30
#define I
Definition: main.h:127
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286