Wolfram Mathematica a geofizikában

Köszönet a blog szerzőjének Anton Ekimenko jelentéséért

Bevezetés

Ez a jegyzet a konferencia nyomán készült Wolfram orosz technológiai konferencia és az általam adott jelentés összefoglalóját tartalmazza. Az eseményre júniusban került sor Szentpéterváron. Tekintettel arra, hogy egy háztömbnyire dolgozom a konferencia helyszínétől, nem tudtam nem részt venni ezen az eseményen. 2016-ban és 2017-ben konferencia beszámolókat hallgattam, idén pedig előadást tartottam. Először is megjelent egy érdekes (számomra úgy tűnik) téma, amivel fejlesztjük Kirill BelovMásodszor, miután hosszasan tanulmányoztam az Orosz Föderáció szankciópolitikára vonatkozó jogszabályait, a vállalkozásnál, ahol dolgozom, két engedély jelent meg. Wolfram Mathematica.

Mielőtt rátérnék beszédem témájára, szeretném megjegyezni a rendezvény jó szervezését. A konferencia látogatóoldala a kazanyi székesegyház képét használja. A katedrális Szentpétervár egyik fő látványossága, és nagyon jól látható abból a teremből, amelyben a konferencia zajlott.

Wolfram Mathematica a geofizikában

A Szentpétervári Állami Gazdasági Egyetem bejáratánál a résztvevőket a hallgatók közül asszisztensek várták – nem engedték eltévedni. A regisztráció során apró ajándéktárgyak kerültek kiosztásra (játék - villogó tüske, toll, Wolfram szimbólumokkal ellátott matricák). Ebéd és kávészünet is szerepelt a konferencia programjában. Már megjegyeztem a finom kávékat és a pitéket a csoport falán – a szakácsok nagyszerűek. Ezzel a bevezető résszel szeretném hangsúlyozni, hogy maga a rendezvény, annak formája és helyszíne már pozitív érzelmeket hoz.

Az általam és Kirill Belov által készített jelentés a „Wolfram Mathematica használata az alkalmazott geofizikai problémák megoldására” címet viseli. A szeizmikus adatok spektrális elemzése vagy „ahol az ősi folyók futottak”. A jelentés tartalma két részből áll: egyrészt a ben elérhető algoritmusok felhasználásáról Wolfram Mathematica a geofizikai adatok elemzéséhez, másodszor pedig így lehet geofizikai adatokat bevinni a Wolfram Mathematicába.

Szeizmikus feltárás

Először egy rövid kirándulást kell tennie a geofizikába. A geofizika a kőzetek fizikai tulajdonságait vizsgáló tudomány. Nos, mivel a kőzetek különböző tulajdonságokkal rendelkeznek: elektromos, mágneses, rugalmas, léteznek megfelelő geofizikai módszerek: elektromos kutatás, mágneses kutatás, szeizmikus kutatás... A cikk keretében csak a szeizmikus kutatásról lesz szó részletesebben. A szeizmikus kutatás az olaj- és gázkutatás fő módszere. A módszer a rugalmas rezgések gerjesztésén, majd a vizsgálati területet alkotó kőzetek válaszának rögzítésén alapul. A rezgések gerjesztése szárazföldön (dinamittal vagy nem robbanásveszélyes, rugalmas rezgésforrásokkal) vagy tengeren (légfegyverekkel) történik. A rugalmas rezgések a kőzettömegen keresztül terjednek, megtörve és visszaverődnek a különböző tulajdonságú rétegek határain. A visszavert hullámok visszatérnek a felszínre, és a szárazföldön geofonok (általában egy tekercsben felfüggesztett mágnes mozgásán alapuló elektrodinamikus eszközök) vagy a tengerben (piezoelektromos hatás alapján) hidrofonok rögzítik. A hullámok érkezési idejére meg lehet ítélni a geológiai rétegek mélységét.

Szeizmikus hajóvontató berendezés
Wolfram Mathematica a geofizikában

A légpisztoly rugalmas rezgéseket gerjeszt
Wolfram Mathematica a geofizikában

A hullámok áthaladnak a kőzeten, és hidrofonok rögzítik őket
Wolfram Mathematica a geofizikában

"Ivan Gubkin" geofizikai kutatóhajó a szentpétervári Blagovescsenszkij híd melletti mólónál
Wolfram Mathematica a geofizikában

Szeizmikus jelmodell

A kőzetek különböző fizikai tulajdonságokkal rendelkeznek. A szeizmikus feltáráshoz elsősorban a rugalmas tulajdonságok fontosak - a rugalmas rezgések terjedési sebessége és a sűrűség. Ha két réteg azonos vagy hasonló tulajdonságokkal rendelkezik, akkor a hullám „nem veszi észre” a köztük lévő határt. Ha a hullámsebesség a rétegekben eltér, akkor a rétegek határán visszaverődés történik. Minél nagyobb a tulajdonságok különbsége, annál intenzívebb a visszaverődés. Ennek intenzitását a reflexiós együttható (rc) határozza meg:

