|
ESyS-Particle
2.3.4
|
Frictional+Elastic interaction between particles. More...
#include <FrictionInteraction.h>


Public Types | |
| typedef CFrictionIGP | ParameterType |
| typedef double(CFrictionInteraction::* | ScalarFieldFunction) () const |
| typedef std::pair< bool, double >(CFrictionInteraction::* | CheckedScalarFieldFunction) () const |
| typedef Vec3(CFrictionInteraction::* | VectorFieldFunction) () const |
Public Member Functions | |
| CFrictionInteraction () | |
| CFrictionInteraction (CParticle *, CParticle *) | |
| CFrictionInteraction (CParticle *, CParticle *, const CFrictionIGP &) | |
| virtual | ~CFrictionInteraction () |
| virtual void | calcForces () |
| virtual bool | isPersistent () |
| void | setTimeStepSize (double dt) |
| std::pair< bool, double > | getAbsFrictionalForce () const |
| std::pair< bool, double > | getAbsFN () const |
| std::pair< bool, double > | getAbsMuFN () const |
| std::pair< bool, double > | getSlipVelocity () const |
| std::pair< bool, double > | getNormalStress () const |
| std::pair< bool, double > | getMaxFricStress () const |
| std::pair< bool, double > | getAbsFrictionalStress () const |
| double | getAbsForceDeficit () const |
| double | getPotentialEnergy () const |
| double | getSlipping () const |
| double | getSticking () const |
| double | getDissipatedEnergy () const |
| virtual double | Count () const |
| Vec3 | getForce () const |
| Vec3 | getNormalForce () const |
| virtual Vec3 | getPos () const |
| std::pair< bool, double > | getMuEff (const Vec3 &, const Vec3 &) const |
| std::pair< bool, double > | getMuEffXY () const |
| std::pair< bool, double > | getMuEffXZ () const |
| virtual void | saveRestartData (std::ostream &oStream) |
| virtual void | loadRestartData (std::istream &iStream) |
Public Member Functions inherited from APairInteraction | |
| APairInteraction () | |
| APairInteraction (CParticle *, CParticle *) | |
| virtual | ~APairInteraction () |
| const CParticle * | first () const |
| const CParticle * | second () const |
| CParticle * | first () |
| CParticle * | second () |
| pair< int, int > | getPairID () const |
| void | setPP (CParticle *, CParticle *) |
| void | checkIDs () |
| virtual bool | hasTag (int, int) const |
| virtual Vec3 | getPosFirst () const |
| virtual Vec3 | getPosSecond () const |
| esys::lsm::quintuple< Vec3, double, Vec3, double, Vec3 > | getRaw2Data () const |
| template<class TmplParticle > | |
| void | setPP (const vector< TmplParticle * > &pp) |
Public Member Functions inherited from AInteraction | |
| AInteraction () | |
| virtual | ~AInteraction () |
| bool | initialized () const |
| virtual void | calcHeatTrans () |
| virtual void | calcHeatFrict () |
| vector< int > | getAllID () const |
| int | getID () |
| double | Count () const |
Static Public Member Functions | |
| static ScalarFieldFunction | getScalarFieldFunction (const string &) |
| static CheckedScalarFieldFunction | getCheckedScalarFieldFunction (const string &) |
| static VectorFieldFunction | getVectorFieldFunction (const string &) |
| static string | getType () |
Protected Attributes | |
| double | m_k |
| spring constant More... | |
| double | m_r0 |
| equilibrium distance More... | |
| double | m_mu |
| coefficient of friction More... | |
| double | m_ks |
| shear stiffness (Cundall) More... | |
| double | m_dt |
| time step More... | |
| Vec3 | m_Ffric |
| current frictional force More... | |
| Vec3 | m_force_deficit |
| difference between fric. force & force necessary for slip More... | |
| Vec3 | m_cpos |
| contact position More... | |
| Vec3 | m_normal_force |
| current normal force More... | |
| bool | m_is_slipping |
| static/dynamic status of the interaction More... | |
| bool | m_is_touching |
| contact status of the interaction More... | |
| double | m_E_diss |
| dissipated energy More... | |
| bool | m_scaling |
| scaling k with particle radius More... | |
Protected Attributes inherited from APairInteraction | |
| CParticle * | m_p1 |
| CParticle * | m_p2 |
Protected Attributes inherited from AInteraction | |
| vector< int > | m_id |
| id's of the particles involved More... | |
| int | m_iid |
| interaction id More... | |
| bool | m_init |
Friends | |
| class | TML_PackedMessageInterface |
| std::ostream & | operator<< (std::ostream &, const CFrictionInteraction &) |
Frictional+Elastic interaction between particles.
| typedef std::pair<bool,double>(CFrictionInteraction::* CFrictionInteraction::CheckedScalarFieldFunction) () const |
| typedef double(CFrictionInteraction::* CFrictionInteraction::ScalarFieldFunction) () const |
| typedef Vec3(CFrictionInteraction::* CFrictionInteraction::VectorFieldFunction) () const |
| CFrictionInteraction::CFrictionInteraction | ( | ) |
References m_dt, m_E_diss, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, and m_r0.
constructor for CFrictionInteraction without friction parameters, only calls the constructor of APairInteraction with the 2 particle pointers
References m_E_diss, m_is_slipping, and m_is_touching.
| CFrictionInteraction::CFrictionInteraction | ( | CParticle * | p1, |
| CParticle * | p2, | ||
| const CFrictionIGP & | param | ||
| ) |
References CFrictionIGP::dt, CParticle::getDo2dCalculations(), CBasicParticle::getPos(), CBasicParticle::getRad(), CFrictionIGP::k, CFrictionIGP::k_s, m_cpos, m_dt, m_E_diss, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, m_r0, CFrictionIGP::m_scaling, m_scaling, and CFrictionIGP::mu.

|
virtual |
|
virtual |
Calculate elastic and frictional forces.
Implements APairInteraction.
Reimplemented in CVWFriction, and CAdhesiveFriction.
References CParticle::applyForce(), CBasicParticle::getPos(), CBasicParticle::getRad(), CParticle::getVel(), m_cpos, m_dt, m_E_diss, m_Ffric, m_force_deficit, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, m_normal_force, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by CAdhesiveFriction::calcForces().


|
virtual |
return 1 if particles are in contact, 0 otherwise
References m_is_touching.
Referenced by CFractalFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CVWFriction::getScalarFieldFunction().

| pair< bool, double > CFrictionInteraction::getAbsFN | ( | ) | const |
get current normal force
References m_is_touching, m_normal_force, and Vec3::norm().
Referenced by getCheckedScalarFieldFunction().


| double CFrictionInteraction::getAbsForceDeficit | ( | ) | const |
get the force needed to overcome friction and make the interaction slip
References m_force_deficit, and Vec3::norm().
Referenced by getScalarFieldFunction().


| pair< bool, double > CFrictionInteraction::getAbsFrictionalForce | ( | ) | const |
get current frictional/stopping force
References CBasicParticle::getPos(), CBasicParticle::getRad(), m_Ffric, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by CFractalFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CVWFriction::getCheckedScalarFieldFunction().


| pair< bool, double > CFrictionInteraction::getAbsFrictionalStress | ( | ) | const |
get current frictional/stopping stress (f_fric/r^2)
References CBasicParticle::getPos(), CBasicParticle::getRad(), m_Ffric, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by getCheckedScalarFieldFunction().


| pair< bool, double > CFrictionInteraction::getAbsMuFN | ( | ) | const |
get max. frictional force, i.e. coeff. of friction * normal force
References CBasicParticle::getPos(), CBasicParticle::getRad(), m_k, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by CFractalFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CVWFriction::getCheckedScalarFieldFunction().


|
static |
Get the particle member function which returns a checked scalar field of a given name.
| name | the name of the field |
References getAbsFN(), getAbsFrictionalForce(), getAbsFrictionalStress(), getAbsMuFN(), getMaxFricStress(), getMuEffXY(), getMuEffXZ(), getNormalStress(), getSlipVelocity(), and NULL.

| double CFrictionInteraction::getDissipatedEnergy | ( | ) | const |
return the amount of energy dissipated during the last time step
References m_E_diss.
Referenced by getScalarFieldFunction().

| Vec3 CFrictionInteraction::getForce | ( | ) | const |
get net force on particle1 imposed by this interaction. Returns Vec3::ZERO if particles are not in contact.
References m_Ffric, m_is_touching, and m_normal_force.
Referenced by getVectorFieldFunction().

| pair< bool, double > CFrictionInteraction::getMaxFricStress | ( | ) | const |
get max. frictional stress, i.e. coeff. of friction * normal stress
References CBasicParticle::getPos(), CBasicParticle::getRad(), m_k, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by getCheckedScalarFieldFunction().


Calculate effective coefficient of friction for this interaction for a given direction of the applied shear force. If the effective coefficient of friction is infinite, -1 is returned.
| dir | the direction of the applied shear force |
References CBasicParticle::getPos(), CBasicParticle::getRad(), CParticle::getVel(), m_mu, APairInteraction::m_p1, APairInteraction::m_p2, Vec3::norm(), and Vec3::unit().
Referenced by getMuEffXY(), and getMuEffXZ().


|
inline |
References getMuEff().
Referenced by CFractalFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CVWFriction::getCheckedScalarFieldFunction().


|
inline |
References getMuEff().
Referenced by CFractalFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CVWFriction::getCheckedScalarFieldFunction().


| Vec3 CFrictionInteraction::getNormalForce | ( | ) | const |
If the particles are in contact, get normal force, if not in contact return (0,0,0)
References m_is_touching, and m_normal_force.
Referenced by getVectorFieldFunction().

| pair< bool, double > CFrictionInteraction::getNormalStress | ( | ) | const |
get current normal stress
References CBasicParticle::getRad(), m_is_touching, m_normal_force, APairInteraction::m_p1, APairInteraction::m_p2, and Vec3::norm().
Referenced by getCheckedScalarFieldFunction().


|
inlinevirtual |
Implements APairInteraction.
References m_cpos.
| double CFrictionInteraction::getPotentialEnergy | ( | ) | const |
get the potential energy stored in the interaction
References m_Ffric, m_k, m_ks, and m_normal_force.
Referenced by CFractalFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CVWFriction::getScalarFieldFunction().

|
static |
Get the particle member function which returns a scalar field of a given name.
| name | the name of the field |
References Count(), getAbsForceDeficit(), getDissipatedEnergy(), getPotentialEnergy(), getSlipping(), getSticking(), and NULL.

| double CFrictionInteraction::getSlipping | ( | ) | const |
Get the static/dynamic status of the interaction. Returns 1 for a contact in dynamic friction, 0 for static or no contact
References m_is_slipping.
Referenced by CFractalFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CVWFriction::getScalarFieldFunction().

| pair< bool, double > CFrictionInteraction::getSlipVelocity | ( | ) | const |
get "force deficit", i.e. the force needed to make the contact dynamic
get the slipping velocity, i.e. the absolute value of the tangential part of the relatve particle velocity
References CBasicParticle::getPos(), CBasicParticle::getRad(), CParticle::getVel(), APairInteraction::m_p1, APairInteraction::m_p2, Vec3::norm(), and Vec3::unit().
Referenced by CFractalFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CVWFriction::getCheckedScalarFieldFunction().


| double CFrictionInteraction::getSticking | ( | ) | const |
Get "sticking" contacts, i.e. return 1 if the contact is touching but not slipping, 0 otherwise
References m_is_slipping, and m_is_touching.
Referenced by getScalarFieldFunction(), and CVWFriction::getScalarFieldFunction().

|
inlinestatic |
|
static |
Get the particle member function which returns a vector field of a given name.
| name | the name of the field |
References getForce(), getNormalForce(), and NULL.

|
virtual |
References CBasicParticle::getPos(), CBasicParticle::getRad(), APairInteraction::m_p1, and APairInteraction::m_p2.

|
virtual |
Load restart data from an open istream
| iStream | the input stream |
Reimplemented from APairInteraction.
References m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, m_r0, m_scaling, Vec3::X(), Vec3::Y(), and Vec3::Z().

|
virtual |
Save restart data to an open ostream
| oStream | the output stream |
Reimplemented from APairInteraction.
References m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, m_r0, m_scaling, Vec3::X(), Vec3::Y(), and Vec3::Z().

| void CFrictionInteraction::setTimeStepSize | ( | double | dt | ) |
References m_dt.
|
friend |
|
friend |
|
protected |
contact position
Referenced by calcForces(), CVWFriction::calcForces(), CFractalFriction::CFractalFriction(), CFrictionInteraction(), and getPos().
|
protected |
time step
Referenced by CAdhesiveFriction::CAdhesiveFriction(), calcForces(), CVWFriction::calcForces(), CFractalFriction::CFractalFriction(), CFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), setTimeStepSize(), and TML_PackedMessageInterface::unpack().
|
protected |
dissipated energy
Referenced by calcForces(), CFrictionInteraction(), and getDissipatedEnergy().
|
protected |
current frictional force
Referenced by CAdhesiveFriction::calcForces(), calcForces(), CVWFriction::calcForces(), getAbsFrictionalForce(), getAbsFrictionalStress(), getForce(), getPotentialEnergy(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
protected |
difference between fric. force & force necessary for slip
Referenced by calcForces(), CVWFriction::calcForces(), and getAbsForceDeficit().
|
protected |
static/dynamic status of the interaction
Referenced by calcForces(), CVWFriction::calcForces(), CFrictionInteraction(), getSlipping(), getSticking(), loadRestartData(), and saveRestartData().
|
protected |
contact status of the interaction
Referenced by calcForces(), CVWFriction::calcForces(), CFrictionInteraction(), Count(), getAbsFN(), getForce(), getNormalForce(), getNormalStress(), getSticking(), loadRestartData(), and saveRestartData().
|
protected |
spring constant
Referenced by CAdhesiveFriction::CAdhesiveFriction(), CAdhesiveFriction::calcForces(), calcForces(), CVWFriction::calcForces(), CFractalFriction::CFractalFriction(), CFrictionInteraction(), getAbsMuFN(), getMaxFricStress(), getPotentialEnergy(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
protected |
shear stiffness (Cundall)
Referenced by CAdhesiveFriction::CAdhesiveFriction(), calcForces(), CVWFriction::calcForces(), CFractalFriction::CFractalFriction(), CFrictionInteraction(), getPotentialEnergy(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
protected |
coefficient of friction
Referenced by calcForces(), CVWFriction::calcForces(), CFractalFriction::CFractalFriction(), CFrictionInteraction(), CVWFriction::getCurrentMu(), getMuEff(), loadRestartData(), operator<<(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
protected |
current normal force
Referenced by CAdhesiveFriction::calcForces(), calcForces(), CVWFriction::calcForces(), getAbsFN(), getForce(), getNormalForce(), getNormalStress(), and getPotentialEnergy().
|
protected |
|
protected |
scaling k with particle radius
Referenced by CFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().