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

Public Attributes

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

Protected Attributes

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

Detailed Description

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

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

Definition at line 63 of file Boundary2D.h.

Constructor & Destructor Documentation

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 }//Boundary(...)
std::vector< Point2D > vecHalfGamma
Скорость вихрей виртуального следа конкретного профиля (равна Gamma/2) используется для расчета давле...
Definition: VirtualWake2D.h:70
size_t getNumberOfPanels() const
Возврат количества панелей на профиле
Definition: Airfoil2D.h:139
const size_t numberInPassport
Номер профиля в паспорте
Definition: Boundary2D.h:70
void SetLayers(size_t np)
Установка pазмерностей всех векторов и их обнуление
Definition: Sheet2D.cpp:60
std::vector< Vortex2D > vtx
Список вихревых элементов
Sheet sheets
Слои на профиле
Definition: Boundary2D.h:95
Sheet oldSheets
Слои на профиле с предыдущего шага
Definition: Boundary2D.h:98
VirtualWake virtualWake
Виртуальный вихревой след конкретного профиля
Definition: Boundary2D.h:85
size_t sheetDim
Размерность параметров каждого из слоев на каждой из панелей
Definition: Boundary2D.h:92
const Airfoil & getAirfoil(size_t i) const
Возврат константной ссылки на объект профиля
Definition: World2D.h:130
const World2D & W
Константная ссылка на решаемую задачу
Definition: Boundary2D.h:67
const Airfoil & afl
Definition: Boundary2D.h:76

Here is the call graph for this function:

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

Деструктор

Definition at line 108 of file Boundary2D.h.

108 { };

Here is the call graph for this function:

Member Function Documentation

virtual void VM2D::Boundary::CalcConvVelocityAtVirtualVortexes ( std::vector< Point2D > &  velo) const
pure virtual

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

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

Parameters
[out]veloссылка на заполняемый список скоростей
Warning
Массив velo заполняется путем присвоения, а не прибавления значений

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

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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

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

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

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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

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

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

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

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

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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

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

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

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

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

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

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::BoundaryVortexCollocN, VM2D::BoundaryConstLayerAver, and VM2D::BoundaryLinLayerAver.

Here is the caller graph for this function:

size_t Boundary::GetUnknownsSize ( ) const

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

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

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

Definition at line 71 of file Boundary2D.cpp.

72 {
73  return sheetDim * afl.getNumberOfPanels();
74 }
size_t getNumberOfPanels() const
Возврат количества панелей на профиле
Definition: Airfoil2D.h:139
size_t sheetDim
Размерность параметров каждого из слоев на каждой из панелей
Definition: Boundary2D.h:92
const Airfoil & afl
Definition: Boundary2D.h:76

Here is the call graph for this function:

Here is the caller graph for this function:

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

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

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

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

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

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

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

Here is the caller graph for this function:

Member Data Documentation

const Airfoil& VM2D::Boundary::afl

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

Definition at line 76 of file Boundary2D.h.

int VM2D::Boundary::minVortexPerPanel

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

Definition at line 79 of file Boundary2D.h.

const size_t VM2D::Boundary::numberInPassport
protected

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

Definition at line 70 of file Boundary2D.h.

Sheet VM2D::Boundary::oldSheets

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

Definition at line 98 of file Boundary2D.h.

size_t VM2D::Boundary::sheetDim

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

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

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

Definition at line 92 of file Boundary2D.h.

Sheet VM2D::Boundary::sheets

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

Definition at line 95 of file Boundary2D.h.

VirtualWake VM2D::Boundary::virtualWake

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

Definition at line 85 of file Boundary2D.h.

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

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

Definition at line 82 of file Boundary2D.h.

const World2D& VM2D::Boundary::W
protected

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

Definition at line 67 of file Boundary2D.h.


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