SinterLinNormalSpecies Class Reference

SinterLinNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model) based on three different sintering mechanisms. More...

#include <SinterLinNormalSpecies.h>

+ Inheritance diagram for SinterLinNormalSpecies:

Public Types

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

Public Member Functions

 SinterLinNormalSpecies ()
 The default constructor. More...
 
 SinterLinNormalSpecies (const SinterLinNormalSpecies &p)
 The default copy constructor. More...
 
 ~SinterLinNormalSpecies ()
 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 (SinterLinNormalSpecies *S, SinterLinNormalSpecies *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...
 
MERCURYDPM_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...
 
void setSinterAdhesion (Mdouble sinterAdhesion)
 Sets sinterAdhesion_. More...
 
Mdouble getSinterAdhesion () const
 Accesses sinterAdhesion_. More...
 
void setSinterRate (Mdouble sinterRate)
 Sets sinterRate_. More...
 
Mdouble getSinterRate () const
 Accesses sinterRate_. More...
 
void setComplianceZero (Mdouble complianceZero)
 sets the instantaneous compliance (compliance zero) More...
 
Mdouble getComplianceZero () const
 Accesses the instantaneous compliance (compliance zero) More...
 
void setSurfTension (Mdouble complianceZero)
 sets the surface tension. More...
 
Mdouble getSurfTension () const
 accesses the surface tension. More...
 
void setFluidity (Mdouble complianceOne)
 sets the fluidity (inverse of viscosity). More...
 
Mdouble getFluidity () const
 accesses the fluidity (inverse of viscosity). More...
 
void setSeparationDis (Mdouble separationDis)
 sets the critical separation distance. This mimics inter-surface forces. More...
 
Mdouble getSeparationDis () const
 accesses the critical separation distance. This mimics inter-surface forces. More...
 
void setSinterType (SINTER_APPROACH sinterType)
 sets the sintering approach selected. More...
 
SINTER_APPROACH getSinterType () const
 
- Public Member Functions inherited from BaseNormalForce
 BaseNormalForce ()
 
 BaseNormalForce (const BaseNormalForce &p)
 
bool getConstantRestitution () const
 
void setConstantRestitution (bool constantRestitution)
 
virtual void actionsAfterTimeStep (BaseParticle *particle) const
 
- 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...
 
Mdouble sinterAdhesion_
 
Mdouble sinterRate_
 
Mdouble complianceZero_
 
Mdouble surfTension_
 
Mdouble fluidity
 
Mdouble separationDis_
 
SINTER_APPROACH sinterType_
 Type of sintering. More...
 

Detailed Description

SinterLinNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model) based on three different sintering mechanisms.

Ref: Visco-elastic sintering kinetics in virgin and aged polymer powders. Powder Technology, 2020.

Member Typedef Documentation

◆ InteractionType

The correct Interaction type for this FrictionForceSpecies.

Constructor & Destructor Documentation

◆ SinterLinNormalSpecies() [1/2]

SinterLinNormalSpecies::SinterLinNormalSpecies ( )

The default constructor.

15  : BaseNormalForce()
16 {
17  loadingStiffness_ = 0.0;
19  cohesionStiffness_ = 0.0;
21  dissipation_ = 0.0;
22  sinterAdhesion_ = 0.0;
23  sinterRate_ = 0.0;
24  complianceZero_ = 0.0;
25  surfTension_ = 0.0;
26  fluidity = 0.0;
27  separationDis_ = 0.0;
29 
30 #ifdef DEBUG_CONSTRUCTOR
31  std::cout<<"SinterLinNormalSpecies::SinterLinNormalSpecies() finished"<<std::endl;
32 #endif
33 }
BaseNormalForce()
Definition: BaseNormalForce.h:14
Mdouble separationDis_
Definition: SinterLinNormalSpecies.h:269
SINTER_APPROACH sinterType_
Type of sintering.
Definition: SinterLinNormalSpecies.h:272
Mdouble cohesionStiffness_
the adhesive spring constant (k^c) for plastic deformations
Definition: SinterLinNormalSpecies.h:232
Mdouble complianceZero_
Definition: SinterLinNormalSpecies.h:254
Mdouble fluidity
Definition: SinterLinNormalSpecies.h:264
Mdouble sinterRate_
Definition: SinterLinNormalSpecies.h:248
Mdouble penetrationDepthMax_
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Definition: SinterLinNormalSpecies.h:235
Mdouble unloadingStiffnessMax_
the maximum elastic constant (k_2^max) for plastic deformations
Definition: SinterLinNormalSpecies.h:229
Mdouble sinterAdhesion_
Definition: SinterLinNormalSpecies.h:243
Mdouble surfTension_
Definition: SinterLinNormalSpecies.h:259
Mdouble dissipation_
linear dissipation coefficient
Definition: SinterLinNormalSpecies.h:238
Mdouble loadingStiffness_
(normal) spring constant (k_1)
Definition: SinterLinNormalSpecies.h:226

