58 std::string filename = dir + fileName;
59 std::ifstream wakeFile;
68 wakeParser.
get(
"vtx",
vtx);
79 std::ofstream outfile;
80 size_t numberNonZero = 0;
83 numberNonZero +=
vtx.size();
94 outfile <<
"# vtk DataFile Version 2.0" << std::endl;
96 outfile <<
"ASCII" << std::endl;
97 outfile <<
"DATASET UNSTRUCTURED_GRID" << std::endl;
98 outfile <<
"POINTS " << numberNonZero <<
" float" << std::endl;
104 outfile << r[0] <<
" " << r[1] <<
" " <<
"0.0" << std::endl;
111 outfile << r[0] <<
" " << r[1] <<
" " <<
"0.0" << std::endl;
114 outfile <<
"CELLS " << numberNonZero <<
" " << 2 * numberNonZero << std::endl;
115 for (
size_t i = 0; i < numberNonZero; ++i)
116 outfile <<
"1 " << i << std::endl;
118 outfile <<
"CELL_TYPES " << numberNonZero << std::endl;
119 for (
size_t i = 0; i < numberNonZero; ++i)
120 outfile <<
"1" << std::endl;
122 outfile << std::endl;
123 outfile <<
"POINT_DATA " << numberNonZero << std::endl;
124 outfile <<
"SCALARS Gamma float 1" << std::endl;
125 outfile <<
"LOOKUP_TABLE default" << std::endl;
129 outfile << v.g() << std::endl;
135 outfile <<
"0.0" << std::endl;
144 bool littleEndian = (*((uint8_t*)&x));
145 const char eolnBIN[] =
"\n";
148 outfile.open(
W.
getPassport().
dir +
"snapshots/" + fname, std::ios::out | std::ios::binary);
150 outfile <<
"# vtk DataFile Version 3.0" <<
"\r\n" <<
"VM2D VTK result: " << (
W.
getPassport().
dir +
"snapshots/" + fname).c_str() <<
" saved " <<
VMlib::CurrentDataTime() << eolnBIN;
151 outfile <<
"BINARY" << eolnBIN;
152 outfile <<
"DATASET UNSTRUCTURED_GRID" << eolnBIN <<
"POINTS " << numberNonZero <<
" " <<
"float" << eolnBIN;
157 Eigen::VectorXf rData = Eigen::VectorXf::Zero(
vtx.size() * 3);
158 for (
size_t i = 0; i <
vtx.size(); ++i)
160 rData(3 * i) = (float)(
vtx[i].r())[0];
161 rData(3 * i + 1) = (float)(
vtx[i].r())[1];
165 for (
int i = 0; i <
vtx.size() * 3; ++i)
167 outfile.write(reinterpret_cast<char*>(rData.data()),
vtx.size() * 3 *
sizeof(float));
186 std::vector<int> cells(2 * numberNonZero);
187 for (
size_t i = 0; i < numberNonZero; ++i)
190 cells[2 * i + 1] = (int)i;
193 std::vector<int> cellsTypes;
194 cellsTypes.resize(numberNonZero, 1);
198 for (
int i = 0; i < numberNonZero * 2; ++i)
201 for (
int i = 0; i < numberNonZero; ++i)
205 outfile << eolnBIN <<
"CELLS " << numberNonZero <<
" " << numberNonZero * 2 << eolnBIN;
206 outfile.write(reinterpret_cast<char*>(cells.data()), numberNonZero * 2 *
sizeof(
int));
207 outfile << eolnBIN <<
"CELL_TYPES " << numberNonZero << eolnBIN;
208 outfile.write(reinterpret_cast<char*>(cellsTypes.data()), numberNonZero *
sizeof(
int));
211 outfile << eolnBIN <<
"POINT_DATA " << numberNonZero << eolnBIN;
212 outfile << eolnBIN <<
"SCALARS Gamma " <<
"float" <<
" 1" << eolnBIN;
213 outfile <<
"LOOKUP_TABLE default" << eolnBIN;
217 Eigen::VectorXf pData = Eigen::VectorXf::Zero(numberNonZero);
218 for (
int s = 0; s <
vtx.size(); ++s)
219 pData(s) = (float)
vtx[s].g();
222 for (
int i = 0; i <
vtx.size(); ++i)
224 outfile.write(reinterpret_cast<char*>(pData.data()),
vtx.size() *
sizeof(float));
247 outfile <<
"point,x,y,G " << std::endl;
252 outfile << counter++ <<
"," << v.r()[0] <<
"," << v.r()[1] <<
"," << v.g() << std::endl;
258 outfile << counter++ <<
"," << r[0] <<
"," << r[1] <<
"," <<
"0.0" << std::endl;
Заголовочный файл с описанием класса Passport (двумерный) и cоответствующими структурами ...
Times & getTimestat() const
Возврат ссылки на временную статистику выполнения шага расчета по времени
int saveVtxStep
Шаг сохранения кадров в бинарные файлы
std::string CurrentDataTime()
Формирование строки с текущем временем и датой
Класс, определяющий работу с потоком логов
Заголовочный файл с описанием класса Wake.
void ReadFromFile(const std::string &dir, const std::string &fileName)
Считывание вихревого следа из файла
Заголовочный файл с описанием класса World2D.
int nameLength
Число разрядов в имени файла
Заголовочный файл с описанием класса Airfoil.
Заголовочный файл с описанием класса WakeDataBase.
std::string dir
Рабочий каталог задачи
Заголовочный файл с описанием класса Preprocessor.
Класс, позволяющий выполнять предварительную обработку файлов
Заголовочный файл с описанием класса Mechanics.
const Point2D & getR(size_t q) const
Возврат константной ссылки на вершину профиля
size_t getNumberOfPanels() const
Возврат количества панелей на профиле
void SaveKadrVtk(const std::string &filePrefix="Kadr") const
Сохранение вихревого следа в файл .vtk.
std::string fileNameStep(const std::string &name, int length, size_t number, const std::string &ext)
Формирование имени файла
bool ifDivisible(int val) const
timePeriod timeSaveKadr
Начало и конец процесса сохранения кадра в файл
TimeDiscretizationProperties timeDiscretizationProperties
Структура с параметрами процесса интегрирования по времени
size_t getNumberOfAirfoil() const
Возврат количества профилей в задаче
Заголовочный файл с описанием класса StreamParser.
std::vector< Vortex2D > vtx
Список вихревых элементов
const World2D & W
Константная ссылка на решаемую задачу
Класс, опеделяющий двумерный вектор
bool fileExistTest(std::string &fileName, LogStream &info, const std::list< std::string > &extList={})
Проверка существования файла
VMlib::LogStream & getInfo() const
Возврат ссылки на объект LogStream Используется в техничеcких целях для организации вывода ...
Заголовочный файл с описанием класса MeasureVP.
std::pair< std::string, int > fileTypeVtx
Тип файлов для сохранения скорости и давления
const Passport & getPassport() const
Возврат константной ссылки на паспорт
size_t getCurrentStep() const
Возврат константной ссылки на параметры распараллеливания по MPI.
const Airfoil & getAirfoil(size_t i) const
Возврат константной ссылки на объект профиля
Заголовочный файл с описанием класса Velocity.
void SwapEnd(T &var)
Вспомогательная функция перестановки байт местами (нужно для сохранения бинарных VTK) ...
void CreateDirectory(const std::string &dir, const std::string &name)
Создание каталога
Класс, позволяющий выполнять разбор файлов и строк с настройками и параметрами
bool get(const std::string &name, std::vector< Point2D > &res, const std::vector< Point2D > *defValue=nullptr, bool echoDefault=true) const
Считывание вектора из двумерных точек из базы данных
Заголовочный файл с описанием класса Boundary.