Wolfram Mathematica a geofizikában

ahol ρ a kőzetsűrűség, ν a hullámsebesség, 1 és 2 a felső és alsó réteget jelöli.

Az egyik legegyszerűbb és leggyakrabban használt szeizmikus jelmodell a konvolúciós modell, amikor a rögzített szeizmikus nyomot a reflexiós együtthatók sorozatának szondázó impulzussal történő konvolúciójaként ábrázoljuk:

Wolfram Mathematica a geofizikában

ahol s(t) — szeizmikus nyom, azaz. minden, amit hidrofonnal vagy geofonnal rögzítettek rögzített felvételi idő alatt, w(t) - a légpuska által generált jel, n(t) - véletlenszerű zaj.

Példaként számítsunk ki egy szintetikus szeizmikus nyomot. Kezdeti jelként a szeizmikus feltárásban széles körben használt Ricker-impulzust fogjuk használni.

length=0.050; (*Signal lenght*)
dt=0.001;(*Sample rate of signal*)
t=Range[-length/2,(length)/2,dt];(*Signal time*)
f=35;(*Central frequency*)
wavelet=(1.0-2.0*(Pi^2)*(f^2)*(t^2))*Exp[-(Pi^2)*(f^2)*(t^2)];
ListLinePlot[wavelet, Frame->True,PlotRange->Full,Filling->Axis,PlotStyle->Black,
PlotLabel->Style["Initial wavelet",Black,20],
LabelStyle->Directive[Black,Italic],
FillingStyle->{White,Black},ImageSize->Large,InterpolationOrder->2]

Kezdeti szeizmikus impulzus
Wolfram Mathematica a geofizikában

Két határt fogunk felállítani 300 ms és 600 ms mélységben, és a reflexiós együtthatók véletlen számok lesznek

rcExample=ConstantArray[0,1000];
rcExample[[300]]=RandomReal[{-1,0}];
rcExample[[600]]=RandomReal[{0,1}];
ListPlot[rcExample,Filling->0,Frame->True,Axes->False,PlotStyle->Black,
PlotLabel->Style["Reflection Coefficients",Black,20],
LabelStyle->Directive[Black,Italic]]

Reflexiós együtthatók sorozata
Wolfram Mathematica a geofizikában

Számítsuk ki és jelenítsük meg a szeizmikus nyomot. Mivel a reflexiós együtthatók eltérő előjelűek, két váltakozó reflexiót kapunk a szeizmikus nyomon.

traceExamle=ListConvolve[wavelet[[1;;;;1]],rcExample];
ListPlot[traceExamle,
PlotStyle->Black,Filling->0,Frame->True,Axes->False,
PlotLabel->Style["Seismic trace",Black,20],
LabelStyle->Directive[Black,Italic]]

Szimulált pálya
Wolfram Mathematica a geofizikában

Ehhez a példához foglalás szükséges - a valóságban a rétegek mélysége természetesen méterben van meghatározva, és a szeizmikus nyom kiszámítása az időtartományra történik. Helyesebb lenne a mélységeket méterben megadni és az érkezési időket a rétegekben lévő sebességek ismeretében kiszámítani. Ilyenkor azonnal az időtengelyre állítom a rétegeket.

Ha terepkutatásról beszélünk, akkor az ilyen megfigyelések eredményeként hatalmas számú hasonló idősort (szeizmikus nyomokat) rögzítenek. Például egy 25 km hosszú és 15 km széles lelőhely tanulmányozásakor, ahol a munka eredményeként minden nyom egy 25x25 méteres cellát jellemez (az ilyen cellát binnek nevezik), a végső adattömb 600000 1 nyomot tartalmaz majd. 5 ms-os mintavételezési idővel és 11 másodperces rögzítési idővel a végső adatállomány több mint XNUMX GB lesz, az eredeti „nyers” anyag mennyisége pedig több száz gigabájt is lehet.

Hogyan dolgozz velük Wolfram Mathematica?

csomag GeologyIO

Megkezdődött a csomag fejlesztése kérdés az orosz ajkú támogató csoport VK falán. A közösség válaszainak köszönhetően nagyon gyorsan megoldás született. Ennek eredményeként pedig komoly fejlesztéssé nőtte ki magát. Megfelelő Wolfram közösségi fali poszt Még a moderátorok is megjelölték. Jelenleg a csomag támogatja a következő, a geológiai iparban aktívan használt adattípusokkal való munkát:

  1. térképadatok importálása ZMAP és IRAP formátumban
  2. mérések behozatala LAS formátumú kutakba
  3. szeizmikus fájlok formátumának be- és kimenete SEGY

A csomag telepítéséhez az összeállított csomag letöltési oldalán található utasításokat kell követni, pl. bármelyikben futtassa a következő kódot Mathematica jegyzetfüzet:

If[PacletInformation["GeologyIO"] === {}, PacletInstall[URLDownload[
    "https://wolfr.am/FiQ5oFih", 
    FileNameJoin[{CreateDirectory[], "GeologyIO-0.2.2.paclet"}]
]]]

Ezután a csomag az alapértelmezett mappába kerül telepítésre, amelynek elérési útja a következőképpen érhető el:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Példaként bemutatjuk a csomag főbb képességeit. A hívás hagyományosan Wolfram nyelvű csomagokhoz történik:

Get["GeologyIO`"]

A csomag felhasználásával készült Wolfram Workbench. Ez lehetővé teszi, hogy a csomag fő funkcionalitását olyan dokumentációval kísérje, amely megjelenítési formátumát tekintve nem különbözik magának a Wolfram Mathematica dokumentációjától, és a csomagot első megismeréshez tesztfájlokkal látja el.

Wolfram Mathematica a geofizikában

Wolfram Mathematica a geofizikában

Ilyen fájl különösen a „Marmousi.segy” fájl - ez egy geológiai szakasz szintetikus modellje, amelyet a Francia Ásványolaj Intézet fejlesztett ki. Ezzel a modellel a fejlesztők saját algoritmusaikat tesztelik a hullámtér modellezésére, az adatfeldolgozásra, a szeizmikus nyomok inverziójára stb. Maga a Marmousi modell abban a tárolóban van tárolva, ahonnan magát a csomagot letöltötték. A fájl letöltéséhez futtassa a következő kódot:

If[Not[FileExistsQ["Marmousi.segy"]], 
URLDownload["https://wolfr.am/FiQGh7rk", "Marmousi.segy"];]
marmousi = SEGYImport["Marmousi.segy"]

Eredmény importálása – SEGYData objektum
Wolfram Mathematica a geofizikában

A SEGY formátum magában foglalja a megfigyelésekre vonatkozó különféle információk tárolását. Először is, ezek szöveges megjegyzések. Ez tartalmazza a munkavégzés helyére vonatkozó információkat, a méréseket végző cégek nevét stb. Esetünkben ezt a fejlécet a TextHeader kulccsal rendelkező kérés hívja meg. Íme egy rövidített fejléc:

Short[marmousi["TextHeader"]]

„A Marmousi adathalmazt az Intézetben hozták létre ...minimum 1500 m/s és maximum 5500 m/s)”

Az aktuális geológiai modellt a „nyomok” gombbal érheti el a szeizmikus nyomok segítségével (a csomag egyik jellemzője, hogy a kulcsok nem tesznek különbséget a kis- és nagybetűk között):

ArrayPlot[Transpose[marmousi["traces"]], PlotTheme -> "Detailed"]

Marmousi modell
Wolfram Mathematica a geofizikában

Jelenleg a csomag lehetővé teszi az adatok részleges betöltését is nagyméretű fájlokból, így lehetővé válik a több tíz gigabájtot is elérő fájlok feldolgozása. A csomag funkciói tartalmazzák az adatok .segy fájlba történő exportálását és a fájl végéhez történő részleges hozzáfűzését is.

Külön érdemes megjegyezni a csomag funkcionalitását, amikor a .segy fájlok összetett szerkezetével dolgozunk. Mivel nem csak az egyes nyomvonalak és fejlécek elérését teszi lehetővé kulcsok és indexek segítségével, hanem megváltoztathatja azokat, majd fájlba írhatja őket. A GeologyIO megvalósításának számos technikai részlete túlmutat e cikk keretein, és valószínűleg külön leírást érdemel.

A spektrális elemzés jelentősége a szeizmikus feltárásban

A szeizmikus adatok Wolfram Mathematicába történő importálása lehetővé teszi a beépített jelfeldolgozási funkciók használatát a kísérleti adatokhoz. Mivel minden szeizmikus nyom egy idősort jelent, vizsgálatuk egyik fő eszköze a spektrális elemzés. A szeizmikus adatok gyakorisági összetételének elemzésének előfeltételei között megnevezhetjük például a következőket:

  1. A különböző típusú hullámokat eltérő frekvenciaösszetétel jellemzi. Ez lehetővé teszi a hasznos hullámok kiemelését és az interferenciahullámok elnyomását.
  2. A kőzet tulajdonságai, például a porozitás és a telítettség befolyásolhatják a frekvencia összetételét. Ez lehetővé teszi a legjobb tulajdonságokkal rendelkező kőzetek azonosítását.
  3. A különböző vastagságú rétegek különböző frekvenciatartományokban anomáliákat okoznak.

A harmadik pont a legfontosabb ebben a cikkben. Az alábbiakban egy kódrészlet található a szeizmikus nyomok kiszámításához változó vastagságú réteg esetén - egy ékmodell. Ezt a modellt hagyományosan szeizmikus feltárásban tanulmányozzák az interferenciahatások elemzésére, amikor több rétegről visszaverődő hullámok egymásra helyezkednek.

nx=200;(* Number of grid points in X direction*)
ny=200;(* Number of grid points in Y direction*)
T=2;(*Total propagation time*)
(*Velocity and density*)
modellv=Table[4000,{i,1,ny},{j,1,nx}];(* P-wave velocity in m/s*)
rho=Table[2200,{i,1,ny},{j,1,nx}];(* Density in g/cm^3, used constant density*)
Table[modellv[[150-Round[i*0.5];;,i]]=4500;,{i,1,200}];
Table[modellv[[;;70,i]]=4500;,{i,1,200}];
(*Plotting model*)
MatrixPlot[modellv,PlotLabel->Style["Model of layer",Black,20],
LabelStyle->Directive[Black,Italic]]

Kicsípett formáció modellje
Wolfram Mathematica a geofizikában

A hullámsebesség az éken belül 4500 m/s, az éken kívül 4000 m/s, a sűrűséget pedig állandónak 2200 g/cm³-nek feltételezzük. Egy ilyen modellhez reflexiós együtthatókat és szeizmikus nyomokat számítunk ki.

rc=Table[N[(modellv[[All,i]]-PadLeft[modellv[[All,i]],201,4000][[1;;200]])/(modellv[[All,i]]+PadLeft[modellv[[All,i]],201,4500][[1;;200]])],{i,1,200}];
traces=Table[ListConvolve[wavelet[[1;;;;1]],rc[[i]]],{i,1,200}];
starttrace=10;
endtrace=200;
steptrace=10;
trasenum=Range[starttrace,endtrace,steptrace];
traserenum=Range[Length@trasenum];
tracedist=0.5;
Rotate[Show[
Reverse[Table[
	ListLinePlot[traces[[trasenum[[i]]]]*50+trasenum[[i]]*tracedist,Filling->{1->{trasenum[[i]]*tracedist,{RGBColor[0.97,0.93,0.68],Black}}},PlotStyle->Directive[Gray,Thin],PlotRange->Full,InterpolationOrder->2,Axes->False,Background->RGBColor[0.97,0.93,0.68]],
		{i,1,Length@trasenum}]],ListLinePlot[Transpose[{ConstantArray[45,80],Range[80]}],PlotStyle->Red],PlotRange->All,Frame->True],270Degree]

Szeizmikus nyomok az ékmodellhez
Wolfram Mathematica a geofizikában

Az ábrán látható szeizmikus nyomok sorozatát szeizmikus szakasznak nevezzük. Amint látható, értelmezése intuitív szinten is elvégezhető, mivel a visszavert hullámok geometriája egyértelműen megfelel a korábban megadott modellnek. Ha részletesebben elemzi a nyomokat, észre fogja venni, hogy az 1-től körülbelül 30-ig terjedő nyomok nem különböznek egymástól - a formáció tetejéről és az aljáról való visszaverődés nem fedi egymást. A 31. nyomtól kezdve a reflexiók zavarni kezdenek. És bár a modellben a reflexiós együtthatók vízszintesen nem változnak - a szeizmikus nyomok intenzitásukat a formáció vastagságának változásával változtatják.

Tekintsük a visszaverődés amplitúdóját a formáció felső határától. A 60. útvonaltól kezdődően a reflexió intenzitása növekedni kezd, a 70. útvonalon pedig maximális lesz. Így nyilvánul meg a rétegek tetejéről és aljáról érkező hullámok interferenciája, ami bizonyos esetekben jelentős anomáliákhoz vezet a szeizmikus rekordban.

ListLinePlot[GaussianFilter[Abs[traces[[All,46]]],3][[;;;;2]],
InterpolationOrder->2,Frame->True,PlotStyle->Black,
PlotLabel->Style["Amplitude of reflection",Black,20],
LabelStyle->Directive[Black,Italic],
PlotRange->All]

Az ék felső széléről visszavert hullám amplitúdójának grafikonja
Wolfram Mathematica a geofizikában

Logikus, hogy amikor a jel alacsonyabb frekvenciájú, akkor nagy formációvastagságnál kezd megjelenni az interferencia, nagyfrekvenciás jel esetén pedig kisebb vastagságnál. A következő kódrészlet 35 Hz, 55 Hz és 85 Hz frekvenciájú jelet hoz létre.

waveletSet=Table[(1.0-2.0*(Pi^2)*(f^2)*(t^2))*Exp[-(Pi^2)*(f^2)*(t^2)],
{f,{35,55,85}}];
ListLinePlot[waveletSet,PlotRange->Full,PlotStyle->Black,Frame->True,
PlotLabel->Style["Set of wavelets",Black,20],
LabelStyle->Directive[Black,Italic],
ImageSize->Large,InterpolationOrder->2]

Forrásjelek készlete 35 Hz, 55 Hz, 85 Hz frekvenciájú
Wolfram Mathematica a geofizikában

A szeizmikus nyomok kiszámításával és a visszavert hullám amplitúdóinak grafikonjainak ábrázolásával láthatjuk, hogy különböző frekvenciák esetén anomália figyelhető meg különböző formációvastagságoknál.

tracesSet=Table[ListConvolve[waveletSet[[j]][[1;;;;1]],rc[[i]]],{j,1,3},{i,1,200}];

lowFreq=ListLinePlot[GaussianFilter[Abs[tracesSet[[1]][[All,46]]],3][[;;;;2]],InterpolationOrder->2,PlotStyle->Black,PlotRange->All];
medFreq=ListLinePlot[GaussianFilter[Abs[tracesSet[[2]][[All,46]]],3][[;;;;2]],InterpolationOrder->2,PlotStyle->Black,PlotRange->All];
highFreq=ListLinePlot[GaussianFilter[Abs[tracesSet[[3]][[All,46]]],3][[;;;;2]],InterpolationOrder->2,PlotStyle->Black,PlotRange->All];

Show[lowFreq,medFreq,highFreq,PlotRange->{{0,100},All},
PlotLabel->Style["Amplitudes of reflection",Black,20],
LabelStyle->Directive[Black,Italic],
Frame->True]

Az ék felső széléről visszavert hullám amplitúdóinak grafikonjai különböző frekvenciákon
Wolfram Mathematica a geofizikában

A szeizmikus megfigyelések eredményeiből a képződmény vastagságára vonatkozó következtetések levonása rendkívül hasznos, mert az olajkutatás egyik fő feladata a kútfektetés legígéretesebb pontjainak felmérése (azaz azok a területek, ahol a képződmény kialakult). vastagabb). Ezenkívül a geológiai metszetben lehetnek olyan objektumok, amelyek keletkezése a képződmény vastagságának éles változását okozza. Ez a spektrális elemzést hatékony eszközzé teszi tanulmányozásukban. A cikk következő részében részletesebben megvizsgáljuk az ilyen geológiai objektumokat.

Kísérleti adatok. Hol szerezted be és mit keress bennük?

A cikkben elemzett anyagokat Nyugat-Szibériában szerezték be. A régió, mint azt valószínűleg kivétel nélkül mindenki tudja, hazánk fő olajtermelő régiója. A betétek aktív fejlesztése a múlt század 60-as éveiben kezdődött a régióban. Az olajlelőhelyek felkutatásának fő módszere a szeizmikus kutatás. Érdekes nézni a műholdfelvételeket erről a területről. Kis léptékben nagyszámú mocsarat és tavat figyelhetünk meg, a térkép nagyításával fürtkútfúrási helyek láthatók, a térkép határértékig történő nagyításával pedig a szeizmikus szelvények tisztásait is megkülönböztethetjük. megfigyeléseket végeztek.

A Yandex térképeinek műholdképe - Nojabrszk város környéke
Wolfram Mathematica a geofizikában

Kútpárnák hálózata az egyik mezőnél
Wolfram Mathematica a geofizikában

Nyugat-Szibéria olajtartalmú kőzetei sokféle mélységben fordulnak elő - 1 km-től 5 km-ig. Az olajtartalmú kőzetek fő térfogata a jura és a kréta időszakában keletkezett. A jura időszakot valószínűleg sokan ismerik az azonos című filmből. Jura éghajlat jelentősen eltért a moderntől. Az Encyclopedia Britannica paleomapek sorozata jellemzi az egyes heológiai korszakokat.

jelen
Wolfram Mathematica a geofizikában
jura időszak
Wolfram Mathematica a geofizikában

Felhívjuk figyelmét, hogy a jura időkben Nyugat-Szibéria területe a tenger partja volt (folyók és sekély tenger által átszelt szárazföld). Mivel az éghajlat kellemes volt, feltételezhetjük, hogy egy tipikus akkori táj így nézett ki:

Jurassic Szibéria
Wolfram Mathematica a geofizikában

Ezen a képen nekünk nem annyira az állatok és a madarak a fontosak, hanem a folyó képe a háttérben. A folyó ugyanaz a geológiai objektum, amelynél korábban megálltunk. A tény az, hogy a folyók tevékenysége lehetővé teszi a jól válogatott homokkövek felhalmozódását, amelyek aztán az olaj tározójává válnak. Ezek a tározók furcsa, összetett formájúak (mint egy folyómeder) és változó vastagságúak - a partok közelében a vastagság kicsi, de közelebb a meder közepéhez vagy kanyargós területeken megnő. Tehát a jura korszakban kialakult folyók körülbelül három kilométeres mélységben vannak, és olajtározók keresésének tárgyát képezik.

Kísérleti adatok. Feldolgozás és megjelenítés

A cikkben bemutatott szeizmikus anyagokkal kapcsolatban azonnal tegyünk fenntartást - az elemzéshez felhasznált adatmennyiség jelentőségéből adódóan - az eredeti szeizmikus nyomkészletnek csak egy töredéke szerepel a cikk szövegében. Ezzel bárki reprodukálhatja a fenti számításokat.

Amikor szeizmikus adatokkal dolgozik, a geofizikus általában speciális szoftvert használ (több iparági vezető van, akiknek fejlesztéseit aktívan használják, például a Petrel vagy a Paradigm), amely lehetővé teszi a különböző típusú adatok elemzését, és kényelmes grafikus felülettel rendelkezik. Minden kényelem ellenére az ilyen típusú szoftvereknek vannak hátrányai is - például a modern algoritmusok stabil verziókban való megvalósítása sok időt vesz igénybe, és a számítások automatizálásának lehetőségei általában korlátozottak. Ilyen helyzetben nagyon kényelmessé válik a számítógépes matematikai rendszerek és a magas szintű programozási nyelvek használata, amelyek széles algoritmusbázis használatát teszik lehetővé, és egyben sok rutint is felvesznek. Ezt az elvet használják a Wolfram Mathematica szeizmikus adatokkal való munkavégzésére. Nem célszerű gazdag funkcionalitást írni az adatokkal való interaktív munkához - sokkal fontosabb az általánosan elfogadott formátumból történő betöltés biztosítása, a kívánt algoritmusok alkalmazása és külső formátumba való visszatöltése.

A javasolt séma szerint az eredeti szeizmikus adatokat betöltjük és megjelenítjük Wolfram Mathematica:

Get["GeologyIO`"]
seismic3DZipPath = "seismic3D.zip";
seismic3DSEGYPath = "seismic3D.sgy";
If[FileExistsQ[seismic3DZipPath], DeleteFile[seismic3DZipPath]];
If[FileExistsQ[seismic3DSEGYPath], DeleteFile[seismic3DSEGYPath]];
URLDownload["https://wolfr.am/FiQIuZuH", seismic3DZipPath];
ExtractArchive[seismic3DZipPath];
seismic3DSEGY = SEGYImport[seismic3DSEGYPath]

Az így letöltött és importált adatok egy 10 x 5 kilométeres területen rögzített útvonalak. Ha háromdimenziós szeizmikus felmérési módszerrel nyerjük az adatokat (a hullámokat nem egyes geofizikai szelvények mentén, hanem a teljes területen egyszerre rögzítjük), lehetővé válik szeizmikus adatkockák beszerzése. Ezek háromdimenziós objektumok, amelyek függőleges és vízszintes metszete lehetővé teszi a geológiai környezet részletes tanulmányozását. A vizsgált példában háromdimenziós adatokkal van dolgunk. Néhány információt kaphatunk a szöveg fejlécéből, például így

StringPartition[seismic3DSEGY["textheader"], 80] // TableForm

C 1 EZ A DEMO FÁJL A GEOLOGYIO CSOMAGTESZTÉHEZ
C 2
C 3
C 4
C 5 DÁTUM FELHASZNÁLÓNÉV: WOLFRAM FELHASZNÁLÓ
C 6 FELMÉRÉS NEVE: VALAHOL SZIBÉRIÁBAN
C 7 FÁJL TÍPUSÚ 3D SZEIZMIKUS VOLUME
C 8
C 9
C10 Z TARTOZÉK: ELSŐ 2200M UTOLSÓ 2400M

Ez az adathalmaz elegendő lesz az adatelemzés főbb szakaszainak bemutatásához. A fájlban lévő nyomok egymás után kerülnek rögzítésre, és mindegyik úgy néz ki, mint a következő ábra - ez a visszavert hullámok amplitúdóinak eloszlása ​​a függőleges tengely (mélység tengely) mentén.

ListLinePlot[seismic3DSEGY["traces"][[100]], InterpolationOrder -> 2, 
 PlotStyle -> Black, PlotLabel -> Style["Seismic trace", Black, 20],
 LabelStyle -> Directive[Black, Italic], PlotRange -> All, 
 Frame -> True, ImageSize -> 1200, AspectRatio -> 1/5]

Az egyik szeizmikus szelvénynyom
Wolfram Mathematica a geofizikában

Tudva, hogy a vizsgált terület egyes irányaiban hány nyom található, létrehozhat egy háromdimenziós adattömböt, és megjelenítheti az Image3D[] függvény segítségével.

traces=seismic3DSEGY["traces"];
startIL=1050;EndIL=2000;stepIL=2; (*координата Х начала и конца съёмки и шаг трасс*)
startXL=1165;EndXL=1615;stepXL=2; (*координата Y начала и конца съёмки и шаг трасс*)
numIL=(EndIL-startIL)/stepIL+1;   (*количество трасс по оис Х*)
numXL=(EndXL-startXL)/stepIL+1;   (*количество трасс по оис Y*)
Image3D[ArrayReshape[Abs[traces/Max[Abs[traces[[All,1;;;;4]]]]],{numIL,numXL,101}],ViewPoint->{-1, 0, 0},Background->RGBColor[0,0,0]]

XNUMXD-s kép egy szeizmikus adatkockáról. (Függőleges tengely – mélység)
Wolfram Mathematica a geofizikában

Ha az érdeklődésre számot tartó geológiai adottságok intenzív szeizmikus anomáliákat idéznek elő, akkor átlátszó vizualizációs eszközök használhatók. A felvétel „nem fontos” részei láthatatlanná tehetők, így csak az anomáliák láthatók. A Wolfram Mathematicában ezt meg lehet tenni Átlátszatlanság[] и Raszter3D[].

data = ArrayReshape[Abs[traces/Max[Abs[traces[[All,1;;;;4]]]]],{numIL,numXL,101}];
Graphics3D[{Opacity[0.1], Raster3D[data, ColorFunction->"RainbowOpacity"]}, 
Boxed->False, SphericalRegion->True, ImageSize->840, Background->None]

Szeizmikus adatkocka kép Opacity[] és Raster3D[] függvényekkel Wolfram Mathematica a geofizikában

A szintetikus példához hasonlóan az eredeti kocka szakaszain is azonosítható néhány változó domborzatú geológiai határ (réteg).

A spektrális elemzés fő eszköze a Fourier-transzformáció. Segítségével kiértékelheti az egyes nyomok vagy nyomvonalcsoportok amplitúdó-frekvencia spektrumát. Az adatoknak a frekvenciatartományba való átvitele után azonban információ veszett el arról, hogy milyen időpontokban (olvassa el, milyen mélységekben) változik a frekvencia. Annak érdekében, hogy a jelváltozásokat az idő (mélység) tengelyen lokalizálhassuk, az ablakos Fourier transzformációt és a wavelet dekompozíciót alkalmazzuk. Ez a cikk a wavelet dekompozíciót használja. A hullámelemző technológiát a 90-es években kezdték aktívan használni a szeizmikus kutatásban. Az ablakos Fourier-transzformáció előnye a jobb időfelbontás.

A következő kódrészlet segítségével a szeizmikus nyomok egyikét egyedi komponensekre bonthatja:

cwd=ContinuousWaveletTransform[seismicSection["traces"][[100]]]
Show[
ListLinePlot[Re[cwd[[1]]],PlotRange->All],
ListLinePlot[seismicSection["traces"][[100]],
PlotStyle->Black,PlotRange->All],ImageSize->{1500,500},AspectRatio->Full,
PlotLabel->Style["Wavelet decomposition",Black,32],
LabelStyle->Directive[Black,Italic],
PlotRange->All,
Frame->True]

Nyom komponensekre bontása
Wolfram Mathematica a geofizikában

A reflexiós energia különböző hullámérkezési időpontokban történő eloszlásának felmérésére skalogramokat (a spektrogramhoz hasonlóan) használnak. Általános szabály, hogy a gyakorlatban nincs szükség az összes komponens elemzésére. Általában alacsony, közepes és magas frekvenciájú komponenseket választanak ki.

freq=(500/(#*contWD["Wavelet"]["FourierFactor"]))&/@(Thread[{Range[contWD["Octaves"]],1}]/.contWD["Scales"])//Round;
ticks=Transpose[{Range[Length[freq]],freq}];
WaveletScalogram[contWD,Frame->True,FrameTicks->{{ticks,Automatic},Automatic},FrameTicksStyle->Directive[Orange,12],
FrameLabel->{"Time","Frequency(Hz)"},LabelStyle->Directive[Black,Bold,14],
ColorFunction->"RustTones",ImageSize->Large]

Scalogram. Funkció eredménye Hullámskalogram[]
Wolfram Mathematica a geofizikában

A Wolfram nyelv a wavelet transzformációhoz használja a függvényt ContinuousWaveletTransform[]. És ennek a funkciónak az alkalmazása a teljes nyomkövetési készletre a funkció segítségével történik Asztal[]. Itt érdemes megjegyezni a Wolfram Mathematica egyik erősségét - a párhuzamosítás használatának képességét ParallelTable[]. A fenti példában nincs szükség párhuzamosításra - az adatok mennyisége nem nagy, de ha több százezer nyomot tartalmazó kísérleti adatkészletekkel dolgozunk, ez szükségszerű.

tracesCWD=Table[Map[Hilbert[#,0]&,Re[ContinuousWaveletTransform[traces[[i]]][[1]]][[{13,15,18}]]],{i,1,Length@traces}]; 

A függvény alkalmazása után ContinuousWaveletTransform[] A kiválasztott frekvenciáknak megfelelő új adatkészletek jelennek meg. A fenti példában ezek a frekvenciák: 38Hz, 33Hz, 27Hz. A frekvenciák kiválasztása leggyakrabban tesztelés alapján történik - hatékony térképeket kapnak a különböző frekvenciakombinációkhoz, és kiválasztják a geológus szempontjából leginformatívabbat.

Ha meg kell osztania az eredményeket kollégáival, vagy át kell adnia azokat az ügyfélnek, használhatja a GeologyIO csomag SEGYExport[] funkcióját.

outputdata=seismic3DSEGY;
outputdata["traces",1;;-1]=tracesCWD[[All,3]];
outputdata["textheader"]="Wavelet Decomposition Result";
outputdata["binaryheader","NumberDataTraces"]=Length[tracesCWD[[All,3]]];
SEGYExport["D:result.segy",outputdata];

E kockák közül háromnál (alacsony frekvenciájú, közepes frekvenciájú és magas frekvenciájú komponensek) az RGB keverést általában az adatok együttes megjelenítésére használják. Minden összetevőhöz saját szín tartozik - piros, zöld, kék. A Wolfram Mathematicában ezt a függvény segítségével lehet megtenni ColorCombine[].

Az eredmény olyan képek, amelyekből geológiai értelmezést lehet készíteni. A szakaszon rögzített kanyarulatok lehetővé teszik a paleocsatornák lehatárolását, amelyek valószínűleg tározók és olajtartalékokat tartalmaznak. Az ilyen folyórendszer modern analógjainak keresése és elemzése lehetővé teszi számunkra, hogy meghatározzuk a kanyarulatok legígéretesebb részeit. Magukat a csatornákat vastag homokkőrétegek jellemzik, és jó olajtárolók. A "csipke" anomáliákon kívüli területek hasonlóak a modern ártéri lerakódásokhoz. Az ártéri lerakódásokat főként agyagos kőzetek képviselik, és ezekbe a zónákba történő fúrás nem lesz hatékony.

Az adatkocka RGB szelete. Középen (a központtól kissé balra) nyomon követhető a kanyargó folyó.
Wolfram Mathematica a geofizikában
Az adatkocka RGB szelete. A bal oldalon nyomon követhető a kanyargó folyó.
Wolfram Mathematica a geofizikában

Egyes esetekben a szeizmikus adatok minősége lényegesen tisztább képeket tesz lehetővé. Ez függ a terepmunka módszertanától, a zajcsökkentő algoritmus által használt berendezésektől. Ilyenkor nemcsak a folyórendszerek töredékei láthatók, hanem egész kiterjedt paleo-folyók is.

Egy szeizmikus adatkocka három komponensének RGB keverése (vízszintes szelet). Mélysége kb 2 km.
Wolfram Mathematica a geofizikában
Műholdfelvétel a Volga folyóról Szaratov közelében
Wolfram Mathematica a geofizikában

Következtetés

A Wolfram Mathematica lehetővé teszi a szeizmikus adatok elemzését és az ásványkutatással kapcsolatos alkalmazott problémák megoldását, a GeologyIO csomag pedig kényelmesebbé teszi ezt a folyamatot. A szeizmikus adatok szerkezete olyan, hogy beépített módszerekkel a számítások felgyorsítására (ParallelTable[], ParallelDo[],…) nagyon hatékony, és nagy mennyiségű adat feldolgozását teszi lehetővé. Ezt nagymértékben elősegítik a GeologyIO csomag adattárolási funkciói. A csomag egyébként nem csak az alkalmazott szeizmikus kutatás területén használható. Szinte azonos típusú adatokat használnak a földradarban és a szeizmológiában. Ha javaslatai vannak az eredmény javítására, a Wolfram Mathematica arzenálból származó jelelemző algoritmusok alkalmazhatók ezekre az adatokra, vagy ha bármilyen kritikus észrevétele van, kérjük, Szólj hozzá.

Forrás: will.com

Hozzászólás