VM2D 1.14
Vortex methods for 2D flows simulation
Loading...
Searching...
No Matches
Wake2D.h
Go to the documentation of this file.
1/*--------------------------------*- VM2D -*-----------------*---------------*\
2| ## ## ## ## #### ##### | | Version 1.14 |
3| ## ## ### ### ## ## ## ## | VM2D: Vortex Method | 2026/03/06 |
4| ## ## ## # ## ## ## ## | for 2D Flow Simulation *----------------*
5| #### ## ## ## ## ## | Open Source Code |
6| ## ## ## ###### ##### | https://www.github.com/vortexmethods/VM2D |
7| |
8| Copyright (C) 2017-2026 I. Marchevsky, K. Sokol, E. Ryatina, A. Kolganova |
9*-----------------------------------------------------------------------------*
10| File name: Wake2D.h |
11| Info: Source code of VM2D |
12| |
13| This file is part of VM2D. |
14| VM2D is free software: you can redistribute it and/or modify it |
15| under the terms of the GNU General Public License as published by |
16| the Free Software Foundation, either version 3 of the License, or |
17| (at your option) any later version. |
18| |
19| VM2D is distributed in the hope that it will be useful, but WITHOUT |
20| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
21| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
22| for more details. |
23| |
24| You should have received a copy of the GNU General Public License |
25| along with VM2D. If not, see <http://www.gnu.org/licenses/>. |
26\*---------------------------------------------------------------------------*/
27
28
40#ifndef WAKE2D_H
41#define WAKE2D_H
42
43#include "WakeDataBase2D.h"
44
45namespace VM2D
46{
47
48 class Airfoil;
49 class AirfoilGeometry;
50
62 class Wake : public WakeDataBase
63 {
64 private:
66 std::vector<int> neighb;
67
68 //static const int knb = 5; //количество ближайших соседей
69 std::vector<int> neighbNew;
70
71 public:
72
76 Wake(const World2D& W_)
77 : WakeDataBase(W_)
78 {
81 };
82
84 ~Wake() { };
85
86
96 void Inside(const std::vector<Point2D>& newPos, Airfoil& afl, bool isMoves, const AirfoilGeometry& oldAfl);
97
103 void Restruct();
104
107 int RemoveFar();
108
111 size_t RemoveZero();
112
120 bool MoveInside(const Point2D& newPos, const Point2D& oldPos, const Airfoil& afl, size_t& panThrough) const;
121
130 bool MoveInsideMovingBoundary(const Point2D& newPos, const Point2D& oldPos, const AirfoilGeometry& oldAfl, const Airfoil& afl, size_t& panThrough) const;
131
137 void GetPairs(int type);
139 void GetPairsBS(int type);
140 void GetPairsClosestNeib(int type);
141
142 void GetPairsBH(int type);
143
144#if defined(USE_CUDA)
145 void GPUGetPairs(int type);
146 void GPUGetPairsClosestNeib(int type);
147#endif
148
156 int Collaps(int type, int times);
157 int CollapsNew(int type, int times);
158 int CollapsNewFast(int type, int times, std::vector<Vortex2D>& ri, std::vector<Vortex2D>& rj, std::vector<Point2D>& rnew, std::vector<std::pair<int, int>>& rindex);
159
162
165
166 };
167
168}//namespace VM2D
169
170#endif
Заголовочный файл с описанием класса WakeDataBase.
Класс, определяющий форму профиля
Definition Airfoil2D.h:66
Абстрактный класс, определяющий обтекаемый профиль
Definition Airfoil2D.h:182
Класс, опеделяющий набор вихрей
Класс, опеделяющий вихревой след (пелену)
Definition Wake2D.h:63
double collapseRightBorderParameter
абсцисса, правее которой происходит линейный (вправо) рост радиуса коллапса
Definition Wake2D.h:161
Wake(const World2D &W_)
Конструктор инициализации
Definition Wake2D.h:76
void GetPairsBS(int type)
Definition Wake2D.cpp:324
bool MoveInside(const Point2D &newPos, const Point2D &oldPos, const Airfoil &afl, size_t &panThrough) const
Проверка проникновения точки через границу профиля
Definition Wake2D.cpp:62
int RemoveFar()
Зануление далеко улетевших вихрей
Definition Wake2D.cpp:788
void GetPairsClosestNeib(int type)
Definition Wake2D.cpp:385
double collapseScaleParameter
характерный масштаб, на котором происходит рост радиуса коллапса
Definition Wake2D.h:164
std::vector< int > neighbNew
Definition Wake2D.h:69
std::vector< int > neighb
Вектор потенциальных соседей для будущего коллапса
Definition Wake2D.h:66
void GetPairs(int type)
Поиск ближайшего соседа
Definition Wake2D.cpp:318
size_t RemoveZero()
Исключение нулевых и мелких вихрей
Definition Wake2D.cpp:808
bool MoveInsideMovingBoundary(const Point2D &newPos, const Point2D &oldPos, const AirfoilGeometry &oldAfl, const Airfoil &afl, size_t &panThrough) const
Проверка проникновения точки через границу профиля
Definition Wake2D.cpp:178
void Restruct()
Реструктуризация вихревого следа
Definition Wake2D.cpp:831
int Collaps(int type, int times)
Коллапс вихрей
Definition Wake2D.cpp:475
~Wake()
Деструктор
Definition Wake2D.h:84
void Inside(const std::vector< Point2D > &newPos, Airfoil &afl, bool isMoves, const AirfoilGeometry &oldAfl)
Проверка пересечения вихрями следа профиля при перемещении
Definition Wake2D.cpp:273
void GetPairsBH(int type)
int CollapsNewFast(int type, int times, std::vector< Vortex2D > &ri, std::vector< Vortex2D > &rj, std::vector< Point2D > &rnew, std::vector< std::pair< int, int > > &rindex)
Definition Wake2D.cpp:685
int CollapsNew(int type, int times)
Definition Wake2D.cpp:590
Класс, опеделяющий текущую решаемую задачу
Definition World2D.h:74