References cohesionStiffness_, complianceZero_, dissipation_, fluidity, FRENKEL, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.

◆ SinterLinNormalSpecies() [2/2]

SinterLinNormalSpecies::SinterLinNormalSpecies ( const SinterLinNormalSpecies p)

The default copy constructor.

Parameters
[in]SinterLinNormalSpeciesthe species that is copied
40 {
41  loadingStiffness_ = p.loadingStiffness_;
42  unloadingStiffnessMax_ = p.unloadingStiffnessMax_;
43  cohesionStiffness_ = p.cohesionStiffness_;
44  penetrationDepthMax_ = p.penetrationDepthMax_;
45  dissipation_ = p.dissipation_;
46  sinterAdhesion_ = p.sinterAdhesion_;
47  sinterRate_ = p.sinterRate_;
48  complianceZero_ = p.complianceZero_;
49  surfTension_ = p.surfTension_;
50  fluidity = p.fluidity;
51  separationDis_ = p.separationDis_;
52  sinterType_ = p.sinterType_;
53 
54 #ifdef DEBUG_CONSTRUCTOR
55  std::cout<<"SinterLinNormalSpecies::SinterLinNormalSpecies(const SinterLinNormalSpecies &p) finished"<<std::endl;
56 #endif
57 }
float * p
Definition: Tutorial_Map_using.cpp:9

References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, p, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.

◆ ~SinterLinNormalSpecies()

SinterLinNormalSpecies::~SinterLinNormalSpecies ( )

The default destructor.

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

Member Function Documentation

◆ computeTimeStep()

Mdouble SinterLinNormalSpecies::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]massthe optimal time step is computed to resolve a collision of two particles of this mass.
228 {
229  if (getConstantRestitution()) mass = 1;
230  return 0.02 * constants::pi /
232 }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
bool getConstantRestitution() const
Definition: BaseNormalForce.h:25
const Mdouble pi
Definition: ExtendedMath.h:23
T square(const T val)
squares a number
Definition: ExtendedMath.h:86

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

◆ getBaseName()

std::string SinterLinNormalSpecies::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")
112 {
113  return "SinterLin";
114 }

◆ getCohesionStiffness()

Mdouble SinterLinNormalSpecies::getCohesionStiffness ( ) const

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

Returns
the cohesive stiffness of the linear plastic-viscoelastic normal force.
178 {
179  return cohesionStiffness_;
180 }

References cohesionStiffness_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getCollisionTime()

Mdouble SinterLinNormalSpecies::getCollisionTime ( Mdouble  mass) const

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

435 {
436  if (mass <= 0)
437  {
438  std::cerr << "Error in getCollisionTime(" << mass
439  << ") mass is not set or has an unexpected value, (getCollisionTime(" << mass << "))" << std::endl;
440  exit(-1);
441  }
442  if (loadingStiffness_ <= 0)
443  {
444  std::cerr << "Error in getCollisionTime(" << mass << ") stiffness=" << loadingStiffness_
445  << " is not set or has an unexpected value, (getCollisionTime(" << mass << "), with stiffness="
446  << loadingStiffness_ << ")" << std::endl;
447  exit(-1);
448  }
449  if (dissipation_ < 0)
450  {
451  std::cerr << "Error in getCollisionTime(" << mass << ") dissipation=" << dissipation_
452  << " is not set or has an unexpected value, (getCollisionTime(" << mass << "), with dissipation="
453  << dissipation_ << ")" << std::endl;
454  exit(-1);
455  }
456  Mdouble tosqrt = loadingStiffness_ / (.5 * mass) - mathsFunc::square(dissipation_ / mass);
457  if (tosqrt <= -1e-8 * loadingStiffness_ / (.5 * mass))
458  {
459  std::cerr << "Error in getCollisionTime(" << mass
460  << ") values for mass, stiffness and dissipation would lead to an overdamped system, (getCollisionTime("
461  << mass << "), with stiffness=" << loadingStiffness_ << " and dissipation=" << dissipation_ << ")"
462  << std::endl;
463  exit(-1);
464  }
465  return constants::pi / std::sqrt(tosqrt);
466 }
Array< double, 1, 3 > e(1./3., 0.5, 2.)
double Mdouble
Definition: GeneralDefine.h:13

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

Referenced by getRestitutionCoefficient().

◆ getComplianceZero()

Mdouble SinterLinNormalSpecies::getComplianceZero ( ) const

Accesses the instantaneous compliance (compliance zero)

350 {
351  return complianceZero_;
352 }

References complianceZero_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getDissipation()

Mdouble SinterLinNormalSpecies::getDissipation ( ) const

Allows the normal dissipation to be accessed.

Returns
the linear dissipation coefficient
329 {
330  return dissipation_;
331 }

References dissipation_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getFluidity()

Mdouble SinterLinNormalSpecies::getFluidity ( ) const

accesses the fluidity (inverse of viscosity).

360 {
361  return fluidity;
362 }

References fluidity.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getLoadingStiffness()

Mdouble SinterLinNormalSpecies::getLoadingStiffness ( ) const

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

Returns
the loading stiffness of the linear plastic-viscoelastic normal force.
162 {
163  return loadingStiffness_;
164 }

References loadingStiffness_.

Referenced by SinterLinInteraction::computeNormalForce(), SinterLinInteraction::getElasticEnergy(), SinterLinInteraction::getUnloadingStiffness(), and setRestitutionCoefficient().

◆ getPenetrationDepthMax()

Mdouble SinterLinNormalSpecies::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.
186 {
187  return penetrationDepthMax_;
188 }

References penetrationDepthMax_.

Referenced by SinterLinInteraction::computeNormalForce(), and SinterLinInteraction::getUnloadingStiffness().

◆ getRestitutionCoefficient()

Mdouble SinterLinNormalSpecies::getRestitutionCoefficient ( Mdouble  mass) const

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

469 {
470  if (getConstantRestitution()) mass = 1;
471 
472  return std::exp(-dissipation_ / mass * getCollisionTime(mass));
473 }
Mdouble getCollisionTime(Mdouble mass) const
Calculates collision time for two copies of a particle of given disp, k, mass.
Definition: SinterLinNormalSpecies.cc:434
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615

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

◆ getSeparationDis()

Mdouble SinterLinNormalSpecies::getSeparationDis ( ) const

accesses the critical separation distance. This mimics inter-surface forces.

365 {
366  return separationDis_;
367 }

References separationDis_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getSinterAdhesion()

Mdouble SinterLinNormalSpecies::getSinterAdhesion ( ) const

Accesses sinterAdhesion_.

Returns
value of sinterAdhesion_
337 {
338  return sinterAdhesion_;
339 }

References sinterAdhesion_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getSinterRate()

Mdouble SinterLinNormalSpecies::getSinterRate ( ) const

Accesses sinterRate_.

Returns
value of sinterAdhesion_
345 {
346  return sinterRate_;
347 }

References sinterRate_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getSinterType()

SINTER_APPROACH SinterLinNormalSpecies::getSinterType ( ) const
371 {
372  return sinterType_;
373 }

References sinterType_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getSurfTension()

Mdouble SinterLinNormalSpecies::getSurfTension ( ) const

accesses the surface tension.

355 {
356  return surfTension_;
357 }

References surfTension_.

Referenced by SinterLinInteraction::computeNormalForce().

◆ getUnloadingStiffnessMax()

Mdouble SinterLinNormalSpecies::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.
170 {
171  return unloadingStiffnessMax_;
172 }

References unloadingStiffnessMax_.

Referenced by SinterLinInteraction::computeNormalForce(), and SinterLinInteraction::getUnloadingStiffness().

◆ mix()

