======Файл с результатами решения (новый формат)====== Файл ''REZER'' предназначен для сохранения результата вычислений системы ФРУНД в режиме использования //MPI//. =====Хранимая информация===== Этот файл хранит следующие данные: * информацию о телах: * положение, * скорость, * ускорение, * матрица поворота; * информацию о соединительных элементах: * FIXME =====Структура файла===== ====Заголовок файла==== В следующей таблице приводится информация об элементах заголовка данного файла. ^ Элемент заголовка ^^ Тип ^ Количество ^ | Размер заголовка в байтах || //int// | 1 | | Количество тел || //int// | 1 | | Количество соединительных элементов || //int// | 1 | | Шаг расчета по времени || //double// | 1 | | Последовательность((Последовательность указывает, в каком порядке идут данные о телах в каждом кадре, и сколько степеней свободы имеет каждое тело (битовая маска). Зная порядок тел и размер, занимаемый телом в заголовке, можно вычислить смещение до любого тела. FIXME)) | номеров тел | //int// | Количество тел | | ::: | масок степеней свободы\\ и матрицы поворота | //short// | ::: | ====Кадры==== Кадр состоит из двух областей: - область тел, - область соединительных элементов. =====Подробное описание===== Файлы с результатами нового формата являются бинарными и обычно имеют наименование ''REZER''. Новый формат файлов с результатами решения построен по схожим принципам, что и [[rezr|старый]]. ====Содержимое файла==== Содержимое файла можно разделить на 2 основные части: * [[rezer#Заголовок|заголовок]], * [[rezer#Последовательность кадров|последовательность кадров]]. ===Заголовок=== Заголовок включает в себя следующие поля: * длина заголовка (тип //Integer//); * количество тел (тип //Integer//); * количество соединительных элементов (тип //Integer//); * шаг между двумя моментами времени, соответствующими соседним кадрам (тип //double//); * последовательность пар "номер тела --- маска" (оба числа в паре имеют тип //Integer//), при этом эта последовательность отражает реальное расположение информации о телах в кадре; * последовательность пар "номер соединительного элемента --- маска" (оба числа в паре имеют тип //Integer//), эта последовательность также отражает расположение соединительных элементов в кадре. ==Маска тела== В маске тела используются последние 7 бит: * Единица в 6-ом бите служит признаком наличия у тела матрицы поворота. Наличие матрицы поворота означает хранение 9 вещественных чисел --- элементов матрицы поворота. * Биты 5 -- 0 содержат признаки наличия соответствующих степеней свободы (номер степени свободы на единицу больше номера бита). Наличие любой из степеней свободы означает хранение 3 вещественных чисел (вдоль данной степени свободы): - перемещения, - скорости, - ускорения. Таким образом, на тело в кадре может приходиться от 3 до 27 вещественных чисел, или от 12 до 108 байт. ==Маска соединительного элемента== В маске соединительного элемента используются только последние 6 бит. Организация этих бит аналогична организации бит 5 -- 0 в маске тела. Однако наличие одной степени свободы означает хранение в кадре 4 вещественных чисел --- параметров соединительного элемента, поэтому на один соединительный элемент может приходиться от 4 до 24 вещественных чисел (или от 16 до 96 байт). ===Последовательность кадров=== После окончания заголовка в файле идет последовательность кадров. В каждом кадре сначала записана информация, относящаяся к телам (в том порядке, как они были перечислены в заголовке), а затем --- информация, относящаяся к соединительным элементам (также порядок следования сохраняется, как в заголовке).