ESyS-Particle
4.0.1
|
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 (CParticle *, CParticle *) | |
CFrictionInteraction (CParticle *, CParticle *, const CFrictionIGP &) | |
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) |
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 | |
double | m_r0 |
equilibrium distance | |
double | m_mu |
coefficient of friction | |
double | m_ks |
shear stiffness (Cundall) | |
double | m_dt |
time step | |
Vec3 | m_Ffric |
current frictional force | |
Vec3 | m_force_deficit |
difference between fric. force & force necessary for slip | |
Vec3 | m_cpos |
contact position | |
Vec3 | m_normal_force |
current normal force | |
bool | m_is_slipping |
static/dynamic status of the interaction | |
bool | m_is_touching |
contact status of the interaction | |
double | m_E_diss |
dissipated energy | |
bool | m_scaling |
scaling k with particle radius | |
Friends | |
class | TML_PackedMessageInterface |
std::ostream & | operator<< (std::ostream &, const CFrictionInteraction &) |
Frictional+Elastic interaction between particles.
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.
void CFrictionInteraction::calcForces | ( | ) | [virtual] |
Calculate elastic and frictional forces.
Implements APairInteraction.
Reimplemented in CAdhesiveFriction, and CVWFriction.
References CParticle::applyForce(), m_cpos, m_dt, m_E_diss, m_Ffric, m_force_deficit, m_is_slipping, m_is_touching, m_k, m_ks, m_mu, and m_normal_force.
double CFrictionInteraction::Count | ( | ) | const [virtual] |
return 1 if particles are in contact, 0 otherwise
Reimplemented from AInteraction.
References m_is_touching.
Referenced by CVWFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CFractalFriction::getScalarFieldFunction().
pair< bool, double > CFrictionInteraction::getAbsFN | ( | ) | const |
get current normal force
References m_is_touching, and m_normal_force.
Referenced by getCheckedScalarFieldFunction().
double CFrictionInteraction::getAbsForceDeficit | ( | ) | const |
get the force needed to overcome friction and make the interaction slip
References m_force_deficit.
Referenced by getScalarFieldFunction().
pair< bool, double > CFrictionInteraction::getAbsFrictionalForce | ( | ) | const |
get current frictional/stopping force
References m_Ffric.
Referenced by CVWFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CFractalFriction::getCheckedScalarFieldFunction().
pair< bool, double > CFrictionInteraction::getAbsFrictionalStress | ( | ) | const |
get current frictional/stopping stress (f_fric/r^2)
References m_Ffric.
Referenced by getCheckedScalarFieldFunction().
pair< bool, double > CFrictionInteraction::getAbsMuFN | ( | ) | const |
get max. frictional force, i.e. coeff. of friction * normal force
References m_k.
Referenced by CVWFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CFractalFriction::getCheckedScalarFieldFunction().
CFrictionInteraction::CheckedScalarFieldFunction CFrictionInteraction::getCheckedScalarFieldFunction | ( | const string & | name | ) | [static] |
Get the particle member function which returns a checked scalar field of a given name.
name | the name of the field |
Reimplemented in CFractalFriction, and CVWFriction.
References getAbsFN(), getAbsFrictionalForce(), getAbsFrictionalStress(), getAbsMuFN(), getMaxFricStress(), getNormalStress(), and getSlipVelocity().
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 m_k.
Referenced by getCheckedScalarFieldFunction().
pair< bool, double > CFrictionInteraction::getMuEff | ( | const Vec3 & | dir, |
const Vec3 & | norm | ||
) | const |
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 m_mu.
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 m_is_touching, and m_normal_force.
Referenced by getCheckedScalarFieldFunction().
double CFrictionInteraction::getPotentialEnergy | ( | ) | const |
get the potential energy stored in the interaction
References m_k, and m_normal_force.
Referenced by CVWFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CFractalFriction::getScalarFieldFunction().
CFrictionInteraction::ScalarFieldFunction CFrictionInteraction::getScalarFieldFunction | ( | const string & | name | ) | [static] |
Get the particle member function which returns a scalar field of a given name.
name | the name of the field |
Reimplemented in CFractalFriction, and CVWFriction.
References Count(), getAbsForceDeficit(), getDissipatedEnergy(), getPotentialEnergy(), getSlipping(), and getSticking().
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 CVWFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CFractalFriction::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
Referenced by CVWFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CFractalFriction::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 CVWFriction::getScalarFieldFunction(), and getScalarFieldFunction().
CFrictionInteraction::VectorFieldFunction CFrictionInteraction::getVectorFieldFunction | ( | const string & | name | ) | [static] |
Get the particle member function which returns a vector field of a given name.
name | the name of the field |
Reimplemented in CFractalFriction, and CVWFriction.
References getForce(), and getNormalForce().
void CFrictionInteraction::loadRestartData | ( | std::istream & | iStream | ) | [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, and m_scaling.
void CFrictionInteraction::saveRestartData | ( | std::ostream & | oStream | ) | [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, and m_scaling.