59 numberInPassport(numberInPassport_),
60 afl(W_.getNonConstAirfoil(numberInPassport_)),
61 boundary(W_.getBoundary(numberInPassport_)),
62 virtVortParams(W_.getVelocity().virtualVortexesParams[numberInPassport_]),
121 std::stringstream forceFileName, forceFileNameCsv;
125 std::ofstream newForcesFile(forceFileName.str());
126 std::ofstream newForcesFileCsv(forceFileNameCsv.str());
136 newForcesFileCsv <<
"step,t,Fx,Fy,Mz,Ftaux,Ftauy,Mtau";
138 newForcesFileCsv <<
"step,t,CFx,CFy,CMz,CFtaux,CFtauy,CMtau";
140 newForcesFile.close();
141 newForcesFile.clear();
143 newForcesFileCsv.close();
144 newForcesFileCsv.clear();
154 std::stringstream positionFileName, positionFileNameCsv;
158 std::ofstream newPositionFile(positionFileName.str());
159 std::ofstream newPositionFileCsv(positionFileNameCsv.str());
165 newPositionFileCsv <<
"step,t,x,y,phi,Vx,Vy,w";
167 newPositionFile.close();
168 newPositionFile.clear();
170 newPositionFileCsv.close();
171 newPositionFileCsv.clear();
181 std::stringstream forceFileName, forceFileNameCsv;
212 cartesianHydroForce /= (flowPress * chord);
213 cartesianViscoForce /= (flowPress * chord);
215 cartesianHydroMoment /= (flowPress *
sqr(chord));
216 cartesianViscoMoment /= (flowPress *
sqr(chord));
220 std::ofstream forcesFile(forceFileName.str(), std::ios::app);
221 forcesFile << std::endl <<
W.
getCurrentStep() <<
" " <<
W.
getPassport().
physicalProperties.
getCurrTime() <<
" " << cartesianHydroForce[0] <<
" " << cartesianHydroForce[1] <<
" " << cartesianHydroMoment <<
" " << cartesianViscoForce[0] <<
" " << cartesianViscoForce[1] <<
" " << cartesianViscoMoment;
224 std::ofstream forcesFileCsv(forceFileNameCsv.str(), std::ios::app);
225 forcesFileCsv << std::endl <<
W.
getCurrentStep() <<
"," <<
W.
getPassport().
physicalProperties.
getCurrTime() <<
"," << cartesianHydroForce[0] <<
"," << cartesianHydroForce[1] <<
"," << cartesianHydroMoment <<
"," << cartesianViscoForce[0] <<
"," << cartesianViscoForce[1] <<
"," << cartesianViscoMoment;
226 forcesFileCsv.close();
239 std::stringstream positionFileName, positionFileNameCsv;
243 std::ofstream positionFile(positionFileName.str(), std::ios::app);
245 positionFile.close();
247 std::ofstream positionFileCsv(positionFileNameCsv.str(), std::ios::app);
249 positionFileCsv.close();
Point2D viscousForce
Вектор силы и момент вязкого трения, действующие на профиль
Заголовочный файл с описанием класса Passport (двумерный) и cоответствующими структурами ...
Times & getTimestat() const
Возврат ссылки на временную статистику выполнения шага расчета по времени
void Initialize(Point2D Vcm0_, Point2D Rcm0_, double Wcm0_, double Phi0_)
Задание начального положения и начальной скорости
bool geographicalAngles
Признак работы в "географической" системе координат
Заголовочный файл с описанием класса Wake.
Заголовочный файл с описанием класса World2D.
double vRef
Референсная скорость
Point2D Rcm
Текущие положение профиля
double getCurrTime() const
Возвращает текуще время
Заголовочный файл с описанием класса Airfoil.
const size_t degOfFreedom
Количество степеней свободы
const size_t numberInPassport
Номер профиля в паспорте
std::string dir
Рабочий каталог задачи
void GenerateForcesHeader()
Генерация заголовка файла нагрузок
Заголовочный файл с описанием класса Mechanics.
PhysicalProperties physicalProperties
Структура с физическими свойствами задачи
Point2D VcmOld
Скорость и отклонение с предыдущего шага
const bool isMoves
Переменная, отвечающая за то, двигается профиль или нет
bool calcCoefficients
Признак вычисления коэффициентов вместо сил
Point2D Rcm0
Начальное положение профиля
void PrintHeaderToTextFile(std::ofstream &str, const std::string &header)
Формирование подзаголовка в текстовом файле вывода программы VM2D/VM3D.
void GeneratePositionHeader()
Генерация заголовка файла положения профиля
const size_t numberInPassport
Номер профиля в паспорте
Point2D RcmOld
Текущие положение профиля
T sqr(T x)
Возведение числа в квадрат
void ReadParametersFromDictionary()
Парсинг списка параметров механической системы
double rho
Плотность потока
Заголовочный файл с описанием класса StreamParser.
Класс, опеделяющий двумерный вектор
const bool isRotate
Переменная, отвечающая за то, может профиль вращаться или нет
void GenerateForcesString()
Сохранение строки со статистикой в файл нагрузок
std::unique_ptr< VMlib::StreamParser > mechParamsParser
Умный указатель на парсер параметров механической системы
void PrintLogoToTextFile(std::ofstream &str, const std::string &fileName, const std::string &descr)
Формирование заголовка файла программы VM2D/VM3D.
VMlib::LogStream & getInfo() const
Возврат ссылки на объект LogStream Используется в техничеcких целях для организации вывода ...
Заголовочный файл с описанием класса MeasureVP.
double phiAfl
Поворот профиля
const World2D & W
Константная ссылка на решаемую задачу
const Passport & getPassport() const
Возврат константной ссылки на паспорт
virtual void Rotate(double alpha)=0
Поворот профиля
Point2D rcm
Положение центра масс профиля
const bool isDeform
Переменная, отвечающая за то, деформируется профиль или нет
Mechanics(const World2D &W_, size_t numberInPassport_, int degOfFreedom_, bool isMoves_, bool isDeform_, bool isRotate_)
Конструктор
void GeneratePositionString()
Сохранение строки со статистикой в файл нагрузок
size_t getCurrentStep() const
Возврат константной ссылки на параметры распараллеливания по MPI.
const Airfoil & getAirfoil(size_t i) const
Возврат константной ссылки на объект профиля
Класс, опеделяющий текущую решаемую задачу
std::vector< AirfoilParams > airfoilParams
Список структур с параметрами профилей
Заголовочный файл с описанием класса Velocity.
Point2D Vcm0
Начальная скорость центра и угловая скорость
Point2D hydroDynamForce
Вектор гидродинамической силы и момент, действующие на профиль
Класс, позволяющий выполнять разбор файлов и строк с настройками и параметрами
timePeriod timeOther
Все прочее
Point2D rotated(const double angle=1.5707963267948966192313216916398) const
Поворот вектора на произвольный угол против часовой стрелки (по умолчанию 90 градусов) ...
virtual void Move(const Point2D &dr)=0
Перемещение профиля
Заголовочный файл с описанием класса Boundary.