ESyS-Particle  2.3.4
CParticle Class Reference

Class for a basic particle. More...

#include <Particle.h>

Inheritance diagram for CParticle:
Collaboration diagram for CParticle:

Classes

class  exchangeType
 

Public Types

typedef double(CParticle::* ScalarFieldFunction) () const
 
typedef Vec3(CParticle::* VectorFieldFunction) () const
 

Public Member Functions

 CParticle ()
 
 CParticle (double, double, const Vec3 &, const Vec3 &, const Vec3 &, int, bool)
 
 CParticle (double, double, const Vec3 &, const Vec3 &, const Vec3 &, const Vec3 &, const Vec3 &, int, bool)
 
 CParticle (const esys::lsm::SimpleParticleData &particleData)
 
virtual ~CParticle ()
 
const Vec3getInitPos () const
 
void setInitPos (const Vec3 &initPos)
 
Vec3 getDisplacement () const
 
Vec3 getTotalDisplacement () const
 
const Vec3getOldPos () const
 
Vec3 getVel () const
 
double getAbsVel () const
 
void setVel (const Vec3 &V)
 
void setMass (double mass)
 
double getMass () const
 
double getInvMass () const
 
Vec3 getForce () const
 
virtual void setDensity (double)
 
void resetDisplacement ()
 
double getIDField () const
 
double getTagField () const
 
void applyForce (const Vec3 &, const Vec3 &)
 
virtual void integrate (double)
 
virtual void integrateTherm (double)
 
virtual void zeroForce ()
 
virtual void zeroHeat ()
 
virtual void thermExpansion ()
 
void moveToRel (const Vec3 &v)
 
double getKineticEnergy () const
 move relative to initial position More...
 
virtual void setNonDynamic ()
 
virtual void setNonDynamicLinear ()
 
virtual void setNonDynamicRot ()
 
void setFlag (bool b=true)
 
bool isFlagged () const
 
void writeAsDXLine (ostream &, int slid=0)
 
void print ()
 
void rescale ()
 
exchangeType getExchangeValues ()
 
void setExchangeValues (const exchangeType &)
 
void setCircular (const Vec3 &)
 
double sigma_xx_2D () const
 
double sigma_xy_2D () const
 
double sigma_yy_2D () const
 
double sigma_d () const
 
virtual void saveCheckPointData (std::ostream &oStream)
 
virtual void saveSnapShotData (std::ostream &oStream)
 
virtual void applyMoment (const Vec3 &)
 
virtual void loadCheckPointData (std::istream &iStream)
 
template<typename TmplVisitor >
void visit (TmplVisitor &visitor)
 
- Public Member Functions inherited from CBasicParticle
 CBasicParticle ()
 
 CBasicParticle (const Vec3 &pos, double radius, int id=-1, int tag=-1)
 
 CBasicParticle (const esys::lsm::SimpleParticleData &data)
 
virtual ~CBasicParticle ()
 
Vec3getPPos ()
 
Vec3 getPos () const
 
void setPos (const Vec3 &pos)
 
double getRad () const
 
int getID () const
 
void setID (int id)
 
void moveBy (Vec3 v)
 move relative to current position More...
 
void moveTo (Vec3 v)
 move absolute More...
 
void setRad (double r)
 
void setTag (int t)
 particle tag handling More...
 
int getTag () const
 
bool isValid () const
 
 CBasicParticle ()
 
 CBasicParticle (int, const Vec3 &, double)
 
Vec3getPPos ()
 
Vec3 getPos () const
 
double getRad () const
 
int getID () const
 
void moveBy (Vec3 v)
 
void moveTo (Vec3 v)
 move relative to current position More...
 
void setRad (double r)
 move absolute More...
 
- Public Member Functions inherited from esys::lsm::CheckPointable
 CheckPointable ()
 
virtual ~CheckPointable ()
 

Static Public Member Functions

static ScalarFieldFunction getScalarFieldFunction (const string &)
 
static VectorFieldFunction getVectorFieldFunction (const string &)
 
static void get_type ()
 
static void setDo2dCalculations (bool do2dCalculations)
 
static bool getDo2dCalculations ()
 

Protected Member Functions

void setForce (const Vec3 &force)
 

Protected Attributes

Matrix3 m_sigma
 stress tensor. More...
 
Vec3 m_vel
 
Vec3 m_force
 
Vec3 m_oldpos
 position at the time of last neighbor search More...
 
Vec3 m_initpos
 position at time of construction More...
 
Vec3 m_circular_shift
 shift vector if particle is circular image More...
 
double m_mass
 
double m_div_mass
 
bool flag
 
