![]() |
GranOO
3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
|
a bond beam that works in tension, compression, bending and torsion More...
#include <Beam.hpp>
Public Member Functions | |
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 void | compute_load () |
compute the reaction force and torque of the beam 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... | |
virtual double | compute_critical_time_step () const |
compute the critical time of the bond More... | |
void | update_coeff_value () |
virtual void | draw () |
OpenGL draw of the bond More... | |
virtual std::string | info () const |
Display some useful info in the terminal More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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) |
![]() | |
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 () |
![]() | |
Null () | |
virtual | ~Null () |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 |
Static Public Member Functions | |
static unsigned int | get_broken_beam_number () |
![]() | |
static double | get_disabled_cumulative_surface () |
get the total surface disabled surface More... | |
![]() | |
static Base & | get_by_numID (size_t) |
static void | clear_all_numID () |
static unsigned int | get_sub_class_number () |
![]() | |
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 const std::set< CriticalTimeStep * > & | get_all () |
Protected Attributes | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
const bool | _contact_interaction |
Node * | _node1 |
Node * | _node2 |
Geom::Vector | _force_on1 |
Geom::Vector | _force_on2 |
![]() | |
std::vector< Core::Prop< Bond > * > | _prop |
Private Member Functions | |
Beam ()=delete | |
Beam (const Beam &frame)=delete | |
Beam & | operator= (const Beam &)=delete |
template<class Archive > | |
void | save (Archive &, const unsigned int) const |
complete serializing of the bond in the *.gdd format More... | |
template<class Archive > | |
void | load (Archive &, const unsigned int) |
complete serializing of the bond in the *.gdd format More... | |
BOOST_SERIALIZATION_SPLIT_MEMBER () | |
Static Private Attributes | |
static unsigned int | _broken_beam_number = 0 |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
![]() | |
enum | FailureMode { NONE =0 , TENSION =1 , COMPRESSION =2 , SHEAR =3 } |
enum | DrawMode { SOLID , LINE , NO } |
![]() | |
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 Null | null = Null() |
![]() | |
template<class Archive > | |
void | save (Archive &, const unsigned int) const |
template<class Archive > | |
void | load (Archive &, const unsigned int) |
BOOST_SERIALIZATION_SPLIT_MEMBER () | |
![]() | |
Base () | |
![]() | |
CriticalTimeStep () | |
constructor More... | |
virtual | ~CriticalTimeStep () |
destructor More... | |
![]() | |
static unsigned int | affect_class_rank_ID () |
a bond beam that works in tension, compression, bending and torsion
The bond beam models an Euler-Bernouilli Beam between two bonds. It is mainly used for modeling continuum with DEM. You can get a complete description here [1].
[1] André, D., Iordanoff, I., Charles, J. L., & Néauport, J. (2012). Discrete element method to simulate continuous material by using the cohesive beam model. Computer Methods in Applied Mechanics and Engineering, 213, 113-125.
constructor
[in] | el1 | : the first bonded element |
[in] | el2 | : the second bonded element |
Build a new beam between the Element el1
and el2
. Mechanical attributes are set to zero.
GranOO3::DEM::Beam::Beam | ( | Element & | el1, |
Element & | el2, | ||
double | young_mod, | ||
double | radius, | ||
double | poisson_ratio, | ||
double | max_stress = 0. |
||
) |
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] | radius | : 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 beam between the Element el1
and el2
with the required mechanical attributes. In case of continuum modeling, note that the max_stress
is not the best way for managing fracture. You may prefer to use the stress computation (see the ApplyFracture PlugIn) which gives more accurate results.
GranOO3::DEM::Beam::Beam | ( | Element & | el1, |
Element & | el2, | ||
double | young_mod, | ||
double | damping, | ||
double | radius, | ||
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] | damping | : the damping factor (in the [0,1] range) which is expressed as the ratio of the critical damping |
[in] | radius | : 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 beam between the Element el1
and el2
with the required mechanical attributes. In case of continuum modeling, note that the max_stress
is not the best way for managing fracture. You may prefer to use the stress computation (see the ApplyFracture PlugIn) which gives more accurate results.
|
virtual |
|
privatedelete |
|
privatedelete |
|
private |
|
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 |
compute the reaction force and torque of the beam
Reimplemented from GranOO3::DEM::Bond.
Reimplemented in GranOO3::DEM::PlasticBeamIT, and GranOO3::DEM::PlasticBeam.
|
inlinevirtual |
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::Bond.
Reimplemented in GranOO3::DEM::PlasticBeamIT, and GranOO3::DEM::PlasticBeam.
|
virtual |
similar as get_linear_stiffness() for rotation
Reimplemented from GranOO3::DEM::Bond.
|
static |
|
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.
Reimplemented in GranOO3::DEM::PlasticBeamIT, and GranOO3::DEM::PlasticBeam.
|
private |
|
private |
void GranOO3::DEM::Beam::update_coeff_value | ( | ) |
|
friend |
|
staticprivate |
|
protected |
the current maximal bending stress into the beam
|
protected |
the current maximal normal stress into the beam (sum of tensile and bending stresses)
|
protected |
the current maximal stress (including normal, bending and torsion stresses) in [Pa]
Note that the _max_stress threshold uses this value as computational reference for determining the maximal strength.
|
protected |
the current tensile stress into the beam
|
protected |
the current maximal torsion stress into the beam
|
protected |
for storing some intermediate values to speed-up the computation
|
protected |
for storing some intermediate values to speed-up the computation
|
protected |
for storing some intermediate values to speed-up the computation
|
protected |
for storing some intermediate values to speed-up the computation (Coulomb's modulus)
|
protected |
for storing some intermediate values to speed-up the computation (quadratic inertia)
|
protected |
for storing some intermediate values to speed-up the computation (quadratic polar inertia)
|
protected |
for storing some intermediate values to speed-up the computation (normal stiffness)
|
protected |
the maximal tensile stress of the beam in [Pa]
|
protected |
the Poisson's ratio of the beam in [-]
|
protected |
the radius of the beam in [m]
|
protected |
for storing some intermediate values to speed-up the computation (normal surface)
|
protected |
the Young's modulus value of the beam in [Pa]