MercuryDPM
Alpha
|
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... | |
virtual | ~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 |
Used in Species::getName to obtain a unique name for each Species. More... | |
bool | getUseAngularDOFs () const |
Returns true if torques have to be calculated. More... | |
void | mix (FrictionSpecies *const S, FrictionSpecies *const 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... | |
virtual | ~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 |
Returns true if torques have to be calculated. More... | |
void | mix (SlidingFrictionSpecies *const S, SlidingFrictionSpecies *const 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... | |
Public Member Functions inherited from BaseSpecies | |
BaseSpecies () | |
The default constructor. More... | |
BaseSpecies (const BaseSpecies &p) | |
The copy constructor. More... | |
virtual | ~BaseSpecies () |
The default destructor. More... | |
virtual BaseSpecies * | copy () const =0 |
Creates a deep copy of the object from which it is called. More... | |
void | setHandler (SpeciesHandler *handler) |
Sets the pointer to the handler to which this species belongs. More... | |
SpeciesHandler * | getHandler () const |
Returns the pointer to the handler to which this species belongs. More... | |
Mdouble | average (Mdouble a, Mdouble b) |
defines the average of two variables by the harmonic mean. More... | |
virtual void | mixAll (BaseSpecies *const S, BaseSpecies *const T)=0 |
creates default values for mixed species More... | |
virtual Mdouble | getInteractionDistance () const =0 |
returns the largest separation distance at which adhesive short-range forces can occur. More... | |
virtual BaseInteraction * | getNewInteraction (BaseInteractable *P, BaseInteractable *I, Mdouble timeStamp) const =0 |
returns new Interaction object. More... | |
Public Member Functions inherited from BaseObject | |
BaseObject () | |
Default constructor. More... | |
BaseObject (const BaseObject &p) | |
Copy constructor, copies all the objects BaseObject contains. More... | |
virtual | ~BaseObject () |
virtual destructor More... | |
virtual std::string | getName () const =0 |
A purely virtual function. More... | |
virtual void | moveInHandler (const unsigned int index) |
Except that it is virtual, it does the same thing as setIndex() does. More... | |
void | setIndex (const unsigned int index) |
Allows one to assign an index to an object in the handler/container. More... | |
void | setId (const unsigned int id) |
Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More... | |
unsigned int | getIndex () const |
Returns the index of the object in the handler. More... | |
unsigned int | getId () const |
Returns the unique identifier of any particular object. More... | |
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.
Definition at line 37 of file FrictionSpecies.h.
The correct Interaction type for this FrictionForceSpecies.
Definition at line 41 of file FrictionSpecies.h.
FrictionSpecies::FrictionSpecies | ( | ) |
The default constructor.
Definition at line 33 of file FrictionSpecies.cc.
References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
FrictionSpecies::FrictionSpecies | ( | const FrictionSpecies & | s | ) |
The default copy constructor.
[in] | the | species that is copied |
Definition at line 52 of file FrictionSpecies.cc.
References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
|
virtual |
The default destructor.
Definition at line 68 of file FrictionSpecies.cc.
|
virtual |
Used in Species::getName to obtain a unique name for each Species.
Reimplemented from SlidingFrictionSpecies.
Definition at line 111 of file FrictionSpecies.cc.
Mdouble FrictionSpecies::getRollingDissipation | ( | ) | const |
Allows the tangential viscosity to be accessed.
Definition at line 176 of file FrictionSpecies.cc.
References rollingDissipation_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getRollingFrictionCoefficient | ( | ) | const |
Allows the (dynamic) Coulomb friction coefficient to be accessed.
Definition at line 198 of file FrictionSpecies.cc.
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.
Definition at line 218 of file FrictionSpecies.cc.
References rollingFrictionCoefficientStatic_.
Referenced by FrictionInteraction::computeFrictionForce(), and mix().
Mdouble FrictionSpecies::getRollingStiffness | ( | ) | const |
Allows the spring constant to be accessed.
Definition at line 159 of file FrictionSpecies.cc.
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.
Definition at line 256 of file FrictionSpecies.cc.
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.
Definition at line 278 of file FrictionSpecies.cc.
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.
Definition at line 298 of file FrictionSpecies.cc.
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.
Definition at line 239 of file FrictionSpecies.cc.
References torsionStiffness_.
Referenced by FrictionInteraction::computeFrictionForce(), FrictionInteraction::getElasticEnergy(), and mix().
|
virtual |
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 BaseSpecies.
Definition at line 122 of file FrictionSpecies.cc.
void FrictionSpecies::mix | ( | FrictionSpecies *const | S, |
FrictionSpecies *const | 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 |
Definition at line 132 of file FrictionSpecies.cc.
References BaseSpecies::average(), getRollingDissipation(), getRollingFrictionCoefficient(), getRollingFrictionCoefficientStatic(), getRollingStiffness(), getTorsionDissipation(), getTorsionFrictionCoefficient(), getTorsionFrictionCoefficientStatic(), getTorsionStiffness(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.
|
virtual |
Reads the species properties from an input stream.
[in] | input | stream (typically the restart file) |
Implements BaseObject.
Definition at line 94 of file FrictionSpecies.cc.
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.
Definition at line 165 of file FrictionSpecies.cc.
References rollingDissipation_.
void FrictionSpecies::setRollingFrictionCoefficient | ( | Mdouble | new_mu | ) |
Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default.
Definition at line 183 of file FrictionSpecies.cc.
References 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.
Definition at line 204 of file FrictionSpecies.cc.
References rollingFrictionCoefficientStatic_.
void FrictionSpecies::setRollingStiffness | ( | Mdouble | new_kt | ) |
Allows the spring constant to be changed.
Definition at line 145 of file FrictionSpecies.cc.
References rollingStiffness_.
void FrictionSpecies::setTorsionDissipation | ( | Mdouble | new_dispt | ) |
Allows the torsion viscosity to be changed.
Allows the tangential viscosity to be changed.
Definition at line 245 of file FrictionSpecies.cc.
References 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.
Definition at line 263 of file FrictionSpecies.cc.
References 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.
Definition at line 284 of file FrictionSpecies.cc.
References torsionFrictionCoefficientStatic_.
void FrictionSpecies::setTorsionStiffness | ( | Mdouble | new_kt | ) |
Allows the torsion stiffness to be changed.
Allows the spring constant to be changed.
Definition at line 225 of file FrictionSpecies.cc.
References torsionStiffness_.
|
virtual |
Writes the species properties to an output stream.
[out] | output | stream (typically the restart file) |
Implements BaseObject.
Definition at line 78 of file FrictionSpecies.cc.
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).
Definition at line 136 of file FrictionSpecies.h.
Referenced by FrictionSpecies(), getRollingDissipation(), mix(), read(), setRollingDissipation(), and write().
|
private |
(dynamic) Coulomb rolling friction coefficient.
Definition at line 142 of file FrictionSpecies.h.
Referenced by FrictionSpecies(), getRollingFrictionCoefficient(), mix(), read(), setRollingFrictionCoefficient(), and write().
|
private |
static Coulomb rolling friction coefficient (by default set equal to the dynamic one).
Definition at line 148 of file FrictionSpecies.h.
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.
Definition at line 128 of file FrictionSpecies.h.
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).
Definition at line 164 of file FrictionSpecies.h.
Referenced by FrictionSpecies(), getTorsionDissipation(), mix(), read(), setTorsionDissipation(), and write().
|
private |
(dynamic) Coulomb torsion friction coefficient.
Definition at line 169 of file FrictionSpecies.h.
Referenced by FrictionSpecies(), getTorsionFrictionCoefficient(), mix(), read(), setTorsionFrictionCoefficient(), and write().
|
private |
static Coulomb torsion friction coefficient (by default set equal to the dynamic one).
Definition at line 175 of file FrictionSpecies.h.
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.
Definition at line 156 of file FrictionSpecies.h.
Referenced by FrictionSpecies(), getTorsionStiffness(), mix(), read(), setTorsionStiffness(), and write().