Import - import neformátovaného binárneho súboru Fortran - CiupaCabra
Mám neformátovaný binárny súbor vygenerovaný pomocou kompilátora Compaq Visual Fortran (veľký endian).
Tu je to, čo hovorí o dokumentácii:
Binárny súbor je napísaný vo všeobecnom formáte pozostávajúcom z dátovej matice, poháňaného záznamom deskriptora:
- 8-znakové kľúčové slovo, ktoré identifikuje údaje v bloku.
- Celé číslo bajtových signálov, ktoré definujú počet prvkov v bloku.
- Štvormiestne kľúčové slovo, ktoré definuje dátový typ. (INTE, REAL, LOGI, DVOJNÁSOBNÝ>
Prvky hlavičky sa čítajú ako jeden záznam. Údaje sledujú deskriptor nového záznamu. Numerické matice sú rozdelené do blokov až s 1000 prvkami. Veľkosť fyzického záznamu je rovnaká ako veľkosť bloku.
Ďalšie informácie o kľúčovom slove:
- SEQHDR - 1 položka - INTE - hlavička sekvencie s dátovou hodnotou. Ak je číslo k dispozícii, jedná sa o zakódované celé číslo zodpovedajúce času, kedy bol súbor vytvorený.
- MINISTEP - 1 položka - INTE - Ministep číslo je v podstate údajové číslo (napr. Psi v 1. deň)
- PARAMS - n položiek - REAL - vektorový parameter pri ministep hodnote.
Pokusy načítať tieto údaje do programu Mathematica vrátane importu

ukážte mi identifikovateľný text, ale neexistujú žiadne užitočné číselné hodnoty.
Príslušný súbor je k dispozícii tu.
Mathematica je schopná analyzovať tento typ súborov, a ak je to tak, tak najlepšie?
2 odpovede
Súbor sa javí ako zjednotený súhrnný súbor zo Schlumberger Eclipse Reservoir Simulator. Tento formát súboru používa kódovanie záznamu s variabilnou dĺžkou Compaq Visual Fortran.
Mathematica neponúka žiadne vstavané funkcie na čítanie tohto formátu súboru, takže si ho budeme musieť sami analyzovať.
Začíname definovaním pohodlnej funkcie na čítanie binárnych údajov big-endian zo súboru:
Logické záznamy v súboroch Eclipse sa skladajú z dvoch častí: hlavičky a údajov. Nasledujúca funkcia prečíta hlavičku:
Dĺžky záznamu dĺžky záznamu a dĺžky CVF sa preskočia, pričom zostane kľúčové slovo záznamu, počet údajových položiek a typ údajovej položky. Každý typ prvku vyžaduje špeciálne zaobchádzanie:
Tento kód sa zaoberá iba celočíselnými typmi (INTE) a skutočnými údajmi (REAL), aj keď by bolo ľahké ho rozšíriť aj na iné typy. readEclElements sa v každom prípade používa na načítanie požadovaného počtu údajových prvkov - čo môže obsahovať niekoľko premenných záznamov:
Tieto funkcie pomoci sa používajú na načítanie úplného páru hlavička/údaj:
Zostáva iba otvoriť súbor, prečítať všetky záznamy a zavrieť súbor:
Tu je readEclFile v akcii, ktorý číta dodaný dátový súbor (za predpokladu, že je súbor v rovnakom adresári ako notebook):
Nepoznám časové kódovanie použité v záznamoch SEQHDR .
Upozornenie: Nemám vzťah so spoločnosťou Schlumberger.