GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
GranOO3::DEM::Tool Class Referenceabstract

a base class that represents a rigid body with various shape into a discrete element simulation More...

#include <Tool.hpp>

Inheritance diagram for GranOO3::DEM::Tool:
Inheritance graph
[legend]

Public Member Functions

 Tool (Shape::Volume &shape, const std::string &ID, const Geom::Point &p, const Geom::Quaternion &q, double mass, const Geom::Tensor &inertia)
 constructor More...
 
 Tool (Shape::Volume &shape)
 constructor More...
 
virtual ~Tool ()=0
 destructor More...
 
virtual void read_xml_element (const TiXmlElement *el)
 read an xml element More...
 
virtual void add_glob (const std::string &)=0
 util method for reading an xml element More...
 
virtual void draw ()=0
 OpenGL draw of the bond
More...
 
virtual std::string info () const
 
virtual std::string shape_class_ID () const =0
 get the class ID of the tool ("Cylinder", "Cone", etc...) More...
 
virtual std::ostream & write_ascii (std::ostream &out) const
 dump the current state of the tool in a ascii file (standard *.lgdd format) More...
 
virtual std::istream & read_ascii (std::istream &in)
 update the current state of the element from an ascii file format *.lgdd More...
 
virtual std::ostream & write_ascii_shape (std::ostream &out) const =0
 for internal use only (.agdd compatibility) More...
 
virtual std::istream & read_ascii_shape (std::istream &in)=0
 for internal use only (.agdd compatibility) More...
 
- Public Member Functions inherited from GranOO3::Physic::Body
 Body (Shape::Volume &shape, const Geom::Point &p, const Geom::Quaternion &q, double mass, const Geom::Tensor &inertia)
 constructor More...
 
 Body (Shape::Volume &shape, const Geom::Point &p)
 constructor More...
 
 Body (Shape::Volume &shape)
 constructor More...
 
virtual ~Body ()=0
 destructor More...
 
void set_inertia_tensor (const Geom::Tensor &inertia)
 set the inertia tensor value More...
 
void set_density (double density)
 set the density value More...
 
Geom::Vector compute_torque_at (const Geom::Point &A) const
 
double get_kinetic_energy () const
 
double get_mass () const
 get the current mass value of the body More...
 
void apply_force_at (const Geom::Vector &, const Geom::Point &)
 
const Shape::Volumeto_volume_shape () const
 cast the current object to Shape::Volume More...
 
Shape::Volumeto_volume_shape ()
 cast the current object to Shape::Volume More...
 
double get_volume () const
 get the current volume of the body More...
 
double get_bounding_radius () const
 get the current bounding radius of the body More...
 
AABB aabb () const
 get the aabb tree the body More...
 
bool collide (const Body &other, Collision::Data &col)
 collision detection with another body More...
 
bool collide (const Body &other)
 collision detection with another body More...
 
void make_equal_to (const Body &other)
 for equalizing two bodies More...
 
std::string info () const
 Display some useful info in the terminal
More...
 
virtual std::ostream & export_to_povray (std::ostream &out) const
 exporting to povray format More...
 
- Public Member Functions inherited from GranOO3::Physic::Node
 Node (const Geom::Vector &position)
 
 Node (const Geom::Point &position)
 
 Node ()
 
virtual ~Node ()
 
void clear_force ()
 
void clear_torque ()
 
const Geom::Framelocal_frame () const
 
void incremental_move (const Geom::Vector &vec)
 
void incremental_unmove (const Geom::Vector &vec)
 
void update_position_from_displacement ()
 
void update_displacement_from_position ()
 
void set_displacement (const Geom::Vector &)
 
void clear_displacement ()
 
void set_displacement_x (const double &)
 
void set_displacement_y (const double &)
 
void set_displacement_z (const double &)
 
void set_position (const Geom::Vector &)
 
void set_position_x (const double &)
 
void set_position_y (const double &)
 
void set_position_z (const double &)
 
void set_center (const Geom::Point &)
 
void update_initial_parameter_to_current_parameter ()
 
void update_from_fem ()
 
void update_from_dem ()
 
void add_interaction (Node &)
 
void erase_interaction (Node &)
 
bool interact_with (const Node &) const
 
bool interact_with (const Ground &) const
 
bool interact_with (const FEM::Surface &) const
 
void apply_force (const Geom::Vector &)
 
void apply_torque (const Geom::Vector &)
 
void set_quaternion_velocity_from_angular_velocity (const Geom::Vector &angularVelocity)
 
void set_quaternion_acceleration_from_angular_acceleration (const Geom::Vector &angularAcceleration, const Geom::Vector &angularVelocity)
 
void update_angular_velocity ()
 
virtual void clear_kinematic ()
 
Geom::Vector get_linear_velocity_at (const Geom::Point &) const
 
void make_equal_to (const Node &)
 
- Public Member Functions inherited from GranOO3::Core::Base
virtual ~Base ()
 
size_t numID () const
 
size_t uID () const
 
void set_numID (size_t val)
 
void clear_numID ()
 
Physic::Materialget_mat () const
 
void set_mat (Physic::Material *)
 
Baseitem ()
 
const Baseitem () const
 
bool is_same (const Base &) const
 
template<class T >
T & cast_to ()
 
template<class T >
const T & cast_to () const
 
template<class T >
bool is () const
 
virtual bool is (size_t) const
 
virtual const std::string & get_ID () const
 
virtual Baseclone ()
 
template<class T >
T & clone_to ()
 
Signal< Base & > & deleted_signal ()
 
- Public Member Functions inherited from GranOO3::Core::Null
 Null ()
 
virtual ~Null ()
 
- Public Member Functions inherited from GranOO3::Core::Drawable
 Drawable ()
 
virtual ~Drawable ()
 
virtual void draw_edge ()
 
virtual void init_default_color ()
 
virtual std::ostream & get_info (std::ostream &os) const
 
virtual const Colordefault_color () const
 
Colorget_color ()
 
const Colorget_color () const
 
virtual void set_color (const Color &)
 
virtual void set_alpha (float alpha)
 
void apply_color () const
 
void apply_edge_color () const
 
void apply_default_color ()
 
void apply_selected_color ()
 
void set_line_width (float)
 
float get_line_width () const
 
float & get_line_width ()
 
void apply_line_width () const
 
bool is_visible () const
 
void set_visible (bool)
 
void paint ()
 
void paint_edge ()
 
unsigned int get_item_glkey () const
 
- Public Member Functions inherited from GranOO3::Core::Register< Base >
 Register ()
 
virtual ~Register ()
 
void erase_from_all_setof ()
 
bool belong_to_setof (const std::string &setOfId) const
 
bool belong_to_setof (const SetOf< Base > &set) const
 
std::list< SetOf< Base > * > & get_setof_list ()
 
unsigned long long int get_numeric_ID () const
 
- Public Member Functions inherited from GranOO3::Core::PropClass< Node >
 PropClass ()
 
virtual ~PropClass ()
 
T & new_object ()
 
T & get ()
 
const T & get () const
 
bool prop_exist () const
 
void add_prop (Core::Prop< Node > *)
 
void remove_prop (Core::Prop< Node > *)
 
std::string info () const
 
- Public Member Functions inherited from GranOO3::Core::Register< Node >
 Register ()
 
virtual ~Register ()
 
void erase_from_all_setof ()
 
bool belong_to_setof (const std::string &setOfId) const
 
bool belong_to_setof (const SetOf< Node > &set) const
 
std::list< SetOf< Node > * > & get_setof_list ()
 
unsigned long long int get_numeric_ID () const
 
- Public Member Functions inherited from GranOO3::Core::PropClass< Body >
 PropClass ()
 
virtual ~PropClass ()
 
T & new_object ()
 
T & get ()
 
const T & get () const
 
bool prop_exist () const
 
void add_prop (Core::Prop< Body > *)
 
void remove_prop (Core::Prop< Body > *)
 
std::string info () const
 
- Public Member Functions inherited from GranOO3::Core::Register< Body >
 Register ()
 
virtual ~Register ()
 
void erase_from_all_setof ()
 
bool belong_to_setof (const std::string &setOfId) const
 
bool belong_to_setof (const SetOf< Body > &set) const
 
std::list< SetOf< Body > * > & get_setof_list ()
 
unsigned long long int get_numeric_ID () const
 
- Public Member Functions inherited from GranOO3::Core::Register< Tool >
 Register ()
 
virtual ~Register ()
 
void erase_from_all_setof ()
 
bool belong_to_setof (const std::string &setOfId) const
 
bool belong_to_setof (const SetOf< Tool > &set) const
 
std::list< SetOf< Tool > * > & get_setof_list ()
 
unsigned long long int get_numeric_ID () const
 

Static Public Member Functions

static Toolget (const std::string &ID)
 retrieve a tool with a given ID More...
 
static bool exist (const std::string &ID)
 check if the tool with the ID exists More...
 
static Toolglob (const std::string &ID)
 similar as get(const std::string& ID) More...
 
static Toolnew_object (const TiXmlElement *el)
 instantiate a new tool from the xml input file More...
 
- Static Public Member Functions inherited from GranOO3::Core::Base
static Baseget_by_numID (size_t)
 
static void clear_all_numID ()
 
static unsigned int get_sub_class_number ()
 
- Static Public Member Functions inherited from GranOO3::Core::Drawable
static Drawableget_drawable_item_by_glkey (int)
 
static void set_draw_precision (unsigned int p)
 
static void increase_draw_precision ()
 
static void decrease_draw_precision ()
 
static unsigned int get_draw_precision ()
 

Protected Member Functions

 Tool ()
 default constructor (for internal use only with seriaization) More...
 
- Protected Member Functions inherited from GranOO3::Core::Base
 Base ()
 

Private Member Functions

 Tool (const Tool &)=delete
 
Tooloperator= (const Tool &)=delete
 
template<class Archive >
void save (Archive &, const unsigned int) const
 complete serializing of the element in the *.gdd format More...
 
template<class Archive >
void load (Archive &, const unsigned int)
 complete serializing of the element in the *.gdd format More...
 
 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 

Private Attributes

std::string _ID
 the unique ID of the tool More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Static Public Attributes inherited from GranOO3::Core::Null
static Null null = Null()
 
- Static Protected Member Functions inherited from GranOO3::Core::Base
static unsigned int affect_class_rank_ID ()
 
- Protected Attributes inherited from GranOO3::Physic::Body
double _density
 the density value of the body More...
 
double _mass
 the mass value of the body More...
 
Geom::Tensor _inertia_tensor
 the inertia tensor of the body More...
 
Geom::Tensor _inverse_inertia_tensor
 the inverse of the inertia tensor of the body More...
 
- Protected Attributes inherited from GranOO3::Core::PropClass< Node >
std::vector< Core::Prop< Node > * > _prop
 
- Protected Attributes inherited from GranOO3::Core::PropClass< Body >
std::vector< Core::Prop< Body > * > _prop
 

Detailed Description

a base class that represents a rigid body with various shape into a discrete element simulation

Be aware, an Tool has no associated shape, so this is a pure virtual class. A shape is associated to an Tool through its child template class ToolT. Note that The Tool are included into the dynamic simulation as it derives from the Physic::Body class.

Constructor & Destructor Documentation

◆ Tool() [1/4]

GranOO3::DEM::Tool::Tool ( Shape::Volume shape,
const std::string &  ID,
const Geom::Point p,
const Geom::Quaternion q,
double  mass,
const Geom::Tensor inertia 
)

constructor

Parameters
[in]shape: the shape to clone
[in]ID: the ID of the tool (must be unique)
[in]p: initial position of the tool
[in]q: initial orientation of the tool
[in]mass: mass of the tool
[in]inertia: inertia tensor of the tool

Construct a new Tool and set directly its lengths, string ID, position, orientation, mass and inertia.

◆ Tool() [2/4]

GranOO3::DEM::Tool::Tool ( Shape::Volume shape)

constructor

Parameters
[in]shape: the shape to clone

Construct a new Tool. The tool is aligned with the global frame (see Geom::Frame::global). Its mass and inertia are set to zero.

◆ ~Tool()

GranOO3::DEM::Tool::~Tool ( )
pure virtual

destructor

◆ Tool() [3/4]

GranOO3::DEM::Tool::Tool ( const Tool )
privatedelete

◆ Tool() [4/4]

GranOO3::DEM::Tool::Tool ( )
protected

default constructor (for internal use only with seriaization)

Member Function Documentation

◆ add_glob()

void GranOO3::DEM::Tool::add_glob ( const std::string &  ID)
pure virtual

util method for reading an xml element

Parameters
[in]ID: the ID of the tool

Note that this method is mainly for internal use (XML parsing process).

◆ BOOST_SERIALIZATION_SPLIT_MEMBER()

GranOO3::DEM::Tool::BOOST_SERIALIZATION_SPLIT_MEMBER ( )
private

◆ draw()

void GranOO3::DEM::Tool::draw ( )
pure virtual

OpenGL draw of the bond

This method is used for drawing the bond. It is used by the granoo-viewer vizualization tool

Reimplemented from GranOO3::Physic::Node.

Implemented in GranOO3::DEM::ToolT< shape >.

◆ exist()

bool GranOO3::DEM::Tool::exist ( const std::string &  ID)
inlinestatic

check if the tool with the ID exists

Parameters
[in]ID: the ID of the tool
Returns
: true if a tool corresponds to the given ID, false otherwise.n.

◆ get()

Tool & GranOO3::DEM::Tool::get ( const std::string &  ID)
inlinestatic

retrieve a tool with a given ID

Parameters
[in]ID: the ID of the tool
Returns
: a tool that corresponds to the given ID

Note that if no Tool exists, this method raises an assertion.

◆ glob()

Tool & GranOO3::DEM::Tool::glob ( const std::string &  ID)
static

similar as get(const std::string& ID)

Parameters
[in]ID: the ID of the tool
Returns
: a tool that corresponds to the given ID

Note that this method is mainly for internal use (XML parsing process).

◆ info()

std::string GranOO3::DEM::Tool::info ( ) const
inlinevirtual
Returns
some useful info about the instance

Reimplemented from GranOO3::Physic::Node.

Reimplemented in GranOO3::DEM::ToolT< shape >.

◆ load()

template<class Archive >
void GranOO3::DEM::Tool::load ( Archive &  ar,
const unsigned int   
)
private

complete serializing of the element in the *.gdd format

See also
the Domain classes to get additional info about I/O

◆ new_object()

Tool * GranOO3::DEM::Tool::new_object ( const TiXmlElement *  el)
static

instantiate a new tool from the xml input file

Parameters
[in]el: the xml element that describes the tool
Returns
: a new instance of tool

Note that this method is mainly for internal use (XML parsing process).

◆ operator=()

Tool& GranOO3::DEM::Tool::operator= ( const Tool )
privatedelete

◆ read_ascii()

std::istream & GranOO3::DEM::Tool::read_ascii ( std::istream &  is)
virtual

update the current state of the element from an ascii file format *.lgdd

Parameters
[in]is: the stream where the data are read
Returns
the stream
See also
the Domain classes to get additional info about I/O

Reimplemented from GranOO3::Physic::Body.

Reimplemented in GranOO3::DEM::ToolT< shape >.

◆ read_ascii_shape()

std::istream & GranOO3::DEM::Tool::read_ascii_shape ( std::istream &  in)
pure virtual

for internal use only (.agdd compatibility)

Implemented in GranOO3::DEM::ToolT< shape >.

◆ read_xml_element()

void GranOO3::DEM::Tool::read_xml_element ( const TiXmlElement *  el)
virtual

read an xml element

Parameters
[in]el: the xml element that describes the tool

Note that this method is mainly for internal use (XML parsing process).

Reimplemented in GranOO3::DEM::ToolT< shape >.

◆ save()

template<class Archive >
void GranOO3::DEM::Tool::save ( Archive &  ar,
const unsigned int   
) const
private

complete serializing of the element in the *.gdd format

See also
the Domain classes to get additional info about I/O

◆ shape_class_ID()

std::string GranOO3::DEM::Tool::shape_class_ID ( ) const
pure virtual

get the class ID of the tool ("Cylinder", "Cone", etc...)

Returns
the shape class ID

Implemented in GranOO3::DEM::ToolT< shape >.

◆ write_ascii()

std::ostream & GranOO3::DEM::Tool::write_ascii ( std::ostream &  os) const
virtual

dump the current state of the tool in a ascii file (standard *.lgdd format)

Parameters
[in]os: the stream where the data will be written
Returns
the stream (with the expected additional data)
See also
the Domain classes to get additional info about I/O

Reimplemented from GranOO3::Physic::Body.

Reimplemented in GranOO3::DEM::ToolT< shape >.

◆ write_ascii_shape()

std::ostream & GranOO3::DEM::Tool::write_ascii_shape ( std::ostream &  out) const
pure virtual

for internal use only (.agdd compatibility)

Implemented in GranOO3::DEM::ToolT< shape >.

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ _ID

std::string GranOO3::DEM::Tool::_ID
private

the unique ID of the tool


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