|
SlidingFrictionSpecies contains the parameters used to describe sliding friction. More...
#include <SlidingFrictionSpecies.h>
Public Types | |
typedef SlidingFrictionInteraction | InteractionType |
The correct Interaction type for this FrictionForceSpecies. More... | |
Public Member Functions | |
SlidingFrictionSpecies () | |
The default constructor. More... | |
SlidingFrictionSpecies (const SlidingFrictionSpecies &s) | |
The default copy constructor. More... | |
~SlidingFrictionSpecies () | |
The default destructor. More... | |
void | read (std::istream &is) |
Reads the species properties from an input stream. More... | |
void | write (std::ostream &os) const |
Writes the species properties to an output stream. More... | |
virtual std::string | getBaseName () const |
Used in Species::getName to obtain a unique name for each Species. More... | |
void | setSlidingStiffness (Mdouble new_kt) |
Allows the spring constant to be changed. More... | |
Mdouble | getSlidingStiffness () const |
Allows the spring constant to be accessed. More... | |
void | setSlidingDissipation (Mdouble new_dispt) |
Allows the tangential viscosity to be changed. More... | |
Mdouble | getSlidingDissipation () const |
Allows the tangential viscosity to be accessed. More... | |
void | setSlidingFrictionCoefficient (Mdouble new_mu) |
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default. More... | |
Mdouble | getSlidingFrictionCoefficient () const |
Allows the (dynamic) Coulomb friction coefficient to be accessed. More... | |
void | setSlidingFrictionCoefficientStatic (Mdouble new_mu) |
Allows the static Coulomb friction coefficient to be changed. More... | |
Mdouble | getSlidingFrictionCoefficientStatic () const |
Allows the static Coulomb friction coefficient to be accessed. More... | |
bool | getUseAngularDOFs () const override |
Returns true if torques have to be calculated. More... | |
void | mix (SlidingFrictionSpecies *S, SlidingFrictionSpecies *T) |
creates default values for mixed species More... | |
void | setCollisionTimeAndNormalAndTangentialRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble beta, Mdouble mass) |
Sets k, disp, kt, dispt such that it matches a given tc and eps for a collision of two particles of masses m0,m1. More... | |
void | setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt (Mdouble tc, Mdouble eps, Mdouble beta, Mdouble mass) |
Sets k, disp, kt (with dispt=0) such that it matches a given tc and eps for a collision of two particles of mass m. More... | |
void | setIsSuperquadricSpecies (bool isSuperquadricSpecies) |
bool | getIsSuperquadricSpecies () const |
Public Member Functions inherited from BaseForce | |
BaseSpecies * | getBaseSpecies () const |
void | setBaseSpecies (BaseSpecies *baseSpecies) |
Private Attributes | |
Mdouble | slidingStiffness_ |
tangential stiffness. More... | |
Mdouble | slidingDissipation_ |
tangential dissipation coefficient. More... | |
Mdouble | slidingFrictionCoefficient_ |
(dynamic) Coulomb friction coefficient More... | |
Mdouble | slidingFrictionCoefficientStatic_ |
static Coulomb friction coefficient (by default set equal to mu) More... | |
bool | isSuperquadricSpecies_ |
SlidingFrictionSpecies contains the parameters used to describe sliding friction.
See SlidingFrictionInteraction::computeForce for a description of the force law.
The correct Interaction type for this FrictionForceSpecies.
SlidingFrictionSpecies::SlidingFrictionSpecies | ( | ) |
The default constructor.
References isSuperquadricSpecies_, slidingDissipation_, slidingFrictionCoefficient_, slidingFrictionCoefficientStatic_, and slidingStiffness_.
SlidingFrictionSpecies::SlidingFrictionSpecies | ( | const SlidingFrictionSpecies & | s | ) |
The default copy constructor.
[in] | s | the species that is copied |
References isSuperquadricSpecies_, slidingDissipation_, slidingFrictionCoefficient_, slidingFrictionCoefficientStatic_, and slidingStiffness_.
SlidingFrictionSpecies::~SlidingFrictionSpecies | ( | ) |
|
virtual |
Used in Species::getName to obtain a unique name for each Species.
Reimplemented in FrictionSpecies.
bool SlidingFrictionSpecies::getIsSuperquadricSpecies | ( | ) | const |
References isSuperquadricSpecies_.
Referenced by SlidingFrictionInteraction::computeFrictionForce().
Mdouble SlidingFrictionSpecies::getSlidingDissipation | ( | ) | const |
Allows the tangential viscosity to be accessed.
References slidingDissipation_.
Referenced by SlidingFrictionInteraction::computeFrictionForce(), and mix().
Mdouble SlidingFrictionSpecies::getSlidingFrictionCoefficient | ( | ) | const |
Allows the (dynamic) Coulomb friction coefficient to be accessed.
References slidingFrictionCoefficient_.
Referenced by SlidingFrictionInteraction::computeFrictionForce(), and mix().
Mdouble SlidingFrictionSpecies::getSlidingFrictionCoefficientStatic | ( | ) | const |
Allows the static Coulomb friction coefficient to be accessed.
References slidingFrictionCoefficientStatic_.
Referenced by SlidingFrictionInteraction::computeFrictionForce(), and mix().
Mdouble SlidingFrictionSpecies::getSlidingStiffness | ( | ) | const |
Allows the spring constant to be accessed.
References slidingStiffness_.
Referenced by SlidingFrictionInteraction::computeFrictionForce(), SlidingFrictionInteraction::getElasticEnergy(), mix(), and setCollisionTimeAndNormalAndTangentialRestitutionCoefficient().
|
overridevirtual |
Returns true if torques have to be calculated.
Returns true for any FrictionForceSpecies except EmptyFrictionSpecies, because for spherical particles, torques are only caused by tangential forces. See SpeciesHandler::useAngularDOFs for more details
Implements BaseFrictionForce.
Reimplemented in Species< LinearPlasticViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >, and Species< LinearViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >.
void SlidingFrictionSpecies::mix | ( | SlidingFrictionSpecies * | S, |
SlidingFrictionSpecies * | T | ||
) |
creates default values for mixed species
For all parameters we assume that the harmonic mean of the parameters of the original two species is a sensible default.
[in] | SFrictional | the first species whose properties are mixed to create the new species |
[in] | TFrictional | the second species whose properties are mixed to create the new species |
References BaseSpecies::average(), getSlidingDissipation(), getSlidingFrictionCoefficient(), getSlidingFrictionCoefficientStatic(), getSlidingStiffness(), slidingDissipation_, slidingFrictionCoefficient_, slidingFrictionCoefficientStatic_, and slidingStiffness_.
void SlidingFrictionSpecies::read | ( | std::istream & | is | ) |
Reads the species properties from an input stream.
[in] | is | input stream (typically the restart file) |
References slidingDissipation_, slidingFrictionCoefficient_, slidingFrictionCoefficientStatic_, and slidingStiffness_.
Referenced by FrictionSpecies::read().
void SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient | ( | Mdouble | tc, |
Mdouble | eps, | ||
Mdouble | beta, | ||
Mdouble | mass | ||
) |
Sets k, disp, kt, dispt such that it matches a given tc and eps for a collision of two particles of masses m0,m1.
References mathsFunc::beta(), ERROR, LinearPlasticViscoelasticNormalSpecies::getDissipation(), LinearPlasticViscoelasticNormalSpecies::getLoadingStiffness(), getSlidingStiffness(), LinearViscoelasticNormalSpecies::getStiffness(), mathsFunc::log(), logger, constants::pi, LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient(), LinearPlasticViscoelasticNormalSpecies::setDissipation(), LinearPlasticViscoelasticNormalSpecies::setLoadingStiffness(), setSlidingDissipation(), setSlidingStiffness(), and mathsFunc::square().
void SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt | ( | Mdouble | tc, |
Mdouble | eps, | ||
Mdouble | beta, | ||
Mdouble | mass | ||
) |
Sets k, disp, kt (with dispt=0) such that it matches a given tc and eps for a collision of two particles of mass m.
Sets k, disp, kt, dispt such that it matches a given tc and eps for a collision of two particles of masses m0,m1.
References mathsFunc::beta(), ERROR, LinearViscoelasticNormalSpecies::getStiffness(), logger, constants::pi, LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient(), setSlidingDissipation(), setSlidingStiffness(), and mathsFunc::square().
void SlidingFrictionSpecies::setIsSuperquadricSpecies | ( | bool | isSuperquadricSpecies | ) |
References isSuperquadricSpecies_.
void SlidingFrictionSpecies::setSlidingDissipation | ( | Mdouble | new_dispt | ) |
Allows the tangential viscosity to be changed.
References ERROR, logger, and slidingDissipation_.
Referenced by setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), and setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt().
void SlidingFrictionSpecies::setSlidingFrictionCoefficient | ( | Mdouble | new_mu | ) |
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, slidingFrictionCoefficient_, and slidingFrictionCoefficientStatic_.
Referenced by ChuteBottom::makeRoughBottom(), ParticleParticleInteraction::setupInitialConditions(), ParticleParticleInteractionWithPlasticForces::setupInitialConditions(), and ParticleWallInteraction::setupInitialConditions().
void SlidingFrictionSpecies::setSlidingFrictionCoefficientStatic | ( | Mdouble | new_mu | ) |
Allows the static Coulomb friction coefficient to be changed.
Allows the static Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, and slidingFrictionCoefficientStatic_.
void SlidingFrictionSpecies::setSlidingStiffness | ( | Mdouble | new_kt | ) |
Allows the spring constant to be changed.
References ERROR, logger, and slidingStiffness_.
Referenced by setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt(), ParticleParticleInteraction::setupInitialConditions(), ParticleParticleInteractionWithPlasticForces::setupInitialConditions(), and ParticleWallInteraction::setupInitialConditions().
void SlidingFrictionSpecies::write | ( | std::ostream & | os | ) | const |
Writes the species properties to an output stream.
[out] | os | output stream (typically the restart file) |
References slidingDissipation_, slidingFrictionCoefficient_, slidingFrictionCoefficientStatic_, and slidingStiffness_.
Referenced by FrictionSpecies::write().
|
private |
Referenced by getIsSuperquadricSpecies(), setIsSuperquadricSpecies(), and SlidingFrictionSpecies().
|
private |
tangential dissipation coefficient.
Typically set to 2/7 of the normal force dissipation, as both the tangential and the normal spring have the same restitution coefficients (if the tangential and normal stiffnesses also have a ratio of 2/7). should always satisfy \(4*dispt*dt<mass, dispt \approx disp\), otherwise the restitution is zero and the particles stick.
Referenced by getSlidingDissipation(), mix(), read(), setSlidingDissipation(), SlidingFrictionSpecies(), and write().
|
private |
(dynamic) Coulomb friction coefficient
Referenced by getSlidingFrictionCoefficient(), mix(), read(), setSlidingFrictionCoefficient(), SlidingFrictionSpecies(), and write().
|
private |
static Coulomb friction coefficient (by default set equal to mu)
Referenced by getSlidingFrictionCoefficientStatic(), mix(), read(), setSlidingFrictionCoefficient(), setSlidingFrictionCoefficientStatic(), SlidingFrictionSpecies(), and write().
|
private |
tangential stiffness.
Typically set to 2/7 of the stiffness of the normal force, as
both the tangential and the normal spring have the same oscillation
frequency (and thus require the same timeStep)in this case.
Referenced by getSlidingStiffness(), mix(), read(), setSlidingStiffness(), SlidingFrictionSpecies(), and write().