VM2D 1.14
Vortex methods for 2D flows simulation
Loading...
Searching...
No Matches
Mechanics2D.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: Mechanics2D.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 MECHANICS2D_H
41#define MECHANICS2D_H
42
43#include <memory>
44
45#include "defs.h"
46
47namespace VMlib
48{
49 class StreamParser;
50}
51
52namespace VM2D
53{
54 class Airfoil;
55 class Boundary;
56 class World2D;
57 struct VortexesParams;
58
72 {
73 private:
76
77 protected:
79 const World2D& W;
80
82 const size_t numberInPassport;
83
88
92
96
98 std::unique_ptr<VMlib::StreamParser> mechParamsParser;
99
100 public:
101
104
107
109 Point2D Vcm; double Wcm;
110
112 Point2D Rcm; double Phi;
113
116
119
122
125
126 public:
128 const bool isMoves;
129
131 const bool isDeform;
132
136
140
141
145
152 Mechanics(const World2D& W_, size_t numberInPassport_, bool isMoves_, bool isDeform_);
153
155 virtual ~Mechanics() { };
156
157
164 void Initialize(Point2D Vcm0_, Point2D Rcm0_, double Wcm0_, double Phi0_);
165
166
168 virtual void GetHydroDynamForce() = 0;
169
172
175
178
181
182
186 virtual Point2D VeloOfAirfoilRcm(double currTime) = 0;
187
191 virtual Point2D PositionOfAirfoilRcm(double currTime) = 0;
192
196 virtual double AngularVelocityOfAirfoil(double currTime) = 0;
197
201 virtual double AngleOfAirfoil(double currTime) = 0;
202
205 virtual void VeloOfAirfoilPanels(double currTime) = 0;
206
209 virtual void Move() = 0;
210 };
211
212}//namespace VM2D
213
214#endif
Абстрактный класс, определяющий обтекаемый профиль
Definition Airfoil2D.h:182
Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле
Definition Boundary2D.h:65
Абстрактный класс, определяющий вид механической системы
Definition Mechanics2D.h:72
const VortexesParams & virtVortParams
Definition Mechanics2D.h:95
std::unique_ptr< VMlib::StreamParser > mechParamsParser
Умный указатель на парсер параметров механической системы
Definition Mechanics2D.h:98
const bool isMoves
Переменная, отвечающая за то, двигается профиль или нет
virtual void VeloOfAirfoilPanels(double currTime)=0
Вычисление скоростей начал панелей
Point2D hydroDynamForce
Вектор гидродинамической силы и момент, действующие на профиль
void GeneratePositionHeader()
Генерация заголовка файла положения профиля
Point2D Vcm0
Начальная скорость центра и угловая скорость
const size_t numberInPassport
Номер профиля в паспорте
Definition Mechanics2D.h:82
Point2D RcmOld
Текущие положение профиля
virtual Point2D PositionOfAirfoilRcm(double currTime)=0
Вычисление положения центра масс профиля
void GeneratePositionString()
Сохранение строки со статистикой в файл нагрузок
virtual void ReadSpecificParametersFromDictionary()=0
Чтение параметров конкретной механической системы
void GenerateForcesString()
Сохранение строки со статистикой в файл нагрузок
virtual void Move()=0
Перемещение профиля в соответствии с законом
virtual double AngularVelocityOfAirfoil(double currTime)=0
Вычисление угловой скорости профиля
virtual Point2D VeloOfAirfoilRcm(double currTime)=0
Вычисление скорости центра масс профиля
Point2D VcmOld
Скорость и отклонение с предыдущего шага
const World2D & W
Константная ссылка на решаемую задачу
Definition Mechanics2D.h:79
virtual ~Mechanics()
Деструктор
void Initialize(Point2D Vcm0_, Point2D Rcm0_, double Wcm0_, double Phi0_)
Задание начального положения и начальной скорости
Point2D Rcm
Текущие положение профиля
const bool isDeform
Переменная, отвечающая за то, деформируется профиль или нет
Point2D Rcm0
Начальное положение профиля
virtual void GetHydroDynamForce()=0
Вычисление гидродинамической силы, действующей на профиль
void ReadParametersFromDictionary()
Парсинг списка параметров механической системы
Point2D viscousForce
Вектор силы и момент вязкого трения, действующие на профиль
double circulationOld
Циркуляция скорости по границе профиля с предыдущего шага
double hydroDynamMoment
Airfoil & afl
Definition Mechanics2D.h:87
Point2D Vcm
Текущие скорость центра и угловая скорость
virtual double AngleOfAirfoil(double currTime)=0
Вычисление угла поворота профиля
void GenerateForcesHeader()
Генерация заголовка файла нагрузок
double circulation
Текущая циркуляция скорости по границе профиля
const Boundary & boundary
Definition Mechanics2D.h:91
Класс, опеделяющий текущую решаемую задачу
Definition World2D.h:74
Класс, позволяющий выполнять разбор файлов и строк с настройками и параметрами
Описание базовых вспомогательных функций
Структура, определяющая параметры виртуальных вихрей для отдельного профиля
Definition Velocity2D.h:70