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.
parabolic_profile_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: Eduardo Soudah
11 // Ruben Zorilla
12 //
13 
14 #if !defined(KRATOS_PARABOLIC_PROFILE_UTILITIES_H )
15 #define KRATOS_PARABOLIC_PROFILE_UTILITIES_H
16 
17 // System includes
18 
19 // External includes
20 
21 // Project includes
22 #include "includes/define.h"
23 #include "includes/model_part.h"
25 
26 // Application includes
27 
28 namespace Kratos
29 {
30 
33 
36 
38 class KRATOS_API(FLUID_DYNAMICS_BIOMEDICAL_APPLICATION) ParabolicProfileUtilities
39 {
40 public:
43 
46 
47  using NodeType = typename ModelPart::NodeType;
48 
52 
53  // Deleted default constructor
55 
58 
61 
65 
68 
72 
73  static double CalculateInletArea(const ModelPart& rModelPart);
74 
75  static ModelPart& CreateAndFillInletAuxiliaryVolumeModelPart(ModelPart& rInletModelPart);
76 
77  static void CalculateWallParallelDistance(
78  ModelPart& rWallModelPart,
79  ModelPart& rFluidModelPart,
80  const std::size_t WallDistanceLevels);
81 
82  static void ImposeParabolicInlet(
83  ModelPart &rModelPart,
84  const double MaxParabolaValue,
85  const double MaxValueFactor = 1.0);
86 
87  static void ImposeParabolicInlet(
88  ModelPart &rModelPart,
89  const GenericFunctionUtility::Pointer rMaxParabolaValue,
90  const double MaxValueFactor = 1.0);
91 
92  static void FreeParabolicInlet(ModelPart& rModelPart);
93 
95 private:
98 
99  template<class TInputType>
100  static void ImposeParabolicProfile(
101  ModelPart &rModelPart,
102  const TInputType& rMaxParabolaValue,
103  const double MaxValueFactor);
104 
105  template<class TInputType>
106  static double GetMaxParabolaValue(
107  const double Time,
108  const NodeType& rNode,
109  TInputType& rMaxParabolaValue);
110 
111  static double CalculateBoundingBoxCharacteristicLength(const ModelPart& rModelPart);
112 
114 }; // Class ParabolicProfileUtilities
115 
117 
119 
120 } // namespace Kratos.
121 
122 #endif // KRATOS_PARABOLIC_PROFILE_UTILITIES_H defined
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
Node NodeType
Definition: model_part.h:117
A set of functions to compute the Wall Shear Stress (WSS)
Definition: parabolic_profile_utilities.h:39
ParabolicProfileUtilities(ParabolicProfileUtilities const &rOther)=delete
Deleted copy constructor.
~ParabolicProfileUtilities()=default
Destructor.
KRATOS_CLASS_POINTER_DEFINITION(ParabolicProfileUtilities)
Pointer definition of ParabolicProfileUtilities.
ParabolicProfileUtilities & operator=(ParabolicProfileUtilities const &rOther)=delete
Deleted assignment operator.
typename ModelPart::NodeType NodeType
Definition: parabolic_profile_utilities.h:47
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21