![]() |
GranOO
3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
|
a special bond that must be used with Voronoi domain in order to model a perfect elastic media More...
#include <FlatBond.hpp>

Public Types | |
| enum | DrawMode { NO_INTERFACE , INTERFACE } |
Public Types inherited from GranOO3::DEM::Bond | |
| enum | FailureMode { NONE =0 , TENSION =1 , COMPRESSION =2 , SHEAR =3 } |
| enum | DrawMode { SOLID , LINE , NO } |
Public Member Functions | |
| FlatBond (Element &el1, Element &el2, bool build_voronoi_bond=true) | |
| FlatBond (Element &el1, Element &el2, double young_modulus, double poisson_ratio, bool build_voronoi_bond=true) | |
| virtual | ~FlatBond () |
| destructor More... | |
| void | update_strain_tensor_and_compute_reaction_force_and_torque () |
| update the reaction force and torque More... | |
| virtual void | compute_load () |
| trigger the computing of the reaction force and torque More... | |
| double | get_linear_stiffness () const |
| compute the linear stiffness of the bond More... | |
| double | get_angular_stiffness () const |
| similar as get_linear_stiffness() for rotation More... | |
| virtual double | compute_critical_time_step () const |
| compute the critical time of the bond More... | |
| virtual std::string | info () const |
| Display some useful info in the terminal More... | |
| virtual void | draw () |
| OpenGL draw of the bond More... | |
Public Member Functions inherited from GranOO3::DEM::Bond | |
| Bond (Element &el1, Element &el2, bool contact=false) | |
| Constructor. More... | |
| virtual | ~Bond ()=0 |
| Destructor. 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... | |
| 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< FlatBond > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< FlatBond > &set) const |
| std::list< SetOf< FlatBond > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Static Public Attributes | |
| static DrawMode | draw_mode = NO_INTERFACE |
| static bool | update_current_stress = false |
| static bool | update_current_strain = false |
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() |
Private Member Functions | |
| void | fail (const FailureMode mode) |
| FlatBond ()=delete | |
| FlatBond (const FlatBond &)=delete | |
| FlatBond & | operator= (const FlatBond &)=delete |
| template<class Archive > | |
| void | serialize (Archive &, const unsigned int) |
| complete serializing of the bond in the *.gdd format More... | |
Private Attributes | |
| VoronoiBond * | _voronoi_bond |
| a pointer to the associated VoronoiBond property More... | |
| bool | _manage_crack_closure |
| double | _young_modulus |
| the Young's modulus value of the flatbond in [Pa] More... | |
| double | _poisson_ratio |
| the Poisson's ratio of the flatbond in [-] More... | |
| double | _friction_coeff |
| double | _maximum_tensile_stress |
| the maximal tensile stress of the flatbond in [Pa] More... | |
| double | _maximum_compressive_stress |
| the maximal compressive stress of the flatbond in [Pa] More... | |
| double | _maximum_shear_stress |
| Geom::Point | _FC1 |
| the center of the voronoi facet expressed in the el1 local frame More... | |
| Geom::Point | _FC2 |
| the center of the voronoi facet expressed in the el2 local frame More... | |
| Geom::Vector | _current_stress_vector |
| the current value of the stress vector with the normal perpendicular to the Voronoi facet More... | |
| double | _current_normal_stress |
| double | _current_shear_stress |
| Geom::SymTensor | _current_stress_tensor |
| Geom::SymTensor | _current_strain_tensor |
Friends | |
| class | boost::serialization::access |
Additional Inherited Members | |
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 () |
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 |
a special bond that must be used with Voronoi domain in order to model a perfect elastic media
The flat bond models the interaction between two contiguous polyhedral elements given by a Voronoi tessellation. This model should be used for modeling a perfect brittle elastic media with DEM. This model does not require any calibration step, this is the main advantage. You can get a complete description here [1].
[1] Damien André, Jérémie Girardot and Cédric Hubert (2019). A novel DEM approach for modeling brittle elastic media based on distinct lattice spring model. Computer Methods in Applied Mechanics and Engineering.
| GranOO3::DEM::FlatBond::FlatBond | ( | Element & | el1, |
| Element & | el2, | ||
| double | young_modulus, | ||
| double | poisson_ratio, | ||
| bool | build_voronoi_bond = true |
||
| ) |
|
virtual |
destructor
Destroy a flatbond instance.
|
privatedelete |
|
privatedelete |
|
virtual |
compute the critical time of the bond
Note that this method computes on-the-fly the critical time step.
Implements GranOO3::Physic::CriticalTimeStep.
|
virtual |
trigger the computing of the reaction force and torque
Reimplemented from GranOO3::DEM::Bond.
|
inlinevirtual |
OpenGL draw of the bond
This method is used for fdrwaing the bond. It is used by the granoo-viewer vizualization tool
Reimplemented from GranOO3::DEM::Bond.
|
private |
|
virtual |
similar as get_linear_stiffness() for rotation
Reimplemented from GranOO3::DEM::Bond.
|
virtual |
compute the linear stiffness of the bond
Reimplemented from GranOO3::DEM::Bond.
|
virtual |
Display some useful info in the terminal
Reimplemented from GranOO3::DEM::Bond.
|
private |
| void GranOO3::DEM::FlatBond::update_strain_tensor_and_compute_reaction_force_and_torque | ( | ) |
update the reaction force and torque
The local strain tensor is first updated. Then, the reaction force and torque are computed based on this new value of local strain by simply applying Hook's law.
|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
the current value of the stress vector with the normal perpendicular to the Voronoi facet
|
private |
the center of the voronoi facet expressed in the el1 local frame
|
private |
the center of the voronoi facet expressed in the el2 local frame
|
private |
|
private |
|
private |
the maximal compressive stress of the flatbond in [Pa]
|
private |
|
private |
the maximal tensile stress of the flatbond in [Pa]
|
private |
the Poisson's ratio of the flatbond in [-]
|
private |
a pointer to the associated VoronoiBond property
A VoronoiBond property is automatically associated to the FlatBond as a FlatBond is supposed coming from a Voronoi domain.
|
private |
the Young's modulus value of the flatbond in [Pa]
|
static |
|
static |
|
static |