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


Public Types | |
| typedef CRotFrictionIGP | ParameterType |
| typedef double(CRotFrictionInteraction::* | ScalarFieldFunction) () const |
| typedef pair< bool, double >(CRotFrictionInteraction::* | CheckedScalarFieldFunction) () const |
| typedef Vec3(CRotFrictionInteraction::* | VectorFieldFunction) () const |
Public Member Functions | |
| CRotFrictionInteraction () | |
| CRotFrictionInteraction (CRotParticle *, CRotParticle *, const CRotFrictionIGP &) | |
| virtual | ~CRotFrictionInteraction () |
| virtual void | calcForces () |
| virtual void | calcSimpleForces () |
| virtual void | calcRigidBodyForces () |
| virtual bool | isPersistent () |
| void | setTimeStepSize (double dt) |
| void | calcNormalForce () |
| double | getAbsForceDeficit () const |
| double | getPotentialEnergy () const |
| double | getSlipping () const |
| double | getSticking () const |
| double | getDissipatedEnergy () const |
| double | getAbsSlip () const |
| virtual double | Count () const |
| virtual Vec3 | getPos () const |
| Vec3 | getForce () const |
| Vec3 | getNormalForce () const |
| Vec3 | getTangentialForce () const |
| virtual void | saveRestartData (std::ostream &oStream) |
| virtual void | loadRestartData (std::istream &iStream) |
Public Member Functions inherited from ARotPairInteraction | |
| ARotPairInteraction () | |
| ARotPairInteraction (CRotParticle *, CRotParticle *) | |
| virtual | ~ARotPairInteraction () |
| const CParticle * | first () const |
| const CParticle * | second () const |
| CRotParticle * | first () |
| CRotParticle * | second () |
| pair< int, int > | getPairID () const |
| void | checkIDs () |
| virtual bool | hasTag (int, int) const |
| virtual Vec3 | getPosFirst () const |
| virtual Vec3 | getPosSecond () const |
| void | setPP (CRotParticle *, CRotParticle *) |
| void | setPP (const vector< CRotParticle * >) |
| esys::lsm::quintuple< Vec3, double, Vec3, double, Vec3 > | getRaw2Data () const |
| virtual void | calcHeatTrans () |
| virtual void | calcHeatFrict () |
Public Member Functions inherited from AInteraction | |
| AInteraction () | |
| virtual | ~AInteraction () |
| bool | initialized () const |
| vector< int > | getAllID () const |
| int | getID () |
| double | Count () const |
Static Public Member Functions | |
| static CheckedScalarFieldFunction | getCheckedScalarFieldFunction (const string &) |
| static ScalarFieldFunction | getScalarFieldFunction (const string &) |
| static VectorFieldFunction | getVectorFieldFunction (const string &) |
| static string | getType () |
Private Attributes | |
| double | m_k |
| spring constant More... | |
| double | m_r0 |
| equilibrium distance More... | |
| double | m_mu_d |
| coefficient of dynamic friction More... | |
| double | m_mu_s |
| coefficient of static 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 |
| toggles scaling of elastic properties by particle size More... | |
| bool | m_rigid |
| toggles whether to use rigid body friction interactions More... | |
| bool | m_meanR_scaling |
| toggles whether to use the mean particle radius or minimum particle radius to define bond radius More... | |
Friends | |
| class | TML_PackedMessageInterface |
| ostream & | operator<< (ostream &, const CRotFrictionInteraction &) |
Additional Inherited Members | |
Protected Attributes inherited from ARotPairInteraction | |
| CRotParticle * | m_p1 |
| CRotParticle * | 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 |
Frictional+Elastic interaction between particles between rotational particles.
| typedef pair<bool,double>(CRotFrictionInteraction::* CRotFrictionInteraction::CheckedScalarFieldFunction) () const |
| typedef double(CRotFrictionInteraction::* CRotFrictionInteraction::ScalarFieldFunction) () const |
| typedef Vec3(CRotFrictionInteraction::* CRotFrictionInteraction::VectorFieldFunction) () const |
| CRotFrictionInteraction::CRotFrictionInteraction | ( | ) |
References m_dt, m_E_diss, m_Ffric, m_is_slipping, m_is_touching, m_k, m_ks, m_meanR_scaling, m_mu_d, m_mu_s, m_r0, m_rigid, and m_scaling.
| CRotFrictionInteraction::CRotFrictionInteraction | ( | CRotParticle * | p1, |
| CRotParticle * | p2, | ||
| const CRotFrictionIGP & | param | ||
| ) |
References CRotFrictionIGP::dt, CParticle::getDo2dCalculations(), CBasicParticle::getPos(), CBasicParticle::getRad(), CRotFrictionIGP::k, CRotFrictionIGP::k_s, m_cpos, m_dt, m_E_diss, m_Ffric, m_is_slipping, m_is_touching, m_k, m_ks, m_meanR_scaling, m_mu_d, m_mu_s, m_r0, m_rigid, m_scaling, CRotFrictionIGP::meanR_scaling, CRotFrictionIGP::mu_d, CRotFrictionIGP::mu_s, CRotFrictionIGP::rigid, and CRotFrictionIGP::scaling.

|
virtual |
|
virtual |
Implements ARotPairInteraction.
References calcRigidBodyForces(), calcSimpleForces(), and m_rigid.

| void CRotFrictionInteraction::calcNormalForce | ( | ) |
Calculate the normal force.
References CBasicParticle::getPos(), CBasicParticle::getRad(), m_k, m_normal_force, ARotPairInteraction::m_p1, and ARotPairInteraction::m_p2.

|
virtual |
Yucang Wang's friction implementation which takes into account rigid body rotation of particle-pairs.
References CParticle::applyForce(), CRotParticle::applyMoment(), cross(), dot(), CRotParticle::getAngVel(), 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_d, m_mu_s, m_normal_force, ARotPairInteraction::m_p1, ARotPairInteraction::m_p2, and Vec3::norm().
Referenced by calcForces().


|
virtual |
Calculate elastic and frictional forces. Rigid body rotations of particle-pairs are ignored
References CParticle::applyForce(), CRotParticle::applyMoment(), cross(), CRotParticle::getAngVel(), 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_d, m_mu_s, m_normal_force, ARotPairInteraction::m_p1, ARotPairInteraction::m_p2, and Vec3::norm().
Referenced by calcForces().


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

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


| double CRotFrictionInteraction::getAbsSlip | ( | ) | const |
Return distance slipped at the contact in the current time step. Returns 0 if interaction is sticking or if particles are not in contact.
References cross(), CRotParticle::getAngVel(), CBasicParticle::getPos(), CParticle::getVel(), m_cpos, m_dt, m_is_slipping, m_is_touching, ARotPairInteraction::m_p1, ARotPairInteraction::m_p2, Vec3::norm(), and Vec3::norm2().
Referenced by getScalarFieldFunction().


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

| Vec3 CRotFrictionInteraction::getForce | ( | ) | const |
If the particles are in contact, get total force, if not in contact return (0,0,0)
References m_Ffric, m_is_touching, and m_normal_force.
Referenced by getVectorFieldFunction().

| Vec3 CRotFrictionInteraction::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().

|
inlinevirtual |
Implements ARotPairInteraction.
References m_cpos.
| double CRotFrictionInteraction::getPotentialEnergy | ( | ) | const |
get the potential energy stored in the interaction
References m_Ffric, m_k, m_ks, and m_normal_force.
Referenced by 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(), getAbsSlip(), getDissipatedEnergy(), getPotentialEnergy(), getSlipping(), getSticking(), and NULL.

| double CRotFrictionInteraction::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 getScalarFieldFunction().

| double CRotFrictionInteraction::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().

| Vec3 CRotFrictionInteraction::getTangentialForce | ( | ) | const |
References m_Ffric, and m_is_touching.
Referenced by getVectorFieldFunction().

|
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(), getTangentialForce(), and NULL.

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

|
virtual |
Load restart data from an open istream
| iStream | the input stream |
Reimplemented from ARotPairInteraction.
References m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_meanR_scaling, m_mu_d, m_mu_s, 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 ARotPairInteraction.
References m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_meanR_scaling, m_mu_d, m_mu_s, m_r0, m_scaling, Vec3::X(), Vec3::Y(), and Vec3::Z().

| void CRotFrictionInteraction::setTimeStepSize | ( | double | dt | ) |
References m_dt.
|
friend |
|
friend |
|
private |
contact position
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), getAbsSlip(), and getPos().
|
private |
|
private |
dissipated energy
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), and getDissipatedEnergy().
|
private |
current frictional force
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), getForce(), getPotentialEnergy(), getTangentialForce(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
difference between fric. force & force necessary for slip
Referenced by calcRigidBodyForces(), calcSimpleForces(), and getAbsForceDeficit().
|
private |
static/dynamic status of the interaction
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), getAbsSlip(), getSlipping(), getSticking(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
contact status of the interaction
Referenced by calcRigidBodyForces(), calcSimpleForces(), Count(), CRotFrictionInteraction(), getAbsSlip(), getForce(), getNormalForce(), getSticking(), getTangentialForce(), loadRestartData(), and saveRestartData().
|
private |
|
private |
shear stiffness (Cundall)
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), getPotentialEnergy(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
toggles whether to use the mean particle radius or minimum particle radius to define bond radius
Referenced by CRotFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
coefficient of dynamic friction
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
coefficient of static friction
Referenced by calcRigidBodyForces(), calcSimpleForces(), CRotFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
current normal force
Referenced by calcNormalForce(), calcRigidBodyForces(), calcSimpleForces(), getForce(), getNormalForce(), and getPotentialEnergy().
|
private |
equilibrium distance
Referenced by CRotFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().
|
private |
toggles whether to use rigid body friction interactions
Referenced by calcForces(), and CRotFrictionInteraction().
|
private |
toggles scaling of elastic properties by particle size
Referenced by CRotFrictionInteraction(), loadRestartData(), TML_PackedMessageInterface::pack(), saveRestartData(), and TML_PackedMessageInterface::unpack().