ESyS-Particle  4.0.1
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Friends
CFrictionInteraction Class Reference

Frictional+Elastic interaction between particles. More...

#include <FrictionInteraction.h>

Inheritance diagram for CFrictionInteraction:
Inheritance graph
[legend]
Collaboration diagram for CFrictionInteraction:
Collaboration graph
[legend]

List of all members.

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 &)

Detailed Description

Frictional+Elastic interaction between particles.

Author:
Steffen Abe $Revision$ $Date$

Constructor & Destructor Documentation

CFrictionInteraction::CFrictionInteraction ( CParticle p1,
CParticle p2 
)

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.


Member Function Documentation

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.

Here is the call graph for this function:

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().

Here is the caller graph for this function:

pair< bool, double > CFrictionInteraction::getAbsFN ( ) const

get current normal force

References m_is_touching, and m_normal_force.

Referenced by getCheckedScalarFieldFunction().

Here is the caller graph for this function:

get the force needed to overcome friction and make the interaction slip

References m_force_deficit.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

pair< bool, double > CFrictionInteraction::getAbsFrictionalForce ( ) const

get current frictional/stopping force

References m_Ffric.

Referenced by CVWFriction::getCheckedScalarFieldFunction(), getCheckedScalarFieldFunction(), and CFractalFriction::getCheckedScalarFieldFunction().

Here is the caller graph for this function:

pair< bool, double > CFrictionInteraction::getAbsFrictionalStress ( ) const

get current frictional/stopping stress (f_fric/r^2)

References m_Ffric.

Referenced by getCheckedScalarFieldFunction().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

CFrictionInteraction::CheckedScalarFieldFunction CFrictionInteraction::getCheckedScalarFieldFunction ( const string &  name) [static]

Get the particle member function which returns a checked scalar field of a given name.

Parameters:
namethe name of the field

Reimplemented in CFractalFriction, and CVWFriction.

References getAbsFN(), getAbsFrictionalForce(), getAbsFrictionalStress(), getAbsMuFN(), getMaxFricStress(), getNormalStress(), and getSlipVelocity().

Here is the call graph for this function:

return the amount of energy dissipated during the last time step

References m_E_diss.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

pair< bool, double > CFrictionInteraction::getMaxFricStress ( ) const

get max. frictional stress, i.e. coeff. of friction * normal stress

References m_k.

Referenced by getCheckedScalarFieldFunction().

Here is the caller graph for this function:

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.

Parameters:
dirthe direction of the applied shear force
Returns:
the effective coefficient of friction if it is finite, -1 otherwise and -2 for no contact

References m_mu.

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().

Here is the caller graph for this function:

pair< bool, double > CFrictionInteraction::getNormalStress ( ) const

get current normal stress

References m_is_touching, and m_normal_force.

Referenced by getCheckedScalarFieldFunction().

Here is the caller graph for this function:

get the potential energy stored in the interaction

References m_k, and m_normal_force.

Referenced by CVWFriction::getScalarFieldFunction(), getScalarFieldFunction(), and CFractalFriction::getScalarFieldFunction().

Here is the caller graph for this function:

CFrictionInteraction::ScalarFieldFunction CFrictionInteraction::getScalarFieldFunction ( const string &  name) [static]

Get the particle member function which returns a scalar field of a given name.

Parameters:
namethe name of the field

Reimplemented in CFractalFriction, and CVWFriction.

References Count(), getAbsForceDeficit(), getDissipatedEnergy(), getPotentialEnergy(), getSlipping(), and getSticking().

Here is the call graph for this function:

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().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

CFrictionInteraction::VectorFieldFunction CFrictionInteraction::getVectorFieldFunction ( const string &  name) [static]

Get the particle member function which returns a vector field of a given name.

Parameters:
namethe name of the field

Reimplemented in CFractalFriction, and CVWFriction.

References getForce(), and getNormalForce().

Here is the call graph for this function:

void CFrictionInteraction::loadRestartData ( std::istream &  iStream) [virtual]

Load restart data from an open istream

Parameters:
iStreamthe 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

Parameters:
oStreamthe 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.


The documentation for this class was generated from the following files: