revision: v0.14
LinearPlasticViscoelasticNormalSpecies Class Reference

LinearPlasticViscoelasticNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model). More...

#include <LinearPlasticViscoelasticNormalSpecies.h>

+ Inheritance diagram for LinearPlasticViscoelasticNormalSpecies:

Public Types

typedef LinearPlasticViscoelasticInteraction InteractionType
 The correct Interaction type for this FrictionForceSpecies. More...
 

Public Member Functions

 LinearPlasticViscoelasticNormalSpecies ()
 The default constructor. More...
 
 LinearPlasticViscoelasticNormalSpecies (const LinearPlasticViscoelasticNormalSpecies &p)
 The default copy constructor. More...
 
 ~LinearPlasticViscoelasticNormalSpecies ()
 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...
 
void mix (LinearPlasticViscoelasticNormalSpecies *S, LinearPlasticViscoelasticNormalSpecies *T)
 creates default values for mixed species More...
 
void setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble mass)
 
void setStiffnessAndRestitutionCoefficient (Mdouble k_, Mdouble eps, Mdouble mass)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of P. More...
 
void setRestitutionCoefficient (double eps, Mdouble mass)
 Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m. More...
 
Mdouble getCollisionTime (Mdouble mass) const
 Calculates collision time for two copies of a particle of given disp, k, mass. More...
 
Mdouble getRestitutionCoefficient (Mdouble mass) const
 Calculates restitution coefficient for two copies of given disp, k, mass. More...
 
void setPlasticParameters (Mdouble loadingStiffness, Mdouble unloadingStiffnessMax, Mdouble cohesionStiffness, Mdouble penetrationDepthMax)
 Sets all parameters of the linear plastic-viscoelastic normal force at once. More...
 
Mdouble getLoadingStiffness () const
 Returns the loading stiffness of the linear plastic-viscoelastic normal force. More...
 
Mdouble getUnloadingStiffnessMax () const
 Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force. More...
 
Mdouble getCohesionStiffness () const
 Returns the cohesive stiffness of the linear plastic-viscoelastic normal force. More...
 
Mdouble getPenetrationDepthMax () const
 Returns the maximum penetration depth of the linear plastic-viscoelastic normal force. More...
 
void setLoadingStiffness (Mdouble loadingStiffness)
 Sets the loading stiffness of the linear plastic-viscoelastic normal force. More...
 
void setUnloadingStiffnessMax (Mdouble unloadingStiffnessMax)
 Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force. More...
 
void setCohesionStiffness (Mdouble cohesionStiffness)
 Sets the cohesive stiffness of the linear plastic-viscoelastic normal force. More...
 
void setPenetrationDepthMax (Mdouble penetrationDepthMax)
 Sets the maximum penetration depth of the linear plastic-viscoelastic normal force. More...
 
void setDissipation (Mdouble dissipation)
 Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force. More...
 
MERCURY_DEPRECATED void setLoadingStiffnessAndDissipation (helpers::KAndDisp new_)
 Allows the spring and dissipation constants to be changed simultaneously. More...
 
Mdouble computeTimeStep (Mdouble mass)
 Returns the optimal time step to resolve a collision of two particles of a given mass. More...
 
Mdouble getDissipation () const
 Allows the normal dissipation to be accessed. More...
 
Mdouble computeBondNumberMax (Mdouble harmonicMeanRadius, Mdouble gravitationalAcceleration) const
 1) Computes the maximum plastic overlap delta_p* = phi*r 2) Computes the overlap at which the maximum adhesive force is generated: delta_c* = delta_p* / (1+k_c/k_2*) 3) Computes the maximum adhesive force f_c* = k_c * delta_c* 4) Computes the maximum bond number Bo* = f_c* / (m*g) More...
 
bool getDoConstantUnloadingStiffness () const
 
void setDoConstantUnloadingStiffness (bool doConstantUnloadingStiffness)
 
- Public Member Functions inherited from BaseNormalForce
 BaseNormalForce ()
 
 BaseNormalForce (const BaseNormalForce &p)
 
