13 #if !defined(KRATOS_DEFINE_3D_WAKE_PROCESS_H_INCLUDED )
14 #define KRATOS_DEFINE_3D_WAKE_PROCESS_H_INCLUDED
16 #include "concurrentqueue/concurrentqueue.h"
72 std::string
Info()
const override
74 return "Define3DWakeProcess";
78 void PrintInfo(std::ostream& rOStream)
const override
80 rOStream <<
"Define3DWakeProcess";
84 void PrintData(std::ostream& rOStream)
const override
103 bool mSwitchWakeDirection;
104 bool mCountElementsNumber;
105 bool mWriteElementsIdsToFile;
106 bool mShedWakeFromTrailingEdge;
107 bool mDecreaseWakeWidthAtTheWingTips;
110 double mSheddedWakeDistance;
111 double mSheddedWakeElementSize;
118 void InitializeTrailingEdgeSubModelpart()
const;
120 void InitializeWakeSubModelpart()
const;
122 void MarkTrailingEdgeNodesAndFindWingtipNodes();
124 void ComputeWingLowerSurfaceNormals()
const;
126 void ComputeAndSaveLocalWakeNormal()
const;
128 void ShedWakeSurfaceFromTheTrailingEdge()
const;
133 void CreateWakeSurfaceNodesAndElements(
IndexType& rNode_index,
139 const Properties::Pointer pElemProp)
const;
141 std::array<ModelPart::IndexType, 4> CreateWakeSurfaceNodes(
153 void CreateWakeSurfaceElements(
const double normal_projection,
155 const std::array<ModelPart::IndexType, 4>& rNodes_ids,
156 const Properties::Pointer pElemProp)
const;
158 void MarkWakeElements()
const;
160 void CheckIfTrailingEdgeElement(
Element& rElement,
162 moodycamel::ConcurrentQueue<std::size_t> & rTrailingEdgeElementsOrderedIds)
const;
164 void AddTrailingEdgeAndWakeElements(std::vector<std::size_t>& rWakeElementsOrderedIds,
165 std::vector<std::size_t>& rTrailingEdgeElementsOrderedIds)
const;
167 void FindClosestTrailingEdgeNode(NodeType::Pointer& pClosest_te_node,
170 void RecomputeNodalDistancesToWakeOrWingLowerSurface()
const;
172 void RecomputeDistance(NodeType::Pointer& pClosest_te_node,
175 void MarkKuttaElements()
const;
177 unsigned int CountNumberOfTrailindEdgeNodesInElement(
const Geometry<NodeType>& rGeometry)
const;
179 void CountNumberOfPositiveAndNegativeDistances(
181 unsigned int& number_of_nodes_with_negative_distance,
182 unsigned int& number_of_nodes_with_positive_distance)
const;
184 void SelectElementType(
Element& rElement,
186 const unsigned int number_of_te_nodes,
187 const unsigned int number_of_nodes_with_negative_distance,
188 const unsigned int number_of_nodes_with_positive_distance)
const;
190 void SaveLocalWakeNormalInElements()
const;
192 void AddWakeNodesToWakeModelPart()
const;
194 void CountElementsNumber()
const;
196 void WriteElementIdsToFile()
const;
214 rOStream << std::endl;
void ExecuteInitialize() override
Definition: periodic_interface_process.hpp:37
Auxiliary process to define the wake in 2 dimensional problems.
Definition: define_3d_wake_process.h:27
Node NodeType
Definition: define_3d_wake_process.h:35
Define3DWakeProcess & operator=(Define3DWakeProcess const &rOther)=delete
Assignment operator.
std::string Info() const override
Turn back information as a string.
Definition: define_3d_wake_process.h:72
KRATOS_CLASS_POINTER_DEFINITION(Define3DWakeProcess)
Pointer definition of Define3DWakeProcess.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: define_3d_wake_process.h:84
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: define_3d_wake_process.h:78
Define3DWakeProcess(Define3DWakeProcess const &rOther)=delete
Copy constructor.
~Define3DWakeProcess() override=default
Destructor.
Base class for all Elements.
Definition: element.h:60
Geometry base class.
Definition: geometry.h:71
Definition: amatrix_interface.h:41
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
The base class for all processes in Kratos.
Definition: process.h:49
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432