VM2D 1.14
Vortex methods for 2D flows simulation
Loading...
Searching...
No Matches
VM2D::Boundary Class Referenceabstract

Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле More...

#include <Boundary2D.h>

Inheritance diagram for VM2D::Boundary:
Collaboration diagram for VM2D::Boundary:

Public Member Functions

 Boundary (const World2D &W_, size_t numberInPassport_, int sheetDim_)
 Конструктор
 
virtual ~Boundary ()
 Деструктор
 
virtual void FillMatrixSelf (Eigen::MatrixXd &matr, Eigen::VectorXd &lastLine, Eigen::VectorXd &lactCol)=0
 Генерация блока матрицы
 
virtual void FillIQSelf (std::pair< Eigen::MatrixXd, Eigen::MatrixXd > &IQ)=0
 Генерация блока матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2, влияние профиля самого на себя
 
virtual void FillMatrixFromOther (const Boundary &otherBoundary, Eigen::MatrixXd &matr)=0
 Генерация блока матрицы влияния от другого профиля того же типа
 
virtual void FillIQFromOther (const Boundary &otherBoundary, std::pair< Eigen::MatrixXd, Eigen::MatrixXd > &IQ)=0
 Генерация блока матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2, влияние одного профиля на другой
 
virtual void CalcConvVelocityToSetOfPointsFromSheets (const WakeDataBase &pointsDb, std::vector< Point2D > &velo) const =0
 Вычисление конвективных скоростей в наборе точек, вызываемых наличием слоев вихрей и источников на профиле
 
size_t GetUnknownsSize () const
 Возврат размерности вектора решения
 
virtual void SolutionToFreeVortexSheetAndVirtualVortex (const Eigen::VectorXd &sol)=0
 Пересчет решения на интенсивность вихревого слоя и на рождаемые вихри на конкретном профиле
 
virtual void ComputeAttachedSheetsIntensity ()=0
 Вычисление интенсивностей присоединенного вихревого слоя и присоединенного слоя источников
 
virtual void GetInfluenceFromVorticesToRectPanel (size_t panel, const Vortex2D *ptr, ptrdiff_t count, std::vector< double > &wakeRhs) const =0
 Вычисление влияния части подряд идущих вихрей из вихревого следа на прямолинейную панель для правой части
 
virtual void GetInfluenceFromSourcesToRectPanel (size_t panel, const Vortex2D *ptr, ptrdiff_t count, std::vector< double > &wakeRhs) const =0
 Вычисление влияния части подряд источников из области течения на прямолинейную панель для правой части
 
virtual void GetInfluenceFromVortexSheetAtRectPanelToVortex (size_t panel, const Vortex2D &vtx, Point2D &vel) const =0
 Вычисление влияния вихревых слоев (свободный + присоединенный) конкретной прямолинейной панели на вихрь в области течения ///.
 
virtual void GetInfluenceFromSourceSheetAtRectPanelToVortex (size_t panel, const Vortex2D &vtx, Point2D &vel) const =0
 Вычисление влияния слоя источников конкретной прямолинейной панели на вихрь в области течения
 
virtual void GetInfluenceFromVInfToRectPanel (std::vector< double > &vInfRhs) const =0
 Вычисление влияния набегающего потока на прямолинейную панель для правой части
 

Public Attributes

const Airfoilafl
 
int minVortexPerPanel
 Минимальное число вихрей, рождаемых на панели профиля и формирующих виртуальный вихревой след
 
std::vector< std::pair< int, int > > vortexBeginEnd
 Номера первого и последнего вихрей, рождаемых на каждой панели профиля (формируется после решения СЛАУ)
 
VirtualWake virtualWake
 Виртуальный вихревой след конкретного профиля
 
size_t sheetDim
 Размерность параметров каждого из слоев на каждой из панелей
 
Sheet sheets
 Слои на профиле
 
Sheet oldSheets
 Слои на профиле с предыдущего шага
 

Protected Attributes

const World2DW
 Константная ссылка на решаемую задачу
 
const size_t numberInPassport
 Номер профиля в паспорте
 

Detailed Description

Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле

Author
Марчевский Илья Константинович
Сокол Ксения Сергеевна
Рятина Евгения Павловна
Колганова Александра Олеговна

\Version 1.14

Date
6 марта 2026 г.

Definition at line 64 of file Boundary2D.h.

Constructor & Destructor Documentation

◆ Boundary()

Boundary::Boundary ( const World2D W_,
size_t  numberInPassport_,
int  sheetDim_ 
)

Конструктор

Parameters
[in]W_константная ссылка на решаемую задачу
[in]numberInPassport_номер профиля в паспорте задачи
[in]sheetDim_размерность параметра слоя на каждой панели профиля (сколько чисел используется, чтобы описать слой на каждой панели);

Definition at line 53 of file Boundary2D.cpp.

53 :
54 W(W_ ),
55 numberInPassport(numberInPassport_),
56 afl(W_.getAirfoil(numberInPassport_)),
57 virtualWake(W_, *this),
58 sheetDim(sheetDim_),
59 sheets(W_, sheetDim_),
60 oldSheets(W_, sheetDim_)
61{
62 virtualWake.vtx.resize(0);
63 virtualWake.vecHalfGamma.resize(0);
64
67
69}//Boundary(...)
size_t getNumberOfPanels() const
Возврат количества панелей на профиле
Definition Airfoil2D.h:163
Sheet oldSheets
Слои на профиле с предыдущего шага
Definition Boundary2D.h:99
const World2D & W
Константная ссылка на решаемую задачу
Definition Boundary2D.h:68
size_t sheetDim
Размерность параметров каждого из слоев на каждой из панелей
Definition Boundary2D.h:93
const Airfoil & afl
Definition Boundary2D.h:77
Sheet sheets
Слои на профиле
Definition Boundary2D.h:96
int minVortexPerPanel
Минимальное число вихрей, рождаемых на панели профиля и формирующих виртуальный вихревой след
Definition Boundary2D.h:80
VirtualWake virtualWake
Виртуальный вихревой след конкретного профиля
Definition Boundary2D.h:86
const size_t numberInPassport
Номер профиля в паспорте
Definition Boundary2D.h:71
void SetLayers(size_t np)
Установка pазмерностей всех векторов и их обнуление
Definition Sheet2D.cpp:60
std::vector< Point2D > vecHalfGamma
Скорость вихрей виртуального следа конкретного профиля (равна Gamma/2) используется для расчета давле...
std::vector< Vortex2D > vtx
Список вихревых элементов
const Airfoil & getAirfoil(size_t i) const
Возврат константной ссылки на объект профиля
Definition World2D.h:157
Here is the call graph for this function:

◆ ~Boundary()

virtual VM2D::Boundary::~Boundary ( )
inlinevirtual

Деструктор

Definition at line 109 of file Boundary2D.h.

109{ };

Member Function Documentation

◆ CalcConvVelocityToSetOfPointsFromSheets()

virtual void VM2D::Boundary::CalcConvVelocityToSetOfPointsFromSheets ( const WakeDataBase pointsDb,
std::vector< Point2D > &  velo 
) const
pure virtual

Вычисление конвективных скоростей в наборе точек, вызываемых наличием слоев вихрей и источников на профиле

Вычисляет конвективные скорости в наборе точек, которые вызваны влиянием слоев вихрей и источников на профиле

Parameters
[in]pointsDbконстантная ссылка на базу данных вихрей, в точках которых вычисляются скорости
[out]veloссылка на вектор скоростей, которые приобретают точки из-за влияния слоев вихрей и источников на профиле
Warning
velo — накапливается!

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Here is the caller graph for this function:

◆ ComputeAttachedSheetsIntensity()

virtual void VM2D::Boundary::ComputeAttachedSheetsIntensity ( )
pure virtual

Вычисление интенсивностей присоединенного вихревого слоя и присоединенного слоя источников

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

◆ FillIQFromOther()

virtual void VM2D::Boundary::FillIQFromOther ( const Boundary otherBoundary,
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > &  IQ 
)
pure virtual

Генерация блока матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2, влияние одного профиля на другой

Генерирует блок матрицы влияния от другого профиля того же типа

Parameters
[in]otherBoundaryконстантная ссылка на граничное условие на втором профиле
[out]IQссылка на пару матриц, выражающих взаимные влияния (касательные и нормальные) панелей профиля
Todo:
Пока считается, что граничные условия одинаковые

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

◆ FillIQSelf()

virtual void VM2D::Boundary::FillIQSelf ( std::pair< Eigen::MatrixXd, Eigen::MatrixXd > &  IQ)
pure virtual

Генерация блока матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2, влияние профиля самого на себя

Parameters
[out]IQссылка на генерируемую матрицу

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

◆ FillMatrixFromOther()

virtual void VM2D::Boundary::FillMatrixFromOther ( const Boundary otherBoundary,
Eigen::MatrixXd &  matr 
)
pure virtual

Генерация блока матрицы влияния от другого профиля того же типа

Генерирует блок матрицы влияния от другого профиля того же типа

Parameters
[in]otherBoundaryконстантная ссылка на граничное условие на втором профиле
[out]matrссылка на генерируемый блок матрицы
Todo:
Пока считается, что граничные условия одинаковые

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

◆ FillMatrixSelf()

virtual void VM2D::Boundary::FillMatrixSelf ( Eigen::MatrixXd &  matr,
Eigen::VectorXd &  lastLine,
Eigen::VectorXd &  lactCol 
)
pure virtual

Генерация блока матрицы

Генерирует следующие компоненты матрицы:

  • диагональный блок матрицы — влияние данного профиля на самого себя;
  • нижнюю строку для матрицы для данного профиля;
  • правый столбец матрицы для данного профиля.
Parameters
[out]matrссылка на генерируемую матрицу
[out]lastLineссылка на нижнюю строку
[out]lactColссылка на правый столбец

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

◆ GetInfluenceFromSourceSheetAtRectPanelToVortex()

virtual void VM2D::Boundary::GetInfluenceFromSourceSheetAtRectPanelToVortex ( size_t  panel,
const Vortex2D vtx,
Point2D vel 
) const
pure virtual

Вычисление влияния слоя источников конкретной прямолинейной панели на вихрь в области течения

Parameters
[in]panelномер панели профиля, от которой считается влияние
[in]vtxссылка на вихрь
[out]velссылка на вектор полученной скорости

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryVortexCollocN, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

◆ GetInfluenceFromSourcesToRectPanel()

virtual void VM2D::Boundary::GetInfluenceFromSourcesToRectPanel ( size_t  panel,
const Vortex2D ptr,
ptrdiff_t  count,
std::vector< double > &  wakeRhs 
) const
pure virtual

Вычисление влияния части подряд источников из области течения на прямолинейную панель для правой части

Вычисляет влияния части подряд идущих источников из области течения на прямолинейную панель для правой части

Parameters
[in]panelномер панели профиля, на которую считается влияние
[in]ptrуказатель на начало диапазона источников
[in]countдлина диапазона источников
[out]wakeRhsссылка на вектор полученных влияние для правой части СЛАУ

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Here is the caller graph for this function:

◆ GetInfluenceFromVInfToRectPanel()

virtual void VM2D::Boundary::GetInfluenceFromVInfToRectPanel ( std::vector< double > &  vInfRhs) const
pure virtual

Вычисление влияния набегающего потока на прямолинейную панель для правой части

Вычисляет влияния набегающего потока на прямолинейную панель для правой части

Parameters
[out]vInfRhsссылка на вектор полученных влияние для правой части СЛАУ

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Here is the caller graph for this function:

◆ GetInfluenceFromVortexSheetAtRectPanelToVortex()

virtual void VM2D::Boundary::GetInfluenceFromVortexSheetAtRectPanelToVortex ( size_t  panel,
const Vortex2D vtx,
Point2D vel 
) const
pure virtual

Вычисление влияния вихревых слоев (свободный + присоединенный) конкретной прямолинейной панели на вихрь в области течения ///.

Parameters
[in]panelномер панели профиля, от которой считается влияние
[in]vtxссылка на вихрь
[out]velссылка на вектор полученной скорости

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Here is the caller graph for this function:

◆ GetInfluenceFromVorticesToRectPanel()

virtual void VM2D::Boundary::GetInfluenceFromVorticesToRectPanel ( size_t  panel,
const Vortex2D ptr,
ptrdiff_t  count,
std::vector< double > &  wakeRhs 
) const
pure virtual

Вычисление влияния части подряд идущих вихрей из вихревого следа на прямолинейную панель для правой части

Вычисляет влияния части подряд идущих вихрей из вихревого следа на прямолинейную панель для правой части

Parameters
[in]panelномер панели профиля, на которую считается влияние
[in]ptrуказатель на начало диапазона вихрей
[in]countдлина диапазона вихрей
[out]wakeRhsссылка на вектор полученных влияние для правой части СЛАУ

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Here is the caller graph for this function:

◆ GetUnknownsSize()

size_t Boundary::GetUnknownsSize ( ) const

Возврат размерности вектора решения

(без учета регуляризирующей переменной)

Returns
размерность вектора решения

Definition at line 73 of file Boundary2D.cpp.

74{
76}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SolutionToFreeVortexSheetAndVirtualVortex()

virtual void VM2D::Boundary::SolutionToFreeVortexSheetAndVirtualVortex ( const Eigen::VectorXd &  sol)
pure virtual

Пересчет решения на интенсивность вихревого слоя и на рождаемые вихри на конкретном профиле

1) Приводит решение к интенсивности вихревого слоя и записывает его в sheets.freeVortexSheet:

  • если неизвестное — интенсивность вихря, то он "размазывается" по панели;
  • если неизвестное — интенсивность слоя, то она передается непосредственно.

2) Приводит интенсивность вихревого слоя к рождаемым вихрям, а также вычисляет их положения

Parameters
[in]solвектор решения СЛАУ

Implemented in VM2D::BoundaryConstLayerAver, VM2D::BoundaryLinLayerAver, and VM2D::BoundaryVortexCollocN.

Member Data Documentation

◆ afl

const Airfoil& VM2D::Boundary::afl

Константная ссылка на профиль
инициализируется автоматом в конструкторе

Definition at line 77 of file Boundary2D.h.

◆ minVortexPerPanel

int VM2D::Boundary::minVortexPerPanel

Минимальное число вихрей, рождаемых на панели профиля и формирующих виртуальный вихревой след

Definition at line 80 of file Boundary2D.h.

◆ numberInPassport

const size_t VM2D::Boundary::numberInPassport
protected

Номер профиля в паспорте

Definition at line 71 of file Boundary2D.h.

◆ oldSheets

Sheet VM2D::Boundary::oldSheets

Слои на профиле с предыдущего шага

Definition at line 99 of file Boundary2D.h.

◆ sheetDim

size_t VM2D::Boundary::sheetDim

Размерность параметров каждого из слоев на каждой из панелей

Указывает, сколькими числами задается интенсивность каждого из слоев на каждой панели:

  • 1 — одно число — задается только среднее значение;
  • 2 — два числа — задается среднее значение и "наклон".

Definition at line 93 of file Boundary2D.h.

◆ sheets

Sheet VM2D::Boundary::sheets

Слои на профиле

Definition at line 96 of file Boundary2D.h.

◆ virtualWake

VirtualWake VM2D::Boundary::virtualWake

Виртуальный вихревой след конкретного профиля

Definition at line 86 of file Boundary2D.h.

◆ vortexBeginEnd

std::vector<std::pair<int, int> > VM2D::Boundary::vortexBeginEnd

Номера первого и последнего вихрей, рождаемых на каждой панели профиля (формируется после решения СЛАУ)

Definition at line 83 of file Boundary2D.h.

◆ W

const World2D& VM2D::Boundary::W
protected

Константная ссылка на решаемую задачу

Definition at line 68 of file Boundary2D.h.


The documentation for this class was generated from the following files: