|
FrictionSpecies contains the parameters used to describe sliding, rolling and torsional friction. More...
#include <FrictionSpecies.h>
Public Types | |
typedef FrictionInteraction | InteractionType |
The correct Interaction type for this FrictionForceSpecies. More... | |
Public Types inherited from SlidingFrictionSpecies | |
typedef SlidingFrictionInteraction | InteractionType |
The correct Interaction type for this FrictionForceSpecies. More... | |
Public Member Functions | |
FrictionSpecies () | |
The default constructor. More... | |
FrictionSpecies (const FrictionSpecies &s) | |
The default copy constructor. More... | |
~FrictionSpecies () | |
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... | |
std::string | getBaseName () const override |
Used in Species::getName to obtain a unique name for each Species. More... | |
bool | getUseAngularDOFs () const override |
Returns true if torques have to be calculated. More... | |
void | mix (FrictionSpecies *S, FrictionSpecies *T) |
creates default values for mixed species More... | |
void | setRollingStiffness (Mdouble new_kt) |
Allows the spring constant to be changed. More... | |
Mdouble | getRollingStiffness () const |
Allows the spring constant to be accessed. More... | |
void | setRollingDissipation (Mdouble new_dispt) |
Allows the tangential viscosity to be changed. More... | |
Mdouble | getRollingDissipation () const |
Allows the tangential viscosity to be accessed. More... | |
void | setRollingFrictionCoefficient (Mdouble new_mu) |
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default. More... | |
Mdouble | getRollingFrictionCoefficient () const |
Allows the (dynamic) Coulomb friction coefficient to be accessed. More... | |
void | setRollingFrictionCoefficientStatic (Mdouble new_mu) |
Allows the static Coulomb rolling friction coefficient to be changed. More... | |
Mdouble | getRollingFrictionCoefficientStatic () const |
Allows the static Coulomb rolling friction coefficient to be accessed. More... | |
void | setTorsionStiffness (Mdouble new_kt) |
Allows the torsion stiffness to be changed. More... | |
Mdouble | getTorsionStiffness () const |
Allows the torsion stiffness to be accessed. More... | |
void | setTorsionDissipation (Mdouble new_dispt) |
Allows the torsion viscosity to be changed. More... | |
Mdouble | getTorsionDissipation () const |
Allows the torsion viscosity to be accessed. More... | |
void | setTorsionFrictionCoefficient (Mdouble new_mu) |
Allows the (dynamic) Coulomb torsion friction coefficient to be changed; also sets mu_s by default. More... | |
Mdouble | getTorsionFrictionCoefficient () const |
Allows the (dynamic) Coulomb torsion friction coefficient to be accessed. More... | |
void | setTorsionFrictionCoefficientStatic (Mdouble new_mu) |
Allows the static Coulomb torsion friction coefficient to be accessed. More... | |
Mdouble | getTorsionFrictionCoefficientStatic () const |
Allows the static Coulomb torsion friction coefficient to be accessed. More... | |
Public Member Functions inherited from SlidingFrictionSpecies | |
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... | |
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 | rollingStiffness_ |
rolling stiffness. More... | |
Mdouble | rollingDissipation_ |
rolling dissipation coefficient. More... | |
Mdouble | rollingFrictionCoefficient_ |
(dynamic) Coulomb rolling friction coefficient. More... | |
Mdouble | rollingFrictionCoefficientStatic_ |
static Coulomb rolling friction coefficient (by default set equal to the dynamic one). More... | |
Mdouble | torsionStiffness_ |
rolling stiffness. More... | |
Mdouble | torsionDissipation_ |
rolling dissipation coefficient. More... | |
Mdouble | torsionFrictionCoefficient_ |
(dynamic) Coulomb torsion friction coefficient. More... | |
Mdouble | torsionFrictionCoefficientStatic_ |
static Coulomb torsion friction coefficient (by default set equal to the dynamic one). More... | |
FrictionSpecies contains the parameters used to describe sliding, rolling and torsional friction.
See FrictionInteraction::computeForce for a description of the force law.
The correct Interaction type for this FrictionForceSpecies.
FrictionSpecies::FrictionSpecies | ( | ) |
The default constructor.
References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
FrictionSpecies::FrictionSpecies | ( | const FrictionSpecies & | s | ) |
The default copy constructor.
[in] | s | the species that is copied |
References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
FrictionSpecies::~FrictionSpecies | ( | ) |
|
overridevirtual |
Used in Species::getName to obtain a unique name for each Species.
Reimplemented from SlidingFrictionSpecies.
Mdouble FrictionSpecies::getRollingDissipation | ( | ) | const |
Allows the tangential viscosity to be accessed.
References rollingDissipation_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getRollingFrictionCoefficient | ( | ) | const |
Allows the (dynamic) Coulomb friction coefficient to be accessed.
References rollingFrictionCoefficient_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getRollingFrictionCoefficientStatic | ( | ) | const |
Allows the static Coulomb rolling friction coefficient to be accessed.
Allows the static Coulomb friction coefficient to be accessed.
References rollingFrictionCoefficientStatic_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getRollingStiffness | ( | ) | const |
Allows the spring constant to be accessed.
References rollingStiffness_.
Referenced by FrictionInteraction::computeFrictionForce(), FrictionInteraction::getElasticEnergy(), and mix().
Mdouble FrictionSpecies::getTorsionDissipation | ( | ) | const |
Allows the torsion viscosity to be accessed.
Allows the tangential viscosity to be accessed.
References torsionDissipation_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getTorsionFrictionCoefficient | ( | ) | const |
Allows the (dynamic) Coulomb torsion friction coefficient to be accessed.
Allows the (dynamic) Coulomb friction coefficient to be accessed.
References torsionFrictionCoefficient_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getTorsionFrictionCoefficientStatic | ( | ) | const |
Allows the static Coulomb torsion friction coefficient to be accessed.
Allows the static Coulomb friction coefficient to be accessed.
References torsionFrictionCoefficientStatic_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getTorsionStiffness | ( | ) | const |
Allows the torsion stiffness to be accessed.
Allows the spring constant to be accessed.
References torsionStiffness_.
Referenced by FrictionInteraction::computeFrictionForce(), FrictionInteraction::getElasticEnergy(), and mix().
|
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.
void FrictionSpecies::mix | ( | FrictionSpecies * | S, |
FrictionSpecies * | 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] | S,T | the two species whose properties are mixed to create the new species |
References BaseSpecies::average(), BaseSpecies::averageInf(), getRollingDissipation(), getRollingFrictionCoefficient(), getRollingFrictionCoefficientStatic(), getRollingStiffness(), getTorsionDissipation(), getTorsionFrictionCoefficient(), getTorsionFrictionCoefficientStatic(), getTorsionStiffness(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
void FrictionSpecies::read | ( | std::istream & | is | ) |
Reads the species properties from an input stream.
[in] | is | input stream (typically the restart file) |
References SlidingFrictionSpecies::read(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
void FrictionSpecies::setRollingDissipation | ( | Mdouble | new_dispt | ) |
Allows the tangential viscosity to be changed.
References ERROR, logger, and rollingDissipation_.
void FrictionSpecies::setRollingFrictionCoefficient | ( | Mdouble | new_mu | ) |
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, rollingFrictionCoefficient_, and rollingFrictionCoefficientStatic_.
void FrictionSpecies::setRollingFrictionCoefficientStatic | ( | Mdouble | new_mu | ) |
Allows the static Coulomb rolling friction coefficient to be changed.
Allows the static Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, and rollingFrictionCoefficientStatic_.
void FrictionSpecies::setRollingStiffness | ( | Mdouble | new_kt | ) |
void FrictionSpecies::setTorsionDissipation | ( | Mdouble | new_dispt | ) |
Allows the torsion viscosity to be changed.
Allows the tangential viscosity to be changed.
References ERROR, logger, and torsionDissipation_.
void FrictionSpecies::setTorsionFrictionCoefficient | ( | Mdouble | new_mu | ) |
Allows the (dynamic) Coulomb torsion friction coefficient to be changed; also sets mu_s by default.
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, torsionFrictionCoefficient_, and torsionFrictionCoefficientStatic_.
void FrictionSpecies::setTorsionFrictionCoefficientStatic | ( | Mdouble | new_mu | ) |
Allows the static Coulomb torsion friction coefficient to be accessed.
Allows the static Coulomb friction coefficient to be changed; also sets mu_s by default.
References ERROR, logger, and torsionFrictionCoefficientStatic_.
void FrictionSpecies::setTorsionStiffness | ( | Mdouble | new_kt | ) |
Allows the torsion stiffness to be changed.
Allows the spring constant to be changed.
References ERROR, logger, and torsionStiffness_.
void FrictionSpecies::write | ( | std::ostream & | os | ) | const |
Writes the species properties to an output stream.
[out] | os | output stream (typically the restart file) |
References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, torsionStiffness_, and SlidingFrictionSpecies::write().
|
private |
rolling dissipation coefficient.
Typically set to 2/5 of the normal force dissipation, as both the tangential and the normal spring have the same restitution coefficients (if the rolling and normal stiffnesses also have a ratio of 2/5).
Referenced by FrictionSpecies(), getRollingDissipation(), mix(), read(), setRollingDissipation(), and write().
|
private |
(dynamic) Coulomb rolling friction coefficient.
Referenced by FrictionSpecies(), getRollingFrictionCoefficient(), mix(), read(), setRollingFrictionCoefficient(), and write().
|
private |
static Coulomb rolling friction coefficient
(by default set equal to the dynamic one).
Referenced by FrictionSpecies(), getRollingFrictionCoefficientStatic(), mix(), read(), setRollingFrictionCoefficient(), setRollingFrictionCoefficientStatic(), and write().
|
private |
rolling stiffness.
Typically set to 2/5 of the stiffness of the normal force, as
both the rolling and the normal spring have the same oscillation
frequency (and thus require the same timeStep)in this case.
Referenced by FrictionSpecies(), getRollingStiffness(), mix(), read(), setRollingStiffness(), and write().
|
private |
rolling dissipation coefficient.
Typically set to 2/5 of the normal force dissipation, as both the tangential and the normal spring have the same restitution coefficients (if the rolling and normal stiffnesses also have a ratio of 2/5).
Referenced by FrictionSpecies(), getTorsionDissipation(), mix(), read(), setTorsionDissipation(), and write().
|
private |
(dynamic) Coulomb torsion friction coefficient.
Referenced by FrictionSpecies(), getTorsionFrictionCoefficient(), mix(), read(), setTorsionFrictionCoefficient(), and write().
|
private |
static Coulomb torsion friction coefficient
(by default set equal to the dynamic one).
Referenced by FrictionSpecies(), getTorsionFrictionCoefficientStatic(), mix(), read(), setTorsionFrictionCoefficient(), setTorsionFrictionCoefficientStatic(), and write().
|
private |
rolling stiffness.
Typically set to 2/5 of the stiffness of the normal force, as
both the rolling and the normal spring have the same oscillation
frequency (and thus require the same timeStep)in this case.
Referenced by FrictionSpecies(), getTorsionStiffness(), mix(), read(), setTorsionStiffness(), and write().