MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HertzianSinterNormalSpecies Class Reference

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

#include <HertzianSinterNormalSpecies.h>

+ Inheritance diagram for HertzianSinterNormalSpecies:

Public Types

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

Public Member Functions

 HertzianSinterNormalSpecies ()
 The default constructor. More...
 
 HertzianSinterNormalSpecies (const HertzianSinterNormalSpecies &p)
 The default copy constructor. More...
 
 ~HertzianSinterNormalSpecies ()
 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 (HertzianSinterNormalSpecies *S, HertzianSinterNormalSpecies *T)
 creates default values for mixed species More...
 
void setPlasticParameters (Mdouble loadingModulus, Mdouble unloadingModulusMax, Mdouble cohesionModulus, Mdouble penetrationDepthMax)
 Sets all parameters of the linear plastic-viscoelastic normal force at once. More...
 
Mdouble getLoadingModulus () const
 Returns the loading stiffness of the linear plastic-viscoelastic normal force. More...
 
Mdouble getUnloadingModulusMax () const
 Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force. More...
 
Mdouble getCohesionModulus () 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 setLoadingModulus (Mdouble loadingModulus)
 Sets the loading stiffness of the linear plastic-viscoelastic normal force. More...
 
void setUnloadingModulusMax (Mdouble unloadingModulusMax)
 Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force. More...
 
void setCohesionModulus (Mdouble cohesionModulus)
 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...
 
Mdouble getDissipation () const
 Allows the normal dissipation to be accessed. More...
 
void setSinterRate (Mdouble sinterRate)
 Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force. More...
 
Mdouble getSinterRate () const
 Allows the normal dissipation to be accessed. More...
 
Mdouble computeTimeStep (Mdouble mass)
 Returns the optimal time step to resolve a collision of two particles of a given mass. More...
 
- 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 loadingModulus_
 (normal) spring constant (k_1) More...
 
Mdouble unloadingModulusMax_
 the maximum elastic constant (k_2^max) for plastic deformations More...
 
Mdouble cohesionModulus_
 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...
 
Mdouble sinterRate_
 

Detailed Description

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

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

Definition at line 37 of file HertzianSinterNormalSpecies.h.

Member Typedef Documentation

Constructor & Destructor Documentation

HertzianSinterNormalSpecies::HertzianSinterNormalSpecies ( )

The default constructor.

Definition at line 37 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_, dissipation_, loadingModulus_, penetrationDepthMax_, sinterRate_, and unloadingModulusMax_.

38  : BaseNormalForce()
39 {
40  loadingModulus_ = 0.0;
42  cohesionModulus_ = 0.0;
44  dissipation_ = 0.0;
45  sinterRate_ = 0.0;
46 #ifdef DEBUG_CONSTRUCTOR
47  std::cout<<"HertzianSinterNormalSpecies::HertzianSinterNormalSpecies() finished"<<std::endl;
48 #endif
49 }
Mdouble dissipation_
linear dissipation coefficient
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
HertzianSinterNormalSpecies::HertzianSinterNormalSpecies ( const HertzianSinterNormalSpecies p)

The default copy constructor.

Parameters
[in]thespecies that is copied

Definition at line 54 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_, dissipation_, loadingModulus_, penetrationDepthMax_, sinterRate_, and unloadingModulusMax_.

55  : BaseNormalForce(p)
56 {
63 #ifdef DEBUG_CONSTRUCTOR
64  std::cout<<"HertzianSinterNormalSpecies::HertzianSinterNormalSpecies(const HertzianSinterNormalSpecies &p) finished"<<std::endl;
65 #endif
66 }
Mdouble dissipation_
linear dissipation coefficient
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
HertzianSinterNormalSpecies::~HertzianSinterNormalSpecies ( )

The default destructor.

Definition at line 68 of file HertzianSinterNormalSpecies.cc.

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

Member Function Documentation

Mdouble HertzianSinterNormalSpecies::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 214 of file HertzianSinterNormalSpecies.cc.

References BaseForce::getBaseSpecies(), ParticleSpecies::getDensity(), getPenetrationDepthMax(), getUnloadingModulusMax(), logger, and constants::pi.

