GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
BondStress.hpp
Go to the documentation of this file.
1 // This file is part of GranOO, a workbench for DEM simulation.
2 //
3 // Author(s) : - Jean-luc CHARLES I2M-DuMAS/ENSAM Talence France
4 // <jean-luc.charles@ensam.eu>
5 // - Damien ANDRE SPCTS/ENS Ceramique industrielle, Limoges France
6 // <damien.andre@unilim.fr>
7 // - Jeremie GIRARDOT I2M-DuMAS/ENSAM Talence France
8 // <jeremie.girardot@ensam.eu>
9 // - Cedric Hubert LAMIH/UVHC Valenciennes France
10 // <cedric.hubert@univ-valenciennes.fr>
11 // - Ivan IORDANOFF I2M-DuMAS-MPI/ENSAM Talence France
12 // <ivan.iordanoff@ensam.eu>
13 //
14 // Copyright (C) 2008-2016 JL. CHARLES, D. ANDRE, I. IORDANOFF, J. GIRARDOT
15 //
16 //
17 //
18 //
19 //
20 // This program is free software: you can redistribute it and/or modify
21 // it under the terms of the GNU General Public License as published by
22 // the Free Software Foundation, either version 3 of the License, or
23 // (at your option) any later version.
24 //
25 // This program is distributed in the hope that it will be useful,
26 // but WITHOUT ANY WARRANTY; without even the implied warranty of
27 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 // GNU General Public License for more details.
29 //
30 // You should have received a copy of the GNU General Public License
31 // along with this program. If not, see <http://www.gnu.org/licenses/>.
32 
33 
34 
35 #ifndef _LibDEM_Prop_BondStress_HPP
36 #define _LibDEM_Prop_BondStress_HPP
37 
38 
39 #include "GranOO3/Core/Prop.hpp"
40 #include "GranOO3/DEM/Bond.hpp"
42 
43 
44 
45 namespace GranOO3
46 {
47  namespace DEM
48  {
49 
50  class BondStress : public Core::Prop<Bond>,
51  public Core::Register<BondStress>
52  {
53 
54  GRANOO_CLASS(DEM::BondStress, Core::Prop<Bond>);
55 
56  public:
57  //CONSTRUCTORS & DESTRUCTORS
59  virtual ~BondStress();
60 
61  //USEFULL
62  virtual std::string info() const;
63 
64  //ACCESSORS
65  GRANOO_ACCESS(global_stress_tensor, Geom::SymTensor, _global_stress_tensor );
66  GRANOO_ACCESS(local_stress_tensor , Geom::SymTensor, _local_stress_tensor );
67  GRANOO_ACCESS(eigen_vector , Geom::Vector , _eigen_vector );
68 
69  //METHOD
70  void update_from_bond_strain_with_hook_law(double young_modulus, double poisson_ratio);
71 
72  private:
73  //Serialization
75  template<class Archive> void serialize(Archive& ar, const unsigned int );
76 
77  private:
82  };
83 
84 
85  inline std::string
86  BondStress::info() const {
87  std::ostringstream os;
88  return os.str();
89  }
90 
91  template<class Archive> void
92  BondStress::serialize(Archive& ar, const unsigned int version) {
93  ar & boost::serialization::base_object<Core::Prop<Bond>>(*this);
96  ar & _eigen_vector;
97  ar & _eigen_quaternion;
98  }
99 
100  }
101 }
102 
103 
104 #include <boost/serialization/version.hpp>
106 
107 
108 namespace GranOO3{
109  GRANOO_CLASS_DECLARE_TPL(DEM::BondStress);}
110 
111 
112 #endif
113 
BOOST_CLASS_VERSION(GranOO3::DEM::BondStress, 0) namespace GranOO3
Definition: BondStress.hpp:105
Definition: Prop.hpp:48
Definition: SetOf.hpp:346
a bond property able to associate and compute a full stress tensor to bonds.
Definition: BondStress.hpp:52
Geom::SymTensor _global_stress_tensor
the stress tensor expressed in the global frame
Definition: BondStress.hpp:78
void serialize(Archive &ar, const unsigned int)
complete serializing of the instance in the *.gdd format
Definition: BondStress.hpp:92
virtual ~BondStress()
destructor
Definition: BondStress.cpp:67
virtual std::string info() const
Definition: BondStress.hpp:86
Geom::Vector _eigen_vector
the eigen vector that represent the principal stresses
Definition: BondStress.hpp:80
void update_from_bond_strain_with_hook_law(double young_modulus, double poisson_ratio)
compute the current values of the stress tensors
Definition: BondStress.cpp:73
friend class boost::serialization::access
Definition: BondStress.hpp:74
Geom::Quaternion _eigen_quaternion
a quaternion that represents the rotation matrix that gives the diagonal stress tensor
Definition: BondStress.hpp:81
Geom::SymTensor _local_stress_tensor
the stress tensor expressed in the local bond frame
Definition: BondStress.hpp:79
Definition: Quaternion.hpp:54
Definition: SymTensor.hpp:68
Definition: Vector.hpp:75
Definition: Common.hpp:198
static char_cptr version
Definition: Exprtk.hpp:44221