53 class AirfoilGeometry;
80 std::vector<std::unique_ptr<Airfoil>>
airfoil;
83 std::vector<std::unique_ptr<AirfoilGeometry>>
oldAirfoil;
86 std::vector<std::unique_ptr<Boundary>>
boundary;
98 std::unique_ptr<Wake>
wake;
125 std::vector<std::vector<std::pair<Eigen::MatrixXd, Eigen::MatrixXd>>>
IQ;
283 const std::pair<Eigen::MatrixXd, Eigen::MatrixXd>&
getIQ(
size_t i,
size_t j)
const {
return IQ[i][j]; };
317 void CalcVeloDifference(std::vector<double>& nut)
const;
333 void MoveVortexes(std::vector<Point2D>& newPos, std::vector<double>* nutPtr =
nullptr);
340 void CheckInside(std::vector<Point2D>& newPos,
const std::vector<std::unique_ptr<AirfoilGeometry>>&
oldAirfoil);
363 virtual void Step()
override;
Заголовочный файл с описанием класса Gpu.
Заголовочный файл с описанием класса Passport (двумерный) и cоответствующими структурами
Заголовочный файл с описанием класса Velocity.
Заголовочный файл с описанием класса WorldGen.
Класс, определяющий форму профиля
Абстрактный класс, определяющий обтекаемый профиль
Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле
Структура, хранящая данные и указатели на массивы на GPU для оптимизации итерационного решения СЛАУ н...
Класс, обеспечивающий возможность выполнения вычислений на GPU по технологии Nvidia CUDA.
Класс, отвечающий за вычисление поля скорости и давления в заданых точках для вывода
Абстрактный класс, определяющий вид механической системы
Класс, опеделяющий паспорт двумерной задачи
PhysicalProperties physicalProperties
Структура с физическими свойствами задачи
Абстрактный класс, определяющий способ вычисления скоростей
Класс, опеделяющий набор вихрей
Класс, опеделяющий вихревой след (пелену)
Класс, опеделяющий текущую решаемую задачу
VMlib::vmTimer timerConvVelo
size_t getNumberOfAirfoil() const
Возврат количества профилей в задаче
std::unique_ptr< CpuTreeInfo > inflTreeWake
Деревья для быстрого метода
VMlib::vmTimer timerMerging
Gpu cuda
Объект, управляющий графическим ускорителем
void ReserveMemoryForMatrixAndRhs()
Вычисляем размер матрицы и резервируем память под нее и под правую часть
bool isAnyMovable() const
Возврат признака того, что хотя бы один из профилей подвижный
void WakeAndAirfoilsMotion(bool dynamics, std::vector< double > *nutPtr=nullptr)
Перемещение вихрей и профилей на шаге
std::vector< std::unique_ptr< Airfoil > > airfoil
Список умных указателей на обтекаемые профили
VMlib::vmTimer timerInitialBuild
bool isAnyMovableOrDeformable() const
Возврат признака того, что хотя бы один из профилей подвижный или деформируемый
std::unique_ptr< MeasureVP > measureVP
Умный указатель на алгоритм вычисления полей скоростей и давления (для сохранения в файл)
Eigen::MatrixXd matrReord
Матрица системы
bool useInverseMatrix
Признак использования обратной матрицы
std::unique_ptr< CpuTreeInfo > auxTreePnl
const Wake & getWake() const
Возврат константной ссылки на вихревой след
Eigen::MatrixXd invMatr
Обратная матрица
void CalcPanelsVeloAndAttachedSheets()
Вычисление скоростей панелей и интенсивностей присоединенных слоев вихрей и источников
void CalcVortexVelo()
Вычисление скоростей (и конвективных, и диффузионных) вихрей (в пелене и виртуальных),...
std::vector< std::unique_ptr< AirfoilGeometry > > oldAirfoil
Список умных указателей на обтекаемые профили для сохранения старого положения
const Airfoil & getAirfoil(size_t i) const
Возврат константной ссылки на объект профиля
const AirfoilGeometry & getOldAirfoil(size_t i) const
Возврат константной ссылки на объект старого профиля
const WakeDataBase & getSource() const
Возврат константной ссылки на источники в области течения
const std::vector< std::unique_ptr< Mechanics > > & getMechanicsVector() const
CpuTreeInfo & getCntrTreePnl() const
VMlib::vmTimer timerInside
Gpu & getNonConstCuda() const
Возврат неконстантной ссылки на объект, связанный с видеокартой (GPU)
std::unique_ptr< WakeDataBase > source
Умный указатель на источники
void CalcAndSolveLinearSystem()
Набор матрицы, правой части и решение СЛАУ
Velocity & getNonConstVelocity() const
Возврат неконстантной ссылки на объект для вычисления скоростей
Eigen::VectorXd rhsReord
Правая часть системы
size_t getDispBoundaryInSystem(size_t i) const
Возврат смещения в системе dispBoundaryInSystem.
MeasureVP & getNonConstMeasureVP() const
Возврат неконстантной ссылки на measureVP.
void MoveVortexes(std::vector< Point2D > &newPos, std::vector< double > *nutPtr=nullptr)
Вычисляем новые положения вихрей (в пелене и виртуальных)
std::vector< size_t > dispBoundaryInSystem
Список номеров, с которых начинаются элементы правой части (или матрицы) системы для профилей
VMlib::TimersGen & getTimers() const
Возврат ссылки на временную статистику выполнения шага расчета по времени
void FillIQ()
Заполнение матрицы, состоящей из интегралов от (r-xi) / |r-xi|^2.
const Mechanics & getMechanics(size_t i) const
Возврат константной ссылки на объект механики
Point2D getV0() const
Возврат текущей скорости набегающего потока
const std::pair< Eigen::MatrixXd, Eigen::MatrixXd > & getIQ(size_t i, size_t j) const
Возврат константной ссылки на объект, связанный с матрицей интегралов от (r-xi)/|r-xi|^2.
std::vector< std::unique_ptr< Mechanics > > mechanics
Список умных указателей на типы механической системы для каждого профиля
const Velocity & getVelocity() const
Возврат константной ссылки на объект для вычисления скоростей
const Gpu & getCuda() const
Возврат константной ссылки на объект, связанный с видеокартой (GPU)
std::vector< std::unique_ptr< Boundary > > boundary
Список умных указателей на формирователи граничных условий на профилях
const Passport & getPassport() const
Возврат константной ссылки на паспорт
std::unique_ptr< CpuTreeInfo > cntrTreePnl
Passport & getNonConstPassport() const
Возврат неконстантной ссылки на паспорт
void GenerateMechanicsHeader(size_t mechanicsNumber)
std::unique_ptr< CpuTreeInfo > cntrTreeVP
Boundary & getNonConstBoundary(size_t i) const
Возврат неконстантной ссылки на объект граничного условия
CpuTreeInfo & getCntrTreeVP() const
void CheckInside(std::vector< Point2D > &newPos, const std::vector< std::unique_ptr< AirfoilGeometry > > &oldAirfoil)
Проверка проникновения вихрей внутрь профиля
CpuTreeInfo & getAuxTreePnl() const
void SolveLinearSystem()
Решение системы линейных алгебраических уравнений
std::unique_ptr< Wake > wake
Умный указатель на вихревой след
CpuTreeInfo & getCntrTreeWake() const
const Boundary & getBoundary(size_t i) const
Возврат константной ссылки на объект граничного условия
bool ifDivisible(int val) const
size_t getNumberOfBoundary() const
Возврат количества граничных условий в задаче
std::unique_ptr< Velocity > velocity
Умный укзатель на объект, определяющий методику вычисления скоростей
const Passport & passport
Константная ссылка на паспорт конкретного расчета
void FillMatrixAndRhs()
Заполнение матрицы системы для всех профилей
virtual void Step() override
Функция выполнения предварительного шага
VMlib::vmTimer timerFillMatrix
Eigen::VectorXd sol
Решение системы
Mechanics & getNonConstMechanics(size_t i) const
Возврат неконстантной ссылки на объект механики
std::vector< std::vector< std::pair< Eigen::MatrixXd, Eigen::MatrixXd > > > IQ
Матрица, состоящая из пар матриц, в которых хранятся касательные и нормальные компоненты интегралов о...
Airfoil & getNonConstAirfoil(size_t i) const
Возврат неконстантной ссылки на объект профиля
const MeasureVP & getMeasureVP() const
Возврат константной ссылки на measureVP.
VMlib::vmTimer timerSlaeSolve
std::unique_ptr< CpuTreeInfo > cntrTreeWake
CpuTreeInfo & getInflTreeWake() const
Wake & getNonConstWake() const
Возврат неконстантной ссылки на вихревой след
Абстрактный класс, опеделяющий паспорт задачи
Класс для сбора статистики времени исполнения основных шагов алгоритма и вывода ее в файл
Класс, опеделяющий текущую решаемую задачу
std::unique_ptr< TimersGen > timers
Сведения о временах выполнения основных операций
double getCurrentTime() const
size_t currentStep
Текущий номер шага в решаемой задаче
Заголовок класса дерева для реализации быстрых алгоритмов на CPU.
Point2D V0(double currentTime) const
Функция скорости набегающего потока с учетом разгона