|
LinearPlasticViscoelasticNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model). More...
#include <LinearPlasticViscoelasticNormalSpecies.h>
Public Types | |
typedef LinearPlasticViscoelasticInteraction | InteractionType |
The correct Interaction type for this FrictionForceSpecies. More... | |
Public Member Functions | |
LinearPlasticViscoelasticNormalSpecies () | |
The default constructor. More... | |
LinearPlasticViscoelasticNormalSpecies (const LinearPlasticViscoelasticNormalSpecies &p) | |
The default copy constructor. More... | |
~LinearPlasticViscoelasticNormalSpecies () | |
The default destructor. More... | |
void | read (std::istream &is) |
Reads the species properties from an input stream. More... | |
void | write (std::ostream &os) const |
Writes the species properties to an output stream. More... | |
std::string | getBaseName () const |
Used in Species::getName to obtain a unique name for each Species. More... | |
void | mix (LinearPlasticViscoelasticNormalSpecies *S, LinearPlasticViscoelasticNormalSpecies *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... | |
Mdouble | computeBondNumberMax (Mdouble harmonicMeanRadius, Mdouble gravitationalAcceleration) const |
1) Computes the maximum plastic overlap delta_p* = phi*r 2) Computes the overlap at which the maximum adhesive force is generated: delta_c* = delta_p* / (1+k_c/k_2*) 3) Computes the maximum adhesive force f_c* = k_c * delta_c* 4) Computes the maximum bond number Bo* = f_c* / (m*g) More... | |
bool | getDoConstantUnloadingStiffness () const |
void | setDoConstantUnloadingStiffness (bool doConstantUnloadingStiffness) |
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... | |
bool | doConstantUnloadingStiffness_ = false |
LinearPlasticViscoelasticNormalSpecies contains the parameters used to describe a plastic-cohesive normal force (Stefan Ludings plastic-cohesive force model).
See LinearPlasticViscoelasticNormalInteraction::computeForce for a description of the force law.
typedef LinearPlasticViscoelasticInteraction LinearPlasticViscoelasticNormalSpecies::InteractionType |
The correct Interaction type for this FrictionForceSpecies.
LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies | ( | ) |
The default constructor.
References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.
LinearPlasticViscoelasticNormalSpecies::LinearPlasticViscoelasticNormalSpecies | ( | const LinearPlasticViscoelasticNormalSpecies & | p | ) |
The default copy constructor.
[in] | the | species that is copied |
References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.
LinearPlasticViscoelasticNormalSpecies::~LinearPlasticViscoelasticNormalSpecies | ( | ) |
Mdouble LinearPlasticViscoelasticNormalSpecies::computeBondNumberMax | ( | Mdouble | harmonicMeanRadius, |
Mdouble | gravitationalAcceleration | ||
) | const |
1) Computes the maximum plastic overlap delta_p* = phi*r 2) Computes the overlap at which the maximum adhesive force is generated: delta_c* = delta_p* / (1+k_c/k_2*) 3) Computes the maximum adhesive force f_c* = k_c * delta_c* 4) Computes the maximum bond number Bo* = f_c* / (m*g)
References cohesionStiffness_, BaseForce::getBaseSpecies(), BaseNormalForce::getConstantRestitution(), logger, penetrationDepthMax_, and unloadingStiffnessMax_.
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] | the | optimal time step is computed to resolve a collision of two particles of this mass. If constant restitution is enabled, the collision time is mass-independent. |
References dissipation_, BaseNormalForce::getConstantRestitution(), constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.
std::string LinearPlasticViscoelasticNormalSpecies::getBaseName | ( | ) | const |
Mdouble LinearPlasticViscoelasticNormalSpecies::getCohesionStiffness | ( | ) | const |
Returns the cohesive stiffness of the linear plastic-viscoelastic normal force.
References cohesionStiffness_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), and mix().
Calculates collision time for two copies of a particle of given disp, k, mass.
Calculates collision time for two copies of a particle of given disp, k, mass If constant restitution is enabled, the collision time is mass-independent.
References dissipation_, BaseNormalForce::getConstantRestitution(), loadingStiffness_, logger, constants::pi, and mathsFunc::square().
Referenced by getRestitutionCoefficient().
Mdouble LinearPlasticViscoelasticNormalSpecies::getDissipation | ( | ) | const |
Allows the normal dissipation to be accessed.
References dissipation_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), mix(), and SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient().
|
inline |
References doConstantUnloadingStiffness_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce().
Mdouble LinearPlasticViscoelasticNormalSpecies::getLoadingStiffness | ( | ) | const |
Returns the loading stiffness of the linear plastic-viscoelastic normal force.
References loadingStiffness_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getElasticEnergy(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), mix(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), setRestitutionCoefficient(), and ParticleParticleInteractionWithPlasticForces::setupInitialConditions().
Mdouble LinearPlasticViscoelasticNormalSpecies::getPenetrationDepthMax | ( | ) | const |
Returns the maximum penetration depth of the linear plastic-viscoelastic normal force.
References penetrationDepthMax_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), and mix().
Calculates restitution coefficient for two copies of given disp, k, mass.
References dissipation_, mathsFunc::exp(), getCollisionTime(), and BaseNormalForce::getConstantRestitution().
Mdouble LinearPlasticViscoelasticNormalSpecies::getUnloadingStiffnessMax | ( | ) | const |
Returns the maximum unloading stiffness of the linear plastic-viscoelastic normal force.
References unloadingStiffnessMax_.
Referenced by LinearPlasticViscoelasticInteraction::computeNormalForce(), LinearPlasticViscoelasticInteraction::getUnloadingStiffness(), and mix().
void LinearPlasticViscoelasticNormalSpecies::mix | ( | LinearPlasticViscoelasticNormalSpecies * | S, |
LinearPlasticViscoelasticNormalSpecies * | 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_, dissipation_, doConstantUnloadingStiffness_, getCohesionStiffness(), getDissipation(), getLoadingStiffness(), getPenetrationDepthMax(), getUnloadingStiffnessMax(), loadingStiffness_, logger, penetrationDepthMax_, and unloadingStiffnessMax_.
void LinearPlasticViscoelasticNormalSpecies::read | ( | std::istream & | is | ) |
Reads the species properties from an input stream.
[in] | input | stream (typically the restart file) |
References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.
void LinearPlasticViscoelasticNormalSpecies::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(), and ParticleParticleInteractionWithPlasticForces::setupInitialConditions().
void LinearPlasticViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient | ( | Mdouble | tc, |
Mdouble | eps, | ||
Mdouble | mass | ||
) |
Set k, disp such that is matches a given tc and eps for a collision of two different masses. Recall the resitution constant is a function of k, disp and the mass of each particle in the collision See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)
Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m
[in] | tc | collision time |
[in] | eps | restitution coefficient |
[in] | mass | harmonic mean of particle mass, \(\frac{2}{1/m1+1/m2}\) If constant restitution is enabled, the collision time and restitution is mass-independent. |
References dissipation_, BaseNormalForce::getConstantRestitution(), loadingStiffness_, mathsFunc::log(), constants::pi, mathsFunc::square(), and unloadingStiffnessMax_.
void LinearPlasticViscoelasticNormalSpecies::setDissipation | ( | Mdouble | dissipation | ) |
Sets the linear dissipation coefficient of the linear plastic-viscoelastic normal force.
should be non-negative
[in] | the | linear dissipation coefficient of the linear plastic-viscoelastic normal force. |
References dissipation_, and logger.
Referenced by SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), and setLoadingStiffnessAndDissipation().
|
inline |
References doConstantUnloadingStiffness_.
void LinearPlasticViscoelasticNormalSpecies::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 SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), setLoadingStiffnessAndDissipation(), setPlasticParameters(), and ParticleParticleInteractionWithPlasticForces::setupInitialConditions().
void LinearPlasticViscoelasticNormalSpecies::setLoadingStiffnessAndDissipation | ( | helpers::KAndDisp | new_ | ) |
Allows the spring and dissipation constants to be changed simultaneously.
[in] | a | helper struct containing both the loading stiffness and the disssipation coefficient. |
References helpers::KAndDisp::disp, helpers::KAndDisp::k, setDissipation(), and setLoadingStiffness().
void LinearPlasticViscoelasticNormalSpecies::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(), and ParticleParticleInteractionWithPlasticForces::setupInitialConditions().
void LinearPlasticViscoelasticNormalSpecies::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().
Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.
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}\) If constant restitution is enabled, the restitution coefficient is mass-independent. |
References dissipation_, BaseNormalForce::getConstantRestitution(), getLoadingStiffness(), mathsFunc::log(), constants::sqr_pi, and mathsFunc::square().
Referenced by setStiffnessAndRestitutionCoefficient().
void LinearPlasticViscoelasticNormalSpecies::setStiffnessAndRestitutionCoefficient | ( | Mdouble | stiffness, |
Mdouble | eps, | ||
Mdouble | mass | ||
) |
Sets k, disp such that it matches a given tc and eps for a collision of two copies of P.
Sets k, disp such that it matches a given tc and eps for a collision of two copies of P
[in] | stiffness | stiffness |
[in] | eps | restitution coefficient |
[in] | mass | effective particle mass, \(\frac{2}{1/m1+1/m2}\) If constant restitution is enabled, the restitution coefficient is mass-independent. |
References BaseNormalForce::getConstantRestitution(), loadingStiffness_, and setRestitutionCoefficient().
void LinearPlasticViscoelasticNormalSpecies::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(), and ParticleParticleInteractionWithPlasticForces::setupInitialConditions().
void LinearPlasticViscoelasticNormalSpecies::write | ( | std::ostream & | os | ) | const |
Writes the species properties to an output stream.
[out] | output | stream (typically the restart file) |
References cohesionStiffness_, dissipation_, doConstantUnloadingStiffness_, loadingStiffness_, penetrationDepthMax_, and unloadingStiffnessMax_.
|
private |
the adhesive spring constant (k^c) for plastic deformations
Referenced by computeBondNumberMax(), getCohesionStiffness(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setCohesionStiffness(), and write().
|
private |
linear dissipation coefficient
Referenced by computeTimeStep(), getCollisionTime(), getDissipation(), getRestitutionCoefficient(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setDissipation(), setRestitutionCoefficient(), and write().
|
private |
|
private |
(normal) spring constant (k_1)
Referenced by getCollisionTime(), getLoadingStiffness(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setLoadingStiffness(), setStiffnessAndRestitutionCoefficient(), and write().
|
private |
the depth (relative to the normalized radius) at which k_2^max is used (phi_f)
Referenced by computeBondNumberMax(), getPenetrationDepthMax(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setPenetrationDepthMax(), and write().
|
private |
the maximum elastic constant (k_2^max) for plastic deformations
Referenced by computeBondNumberMax(), computeTimeStep(), getUnloadingStiffnessMax(), LinearPlasticViscoelasticNormalSpecies(), mix(), read(), setCollisionTimeAndRestitutionCoefficient(), setUnloadingStiffnessMax(), and write().