|
SinterNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model). More...
#include <SinterNormalSpecies.h>
Public Types | |
typedef SinterInteraction | InteractionType |
The correct Interaction type for this FrictionForceSpecies. More... | |
Public Member Functions | |
SinterNormalSpecies () | |
The default constructor. More... | |
SinterNormalSpecies (const SinterNormalSpecies &p) | |
The default copy constructor. More... | |
~SinterNormalSpecies () | |
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 (SinterNormalSpecies *S, SinterNormalSpecies *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... | |
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... | |
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 | setInverseSinterViscosity (Mdouble inverseSinterViscosity) |
Sets inverseSinterViscosity_. More... | |
Mdouble | getInverseSinterViscosity () const |
Accesses inverseSinterViscosity_. 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... | |
void | setSinterForceAndTime (Mdouble adhesionForce, Mdouble sinterTime, Mdouble radius) |
void | setParhamiMcKeeping (Mdouble alpha, Mdouble beta, Mdouble atomicVolume, Mdouble surfaceEnergy, Mdouble thicknessDiffusion, Mdouble activationEnergy, Mdouble temperature) |
Sets the sinterAdhesion_ and inverseSinterViscosity_ based on the Parhami-McKeeping parameters. More... | |
void | setSinterRate (Mdouble sinterRate) |
Sets sinterRate_. More... | |
void | setSinterType (SINTERTYPE sinterType) |
Sets sinterRate_. More... | |
Mdouble | getSinterRate () const |
Accesses sinterRate_. More... | |
SINTERTYPE | getSinterType () const |
std::function< double(double temperature)> | getTemperatureDependentSinterRate () const |
double | getTemperatureDependentSinterRate (double temperature) const |
void | setTemperatureDependentSinterRate (std::function< double(double temperature)> temperatureDependentSinterRate) |
void | setComplianceZero (Mdouble complianceZero) |
Mdouble | getComplianceZero () const |
void | setSurfTension (Mdouble complianceZero) |
Mdouble | getSurfTension () const |
void | setConstantC1 (Mdouble constantC1_) |
Mdouble | getConstantC1 () const |
void | setSeparationDis (Mdouble separationDis) |
Mdouble | getSeparationDis () 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 | inverseSinterViscosity_ |
Mdouble | sinterRate_ |
Mdouble | complianceZero_ |
Mdouble | surfTension_ |
Mdouble | constantC1_ |
Mdouble | separationDis_ |
SINTERTYPE | sinterType_ |
sinterType options determin how the rate of sintering, d(equilibriumOverlap)/dt is computed PARHAMI_MCKEEPING: sinter rate given by (sinterAdhesion+normalForce)/sinterViscosity CONSTANT_RATE: sinter rate given by sinterRate More... | |
std::function< double(double temperature)> | temperatureDependentSinterRate_ |
SinterNormalSpecies 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.
The correct Interaction type for this FrictionForceSpecies.
SinterNormalSpecies::SinterNormalSpecies | ( | ) |
The default constructor.
References cohesionStiffness_, complianceZero_, constantC1_, dissipation_, inverseSinterViscosity_, loadingStiffness_, PARHAMI_MCKEEPING, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
SinterNormalSpecies::SinterNormalSpecies | ( | const SinterNormalSpecies & | p | ) |
The default copy constructor.
[in] | the | species that is copied |
References cohesionStiffness_, complianceZero_, constantC1_, dissipation_, inverseSinterViscosity_, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
SinterNormalSpecies::~SinterNormalSpecies | ( | ) |
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_, ERROR, logger, constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.
std::string SinterNormalSpecies::getBaseName | ( | ) | const |
Mdouble SinterNormalSpecies::getCohesionStiffness | ( | ) | const |
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
References cohesionStiffness_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
Calculates collision time for two copies of a particle of given disp, k, mass.
References dissipation_, ERROR, loadingStiffness_, logger, constants::pi, and mathsFunc::square().
Mdouble SinterNormalSpecies::getComplianceZero | ( | ) | const |
References complianceZero_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
Mdouble SinterNormalSpecies::getConstantC1 | ( | ) | const |
References constantC1_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
Mdouble SinterNormalSpecies::getDissipation | ( | ) | const |
Allows the normal dissipation to be accessed.
References dissipation_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
Mdouble SinterNormalSpecies::getInverseSinterViscosity | ( | ) | const |
Accesses inverseSinterViscosity_.
References inverseSinterViscosity_.
Referenced by mix(), setParhamiMcKeeping(), and setSinterForceAndTime().
Mdouble SinterNormalSpecies::getLoadingStiffness | ( | ) | const |
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
References loadingStiffness_.
Referenced by SinterInteraction::computeNormalForce(), SinterInteraction::getElasticEnergy(), SinterInteraction::getUnloadingStiffness(), and mix().
Mdouble SinterNormalSpecies::getPenetrationDepthMax | ( | ) | const |
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
References penetrationDepthMax_.
Referenced by SinterInteraction::computeNormalForce(), SinterInteraction::getUnloadingStiffness(), and mix().
Mdouble SinterNormalSpecies::getSeparationDis | ( | ) | const |
References separationDis_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
Mdouble SinterNormalSpecies::getSinterAdhesion | ( | ) | const |
Accesses sinterAdhesion_.
References sinterAdhesion_.
Referenced by SinterInteraction::computeNormalForce(), mix(), setParhamiMcKeeping(), and setSinterForceAndTime().
Mdouble SinterNormalSpecies::getSinterRate | ( | ) | const |
Accesses sinterRate_.
References sinterRate_.
Referenced by SinterInteraction::computeNormalForce().
SINTERTYPE SinterNormalSpecies::getSinterType | ( | ) | const |
References sinterType_.
Referenced by SinterInteraction::computeNormalForce().
Mdouble SinterNormalSpecies::getSurfTension | ( | ) | const |
References surfTension_.
Referenced by SinterInteraction::computeNormalForce(), and mix().
std::function< double(double temperature)> SinterNormalSpecies::getTemperatureDependentSinterRate | ( | ) | const |
References temperatureDependentSinterRate_.
Referenced by SinterInteraction::computeNormalForce().
References temperatureDependentSinterRate_.
Mdouble SinterNormalSpecies::getUnloadingStiffnessMax | ( | ) | const |
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
References unloadingStiffnessMax_.
Referenced by SinterInteraction::computeNormalForce(), SinterInteraction::getUnloadingStiffness(), and mix().
void SinterNormalSpecies::mix | ( | SinterNormalSpecies * | S, |
SinterNormalSpecies * | 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_, constantC1_, dissipation_, getCohesionStiffness(), getComplianceZero(), getConstantC1(), getDissipation(), getInverseSinterViscosity(), getLoadingStiffness(), getPenetrationDepthMax(), getSeparationDis(), getSinterAdhesion(), getSurfTension(), getUnloadingStiffnessMax(), inverseSinterViscosity_, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, surfTension_, and unloadingStiffnessMax_.
void SinterNormalSpecies::read | ( | std::istream & | is | ) |
Reads the species properties from an input stream.
[in] | is | input stream (typically the restart file) |
References cohesionStiffness_, complianceZero_, constantC1_, dissipation_, inverseSinterViscosity_, loadingStiffness_, penetrationDepthMax_, separationDis_, sinterAdhesion_, sinterRate_, sinterType_, surfTension_, and unloadingStiffnessMax_.
void SinterNormalSpecies::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 SinterNormalSpecies::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_, loadingStiffness_, mathsFunc::log(), constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.
void SinterNormalSpecies::setComplianceZero | ( | Mdouble | complianceZero | ) |
References complianceZero_, ERROR, and logger.
void SinterNormalSpecies::setConstantC1 | ( | Mdouble | constantC1_ | ) |
References constantC1_, ERROR, and logger.
void SinterNormalSpecies::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 SinterNormalSpecies::setInverseSinterViscosity | ( | Mdouble | inverseSinterViscosity | ) |
Sets inverseSinterViscosity_.
should be non-negative
[in] | the | linear dissipation coefficient of the linear plastic-viscoelastic normal force. |
References ERROR, inverseSinterViscosity_, logger, PARHAMI_MCKEEPING, and setSinterType().
Referenced by setParhamiMcKeeping(), and setSinterForceAndTime().
void SinterNormalSpecies::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 SinterNormalSpecies::setLoadingStiffnessAndDissipation | ( | helpers::KAndDisp | new_ | ) |
Allows the spring and dissipation constants to be changed simultaneously.
[in] | new_ | a helper struct containing both the loading stiffness and the disssipation coefficient. |
References helpers::KAndDisp::disp, helpers::KAndDisp::k, setDissipation(), and setLoadingStiffness().
void SinterNormalSpecies::setParhamiMcKeeping | ( | Mdouble | alpha, |
Mdouble | beta, | ||
Mdouble | atomicVolume, | ||
Mdouble | surfaceEnergy, | ||
Mdouble | thicknessDiffusion, | ||
Mdouble | activationEnergy, | ||
Mdouble | temperature | ||
) |
Sets the sinterAdhesion_ and inverseSinterViscosity_ based on the Parhami-McKeeping parameters.
should be non-negative
[in] | the | linear dissipation coefficient of the linear plastic-viscoelastic normal force. |
References mathsFunc::beta(), mathsFunc::exp(), getInverseSinterViscosity(), getSinterAdhesion(), INFO, logger, PARHAMI_MCKEEPING, constants::pi, setInverseSinterViscosity(), setSinterAdhesion(), and setSinterType().
void SinterNormalSpecies::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 SinterNormalSpecies::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 ERROR, logger, setCohesionStiffness(), setLoadingStiffness(), setPenetrationDepthMax(), and setUnloadingStiffnessMax().
void SinterNormalSpecies::setSeparationDis | ( | Mdouble | separationDis | ) |
References ERROR, logger, and separationDis_.
void SinterNormalSpecies::setSinterAdhesion | ( | Mdouble | sinterAdhesion | ) |
Sets sinterAdhesion_.
should be non-negative
[in] | sinterAdhesion_ |
References ERROR, logger, and sinterAdhesion_.
Referenced by setParhamiMcKeeping(), and setSinterForceAndTime().
void SinterNormalSpecies::setSinterForceAndTime | ( | Mdouble | adhesionForce, |
Mdouble | sinterTime, | ||
Mdouble | radius | ||
) |
References getInverseSinterViscosity(), getSinterAdhesion(), INFO, logger, PARHAMI_MCKEEPING, setInverseSinterViscosity(), setSinterAdhesion(), and sinterType_.
void SinterNormalSpecies::setSinterRate | ( | Mdouble | sinterRate | ) |
Sets sinterRate_.
should be non-negative
[in] | sinterAdhesion_ |
References ERROR, logger, and sinterRate_.
void SinterNormalSpecies::setSinterType | ( | SINTERTYPE | sinterType | ) |
Sets sinterRate_.
should be non-negative
[in] | sinterAdhesion_ |
References CONSTANT_RATE, ERROR, INFO, logger, PARHAMI_MCKEEPING, REGIME_SINTERING, sinterType_, and TEMPERATURE_DEPENDENT_FRENKEL.
Referenced by setInverseSinterViscosity(), and setParhamiMcKeeping().
void SinterNormalSpecies::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_, loadingStiffness_, mathsFunc::log(), constants::sqr_pi, mathsFunc::square(), and unloadingStiffnessMax_.
void SinterNormalSpecies::setSurfTension | ( | Mdouble | complianceZero | ) |
References ERROR, logger, and surfTension_.
void SinterNormalSpecies::setTemperatureDependentSinterRate | ( | std::function< double(double temperature)> | temperatureDependentSinterRate | ) |
References temperatureDependentSinterRate_.
void SinterNormalSpecies::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 SinterNormalSpecies::write | ( | std::ostream & | os | ) | const |
Writes the species properties to an output stream.
[out] | output | stream (typically the restart file) |
References cohesionStiffness_, complianceZero_, constantC1_, dissipation_, inverseSinterViscosity_, 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(), SinterNormalSpecies(), and write().
|
private |
Compliance 0, C_0, corresponds to the inverse of stiffness at the instantaneous time.
Referenced by getComplianceZero(), mix(), read(), setComplianceZero(), SinterNormalSpecies(), and write().
|
private |
Material constant
Referenced by getConstantC1(), mix(), read(), setConstantC1(), SinterNormalSpecies(), and write().
|
private |
linear dissipation coefficient
Referenced by computeTimeStep(), getCollisionTime(), getDissipation(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setDissipation(), setStiffnessAndRestitutionCoefficient(), SinterNormalSpecies(), and write().
|
private |
Determines sinter viscosity nu = contactRadius^4/inverseSinterViscosity_ in sinter rate: d(delta0)/dt = (fa+fep)/nu
Referenced by getInverseSinterViscosity(), mix(), read(), setInverseSinterViscosity(), SinterNormalSpecies(), and write().
|
private |
(normal) spring constant (k_1)
Referenced by getCollisionTime(), getLoadingStiffness(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setLoadingStiffness(), setStiffnessAndRestitutionCoefficient(), SinterNormalSpecies(), 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(), SinterNormalSpecies(), and write().
|
private |
Separation distance comes from the fracture theory.
Referenced by getSeparationDis(), mix(), read(), setSeparationDis(), SinterNormalSpecies(), 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(), SinterNormalSpecies(), and write().
|
private |
Determines sinter rate: d(delta0)/dt = (fa+fep)/nu
Referenced by getSinterRate(), read(), setSinterRate(), SinterNormalSpecies(), and write().
|
private |
sinterType options determin how the rate of sintering, d(equilibriumOverlap)/dt is computed PARHAMI_MCKEEPING: sinter rate given by (sinterAdhesion+normalForce)/sinterViscosity CONSTANT_RATE: sinter rate given by sinterRate
Referenced by getSinterType(), read(), setSinterForceAndTime(), setSinterType(), SinterNormalSpecies(), and write().
|
private |
Material constant
Referenced by getSurfTension(), mix(), read(), setSurfTension(), SinterNormalSpecies(), and write().
|
private |
Referenced by getTemperatureDependentSinterRate(), and setTemperatureDependentSinterRate().
|
private |
the maximum elastic constant (k_2^max) for plastic deformations
Referenced by computeTimeStep(), getUnloadingStiffnessMax(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setStiffnessAndRestitutionCoefficient(), setUnloadingStiffnessMax(), SinterNormalSpecies(), and write().