215 {
216 // if (stiffnessMax / (.5 * mass) < mathsFunc::square(dissipation_ /mass)) {
217 // std::cerr << "Dissipation too high; max. allowed " << sqrt(2.0 * stiffnessMax * mass) << std::endl;
218 // return 0.02 * constants::pi / std::sqrt(2.0*stiffnessMax / mass);
219 // } else {
220  std::cerr << "Warning: Dissipation is not taken into account when computing the time step" << std::endl;
221  ParticleSpecies* p = dynamic_cast<ParticleSpecies*>(getBaseSpecies());
222  logger.assert(p,"Empty particle handler");
223  Mdouble radius = cbrt(mass * 3. / (4. * constants::pi * p->getDensity()));
224  return 0.02 * constants::pi / std::sqrt(2.0 * getUnloadingModulusMax() * getPenetrationDepthMax() * radius / mass);
225 }
BaseSpecies * getBaseSpecies() const
Definition: BaseForce.h:35
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
double Mdouble
Definition: GeneralDefine.h:34
const Mdouble pi
Definition: ExtendedMath.h:45
Mdouble getDensity() const
Allows density_ to be accessed.
Mdouble getUnloadingModulusMax() const
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force...
Mdouble getPenetrationDepthMax() const
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
std::string HertzianSinterNormalSpecies::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 105 of file HertzianSinterNormalSpecies.cc.

106 {
107  return "HertzianSinter";
108 }
Mdouble HertzianSinterNormalSpecies::getCohesionModulus ( ) 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 165 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_.

Referenced by HertzianSinterInteraction::computeSinterForce(), and mix().

166 {
167  return cohesionModulus_;
168 }
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble HertzianSinterNormalSpecies::getDissipation ( ) const

Allows the normal dissipation to be accessed.

Returns
the linear dissipation coefficient

Definition at line 264 of file HertzianSinterNormalSpecies.cc.

References dissipation_.

Referenced by HertzianSinterInteraction::computeSinterForce(), and mix().

265 {
266  return dissipation_;
267 }
Mdouble dissipation_
linear dissipation coefficient
Mdouble HertzianSinterNormalSpecies::getLoadingModulus ( ) 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 149 of file HertzianSinterNormalSpecies.cc.

References loadingModulus_.

Referenced by HertzianSinterInteraction::computeSinterForce(), HertzianSinterInteraction::getElasticEnergy(), HertzianSinterInteraction::getUnloadingModulus(), and mix().

150 {
151  return loadingModulus_;
152 }
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble HertzianSinterNormalSpecies::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 173 of file HertzianSinterNormalSpecies.cc.

References penetrationDepthMax_.

Referenced by HertzianSinterInteraction::computeSinterForce(), computeTimeStep(), HertzianSinterInteraction::getUnloadingModulus(), and mix().

174 {
175  return penetrationDepthMax_;
176 }
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Mdouble HertzianSinterNormalSpecies::getSinterRate ( ) const

Allows the normal dissipation to be accessed.

Returns
the linear dissipation coefficient

Definition at line 272 of file HertzianSinterNormalSpecies.cc.

References sinterRate_.

Referenced by HertzianSinterInteraction::computeSinterForce(), and mix().

273 {
274  return sinterRate_;
275 }
Mdouble HertzianSinterNormalSpecies::getUnloadingModulusMax ( ) 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 157 of file HertzianSinterNormalSpecies.cc.

References unloadingModulusMax_.

Referenced by HertzianSinterInteraction::computeSinterForce(), computeTimeStep(), HertzianSinterInteraction::getUnloadingModulus(), and mix().

158 {
159  return unloadingModulusMax_;
160 }
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
void HertzianSinterNormalSpecies::mix ( HertzianSinterNormalSpecies S,
HertzianSinterNormalSpecies 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 115 of file HertzianSinterNormalSpecies.cc.

References BaseSpecies::average(), cohesionModulus_, dissipation_, getCohesionModulus(), getDissipation(), getLoadingModulus(), getPenetrationDepthMax(), getSinterRate(), getUnloadingModulusMax(), loadingModulus_, penetrationDepthMax_, sinterRate_, and unloadingModulusMax_.

116 {
123 }
Mdouble getLoadingModulus() const
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
Mdouble dissipation_
linear dissipation coefficient
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble getDissipation() const
Allows the normal dissipation to be accessed.
Mdouble getSinterRate() const
Allows the normal dissipation to be accessed.
Mdouble getCohesionModulus() const
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
static Mdouble average(Mdouble a, Mdouble b)
Returns the harmonic mean of two variables.
Definition: BaseSpecies.cc:110
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble getUnloadingModulusMax() const
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force...
Mdouble getPenetrationDepthMax() const
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
void HertzianSinterNormalSpecies::read ( std::istream &  is)

Reads the species properties from an input stream.

Parameters
[in]inputstream (typically the restart file)

Definition at line 91 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_, dissipation_, loadingModulus_, penetrationDepthMax_, sinterRate_, and unloadingModulusMax_.

92 {
93  std::string dummy;
94  is >> dummy >> loadingModulus_;
95  is >> dummy >> unloadingModulusMax_;
96  is >> dummy >> cohesionModulus_;
97  is >> dummy >> penetrationDepthMax_;
98  is >> dummy >> dissipation_;
99  is >> dummy >> sinterRate_;
100 }
Mdouble dissipation_
linear dissipation coefficient
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
void HertzianSinterNormalSpecies::setCohesionModulus ( Mdouble  cohesionModulus)

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

Parameters
[in]cohesionModulusthe cohesive stiffness of the linear plastic-viscoelastic normal force.

Definition at line 197 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_.

Referenced by setPlasticParameters().

198 {
199  cohesionModulus_ = cohesionModulus;
200 }
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
void HertzianSinterNormalSpecies::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 231 of file HertzianSinterNormalSpecies.cc.

References dissipation_.

232 {
233  if (dissipation >= 0)
234  {
235  dissipation_ = dissipation;
236  }
237  else
238  {
239  std::cerr << "Error in setDissipation(" << dissipation << ")" << std::endl;
240  exit(-1);
241  }
242 }
Mdouble dissipation_
linear dissipation coefficient
void HertzianSinterNormalSpecies::setLoadingModulus ( Mdouble  loadingModulus)

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

Parameters
[in]loadingModulusthe loading stiffness of the linear plastic-viscoelastic normal force.

Definition at line 181 of file HertzianSinterNormalSpecies.cc.

References loadingModulus_.

Referenced by setPlasticParameters().

182 {
183  loadingModulus_ = loadingModulus;
184 }
Mdouble loadingModulus_
(normal) spring constant (k_1)
void HertzianSinterNormalSpecies::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 205 of file HertzianSinterNormalSpecies.cc.

References penetrationDepthMax_.

Referenced by setPlasticParameters().

206 {
207  penetrationDepthMax_ = penetrationDepthMax;
208 }
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
void HertzianSinterNormalSpecies::setPlasticParameters ( Mdouble  loadingModulus,
Mdouble  unloadingModulusMax,
Mdouble  cohesionModulus,
Mdouble  penetrationDepthMax 
)

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

Parameters
[in]loadingModulusthe loading stiffness of the linear plastic-viscoelastic normal force.
[in]unloadingModulusMaxthe maximum unloading stiffness of the linear plastic-viscoelastic normal force.
[in]cohesionModulusthe cohesive stiffness of the linear plastic-viscoelastic normal force.
[in]penetrationDepthMaxthe maximum penetration depth of the linear plastic-viscoelastic normal force.

Definition at line 131 of file HertzianSinterNormalSpecies.cc.

References setCohesionModulus(), setLoadingModulus(), setPenetrationDepthMax(), and setUnloadingModulusMax().

133 {
134  if (loadingModulus <= 0 || unloadingModulusMax <= 1.000001 * (loadingModulus + cohesionModulus) ||
135  cohesionModulus < 0 || penetrationDepthMax < 0)
136  {
137  std::cerr << "Error: arguments of setPlasticParameters do not make sense" << std::endl;
138  exit(-1);
139  }
140  setLoadingModulus(loadingModulus);
141  setUnloadingModulusMax(unloadingModulusMax);
142  setCohesionModulus(cohesionModulus);
143  setPenetrationDepthMax(penetrationDepthMax);
144 }
void setPenetrationDepthMax(Mdouble penetrationDepthMax)
Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.
void setCohesionModulus(Mdouble cohesionModulus)
Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.
void setLoadingModulus(Mdouble loadingModulus)
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
void setUnloadingModulusMax(Mdouble unloadingModulusMax)
Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
void HertzianSinterNormalSpecies::setSinterRate ( Mdouble  sinterRate)

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 248 of file HertzianSinterNormalSpecies.cc.

References sinterRate_.

249 {
250  if (sinterRate >= 0)
251  {
252  sinterRate_ = sinterRate;
253  }
254  else
255  {
256  std::cerr << "Error in setSinterRate(" << sinterRate << ")" << std::endl;
257  exit(-1);
258  }
259 }
void HertzianSinterNormalSpecies::setUnloadingModulusMax ( Mdouble  unloadingModulusMax)

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

Parameters
[in]unloadingModulusMaxthe maximum unloading stiffness of the linear plastic-viscoelastic normal force.

Definition at line 189 of file HertzianSinterNormalSpecies.cc.

References unloadingModulusMax_.

Referenced by setPlasticParameters().

190 {
191  unloadingModulusMax_ = unloadingModulusMax;
192 }
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
void HertzianSinterNormalSpecies::write ( std::ostream &  os) const

Writes the species properties to an output stream.

Parameters
[out]outputstream (typically the restart file)

Definition at line 78 of file HertzianSinterNormalSpecies.cc.

References cohesionModulus_, dissipation_, loadingModulus_, penetrationDepthMax_, sinterRate_, and unloadingModulusMax_.

79 {
80  os << " loadingModulus " << loadingModulus_;
81  os << " maxUnloadingModulus " << unloadingModulusMax_;
82  os << " cohesionModulus " << cohesionModulus_;
83  os << " maxPenetration " << penetrationDepthMax_;
84  os << " dissipation " << dissipation_;
85  os << " sinterRate " << sinterRate_;
86 }
Mdouble dissipation_
linear dissipation coefficient
Mdouble unloadingModulusMax_
the maximum elastic constant (k_2^max) for plastic deformations
Mdouble cohesionModulus_
the adhesive spring constant (k^c) for plastic deformations
Mdouble loadingModulus_
(normal) spring constant (k_1)
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)

Member Data Documentation

Mdouble HertzianSinterNormalSpecies::cohesionModulus_
private

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

Definition at line 149 of file HertzianSinterNormalSpecies.h.

Referenced by getCohesionModulus(), HertzianSinterNormalSpecies(), mix(), read(), setCohesionModulus(), and write().

Mdouble HertzianSinterNormalSpecies::dissipation_
private

linear dissipation coefficient

Definition at line 155 of file HertzianSinterNormalSpecies.h.

Referenced by getDissipation(), HertzianSinterNormalSpecies(), mix(), read(), setDissipation(), and write().

Mdouble HertzianSinterNormalSpecies::loadingModulus_
private

(normal) spring constant (k_1)

Definition at line 143 of file HertzianSinterNormalSpecies.h.

Referenced by getLoadingModulus(), HertzianSinterNormalSpecies(), mix(), read(), setLoadingModulus(), and write().

Mdouble HertzianSinterNormalSpecies::penetrationDepthMax_
private

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

Definition at line 152 of file HertzianSinterNormalSpecies.h.

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

Mdouble HertzianSinterNormalSpecies::sinterRate_
private
Mdouble HertzianSinterNormalSpecies::unloadingModulusMax_
private

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

Definition at line 146 of file HertzianSinterNormalSpecies.h.

Referenced by getUnloadingModulusMax(), HertzianSinterNormalSpecies(), mix(), read(), setUnloadingModulusMax(), and write().


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