![]() |
GranOO
3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
|
a bond model that represents a beam able to handle plastic deformation. More...
#include <PlasticBeam.hpp>

Public Member Functions | |
| PlasticBeam (Element &el1, Element &el2) | |
| constructor More... | |
| PlasticBeam (Element &el1, Element &el2, double young_mod, double damp, double rad, double poisson_ratio, double max_stress) | |
| constructor More... | |
| virtual | ~PlasticBeam () |
| destructor More... | |
| virtual void | compute_load () |
| trigger the computing of the reaction force and torque More... | |
| virtual std::string | info () const |
| Display some useful info in the terminal More... | |
| virtual void | draw () |
| OpenGL draw of the bond More... | |
| bool | is_plastic () const |
| util method to know if the beam is exhibiting plastic deformation More... | |
| void | enable_plastic_mode () |
| a method that enable the plastic mode More... | |
Public Member Functions inherited from GranOO3::DEM::Beam | |
| Beam (Element &el1, Element &el2) | |
| constructor More... | |
| Beam (Element &el1, Element &el2, double young_mod, double radius, double poisson_ratio, double max_stress=0.) | |
| constructor More... | |
| Beam (Element &el1, Element &el2, double young_mod, double damping, double radius, double poisson_ratio, double max_stress) | |
| constructor More... | |
| virtual | ~Beam () |
| 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... | |
| virtual double | compute_critical_time_step () const |
| compute the critical time of the bond More... | |
| void | update_coeff_value () |
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< Beam > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< Beam > &set) const |
| std::list< SetOf< Beam > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Public Member Functions inherited from GranOO3::Core::Register< PlasticBeam > | |
| Register () | |
| virtual | ~Register () |
| void | erase_from_all_setof () |
| bool | belong_to_setof (const std::string &setOfId) const |
| bool | belong_to_setof (const SetOf< PlasticBeam > &set) const |
| std::list< SetOf< PlasticBeam > * > & | get_setof_list () |
| unsigned long long int | get_numeric_ID () const |
Private Member Functions | |
| PlasticBeam ()=delete | |
| PlasticBeam (const PlasticBeam &)=delete | |
| PlasticBeam & | operator= (const PlasticBeam &)=delete |
| template<class Archive > | |
| void | serialize (Archive &, const unsigned int) |
| complete serializing of the bond in the *.gdd format More... | |
Private Attributes | |
| bool | _plastic |
| a Boolean variable to know if the beam is currently in plastic mode or not More... | |
| double | _max_elastic_relative_elongation |
| the elastic limit in terms of deformation More... | |
| double | _max_normal_force |
| this attribute is able to store the current maximal normal force (for internal usage only) More... | |
| double | _max_bending_force |
| this attribute is able to store the current maximal bending force (for internal usage only) 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 Member Functions inherited from GranOO3::DEM::Beam | |
| static unsigned int | get_broken_beam_number () |
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 () |
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::Beam | |
| double | _young_modulus |
| the Young's modulus value of the beam in [Pa] More... | |
| double | _radius |
| the radius of the beam in [m] More... | |
| double | _poisson_ratio |
| the Poisson's ratio of the beam in [-] More... | |
| double | _max_stress |
| the maximal tensile stress of the beam in [Pa] More... | |
| double | _current_stress |
| the current maximal stress (including normal, bending and torsion stresses) in [Pa] More... | |
| double | _current_tensile_stress |
| the current tensile stress into the beam More... | |
| double | _current_bending_stress |
| the current maximal bending stress into the beam More... | |
| double | _current_torsion_stress |
| the current maximal torsion stress into the beam More... | |
| double | _current_normal_stress |
| the current maximal normal stress into the beam (sum of tensile and bending stresses) More... | |
| double | _Ig |
| for storing some intermediate values to speed-up the computation (quadratic inertia) More... | |
| double | _factor_Tb |
| for storing some intermediate values to speed-up the computation More... | |
| double | _Io |
| for storing some intermediate values to speed-up the computation (quadratic polar inertia) More... | |
| double | _G |
| for storing some intermediate values to speed-up the computation (Coulomb's modulus) More... | |
| double | _factor_Tt |
| for storing some intermediate values to speed-up the computation More... | |
| double | _S |
| for storing some intermediate values to speed-up the computation (normal surface) More... | |
| double | _K |
| for storing some intermediate values to speed-up the computation (normal stiffness) More... | |
| double | _factor_Fb |
| for storing some intermediate values to speed-up the computation More... | |
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 bond model that represents a beam able to handle plastic deformation.
This class derives from the DEM::Beam class.
constructor
| [in] | el1 | : the first bonded element |
| [in] | el2 | : the second bonded element |
Build a new plastic beam between the Element el1 and el2. Mechanical attributes are set to zero.
| GranOO3::DEM::PlasticBeam::PlasticBeam | ( | Element & | el1, |
| Element & | el2, | ||
| double | young_mod, | ||
| double | damp, | ||
| double | rad, | ||
| double | poisson_ratio, | ||
| double | max_stress | ||
| ) |
constructor
| [in] | el1 | : the first bonded element |
| [in] | el2 | : the second bonded element |
| [in] | young_mod | : the Young's modulus of the beam in [Pa] |
| [in] | damp | : the damping factor (in the [0,1] range) which is expressed as the ratio of the critical damping |
| [in] | rad | : the radius of the beam in [m] |
| [in] | poisson_ratio | : the Poisson's ratio value of the beam |
| [in] | max_stress | : the maximal stress threshold of the beam in [Pa] (note that zero means infinite strength) |
Build a new plastic beam between the Element el1 and el2 with the required mechanical attributes.
|
virtual |
destructor
Destroy a plastic beam instance.
|
privatedelete |
|
privatedelete |
|
virtual |
trigger the computing of the reaction force and torque
The plastic deformation is computed in this method.
Reimplemented from GranOO3::DEM::Beam.
|
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::DEM::Beam.
| void GranOO3::DEM::PlasticBeam::enable_plastic_mode | ( | ) |
a method that enable the plastic mode
This method must be triggered when the beam becomes plastic. This method allows to store a set of variable able to manage the plastic deformation.
|
virtual |
Display some useful info in the terminal
Reimplemented from GranOO3::DEM::Beam.
|
inline |
util method to know if the beam is exhibiting plastic deformation
true if the beam is currently exhibiting plastic deformation false otherwiseThis method simply returns the _plastic attribute
|
privatedelete |
|
private |
|
friend |
|
private |
this attribute is able to store the current maximal bending force (for internal usage only)
|
private |
the elastic limit in terms of deformation
This attribute is able to drive the elastic limit. Here, the criterion is expressed through a maximal relative elongation (longitudinal deformation). If the current elongation is higher than the _max_elastic_relative_elongation, the plastic mode is enable.
|
private |
this attribute is able to store the current maximal normal force (for internal usage only)
|
private |
a Boolean variable to know if the beam is currently in plastic mode or not