bool getConstantRestitution () const
 
void setConstantRestitution (bool constantRestitution)
 
- Public Member Functions inherited from BaseForce
BaseSpeciesgetBaseSpecies () const
 
void setBaseSpecies (BaseSpecies *baseSpecies)
 

Private Attributes

Mdouble loadingStiffness_
 (normal) spring constant (k_1) More...
 
Mdouble unloadingStiffnessMax_
 the maximum elastic constant (k_2^max) for plastic deformations More...
 
Mdouble cohesionStiffness_
 the adhesive spring constant (k^c) for plastic deformations More...
 
Mdouble penetrationDepthMax_
 the depth (relative to the normalized radius) at which k_2^max is used (phi_f) More...
 
Mdouble dissipation_
 linear dissipation coefficient More...
 
bool doConstantUnloadingStiffness_ = false
 

Detailed Description

LinearPlasticViscoelasticNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model).

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

Member Typedef Documentation

◆ InteractionType

The correct Interaction type for this FrictionForceSpecies.

Constructor & Destructor Documentation

◆ LinearPlasticViscoelasticNormalSpecies() [1/2]

LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies ( )

The default constructor.

36  : BaseNormalForce()
37 {
38  loadingStiffness_ = 0.0;
40  cohesionStiffness_ = 0.0;
42  dissipation_ = 0.0;
44 #ifdef DEBUG_CONSTRUCTOR
45  std::cout<<"LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies() finished"<<std::endl;
46 #endif
47 }

References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.

◆ LinearPlasticViscoelasticNormalSpecies() [2/2]

LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies ( const LinearPlasticViscoelasticNormalSpecies p)

The default copy constructor.

Parameters
[in]thespecies that is copied
54  : BaseNormalForce(p)
55 {
62 #ifdef DEBUG_CONSTRUCTOR
63  std::cout<<"LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies(const LinearPlasticViscoelasticNormalSpecies &p) finished"<<std::endl;
64 #endif
65 }

References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.

◆ ~LinearPlasticViscoelasticNormalSpecies()

LinearPlasticViscoelasticNormalSpecies::~LinearPlasticViscoelasticNormalSpecies ( )

The default destructor.

68 {
69 #ifdef DEBUG_DESTRUCTOR
70  std::cout<<"LinearPlasticViscoelasticNormalSpecies::~LinearPlasticViscoelasticNormalSpecies() finished"<<std::endl;
71 #endif
72 }

Member Function Documentation

◆ computeBondNumberMax()

Mdouble LinearPlasticViscoelasticNormalSpecies::computeBondNumberMax ( Mdouble  harmonicMeanRadius,
Mdouble  gravitationalAcceleration 
) const

1) Computes the maximum plastic overlap delta_p* = phi*r 2) Computes the overlap at which the maximum adhesive force is generated: delta_c* = delta_p* / (1+k_c/k_2*) 3) Computes the maximum adhesive force f_c* = k_c * delta_c* 4) Computes the maximum bond number Bo* = f_c* / (m*g)

336  {
337  if (getConstantRestitution()) {
338  //harmonicMeanRadius unused
339  const Mdouble plasticOverlapMax = penetrationDepthMax_;
340  const Mdouble overlapMaxCohesion = plasticOverlapMax / (1 + cohesionStiffness_ / unloadingStiffnessMax_);
341  const Mdouble cohesionAccelerationMax = cohesionStiffness_ * overlapMaxCohesion;
342  return cohesionAccelerationMax / gravitationalAcceleration;
343  } else {
344  const Mdouble plasticOverlapMax = penetrationDepthMax_ * harmonicMeanRadius;
345  const Mdouble overlapMaxCohesion = plasticOverlapMax / (1 + cohesionStiffness_ / unloadingStiffnessMax_);
346  const Mdouble cohesionForceMax = cohesionStiffness_ * overlapMaxCohesion;
347  auto species = dynamic_cast<const ParticleSpecies*>(getBaseSpecies());
348  logger.assert_debug(species,"computeBondNumberMax: species needs to be a ParticleSpecies");
349  const Mdouble gravitationalForce = gravitationalAcceleration * species->getMassFromRadius(harmonicMeanRadius);
350  return cohesionForceMax / gravitationalForce;
351  }
352 }

References cohesionStiffness_, BaseForce::getBaseSpecies(), BaseNormalForce::getConstantRestitution(), logger, penetrationDepthMax_, and unloadingStiffnessMax_.

◆ computeTimeStep()

Mdouble LinearPlasticViscoelasticNormalSpecies::computeTimeStep ( Mdouble  mass)

Returns the optimal time step to resolve a collision of two particles of a given mass.

Calculates collision time for stiffest spring constant, divides by 50

Parameters
[in]theoptimal time step is computed to resolve a collision of two particles of this mass. If constant restitution is enabled, the collision time is mass-independent.
217 {
218  if (getConstantRestitution()) mass = 1;
219  return 0.02 * constants::pi /
220  std::sqrt(unloadingStiffnessMax_ / (.5 * mass) - mathsFunc::square(dissipation_ / mass));
221 }

References dissipation_, BaseNormalForce::getConstantRestitution(), constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.

◆ getBaseName()

std::string LinearPlasticViscoelasticNormalSpecies::getBaseName ( ) const

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")
105 {
106  return "LinearPlasticViscoelastic";
107 }

◆ getCohesionStiffness()

Mdouble LinearPlasticViscoelasticNormalSpecies::getCohesionStiffness ( ) const

Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.

Returns
the cohesive stiffness of the linear plastic-viscoelastic normal force.
167 {
168  return cohesionStiffness_;
169 }

References cohesionStiffness_.

Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), and mix().

◆ getCollisionTime()

Mdouble LinearPlasticViscoelasticNormalSpecies::getCollisionTime ( Mdouble  mass) const

Calculates collision time for two copies of a particle of given disp, k, mass.

Calculates collision time for two copies of a particle of given disp, k, mass If constant restitution is enabled, the collision time is mass-independent.

Todo:
should this use unloading stiffness?
315 {
316  if (getConstantRestitution()) mass = 1;
317 
318  logger.assert_debug(mass > 0, "getCollisionTime(%): mass should be positive",mass);
319 
320  Mdouble elasticContribution = loadingStiffness_ / (.5 * mass);
321  Mdouble elastoDissipativeContribution = elasticContribution - mathsFunc::square(dissipation_ / mass);
322 
323  logger.assert_debug(elastoDissipativeContribution > -1e-8 * elasticContribution,
324  "getCollisionTime(%): values for mass, stiffness and dissipation lead to an overdamped system: reduce dissipation",mass);
325 
326  return constants::pi / std::sqrt(elastoDissipativeContribution);
327 }

References dissipation_, BaseNormalForce::getConstantRestitution(), loadingStiffness_, logger, constants::pi, and mathsFunc::square().

Referenced by getRestitutionCoefficient().

◆ getDissipation()

Mdouble LinearPlasticViscoelasticNormalSpecies::getDissipation ( ) const

Allows the normal dissipation to be accessed.

Returns
the linear dissipation coefficient
246 {
247  return dissipation_;
248 }

References dissipation_.

Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), mix(), and SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient().

◆ getDoConstantUnloadingStiffness()

bool LinearPlasticViscoelasticNormalSpecies::getDoConstantUnloadingStiffness ( ) const
inline

◆ getLoadingStiffness()

Mdouble LinearPlasticViscoelasticNormalSpecies::getLoadingStiffness ( ) const

Returns the loading stiffness of the linear plastic-viscoelastic normal force.

Returns
the loading stiffness of the linear plastic-viscoelastic normal force.
151 {
152  return loadingStiffness_;
153 }

References loadingStiffness_.

Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getElasticEnergy(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), mix(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), and setRestitutionCoefficient().

◆ getPenetrationDepthMax()

Mdouble LinearPlasticViscoelasticNormalSpecies::getPenetrationDepthMax ( ) const

Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.

Returns
the maximum penetration depth of the linear plastic-viscoelastic normal force.
175 {
176  return penetrationDepthMax_;
177 }

References penetrationDepthMax_.

Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), and mix().

◆ getRestitutionCoefficient()

Mdouble LinearPlasticViscoelasticNormalSpecies::getRestitutionCoefficient ( Mdouble  mass) const

Calculates restitution coefficient for two copies of given disp, k, mass.

330 {
331  if (getConstantRestitution()) mass = 1;
332 
333  return std::exp(-dissipation_ / mass * getCollisionTime(mass));
334 }

References dissipation_, mathsFunc::exp(), getCollisionTime(), and BaseNormalForce::getConstantRestitution().

◆ getUnloadingStiffnessMax()

Mdouble LinearPlasticViscoelasticNormalSpecies::getUnloadingStiffnessMax ( ) const

Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force.

Returns
the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
159 {
160  return unloadingStiffnessMax_;
161 }

References unloadingStiffnessMax_.

Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), and mix().

◆ mix()

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

References BaseSpecies::average(), cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, getCohesionStiffness(), getDissipation(), getLoadingStiffness(), getPenetrationDepthMax(), getUnloadingStiffnessMax(), loadingStiffness_, logger, penetrationDepthMax_, and unloadingStiffnessMax_.

◆ read()

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

Reads the species properties from an input stream.

Parameters
[in]inputstream (typically the restart file)
91 {
92  std::string dummy;
93  is >> dummy >> loadingStiffness_;
94  is >> dummy >> unloadingStiffnessMax_;
95  helpers::readOptionalVariable<bool>(is,"doConstantUnloadingStiffness",doConstantUnloadingStiffness_);
96  is >> dummy >> cohesionStiffness_;
97  is >> dummy >> penetrationDepthMax_;
98  is >> dummy >> dissipation_;
99 }

References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.

◆ setCohesionStiffness()

void LinearPlasticViscoelasticNormalSpecies::setCohesionStiffness ( Mdouble  cohesionStiffness)

Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.

Parameters
[in]cohesionStiffnessthe cohesive stiffness of the linear plastic-viscoelastic normal force.
199 {
200  cohesionStiffness_ = cohesionStiffness;
201 }

References cohesionStiffness_.

Referenced by setPlasticParameters().

◆ setCollisionTimeAndRestitutionCoefficient()

void LinearPlasticViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient ( Mdouble  tc,
Mdouble  eps,
Mdouble  mass 
)

Set k, disp such that is matches a given tc and eps for a collision of two different masses. Recall the resitution constant is a function of k, disp and the mass of each particle in the collision See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)

Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m

Parameters
[in]tccollision time
[in]epsrestitution coefficient
[in]massharmonic mean of particle mass, \(\frac{2}{1/m1+1/m2}\) If constant restitution is enabled, the collision time and restitution is mass-independent.
Todo:
TW: check that the masses are described correctly here (m_eff or m_p?))
260 {
261  if (getConstantRestitution()) mass = 1;
262  if (eps == 0.0)
263  {
265  dissipation_ = std::sqrt(2.0 * mass * loadingStiffness_);
266  }
267  else
268  {
269  dissipation_ = -mass / tc * std::log(eps);
271  .5 * mass * (mathsFunc::square(constants::pi / tc) + mathsFunc::square(dissipation_ / mass));
272  }
274 }

References dissipation_, BaseNormalForce::getConstantRestitution(), loadingStiffness_, mathsFunc::log(), constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.

◆ setDissipation()

void LinearPlasticViscoelasticNormalSpecies::setDissipation ( Mdouble  dissipation)

Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force.

should be non-negative

Parameters
[in]thelinear dissipation coefficient of the linear plastic-viscoelastic normal force.
228 {
229  logger.assert_debug(dissipation >= 0, "setDissipation(%): dissipation should be non-negative",dissipation);
230  dissipation_ = dissipation;
231 }

References dissipation_, and logger.

Referenced by SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), and setLoadingStiffnessAndDissipation().

◆ setDoConstantUnloadingStiffness()

void LinearPlasticViscoelasticNormalSpecies::setDoConstantUnloadingStiffness ( bool  doConstantUnloadingStiffness)
inline
171 {doConstantUnloadingStiffness_ = doConstantUnloadingStiffness;}

References doConstantUnloadingStiffness_.

◆ setLoadingStiffness()

void LinearPlasticViscoelasticNormalSpecies::setLoadingStiffness ( Mdouble  loadingStiffness)

Sets the loading stiffness of the linear plastic-viscoelastic normal force.

Parameters
[in]loadingStiffnessthe loading stiffness of the linear plastic-viscoelastic normal force.
183 {
184  loadingStiffness_ = loadingStiffness;
185 }

References loadingStiffness_.

Referenced by SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), setLoadingStiffnessAndDissipation(), and setPlasticParameters().

◆ setLoadingStiffnessAndDissipation()

void LinearPlasticViscoelasticNormalSpecies::setLoadingStiffnessAndDissipation ( helpers::KAndDisp  new_)

Allows the spring and dissipation constants to be changed simultaneously.

Parameters
[in]ahelper struct containing both the loading stiffness and the disssipation coefficient.
237 {
238  setLoadingStiffness(new_.k);
239  setDissipation(new_.disp);
240 }

References helpers::KAndDisp::disp, helpers::KAndDisp::k, setDissipation(), and setLoadingStiffness().

◆ setPenetrationDepthMax()

void LinearPlasticViscoelasticNormalSpecies::setPenetrationDepthMax ( Mdouble  penetrationDepthMax)

Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.

Parameters
[in]penetrationDepthMaxthe maximum penetration depth of the linear plastic-viscoelastic normal force.
207 {
208  penetrationDepthMax_ = penetrationDepthMax;
209 }

References penetrationDepthMax_.

Referenced by setPlasticParameters().

◆ setPlasticParameters()

void LinearPlasticViscoelasticNormalSpecies::setPlasticParameters ( Mdouble  loadingStiffness,
Mdouble  unloadingStiffnessMax,
Mdouble  cohesionStiffness,
Mdouble  penetrationDepthMax 
)

Sets all parameters of the linear plastic-viscoelastic normal force at once.

Parameters
[in]loadingStiffnessthe loading stiffness of the linear plastic-viscoelastic normal force.
[in]unloadingStiffnessMaxthe maximum unloading stiffness of the linear plastic-viscoelastic normal force.
[in]cohesionStiffnessthe cohesive stiffness of the linear plastic-viscoelastic normal force.
[in]penetrationDepthMaxthe maximum penetration depth of the linear plastic-viscoelastic normal force.
135 {
136  if (loadingStiffness <= 0 || unloadingStiffnessMax < loadingStiffness || cohesionStiffness < 0 ||
137  penetrationDepthMax < 0 || penetrationDepthMax > 1)
138  {
139  logger(ERROR, "Arguments of setPlasticParameters do not make sense");
140  }
141  setLoadingStiffness(loadingStiffness);
142  setUnloadingStiffnessMax(unloadingStiffnessMax);
143  setCohesionStiffness(cohesionStiffness);
144  setPenetrationDepthMax(penetrationDepthMax);
145 }

References ERROR, logger, setCohesionStiffness(), setLoadingStiffness(), setPenetrationDepthMax(), and setUnloadingStiffnessMax().

◆ setRestitutionCoefficient()

void LinearPlasticViscoelasticNormalSpecies::setRestitutionCoefficient ( double  eps,
Mdouble  mass 
)

Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P

Parameters
[in]stiffnessstiffness
[in]epsrestitution coefficient
[in]masseffective particle mass, \(\frac{2}{1/m1+1/m2}\) If constant restitution is enabled, the restitution coefficient is mass-independent.
298 {
299  if (getConstantRestitution()) mass = 1;
300  if (eps == 0.0) {
301  dissipation_ = std::sqrt(2.0 * mass * getLoadingStiffness());
302  } else {
303  const Mdouble logEps = log(eps);
304  dissipation_ = -std::sqrt(2.0 * mass * getLoadingStiffness()
305  / (constants::sqr_pi + mathsFunc::square(logEps))) * logEps;
306  }
307 }

References dissipation_, BaseNormalForce::getConstantRestitution(), getLoadingStiffness(), mathsFunc::log(), constants::sqr_pi, and mathsFunc::square().

Referenced by setStiffnessAndRestitutionCoefficient().

◆ setStiffnessAndRestitutionCoefficient()

void LinearPlasticViscoelasticNormalSpecies::setStiffnessAndRestitutionCoefficient ( Mdouble  stiffness,
Mdouble  eps,
Mdouble  mass 
)

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P.

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P

Parameters
[in]stiffnessstiffness
[in]epsrestitution coefficient
[in]masseffective particle mass, \(\frac{2}{1/m1+1/m2}\) If constant restitution is enabled, the restitution coefficient is mass-independent.
284 {
285  if (getConstantRestitution()) mass = 1;
286  loadingStiffness_ = stiffness;
287  setRestitutionCoefficient(eps, mass);
288 }

References BaseNormalForce::getConstantRestitution(), loadingStiffness_, and setRestitutionCoefficient().

◆ setUnloadingStiffnessMax()

void LinearPlasticViscoelasticNormalSpecies::setUnloadingStiffnessMax ( Mdouble  unloadingStiffnessMax)

Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.

Parameters
[in]unloadingStiffnessMaxthe maximum unloading stiffness of the linear plastic-viscoelastic normal force.
191 {
192  unloadingStiffnessMax_ = unloadingStiffnessMax;
193 }

References unloadingStiffnessMax_.

Referenced by setPlasticParameters().

◆ write()

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

Writes the species properties to an output stream.

Parameters
[out]outputstream (typically the restart file)
78 {
79  os << " loadingStiffness " << loadingStiffness_;
80  os << " maxUnloadingStiffness " << unloadingStiffnessMax_;
81  if (doConstantUnloadingStiffness_) os << " doConstantUnloadingStiffness " << doConstantUnloadingStiffness_;
82  os << " cohesionStiffness " << cohesionStiffness_;
83  os << " maxPenetration " << penetrationDepthMax_;
84  os << " dissipation " << dissipation_;
85 }

References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.

Member Data Documentation

◆ cohesionStiffness_

Mdouble LinearPlasticViscoelasticNormalSpecies::cohesionStiffness_
private

the adhesive spring constant (k^c) for plastic deformations

