MercuryDPM  0.10
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TangentialSpringParticle Class Reference

#include <TangentialSpringParticle.h>

+ Inheritance diagram for TangentialSpringParticle:

Public Member Functions

 TangentialSpringParticle ()
 Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1. More...
 
 TangentialSpringParticle (const TangentialSpringParticle &p)
 Particle copy contstructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorfism. More...
 
virtual ~TangentialSpringParticle ()
 Particle destructor, needs to be implemented and checked if it removes tangential spring information. More...
 
virtual TangentialSpringParticlecopy () const
 Particle copy method. It calls to copy contrustor of this Particle, usefull for polymorfism. More...
 
void reverseTangentialSprings ()
 
CTangentialSpringsget_TangentialSprings ()
 
void print (std::ostream &os) const
 Particle print function, which accepts an os std::stringstream as input. More...
 
void read (std::istream &is)
 Particle read function, which accepts an os std::stringstream as input. More...
 
void moveInHandler (int newPos)
 
void oldRead (std::istream &is, std::string &x)
 
- Public Member Functions inherited from BaseParticle
 BaseParticle ()
 Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1. More...
 
 BaseParticle (const BaseParticle &p)
 Particle copy contstructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorfism. More...
 
virtual ~BaseParticle ()
 Particle destructor, needs to be implemented and checked if it removes tangential spring information. More...
 
Mdouble get_Volume (std::vector< CSpecies > &Species) const
 Get Particle volume function, which required a reference to the Species vector. It returns the volume of the Particle. More...
 
void fixParticle ()
 Fix Particle function. It fixes a Particle by setting its inverse mass and inertia and velocities to zero. More...
 
bool isFixed ()
 Is fixed Particle function. It returns wether a Particle is fixed or not, by cheking its inverse Mass. More...
 
void unfix (std::vector< CSpecies > &Species)
 Unfix Particle function, which required a reference to the Species vector. It un fixes a Particle by compyting the Particles mass and inertia. More...
 
void compute_particle_mass (std::vector< CSpecies > &Species)
 Compute Particle mass function, which required a reference to the Species vector. It copmuters the Particles mass, Inertia and the inverses. More...
 
void print_HGRID (std::ostream &os)
 
int get_HGRID_Level () const
 
BaseParticleget_HGRID_NextObject () const
 
BaseParticleget_HGRID_PrevObject () const
 
int get_HGRID_x () const
 
int get_HGRID_y () const
 
int get_HGRID_z () const
 
int get_Index () const
 
Mdouble get_Inertia () const
 
Mdouble get_InvInertia () const
 
Mdouble get_InvMass () const
 
Mdouble get_KineticEnergy () const
 
Mdouble get_Mass () const
 
BaseParticleget_PeriodicFromParticle () const
 
const Vec3Dget_Position () const
 
Mdouble get_Radius () const
 
Mdouble get_InteractionRadius () const
 
Mdouble get_WallInteractionRadius () const
 
int get_Species () const
 
int get_IndSpecies () const
 
int get_Id () const
 
const Vec3Dget_Velocity () const
 
const Vec3Dget_Angle () const
 
const Vec3Dget_AngularVelocity () const
 
const Vec3Dget_Force () const
 
const Vec3Dget_Torque () const
 
const Vec3Dget_Displacement () const
 
const Vec3Dget_PreviousPosition () const
 
ParticleHandlergetHandler () const
 
const Vec3D get_Displacement2 (Mdouble xmin, Mdouble xmax, Mdouble ymin, Mdouble ymax, Mdouble zmin, Mdouble zmax, Mdouble t) const
 
void set_inertia (const Mdouble _new)
 
void set_infiniteInertia ()
 
void set_periodicFromParticle (BaseParticle *_new)
 
void set_species (const int _new)
 
void set_Index (const int _new)
 
void set_HGRID_x (const int _new)
 
void set_HGRID_y (const int _new)
 
void set_HGRID_z (const int _new)
 
void set_HGRID_Level (const int _new)
 
void set_HGRID_NextObject (BaseParticle *_new)
 
void set_HGRID_PrevObject (BaseParticle *_new)
 
void set_Radius (const Mdouble _new)
 
void set_IndSpecies (const int _new)
 
void set_Id (const int _new)
 
void set_Mass (const Mdouble _new)
 
void set_Velocity (const Vec3D &_new)
 
