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.

14  : MindlinSpecies()
15 {
16  rollingStiffness_ = 0.0;
17  rollingDissipation_ = 0.0;
20  torsionStiffness_ = 0.0;
21  torsionDissipation_ = 0.0;
24 #ifdef DEBUG_CONSTRUCTOR
25  std::cout<<"MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies() finished"<<std::endl;
26 #endif
27 }
Mdouble rollingFrictionCoefficientStatic_
static Coulomb rolling friction coefficient (by default set equal to the dynamic one).
Definition: MindlinRollingTorsionSpecies.h:128
Mdouble torsionDissipation_
rolling dissipation coefficient.
Definition: MindlinRollingTorsionSpecies.h:144
Mdouble torsionFrictionCoefficient_
(dynamic) Coulomb torsion friction coefficient.
Definition: MindlinRollingTorsionSpecies.h:149
Mdouble rollingStiffness_
rolling stiffness.
Definition: MindlinRollingTorsionSpecies.h:108
Mdouble rollingFrictionCoefficient_
(dynamic) Coulomb rolling friction coefficient.
Definition: MindlinRollingTorsionSpecies.h:122
Mdouble rollingDissipation_
rolling dissipation coefficient.
Definition: MindlinRollingTorsionSpecies.h:116
Mdouble torsionStiffness_
rolling stiffness.
Definition: MindlinRollingTorsionSpecies.h:136
Mdouble torsionFrictionCoefficientStatic_
static Coulomb torsion friction coefficient (by default set equal to the dynamic one).
Definition: MindlinRollingTorsionSpecies.h:155
MindlinSpecies()
The default constructor.
Definition: MindlinSpecies.cc:16

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
33  : MindlinSpecies(s)
34 {
35  rollingStiffness_ = s.rollingStiffness_;
36  rollingDissipation_ = s.rollingDissipation_;
37  rollingFrictionCoefficient_ = s.rollingFrictionCoefficient_;
38  rollingFrictionCoefficientStatic_ = s.rollingFrictionCoefficientStatic_;
39  torsionStiffness_ = s.torsionStiffness_;
40  torsionDissipation_ = s.torsionDissipation_;
41  torsionFrictionCoefficient_ = s.torsionFrictionCoefficient_;
42  torsionFrictionCoefficientStatic_ = s.torsionFrictionCoefficientStatic_;
43 #ifdef DEBUG_CONSTRUCTOR
44  std::cout<<"MindlinRollingTorsionSpecies::MindlinRollingTorsionSpecies(const MindlinRollingTorsionSpecies &p) finished"<<std::endl;
45 #endif
46 }
RealScalar s
Definition: level1_cplx_impl.h:130

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

◆ ~MindlinRollingTorsionSpecies()

MindlinRollingTorsionSpecies::~MindlinRollingTorsionSpecies ( )

The default destructor.

49 {
50 #ifdef DEBUG_DESTRUCTOR
51  std::cout<<"MindlinRollingTorsionSpecies::~MindlinRollingTorsionSpecies() finished"<<std::endl;
52 #endif
53 }

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.

92 {
93  return "MindlinRollingTorsion";
94 }

◆ getRollingDissipation()

Mdouble MindlinRollingTorsionSpecies::getRollingDissipation ( ) const

Allows the tangential viscosity to be accessed.

158 {
159  return rollingDissipation_;
160 }

References rollingDissipation_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ getRollingFrictionCoefficient()

Mdouble MindlinRollingTorsionSpecies::getRollingFrictionCoefficient ( ) const

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

179 {
181 }

References rollingFrictionCoefficient_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ getRollingFrictionCoefficientStatic()

Mdouble MindlinRollingTorsionSpecies::getRollingFrictionCoefficientStatic ( ) const

Allows the static Coulomb rolling friction coefficient to be accessed.

Allows the static Coulomb friction coefficient to be accessed.

198 {
200 }

References rollingFrictionCoefficientStatic_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ getTorsionDissipation()

Mdouble MindlinRollingTorsionSpecies::getTorsionDissipation ( ) const

Allows the torsion viscosity to be accessed.

Allows the tangential viscosity to be accessed.

235 {
236  return torsionDissipation_;
237 }

References torsionDissipation_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ getTorsionFrictionCoefficient()

Mdouble MindlinRollingTorsionSpecies::getTorsionFrictionCoefficient ( ) const

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

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

256 {
258 }

References torsionFrictionCoefficient_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ getTorsionFrictionCoefficientStatic()

Mdouble MindlinRollingTorsionSpecies::getTorsionFrictionCoefficientStatic ( ) const

