![]() |
|
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 | |
| BaseSpecies * | getBaseSpecies () 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... | |
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.
The correct Interaction type for this FrictionForceSpecies.
| SinterLinNormalSpecies::SinterLinNormalSpecies | ( | ) |
The default constructor.
References cohesionStiffness_, complianceZero_, dissipation_, fluidity, FRENKEL, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
| SinterLinNormalSpecies::SinterLinNormalSpecies | ( | const SinterLinNormalSpecies & | p | ) |
The default copy constructor.
| [in] | SinterLinNormalSpecies | the species that is copied |
References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, p, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
| SinterLinNormalSpecies::~SinterLinNormalSpecies | ( | ) |
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
| [in] | mass | the optimal time step is computed to resolve a collision of two particles of this mass. |
References dissipation_, BaseNormalForce::getConstantRestitution(), constants::pi, sqrt(), mathsFunc::square(), and unloadingStiffnessMax_.
| std::string SinterLinNormalSpecies::getBaseName | ( | ) | const |
| Mdouble SinterLinNormalSpecies::getCohesionStiffness | ( | ) | const |
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
References cohesionStiffness_.
Referenced by SinterLinInteraction::computeNormalForce().
Calculates collision time for two copies of a particle of given disp, k, mass.
References dissipation_, e(), loadingStiffness_, constants::pi, sqrt(), and mathsFunc::square().
Referenced by getRestitutionCoefficient().
| Mdouble SinterLinNormalSpecies::getComplianceZero | ( | ) | const |
Accesses the instantaneous compliance (compliance zero)
References complianceZero_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getDissipation | ( | ) | const |
Allows the normal dissipation to be accessed.
References dissipation_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getFluidity | ( | ) | const |
accesses the fluidity (inverse of viscosity).
References fluidity.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getLoadingStiffness | ( | ) | const |
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
References loadingStiffness_.
Referenced by SinterLinInteraction::computeNormalForce(), SinterLinInteraction::getElasticEnergy(), SinterLinInteraction::getUnloadingStiffness(), and setRestitutionCoefficient().
| Mdouble SinterLinNormalSpecies::getPenetrationDepthMax | ( | ) | const |
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
References penetrationDepthMax_.
Referenced by SinterLinInteraction::computeNormalForce(), and SinterLinInteraction::getUnloadingStiffness().
Calculates restitution coefficient for two copies of given disp, k, mass.
References dissipation_, Eigen::bfloat16_impl::exp(), getCollisionTime(), and BaseNormalForce::getConstantRestitution().
| Mdouble SinterLinNormalSpecies::getSeparationDis | ( | ) | const |
accesses the critical separation distance. This mimics inter-surface forces.
References separationDis_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getSinterAdhesion | ( | ) | const |
Accesses sinterAdhesion_.
References sinterAdhesion_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getSinterRate | ( | ) | const |
Accesses sinterRate_.
References sinterRate_.
Referenced by SinterLinInteraction::computeNormalForce().
| SINTER_APPROACH SinterLinNormalSpecies::getSinterType | ( | ) | const |
References sinterType_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getSurfTension | ( | ) | const |
accesses the surface tension.
References surfTension_.
Referenced by SinterLinInteraction::computeNormalForce().
| Mdouble SinterLinNormalSpecies::getUnloadingStiffnessMax | ( | ) | const |
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
References unloadingStiffnessMax_.
Referenced by SinterLinInteraction::computeNormalForce(), and SinterLinInteraction::getUnloadingStiffness().
| 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.
| [in] | S,T | the two species whose properties are mixed to create the new species |
References BaseSpecies::average(), cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, oomph::QuadTreeNames::S, separationDis_, sinterAdhesion_, surfTension_, and unloadingStiffnessMax_.
| void SinterLinNormalSpecies::read | ( | std::istream & | is | ) |
Reads the species properties from an input stream.
| [in] | is | input stream (typically the restart file) |
References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, oomph::Global_string_for_annotation::string(), surfTension_, compute_granudrum_aor::type, and unloadingStiffnessMax_.
| void SinterLinNormalSpecies::setCohesionStiffness | ( | Mdouble | cohesionStiffness | ) |
Sets the cohesive stiffness of the linear plastic-viscoelastic normal force.
| [in] | cohesionStiffness | the cohesive stiffness of the linear plastic-viscoelastic normal force. |
References cohesionStiffness_.
Referenced by setPlasticParameters().
| 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
| [in] | tc | collision time |
| [in] | eps | restitution coefficient |
| [in] | mass | effective particle mass, \(\frac{2}{1/m1+1/m2}\) |
References dissipation_, CRBond_Bessel::eps, loadingStiffness_, Eigen::bfloat16_impl::log(), constants::pi, sqrt(), mathsFunc::square(), and unloadingStiffnessMax_.
| void SinterLinNormalSpecies::setComplianceZero | ( | Mdouble | complianceZero | ) |
sets the instantaneous compliance (compliance zero)
References complianceZero_, ERROR, and logger.
| void SinterLinNormalSpecies::setDissipation | ( | Mdouble | dissipation | ) |
Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force.
should be non-negative
| [in] | dissipation | the linear dissipation coefficient of the linear plastic-viscoelastic normal force. |
References dissipation_, ERROR, and logger.
Referenced by setLoadingStiffnessAndDissipation().
| void SinterLinNormalSpecies::setFluidity | ( | Mdouble | complianceOne | ) |
| void SinterLinNormalSpecies::setLoadingStiffness | ( | Mdouble | loadingStiffness | ) |
Sets the loading stiffness of the linear plastic-viscoelastic normal force.
| [in] | loadingStiffness | the loading stiffness of the linear plastic-viscoelastic normal force. |
References loadingStiffness_.
Referenced by setLoadingStiffnessAndDissipation(), and setPlasticParameters().
| void SinterLinNormalSpecies::setLoadingStiffnessAndDissipation | ( | helpers::KAndDisp | new_ | ) |
Allows the spring and dissipation constants to be changed simultaneously.
References helpers::KAndDisp::disp, helpers::KAndDisp::k, setDissipation(), and setLoadingStiffness().
| void SinterLinNormalSpecies::setPenetrationDepthMax | ( | Mdouble | penetrationDepthMax | ) |
Sets the maximum penetration depth of the linear plastic-viscoelastic normal force.
| [in] | penetrationDepthMax | the maximum penetration depth of the linear plastic-viscoelastic normal force. |
References penetrationDepthMax_.
Referenced by setPlasticParameters().
| void SinterLinNormalSpecies::setPlasticParameters | ( | Mdouble | loadingStiffness, |
| Mdouble | unloadingStiffnessMax, | ||
| Mdouble | cohesionStiffness, | ||
| Mdouble | penetrationDepthMax | ||
| ) |
Sets all parameters of the linear plastic-viscoelastic normal force at once.
| [in] | loadingStiffness | the loading stiffness of the linear plastic-viscoelastic normal force. |
| [in] | unloadingStiffnessMax | the maximum unloading stiffness of the linear plastic-viscoelastic normal force. |
| [in] | cohesionStiffness | the cohesive stiffness of the linear plastic-viscoelastic normal force. |
| [in] | penetrationDepthMax | the maximum penetration depth of the linear plastic-viscoelastic normal force. |
References setCohesionStiffness(), setLoadingStiffness(), setPenetrationDepthMax(), and setUnloadingStiffnessMax().
Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.
References dissipation_, CRBond_Bessel::eps, BaseNormalForce::getConstantRestitution(), getLoadingStiffness(), Eigen::bfloat16_impl::log(), constants::sqr_pi, sqrt(), and mathsFunc::square().
| void SinterLinNormalSpecies::setSeparationDis | ( | Mdouble | separationDis | ) |
sets the critical separation distance. This mimics inter-surface forces.
References ERROR, logger, and separationDis_.
| void SinterLinNormalSpecies::setSinterAdhesion | ( | Mdouble | sinterAdhesion | ) |
| void SinterLinNormalSpecies::setSinterRate | ( | Mdouble | sinterRate | ) |
| void SinterLinNormalSpecies::setSinterType | ( | SINTER_APPROACH | sinterType | ) |
sets the sintering approach selected.
References ERROR, FRENKEL, INFO, logger, sinterType_, and VISCOELASTIC_CONTACT.
| 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
| [in] | stiffness | stiffness |
| [in] | eps | restitution coefficient |
| [in] | mass | effective particle mass, \(\frac{2}{1/m1+1/m2}\) |
References dissipation_, CRBond_Bessel::eps, loadingStiffness_, Eigen::bfloat16_impl::log(), constants::sqr_pi, sqrt(), mathsFunc::square(), and unloadingStiffnessMax_.
| void SinterLinNormalSpecies::setSurfTension | ( | Mdouble | complianceZero | ) |
| void SinterLinNormalSpecies::setUnloadingStiffnessMax | ( | Mdouble | unloadingStiffnessMax | ) |
Sets the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
| [in] | unloadingStiffnessMax | the maximum unloading stiffness of the linear plastic-viscoelastic normal force. |
References unloadingStiffnessMax_.
Referenced by setPlasticParameters().
| void SinterLinNormalSpecies::write | ( | std::ostream & | os | ) | const |
Writes the species properties to an output stream.
| [out] | os | output stream (typically the restart file) |
References cohesionStiffness_, complianceZero_, dissipation_, fluidity, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
|
private |
the adhesive spring constant (k^c) for plastic deformations
Referenced by getCohesionStiffness(), mix(), read(), setCohesionStiffness(), SinterLinNormalSpecies(), and write().
|
private |
Material property. C0 = (1-\nu^2)/E, E: young's Modulus, nu poisson ratio.
Referenced by getComplianceZero(), mix(), read(), setComplianceZero(), SinterLinNormalSpecies(), and write().
|
private |
linear dissipation coefficient
Referenced by computeTimeStep(), getCollisionTime(), getDissipation(), getRestitutionCoefficient(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setDissipation(), setRestitutionCoefficient(), setStiffnessAndRestitutionCoefficient(), SinterLinNormalSpecies(), and write().
|
private |
Material property, which represents the inverse of viscosity
Referenced by getFluidity(), mix(), read(), setFluidity(), SinterLinNormalSpecies(), and write().
|
private |
(normal) spring constant (k_1)
Referenced by getCollisionTime(), getLoadingStiffness(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setLoadingStiffness(), setStiffnessAndRestitutionCoefficient(), SinterLinNormalSpecies(), and write().
|
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().
|
private |
Critical separation distance, to describe inter-surface forces.
Referenced by getSeparationDis(), mix(), read(), setSeparationDis(), SinterLinNormalSpecies(), and write().
|
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().
|
private |
Determines sinter rate: d(delta0)/dt = (fa+fep)/nu
Referenced by getSinterRate(), read(), setSinterRate(), SinterLinNormalSpecies(), and write().
|
private |
Type of sintering.
Referenced by getSinterType(), read(), setSinterType(), SinterLinNormalSpecies(), and write().
|
private |
Material property.
Referenced by getSurfTension(), mix(), read(), setSurfTension(), SinterLinNormalSpecies(), and write().
|
private |
the maximum elastic constant (k_2^max) for plastic deformations
Referenced by computeTimeStep(), getUnloadingStiffnessMax(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setStiffnessAndRestitutionCoefficient(), setUnloadingStiffnessMax(), SinterLinNormalSpecies(), and write().