26 #ifndef MINDLININTERACTION_H
27 #define MINDLININTERACTION_H
70 void read(std::istream& is)
override;
74 void write(std::ostream& os)
const override;
163 void updateK_t(
const Mdouble fric,
const Vec3D direction,
const bool useTurningPoint,
const bool isLoading);
Vec3D tangentialForceTemp2_
void updateTangentialStiffnessZero(Mdouble rad, double shearMod)
std::string getBaseName() const
Returns the type/name of interaction (sliding friction interaction)
void updateTangentialStiffnessUnloading(const Mdouble fric, const Vec3D direction)
Mdouble tangentialStiffnessZero_
Mdouble getTangentialOverlap() const override
Returns the amount of tangential overlap which is needed by BaseInteraction::writeToFstat().
Vec3D slidingSpringVelocity_
Stores the rate at which the sliding spring compressed or relaxed. Set in the member function compute...
Vec3D tangentialDisplacementTemp2_
void updateK_t(const Mdouble fric, const Vec3D direction, const bool useTurningPoint, const bool isLoading)
Vec3D tangentialForceTurningPointULTemp_
Vec3D tangentialDisplacementTurningPointLU_
Mdouble absoluteNormalForcePrevious_
Computes the forces corresponding to sliding friction.
void updateTangentialStiffnessReloading(const Mdouble fric, const Vec3D direction)
Vec3D slidingSpring_
Stores the amount of sliding spring ( ) compression from the expression . Set in the member function ...
MindlinSpecies contains the parameters used to describe sliding friction.
void integrate(Mdouble timeStep) override
Increments the amount of compression in sliding spring.
void updateTangentialStiffnessReloadingTanUp(const Mdouble fric, const Vec3D direction)
Stores information about interactions between two interactable objects; often particles but could be ...
const Mdouble getTangentialForceDirection() const
Vec3D initialTangentialVelocity_
void reverseHistory() override
A useful feature if one wants to return to the initial state of the spring. However, reverse history decrements the current state to the state corresponding to previous time step. Decrements the value of slidingSpring_.
Mdouble tangentialStiffness_
void updateTangentialStiffnessUnloadingTanDown(const Mdouble fric, const Vec3D direction)
Mdouble getTangentialStiffness()
void rotateHistory(Matrix3D &rotationMatrix) override
When periodic particles are used, some interactions need certain history properties rotated (e...
void computeFrictionForce()
Computes the tangential force generated due to compression in the sliding spring. Does take into acco...
Mdouble getElasticEnergy() const override
Returns the amount of elastic energy stored in sliding spring.
Mdouble tangentialForceDirection_
const Vec3D getTangentialForce() const override
Returns the sliding friction force vector.
Vec3D tangentialForcePrevious_
Vec3D tangentialForceTurningPointUL_
Vec3D tangentialForce_
Computes the tangential force such that . Set and computed in computeFrictionForce().
void setTangentialStiffnessZero(Mdouble newKt0)
Mdouble getAbsoluteNormalForcePrevious() const
Returns the absolute value of the norm (length) of the previous Normal force vector.
Vec3D tangentialDisplacementTemp_
void updateTangentialStiffnessInitial(Mdouble fric)
const MindlinSpecies * getSpecies() const
Returns a const pointer of type MindlinSpecies*.
Defines the basic properties that a interactable object can have.
Mdouble getTangentialStiffnessZero()
Mdouble tangentialStiffnessZeroPrevious_
virtual ~MindlinInteraction()
Destructor.
Vec3D tangentialForceTurningPointLU_
Implementation of a 3D matrix.
Implementation of a 3D vector (by Vitaliy).
Vec3D tangentialDisplacementTurningPointUL_
MindlinInteraction()
Empty constructor.
Vec3D tangentialForceTurningPointLUTemp_
void setAbsoluteNormalForcePrevious(Mdouble absoluteNormalForcePrevious)
allows the previous normal force to be (re)set from external classes
void updateTangentialStiffnessInitial2(const Mdouble fric, const Vec3D direction)
MindlinSpecies SpeciesType
An alias name for MindlinSpecies data type.
Vec3D slidingSpringPrevious_
Vec3D tangentialForceTemp_
void write(std::ostream &os) const override
Interaction write function, which accepts an std::ostream as input.
Mdouble tangentialDisplacementSL_
void read(std::istream &is) override
Interaction read function, which accepts an std::istream as input.