void SinterLinNormalSpecies::mix ( SinterLinNormalSpecies S,
SinterLinNormalSpecies 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
123 {
124  loadingStiffness_ = BaseSpecies::average(S->getLoadingStiffness(), T->getLoadingStiffness());
125  unloadingStiffnessMax_ = BaseSpecies::average(S->getUnloadingStiffnessMax(), T->getUnloadingStiffnessMax());
126  cohesionStiffness_ = BaseSpecies::average(S->getCohesionStiffness(), T->getCohesionStiffness());
127  penetrationDepthMax_ = BaseSpecies::average(S->getPenetrationDepthMax(), T->getPenetrationDepthMax());
128  dissipation_ = BaseSpecies::average(S->getDissipation(), T->getDissipation());
129  sinterAdhesion_ = BaseSpecies::average(S->getSinterAdhesion(), T->getSinterAdhesion());
130  complianceZero_ = BaseSpecies::average(S->getComplianceZero(), T->getComplianceZero());
131  surfTension_ = BaseSpecies::average(S->getSurfTension(), T->getSurfTension());
132  fluidity= BaseSpecies::average(S->getFluidity(), T->getFluidity());
133  separationDis_ = BaseSpecies::average(S->getSeparationDis(), T->getSeparationDis());
134 
135 }
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(), cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, oomph::QuadTreeNames::S, separationDis_, sinterAdhesion_, surfTension_, and unloadingStiffnessMax_.

◆ read()

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

Reads the species properties from an input stream.

Parameters
[in]isinput stream (typically the restart file)
89 {
90  std::string dummy;
91  is >> dummy >> loadingStiffness_;
92  is >> dummy >> unloadingStiffnessMax_;
93  is >> dummy >> cohesionStiffness_;
94  is >> dummy >> penetrationDepthMax_;
95  is >> dummy >> dissipation_;
96  is >> dummy >> sinterAdhesion_;
97  is >> dummy >> complianceZero_;
98  is >> dummy >> surfTension_;
99  is >> dummy >> sinterRate_;
100  is >> dummy >> fluidity;
101  is >> dummy >> separationDis_;
102  unsigned type;
103  is >> dummy >> type;
104 
106 }
SINTER_APPROACH
Definition: SinterLinNormalSpecies.h:19
type
Definition: compute_granudrum_aor.py:141
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, oomph::Global_string_for_annotation::string(), surfTension_, compute_granudrum_aor::type, and unloadingStiffnessMax_.

◆ setCohesionStiffness()

void SinterLinNormalSpecies::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.
210 {
211  cohesionStiffness_ = cohesionStiffness;
212 }

References cohesionStiffness_.

Referenced by setPlasticParameters().

◆ setCollisionTimeAndRestitutionCoefficient()

void SinterLinNormalSpecies::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?))
385 {
386  if (eps == 0.0)
387  {
389  dissipation_ = std::sqrt(2.0 * mass * loadingStiffness_);
390  }
391  else
392  {
393  dissipation_ = -mass / tc * std::log(eps);
395  .5 * mass * (mathsFunc::square(constants::pi / tc) + mathsFunc::square(dissipation_ / mass));
396  }
398 }
double eps
Definition: crbond_bessel.cc:24
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 log(const bfloat16 &a)
Definition: BFloat16.h:618

References dissipation_, CRBond_Bessel::eps, loadingStiffness_, Eigen::bfloat16_impl::log(), constants::pi, sqrt(), mathsFunc::square(), and unloadingStiffnessMax_.

◆ setComplianceZero()

void SinterLinNormalSpecies::setComplianceZero ( Mdouble  complianceZero)

sets the instantaneous compliance (compliance zero)

275 {
276  if (complianceZero < 0)
277  {
278  logger(ERROR, "complianceZero(%)", complianceZero);
279  }
280  complianceZero_ = complianceZero;
281 }
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ ERROR

References complianceZero_, ERROR, and logger.

◆ setDissipation()

void SinterLinNormalSpecies::setDissipation ( Mdouble  dissipation)

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

should be non-negative

Parameters
[in]dissipationthe linear dissipation coefficient of the linear plastic-viscoelastic normal force.
239 {
240  if (dissipation < 0)
241  {
242  logger(ERROR, "setDissipation(%)", dissipation);
243  exit(-1);
244  }
245  dissipation_ = dissipation;
246 }

References dissipation_, ERROR, and logger.

Referenced by setLoadingStiffnessAndDissipation().

◆ setFluidity()

void SinterLinNormalSpecies::setFluidity ( Mdouble  complianceOne)

sets the fluidity (inverse of viscosity).

293 {
294  if (complianceOne < 0)
295  {
296  logger(ERROR, "ComplianceOne(%)", complianceOne);
297  }
298  fluidity = complianceOne;
299 }

References ERROR, fluidity, and logger.

◆ setLoadingStiffness()

void SinterLinNormalSpecies::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.
194 {
195  loadingStiffness_ = loadingStiffness;
196 }

References loadingStiffness_.

