KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
shell_to_solid_shell_process.h
Go to the documentation of this file.
1 // KRATOS ___| | | |
2 // \___ \ __| __| | | __| __| | | __| _` | |
3 // | | | | | ( | | | | ( | |
4 // _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS
5 //
6 // License: BSD License
7 // license: StructuralMechanicsApplication/license.txt
8 //
9 // Main authors: Vicente Mataix Ferrandiz
10 //
11 
12 #pragma once
13 
14 // System includes
15 #include <unordered_set>
16 
17 // External includes
18 
19 // Project includes
20 #include "processes/process.h"
21 #include "includes/model_part.h"
23 
24 /* Geometries defined */
25 #include "geometries/prism_3d_6.h"
27 
28 namespace Kratos
29 {
32 
36 
38  typedef std::size_t SizeType;
39 
43 
47 
56 template<SizeType TNumNodes>
57 class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) ShellToSolidShellProcess
58  : public Process
59 {
60 public:
63 
66 
68  typedef std::size_t IndexType;
69 
71  typedef Node NodeType;
73 
78 
82 
89  ModelPart& rThisModelPart,
90  Parameters ThisParameters = Parameters(R"({})")
91  );
92 
95  = default;
96 
100 
104 
108 
112 
116 
117  void operator()()
118  {
119  Execute();
120  }
121 
125 
126  void Execute() override;
127 
131  const Parameters GetDefaultParameters() const override;
132 
136 
137 
141 
142 
146 
148  std::string Info() const override
149  {
150  return "ShellToSolidShellProcess";
151  }
152 
154  void PrintInfo(std::ostream& rOStream) const override
155  {
156  rOStream << "ShellToSolidShellProcess";
157  }
158 
160  void PrintData(std::ostream& rOStream) const override
161  {
162  }
163 
167 
168 
170 
171 protected:
174 
175 
179 
180 
184 
185 
189 
193 
194 
198 
199 
203 
204 
206 
207 private:
210 
211 
215 
216  ModelPart& mrThisModelPart;
217  Parameters mThisParameters;
218 
222 
226 
231  void ReorderAllIds(const bool ReorderAccordingShellConnectivity = false);
232 
236  void ExecuteExtrusion();
237 
241  void ExecuteCollapse();
242 
248  void ReplacePreviousGeometry(
249  ModelPart& rGeometryModelPart,
250  ModelPart& rAuxiliaryModelPart
251  );
252 
258  void ReassignConstitutiveLaw(
259  ModelPart& rGeometryModelPart,
260  std::unordered_set<IndexType>& rSetIdProperties
261  );
262 
266  void InitializeElements();
267 
271  void ExportToMDPA();
272 
276  void CleanModel();
277 
281  inline void ComputeNodesMeanNormalModelPartNonHistorical();
282 
288  inline void CopyVariablesList(
289  NodeType::Pointer pNodeNew,
290  NodeType::Pointer pNodeOld
291  );
292 
296 
297 
301 
302 
306 
309 
311  //ShellToSolidShellProcess(ShellToSolidShellProcess const& rOther);
312 
313 
315 
316 }; // Class ShellToSolidShellProcess
317 
319 
322 
323 
327 
329 // inline std::istream& operator >> (std::istream& rIStream,
330 // ShellToSolidShellProcess& rThis);
331 //
332 // /// output stream function
333 // inline std::ostream& operator << (std::ostream& rOStream,
334 // const ShellToSolidShellProcess& rThis)
335 // {
336 // rThis.PrintInfo(rOStream);
337 // rOStream << std::endl;
338 // rThis.PrintData(rOStream);
339 //
340 // return rOStream;
341 // }
342 
343 }
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Geometry base class.
Definition: geometry.h:71
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
MeshType::ElementsContainerType ElementsContainerType
Element container. A vector set of Elements with their Id's as key.
Definition: model_part.h:168
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
The base class for all processes in Kratos.
Definition: process.h:49
This method transforms triangular and quadrilateral elements into prisms and hexahedra elements.
Definition: shell_to_solid_shell_process.h:59
std::size_t IndexType
The index definition.
Definition: shell_to_solid_shell_process.h:68
std::string Info() const override
Turn back information as a string.
Definition: shell_to_solid_shell_process.h:148
ModelPart::ConditionsContainerType ConditionsArrayType
Definition: shell_to_solid_shell_process.h:76
void operator()()
Definition: shell_to_solid_shell_process.h:117
Geometry< NodeType > GeometryType
Definition: shell_to_solid_shell_process.h:72
ModelPart::ElementsContainerType ElementsArrayType
Definition: shell_to_solid_shell_process.h:77
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: shell_to_solid_shell_process.h:160
~ShellToSolidShellProcess() override=default
Destructor.
ModelPart::NodesContainerType NodesArrayType
The definition of the containers.
Definition: shell_to_solid_shell_process.h:75
Node NodeType
Geometric type definitions.
Definition: shell_to_solid_shell_process.h:71
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: shell_to_solid_shell_process.h:154
KRATOS_CLASS_POINTER_DEFINITION(ShellToSolidShellProcess)
Pointer definition of ShellToSolidShellProcess.
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43