51 class AirfoilGeometry;
77 std::vector<std::unique_ptr<Airfoil>>
airfoil;
80 std::vector<std::unique_ptr<AirfoilGeometry>>
oldAirfoil;
83 std::vector<std::unique_ptr<Boundary>>
boundary;
95 std::unique_ptr<Wake>
wake;
98 std::unique_ptr<WakeDataBase>
source;
117 std::vector<std::vector<std::pair<Eigen::MatrixXd, Eigen::MatrixXd>>>
IQ;
271 const std::pair<Eigen::MatrixXd, Eigen::MatrixXd>&
getIQ(
size_t i,
size_t j)
const {
return IQ[i][j]; };
326 void CheckInside(std::vector<Point2D>& newPos,
const std::vector<std::unique_ptr<AirfoilGeometry>>&
oldAirfoil);
349 virtual void Step()
override;
Заголовочный файл с описанием класса Gpu.
Заголовочный файл с описанием класса Passport (двумерный) и cоответствующими структурами
Заголовочный файл с описанием класса Velocity.
Заголовочный файл с описанием класса WorldGen.
Класс, определяющий форму профиля
Абстрактный класс, определяющий обтекаемый профиль
Абстрактный класс, определяющий способ удовлетворения граничного условия на обтекаемом профиле
Класс, обеспечивающий возможность выполнения вычислений на GPU по технологии Nvidia CUDA.
Класс, отвечающий за вычисление поля скорости и давления в заданых точках для вывода
Абстрактный класс, определяющий вид механической системы
PhysicalProperties physicalProperties
Структура с физическими свойствами задачи
Абстрактный класс, определяющий способ вычисления скоростей
Класс, опеделяющий набор вихрей
Класс, опеделяющий вихревой след (пелену)
Класс, опеделяющий текущую решаемую задачу
VMlib::vmTimer timerConvVelo
size_t getNumberOfAirfoil() const
Возврат количества профилей в задаче
VMlib::vmTimer timerMerging
Gpu cuda
Объект, управляющий графическим ускорителем
void ReserveMemoryForMatrixAndRhs()
Вычисляем размер матрицы и резервируем память под нее и под правую часть
bool isAnyMovable() const
Возврат признака того, что хотя бы один из профилей подвижный
void MoveVortexes(std::vector< Point2D > &newPos)
Вычисляем новые положения вихрей (в пелене и виртуальных)
std::vector< std::unique_ptr< Airfoil > > airfoil
Список умных указателей на обтекаемые профили
VMlib::vmTimer timerInitialBuild
bool isAnyMovableOrDeformable() const
Возврат признака того, что хотя бы один из профилей подвижный или деформируемый
std::unique_ptr< MeasureVP > measureVP
Умный указатель на алгоритм вычисления полей скоростей и давления (для сохранения в файл)
Eigen::MatrixXd matrReord
Матрица системы
bool useInverseMatrix
Признак использования обратной матрицы
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
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.
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.
void WakeAndAirfoilsMotion(bool dynamics)
Перемещение вихрей и профилей на шаге
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
Возврат константной ссылки на паспорт
Passport & getNonConstPassport() const
Возврат неконстантной ссылки на паспорт
void GenerateMechanicsHeader(size_t mechanicsNumber)
Boundary & getNonConstBoundary(size_t i) const
Возврат неконстантной ссылки на объект граничного условия
void CheckInside(std::vector< Point2D > &newPos, const std::vector< std::unique_ptr< AirfoilGeometry > > &oldAirfoil)
Проверка проникновения вихрей внутрь профиля
void SolveLinearSystem()
Решение системы линейных алгебраических уравнений
std::unique_ptr< Wake > wake
Умный указатель на вихревой след
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
Wake & getNonConstWake() const
Возврат неконстантной ссылки на вихревой след
Абстрактный класс, опеделяющий паспорт задачи
Класс для сбора статистики времени исполнения основных шагов алгоритма и вывода ее в файл
Класс, опеделяющий текущую решаемую задачу
std::unique_ptr< TimersGen > timers
Сведения о временах выполнения основных операций
double getCurrentTime() const
size_t currentStep
Текущий номер шага в решаемой задаче
Point2D V0(double currentTime) const
Функция скорости набегающего потока с учетом разгона