![]() |
GranOO
3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
|
this class is able to transform a regular contact into a bond More...
#include <ContactBond.hpp>

Public Member Functions | |
| ContactBond (Element &el1, Element &el2) | |
| constructor More... | |
| virtual | ~ContactBond () |
| destructor More... | |
| void | init () |
| a method that must be overridden from the Bond class. In this case, it does nothing. More... | |
| virtual void | update () |
| a method that must be overridden from the Bond class. In this case, it does nothing. More... | |
| virtual void | compute_load () |
| a method that must be overridden from the Bond class. In this case, it just calls the Bond::compute_load() method. More... | |
| virtual double | compute_critical_time_step () const |
| this method is not implemented, it triggers an assertion if it is called. More... | |
| virtual std::string | info () const |
| Display some useful info in the terminal More... | |
Public Member Functions inherited from GranOO3::DEM::Bond | |
| Bond (Element &el1, Element &el2, bool contact=false) | |
| Constructor. More... | |
| virtual | ~Bond ()=0 |
| Destructor. More... | |
| virtual void | draw () |
| OpenGL draw of the bond More... | |
| Element & | get_item1 () |
| const Element & | get_item1 () const |
| Element & | get_item2 () |
| const Element & | get_item2 () const |
| Element & | item1 () |
| Element & | item2 () |
| double | get_normal_force_intensity () const |
| double | get_tangential_force_intensity () const |
| Element & | bonded_element (const Element &) |
| get the bonded element More... | |
| const Element & | get_bonded_element (const Element &) const |
| same as bonded_element(const Element&) (provided for convenience) More... | |
| virtual double | get_linear_stiffness () const |
| compute the linear stiffness of the bond More... | |
| virtual double | get_angular_stiffness () const |
| similar as get_linear_stiffness() for rotation More... | |
| void | apply_linear_damping_factor () |
| compute and apply the linear (translation) damping factor of the bond More... | |
| void | apply_angular_damping_factor () |
| similar as apply_linear_damping_factor() for rotation More... | |
| void | apply_load () |
| apply the computed reaction force and torque to the bonded Element (_element1 and _element2) More... | |
| void | disable (bool manage_slave=true) |
| disable the bond More... | |
| void | disable_fast_mode (bool manage_slave=true) |
| simply disable the bond by switching the _disabled attribute to true without doing the lot of things done by the disable() method More... | |
| void | enable (bool manage_slave=true) |
| simply enable the bond by switching the _disabled attribute to false More... | |
| bool | is_disabled () const |
| check if the bond is enable or not More... | |
| void | crack (bool manage_slave=true) |
| void | uncrack (bool manage_slave=true) |
| bool | is_cracked () const |
| void | init_local_frame (bool update_initial_param=false) |
| initialize the bond local frame More... | |
| void | update_local_frame () |
| update the bond local frame More... | |
| void | update_current_length () |
| update the current value of the bond length (see _current_length attribute) More... | |
| void | build_voronoi_bond () |
| build a voronoi bond from the current bond More... | |
| virtual void | stiffness_matrix (Eigen::MatrixXd &kMatrix) |
| assemble a stiffness matrix More... | |
| virtual void | update_dof () |
| update the bond dof More... | |
| const std::vector< unsigned int > & | get_dof () const |
| get the dof vector More... | |
| const Geom::Point & | initial_pos (const Element &) const |
get the initial position of the el element More... | |
| Geom::Vector | get_disp (const Element &) const |
get the displacement of the el element More... | |
| Geom::Vector | get_disp1 () const |
| get the displacement of the first bonded element (_element1) More... | |
| Geom::Vector | get_disp2 () const |
| similar as get_disp1() More... | |
| void | swap (Element &from, Element &to) |
swap the bond from the Element from to to More... | |
| void | add_slave (Bond &b) |
| add a slave bond (useful for periodic simulation) More... | |
| virtual std::ostream & | export_to_povray (std::ostream &out) const |
| exporting to povray format More... | |
Public Member Functions inherited from GranOO3::Physic::BodyInteraction | |
| BodyInteraction (Body &b1, Body &b2, bool contact_interaction) | |
| constructor More... | |
| virtual | ~BodyInteraction () |
| destructor More... | |
| void | apply_torque () |
| apply the current torque value More... | |
| void | clear_torque () |
| set the torques to zero More... | |
| Geom::Vector & | torque_on (const Body &b) |
get the torque value applied on b More... | |
| const Geom::Vector & | torque_on (const Body &b) const |
| same as BodyInteraction::torque_on More... | |
| void | add_label_torque (const std::string &label, const Geom::Vector &t1, const Geom::Vector &t2) |
| add a label for the torque More... | |
| void | swap (Body &from, Body &to) |
| swap one body More... | |
Public Member Functions inherited from GranOO3::Physic::NodeInteraction | |
| NodeInteraction (Node &de1, Node &de2, bool build_node_interaction) | |
| virtual | ~NodeInteraction () |
| bool | contact_interaction () const |
| void | apply_force () |
| void | clear_force () |
| Geom::Vector & | force_on (const Node &) |
| const Geom::Vector & | force_on (const Node &) const |
| void | swap (Node &from, Node &to) |
| virtual std::ostream & | write_ascii (std::ostream &out) const |
| void | add_label_force (const std::string &label, const Geom::Vector &f1, const Geom::Vector &f2) |
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::Material & | get_mat () const |
| void | set_mat (Physic::Material *) |
| Base & | item () |
| const Base & | item () 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 Base & | clone () |
| template<class T > | |
| T & | clone_to () |
| virtual std::istream & | read_ascii (std::istream &in) |
| 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 Color & | default_color () const |
| Color & | get_color () |
| const Color & | get_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::Register< NodeInteraction > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< NodeInteraction > &set) const |
| std::list< SetOf< NodeInteraction > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Public Member Functions inherited from GranOO3::Core::Register< BodyInteraction > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< BodyInteraction > &set) const |
| std::list< SetOf< BodyInteraction > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Public Member Functions inherited from GranOO3::Core::PropClass< Bond > | |
| PropClass () | |
| virtual | ~PropClass () |
| T & | new_object () |
| T & | get () |
| const T & | get () const |
| bool | prop_exist () const |
| void | add_prop (Core::Prop< Bond > *) |
| void | remove_prop (Core::Prop< Bond > *) |
| std::string | info () const |
Public Member Functions inherited from GranOO3::Core::Register< Bond > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< Bond > &set) const |
| std::list< SetOf< Bond > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Public Member Functions inherited from GranOO3::Core::Register< ContactBond > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< ContactBond > &set) const |
| std::list< SetOf< ContactBond > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Static Public Member Functions | |
| template<class T1 , class T2 > | |
| static void | init_contact_detection_step () |
| a static function that should be called just before running the Collision::Callback method More... | |
| template<class T1 , class T2 > | |
| static void | manage_contact (T1 &t1, T2 &t2) |
| a static function that should be called by the Collision::Callback method More... | |
| template<class T1 , class T2 > | |
| static void | apply_contact_load (T1 &t1, T2 &t2, const Geom::Vector &force, const Geom::Vector &torque, const Geom::Point &contact, const double surface=0.) |
| a static function that should be called by the Collision::Callback method More... | |
Static Public Member Functions inherited from GranOO3::DEM::Bond | |
| static double | get_disabled_cumulative_surface () |
| get the total surface disabled surface More... | |
Static Public Member Functions inherited from GranOO3::Core::Base | |
| static Base & | get_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 Drawable & | get_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 () |
Static Public Member Functions inherited from GranOO3::Physic::CriticalTimeStep | |
| static const std::set< CriticalTimeStep * > & | get_all () |
Private Member Functions | |
| ContactBond ()=delete | |
| ContactBond (const ContactBond &)=delete | |
| ContactBond & | operator= (const ContactBond &)=delete |
| template<class Archive > | |
| void | serialize (Archive &, const unsigned int) |
| complete serializing of the bond in the *.gdd format More... | |
Private Attributes | |
| const unsigned long long int | _numID |
| a unique indentifier computed from the two element unique IDs. More... | |
Static Private Attributes | |
| static std::map< unsigned long long int, ContactBond * > | _all_map = std::map<unsigned long long int, ContactBond*>() |
| a static private variable able to store all the contact bond with a unique ID More... | |
Friends | |
| class | boost::serialization::access |
Additional Inherited Members | |
Public Types inherited from GranOO3::DEM::Bond | |
| enum | FailureMode { NONE =0 , TENSION =1 , COMPRESSION =2 , SHEAR =3 } |
| enum | DrawMode { SOLID , LINE , NO } |
Static Public Attributes inherited from GranOO3::DEM::Bond | |
| static double | epsilon |
| a very small value used as a threshold More... | |
| static double | draw_solid_factor |
| static DrawMode | draw_mode = LINE |
| static Core::Signal< Bond & > | disable_signal = Core::Signal<Bond&>() |
| get the signal when a bond is disabled More... | |
Static Public Attributes inherited from GranOO3::Core::Null | |
| static Null | null = Null() |
Protected Member Functions inherited from GranOO3::DEM::Bond | |
| template<class Archive > | |
| void | save (Archive &, const unsigned int) const |
| template<class Archive > | |
| void | load (Archive &, const unsigned int) |
| BOOST_SERIALIZATION_SPLIT_MEMBER () | |
Protected Member Functions inherited from GranOO3::Core::Base | |
| Base () | |
Protected Member Functions inherited from GranOO3::Physic::CriticalTimeStep | |
| CriticalTimeStep () | |
| constructor More... | |
| virtual | ~CriticalTimeStep () |
| destructor More... | |
Static Protected Member Functions inherited from GranOO3::Core::Base | |
| static unsigned int | affect_class_rank_ID () |
Protected Attributes inherited from GranOO3::DEM::Bond | |
| Element * | _element1 |
| the first of the two bonded Element More... | |
| Element * | _element2 |
| the second of the two bonded Element More... | |
| double | _linear_damping_factor |
| the linear damping factor of the bond More... | |
| double | _angular_damping_factor |
| the angular damping factor of the bond More... | |
| double | _relaxed_length |
| the relaxed length of the bond. More... | |
| double | _current_length |
| the current length of the bond that correspond to the norm of the vector between the center of the bonded elements More... | |
| double | _max_relative_elongation |
| a threshold corresponding to a maximal admissible relative elongation (the longitudinal strain) More... | |
| double | _surface |
| this attribute stores the corresponding normal surface of the bond More... | |
| Core::SetOfBase< Bond > | _slave |
| a container that list the slave bond More... | |
| std::vector< unsigned int > | _dofs |
| a vector that stores the dof of the bond More... | |
Protected Attributes inherited from GranOO3::Physic::BodyInteraction | |
| Body * | _body1 |
| a pointer the first body More... | |
| Body * | _body2 |
| a pointer the second body More... | |
| Geom::Vector | _torque_on1 |
| the current value of the applied torque on the body 1 More... | |
| Geom::Vector | _torque_on2 |
| the current value of the applied torque on the body 2 More... | |
Protected Attributes inherited from GranOO3::Physic::NodeInteraction | |
| const bool | _contact_interaction |
| Node * | _node1 |
| Node * | _node2 |
| Geom::Vector | _force_on1 |
| Geom::Vector | _force_on2 |
Protected Attributes inherited from GranOO3::Core::PropClass< Bond > | |
| std::vector< Core::Prop< Bond > * > | _prop |
this class is able to transform a regular contact into a bond
This class is a trick class able to transform a regular contact into a standard. In certain conditions it should be useful to consider (persistent) bonds instead of (vanishing) contacts. For example, if you want to compute virial stresses, these feature is possible only with bond. So, you can use this trick to transform a contact into bond. Note that this process is time consuming and could have a non negligible impact on the computational performance. Note that this option is only available with the HertzMindlin and Standard2 contact callbacks (To learn how to use it, you can take a look into the 00016 example).
constructor
| [in] | el1 | : the first bonded element |
| [in] | el2 | : the second bonded element |
Build a new ContactBond instance and register it into the _all_map static attribute.
|
virtual |
destructor
Destroy ContactBond instance and unregister it from the _all_map static attribute.
|
privatedelete |
|
privatedelete |
|
inlinestatic |
a static function that should be called by the Collision::Callback method
| T1 | type of the first item in contact |
| T2 | type of the second item in contact |
| [in] | t1 | : the first item in contact |
| [in] | t2 | : the second item in contact |
| [in] | force | : the reaction force computed by the Collision::Callback method |
| [in] | torque | : the reaction torque computed by the Collision::Callback method |
| [in] | contact | the coordinate of the contact point |
This static function allows to override the reaction force and torque values that will be further applied by the Bond::apply_load() method.
|
virtual |
this method is not implemented, it triggers an assertion if it is called.
Implements GranOO3::Physic::CriticalTimeStep.
|
virtual |
a method that must be overridden from the Bond class. In this case, it just calls the Bond::compute_load() method.
Reimplemented from GranOO3::DEM::Bond.
|
virtual |
Display some useful info in the terminal
Reimplemented from GranOO3::DEM::Bond.
| void GranOO3::DEM::ContactBond::init | ( | ) |
a method that must be overridden from the Bond class. In this case, it does nothing.
|
inlinestatic |
a static function that should be called just before running the Collision::Callback method
| T1 | type of the first item in contact |
| T2 | type of the second item in contact |
This static function allows to prepare all the bond to receive information from the Collision::Callback method.
|
inlinestatic |
a static function that should be called by the Collision::Callback method
| T1 | type of the first item in contact |
| T2 | type of the second item in contact |
| [in] | t1 | : the first item in contact |
| [in] | t2 | : the second item in contact |
This static function allows to prepare the bond to receive information from the Collision::Callback method.
|
privatedelete |
|
private |
|
virtual |
a method that must be overridden from the Bond class. In this case, it does nothing.
|
friend |
|
staticprivate |
a static private variable able to store all the contact bond with a unique ID
This map allows to retrieve very quickly a ContactBond instance from the two items in interaction. To do such thing, a unique identifier (of unsigned long long int type) is generated from the two unique identifier of the bonded items. These identifiers are computing thanks to the Collision::Contact<T1, T2>::compute_ID(const T1& t1, const T2& t2) util method.
|
private |
a unique indentifier computed from the two element unique IDs.
This unique ID is used as key in the _all_map static attribute.