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.
hydraulic_fluid_auxiliary_utilities.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Uxue Chasco
11 
12 #pragma once
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
19 #include "geometries/geometry.h"
20 #include "includes/node.h"
21 #include "includes/model_part.h"
25 #include "../../FluidDynamicsApplication/custom_utilities/fluid_auxiliary_utilities.h"
26 
27 // Application includes
29 
30 namespace Kratos
31 {
34 
37 
38 class KRATOS_API(FLUID_DYNAMICS_HYDRAULICS_APPLICATION) HydraulicFluidAuxiliaryUtilities
39 {
40 public:
43 
44  using SizeType = std::size_t;
45 
46  using IndexType = std::size_t;
47 
48  using NodeType = Node;
49 
51 
53 
54  using ModifiedShapeFunctionsFactoryType = std::function<ModifiedShapeFunctions::UniquePointer(const GeometryType::Pointer, const Vector&)>;
55 
59 
68  static double CalculateWettedPetimeter(
69  ModelPart &rModelPart,
70  const Flags &rSkinFlag,
71  const Variable<double> &rDistanceVariable,
72  const bool IsHistorical);
75 
84  static double CalculateWettedArea(
85  ModelPart &rModelPart,
86  const Flags &rSkinFlag,
87  const Variable<double> &rDistanceVariable,
88  const bool IsHistorical);
89 
95  static double InitialWaterDepth(ModelPart &rModelPart);
96 
104  static void SetInletVelocity(ModelPart &rModelPart, double InletVelocity, const Variable<double> &rDistanceVariable);
105 
110  static void FreeInlet(ModelPart& rModelPart);
111 
118  static void SetInletFreeSurface(ModelPart &rModelPart, const Flags &rSkinFlag, const Variable<double> &rDistanceVariable);
119 
120 
122 
123 private :
124 
125  struct EdgeDataContainer
126  {
127  NodeType::Pointer pNodeI = nullptr;
128  NodeType::Pointer pNodeJ = nullptr;
129  SizeType NumberOfRepetitions = 0;
130  };
131 
132 }; // namespace Kratos
133 }
Definition: flags.h:58
Geometry base class.
Definition: geometry.h:71
PointerVector< TPointType > PointsArrayType
Definition: geometry.h:118
Definition: hydraulic_fluid_auxiliary_utilities.h:39
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class defines the node.
Definition: node.h:65
typename GeometryType::PointsArrayType PointsArrayType
Definition: hydraulic_fluid_auxiliary_utilities.h:52
std::function< ModifiedShapeFunctions::UniquePointer(const GeometryType::Pointer, const Vector &)> ModifiedShapeFunctionsFactoryType
Definition: hydraulic_fluid_auxiliary_utilities.h:54
std::size_t IndexType
Definition: hydraulic_fluid_auxiliary_utilities.h:46
std::size_t SizeType
Definition: hydraulic_fluid_auxiliary_utilities.h:44
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21