bool m_is_dynamic
 
- Protected Attributes inherited from CBasicParticle
Vec3 m_pos
 position More...
 
double m_rad
 radius More...
 
int m_global_id
 
int m_tag
 
int m_id
 

Static Private Attributes

static bool s_do2Calculations = false
 

Friends

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

Additional Inherited Members

- Static Public Attributes inherited from CBasicParticle
static const CBasicParticle INVALID = CBasicParticle(Vec3::ZERO, 0.0, -1, -1)
 

Detailed Description

Class for a basic particle.

Member Typedef Documentation

◆ ScalarFieldFunction

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

◆ VectorFieldFunction

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

Constructor & Destructor Documentation

◆ CParticle() [1/4]

CParticle::CParticle ( )

◆ CParticle() [2/4]

CParticle::CParticle ( double  rad,
double  mass,
const Vec3 pos,
const Vec3 vel,
const Vec3 force,
int  id,
bool  is_dyn 
)

Construct particle. Old and initial position are assumed to be identical to current position.

Parameters
radradius
massmass
poscurrent position
velcurrent velocity
forcecurrently applied force
idparticle id

References flag, m_circular_shift, m_div_mass, m_force, CBasicParticle::m_global_id, m_initpos, m_is_dynamic, m_mass, m_oldpos, m_vel, and zeroVec3.

◆ CParticle() [3/4]

CParticle::CParticle ( double  rad,
double  mass,
const Vec3 pos,
const Vec3 oldpos,
const Vec3 initpos,
const Vec3 vel,
const Vec3 force,
int  id,
bool  is_dyn 
)

◆ CParticle() [4/4]

CParticle::CParticle ( const esys::lsm::SimpleParticleData particleData)

◆ ~CParticle()

virtual CParticle::~CParticle ( )
inlinevirtual

Member Function Documentation

◆ applyForce()

◆ applyMoment()

virtual void CParticle::applyMoment ( const Vec3 )
inlinevirtual

Reimplemented in CRotParticleVi, and CRotParticle.

◆ get_type()

static void CParticle::get_type ( )
inlinestatic

◆ getAbsVel()

double CParticle::getAbsVel ( ) const
inline

References m_vel, and Vec3::norm().

Referenced by getScalarFieldFunction(), and CRotParticle::getScalarFieldFunction().

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

◆ getDisplacement()

Vec3 CParticle::getDisplacement ( ) const
inline

References m_oldpos, and CBasicParticle::m_pos.

Referenced by CRotParticle::getDisplacement(), CRotParticleVi::getDisplacement(), and CRotThermParticle::getDisplacement().

Here is the caller graph for this function:

◆ getDo2dCalculations()

◆ getExchangeValues()

CParticle::exchangeType CParticle::getExchangeValues ( )

get values to be exchanged, i.e. pos and vel

References m_circular_shift, m_initpos, m_is_dynamic, m_oldpos, CBasicParticle::m_pos, and m_vel.

◆ getForce()

◆ getIDField()

double CParticle::getIDField ( ) const
inline

◆ getInitPos()

◆ getInvMass()

◆ getKineticEnergy()

double CParticle::getKineticEnergy ( ) const
inline

move relative to initial position

References m_mass, and m_vel.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

◆ getMass()

◆ getOldPos()

const Vec3& CParticle::getOldPos ( ) const
inline

References m_oldpos.

Referenced by saveCheckPointData(), and saveSnapShotData().

Here is the caller graph for this function:

◆ getScalarFieldFunction()

CParticle::ScalarFieldFunction CParticle::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 getAbsVel(), getIDField(), getKineticEnergy(), CBasicParticle::getRad(), getTagField(), NULL, sigma_d(), sigma_xx_2D(), sigma_xy_2D(), and sigma_yy_2D().

Here is the call graph for this function:

◆ getTagField()

double CParticle::getTagField ( ) const
inline

References CBasicParticle::getTag().

Referenced by getScalarFieldFunction(), and CRotParticle::getScalarFieldFunction().

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

◆ getTotalDisplacement()

Vec3 CParticle::getTotalDisplacement ( ) const
inline

◆ getVectorFieldFunction()

CParticle::VectorFieldFunction CParticle::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(), CBasicParticle::getPos(), getTotalDisplacement(), getVel(), and NULL.

Here is the call graph for this function:

◆ getVel()

Vec3 CParticle::getVel ( ) const
inline

References m_vel.

