VM2D  1.12
Vortex methods for 2D flows simulation
Velocity2DBiotSavart.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: Velocity2DBiotSavart.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 VELOCITYBIOTSAVART_H
41 #define VELOCITYBIOTSAVART_H
42 
43 #include "Velocity2D.h"
44 
45 namespace VM2D
46 {
47 
48  class World2D;
49 
65  {
66  public:
70  VelocityBiotSavart(const World2D& W_);
71 
73  virtual ~VelocityBiotSavart();
74 
75 
76 
77 
85  void CalcConvVeloToSetOfPointsFromWake(const WakeDataBase& pointsDb, std::vector<Point2D>& velo, std::vector<double>& domainRadius, bool calcVelo, bool calcRadius);
86 #if defined (USE_CUDA)
87  void GPUCalcConvVeloToSetOfPointsFromWake(const WakeDataBase& pointsDb, std::vector<Point2D>& velo, std::vector<double>& domainRadius, bool calcVelo, bool calcRadius);
88  void GPUWakeToWakeFAST(const WakeDataBase& pointsDb, std::vector<Point2D>& velo, std::vector<double>& domainRadius, bool calcVelo, bool calcRadius);
89 #endif
90 
91  //реализация виртуальных функций
92  virtual void CalcConvVelo() override;
93  virtual void FillRhs(Eigen::VectorXd& rhs) const override;
94  virtual void CalcVeloToWakeVP() override;
95 
96 
103  void GetWakeInfluenceToRhs(const Airfoil& afl, std::vector<double>& wakeRhs) const;
104 #if defined(USE_CUDA)
105  void GPUGetWakeInfluenceToRhs(const Airfoil& afl, std::vector<double>& wakeRhs) const;
106  void GPUFASTGetWakeInfluenceToRhs(const Airfoil& afl, std::vector<double>& wakeRhs) const;
107  void GPUDiffVeloFAST(const WakeDataBase& pointsDb, const std::vector<double>& domainRadius, const WakeDataBase& vorticesDb, std::vector<double>& I1, std::vector<Point2D>& I2) const;
108 #endif
109 
110  void CalcDiffVeloI1I2ToWakeFromSheets(const WakeDataBase& pointsDb, const std::vector<double>& domainRadius, const Boundary& bnd, std::vector<double>& I1, std::vector<Point2D>& I2) override;
111  void CalcDiffVeloI1I2ToWakeFromWake(const WakeDataBase& pointsDb, const std::vector<double>& domainRadius, const WakeDataBase& vorticesDb, std::vector<double>& I1, std::vector<Point2D>& I2) override;
112 
113  };
114 
115 }//namespace VM2D
116 
117 #endif
void CalcDiffVeloI1I2ToWakeFromSheets(const WakeDataBase &pointsDb, const std::vector< double > &domainRadius, const Boundary &bnd, std::vector< double > &I1, std::vector< Point2D > &I2) override
Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле ...
Definition: Boundary2D.h:63
virtual ~VelocityBiotSavart()
Деструктор
void CalcConvVeloToSetOfPointsFromWake(const WakeDataBase &pointsDb, std::vector< Point2D > &velo, std::vector< double > &domainRadius, bool calcVelo, bool calcRadius)
Вычисление конвективных скоростей и радиусов вихревых доменов в заданном наборе точек от следа ...
void CalcDiffVeloI1I2ToWakeFromWake(const WakeDataBase &pointsDb, const std::vector< double > &domainRadius, const WakeDataBase &vorticesDb, std::vector< double > &I1, std::vector< Point2D > &I2) override
VelocityBiotSavart(const World2D &W_)
Конструктор
void GetWakeInfluenceToRhs(const Airfoil &afl, std::vector< double > &wakeRhs) const
Генерация вектора влияния вихревого следа на профиль
virtual void FillRhs(Eigen::VectorXd &rhs) const override
Расчет вектора правой части (всего)
Definition: Airfoil2D.h:45
virtual void CalcConvVelo() override
Вычисление конвективных скоростей вихрей и виртуальных вихрей в вихревом следе, а также в точках wake...
Абстрактный класс, определяющий обтекаемый профиль
Definition: Airfoil2D.h:60
Класс, опеделяющий текущую решаемую задачу
Definition: World2D.h:68
Абстрактный класс, определяющий способ вычисления скоростей
Definition: Velocity2D.h:97
Класс, опеделяющий набор вихрей
Заголовочный файл с описанием класса Velocity.
Класс, определяющий способ вычисления скоростей
virtual void CalcVeloToWakeVP() override
Вычисление скоростей в точках wakeVP.