ESyS-Particle  2.3.4
CRotThermFrictionInteraction Class Reference

#include <RotThermFricInteraction.h>

Inheritance diagram for CRotThermFrictionInteraction:
Collaboration diagram for CRotThermFrictionInteraction:

Public Types

typedef CRotThermFrictionIGP ParameterType
 
typedef double(CRotThermFrictionInteraction::* ScalarFieldFunction) () const
 
typedef pair< bool, double >(CRotThermFrictionInteraction::* CheckedScalarFieldFunction) () const
 
typedef Vec3(CRotThermFrictionInteraction::* VectorFieldFunction) () const
 

Public Member Functions

void setTimeStepSize (double deltaT)
 
 CRotThermFrictionInteraction ()
 
 CRotThermFrictionInteraction (CRotThermParticle *, CRotThermParticle *, const CRotThermFrictionIGP &)
 
virtual ~CRotThermFrictionInteraction ()
 
virtual void calcForces ()
 
void calcHeatFrict ()
 
void calcHeatTrans ()
 
virtual bool isPersistent ()
 
void calcNormalForce ()
 
double getAbsForceDeficit () const
 
double getPotentialEnergy () const
 
double getSlipping () const
 
double getTouching () const
 
double getSticking () const
 
double getDissipatedEnergy () const
 
Vec3 getDs ()
 
virtual Vec3 getPos () const
 
Vec3 getForce () const
 
Vec3 getNormalForce () const
 
virtual void saveRestartData (std::ostream &oStream)
 
virtual void loadRestartData (std::istream &iStream)
 
- Public Member Functions inherited from ARotThermPairInteraction
 ARotThermPairInteraction ()
 
 ARotThermPairInteraction (CRotThermParticle *, CRotThermParticle *)
 
virtual ~ARotThermPairInteraction ()
 
const CRotThermParticlefirst () const
 
const CRotThermParticlesecond () const
 
CRotThermParticlefirst ()
 
CRotThermParticlesecond ()
 
pair< int, int > getPairID () const
 
void checkIDs ()
 
virtual bool hasTag (int, int) const
 
virtual Vec3 getPosFirst () const
 
virtual Vec3 getPosSecond () const
 
void setPP (CRotThermParticle *, CRotThermParticle *)
 
void setPP (const vector< CRotThermParticle * >)
 
esys::lsm::quintuple< Vec3, double, Vec3, double, Vec3getRaw2Data () const
 
- 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...
 
double m_diffusivity
 thermal diffusivity More...
 
Vec3 m_ds
 tangitial displacement at this time step More...
 

Friends

class TML_PackedMessageInterface
 
ostream & operator<< (ostream &, const CRotThermFrictionInteraction &)
 

Additional Inherited Members

- Protected Attributes inherited from ARotThermPairInteraction
CRotThermParticlem_p1
 
CRotThermParticlem_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
 

Detailed Description

Frictional+Elastic interaction between particles between thermal ,rotational particles

Member Typedef Documentation

◆ CheckedScalarFieldFunction

typedef pair<bool,double>(CRotThermFrictionInteraction::* CRotThermFrictionInteraction::CheckedScalarFieldFunction) () const

◆ ParameterType

◆ ScalarFieldFunction

typedef double(CRotThermFrictionInteraction::* CRotThermFrictionInteraction::ScalarFieldFunction) () const

◆ VectorFieldFunction

typedef Vec3(CRotThermFrictionInteraction::* CRotThermFrictionInteraction::VectorFieldFunction) () const

Constructor & Destructor Documentation

◆ CRotThermFrictionInteraction() [1/2]

CRotThermFrictionInteraction::CRotThermFrictionInteraction ( )

◆ CRotThermFrictionInteraction() [2/2]

◆ ~CRotThermFrictionInteraction()

CRotThermFrictionInteraction::~CRotThermFrictionInteraction ( )
virtual

Member Function Documentation

◆ calcForces()

◆ calcHeatFrict()

void CRotThermFrictionInteraction::calcHeatFrict ( )
virtual

◆ calcHeatTrans()

void CRotThermFrictionInteraction::calcHeatTrans ( )
virtual

◆ calcNormalForce()

void CRotThermFrictionInteraction::calcNormalForce ( )

Calculate the normal force.

References CBasicParticle::getPos(), CBasicParticle::getRad(), m_k, m_normal_force, ARotThermPairInteraction::m_p1, and ARotThermPairInteraction::m_p2.

Here is the call graph for this function:

◆ getAbsForceDeficit()

double CRotThermFrictionInteraction::getAbsForceDeficit ( ) const

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

References m_force_deficit, and Vec3::norm().

Referenced by getScalarFieldFunction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCheckedScalarFieldFunction()

CRotThermFrictionInteraction::CheckedScalarFieldFunction CRotThermFrictionInteraction::getCheckedScalarFieldFunction ( const string &  name)
static

References NULL.

◆ getDissipatedEnergy()

double CRotThermFrictionInteraction::getDissipatedEnergy ( ) const

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:

◆ getDs()

Vec3 CRotThermFrictionInteraction::getDs ( )
inline

References m_ds.

◆ getForce()

Vec3 CRotThermFrictionInteraction::getForce ( ) const

References m_Ffric, m_is_touching, and m_normal_force.

Referenced by getVectorFieldFunction().

Here is the caller graph for this function:

◆ getNormalForce()

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

Here is the caller graph for this function:

◆ getPos()

virtual Vec3 CRotThermFrictionInteraction::getPos ( ) const
inlinevirtual

Implements ARotThermPairInteraction.

References m_cpos.

◆ getPotentialEnergy()

double CRotThermFrictionInteraction::getPotentialEnergy ( ) const

get the potential energy stored in the interaction

Warning
For performance reasons the tangential part of the elastic energy is calculated directly from the current tangential force whereas it would be more accurate to calculate it incrementally during the force calculation. Be aware that therefore the potential energy is an approximation. Tests suggest an accuracy of a few percent.

References m_Ffric, m_k, m_ks, and m_normal_force.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

◆ getScalarFieldFunction()

CRotThermFrictionInteraction::ScalarFieldFunction CRotThermFrictionInteraction::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

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

Here is the call graph for this function:

◆ getSlipping()

double CRotThermFrictionInteraction::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 calcHeatFrict(), and getScalarFieldFunction().

Here is the caller graph for this function:

◆ getSticking()

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

Here is the caller graph for this function:

◆ getTouching()

double CRotThermFrictionInteraction::getTouching ( ) const

Get the contact status of the interaction. Returns 1 for an actual contact, 0 for no contact

References m_is_touching.

◆ getType()

static string CRotThermFrictionInteraction::getType ( )
inlinestatic

◆ getVectorFieldFunction()

CRotThermFrictionInteraction::VectorFieldFunction CRotThermFrictionInteraction::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

References getForce(), getNormalForce(), and NULL.

Here is the call graph for this function:

◆ isPersistent()

bool CRotThermFrictionInteraction::isPersistent ( )
virtual

◆ loadRestartData()

void CRotThermFrictionInteraction::loadRestartData ( std::istream &  iStream)
virtual

Load restart data from an open istream

Parameters
iStreamthe input stream

References m_diffusivity, m_ds, m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_mu_d, m_mu_s, m_r0, Vec3::X(), Vec3::Y(), and Vec3::Z().

Here is the call graph for this function:

◆ saveRestartData()

void CRotThermFrictionInteraction::saveRestartData ( std::ostream &  oStream)
virtual

Save restart data to an open ostream

Parameters
oStreamthe output stream

References m_diffusivity, m_ds, m_dt, m_Ffric, AInteraction::m_id, m_is_slipping, m_is_touching, m_k, m_ks, m_mu_d, m_mu_s, m_r0, Vec3::X(), Vec3::Y(), and Vec3::Z().

Here is the call graph for this function:

◆ setTimeStepSize()

void CRotThermFrictionInteraction::setTimeStepSize ( double  deltaT)
inline

References m_dt.

Friends And Related Function Documentation

◆ operator<<

ostream& operator<< ( ostream &  ost,
const CRotThermFrictionInteraction BI 
)
friend

◆ TML_PackedMessageInterface

friend class TML_PackedMessageInterface
friend

Member Data Documentation

◆ m_cpos

Vec3 CRotThermFrictionInteraction::m_cpos
private

contact position

Referenced by calcForces(), CRotThermFrictionInteraction(), and getPos().

◆ m_diffusivity

double CRotThermFrictionInteraction::m_diffusivity
private

◆ m_ds

Vec3 CRotThermFrictionInteraction::m_ds
private

◆ m_dt

◆ m_E_diss

double CRotThermFrictionInteraction::m_E_diss
private

dissipated energy

Referenced by calcForces(), CRotThermFrictionInteraction(), and getDissipatedEnergy().

◆ m_Ffric

◆ m_force_deficit

Vec3 CRotThermFrictionInteraction::m_force_deficit
private

difference between fric. force & force necessary for slip

Referenced by calcForces(), and getAbsForceDeficit().

◆ m_is_slipping

bool CRotThermFrictionInteraction::m_is_slipping
private

◆ m_is_touching

bool CRotThermFrictionInteraction::m_is_touching
private

◆ m_k

◆ m_ks

◆ m_mu_d

double CRotThermFrictionInteraction::m_mu_d
private

◆ m_mu_s

double CRotThermFrictionInteraction::m_mu_s
private

◆ m_normal_force

Vec3 CRotThermFrictionInteraction::m_normal_force
private

current normal force

Referenced by calcForces(), calcNormalForce(), getForce(), getNormalForce(), and getPotentialEnergy().

◆ m_r0

double CRotThermFrictionInteraction::m_r0
private

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