![]() |
GranOO
3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
|
a property for computing stress associated to DEM::Element More...
#include <Stress.hpp>
Public Member Functions | |
Stress () | |
constructor More... | |
virtual | ~Stress () |
destructor More... | |
virtual std::string | info () const |
Display some useful info in the terminal More... | |
double | get_hydrostatic_stress () const |
get the hydrostatic stress More... | |
double | get_vonmises_stress () const |
get the von Mises stress More... | |
double | get_tresca_stress () const |
get the Tresca stress More... | |
void | add_criterion (double value) |
add a criterion, the criterion is often used for fracture but you can use it as you want More... | |
double & | criterion (size_t i) |
get the i_th criterion More... | |
void | compute_virial_stress () |
compute the stress using the virial method More... | |
void | compute_virial_stress_for (Element *de, unsigned int level, std::set< Element * > &set) |
a util recursive method for computing virial stress More... | |
void | compute_lsq_stress () |
compute the stress using a least square method (EXPERIMENTAL) More... | |
void | update_principal_stress () |
update the principal stresses from the current value of the _stress_tensor attribute More... | |
![]() | |
Prop () | |
virtual | ~Prop () |
Element & | item () |
const Element & | item () const |
void | set_item (Element &) |
virtual void | set_color (const Core::Color &) |
Core::Color & | get_color () |
float & | get_line_width () |
virtual void | add (SetOf< Prop< Element > > *) |
virtual void | erase (SetOf< Prop< Element > > *) |
virtual std::ostream & | write_ascii (std::ostream &out) const |
virtual std::istream & | read_ascii (std::istream &in) |
![]() | |
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::ostream & | export_to_povray (std::ostream &out) const |
Signal< Base & > & | deleted_signal () |
![]() | |
Null () | |
virtual | ~Null () |
![]() | |
Drawable () | |
virtual | ~Drawable () |
virtual void | draw () |
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_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< type > &set) const |
std::list< SetOf< type > * > & | 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< Stress > &set) const |
std::list< SetOf< Stress > * > & | get_setof_list () |
unsigned long long int | get_numeric_ID () const |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &ar, const unsigned int) |
complete serializing of the item in the *.gdd format More... | |
Private Attributes | |
Geom::SymTensor | _stress_tensor |
the main stress tensor which is updated by the compute_virial_stress() and the compute_lsq_stress() methods. More... | |
Geom::Point | _principal_point |
this is just a trick for having a local frame ("useless as this") More... | |
Geom::Quaternion | _principal_quat |
this quaternion that model the rotation matrix (from global frame) for retrieving the principal directions More... | |
Geom::Frame | _principal_frame |
the local frame which are expressed the principal stresses (principal direction) More... | |
Geom::Vector | _principal_stress |
a vector that stores the three principal stresses, note that the component are ordered like this X > Y > Z More... | |
double | _principal_stress_1 |
the value of the first (maximal) principal stress More... | |
double | _principal_stress_2 |
the value of the second (intermediate) principal stress More... | |
double | _principal_stress_3 |
the value of the third (lower) principal stress More... | |
double | _criterion |
the value of the main criterion (in case of only one criterion is applied) More... | |
std::vector< double > | _criterion_list |
the values of criteria (in case of many criteria are applied) More... | |
unsigned int | _neighbour_level |
the neighbor level (level of neighboring) for the computation of the virial stress. More... | |
double | _volume_fraction |
the volume fraction for computing virial stress (virial stress computation needs the real volume). More... | |
bool | _include_velocity |
a flag for including the velocity within the virial stress computation More... | |
bool | _periodic |
a flag for including priodic condition for the virial stress computation More... | |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
![]() | |
typedef Element | Owner |
![]() | |
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 Null | null = Null() |
![]() | |
virtual Base & | base_item () |
virtual const Base & | base_item () const |
void | serialize (Archive &ar, const unsigned int) |
![]() | |
Base () | |
![]() | |
static unsigned int | affect_class_rank_ID () |
a property for computing stress associated to DEM::Element
The aim of this DEM::Element property is to compute stresses associated to DEM::Element. Here, the method used for computing strains can be chosen between two methods :
[1] André, D., Jebahi, M., Iordanoff, I., Charles, J. L., & Néauport, J. (2013). Using the discrete element method to simulate brittle fracture in the indentation of a silica glass with a blunt indenter. Computer Methods in Applied Mechanics and Engineering, 265, 136-147.
GranOO3::DEM::Stress::Stress | ( | ) |
|
virtual |
void GranOO3::DEM::Stress::add_criterion | ( | double | value | ) |
add a criterion, the criterion is often used for fracture but you can use it as you want
[in] | value | : the treshold value of the criterion |
This method can be used to store one or more criteria within a DEM::Element. It can be used for applying different criteria with different discrete elements and/or applying more that one criteria to a given discrete element.
void GranOO3::DEM::Stress::compute_lsq_stress | ( | ) |
compute the stress using a least square method (EXPERIMENTAL)
The idea here is too use the same method as DEM::Strain for computing stresses by taking into account all the interaction forces and torques of neighbors element. However, it does not work as expected :-( TODO: debug this or remove this
This method update the _stress_tensor attribute using a least square method. The idea here is too use the same method as DEM::Strain for computing stresses by taking into account all the interaction forces and torques of neighbors element. However, it does not work as expected :-( TODO: debug this or remove this
void GranOO3::DEM::Stress::compute_virial_stress | ( | ) |
compute the stress using the virial method
This method update the _stress_tensor attribute using the virial stress method [1].
Nguyen, T. T., André, D., & Huger, M. (2019). Analytic laws for direct calibration of discrete element modeling of brittle elastic media using cohesive beam model. Computational Particle Mechanics, 6(3), 393-409.
void GranOO3::DEM::Stress::compute_virial_stress_for | ( | Element * | de, |
unsigned int | level, | ||
std::set< Element * > & | set | ||
) |
a util recursive method for computing virial stress
[in] | de | : a pointer to the current element for computing virial stress |
[in] | level | : the current neighbor level |
[in] | set | : that list of element that has been parsed |
This method is called by the compute_virial_stress() method. There is probably no reason for you to call directly this method. If you want to learn more about the neighbor level, please refer to [1].
Nguyen, T. T., André, D., & Huger, M. (2019). Analytic laws for direct calibration of discrete element modeling of brittle elastic media using cohesive beam model. Computational Particle Mechanics, 6(3), 393-409.
double & GranOO3::DEM::Stress::criterion | ( | size_t | i | ) |
get the i_th criterion
[in] | i | : the rank of the criterion to get |
This method can be used to retrieve the criterion value with its associated rank i
.
double GranOO3::DEM::Stress::get_hydrostatic_stress | ( | ) | const |
get the hydrostatic stress
Note that the hydrostatic is computed on the fly with the current vales of the _stress_tensor attribute.
double GranOO3::DEM::Stress::get_tresca_stress | ( | ) | const |
get the Tresca stress
Note that the Tresca is computed on the fly with the current vales of the _principal_stress_1 and the _principal_stress_3 attributes.
double GranOO3::DEM::Stress::get_vonmises_stress | ( | ) | const |
get the von Mises stress
Note that the von Mises is computed on the fly with the current vales of the _stress_tensor attribute.
|
virtual |
Display some useful info in the terminal
Reimplemented from GranOO3::Core::Prop< Element >.
|
private |
void GranOO3::DEM::Stress::update_principal_stress | ( | ) |
update the principal stresses from the current value of the _stress_tensor attribute
This method computes the principal stresses and stores the results in the _principal_stress,
_principal_stress_1, _principal_stress_2, _principal_stress_3 attributes
|
friend |
|
private |
the value of the main criterion (in case of only one criterion is applied)
|
private |
the values of criteria (in case of many criteria are applied)
|
private |
a flag for including the velocity within the virial stress computation
Based on our experiences, including velocity is useless but we let this option valid... just in case
|
private |
the neighbor level (level of neighboring) for the computation of the virial stress.
0 corresponds to the direct neighbors, 1 corresponds to the second level of neighbors and so on...
|
private |
a flag for including priodic condition for the virial stress computation
For neighbour level = 1, this flag must be activated when dealing with periodic condition because an element can interact with an other element situated at the other side of the domain. You can let this flag to false in other case.
|
private |
the local frame which are expressed the principal stresses (principal direction)
|
private |
this is just a trick for having a local frame ("useless as this")
|
private |
this quaternion that model the rotation matrix (from global frame) for retrieving the principal directions
|
private |
a vector that stores the three principal stresses, note that the component are ordered like this X > Y > Z
|
private |
the value of the first (maximal) principal stress
|
private |
the value of the second (intermediate) principal stress
|
private |
the value of the third (lower) principal stress
|
private |
the main stress tensor which is updated by the compute_virial_stress() and the compute_lsq_stress() methods.
|
private |
the volume fraction for computing virial stress (virial stress computation needs the real volume).