Importálás - Formázatlan bináris Fortran - CiupaCabra importálása

Van egy formázatlan bináris fájlom, amelyet a Compaq Visual Fortran fordító (nagy endian) segítségével állítottam elő.

A dokumentációról a következőket mondja:

A bináris fájl egy általános formátumban van megírva, amely egy adatmátrixból áll, amelyet egy leíró rekord vezet:

  1. 8 karakteres kulcsszó, amely azonosítja a blokk adatait.
  2. A blokkban lévő elemek számát meghatározó bájtjelek egész száma.
  3. 4 karakteres kulcsszó, amely meghatározza az adattípust. (INTE, REAL, LOGI, DUPLA>

A fejléc elemei egyetlen rekordként olvashatók. Az adatok egy új rekord leíróját követik. A numerikus mátrixok legfeljebb 1000 elemből álló blokkokra vannak felosztva. A fizikai rekord mérete megegyezik a blokk méretével.

További kulcsszó információk:

  1. SEQHDR - 1 elem - INTE - Szekvenciafejléc, adatértékkel. Ha van szám, akkor ez egy kódolt egész szám, amely megfelel a fájl létrehozásának időpontjának.
  2. MINISTEP - 1 elem - INTE - A Ministep szám lényegében az adatszám (pl: psi az 1. napon)
  3. PARAMS - n elem - REAL - Vektorparaméter ministep értéken.

Megpróbál ilyen adatokat beolvasni a Mathematica-ba, beleértve az Import-ot is

ciupacabra

mutasson nekem egy azonosítható szöveget, de nincsenek hasznos számértékek.

A kérdéses fájl itt érhető el.

A Mathematica képes elemezni ezt a fájltípust, és ha igen, akkor ez a legjobb módszer?

2 válasz

Úgy tűnik, hogy a fájl a Schlumberger Eclipse Reservoir Simulator egységes összefoglaló fájlja. Ez a fájlformátum a Compaq Visual Fortran változó hosszúságú felvételi kódolását használja.

A Mathematica nem kínál beépített funkciót ennek a fájlformátumnak az olvasására, ezért magunknak kell elemeznünk.

Először meghatározunk egy kényelmi funkciót a nagy endináris bináris adatok fájlból történő olvasására:

Az Eclipse fájlokban található logikai rekordok két részből állnak: a fejlécben és az adatokban. A következő függvény beolvassa a fejlécet:

A rekord hossza és a CVF hossza kihagyásra kerül, így a rekord kulcsszó, az adatelemek száma és az adatelem típusa megmarad. Minden elemtípus különleges kezelést igényel:

Ez a kód csak egész típusú (INTE) és valós adatokkal (REAL) foglalkozik, bár ezt könnyű lenne kiterjeszteni más típusok kezelésére is. A readEclElements-t minden esetben a szükséges számú adatelem beolvasására használják - amelyek több változó rekordot is tartalmazhatnak:

Ezeket a súgófunkciókat egy teljes fejléc/adatpár beolvasására használják:

Csak a fájl megnyitása, az összes rekord elolvasása és bezárása van hátra:

Itt olvasható a readEclFile működés közben, a mellékelt adatfájl olvasása (feltéve, hogy a fájl ugyanabban a könyvtárban található, mint a notebook):

Nem ismerem a SEQHDR rekordokban használt időkódolást .

Figyelem: Nincs kapcsolatom Schlumbergerrel.