Allows the static Coulomb torsion friction coefficient to be accessed.

Allows the static Coulomb friction coefficient to be accessed.

275 {
277 }

References torsionFrictionCoefficientStatic_.

Referenced by MindlinRollingTorsionInteraction::computeFrictionForce().

◆ 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.

103 {
104  return true;
105 }

◆ 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
113 {
114  //rollingStiffness_= BaseSpecies::average(S->getRollingStiffness(), T->getRollingStiffness());
115  rollingDissipation_ = BaseSpecies::average(S->getRollingDissipation(), T->getRollingDissipation());
116  rollingFrictionCoefficient_ = BaseSpecies::average(S->getRollingFrictionCoefficient(), T->getRollingFrictionCoefficient());
117  rollingFrictionCoefficientStatic_ = BaseSpecies::average(S->getRollingFrictionCoefficientStatic(),
118  T->getRollingFrictionCoefficientStatic());
119  //torsionStiffness_= BaseSpecies::average(S->getTorsionStiffness(), T->getTorsionStiffness());
120  torsionDissipation_ = BaseSpecies::average(S->getTorsionDissipation(), T->getTorsionDissipation());
121  torsionFrictionCoefficient_ = BaseSpecies::average(S->getTorsionFrictionCoefficient(), T->getTorsionFrictionCoefficient());
122  torsionFrictionCoefficientStatic_ = BaseSpecies::average(S->getTorsionFrictionCoefficientStatic(),
123  T->getTorsionFrictionCoefficientStatic());
124 }
static Mdouble average(Mdouble a, Mdouble b)
Returns the harmonic mean of two variables.
Definition: BaseSpecies.cc:89
@ S
Definition: quadtree.h:62

References BaseSpecies::average(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, oomph::QuadTreeNames::S, 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)
75 {
77  std::string dummy;
78  is >> dummy >> rollingStiffness_;
79  is >> dummy >> rollingDissipation_;
80  is >> dummy >> rollingFrictionCoefficient_;
81  is >> dummy >> rollingFrictionCoefficientStatic_;
82  is >> dummy >> torsionStiffness_;
83  is >> dummy >> torsionDissipation_;
84  is >> dummy >> torsionFrictionCoefficient_;
85  is >> dummy >> torsionFrictionCoefficientStatic_;
86 }
void read(std::istream &is)
Reads the species properties from an input stream.
Definition: MindlinSpecies.cc:64
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References MindlinSpecies::read(), rollingDissipation_, rollingFrictionCoefficient_, rollingFrictionCoefficientStatic_, rollingStiffness_, oomph::Global_string_for_annotation::string(), 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

147 {
148  if (new_dispt >= 0)
149  rollingDissipation_ = new_dispt;
150  else
151  {
152  logger(ERROR, "Error in setRollingDissipation");
153  }
154 }
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.

165 {
166  if (new_mu >= 0)
167  {
170  }
171  else
172  {
173  logger(ERROR, "Error in setSlidingFrictionCoefficient");
174  }
175 }

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.

185 {
186  if (new_mu >= 0)
187  {
189  }
190  else
191  {
192  logger(ERROR, "Error in setSlidingFrictionCoefficientStatic");
193  }
194 }

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.

224 {
225  if (new_dispt >= 0)
226  torsionDissipation_ = new_dispt;
227  else
228  {
229  logger(ERROR, "Error in setTorsionDissipation");
230  }
231 }

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.

242 {
243  if (new_mu >= 0)
244  {
247  }
248  else
249  {
250  logger(ERROR, "Error in setSlidingFrictionCoefficient");
251  }
252 }

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.

262 {
263  if (new_mu >= 0)
264  {
266  }
267  else
268  {
269  logger(ERROR, "Error in setSlidingFrictionCoefficientStatic");
270  }
271 }

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)
59 {
61  os << " rollingStiffness " << rollingStiffness_;
62  os << " rollingDissipation " << rollingDissipation_;
63  os << " rollingFrictionCoefficient " << rollingFrictionCoefficient_;
64  os << " rollingFrictionCoefficientStatic " << rollingFrictionCoefficientStatic_;
65  os << " torsionStiffness " << torsionStiffness_;
66  os << " torsionDissipation " << torsionDissipation_;
67  os << " torsionFrictionCoefficient " << torsionFrictionCoefficient_;
68  os << " torsionFrictionCoefficientStatic " << torsionFrictionCoefficientStatic_;
69 }
void write(std::ostream &os) const
Writes the species properties to an output stream.
Definition: MindlinSpecies.cc:52

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: