MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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...
 
virtual ~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 *const S, LinearPlasticViscoelasticNormalSpecies *const T)
 creates default values for mixed species More...
 
void 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. More...
 
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...
 
Mdouble getCollisionTime (Mdouble mass)
 Calculates collision time for two copies of a particle 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...
 
- 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 BaseSpeciescopy () 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...
 
SpeciesHandlergetHandler () 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 bool getUseAngularDOFs () const =0
 Returns true if torques (i.e. angular degrees of freedom) have to be calculated. More...
 
virtual BaseInteractiongetNewInteraction (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 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...
 

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.

Definition at line 36 of file LinearPlasticViscoelasticNormalSpecies.h.

Member Typedef Documentation

Constructor & Destructor Documentation

LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies ( )

The default constructor.

Definition at line 33 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

34 {
35  loadingStiffness_ = 0.0;
37  cohesionStiffness_ = 0.0;
39  dissipation_ = 0.0;
40 #ifdef DEBUG_CONSTRUCTOR
41  std::cout<<"LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies() finished"<<std::endl;
42 #endif
43 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble loadingStiffness_
(normal) spring constant (k_1)
LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies ( const LinearPlasticViscoelasticNormalSpecies p)

The default copy constructor.

Parameters
[in]thespecies that is copied

Definition at line 48 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

49 {
55 #ifdef DEBUG_CONSTRUCTOR
56  std::cout<<"LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies(const LinearPlasticViscoelasticNormalSpecies &p) finished"<<std::endl;
57 #endif
58 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble loadingStiffness_
(normal) spring constant (k_1)
LinearPlasticViscoelasticNormalSpecies::~LinearPlasticViscoelasticNormalSpecies ( )
virtual

The default destructor.

Definition at line 60 of file LinearPlasticViscoelasticNormalSpecies.cc.

61 {
62 #ifdef DEBUG_DESTRUCTOR
63  std::cout<<"LinearPlasticViscoelasticNormalSpecies::~LinearPlasticViscoelasticNormalSpecies() finished"<<std::endl;
64 #endif
65 }

Member Function Documentation

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.

Definition at line 201 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

202 {
203  return 0.02 * constants::pi / std::sqrt(unloadingStiffnessMax_ / (.5 * mass) - mathsFunc::square(dissipation_ /mass));
204 }
T square(T val)
squares a number
Definition: ExtendedMath.h:91
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
const Mdouble pi
Definition: ExtendedMath.h:42
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")

Definition at line 95 of file LinearPlasticViscoelasticNormalSpecies.cc.

96 {
97  return "LinearPlasticViscoelastic";
98 }
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.

Definition at line 152 of file LinearPlasticViscoelasticNormalSpecies.cc.

References cohesionStiffness_.

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

153 {
154  return cohesionStiffness_;
155 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble LinearPlasticViscoelasticNormalSpecies::getCollisionTime ( Mdouble  mass)

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

Definition at line 276 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

277 {
278  if (mass <= 0)
279  {
280  std::cerr << "Error in getCollisionTime(" << mass << ") mass is not set or has an unexpected value, (getCollisionTime(" << mass << "))" << std::endl;
281  exit(-1);
282  }
283  if (loadingStiffness_ <= 0)
284  {
285  std::cerr << "Error in getCollisionTime(" << mass << ") stiffness=" << loadingStiffness_ << " is not set or has an unexpected value, (getCollisionTime(" << mass << "), with stiffness=" << loadingStiffness_ << ")" << std::endl;
286  exit(-1);
287  }
288  if (dissipation_ < 0)
289  {
290  std::cerr << "Error in getCollisionTime(" << mass << ") dissipation=" << dissipation_ << " is not set or has an unexpected value, (getCollisionTime(" << mass << "), with dissipation=" << dissipation_ << ")" << std::endl;
291  exit(-1);
292  }
293  Mdouble tosqrt = loadingStiffness_ / (.5 * mass) - mathsFunc::square(dissipation_ / mass);
294  if (tosqrt <= -1e-8*loadingStiffness_ / (.5 * mass))
295  {
296  std::cerr << "Error in getCollisionTime(" << mass << ") values for mass, stiffness and dissipation would "
297  "lead to an overdamped system: reduce dissipation." << std::endl;
298  exit(-1);
299  }
300  return constants::pi / std::sqrt(tosqrt);
301 }
double Mdouble
T square(T val)
squares a number
Definition: ExtendedMath.h:91
const Mdouble pi
Definition: ExtendedMath.h:42
Mdouble loadingStiffness_
(normal) spring constant (k_1)
Mdouble LinearPlasticViscoelasticNormalSpecies::getDissipation ( ) const

Allows the normal dissipation to be accessed.

Returns
the linear dissipation coefficient

Definition at line 235 of file LinearPlasticViscoelasticNormalSpecies.cc.

References dissipation_.

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

236 {
237  return dissipation_;
238 }
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.

Definition at line 136 of file LinearPlasticViscoelasticNormalSpecies.cc.

References loadingStiffness_.

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

137 {
138  return loadingStiffness_;
139 }
Mdouble loadingStiffness_
(normal) spring constant (k_1)
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.

Definition at line 160 of file LinearPlasticViscoelasticNormalSpecies.cc.

References penetrationDepthMax_.

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

161 {
162  return penetrationDepthMax_;
163 }
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
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.

Definition at line 144 of file LinearPlasticViscoelasticNormalSpecies.cc.

References unloadingStiffnessMax_.

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

145 {
146  return unloadingStiffnessMax_;
147 }
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
void LinearPlasticViscoelasticNormalSpecies::mix ( LinearPlasticViscoelasticNormalSpecies *const  S,
LinearPlasticViscoelasticNormalSpecies *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.

Parameters
[in]S,Tthe two species whose properties are mixed to create the new species

Definition at line 105 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

106 {
112 }
Mdouble getUnloadingStiffnessMax() const
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force...
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble getCohesionStiffness() const
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble average(Mdouble a, Mdouble b)
defines the average of two variables by the harmonic mean.
Definition: BaseSpecies.cc:85
Mdouble getDissipation() const
Allows the normal dissipation to be accessed.
Mdouble loadingStiffness_
(normal) spring constant (k_1)
Mdouble getPenetrationDepthMax() const
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
Mdouble getLoadingStiffness() const
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
void LinearPlasticViscoelasticNormalSpecies::read ( std::istream &  is)
virtual

Reads the species properties from an input stream.

Parameters
[in]inputstream (typically the restart file)

Implements BaseObject.

Definition at line 82 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

83 {
84  std::string dummy;
85  is >> dummy >> loadingStiffness_;
86  is >> dummy >> unloadingStiffnessMax_;
87  is >> dummy >> cohesionStiffness_;
88  is >> dummy >> penetrationDepthMax_;
89  is >> dummy >> dissipation_;
90 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble loadingStiffness_
(normal) spring constant (k_1)
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.

Definition at line 184 of file LinearPlasticViscoelasticNormalSpecies.cc.

References cohesionStiffness_.

Referenced by setPlasticParameters().

185 {
186  cohesionStiffness_ = cohesionStiffness;
187 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
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]masseffective particle mass, $\frac{2}{1/m1+1/m2}$
Todo:
TW: check that the masses are described correctly here (m_eff or m_p?))

Definition at line 247 of file LinearPlasticViscoelasticNormalSpecies.cc.

248 {
249  if (eps==0.0) {
251  dissipation_ = std::sqrt(2.0 * mass * loadingStiffness_);
252  } else {
253  dissipation_ = -mass / tc * std::log(eps);
255  }
257 }
Mdouble log(Mdouble Power)
Definition: ExtendedMath.cc:97
T square(T val)
squares a number
Definition: ExtendedMath.h:91
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
const Mdouble pi
Definition: ExtendedMath.h:42
Mdouble loadingStiffness_
(normal) spring constant (k_1)
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.

Definition at line 210 of file LinearPlasticViscoelasticNormalSpecies.cc.

References dissipation_.

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

211 {
212  if (dissipation >= 0)
213  {
214  dissipation_ = dissipation;
215  }
216  else
217  {
218  std::cerr << "Error in setDissipation(" << dissipation << ")" << std::endl;
219  exit(-1);
220  }
221 }
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.

Definition at line 168 of file LinearPlasticViscoelasticNormalSpecies.cc.

References loadingStiffness_.

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

169 {
170  loadingStiffness_ = loadingStiffness;
171 }
Mdouble loadingStiffness_
(normal) spring constant (k_1)
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.

Definition at line 226 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

227 {
228  setLoadingStiffness(new_.k);
229  setDissipation(new_.disp);
230 }
Mdouble disp
Definition: Helpers.h:46
void setLoadingStiffness(Mdouble loadingStiffness)
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
void setDissipation(Mdouble dissipation)
Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force...
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.

Definition at line 192 of file LinearPlasticViscoelasticNormalSpecies.cc.

References penetrationDepthMax_.

Referenced by setPlasticParameters().

193 {
194  penetrationDepthMax_ = penetrationDepthMax;
195 }
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
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.

Definition at line 120 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

121 {
122  if (loadingStiffness <= 0 || unloadingStiffnessMax < loadingStiffness || cohesionStiffness < 0 || penetrationDepthMax < 0 || penetrationDepthMax > 1)
123  {
124  std::cerr << "Error: arguments of setPlasticParameters do not make sense" << std::endl;
125  exit(-1);
126  }
127  setLoadingStiffness(loadingStiffness);
128  setUnloadingStiffnessMax(unloadingStiffnessMax);
129  setCohesionStiffness(cohesionStiffness);
130  setPenetrationDepthMax(penetrationDepthMax);
131 }
void setCohesionStiffness(Mdouble cohesionStiffness)
Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.
void setPenetrationDepthMax(Mdouble penetrationDepthMax)
Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.
void setLoadingStiffness(Mdouble loadingStiffness)
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
void setUnloadingStiffnessMax(Mdouble unloadingStiffnessMax)
Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
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}$

Definition at line 265 of file LinearPlasticViscoelasticNormalSpecies.cc.

References dissipation_, loadingStiffness_, mathsFunc::log(), constants::sqr_pi, and mathsFunc::square().

266 {
267  loadingStiffness_ = stiffness;
268  if (eps==0.0) {
269  dissipation_ = std::sqrt(2.0 * mass * stiffness);
270  } else {
271  dissipation_ = -std::sqrt(2.0 * mass * stiffness / (constants::sqr_pi + mathsFunc::square(log(eps)))) * log(eps);
272  }
273 }
Mdouble log(Mdouble Power)
Definition: ExtendedMath.cc:97
T square(T val)
squares a number
Definition: ExtendedMath.h:91
Mdouble loadingStiffness_
(normal) spring constant (k_1)
const Mdouble sqr_pi
Definition: ExtendedMath.h:44
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.

Definition at line 176 of file LinearPlasticViscoelasticNormalSpecies.cc.

References unloadingStiffnessMax_.

Referenced by setPlasticParameters().

177 {
178  unloadingStiffnessMax_ = unloadingStiffnessMax;
179 }
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
void LinearPlasticViscoelasticNormalSpecies::write ( std::ostream &  os) const
virtual

Writes the species properties to an output stream.

Parameters
[out]outputstream (typically the restart file)

Implements BaseObject.

Definition at line 70 of file LinearPlasticViscoelasticNormalSpecies.cc.

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

71 {
72  os << " loadingStiffness " << loadingStiffness_;
73  os << " maxUnloadingStiffness " << unloadingStiffnessMax_;
74  os << " cohesionStiffness " << cohesionStiffness_;
75  os << " maxPenetration " << penetrationDepthMax_;
76  os << " dissipation " << dissipation_;
77 }
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble loadingStiffness_
(normal) spring constant (k_1)

Member Data Documentation

Mdouble LinearPlasticViscoelasticNormalSpecies::cohesionStiffness_
private

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

Definition at line 153 of file LinearPlasticViscoelasticNormalSpecies.h.

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

Mdouble LinearPlasticViscoelasticNormalSpecies::dissipation_
private
Mdouble LinearPlasticViscoelasticNormalSpecies::loadingStiffness_
private
Mdouble LinearPlasticViscoelasticNormalSpecies::penetrationDepthMax_
private

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

Definition at line 156 of file LinearPlasticViscoelasticNormalSpecies.h.

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

Mdouble LinearPlasticViscoelasticNormalSpecies::unloadingStiffnessMax_
private

the maximum elastic constant (k_2^max) for plastic deformations

Definition at line 150 of file LinearPlasticViscoelasticNormalSpecies.h.

Referenced by computeTimeStep(), getUnloadingStiffnessMax(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setUnloadingStiffnessMax(), and write().


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