Referenced by computeBondNumberMax(), getCohesionStiffness(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setCohesionStiffness(), and write().

◆ dissipation_

◆ doConstantUnloadingStiffness_

bool LinearPlasticViscoelasticNormalSpecies::doConstantUnloadingStiffness_ = false
private

◆ loadingStiffness_

◆ penetrationDepthMax_

Mdouble LinearPlasticViscoelasticNormalSpecies::penetrationDepthMax_
private

the depth (relative to the normalized radius) at which k_2^max is used (phi_f)

Referenced by computeBondNumberMax(), getPenetrationDepthMax(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setPenetrationDepthMax(), and write().

◆ unloadingStiffnessMax_

Mdouble LinearPlasticViscoelasticNormalSpecies::unloadingStiffnessMax_
private

The documentation for this class was generated from the following files:
mathsFunc::square
T square(const T val)
squares a number
Definition: ExtendedMath.h:106
constants::pi
const Mdouble pi
Definition: ExtendedMath.h:45
LinearPlasticViscoelasticNormalSpecies::setUnloadingStiffnessMax
void setUnloadingStiffnessMax(Mdouble unloadingStiffnessMax)
Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:190
constants::sqr_pi
const Mdouble sqr_pi
Definition: ExtendedMath.h:47
logger
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
LinearPlasticViscoelasticNormalSpecies::cohesionStiffness_
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Definition: LinearPlasticViscoelasticNormalSpecies.h:181
mathsFunc::exp
Mdouble exp(Mdouble Exponent)
Definition: ExtendedMath.cc:84
LinearPlasticViscoelasticNormalSpecies::getUnloadingStiffnessMax
Mdouble getUnloadingStiffnessMax() const
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:158
LinearPlasticViscoelasticNormalSpecies::getCollisionTime
Mdouble getCollisionTime(Mdouble mass) const
Calculates collision time for two copies of a particle of given disp, k, mass.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:314
ParticleSpecies
Definition: ParticleSpecies.h:37
mathsFunc::log
Mdouble log(Mdouble Power)
Definition: ExtendedMath.cc:104
helpers::KAndDisp::disp
Mdouble disp
Definition: Helpers.h:49
Mdouble
double Mdouble
Definition: GeneralDefine.h:34
LinearPlasticViscoelasticNormalSpecies::doConstantUnloadingStiffness_
bool doConstantUnloadingStiffness_
Definition: LinearPlasticViscoelasticNormalSpecies.h:190
ERROR
LL< Log::ERROR > ERROR
Error log level.
Definition: Logger.cc:53
LinearPlasticViscoelasticNormalSpecies::dissipation_
Mdouble dissipation_
linear dissipation coefficient
Definition: LinearPlasticViscoelasticNormalSpecies.h:187
BaseSpecies::average
static Mdouble average(Mdouble a, Mdouble b)
Returns the harmonic mean of two variables.
Definition: BaseSpecies.cc:110
LinearPlasticViscoelasticNormalSpecies::getCohesionStiffness
Mdouble getCohesionStiffness() const
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:166
LinearPlasticViscoelasticNormalSpecies::getPenetrationDepthMax
Mdouble getPenetrationDepthMax() const
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:174
LinearPlasticViscoelasticNormalSpecies::setRestitutionCoefficient
void setRestitutionCoefficient(double eps, Mdouble mass)
Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:297
LinearPlasticViscoelasticNormalSpecies::setPenetrationDepthMax
void setPenetrationDepthMax(Mdouble penetrationDepthMax)
Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:206
LinearPlasticViscoelasticNormalSpecies::penetrationDepthMax_
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Definition: LinearPlasticViscoelasticNormalSpecies.h:184
BaseNormalForce::BaseNormalForce
BaseNormalForce()
Definition: BaseNormalForce.h:34
BaseNormalForce::getConstantRestitution
bool getConstantRestitution() const
Definition: BaseNormalForce.h:45
LinearPlasticViscoelasticNormalSpecies::unloadingStiffnessMax_
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Definition: LinearPlasticViscoelasticNormalSpecies.h:178
LinearPlasticViscoelasticNormalSpecies::loadingStiffness_
Mdouble loadingStiffness_
(normal) spring constant (k_1)
Definition: LinearPlasticViscoelasticNormalSpecies.h:175
LinearPlasticViscoelasticNormalSpecies::setLoadingStiffness
void setLoadingStiffness(Mdouble loadingStiffness)
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:182
helpers::KAndDisp::k
Mdouble k
Definition: Helpers.h:48
LinearPlasticViscoelasticNormalSpecies::setDissipation
void setDissipation(Mdouble dissipation)
Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:227
BaseForce::getBaseSpecies
BaseSpecies * getBaseSpecies() const
Definition: BaseForce.h:35
LinearPlasticViscoelasticNormalSpecies::setCohesionStiffness
void setCohesionStiffness(Mdouble cohesionStiffness)
Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:198
LinearPlasticViscoelasticNormalSpecies::getLoadingStiffness
Mdouble getLoadingStiffness() const
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:150
LinearPlasticViscoelasticNormalSpecies::getDissipation
Mdouble getDissipation() const
Allows the normal dissipation to be accessed.
Definition: LinearPlasticViscoelasticNormalSpecies.cc:245