VM2D
1.12
Vortex methods for 2D flows simulation
|
Класс, определяющий тип обтекаемого профиля More...
#include <Airfoil2DRect.h>
Public Member Functions | |
AirfoilRect (const World2D &W_, const size_t numberInPassport_) | |
Конструктор More... | |
AirfoilRect (const Airfoil &afl) | |
virtual | ~AirfoilRect () |
Деструктор More... | |
void | CalcNrmTauLen () |
Вычисление нормалей, касательных и длин панелей по текущему положению вершин More... | |
virtual void | GetGabarits (double gap=0.02) override |
Вычисляет габаритный прямоугольник профиля More... | |
virtual void | ReadFromFile (const std::string &dir) override |
Считывание профиля из файла More... | |
virtual void | Rotate (double alpha) override |
Поворот профиля More... | |
virtual void | Scale (const Point2D &) override |
Масштабирование профиля More... | |
virtual void | Move (const Point2D &dr) override |
Перемещение профиля More... | |
virtual std::vector< double > | getA (size_t p, size_t i, const Airfoil &airfoil, size_t j) const override |
Вычисление коэффициентов матрицы A для расчета влияния панели на панель More... | |
virtual void | calcIQ (size_t p, const Airfoil &otherAirfoil, std::pair< Eigen::MatrixXd, Eigen::MatrixXd > &matrPair) const override |
Вычисление коэффициентов матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2. More... | |
virtual bool | IsPointInAirfoil (const Point2D &point) const override |
Определяет, находится ли точка с радиус-вектором \( \vec r \) внутри профиля More... | |
virtual void | GetDiffVelocityI0I3ToSetOfPointsAndViscousStresses (const WakeDataBase &pointsDb, std::vector< double > &domainRadius, std::vector< double > &I0, std::vector< Point2D > &I3) override |
Вычисление числителей и знаменателей диффузионных скоростей в заданном наборе точек, обусловленных геометрией профиля, и вычисление вязкого трения More... | |
virtual void | GetDiffVelocityI0I3ToWakeAndViscousStresses (const WakeDataBase &pointsDb, std::vector< double > &domainRadius, std::vector< double > &I0, std::vector< Point2D > &I3) override |
virtual void | GetInfluenceFromVorticesToPanel (size_t panel, const Vortex2D *ptr, ptrdiff_t count, std::vector< double > &panelRhs) const override |
Вычисление влияния части подряд идущих вихрей из вихревого следа на панель для правой части More... | |
virtual void | GetInfluenceFromSourcesToPanel (size_t panel, const Vortex2D *ptr, ptrdiff_t count, std::vector< double > &panelRhs) const override |
Вычисление влияния части подряд идущих источников из области течения на панель для правой части More... | |
virtual void | GetInfluenceFromSourceSheetToVortex (size_t panel, const Vortex2D &vtx, Point2D &vel) const override |
Вычисление влияния слоя источников конкретной прямолинейной панели на вихрь в области течения More... | |
virtual void | GetInfluenceFromVortexSheetToVortex (size_t panel, const Vortex2D &vtx, Point2D &vel) const override |
Вычисление влияния вихревых слоев (свободный + присоединенный) конкретной прямолинейной панели на вихрь в области течения More... | |
virtual void | GetInfluenceFromVInfToPanel (std::vector< double > &vInfRhs) const override |
Вычисление влияния набегающего потока на панель для правой части More... | |
const Point2D & | getR (size_t q) const |
Возврат константной ссылки на вершину профиля More... | |
const Point2D & | getV (size_t q) const |
Возврат константной ссылки на скорость вершины профиля More... | |
void | setV (const Point2D &vel) |
Установка постоянной скорости всех вершин профиля More... | |
void | setV (const std::vector< Point2D > &vel) |
Установка скоростей всех вершин профиля More... | |
size_t | getNumberOfPanels () const |
Возврат количества панелей на профиле More... | |
IFCUDA (mutable double *devRPtr) | |
Указатель на девайсе, где хранятся вершины профиля More... | |
IFCUDA (mutable double *devRhsPtr) | |
Указатель на девайсе, где хранится правая часть (константная) матрицы More... | |
IFCUDA (mutable double *devRhsLinPtr) | |
Указатель на девайсе, где хранится правая часть (линейная) матрицы More... | |
IFCUDA (mutable std::vector< double > tmpRhs) | |
Указатель на хосте, где хранится временная часть матрицы, полученная с девайса More... | |
IFCUDA (mutable double *devFreeVortexSheetPtr) | |
Указатель на девайсе, где хранятся интенсивности свободного вихревого слоя на панелях More... | |
IFCUDA (mutable double *devAttachedVortexSheetPtr) | |
Указатель на девайсе, где хранятся интенсивности присоединенного вихревого слоя на панелях More... | |
IFCUDA (mutable double *devAttachedSourceSheetPtr) | |
Указатель на девайсе, где хранятся интенсивности присоединенного слоя источников на панелях More... | |
IFCUDA (mutable double *devMeanEpsOverPanelPtr) | |
Указатель на девайсе, где хранятся средние eps на панелях More... | |
IFCUDA (mutable double *devViscousStressesPtr) | |
Указатель на девайсе, где хранится вектор (по панелям) для силы вязкого трения More... | |
IFCUDA (mutable std::vector< double > tmpViscousStresses) | |
Указатель на хосте, где хранится временная часть вектора (по панелям) для силы вязкого трения More... | |
bool | isAfter (size_t i, size_t j) const |
Проверка, идет ли вершина i следом за вершиной j. More... | |
bool | isInsideGabarits (const Point2D &r) const |
Определяет, находится ли точка с радиус-вектором \( \vec r \) внутри габаритного прямоугольника профиля More... | |
bool | isOutsideGabarits (const Point2D &r) const |
Определяет, находится ли точка с радиус-вектором \( \vec r \) вне габаритного прямоугольника профиля More... | |
void | calcMeanEpsOverPanel () |
Вычисление средних значений eps на панелях More... | |
Public Attributes | |
const World2D & | W |
Константная ссылка на решаемую задачу More... | |
const size_t | numberInPassport |
Номер профиля в паспорте More... | |
Point2D | rcm |
Положение центра масс профиля More... | |
double | phiAfl |
Поворот профиля More... | |
double | area |
Площадь профиля More... | |
double | m |
Масса профиля More... | |
double | J |
Полярный момент инерции профиля относительно центра масс More... | |
std::vector< double > | meanEpsOverPanel |
Средние значения Eps на панелях More... | |
bool | inverse |
Признак разворота нормалей (для расчета внутренних течений) More... | |
std::vector< Point2D > | nrm |
Нормали к панелям профиля More... | |
std::vector< Point2D > | tau |
Касательные к панелям профиля More... | |
std::vector< double > | len |
Длины панелей профиля More... | |
std::vector< double > | viscousStress |
Касательные напряжения на панелях профиля More... | |
Point2D | lowLeft |
Левый нижний угол габаритного прямоугольника профиля More... | |
Point2D | upRight |
Правый верхний угол габаритного прямоугольника профиля More... | |
std::vector< double > | gammaThrough |
Суммарные циркуляции вихрей, пересекших панели профиля на прошлом шаге More... | |
Protected Attributes | |
std::vector< Point2D > | r_ |
Координаты начал панелей More... | |
std::vector< Point2D > | v_ |
Скорости начал панелей More... | |
Класс, определяющий тип обтекаемого профиля
Тип профиля:
Definition at line 64 of file Airfoil2DRect.h.
|
inline |
Конструктор
Definition at line 70 of file Airfoil2DRect.h.
|
inline |
Definition at line 74 of file Airfoil2DRect.h.
|
inlinevirtual |
|
overridevirtual |
Вычисление коэффициентов матрицы, состоящей из интегралов от (r-xi)/|r-xi|^2.
[in] | p | размерность матрицы-результата |
[in] | otherAirfoil | константная ссылка на профиль, от которого рассчитывается влияние |
[out] | matrPair | ссылка на пару матриц, выражающих взаимные влияния (касательные и нормальные) панелей профиля return соответствующий блок матрицы СЛАУ, вытянутый в линию |
Implements VM2D::Airfoil.
Definition at line 708 of file Airfoil2DRect.cpp.
|
inherited |
Вычисление средних значений eps на панелях
Definition at line 82 of file Airfoil2D.cpp.
void AirfoilRect::CalcNrmTauLen | ( | ) |
Вычисление нормалей, касательных и длин панелей по текущему положению вершин
Definition at line 616 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление коэффициентов матрицы A для расчета влияния панели на панель
[in] | p | размерность матрицы - результата |
[in] | i | номер панели, на которую оказывается влияние |
[in] | airfoil | константная ссылка на профиль, от которого рассчитывается влияние |
[in] | j | номер влияющей панели return соответствующий блок матрицы СЛАУ, вытянутый в линию |
Implements VM2D::Airfoil.
Definition at line 665 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление числителей и знаменателей диффузионных скоростей в заданном наборе точек, обусловленных геометрией профиля, и вычисление вязкого трения
Вычисляет диффузионные скорости в наборе точек, которые обусловленных геометрией профиля, и вычисляет вязкое трение
[in] | pointsDb | константная ссылка на базу данных вихрей, в которых вычисляются скорости |
[in] | domainRadius | ссылка на радиусы вихрей |
[out] | I0 | ссылка на вектор знаменателей диффузионных скоростей, которые приобретают точки из-за влияния геометрии профиля |
[out] | I3 | ссылка на вектор числителей диффузионных скоростей, которые приобретают точки из-за влияния геометрии профиля |
Implements VM2D::Airfoil.
Definition at line 303 of file Airfoil2DRect.cpp.
|
overridevirtual |
Implements VM2D::Airfoil.
Definition at line 442 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисляет габаритный прямоугольник профиля
Implements VM2D::Airfoil.
Definition at line 643 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление влияния слоя источников конкретной прямолинейной панели на вихрь в области течения
[in] | panel | номер панели профиля, от которой считается влияние |
[in] | vtx | ссылка на вихрь |
[out] | vel | ссылка на вектор полученной скорости |
Implements VM2D::Airfoil.
Definition at line 855 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление влияния части подряд идущих источников из области течения на панель для правой части
Вычисляет влияния части подряд идущих источников из области течения на панель для правой части
[in] | panel | номер панели профиля, на которую считается влияние |
[in] | ptr | указатель на начало диапазона источников |
[in] | count | длина диапазона источников |
[out] | panelRhs | ссылка на вектор полученного влияния для правой части СЛАУ для конкретной панели |
Implements VM2D::Airfoil.
Definition at line 849 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление влияния набегающего потока на панель для правой части
Вычисляет влияния набегающего потока на панель для правой части
[out] | vInfRhs | ссылка на вектор полученного влияния для правой части СЛАУ для всех панелей профиля |
Implements VM2D::Airfoil.
Definition at line 866 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление влияния вихревых слоев (свободный + присоединенный) конкретной прямолинейной панели на вихрь в области течения
[in] | panel | номер панели профиля, от которой считается влияние |
[in] | vtx | ссылка на вихрь |
[out] | vel | ссылка на вектор полученной скорости |
Implements VM2D::Airfoil.
Definition at line 861 of file Airfoil2DRect.cpp.
|
overridevirtual |
Вычисление влияния части подряд идущих вихрей из вихревого следа на панель для правой части
Вычисляет влияния части подряд идущих вихрей из вихревого следа на панель для правой части
[in] | panel | номер панели профиля, на которую считается влияние |
[in] | ptr | указатель на начало диапазона вихрей |
[in] | count | длина диапазона вихрей |
[out] | panelRhs | ссылка на вектор полученного влияния для правой части СЛАУ для конкретной панели |
Implements VM2D::Airfoil.
Definition at line 842 of file Airfoil2DRect.cpp.
|
inlineinherited |
Возврат количества панелей на профиле
Definition at line 139 of file Airfoil2D.h.
|
inlineinherited |
Возврат константной ссылки на вершину профиля
Организовано "зацикливание" в сторону увеличения индекса, т.е. getR[size()] = getR[0];
Это позволяет удобно обращаться к getR(i) и getR(i+1) как к началу и концу i-й панели
[in] | q | номер вершины профиля return константную ссылку на вершину профиля |
Definition at line 101 of file Airfoil2D.h.
|
inlineinherited |
Возврат константной ссылки на скорость вершины профиля
Организовано "зацикливание" в сторону увеличения индекса, т.е. getV[size()] = getV[0];
Это позволяет удобно обращаться к getV(i) и getV(i+1) как к скоростям начала и конца i-й панели
[in] | q | номер вершины профиля return константную ссылку на скорость вершины профиля |
Definition at line 113 of file Airfoil2D.h.
|
inherited |
Указатель на девайсе, где хранятся вершины профиля
|
inherited |
Указатель на девайсе, где хранится правая часть (константная) матрицы
|
inherited |
Указатель на девайсе, где хранится правая часть (линейная) матрицы
|
inherited |
Указатель на хосте, где хранится временная часть матрицы, полученная с девайса
|
inherited |
Указатель на девайсе, где хранятся интенсивности свободного вихревого слоя на панелях
|
inherited |
Указатель на девайсе, где хранятся интенсивности присоединенного вихревого слоя на панелях
|
inherited |
Указатель на девайсе, где хранятся интенсивности присоединенного слоя источников на панелях
|
inherited |
Указатель на девайсе, где хранятся средние eps на панелях
|
inherited |
Указатель на девайсе, где хранится вектор (по панелям) для силы вязкого трения
|
inherited |
Указатель на хосте, где хранится временная часть вектора (по панелям) для силы вязкого трения
|
inherited |
Проверка, идет ли вершина i следом за вершиной j.
[in] | i | проверяемая вершина |
[in] | j | контрольная вершина |
Definition at line 62 of file Airfoil2D.cpp.
|
inherited |
Определяет, находится ли точка с радиус-вектором \( \vec r \) внутри габаритного прямоугольника профиля
[in] | r | константная ссылка на текущее положение точки |
Definition at line 69 of file Airfoil2D.cpp.
|
inherited |
Определяет, находится ли точка с радиус-вектором \( \vec r \) вне габаритного прямоугольника профиля
[in] | r | константная ссылка на текущее положение точки |
Definition at line 76 of file Airfoil2D.cpp.
|
overridevirtual |
Определяет, находится ли точка с радиус-вектором \( \vec r \) внутри профиля
[in] | point | константная ссылка на текущее положение точки |
Implements VM2D::Airfoil.
Definition at line 560 of file Airfoil2DRect.cpp.
|
overridevirtual |
Перемещение профиля
Плоскопараллельно перемещает профиль на вектор \( \overrightarrow{dr} \)
[in] | dr | константная ссылка на вектор перемещения |
Implements VM2D::Airfoil.
Definition at line 580 of file Airfoil2DRect.cpp.
|
overridevirtual |
Считывание профиля из файла
Считывание геометрии профиля из файла, вычисление всех прочих параметров профиля
После загрузки из файла профиль поворачивается на нужный угол и масштабируется на нужный коэффициент
[in] | dir | константная ссылка на строку — имя каталога, где лежит cчитываемый файл |
Implements VM2D::Airfoil.
Definition at line 59 of file Airfoil2DRect.cpp.
|
overridevirtual |
Поворот профиля
Поворачивает профиль на угол \( \alpha \) вокруг центра масс
[in] | alpha | угол поворота против часовой стрелки в радианах |
Implements VM2D::Airfoil.
Definition at line 591 of file Airfoil2DRect.cpp.
|
overridevirtual |
Масштабирование профиля
Масштабирует профиль в factor раз относительно центра масс
[in] | factor | масштабный коэффициент |
Implements VM2D::Airfoil.
Definition at line 606 of file Airfoil2DRect.cpp.
|
inlineinherited |
Установка постоянной скорости всех вершин профиля
[in] | vel | константная ссылка на величину устанавливаемой скорости |
Definition at line 121 of file Airfoil2D.h.
|
inlineinherited |
Установка скоростей всех вершин профиля
[in] | vel | константная ссылка на вектор величин скоростей вершин профиля |
Definition at line 130 of file Airfoil2D.h.
|
inherited |
Площадь профиля
Definition at line 83 of file Airfoil2D.h.
|
inherited |
Суммарные циркуляции вихрей, пересекших панели профиля на прошлом шаге
Используются в правой части системы, чтобы компенсировать вихри, проникшие в профиль
Definition at line 196 of file Airfoil2D.h.
|
inherited |
Признак разворота нормалей (для расчета внутренних течений)
Definition at line 139 of file Airfoil2D.h.
|
inherited |
Полярный момент инерции профиля относительно центра масс
Definition at line 89 of file Airfoil2D.h.
|
inherited |
Длины панелей профиля
Definition at line 185 of file Airfoil2D.h.
|
inherited |
Левый нижний угол габаритного прямоугольника профиля
Definition at line 190 of file Airfoil2D.h.
|
inherited |
Масса профиля
Definition at line 86 of file Airfoil2D.h.
|
inherited |
Средние значения Eps на панелях
Definition at line 92 of file Airfoil2D.h.
|
inherited |
Нормали к панелям профиля
Нормали задаются внешними, нормированными на единицу
Definition at line 177 of file Airfoil2D.h.
|
inherited |
Номер профиля в паспорте
Definition at line 74 of file Airfoil2D.h.
|
inherited |
Поворот профиля
Definition at line 80 of file Airfoil2D.h.
|
protectedinherited |
Координаты начал панелей
Definition at line 64 of file Airfoil2D.h.
|
inherited |
Положение центра масс профиля
Definition at line 77 of file Airfoil2D.h.
|
inherited |
Касательные к панелям профиля
Касательные соответствуют обходу профиля против часовой стрелки, задаются нормированными на единицу
Definition at line 182 of file Airfoil2D.h.
|
inherited |
Правый верхний угол габаритного прямоугольника профиля
Definition at line 191 of file Airfoil2D.h.
|
protectedinherited |
Скорости начал панелей
Definition at line 67 of file Airfoil2D.h.
|
inherited |
Касательные напряжения на панелях профиля
Definition at line 188 of file Airfoil2D.h.
|
inherited |
Константная ссылка на решаемую задачу
Definition at line 71 of file Airfoil2D.h.