Referenced by CFrictionInteraction::calcForces(), CHertzianViscoElasticFrictionInteraction::calcForces(), CHertzianViscoElasticInteraction::calcForces(), CHertzMindlinInteraction::calcForces(), CHertzMindlinViscoInteraction::calcForces(), CLinearDashpotInteraction::calcForces(), CRotThermFrictionInteraction::calcForces(), CVWFriction::calcForces(), CRotFrictionInteraction::calcRigidBodyForces(), CRotFrictionInteraction::calcSimpleForces(), CHertzianViscoElasticFrictionInteraction::getAbsMuFN(), CHertzMindlinViscoInteraction::getAbsMuFN(), CRotFrictionInteraction::getAbsSlip(), CVWFriction::getCurrentMu(), esys::lsm::RotParticlePy::getLinearVelocity(), esys::lsm::RotParticleViPy::getLinearVelocity(), esys::lsm::RotThermalParticlePy::getLinearVelocity(), CHertzianViscoElasticFrictionInteraction::getMaxFricStress(), CHertzMindlinViscoInteraction::getMaxFricStress(), CFrictionInteraction::getMuEff(), CHertzianViscoElasticFrictionInteraction::getMuEff(), CHertzMindlinInteraction::getMuEff(), CHertzMindlinViscoInteraction::getMuEff(), CFrictionInteraction::getSlipVelocity(), CHertzianViscoElasticFrictionInteraction::getSlipVelocity(), CHertzMindlinInteraction::getSlipVelocity(), CHertzMindlinViscoInteraction::getSlipVelocity(), getVectorFieldFunction(), CRotParticle::getVectorFieldFunction(), CRotParticleVi::getVectorFieldFunction(), CRotThermParticle::getVectorFieldFunction(), esys::lsm::ParticlePy::getVelocity(), esys::lsm::RotParticlePy::getVelocity(), esys::lsm::RotParticleViPy::getVelocity(), saveCheckPointData(), and saveSnapShotData().

Here is the caller graph for this function:

◆ integrate()

void CParticle::integrate ( double  dt)
virtual

Do the time integration for the particle by 1st order method.

Parameters
dtthe time step

Reimplemented in CRotThermParticle, CRotParticleVi, and CRotParticle.

References getDo2dCalculations(), m_div_mass, m_force, m_is_dynamic, CBasicParticle::m_pos, m_vel, Vec3::X(), and Vec3::Y().

Referenced by CRotParticle::integrate().

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

◆ integrateTherm()

virtual void CParticle::integrateTherm ( double  )
inlinevirtual

◆ isFlagged()

bool CParticle::isFlagged ( ) const
inline

References flag.

◆ loadCheckPointData()

void CParticle::loadCheckPointData ( std::istream &  iStream)
virtual

load checkpoint data saved with CParticle::saveCheckPointData

Implements esys::lsm::CheckPointable.

Reimplemented in CRotParticleVi, and CRotParticle.

References CBasicParticle::setTag().

Referenced by CRotParticle::loadCheckPointData(), CRotParticleVi::loadCheckPointData(), and esys::lsm::CheckPointLoader::ParticleData::read().

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

◆ moveToRel()

void CParticle::moveToRel ( const Vec3 v)
inline

References m_initpos, and CBasicParticle::m_pos.

◆ print()

void CParticle::print ( )
inline

◆ rescale()

void CParticle::rescale ( )
inline

◆ resetDisplacement()

void CParticle::resetDisplacement ( )
inline

◆ saveCheckPointData()

void CParticle::saveCheckPointData ( std::ostream &  oStream)
virtual

save checkpoint data, sufficient for restart

Implements esys::lsm::CheckPointable.

Reimplemented in CRotParticleVi, and CRotParticle.

References getForce(), CBasicParticle::getID(), getInitPos(), getMass(), getOldPos(), CBasicParticle::getPos(), CBasicParticle::getRad(), CBasicParticle::getTag(), getVel(), m_circular_shift, and m_is_dynamic.

Referenced by CRotParticle::saveCheckPointData(), and CRotParticleVi::saveCheckPointData().

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

◆ saveSnapShotData()

void CParticle::saveSnapShotData ( std::ostream &  oStream)
virtual

save snapshot data not neccesarily sufficient for restart

Reimplemented from esys::lsm::CheckPointable.

Reimplemented in CRotParticleVi, and CRotParticle.

References getForce(), CBasicParticle::getID(), getInitPos(), getMass(), getOldPos(), CBasicParticle::getPos(), CBasicParticle::getRad(), CBasicParticle::getTag(), getVel(), and m_circular_shift.

Referenced by CRotParticle::saveSnapShotData(), and CRotParticleVi::saveSnapShotData().

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

◆ setCircular()

void CParticle::setCircular ( const Vec3 cv)

