70 Passport::Passport(
VMlib::LogStream& infoStream,
const std::string& _problemName,
const size_t _problemNumber,
const std::string& _filePassport,
const std::string& _mechanics,
const std::string& _defaults,
const std::string& _switchers,
const std::vector<std::string>& vars)
71 : PassportGen(infoStream, _problemName, _problemNumber, _filePassport, _mechanics, _defaults, _switchers, vars),
72 physicalProperties(timeDiscretizationProperties)
74 std::string fileFullName =
dir + _filePassport;
75 std::string mechanicsFileFullName = _mechanics;
76 std::string defaultsFileFullName = _defaults;
77 std::string switchersFileFullName = _switchers;
87 std::stringstream varsStream(str);
89 std::stringstream mainStream;
92 std::stringstream mechanicsStream;
95 std::stringstream defaultsStream;
98 std::stringstream switchersStream;
111 std::istream& mainStream,
112 std::istream& mechanicsStream,
113 std::istream& defaultStream,
114 std::istream& switcherStream,
115 std::istream& varsStream
121 std::unique_ptr<VMlib::StreamParser> parser;
133 info(
'e') <<
"Reference velocity should be non-zero!" << std::endl;
141 std::pair<std::pair<std::string, int>, std::string> velAccel;
143 if (velAccel.first.second != -1)
146 std::stringstream sstr(velAccel.second);
147 std::istream& istr(sstr);
149 std::unique_ptr<VMlib::StreamParser> parserAccel;
151 parserAccel.reset(
new VMlib::StreamParser(
info,
"parserAccel", istr, defaultStream, switcherStream, varsStream));
157 info(
'e') <<
"Velocity acceleration scheme <" << velAccel.first.first <<
"> is unknown" << std::endl;
162 if (!defParamAccelVel)
166 double tempTimeAccel;
169 info(
'e') <<
"timeAccel parameter is set twice!" << std::endl;
185 std::pair<std::pair<std::string, int>, std::string> saveVtx;
187 if (saveVtx.first.second != -1)
190 std::stringstream sstr(saveVtx.second);
191 std::istream& istr(sstr);
193 std::unique_ptr<VMlib::StreamParser> parserSaveVtx;
195 parserSaveVtx.reset(
new VMlib::StreamParser(
info,
"parserSaveVtx", istr, defaultStream, switcherStream, varsStream));
200 std::stringstream ss;
201 ss << saveVtx.first.first;
211 info(
'e') <<
"Vtx file type <" << saveVtx.first.first <<
"> is unknown" << std::endl;
218 std::pair<std::pair<std::string, int>, std::string> saveVP;
220 if (saveVP.first.second != -1)
223 std::stringstream sstr(saveVP.second);
224 std::istream& istr(sstr);
226 std::unique_ptr<VMlib::StreamParser> parserSaveVP;
228 parserSaveVP.reset(
new VMlib::StreamParser(
info,
"parserSaveVP", istr, defaultStream, switcherStream, varsStream));
233 std::stringstream ss;
234 ss << saveVP.first.first;
244 info(
'e') <<
"VP file type <" << saveVP.first.first <<
"> is unknown" << std::endl;
287 std::vector<std::string> airfoil;
293 size_t nAirfoil = airfoil.size();
295 for (
size_t i = 0; i < nAirfoil; ++i)
309 std::unique_ptr<VMlib::StreamParser> parserAirfoil;
311 parserAirfoil.reset(
new VMlib::StreamParser(
info,
"airfoil parser", aflStream, defaultStream, switcherStream, varsStream));
320 parserAirfoil->
get(
"scale", tmpScale, &defaultTmpScale);
321 switch (tmpScale.size())
327 prm.
scale[0] = tmpScale[0];
328 prm.
scale[1] = tmpScale[1];
331 info(
'e') <<
"Error in _scale_ value for airfoil" << std::endl;
355 std::unique_ptr<VMlib::StreamParser> parserMechanicsList;
356 std::unique_ptr<VMlib::StreamParser> parserSwitchers;
360 std::string mechString;
367 std::string mechTypeAlias = mechanicsLine.first;
385 const std::string str =
"passport info: ";
387 info(
'i') <<
"--- Passport info ---" << std::endl;
427 info(
'_') <<
"airfoil[" << q <<
"]_file = " <<
airfoilParams[q].fileAirfoil << std::endl;
428 info(
'_') <<
"airfoil[" << q <<
"]_requiredNPanels = " <<
airfoilParams[q].requiredNPanels << std::endl;
429 info(
'_') <<
"airfoil[" << q <<
"]_basePoint = " <<
airfoilParams[q].basePoint << std::endl;
430 info(
'_') <<
"airfoil[" << q <<
"]_scale = " <<
airfoilParams[q].scale << std::endl;
431 info(
'_') <<
"airfoil[" << q <<
"]_angle = " <<
airfoilParams[q].angle << std::endl;
432 info(
'_') <<
"airfoil[" << q <<
"]_chord = " <<
airfoilParams[q].chord << std::endl;
433 info(
'_') <<
"airfoil[" << q <<
"]_inverse = " << (
airfoilParams[q].inverse ?
"true":
"false") << std::endl;
434 info(
'_') <<
"airfoil[" << q <<
"]_mechanicalSystem = " <<
airfoilParams[q].mechanicalSystem << std::endl;
const int defaultSaveVisStress
Шаг подсчета поля скорости и давления
const double defaultChord
Хорда
std::pair< std::string, int > fileTypeVP
Тип файлов для сохранения скорости и давления
Заголовочный файл с описанием класса Passport (двумерный) и cоответствующими структурами ...
const std::string defaultWakesDir
Каталог с файлами вихревых следов
std::pair< std::string, int > velocityComputation
bool geographicalAngles
Признак работы в "географической" системе координат
const bool defaultGeographicalAngles
Признак работы в "географической" системе координат
const double defaultAngle
Угол атаки
int saveVtxStep
Шаг сохранения кадров в бинарные файлы
Класс, определяющий работу с потоком логов
const double defaultVRef
Референсная скорость, равная нулю, что означает ее равенство скорости набегающего потока ...
double delta
Расстояние, на которое рождаемый вихрь отодвигается от профиля
bool inverse
Признак разворота нормалей (для расчета внутреннего течения)
double timeStop
Конечное время
double timeAccel
Время разгона потока
std::pair< std::string, int > boundaryCondition
Метод аппроксимации граничных условий
const int defaultVortexPerPanel
Число вихрей, рождаемых на одной панели
const std::pair< std::pair< std::string, int >, std::string > defaultSaveVP
Шаг подсчета поля скорости и давления
int mechanicalSystemType
Тип механической системы
double vRef
Референсная скорость
int nameLength
Число разрядов в имени файла
const std::pair< std::pair< std::string, int >, std::string > defaultVelAccel
Время разгона
double maxGamma
Максимально допустимая циркуляция вихря
const std::pair< std::string, int > defaultPanelsType
Тип панелей
double currTime
Текущее время
virtual void GetAllParamsFromParser(std::istream &mainStream, std::istream &mechanicsStream, std::istream &defaultStream, std::istream &switcherStream, std::istream &varsStream) override
Считывание всех параметров расчета из соответствующих потоков
const double defaultTimeAccel
std::string resultString
Строка, содержащая окончательный результат обработки файла
double nu
Коэффициент кинематической вязкости среды
std::string dir
Рабочий каталог задачи
const bool defaultCalcCoefficients
Признак расчета безразмерных коэффициентов вместо сил
Описание базовых вспомогательных функций
P length() const
Вычисление 2-нормы (длины) вектора
Заголовочный файл с описанием класса Preprocessor.
Класс, позволяющий выполнять предварительную обработку файлов
PhysicalProperties physicalProperties
Структура с физическими свойствами задачи
const std::pair< std::pair< std::string, int >, std::string > defaultSaveVtx
Шаг подсчета поля скорости и давления
const VMlib::Point2D defaultBasePoint
Базовое смещение профиля
bool calcCoefficients
Признак вычисления коэффициентов вместо сил
const Point2D defaultScale
Коэффициент масштабирования профиля
virtual void PrintAllParams() override
Печать всех параметров расчета в поток логов
const std::pair< std::string, int > defaultBoundaryCondition
Способ удовлетворения граничного условия
size_t requiredNPanels
Желаемое число панелей для разбиения геометрии
double angle
Угол поворота (угол атаки)
double rotateAngleVpPoints
Угол поворота точек VP.
double accelCft() const
Функция-множитель, позволяющая моделировать разгон
TimeDiscretizationProperties timeDiscretizationProperties
Структура с параметрами процесса интегрирования по времени
const std::vector< std::string > defaultAirfoil({})
Список профилей
Point2D vInf
Скоростью набегающего потока
const double defaultMaxGamma
Число вихрей, рождаемых на одной панели
static std::vector< std::string > StringToVector(std::string line, char openBracket= '(', char closeBracket= ')')
Pазбор строки, содержащей запятые, на отдельные строки
const size_t defaultRequiredNPanels
Желаемое число панелей для разбиения геометрии
double timeStart
Начальное время
double rho
Плотность потока
std::string fileSource
Имя файла с положениями источников (без полного пути)
int saveVPstep
Шаг вычисления и сохранения скорости и давления
Заголовочный файл с описанием класса StreamParser.
NumericalSchemes numericalSchemes
Структура с используемыми численными схемами
const Point2D defaultAddedMass
Присоединенная масса
Point2D basePoint
Смещение центра масс (перенос профиля)
const bool defaultRotateForces
Признак поворота сил в профильную систему координат
const VMlib::TimeDiscretizationProperties & timeProp
bool fileExistTest(std::string &fileName, LogStream &info, const std::list< std::string > &extList={})
Проверка существования файла
static std::pair< std::string, std::string > SplitString(LogStream &info, std::string line, bool upcase=true)
Разбор строки на пару ключ-значение
const std::pair< std::string, int > defaultLinearSystemSolver
Способ решения линейной системы
const int defaultSaveVPstep
Структура, задающая параметры профиля
std::string fileWake
Имя файла с начальным состоянием вихревого следа (без полного пути)
const std::pair< std::string, int > defaultVelocityComputation
Способ вычисления скоростей вихрей
const int defaultNameLength
Число разрядов в имени файла
std::pair< std::string, int > fileTypeVtx
Тип файлов для сохранения скорости и давления
std::pair< std::string, int > typeAccel
Способ разгона потока
std::pair< std::string, int > panelsType
Тип панелей (0 — прямые)
const std::string defaultFileSource("")
Файл с источниками
const std::string defaultFileWake("")
Файл со следом
int minVortexPerPanel
Минимальное число вихрей, рождаемых на каждой панели профииля
static std::string VectorStringToString(const std::vector< std::string > &_vecString)
Объединение вектора (списка) из строк в одну строку
std::string fileAirfoil
Имя файла с начальным состоянием профилей (без полного пути)
const double defaultTimeStart
Начало расчета
int saveVisStress
Шаг вычисления и сохранения скорости и давления
std::string mechanicalSystemParameters
const double defaultDelta
Расстояние, на которое рождаемый вихрь отодвигается от профиля
LogStream info
Поток для вывода логов и сообщений об ошибках
std::vector< AirfoilParams > airfoilParams
Список структур с параметрами профилей
std::string wakesDir
Каталог с файлами вихревых следов
WakeDiscretizationProperties wakeDiscretizationProperties
Структура с параметрами дискретизации вихревого следа
const std::string defaultMechanicalSystem
Passport(VMlib::LogStream &infoStream, const std::string &_problemName, const size_t _problemNumber, const std::string &_filePassport, const std::string &_mechanics, const std::string &_defaults, const std::string &_switchers, const std::vector< std::string > &vars)
Конструктор
const double defaultDistFar
Радиус убивания дальнего следа
Point2D scale
Коэффициент масштабирования
const int defaultSaveVtxStep
const std::string defaultAirfoilsDir
Каталог с файлами профилей
std::string airfoilsDir
Каталог с файлами профилей
Point2D addedMass
Присоединенная масса
std::string mechanicalSystem
std::pair< std::string, int > linearSystemSolver
Класс, позволяющий выполнять разбор файлов и строк с настройками и параметрами
bool get(const std::string &name, std::vector< Point2D > &res, const std::vector< Point2D > *defValue=nullptr, bool echoDefault=true) const
Считывание вектора из двумерных точек из базы данных
double eps2
Квадрат радиуса вихря
const double rotateAngleVpPoints
Угол поворота точек VP.
double distFar
Расстояние от центра самого подветренного (правого) профиля, на котором вихри уничтожаются ...
double epscol
Радиус коллапса
const bool defaultInverse
Признак разворота нормалей (для расчета внутреннего течения)
bool rotateForces
Признак поворота вычисляемых сил в профильную систему координат