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 Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
GranOO3::DEM::Bond Class Referenceabstract

the base class for all bonds between discrete elements. More...

#include <Bond.hpp>

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

Public Types

enum  FailureMode { NONE =0 , TENSION =1 , COMPRESSION =2 , SHEAR =3 }
 
enum  DrawMode { SOLID , LINE , NO }
 

Public Member Functions

 Bond (Element &el1, Element &el2, bool contact=false)
 Constructor. More...
 
virtual ~Bond ()=0
 Destructor. More...
 
virtual void draw ()
 OpenGL draw of the bond
More...
 
virtual std::string info () const
 Display some useful info in the terminal
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...
 
virtual void compute_load ()
 compute the reaction force and torque of the bond 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...
 
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
 

Static Public Member Functions

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 Attributes

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

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 Attributes

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
 

Private Member Functions

 Bond ()=delete
 
 Bond (const Bond &)=delete
 
Bondoperator= (const Bond &)=delete
 

Private Attributes

bool _disabled
 an attribute that stores the enable/disable state More...
 
bool _cracked
 
FailureMode _failure_mode
 
double _initial_length
 an attribute that stores the bond initial length More...
 
Geom::Point _initial_pos1
 the initial position of the _element1 expressed in the _element2 local frame More...
 
Geom::Point _initial_pos2
 the initial position of the _element2 expressed in the _element1 local frame More...
 
Geom::Quaternion _quat_element1
 the quaternion used for building the bond local frame (expressed in the _element1 local frame) More...
 
Geom::Quaternion _quat_element2
 same as the _quat_element1 but expressed in the _element2 local frame) More...
 
Geom::Quaternion _local_quat
 this the quaternion that must be updated for updating the _local_frame More...
 
Geom::Frame _local_frame
 the bond local frame, useful for making computation More...
 
Geom::Point _local_center_element1
 the center of _element1 expressed in the local frame. It is always equal to (0,0,0) More...
 
Geom::Frame _local_frame_element1
 this the frame that corresponds to the local _element1 frame expressed in the _local_frame More...
 
Geom::Point _local_center_element2
 
Geom::Frame _local_frame_element2
 

Static Private Attributes

static double _disabled_cumulative_surface = 0.
 the attribute where the total disabled surface is stored More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Static Protected Member Functions inherited from GranOO3::Core::Base
static unsigned int affect_class_rank_ID ()
 

Detailed Description

the base class for all bonds between discrete elements.

Bonds are a kind of interaction between discrete elements. The difference between a contact and a bond is :

During a DEM simulation contacts are destroyed and recreated many times, whereas a bond is created and deleted only one time.

The class DiscreteElement have a list of connected bond. The Bond constructor and destructor are implemented to update this list. So this list is automatically up to date.

Note that this class is not virtual. In some cases, it could be useful to instantiate a bond that does nothing. But be careful, if you call some methods like ComputeLoad() or GetCriticalTimeStep() methods, it will raise an assertion !

A bond can be disabled. It could be useful if you don't want to delete bonds during a simulation. You can get a specific SetOf, that contains all the disabled bonds, with the static method GetDisabledBonds().

Member Enumeration Documentation

◆ DrawMode

Enumerator
SOLID 
LINE 
NO 

◆ FailureMode

Enumerator
NONE 
TENSION 
COMPRESSION 
SHEAR 

Constructor & Destructor Documentation

◆ Bond() [1/3]

GranOO3::DEM::Bond::Bond ( Element el1,
Element el2,
bool  contact = false 
)

Constructor.

Parameters
[in]el1: a reference to the first bonded element
[in]el2: a reference to the second bonded element
[in]contact: use true if the bond comes from a contact (see Collision lib)

This constructor send a message to both elements to trigger the update of their bond lists.

◆ ~Bond()

GranOO3::DEM::Bond::~Bond ( )
pure virtual

Destructor.

This destructor send a message to both elements to trigger the update of their bond lists.

◆ Bond() [2/3]

GranOO3::DEM::Bond::Bond ( )
privatedelete

◆ Bond() [3/3]

GranOO3::DEM::Bond::Bond ( const Bond )
privatedelete

Member Function Documentation

◆ add_slave()

void GranOO3::DEM::Bond::add_slave ( Bond b)

add a slave bond (useful for periodic simulation)

Parameters
[in]b: the Bond to add as slave

This method can be used to add a slave method (see _slave attribute)

◆ apply_angular_damping_factor()

void GranOO3::DEM::Bond::apply_angular_damping_factor ( )

similar as apply_linear_damping_factor() for rotation

◆ apply_linear_damping_factor()

void GranOO3::DEM::Bond::apply_linear_damping_factor ( )

compute and apply the linear (translation) damping factor of the bond

Note that this method is automatically triggered by the apply_load() method (if the _linear_damping_factor value is different from zero).

◆ apply_load()

void GranOO3::DEM::Bond::apply_load ( )

apply the computed reaction force and torque to the bonded Element (_element1 and _element2)

Note that the reaction force must be updated with the virtual compute_load() method.

This method do not apply the loading if the bond is disabled (see _disabled attribute).

◆ bonded_element()

Element & GranOO3::DEM::Bond::bonded_element ( const Element el)
inline

get the bonded element

Parameters
[in]el: a reference to one of the two bonded element
Returns
the other bonded element
Warning
if the el element does not belong to the bond, this method raises an assertion

◆ BOOST_SERIALIZATION_SPLIT_MEMBER()

GranOO3::DEM::Bond::BOOST_SERIALIZATION_SPLIT_MEMBER ( )
protected

◆ build_voronoi_bond()

void GranOO3::DEM::Bond::build_voronoi_bond ( )

build a voronoi bond from the current bond

This method build a new VoronoiBond property from the current bond.

◆ compute_load()

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

compute the reaction force and torque of the bond

This method must be overridden by child classes. Note that this method checks if the _max_relative_elongation criterion is reached. This check is only done if the bond is active (see _disabled attribute).

This method do not apply the reaction force and torque to the bonded element. It is done by the apply_load() method.

Reimplemented in GranOO3::DEM::XBeam, GranOO3::DEM::Spring, GranOO3::DEM::SinterNeck_Viscous, GranOO3::DEM::SinterNeck_Rojek, GranOO3::DEM::SinterNeck_Martin, GranOO3::DEM::RepulsiveSpring, GranOO3::DEM::PlasticBeamIT, GranOO3::DEM::PlasticBeam, GranOO3::DEM::HertzSpring, GranOO3::DEM::FlatBond_Ortho, GranOO3::DEM::FlatBond, GranOO3::DEM::ContactBond, GranOO3::DEM::Beam, and GranOO3::DEM::AttractiveSpring.

◆ crack()

void GranOO3::DEM::Bond::crack ( bool  manage_slave = true)

◆ disable()

void GranOO3::DEM::Bond::disable ( bool  manage_slave = true)

disable the bond

if a bond is disabled, its reaction force and torque are not applied to the bonded element (see the apply_load() method). Note that this method does the following things :

  1. emit a signal for notifying that a bond is disabled
  2. managing the energy balance to store the current elastic energy of the disabled bond
  3. incrementing the value of the _disabled_cumulative_surface static attribute

◆ disable_fast_mode()

void GranOO3::DEM::Bond::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

◆ draw()

GranOO3::DEM::Bond::draw ( )
virtual

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::Core::Drawable.

Reimplemented in GranOO3::DEM::XBeam, GranOO3::DEM::SinterNeck, GranOO3::DEM::PlasticBeamIT, GranOO3::DEM::PlasticBeam, GranOO3::DEM::FlatBond, and GranOO3::DEM::Beam.

◆ enable()

void GranOO3::DEM::Bond::enable ( bool  manage_slave = true)

simply enable the bond by switching the _disabled attribute to false

Note that if you want to enable/disable a bond, it is preferable to use the disable_fast_mode() method instead of the disable() method.

◆ export_to_povray()

std::ostream & GranOO3::DEM::Bond::export_to_povray ( std::ostream &  os) const
virtual

exporting to povray format

Parameters
[in]os: the stream to write
Returns
the stream with the exporting data in the povray format

This method is used in the granoo-viewer for exporting a 3D scene to the povray program

Reimplemented from GranOO3::Core::Base.

◆ get_angular_stiffness()

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

◆ get_bonded_element()

const Element & GranOO3::DEM::Bond::get_bonded_element ( const Element de) const
inline

same as bonded_element(const Element&) (provided for convenience)

◆ get_disabled_cumulative_surface()

double GranOO3::DEM::Bond::get_disabled_cumulative_surface ( )
static

get the total surface disabled surface

Returns
the cumulative surface of the disabled bond

This static method simply returns the _disabled_cumulative_surface attribute which corresponds to the total surface of the disabled bonds. This feature could be useful to monitor the total crack surface in case of a lattice computation. To get more information, you can see alse the disable() method.

◆ get_disp()

Geom::Vector GranOO3::DEM::Bond::get_disp ( const Element el) const

get the displacement of the el element

Parameters
[in]el: the Element which the displacement is needed
Returns
A Geom::Vector corresponding to the displacement of el

Note that the returned displacement is expressed in the other element local frame. The behavior of this method is quite similar to the initial_pos(const Element& ) const method.

◆ get_disp1()

Geom::Vector GranOO3::DEM::Bond::get_disp1 ( ) const

get the displacement of the first bonded element (_element1)

Returns
A Geom::Vector corresponding to the displacement of _element1

Note that the returned displacement is expressed in the other element local frame (see the get_disp(const Element& ) const method)

◆ get_disp2()

Geom::Vector GranOO3::DEM::Bond::get_disp2 ( ) const

similar as get_disp1()

◆ get_dof()

const std::vector< unsigned int > & GranOO3::DEM::Bond::get_dof ( ) const
inline

get the dof vector

This method is useful for lattice FEM computation (see stiffness_matrix(Eigen::MatrixXd &kMatrix)

◆ get_item1() [1/2]

Element & GranOO3::DEM::Bond::get_item1 ( )
inline

◆ get_item1() [2/2]

const Element & GranOO3::DEM::Bond::get_item1 ( ) const
inline

◆ get_item2() [1/2]

Element & GranOO3::DEM::Bond::get_item2 ( )
inline

◆ get_item2() [2/2]

const Element & GranOO3::DEM::Bond::get_item2 ( ) const
inline

◆ get_linear_stiffness()

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

compute the linear stiffness of the bond

Returns
the linear stiffness

This method must be overridden by child classes. Note that this method returns 0 if it is not overridden. This method is mainly used for find the most rigid bond in order to compute the optimal time step of a simulation.

Reimplemented in GranOO3::DEM::Spring, GranOO3::DEM::SinterNeck, GranOO3::DEM::HertzSpring, GranOO3::DEM::FlatBond_Ortho, GranOO3::DEM::FlatBond, and GranOO3::DEM::Beam.

◆ get_normal_force_intensity()

double GranOO3::DEM::Bond::get_normal_force_intensity ( ) const

◆ get_tangential_force_intensity()

double GranOO3::DEM::Bond::get_tangential_force_intensity ( ) const

◆ info()

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

◆ init_local_frame()

void GranOO3::DEM::Bond::init_local_frame ( bool  update_initial_param = false)

initialize the bond local frame

A local frame (see _local_frame attribute) can be used for complex bond model where a complete local frame is needed for managing rotation, tangential elongation and so on..

Because managing local frame has a non-negligible computational cost, this is not automatically triggered. If you want to use local frame in a custom bond (that derives from this Bond class), you must trigger this method at the initialization step of your bond. If you don't need local frame, you can do nothing.

Note that, if you need a local frame, you must update the local frame position and orientation with update_local_frame() method just before the computation of your reaction force and torque.

◆ initial_pos()

const Geom::Point & GranOO3::DEM::Bond::initial_pos ( const Element el) const

get the initial position of the el element

Parameters
[in]el: the Element which the initial position is needed
Returns
A Geom::Point corresponding to the initial position of el

This method returns the _initial_pos1 or the _initial_pos2 attributes depending from the el which is passed as argument to this function. If the el does not correspond to one of the bonded element, this method triggers an assertion.

Note that the returned Geom::Point object is expressed in the other element local frame. It means that the _initial_pos1 is expressed in the _element2 local frame and the _initial_pos2 is expressed in the _element1 local frame.

◆ is_cracked()

bool GranOO3::DEM::Bond::is_cracked ( ) const
inline

◆ is_disabled()

bool GranOO3::DEM::Bond::is_disabled ( ) const
inline

check if the bond is enable or not

Returns
true if the current bond is enable and false if it is not the case (simply returns the
_disabled attribute)

◆ item1()

Element & GranOO3::DEM::Bond::item1 ( )
inline

◆ item2()

Element & GranOO3::DEM::Bond::item2 ( )
inline

◆ load()

template<class Archive >
void GranOO3::DEM::Bond::load ( Archive &  ar,
const unsigned int  version 
)
protected

◆ operator=()

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

◆ save()

template<class Archive >
void GranOO3::DEM::Bond::save ( Archive &  ar,
const unsigned int  version 
) const
protected

◆ stiffness_matrix()

void GranOO3::DEM::Bond::stiffness_matrix ( Eigen::MatrixXd &  kMatrix)
inlinevirtual

assemble a stiffness matrix

This method is useful for lattice FEM computation where a global stiffness matrix must be built. FEM computation is an experimental feature only available with the XBeam bond class.

Warning
by default this method triggers an asserting, it must be re-implemented by child classes

Reimplemented in GranOO3::DEM::XBeam.

◆ swap()

void GranOO3::DEM::Bond::swap ( Element from,
Element to 
)

swap the bond from the Element from to to

Parameters
[in]from: the Element to swap
[in]to: the new Element to bond

This method can be used to change the bonded element. Note that this method is really experimental !

◆ uncrack()

void GranOO3::DEM::Bond::uncrack ( bool  manage_slave = true)

◆ update_current_length()

void GranOO3::DEM::Bond::update_current_length ( )

update the current value of the bond length (see _current_length attribute)

◆ update_dof()

void GranOO3::DEM::Bond::update_dof ( )
inlinevirtual

update the bond dof

This method is useful for lattice FEM computation (see stiffness_matrix(Eigen::MatrixXd &kMatrix)

Reimplemented in GranOO3::DEM::XBeam.

◆ update_local_frame()

void GranOO3::DEM::Bond::update_local_frame ( )

update the bond local frame

if you use a local frame (see init_local_frame()), you must update this frame at each computation. To do such thing, you can override the compute_load() method for triggering this update just before the computation of your reaction force and torque.

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ _angular_damping_factor

double GranOO3::DEM::Bond::_angular_damping_factor
protected

the angular damping factor of the bond

◆ _cracked

bool GranOO3::DEM::Bond::_cracked
private

◆ _current_length

double GranOO3::DEM::Bond::_current_length
protected

the current length of the bond that correspond to the norm of the vector between the center of the bonded elements

Note that this attribute can be updated with update_current_length() method

◆ _disabled

bool GranOO3::DEM::Bond::_disabled
private

an attribute that stores the enable/disable state

◆ _disabled_cumulative_surface

double GranOO3::DEM::Bond::_disabled_cumulative_surface = 0.
staticprivate

the attribute where the total disabled surface is stored

See also
get_disabled_cumulative_surface()

◆ _dofs

double GranOO3::DEM::Bond::_dofs
protected

a vector that stores the dof of the bond

This is only used within lattice-FEM computations

◆ _element1

Element * GranOO3::DEM::Bond::_element1
protected

the first of the two bonded Element

◆ _element2

Element * GranOO3::DEM::Bond::_element2
protected

the second of the two bonded Element

◆ _failure_mode

FailureMode GranOO3::DEM::Bond::_failure_mode
private

◆ _initial_length

double GranOO3::DEM::Bond::_initial_length
private

an attribute that stores the bond initial length

◆ _initial_pos1

Geom::Point GranOO3::DEM::Bond::_initial_pos1
private

the initial position of the _element1 expressed in the _element2 local frame

◆ _initial_pos2

Geom::Point GranOO3::DEM::Bond::_initial_pos2
private

the initial position of the _element2 expressed in the _element1 local frame

◆ _linear_damping_factor

double GranOO3::DEM::Bond::_linear_damping_factor
protected

the linear damping factor of the bond

◆ _local_center_element1

Geom::Point GranOO3::DEM::Bond::_local_center_element1
private

the center of _element1 expressed in the local frame. It is always equal to (0,0,0)

◆ _local_center_element2

Geom::Point GranOO3::DEM::Bond::_local_center_element2
private

◆ _local_frame

Geom::Frame GranOO3::DEM::Bond::_local_frame
private

the bond local frame, useful for making computation

◆ _local_frame_element1

Geom::Frame GranOO3::DEM::Bond::_local_frame_element1
private

this the frame that corresponds to the local _element1 frame expressed in the _local_frame

◆ _local_frame_element2

Geom::Frame GranOO3::DEM::Bond::_local_frame_element2
private

◆ _local_quat

Geom::Quaternion GranOO3::DEM::Bond::_local_quat
private

this the quaternion that must be updated for updating the _local_frame

◆ _max_relative_elongation

double GranOO3::DEM::Bond::_max_relative_elongation
protected

a threshold corresponding to a maximal admissible relative elongation (the longitudinal strain)

If the bond reach this value, it is automatically disabled (see compute_load() method)

◆ _quat_element1

Geom::Quaternion GranOO3::DEM::Bond::_quat_element1
private

the quaternion used for building the bond local frame (expressed in the _element1 local frame)

◆ _quat_element2

Geom::Quaternion GranOO3::DEM::Bond::_quat_element2
private

same as the _quat_element1 but expressed in the _element2 local frame)

◆ _relaxed_length

double GranOO3::DEM::Bond::_relaxed_length
protected

the relaxed length of the bond.

The relaxed length is the length value where there reaction force are equal to zero. This is often equal to the initial length. However, it could be differ if you want to implement special deformation that induces a shift into the reaction force such as thermal expansion or plastic strain.

◆ _slave

Core::SetOfBase< Bond > GranOO3::DEM::Bond::_slave
protected

a container that list the slave bond

Slave bond are used in case of periodic simulation. In case of a periodic simulation, you can use the INIT-PERIODIC-BOND plugin to initialize the slave bond. Slave bonds are used at the boundary while a given bond on the frontier has a dual bond on the other frontier. In such a case, it is important to list all these dual bonds within the _slave container. It is mainly used when breaking a bond for breaking all the corresponding the bond slaves.

◆ _surface

double GranOO3::DEM::Bond::_surface
protected

this attribute stores the corresponding normal surface of the bond

This value is zero by default. However, in some cases, t could be practical to associate a surface to a bond for computing thermal conduction or crack surface. It have only a real physical sense in the case of VoronoiBond. In other case, some approximation could be done using IT methods (with platonic solids).

◆ disable_signal

Core::Signal< Bond & > GranOO3::DEM::Bond::disable_signal = Core::Signal<Bond&>()
static

get the signal when a bond is disabled

◆ draw_mode

Bond::DrawMode GranOO3::DEM::Bond::draw_mode = LINE
static

◆ draw_solid_factor

double GranOO3::DEM::Bond::draw_solid_factor
static

◆ epsilon

GranOO3::DEM::Bond::epsilon
static

a very small value used as a threshold

This threshold is used in the init_local_frame() for computing the local frame. This is quite complicated to explain, please take a look into the code, if you really want to know the usage of this variable.


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