Referenced by setLoadingStiffnessAndDissipation(), and setPlasticParameters().

◆ setLoadingStiffnessAndDissipation()

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

Allows the spring and dissipation constants to be changed simultaneously.

250 {
251  setLoadingStiffness(new_.k);
252  setDissipation(new_.disp);
253 }
void setDissipation(Mdouble dissipation)
Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:238
void setLoadingStiffness(Mdouble loadingStiffness)
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:193
Mdouble k
Definition: FormulaHelpers.h:18
Mdouble disp
Definition: FormulaHelpers.h:19

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

◆ setPenetrationDepthMax()

void SinterLinNormalSpecies::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.
218 {
219  penetrationDepthMax_ = penetrationDepthMax;
220 }

References penetrationDepthMax_.

Referenced by setPlasticParameters().

◆ setPlasticParameters()

void SinterLinNormalSpecies::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.
145 {
146  if (loadingStiffness <= 0 || unloadingStiffnessMax < loadingStiffness || cohesionStiffness < 0 ||
147  penetrationDepthMax < 0)
148  {
149  std::cerr << "Error: arguments of setPlasticParameters do not make sense" << std::endl;
150  exit(-1);
151  }
152  setLoadingStiffness(loadingStiffness);
153  setUnloadingStiffnessMax(unloadingStiffnessMax);
154  setCohesionStiffness(cohesionStiffness);
155  setPenetrationDepthMax(penetrationDepthMax);
156 }
void setCohesionStiffness(Mdouble cohesionStiffness)
Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:209
void setUnloadingStiffnessMax(Mdouble unloadingStiffnessMax)
Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:201
void setPenetrationDepthMax(Mdouble penetrationDepthMax)
Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:217

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

◆ setRestitutionCoefficient()

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

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

422 {
423  if (getConstantRestitution()) mass = 1;
424  if (eps == 0.0) {
425  dissipation_ = std::sqrt(2.0 * mass * getLoadingStiffness());
426  } else {
427  const Mdouble logEps = log(eps);
428  dissipation_ = -std::sqrt(2.0 * mass * getLoadingStiffness()
429  / (constants::sqr_pi + mathsFunc::square(logEps))) * logEps;
430  }
431 }
Mdouble getLoadingStiffness() const
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
Definition: SinterLinNormalSpecies.cc:161
const Mdouble sqr_pi
Definition: ExtendedMath.h:25

References dissipation_, CRBond_Bessel::eps, BaseNormalForce::getConstantRestitution(), getLoadingStiffness(), Eigen::bfloat16_impl::log(), constants::sqr_pi, sqrt(), and mathsFunc::square().

◆ setSeparationDis()

void SinterLinNormalSpecies::setSeparationDis ( Mdouble  separationDis)

sets the critical separation distance. This mimics inter-surface forces.

302 {
303  if (separationDis < 0)
304  {
305  logger(ERROR, "SeparationDis(%)", separationDis);
306  }
307  separationDis_ = separationDis;
308 }

References ERROR, logger, and separationDis_.

◆ setSinterAdhesion()

void SinterLinNormalSpecies::setSinterAdhesion ( Mdouble  sinterAdhesion)

Sets sinterAdhesion_.

256 {
257  if (sinterAdhesion < 0)
258  {
259  logger(ERROR, "setSinterAdhesion(%)", sinterAdhesion);
260  exit(-1);
261  }
262  sinterAdhesion_ = sinterAdhesion;
263 }

References ERROR, logger, and sinterAdhesion_.

◆ setSinterRate()

void SinterLinNormalSpecies::setSinterRate ( Mdouble  sinterRate)

Sets sinterRate_.

266 {
267  if (sinterRate < 0)
268  {
269  logger(ERROR, "setSinterRate(%)", sinterRate);
270  }
271  sinterRate_ = sinterRate;
272 }

References ERROR, logger, and sinterRate_.

◆ setSinterType()

void SinterLinNormalSpecies::setSinterType ( SINTER_APPROACH  sinterType)

sets the sintering approach selected.

311 {
312  sinterType_ = sinterType;
314  logger(INFO, "Sintertype set to Frenkel");
316  logger(INFO, "Sintertype set to Three different mechanisms");
317  else
318  logger(ERROR, "Sintertype not understood");
319 }
@ INFO

References ERROR, FRENKEL, INFO, logger, sinterType_, and VISCOELASTIC_CONTACT.

◆ setStiffnessAndRestitutionCoefficient()