set circular shift vector

Parameters
cvthe circular shift vector

References m_circular_shift, m_initpos, m_oldpos, and CBasicParticle::m_pos.

Referenced by CRotParticle::setCircular(), and CRotParticleVi::setCircular().

Here is the caller graph for this function:

◆ setDensity()

void CParticle::setDensity ( double  rho)
virtual

set the density of the particle

Reimplemented in CRotParticle.

References getDo2dCalculations(), m_div_mass, m_mass, and CBasicParticle::m_rad.

Here is the call graph for this function:

◆ setDo2dCalculations()

static void CParticle::setDo2dCalculations ( bool  do2dCalculations)
inlinestatic

References s_do2Calculations.

◆ setExchangeValues()

◆ setFlag()

void CParticle::setFlag ( bool  b = true)
inline

References flag.

Referenced by CBondedInteraction::broken(), CRotBondedInteraction::broken(), and CRotThermBondedInteraction::broken().

Here is the caller graph for this function:

◆ setForce()

◆ setInitPos()

void CParticle::setInitPos ( const Vec3 initPos)
inline

References m_initpos.

Referenced by esys::lsm::RotParticleViPy::PickleSuite::setstate(), and esys::lsm::RotThermalParticlePy::PickleSuite::setstate().

Here is the caller graph for this function:

◆ setMass()

void CParticle::setMass ( double  mass)
inline

References m_div_mass, and m_mass.

Referenced by esys::lsm::RotParticleViPy::PickleSuite::setstate(), and esys::lsm::RotThermalParticlePy::PickleSuite::setstate().

Here is the caller graph for this function:

◆ setNonDynamic()

virtual void CParticle::setNonDynamic ( )
inlinevirtual

Reimplemented in CRotParticle.

References m_is_dynamic.

◆ setNonDynamicLinear()

virtual void CParticle::setNonDynamicLinear ( )
inlinevirtual

Reimplemented in CRotParticle.

References m_is_dynamic.

◆ setNonDynamicRot()

virtual void CParticle::setNonDynamicRot ( )
inlinevirtual

Reimplemented in CRotParticle.

◆ setVel()

void CParticle::setVel ( const Vec3 V)
inline

◆ sigma_d()

double CParticle::sigma_d ( ) const

get deviatoric stress

References m_sigma, Matrix3::trace(), and Matrix3::Unit().

Referenced by getScalarFieldFunction(), CRotParticle::getScalarFieldFunction(), CRotParticleVi::getScalarFieldFunction(), and CRotThermParticle::getScalarFieldFunction().

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

◆ sigma_xx_2D()

double CParticle::sigma_xx_2D ( ) const
inline

References CBasicParticle::m_rad, and m_sigma.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

◆ sigma_xy_2D()

double CParticle::sigma_xy_2D ( ) const
inline

References CBasicParticle::m_rad, and m_sigma.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

◆ sigma_yy_2D()

double CParticle::sigma_yy_2D ( ) const
inline

References CBasicParticle::m_rad, and m_sigma.

Referenced by getScalarFieldFunction().

Here is the caller graph for this function:

◆ thermExpansion()

virtual void CParticle::thermExpansion ( )
inlinevirtual

◆ visit()

template<typename TmplVisitor >
void CParticle::visit ( TmplVisitor &  visitor)
inline

◆ writeAsDXLine()

void CParticle::writeAsDXLine ( ostream &  ost,
int  slid = 0 
)

write particle data as a line in openDX format into a stream(file)

Parameters
ostthe output stream
slidfrom which sublattice the particle is coming

References m_initpos, m_mass, CBasicParticle::m_pos, CBasicParticle::m_rad, m_vel, Vec3::X(), Vec3::Y(), and Vec3::Z().

Here is the call graph for this function:

◆ zeroForce()

void CParticle::zeroForce ( )
virtual

zero forces on particle

Reimplemented in CRotParticleVi, and CRotParticle.

References m_force, and m_sigma.

◆ zeroHeat()

virtual void CParticle::zeroHeat ( )
inlinevirtual

Friends And Related Function Documentation

◆ operator<<

ostream& operator<< ( ostream &  ost,
const CParticle CP 
)
friend

◆ TML_PackedMessageInterface

friend class TML_PackedMessageInterface
friend

Member Data Documentation

◆ flag

◆ m_circular_shift

◆ m_div_mass

◆ m_force

◆ m_initpos

◆ m_is_dynamic

◆ m_mass

◆ m_oldpos

◆ m_sigma

◆ m_vel

◆ s_do2Calculations

bool CParticle::s_do2Calculations = false
staticprivate

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