Імпорт - Імпорт неформатованого двійкового Fortran - CiupaCabra
У мене є неформатований двійковий файл, створений за допомогою компілятора Compaq Visual Fortran (великий ендіан).
Ось що сказано про документацію:
Двійковий файл записаний у загальному форматі, що складається з матриці даних, керованої записом дескриптора:
- Ключове слово з 8 символів, яке ідентифікує дані в блоці.
- Ціле число байтових сигналів, що визначають кількість елементів у блоці.
- Чотиризначне ключове слово, яке визначає тип даних. (ІНТЕ, РЕАЛЬНИЙ, ЛОГІЧНИЙ, ДВОЙКИЙ>
Елементи заголовка читаються як єдиний запис. Дані слідують за дескриптором у новому записі. Числові матриці розділені на блоки, що містять до 1000 елементів. Розмір фізичного запису такий же, як розмір блоку.
Додаткова інформація про ключові слова:
- SEQHDR - 1 елемент - INTE - Заголовок послідовності зі значенням даних. Якщо число присутнє, це закодоване ціле число, що відповідає часу створення файлу.
- MINISTEP - 1 позиція - INTE - Номер міні-кроку - це, по суті, номер даних (наприклад: psi на 1-й день)
- ПАРАМЕТРИ - n елементів - РЕАЛЬНІ - Векторний параметр при значенні міністепу.
Спроби зчитування таких даних у Mathematica, включаючи Імпорт

покажіть мені ідентифікуваний текст, але корисних числових значень немає.
Файл, про який йдеться, доступний тут.
Mathematica здатна проаналізувати цей тип файлів і, якщо так, то найкращий спосіб?
2 відповіді
Файл представляється уніфікованим підсумковим файлом із симулятора водосховища Schlumberger Eclipse. Цей формат файлу використовує кодування запису змінної довжини Compaq Visual Fortran.
Mathematica не пропонує жодних вбудованих функціональних можливостей для читання цього формату файлу, тому нам доведеться проаналізувати його самостійно.
Почнемо з визначення функції зручності для читання двійкових даних великого ендіану з файлу:
Логічні записи у файлах Eclipse складаються з двох частин: заголовка та даних. Наступна функція читає заголовок:
Довжини записів довжини запису та довжини CVF пропускаються, залишаючи ключове слово запису, кількість елементів даних та тип елемента даних. Кожен тип елементів вимагає спеціальної обробки:
Цей код має справу лише з цілими типами (INTE) та реальними даними (REAL), хоча було б легко розширити це для обробки й інших типів. readEclElements використовується в кожному випадку для зчитування необхідної кількості елементів даних - що може включати кілька записів змінних:
Ці функції довідки використовуються для читання повної пари заголовка/даних:
Залишилося лише відкрити файл, прочитати всі записи та закрити файл:
Ось readEclFile в дії, читаючи наданий файл даних (припускаючи, що файл знаходиться в тому ж каталозі, що і блокнот):
Я не знаю часового кодування, що використовується в записах SEQHDR .
Попередження: Я не маю відношення до Schlumberger.