VM2D  1.12
Vortex methods for 2D flows simulation
Wake2D.h
Go to the documentation of this file.
1 /*--------------------------------*- VM2D -*-----------------*---------------*\
2 | ## ## ## ## #### ##### | | Version 1.12 |
3 | ## ## ### ### ## ## ## ## | VM2D: Vortex Method | 2024/01/14 |
4 | ## ## ## # ## ## ## ## | for 2D Flow Simulation *----------------*
5 | #### ## ## ## ## ## | Open Source Code |
6 | ## ## ## ###### ##### | https://www.github.com/vortexmethods/VM2D |
7 | |
8 | Copyright (C) 2017-2024 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 WAKE_H
41 #define WAKE_H
42 
43 #include "WakeDataBase2D.h"
44 
45 namespace VM2D
46 {
47 
48  class Airfoil;
49 
59  class Wake : public WakeDataBase
60  {
61  private:
63  std::vector<int> neighb;
64 
65  static const int knb = 2; //количество ближайших соседей
66  std::vector<int> neighbNew;
67 
68  public:
69 
73  Wake(const World2D& W_)
74  : WakeDataBase(W_)
75  {
76  };
77 
79  ~Wake() { };
80 
81 
91  void Inside(const std::vector<Point2D>& newPos, Airfoil& afl, bool isMoves, const Airfoil& oldAfl);
92 
98  void Restruct();
99 
102  int RemoveFar();
103 
106  size_t RemoveZero();
107 
115  bool MoveInside(const Point2D& newPos, const Point2D& oldPos, const Airfoil& afl, size_t& panThrough);
116 
125  bool MoveInsideMovingBoundary(const Point2D& newPos, const Point2D& oldPos, const Airfoil& oldAfl, const Airfoil& afl, size_t& panThrough);
126 
132  void GetPairs(int type);
134  void GetPairsBS(int type);
135  void GetPairsBH(int type);
136 
137 #if defined(USE_CUDA)
138  void GPUGetPairs(int type);
139 #endif
140 
148  int Collaps(int type, int times);
149  int CollapsNew(int type, int times);
150 
153 
156 
157  };
158 
159 }//namespace VM2D
160 
161 #endif
Заголовочный файл с описанием класса WakeDataBase.
static const int knb
Definition: Wake2D.h:65
int RemoveFar()
Зануление далеко улетевших вихрей
Definition: Wake2D.cpp:635
double collapseRightBorderParameter
абсцисса, правее которой происходит линейный (вправо) рост радиуса коллапса
Definition: Wake2D.h:152
size_t RemoveZero()
Исключение нулевых и мелких вихрей
Definition: Wake2D.cpp:655
~Wake()
Деструктор
Definition: Wake2D.h:79
void GetPairsBH(int type)
void GetPairs(int type)
Поиск ближайшего соседа
Definition: Wake2D.cpp:317
Класс, опеделяющий вихревой след (пелену)
Definition: Wake2D.h:59
void GetPairsBS(int type)
Definition: Wake2D.cpp:323
bool MoveInside(const Point2D &newPos, const Point2D &oldPos, const Airfoil &afl, size_t &panThrough)
Проверка проникновения точки через границу профиля
Definition: Wake2D.cpp:66
Definition: Airfoil2D.h:45
bool MoveInsideMovingBoundary(const Point2D &newPos, const Point2D &oldPos, const Airfoil &oldAfl, const Airfoil &afl, size_t &panThrough)
Проверка проникновения точки через границу профиля
Definition: Wake2D.cpp:185
Класс, опеделяющий двумерный вектор
Definition: Point2D.h:75
int Collaps(int type, int times)
Коллапс вихрей
Definition: Wake2D.cpp:412
std::vector< int > neighbNew
Definition: Wake2D.h:66
Абстрактный класс, определяющий обтекаемый профиль
Definition: Airfoil2D.h:60
std::vector< int > neighb
Вектор потенциальных соседей для будущего коллапса
Definition: Wake2D.h:63
double collapseScaleParameter
характерный масштаб, на котором происходит рост радиуса коллапса
Definition: Wake2D.h:155
Wake(const World2D &W_)
Конструктор инициализации
Definition: Wake2D.h:73
Класс, опеделяющий текущую решаемую задачу
Definition: World2D.h:68
Класс, опеделяющий набор вихрей
void Inside(const std::vector< Point2D > &newPos, Airfoil &afl, bool isMoves, const Airfoil &oldAfl)
Проверка пересечения вихрями следа профиля при перемещении
Definition: Wake2D.cpp:279
int CollapsNew(int type, int times)
Definition: Wake2D.cpp:521
void Restruct()
Реструктуризация вихревого следа
Definition: Wake2D.cpp:685