void SinterLinNormalSpecies::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}\)
407 {
408  loadingStiffness_ = stiffness;
409  if (eps == 0.0)
410  {
411  dissipation_ = std::sqrt(2.0 * mass * stiffness);
412  }
413  else
414  {
415  dissipation_ =
416  -std::sqrt(2.0 * mass * stiffness / (constants::sqr_pi + mathsFunc::square(log(eps)))) * log(eps);
417  }
419 }

References dissipation_, CRBond_Bessel::eps, loadingStiffness_, Eigen::bfloat16_impl::log(), constants::sqr_pi, sqrt(), mathsFunc::square(), and unloadingStiffnessMax_.

◆ setSurfTension()

void SinterLinNormalSpecies::setSurfTension ( Mdouble  complianceZero)

sets the surface tension.

284 {
285  if (surfTension < 0)
286  {
287  logger(ERROR, "SurfTension(%)", surfTension);
288  }
289  surfTension_ = surfTension;
290 }

References ERROR, logger, and surfTension_.

◆ setUnloadingStiffnessMax()

void SinterLinNormalSpecies::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.
202 {
203  unloadingStiffnessMax_ = unloadingStiffnessMax;
204 }

References unloadingStiffnessMax_.

Referenced by setPlasticParameters().

◆ write()

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

Writes the species properties to an output stream.

Parameters
[out]osoutput stream (typically the restart file)
70 {
71  os << " loadingStiffness " << loadingStiffness_;
72  os << " maxUnloadingStiffness " << unloadingStiffnessMax_;
73  os << " cohesionStiffness " << cohesionStiffness_;
74  os << " maxPenetration " << penetrationDepthMax_;
75  os << " dissipation " << dissipation_;
76  os << " sinterAdhesion " << sinterAdhesion_;
77  os << " sinterRate " << sinterRate_;
78  os << " complianceZero " << complianceZero_;
79  os << " surfTension " << surfTension_;
80  os << " complianceOne " << fluidity;
81  os << " separationDis " << separationDis_;
82  os << " sinterType " << (unsigned) sinterType_;
83 }

References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.

Member Data Documentation

◆ cohesionStiffness_

Mdouble SinterLinNormalSpecies::cohesionStiffness_
private

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

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

◆ complianceZero_

Mdouble SinterLinNormalSpecies::complianceZero_
private

Material property. C0 = (1-\nu^2)/E, E: young's Modulus, nu poisson ratio.

Referenced by getComplianceZero(), mix(), read(), setComplianceZero(), SinterLinNormalSpecies(), and write().

◆ dissipation_

◆ fluidity

Mdouble SinterLinNormalSpecies::fluidity
private

Material property, which represents the inverse of viscosity

Referenced by getFluidity(), mix(), read(), setFluidity(), SinterLinNormalSpecies(), and write().

◆ loadingStiffness_

◆ penetrationDepthMax_

Mdouble SinterLinNormalSpecies::penetrationDepthMax_
private

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

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

◆ separationDis_

Mdouble SinterLinNormalSpecies::separationDis_
private

Critical separation distance, to describe inter-surface forces.

Referenced by getSeparationDis(), mix(), read(), setSeparationDis(), SinterLinNormalSpecies(), and write().

◆ sinterAdhesion_

Mdouble SinterLinNormalSpecies::sinterAdhesion_
private

Determines sinter adhesion force fa=sinterAdhesion_*radius in sinter rate: d(delta0)/dt = (fa+fep)/nu

Referenced by getSinterAdhesion(), mix(), read(), setSinterAdhesion(), SinterLinNormalSpecies(), and write().

◆ sinterRate_

Mdouble SinterLinNormalSpecies::sinterRate_
private

Determines sinter rate: d(delta0)/dt = (fa+fep)/nu

Referenced by getSinterRate(), read(), setSinterRate(), SinterLinNormalSpecies(), and write().

◆ sinterType_

SINTER_APPROACH SinterLinNormalSpecies::sinterType_
private

Type of sintering.

Referenced by getSinterType(), read(), setSinterType(), SinterLinNormalSpecies(), and write().

◆ surfTension_

Mdouble SinterLinNormalSpecies::surfTension_
private

Material property.

Referenced by getSurfTension(), mix(), read(), setSurfTension(), SinterLinNormalSpecies(), and write().

◆ unloadingStiffnessMax_

Mdouble SinterLinNormalSpecies::unloadingStiffnessMax_
private

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