void set_Position (const Vec3D &_new)
 
void set_Displacement (const Vec3D &_new)
 
void set_PreviousPosition (const Vec3D &_new)
 
void set_Angle (const Vec3D &_new)
 
void set_AngularVelocity (const Vec3D &_new)
 
void set_Force (const Vec3D &_new)
 
void set_Torque (const Vec3D &_new)
 
void setHandler (ParticleHandler *handler)
 
void move (const Vec3D &_new)
 
void movePrevious (const Vec3D &_new)
 
void accelerate (const Vec3D &_new)
 
void rotate (const Vec3D &_new)
 
void angularAccelerate (const Vec3D &_new)
 
void add_Displacement (const Vec3D &_new)
 
void add_Force (const Vec3D &_new)
 
void add_Torque (const Vec3D &_new)
 

Private Attributes

CTangentialSprings tangentialSprings
 

Detailed Description

Definition at line 34 of file TangentialSpringParticle.h.

Constructor & Destructor Documentation

TangentialSpringParticle::TangentialSpringParticle ( )

Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1.

Definition at line 29 of file TangentialSpringParticle.cc.

References CTangentialSprings::reset(), and tangentialSprings.

Referenced by copy().

29  : BaseParticle()
30 {
32 }
CTangentialSprings tangentialSprings
void reset()
Resets the tangential springs.
BaseParticle()
Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1...
Definition: BaseParticle.cc:37
TangentialSpringParticle::TangentialSpringParticle ( const TangentialSpringParticle p)

Particle copy contstructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorfism.

Definition at line 34 of file TangentialSpringParticle.cc.

References tangentialSprings.

34  : BaseParticle(p)
35 {
36  //std::cout<<"TSP copy constructor"<<std::endl;
38 }
CTangentialSprings tangentialSprings
BaseParticle()
Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1...
Definition: BaseParticle.cc:37
TangentialSpringParticle::~TangentialSpringParticle ( )
virtual

Particle destructor, needs to be implemented and checked if it removes tangential spring information.

Definition at line 40 of file TangentialSpringParticle.cc.

41 {
42 }

Member Function Documentation

TangentialSpringParticle * TangentialSpringParticle::copy ( ) const
virtual

Particle copy method. It calls to copy contrustor of this Particle, usefull for polymorfism.

Reimplemented from BaseParticle.

Reimplemented in DeltaMaxsParticle.

Definition at line 45 of file TangentialSpringParticle.cc.

References TangentialSpringParticle().

46 {
47  //std::cout<<"TangentialSpringParticle copy"<<std::endl;
48  return new TangentialSpringParticle(*this);
49 }
TangentialSpringParticle()
Basic Particle contructors, creates an Particle at (0,0,0) with radius, mass and inertia equal to 1...
void TangentialSpringParticle::moveInHandler ( int  newPos)
virtual
Todo:
Is a time restriction neccesary here?

Reimplemented from BaseParticle.

Definition at line 76 of file TangentialSpringParticle.cc.

References get_TangentialSprings(), BaseParticle::getHandler(), BaseHandler< T >::getObject(), BaseParticle::moveInHandler(), CTangentialSpring::pParticle, and CTangentialSpring::reverse().

77 {
79  //Check if some TangentialSpring information has to be moved
80  for(unsigned int i=0;i<get_TangentialSprings().size();)
81  {
83  if (get_TangentialSprings()[i].pParticle>newPos)
84  {
85  int otherId=get_TangentialSprings()[i].pParticle;
86  TangentialSpringParticle* otherTSParticle=dynamic_cast<TangentialSpringParticle*>(getHandler()->getObject(otherId));
87  //Copy Tangentalspring to new location
89  CTS.pParticle=newPos;
90  CTS.reverse();
91  otherTSParticle->get_TangentialSprings().push_back(CTS);
92 
93  //Remove now unused tangentialspring
95  get_TangentialSprings().pop_back();
96  }
97  else
98  {
99  i++;
100  }
101  }
102 }
T * getObject(const unsigned int id) const
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:176
int pParticle
A pointer to the particle in contact; NULL if the contact is with a wall (The other particle is the p...
ParticleHandler * getHandler() const
CTangentialSprings & get_TangentialSprings()
Stores the tangential spring needed to compute a tangential elastic force between particles PI...
virtual void moveInHandler(int newPos)
void TangentialSpringParticle::oldRead ( std::istream &  is,
std::string &  x 
)

Definition at line 104 of file TangentialSpringParticle.cc.

References BaseParticle::angle, BaseParticle::angularVelocity, BaseParticle::invInertia, BaseParticle::invMass, BaseParticle::position, BaseParticle::radius, BaseParticle::set_Angle(), BaseParticle::set_AngularVelocity(), BaseParticle::set_inertia(), BaseParticle::set_Mass(), BaseParticle::set_Position(), BaseParticle::set_Radius(), BaseParticle::set_Velocity(), tangentialSprings, BaseParticle::velocity, Vec3D::X, Vec3D::Y, and Vec3D::Z.

Referenced by ParticleHandler::readObject().

105 {
107  position.X=atof(x.c_str());
109  is >> position.Y >> position.Z >> velocity >> radius >> angle >> angularVelocity >> invMass >> invInertia >> tangentialSprings;
110  set_Position(position);
111  set_Velocity(velocity);
112  set_Angle(angle);
113  set_AngularVelocity(angularVelocity);
114  set_Radius(radius);
115  if (invMass) set_Mass(1.0/invMass); else set_Mass(1e20);
116  if (invInertia) set_inertia(1.0/invInertia); else set_inertia(1e20);
117 }
Vec3D velocity
Current particle position.
Definition: BaseParticle.h:193
void set_inertia(const Mdouble _new)
Mdouble X
Definition: Vector.h:44
Mdouble radius
Inverse Particle inverse inertia (for computation optimization)
Definition: BaseParticle.h:185
Vec3D angularVelocity
Current angular position.
Definition: BaseParticle.h:191
Vec3D angle
non changing identifier of particle
Definition: BaseParticle.h:190
Mdouble invInertia
Particle inertia.
Definition: BaseParticle.h:184
double Mdouble
Definition: ExtendedMath.h:33
CTangentialSprings tangentialSprings
Mdouble Y
Definition: Vector.h:44
void set_Radius(const Mdouble _new)
void set_Velocity(const Vec3D &_new)
Mdouble invMass
Particle mass.
Definition: BaseParticle.h:182
Vec3D position
Current angular velocity.
Definition: BaseParticle.h:192
void set_AngularVelocity(const Vec3D &_new)
void set_Angle(const Vec3D &_new)
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
void set_Position(const Vec3D &_new)
Mdouble Z
Definition: Vector.h:44
void set_Mass(const Mdouble _new)
void TangentialSpringParticle::print ( std::ostream &  os) const
virtual

Particle print function, which accepts an os std::stringstream as input.

BaseParticle print function, which accepts an os std::stringstream as input. It prints human readable BaseParticle information to the std::stringstream.

Reimplemented from BaseParticle.

Definition at line 61 of file TangentialSpringParticle.cc.

References BaseParticle::print(), and tangentialSprings.

Referenced by DeltaMaxsParticle::print().

62 {
63  os<<"TSP ";
65  os<<" "<<tangentialSprings;
66 }
virtual void print(std::ostream &os) const
Particle print function, which accepts an os std::stringstream as input.
CTangentialSprings tangentialSprings
void TangentialSpringParticle::read ( std::istream &  is)
virtual

Particle read function, which accepts an os std::stringstream as input.

Reimplemented from BaseParticle.

Definition at line 68 of file TangentialSpringParticle.cc.

References BaseParticle::read(), and tangentialSprings.

Referenced by DeltaMaxsParticle::read().

69 {
70  std::string dummy;
71  is >> dummy;
73  is >> tangentialSprings;
74 }
virtual void read(std::istream &is)
Particle read function, which accepts an os std::stringstream as input.
CTangentialSprings tangentialSprings
void TangentialSpringParticle::reverseTangentialSprings ( )

Definition at line 51 of file TangentialSpringParticle.cc.

References tangentialSprings.

Referenced by PeriodicBoundary::createPeriodicParticles(), and AngledPeriodicBoundary::createPeriodicParticles().

52 {
53  for(std::vector<CTangentialSpring>::iterator it = tangentialSprings.begin(); it!=tangentialSprings.end();it++)
54  {
55  it->reverse();
56  }
57 }
CTangentialSprings tangentialSprings

Member Data Documentation

CTangentialSprings TangentialSpringParticle::tangentialSprings
private

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