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.
mapper_vertex_morphing_improved_integration.h
Go to the documentation of this file.
1 // ==============================================================================
2 // KratosShapeOptimizationApplication
3 //
4 // License: BSD License
5 // license: ShapeOptimizationApplication/license.txt
6 //
7 // Main authors: Baumgärtner Daniel, https://github.com/dbaumgaertner
8 // Geiser Armin, https://github.com/armingeiser
9 //
10 // ==============================================================================
11 
12 #ifndef MAPPER_VERTEX_MORPHING_IMPROVED_INTEGRATION_H
13 #define MAPPER_VERTEX_MORPHING_IMPROVED_INTEGRATION_H
14 
15 // ------------------------------------------------------------------------------
16 // System includes
17 // ------------------------------------------------------------------------------
18 #include <iostream>
19 #include <string>
20 
21 // ------------------------------------------------------------------------------
22 // Project includes
23 // ------------------------------------------------------------------------------
24 #include "mapper_vertex_morphing.h"
25 
26 // ==============================================================================
27 
28 namespace Kratos
29 {
30 
33 
37 
41 
45 
49 
51 
54 class KRATOS_API(SHAPE_OPTIMIZATION_APPLICATION) MapperVertexMorphingImprovedIntegration : public MapperVertexMorphing
55 {
56 public:
59 
62 
66 
68  MapperVertexMorphingImprovedIntegration( ModelPart& rOriginModelPart, ModelPart& rDestinationModelPart, Parameters MapperSettings )
69  : MapperVertexMorphing(rOriginModelPart, rDestinationModelPart, MapperSettings)
70  {
71  }
72 
75  {
76  }
77 
78 
82 
83 
87 
88  // --------------------------------------------------------------------------
89  void Initialize() override;
90 
91  void Update() override;
92  // --------------------------------------------------------------------------
93 
97 
98 
102 
103 
107 
109  std::string Info() const override
110  {
111  return "MapperVertexMorphingImprovedIntegration";
112  }
113 
115  void PrintInfo(std::ostream& rOStream) const override
116  {
117  rOStream << "MapperVertexMorphingImprovedIntegration";
118  }
119 
121  void PrintData(std::ostream& rOStream) const override
122  {
123  }
124 
125 
129 
130 
132 
133 protected:
136 
137 
141 
142 
146 
147 
151 
152 
156 
157 
161 
162 
166 
167 
169 
170 private:
173 
174 
178 
179  Element::IntegrationMethod mIntegrationMethod;
180  bool mAreaWeightedNodeSum;
181  std::vector<double> nodalAreas;
182 
186 
187 
191 
192  // --------------------------------------------------------------------------
193  void SetIntegrationMethod();
194 
195  // --------------------------------------------------------------------------
196  void FindNeighbourConditions();
197 
198  // --------------------------------------------------------------------------
199  virtual void ComputeWeightForAllNeighbors( const ModelPart::NodeType& node_i,
200  const NodeVector& neighbor_nodes,
201  const unsigned int number_of_neighbors,
202  std::vector<double>& list_of_weights,
203  double& sum_of_weights ) override;
204 
205  // --------------------------------------------------------------------------
206  void InitializeComputationOfMappingMatrix() override;
207  // --------------------------------------------------------------------------
208 
212 
213 
217 
218 
222 
224 // MapperVertexMorphingImprovedIntegration& operator=(MapperVertexMorphingImprovedIntegration const& rOther);
225 
227 // MapperVertexMorphingImprovedIntegration(MapperVertexMorphingImprovedIntegration const& rOther);
228 
229 
231 
232 }; // Class MapperVertexMorphingImprovedIntegration
233 
235 
238 
239 
243 
245 
246 
247 } // namespace Kratos.
248 
249 #endif // MAPPER_VERTEX_MORPHING_IMPROVED_INTEGRATION_H
IntegrationMethod
Definition: geometry_data.h:76
Short class definition.
Definition: mapper_vertex_morphing.h:58
Short class definition.
Definition: mapper_vertex_morphing_improved_integration.h:55
std::string Info() const override
Turn back information as a string.
Definition: mapper_vertex_morphing_improved_integration.h:109
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: mapper_vertex_morphing_improved_integration.h:115
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: mapper_vertex_morphing_improved_integration.h:121
virtual ~MapperVertexMorphingImprovedIntegration()
Destructor.
Definition: mapper_vertex_morphing_improved_integration.h:74
MapperVertexMorphingImprovedIntegration(ModelPart &rOriginModelPart, ModelPart &rDestinationModelPart, Parameters MapperSettings)
Default constructor.
Definition: mapper_vertex_morphing_improved_integration.h:68
KRATOS_CLASS_POINTER_DEFINITION(MapperVertexMorphingImprovedIntegration)
Pointer definition of MapperVertexMorphingImprovedIntegration.
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
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
void ComputeWeightForAllNeighbors(double &rSumOfWeights, std::vector< double > &rListOfWeights, const FilterFunction &rFilterFunction, const DampingFunction &rDampingFunction, const double Radius, const EntityPoint< TEntityType > &rDesignPoint, const std::vector< typename EntityPoint< TEntityType >::Pointer > &rNeighbourNodes, const std::vector< typename EntityPoint< TEntityType >::Pointer > &rDampingNeighbourNodes, const IndexType NumberOfNeighbours, Expression const *const pExpression)
Definition: explicit_filter.cpp:125
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21