GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Friends | List of all members
GranOO3::DEM::FlatBond Class Reference

a special bond that must be used with Voronoi domain in order to model a perfect elastic media More...

#include <FlatBond.hpp>

Inheritance diagram for GranOO3::DEM::FlatBond:
Inheritance graph
[legend]

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...
 
Elementget_item1 ()
 
const Elementget_item1 () const
 
Elementget_item2 ()
 
const Elementget_item2 () const
 
Elementitem1 ()
 
Elementitem2 ()
 
double get_normal_force_intensity () const
 
double get_tangential_force_intensity () const
 
Elementbonded_element (const Element &)
 get the bonded element More...
 
const Elementget_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::Pointinitial_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::Vectortorque_on (const Body &b)
 get the torque value applied on b More...
 
const Geom::Vectortorque_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::Vectorforce_on (const Node &)
 
const Geom::Vectorforce_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::Materialget_mat () const
 
void set_mat (Physic::Material *)
 
Baseitem ()
 
const Baseitem () 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 Baseclone ()
 
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 Colordefault_color () const
 
Colorget_color ()
 
const Colorget_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
 
FlatBondoperator= (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 Baseget_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 Drawableget_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
 

Detailed Description

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.

Member Enumeration Documentation

◆ DrawMode

Enumerator
NO_INTERFACE 
INTERFACE 

Constructor & Destructor Documentation

◆ FlatBond() [1/4]

GranOO3::DEM::FlatBond::FlatBond ( Element el1,
Element el2,
bool  build_voronoi_bond = true 
)

◆ FlatBond() [2/4]

GranOO3::DEM::FlatBond::FlatBond ( Element el1,
Element el2,
double  young_modulus,
double  poisson_ratio,
bool  build_voronoi_bond = true 
)

◆ ~FlatBond()

GranOO3::DEM::FlatBond::~FlatBond ( )
virtual

destructor

Destroy a flatbond instance.

◆ FlatBond() [3/4]

GranOO3::DEM::FlatBond::FlatBond ( )
privatedelete

◆ FlatBond() [4/4]

GranOO3::DEM::FlatBond::FlatBond ( const FlatBond )
privatedelete

Member Function Documentation

◆ compute_critical_time_step()

double GranOO3::DEM::FlatBond::compute_critical_time_step ( ) const
virtual

compute the critical time of the bond

Returns
the maximal time step

Note that this method computes on-the-fly the critical time step.

Implements GranOO3::Physic::CriticalTimeStep.

◆ compute_load()

void GranOO3::DEM::FlatBond::compute_load ( )
virtual

trigger the computing of the reaction force and torque

Reimplemented from GranOO3::DEM::Bond.

◆ draw()

void GranOO3::DEM::FlatBond::draw ( )
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.

◆ fail()

void GranOO3::DEM::FlatBond::fail ( const FailureMode  mode)
private

◆ get_angular_stiffness()

double GranOO3::DEM::FlatBond::get_angular_stiffness ( ) const
virtual

similar as get_linear_stiffness() for rotation

Reimplemented from GranOO3::DEM::Bond.

◆ get_linear_stiffness()

double GranOO3::DEM::FlatBond::get_linear_stiffness ( ) const
virtual

compute the linear stiffness of the bond

Returns
the linear stiffness

Reimplemented from GranOO3::DEM::Bond.

◆ info()

std::string GranOO3::DEM::FlatBond::info ( ) const
virtual

Display some useful info in the terminal

Reimplemented from GranOO3::DEM::Bond.

◆ operator=()

FlatBond& GranOO3::DEM::FlatBond::operator= ( const FlatBond )
privatedelete

◆ serialize()

template<class Archive >
void GranOO3::DEM::FlatBond::serialize ( Archive &  ar,
const unsigned int  version 
)
private

complete serializing of the bond in the *.gdd format

See also
the Domain classes to get additional info about I/O

◆ update_strain_tensor_and_compute_reaction_force_and_torque()

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.

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ _current_normal_stress

double GranOO3::DEM::FlatBond::_current_normal_stress
private

◆ _current_shear_stress

double GranOO3::DEM::FlatBond::_current_shear_stress
private

◆ _current_strain_tensor

Geom::SymTensor GranOO3::DEM::FlatBond::_current_strain_tensor
private

◆ _current_stress_tensor

Geom::SymTensor GranOO3::DEM::FlatBond::_current_stress_tensor
private

◆ _current_stress_vector

Geom::Vector GranOO3::DEM::FlatBond::_current_stress_vector
private

the current value of the stress vector with the normal perpendicular to the Voronoi facet

◆ _FC1

Geom::Point GranOO3::DEM::FlatBond::_FC1
private

the center of the voronoi facet expressed in the el1 local frame

◆ _FC2

Geom::Point GranOO3::DEM::FlatBond::_FC2
private

the center of the voronoi facet expressed in the el2 local frame

◆ _friction_coeff

double GranOO3::DEM::FlatBond::_friction_coeff
private

◆ _manage_crack_closure

bool GranOO3::DEM::FlatBond::_manage_crack_closure
private

◆ _maximum_compressive_stress

double GranOO3::DEM::FlatBond::_maximum_compressive_stress
private

the maximal compressive stress of the flatbond in [Pa]

◆ _maximum_shear_stress

double GranOO3::DEM::FlatBond::_maximum_shear_stress
private

◆ _maximum_tensile_stress

double GranOO3::DEM::FlatBond::_maximum_tensile_stress
private

the maximal tensile stress of the flatbond in [Pa]

◆ _poisson_ratio

double GranOO3::DEM::FlatBond::_poisson_ratio
private

the Poisson's ratio of the flatbond in [-]

◆ _voronoi_bond

VoronoiBond * GranOO3::DEM::FlatBond::_voronoi_bond
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.

◆ _young_modulus

double GranOO3::DEM::FlatBond::_young_modulus
private

the Young's modulus value of the flatbond in [Pa]

◆ draw_mode

FlatBond::DrawMode GranOO3::DEM::FlatBond::draw_mode = NO_INTERFACE
static

◆ update_current_strain

bool GranOO3::DEM::FlatBond::update_current_strain = false
static

◆ update_current_stress

bool GranOO3::DEM::FlatBond::update_current_stress = false
static

The documentation for this class was generated from the following files: