MindlinRollingTorsionSpecies Class Reference

MindlinRollingTorsionSpecies contains the parameters used to describe sliding, rolling and torsional friction. More...

#include <MindlinRollingTorsionSpecies.h>

+ Inheritance diagram for MindlinRollingTorsionSpecies:

Public Types

typedef MindlinRollingTorsionInteraction InteractionType
 The correct Interaction type for this FrictionForceSpecies. More...
 
- Public Types inherited from MindlinSpecies
typedef MindlinInteraction InteractionType
 The correct Interaction type for this FrictionForceSpecies. More...
 

Public Member Functions

 MindlinRollingTorsionSpecies ()
 The default constructor. More...
 
 MindlinRollingTorsionSpecies (const MindlinRollingTorsionSpecies &s)
 The default copy constructor. More...
 
 ~MindlinRollingTorsionSpecies ()
 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 (MindlinRollingTorsionSpecies *S, MindlinRollingTorsionSpecies *T)
 creates default values for mixed species More...
 
void setRollingDissipation (Mdouble new_dispt)
 Allows the spring constant 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 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 MindlinSpecies
 MindlinSpecies ()
 The default constructor. More...
 
 MindlinSpecies (const MindlinSpecies &s)
 The default copy constructor. More...
 
 ~MindlinSpecies ()
 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 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...
 
MERCURYDPM_DEPRECATED void setPoissonRatio (Mdouble poissonRatio)
 Allows the poisson ratio to be changed. More...
 
void setEffectiveShearModulus (Mdouble shearModulus)
 allows the shear modulus to be changed More...
 
Mdouble getEffectiveShearModulus () const
 Allows the shear modulus to be accessed. More...
 
bool getUseAngularDOFs () const override
 Returns true if torques have to be calculated. More...
 
void mix (MindlinSpecies *S, MindlinSpecies *T)
 creates default values for mixed species More...
 
- Public Member Functions inherited from BaseForce
BaseSpeciesgetBaseSpecies () 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...
 

Detailed Description

MindlinRollingTorsionSpecies contains the parameters used to describe sliding, rolling and torsional friction.

See FrictionInteraction::computeForce for a description of the force law.

Todo:
TW: should this class be renamed SlidingRollingTorsionMindlinRollingTorsionSpecies?

Member Typedef Documentation

◆ InteractionType

The correct Interaction type for this FrictionForceSpecies.

Constructor & Destructor Documentation

◆ MindlinRollingTorsionSpecies() [1/2]

MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies ( )

The default constructor.

35  : MindlinSpecies()
36 {
37  rollingStiffness_ = 0.0;
38  rollingDissipation_ = 0.0;
41  torsionStiffness_ = 0.0;
42  torsionDissipation_ = 0.0;
45 #ifdef DEBUG_CONSTRUCTOR
46  std::cout<<"MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies() finished"<<std::endl;
47 #endif
48 }
Mdouble rollingFrictionCoefficientStatic_
static Coulomb rolling friction coefficient (by default set equal to the dynamic one).
Definition: MindlinRollingTorsionSpecies.h:149
Mdouble torsionDissipation_
rolling dissipation coefficient.
Definition: MindlinRollingTorsionSpecies.h:165
Mdouble torsionFrictionCoefficient_
(dynamic) Coulomb torsion friction coefficient.
Definition: MindlinRollingTorsionSpecies.h:170
Mdouble rollingStiffness_
rolling stiffness.
Definition: MindlinRollingTorsionSpecies.h:129
Mdouble rollingFrictionCoefficient_
(dynamic) Coulomb rolling friction coefficient.
Definition: MindlinRollingTorsionSpecies.h:143
Mdouble rollingDissipation_
rolling dissipation coefficient.
Definition: MindlinRollingTorsionSpecies.h:137
Mdouble torsionStiffness_
rolling stiffness.
Definition: MindlinRollingTorsionSpecies.h:157
Mdouble torsionFrictionCoefficientStatic_
static Coulomb torsion friction coefficient (by default set equal to the dynamic one).
Definition: MindlinRollingTorsionSpecies.h:176
MindlinSpecies()
The default constructor.
Definition: MindlinSpecies.cc:37

References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.

◆ MindlinRollingTorsionSpecies() [2/2]

MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies ( const MindlinRollingTorsionSpecies s)

The default copy constructor.

Parameters
[in]sthe species that is copied
54  : MindlinSpecies(s)
55 {
64 #ifdef DEBUG_CONSTRUCTOR
65  std::cout<<"MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies(const MindlinRollingTorsionSpecies &p) finished"<<std::endl;
66 #endif
67 }

References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.

◆ ~MindlinRollingTorsionSpecies()

MindlinRollingTorsionSpecies::~MindlinRollingTorsionSpecies ( )

The default destructor.

70 {
71 #ifdef DEBUG_DESTRUCTOR
72  std::cout<<"MindlinRollingTorsionSpecies::~MindlinRollingTorsionSpecies() finished"<<std::endl;
73 #endif
74 }

Member Function Documentation

◆ getBaseName()

std::string MindlinRollingTorsionSpecies::getBaseName ( ) const
overridevirtual

Used in Species::getName to obtain a unique name for each Species.

Returns
a string containing the name of the species (minus the word "Species")

Reimplemented from MindlinSpecies.

113 {
114  return "MindlinRollingTorsion";
115 }

◆ getRollingDissipation()

Mdouble MindlinRollingTorsionSpecies::getRollingDissipation ( ) const

Allows the tangential viscosity to be accessed.

179 {
180  return rollingDissipation_;
181 }

References rollingDissipation_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getRollingFrictionCoefficient()

Mdouble MindlinRollingTorsionSpecies::getRollingFrictionCoefficient ( ) const

Allows the (dynamic) Coulomb friction coefficient to be accessed.

200 {
202 }

References rollingFrictionCoefficient_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getRollingFrictionCoefficientStatic()

Mdouble MindlinRollingTorsionSpecies::getRollingFrictionCoefficientStatic ( ) const

Allows the static Coulomb rolling friction coefficient to be accessed.

Allows the static Coulomb friction coefficient to be accessed.

219 {
221 }

References rollingFrictionCoefficientStatic_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getTorsionDissipation()

Mdouble MindlinRollingTorsionSpecies::getTorsionDissipation ( ) const

Allows the torsion viscosity to be accessed.

Allows the tangential viscosity to be accessed.

256 {
257  return torsionDissipation_;
258 }

References torsionDissipation_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getTorsionFrictionCoefficient()

Mdouble MindlinRollingTorsionSpecies::getTorsionFrictionCoefficient ( ) const

Allows the (dynamic) Coulomb torsion friction coefficient to be accessed.

Allows the (dynamic) Coulomb friction coefficient to be accessed.

277 {
279 }

References torsionFrictionCoefficient_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getTorsionFrictionCoefficientStatic()

Mdouble MindlinRollingTorsionSpecies::getTorsionFrictionCoefficientStatic ( ) const

Allows the static Coulomb torsion friction coefficient to be accessed.

Allows the static Coulomb friction coefficient to be accessed.

296 {
298 }

References torsionFrictionCoefficientStatic_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce(), and mix().

◆ getUseAngularDOFs()

bool MindlinRollingTorsionSpecies::getUseAngularDOFs ( ) const
overridevirtual

Returns true if torques have to be calculated.

Returns true for any FrictionForceSpecies except EmptyMindlinRollingTorsionSpecies, because for spherical particles, torques are only caused by tangential forces. See SpeciesHandler::useAngularDOFs for more details

Returns
true

Implements BaseFrictionForce.

124 {
125  return true;
126 }

◆ mix()

void MindlinRollingTorsionSpecies::mix ( MindlinRollingTorsionSpecies S,
MindlinRollingTorsionSpecies 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.

Parameters
[in]S,Tthe two species whose properties are mixed to create the new species
134 {
135  //rollingStiffness_= BaseSpecies::average(S->getRollingStiffness(), T->getRollingStiffness());
140  //torsionStiffness_= BaseSpecies::average(S->getTorsionStiffness(), T->getTorsionStiffness());
145 }
static Mdouble average(Mdouble a, Mdouble b)
Returns the harmonic mean of two variables.
Definition: BaseSpecies.cc:110
Mdouble getTorsionFrictionCoefficient() const
Allows the (dynamic) Coulomb torsion friction coefficient to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:276
Mdouble getTorsionDissipation() const
Allows the torsion viscosity to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:255
Mdouble getTorsionFrictionCoefficientStatic() const
Allows the static Coulomb torsion friction coefficient to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:295
Mdouble getRollingFrictionCoefficient() const
Allows the (dynamic) Coulomb friction coefficient to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:199
Mdouble getRollingDissipation() const
Allows the tangential viscosity to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:178
Mdouble getRollingFrictionCoefficientStatic() const
Allows the static Coulomb rolling friction coefficient to be accessed.
Definition: MindlinRollingTorsionSpecies.cc:218

References BaseSpecies::average(), getRollingDissipation(), getRollingFrictionCoefficient(), getRollingFrictionCoefficientStatic(), getTorsionDissipation(), getTorsionFrictionCoefficient(), getTorsionFrictionCoefficientStatic(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, torsionDissipation_, torsionFrictionCoefficient_, and torsionFrictionCoefficientStatic_.

◆ read()

void MindlinRollingTorsionSpecies::read ( std::istream &  is)

Reads the species properties from an input stream.

Parameters
[in]isinput stream (typically the restart file)
96 {
98  std::string dummy;
99  is >> dummy >> rollingStiffness_;
100  is >> dummy >> rollingDissipation_;
101  is >> dummy >> rollingFrictionCoefficient_;
102  is >> dummy >> rollingFrictionCoefficientStatic_;
103  is >> dummy >> torsionStiffness_;
104  is >> dummy >> torsionDissipation_;
105  is >> dummy >> torsionFrictionCoefficient_;
106  is >> dummy >> torsionFrictionCoefficientStatic_;
107 }
void read(std::istream &is)
Reads the species properties from an input stream.
Definition: MindlinSpecies.cc:85

References MindlinSpecies::read(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, and torsionStiffness_.

◆ setRollingDissipation()

void MindlinRollingTorsionSpecies::setRollingDissipation ( Mdouble  new_dispt)

Allows the spring constant to be changed.

Allows the tangential viscosity to be changed.

Allows the spring constant to be accessed Allows the tangential viscosity to be changed

168 {
169  if (new_dispt >= 0)
170  rollingDissipation_ = new_dispt;
171  else
172  {
173  logger(ERROR, "Error in setRollingDissipation");
174  }
175 }
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ ERROR

References ERROR, logger, and rollingDissipation_.

◆ setRollingFrictionCoefficient()

void MindlinRollingTorsionSpecies::setRollingFrictionCoefficient ( Mdouble  new_mu)

Allows the (dynamic) Coulomb friction coefficient to be changed; also sets mu_s by default.

186 {
187  if (new_mu >= 0)
188  {
191  }
192  else
193  {
194  logger(ERROR, "Error in setSlidingFrictionCoefficient");
195  }
196 }

References ERROR, logger, rollingFrictionCoefficient_, and rollingFrictionCoefficientStatic_.

◆ setRollingFrictionCoefficientStatic()

void MindlinRollingTorsionSpecies::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.

206 {
207  if (new_mu >= 0)
208  {
210  }
211  else
212  {
213  logger(ERROR, "Error in setSlidingFrictionCoefficientStatic");
214  }
215 }

References ERROR, logger, and rollingFrictionCoefficientStatic_.

◆ setTorsionDissipation()

void MindlinRollingTorsionSpecies::setTorsionDissipation ( Mdouble  new_dispt)

Allows the torsion viscosity to be changed.

Allows the tangential viscosity to be changed.

245 {
246  if (new_dispt >= 0)
247  torsionDissipation_ = new_dispt;
248  else
249  {
250  logger(ERROR, "Error in setTorsionDissipation");
251  }
252 }

References ERROR, logger, and torsionDissipation_.

◆ setTorsionFrictionCoefficient()

void MindlinRollingTorsionSpecies::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.

263 {
264  if (new_mu >= 0)
265  {
268  }
269  else
270  {
271  logger(ERROR, "Error in setSlidingFrictionCoefficient");
272  }
273 }

References ERROR, logger, torsionFrictionCoefficient_, and torsionFrictionCoefficientStatic_.

◆ setTorsionFrictionCoefficientStatic()

void MindlinRollingTorsionSpecies::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.

283 {
284  if (new_mu >= 0)
285  {
287  }
288  else
289  {
290  logger(ERROR, "Error in setSlidingFrictionCoefficientStatic");
291  }
292 }

References ERROR, logger, and torsionFrictionCoefficientStatic_.

◆ write()

void MindlinRollingTorsionSpecies::write ( std::ostream &  os) const

Writes the species properties to an output stream.

Parameters
[out]osoutput stream (typically the restart file)
80 {
82  os << " rollingStiffness " << rollingStiffness_;
83  os << " rollingDissipation " << rollingDissipation_;
84  os << " rollingFrictionCoefficient " << rollingFrictionCoefficient_;
85  os << " rollingFrictionCoefficientStatic " << rollingFrictionCoefficientStatic_;
86  os << " torsionStiffness " << torsionStiffness_;
87  os << " torsionDissipation " << torsionDissipation_;
88  os << " torsionFrictionCoefficient " << torsionFrictionCoefficient_;
89  os << " torsionFrictionCoefficientStatic " << torsionFrictionCoefficientStatic_;
90 }
void write(std::ostream &os) const
Writes the species properties to an output stream.
Definition: MindlinSpecies.cc:73

References rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, torsionDissipation_, torsionFrictionCoefficient_, torsionFrictionCoefficientStatic_, torsionStiffness_, and MindlinSpecies::write().

Member Data Documentation

◆ rollingDissipation_

Mdouble MindlinRollingTorsionSpecies::rollingDissipation_
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 getRollingDissipation(), MindlinRollingTorsionSpecies(), mix(), read(), setRollingDissipation(), and write().

◆ rollingFrictionCoefficient_

Mdouble MindlinRollingTorsionSpecies::rollingFrictionCoefficient_
private

(dynamic) Coulomb rolling friction coefficient.

Referenced by getRollingFrictionCoefficient(), MindlinRollingTorsionSpecies(), mix(), read(), setRollingFrictionCoefficient(), and write().

◆ rollingFrictionCoefficientStatic_

Mdouble MindlinRollingTorsionSpecies::rollingFrictionCoefficientStatic_
private

static Coulomb rolling friction coefficient
(by default set equal to the dynamic one).

Referenced by getRollingFrictionCoefficientStatic(), MindlinRollingTorsionSpecies(), mix(), read(), setRollingFrictionCoefficient(), setRollingFrictionCoefficientStatic(), and write().

◆ rollingStiffness_

Mdouble MindlinRollingTorsionSpecies::rollingStiffness_
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 MindlinRollingTorsionSpecies(), read(), and write().

◆ torsionDissipation_

Mdouble MindlinRollingTorsionSpecies::torsionDissipation_
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 getTorsionDissipation(), MindlinRollingTorsionSpecies(), mix(), read(), setTorsionDissipation(), and write().

◆ torsionFrictionCoefficient_

Mdouble MindlinRollingTorsionSpecies::torsionFrictionCoefficient_
private

(dynamic) Coulomb torsion friction coefficient.

Referenced by getTorsionFrictionCoefficient(), MindlinRollingTorsionSpecies(), mix(), read(), setTorsionFrictionCoefficient(), and write().

◆ torsionFrictionCoefficientStatic_

Mdouble MindlinRollingTorsionSpecies::torsionFrictionCoefficientStatic_
private

static Coulomb torsion friction coefficient
(by default set equal to the dynamic one).

Referenced by getTorsionFrictionCoefficientStatic(), MindlinRollingTorsionSpecies(), mix(), read(), setTorsionFrictionCoefficient(), setTorsionFrictionCoefficientStatic(), and write().

◆ torsionStiffness_

Mdouble MindlinRollingTorsionSpecies::torsionStiffness_
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 MindlinRollingTorsionSpecies(), read(), and write().


The documentation for this class was generated from the following files: