GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
CrackClusterTracking.hpp
Go to the documentation of this file.
1 // This file is part of GranOO, a workbench for DEM simulation.
2 //
3 // Author(s) : - Damien Andre IRCER/UNILIM, Limoges France
4 // <damien.andre@unilim.fr>
5 // - Jean-luc Charles Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
6 // <jean-luc.charles@ensam.eu>
7 // - Jeremie Girardot Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
8 // <jeremie.girardot@ensam.eu>
9 // - Cedric Hubert LAMIH/UPHF, Valenciennes France
10 // <cedric.hubert@uphf.fr>
11 // - Ivan Iordanoff Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
12 // <ivan.iordanoff@ensam.eu>
13 //
14 // Copyright (C) 2008-2019 D. Andre, JL. Charles, J. Girardot, C. Hubert, I. Iordanoff
15 //
16 // This program is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 // This program is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU General Public License for more details.
25 //
26 // You should have received a copy of the GNU General Public License
27 // along with this program. If not, see <http://www.gnu.org/licenses/>.
28 
29 #ifndef _libDEM_ProcessPlugIn_CrackClusterTracking_hpp_
30 #define _libDEM_ProcessPlugIn_CrackClusterTracking_hpp_
31 
32 #include "GranOO3/Core/PlugIn.hpp"
33 
34 #include "GranOO3/Core/SetOf.hpp"
35 #include "GranOO3/Core/Domain.hpp"
36 #include "GranOO3/DEM/Element.hpp"
37 
38 #include "GranOO3/DEM/Util/CrackFacet.hpp"
39 
40 
41 namespace GranOO3
42 {
43  namespace PlugIn
44  {
45  class CrackClusterTracking : public Core::PlugInInterface<CrackClusterTracking> {
46 
47  DECLARE_STD_GRANOO_PLUGIN(CRACK-CLUSTER-TRACKING);
48 
49  using elpair = std::pair<const DEM::Element*, const DEM::Element*>;
50 
51  public:
54 
55  public:
56  void parse_xml();
57  void init();
58  void run();
59 
60 
61  private:
62  bool is_touch(const DEM::ElementT<Shape::Polyhedron>* current_el, const DEM::Bond* b1, const DEM::Bond* b2) const;
63  elpair make_pair(const DEM::Bond*);
64  void parse_cluster_recursive(DEM::CrackFacet* current, Core::SetOfBase<DEM::CrackFacet>& cluster,
65  std::map<DEM::CrackFacet*, Core::SetOfBase<DEM::CrackFacet>>& conn_table,
66  Core::SetOfBase<DEM::CrackFacet>& parsed_crack);
67 
68 
69  private:
70  std::map<elpair, std::vector<elpair>> _touching_facet_map;
71  std::string _crack_cluster_prefix;
72  bool _periodic;
73  };
74 
75  }
76 }
77 
78 #endif
Definition: PlugIn.hpp:177
Definition: SetOf.hpp:153
the base class for all bonds between discrete elements.
Definition: Bond.hpp:49
a template class that model an element with a given shape
Definition: ElementT.hpp:59
Definition: CrackClusterTracking.hpp:45
bool _periodic
Definition: CrackClusterTracking.hpp:72
std::string _crack_cluster_prefix
Definition: CrackClusterTracking.hpp:71
void parse_xml()
Definition: CrackClusterTracking.cpp:86
void init()
Definition: CrackClusterTracking.cpp:135
elpair make_pair(const DEM::Bond *)
Definition: CrackClusterTracking.cpp:93
~CrackClusterTracking()
Definition: CrackClusterTracking.cpp:82
void run()
Definition: CrackClusterTracking.cpp:215
void parse_cluster_recursive(DEM::CrackFacet *current, Core::SetOfBase< DEM::CrackFacet > &cluster, std::map< DEM::CrackFacet *, Core::SetOfBase< DEM::CrackFacet >> &conn_table, Core::SetOfBase< DEM::CrackFacet > &parsed_crack)
Definition: CrackClusterTracking.cpp:200
DECLARE_STD_GRANOO_PLUGIN(CRACK-CLUSTER-TRACKING)
std::map< elpair, std::vector< elpair > > _touching_facet_map
Definition: CrackClusterTracking.hpp:70
std::pair< const DEM::Element *, const DEM::Element * > elpair
Definition: CrackClusterTracking.hpp:49
bool is_touch(const DEM::ElementT< Shape::Polyhedron > *current_el, const DEM::Bond *b1, const DEM::Bond *b2) const
Definition: CrackClusterTracking.cpp:102
CrackClusterTracking()
Definition: CrackClusterTracking.cpp:75
Definition: Common.hpp:198