Wolfram Mathematica geofüüsikas

Aitäh blogi autorile Anton Ekimenkole tema ettekande eest

Sissejuhatus

See märkmed on kirjutatud Wolfram Venemere Tehnoloogia Konverentsi jälgedes Wolfram Venemere Tehnoloogia Konverents ja sisaldab ettekande kokkuvõtet, millega mina esinesin. Üritus toimus juunis Peterburis. Arvestades, et töötan pinnalt vaid kvartali kaugusel konverentsi toimumiskoht, ei saanud ma seda sündmust vahele jätta. 2016. ja 2017. aastal kuulasin ma konverentsil ettekandeid, aga sel aastal esitasin mina oma ettekande. Esiteks, tekkis huvitav (nagu mulle tundub) teema, millega me tegeleme Kirill Beloviga, ja teiseks, pärast Venemaa föderatsiooni seaduse pikaajalist uurimist sanktsioonide poliitika osas, sai ettevõttes, kus ma töötan, lausa kaks litsentsi Wolfram Mathematica.

Enne, kui liigun oma ettekande teemasse, tahaksin märkida ürituse head korraldust. Konverentsi külastuslehel kasutatakse Kazani katedraali pilti. Katedraal on üks peamisi Peterburi vaatamisväärsusi ning seda on ausalt öeldes väga hästi näha saalist, kus konverents toimus.

Wolfram Mathematica geofüüsikas

Sissepääsu juures tervitas osalejaid tudengitest abilised – nad aitasid mitte eksida. Registreerimise ajal anti välja väikeseid suveniire (vilkuv mänguasi, pastapliiats, Wolfram'i sümboolikaga kleebised). Lõuna ja kohvipausid olid samuti konverentsi kavas. Maitsvast kohvist ja pirukatest olen juba märkida saanud rühma seinal – kokad on head. Sooviksin selle sissejuhatava osaga rõhutada, et kogu üritus, selle formaat ja toimumiskoht toovad juba positiivseid emotsioone.

Minu ja Kirill Belovi koostatud ettekande nimi on «Wolfram Mathematica kasutamine rakendusgeofüüsika ülesannete lahendamiseks. Seismiliste andmete spektraalanalüüs või «kuhu jooksid vanad jõed». Ettekanne katab kaks osa: esiteks seismiliste andmete analüüsi algoritmide kasutamine, Wolfram Mathematica ja teiseks, kuidas geofüüsikalisi andmeid Wolfram Mathematica'sse sisestada.

Seismika

Alustuseks tasub teha väike sissejuhatus geofüüsikasse. Geofüüsika on teadus, mis uurib kivimite füüsikalisi omadusi. Kuna kivimid omavad erinevaid omadusi: elektrilisi, magnetilisi, elastseid, siis eksisteerivad vastavad geofüüsika meetodid: elektro-uuring, magneto-uuring, seismika… Selle artikli kontekstis käsitleme üksikasjalikumalt vaid seismilist uurimist. Seismika on peamine meetod nafta ja gaasi otsimiseks. Meetod põhineb elastsete sageduste ergutamisel ja sellele järgnenud vastuse registreerimisel kivimite seest, mis moodustavad uuritava ala. Sageduste ergutamine toimub mais (dünaamiidi või plahvatusvabade vibratsiooniallikate abil) või merel (pneumopüsside abil). Elastsed sagedused levivad kivimite kaudu, murdes ja peegeldudes kihtide piiridel, millel on erinevad omadused. Peegeldunud lained pöörduvad tagasi pinnale ja registreeritakse geofonide abil maapinnal (need on tavaliselt elektrodünaamilised seadmed, mis põhinevad magneti liikumisel, mis on riputatud keerme sisse) või hüdrofonide abil meres (mis põhinevad piezoefektil). Laine saabumise aja järgi saab hinnata geoloogiliste kihtide sügavust.

Seismilised alused loovad varustust
Wolfram Mathematica geofüüsikas

Õhkrelv tekitab elastseid vibratsioone
Wolfram Mathematica geofüüsikas

Lained läbivad mäemassi ja registreeritakse hüdroponeides
Wolfram Mathematica geofüüsikas

Geofüüsikalise uuringu teaduslik laev 'Ivan Gubkin' Kaliningradi sillal Peterburis
Wolfram Mathematica geofüüsikas

Seismilise signaali mudel

Mäemassi kivimid omavad erinevaid füüsikalisi omadusi. Seismiliste uuringute jaoks on eriti olulised elastsed omadused — elastsete lainete leviku kiirus ja tihedus. Kui kaks kihti omavad sama või sarnast omadust, 'ei märka' laine piiri nende vahel. Kui lainete kiirus kihtides erineb, tekib kihtide piiril peegeldus. Mida suurem on omaduste vahe, seda intensiivsem on peegeldus. Selle intensiivsust määrab peegelduskoefitsient (rc):

Wolfram Mathematica geofüüsikas

kus ρ — kivimite tihedus, ν — lainete kiirus, 1 ja 2 tähistavad ülemisi ja alumisi kihte.

Üks kõige lihtsamaid ja sagedamini kasutatavaid seismilise signaali mudeleid on konvolutsioonimudel, kus registreeritud seismiline jälg esitatakse kui tulemuseks refleksikoefitsientide järjestuse ja sondi impulsi konvolutsioonist:

Wolfram Mathematica geofüüsikas

kus s(t) on seismiline jälg, s.t. kõik, mida hüdrofon või geofon registreeris kindlal registreerimisaega, w(t) on signaal, mille genereerib pneumopüss, n(t) on juhuslik müra.

Arvutame näiteks sünteetilise seismilise jälje. Algse signaalina kasutame seismika uurimises laialdaselt kasutatavat Rickeri impulssi.

length=0.050; (*Signaali pikkus*)
dt=0.001;(*Signaali proovivõtmiskiirus*)
t=Range[-length/2,(length)/2,dt];(*Signaali aeg*)
f=35;(*Keskne sagedus*)
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["Algne lainemuster",Black,20],
LabelStyle->Directive[Black,Italic],
FillingStyle->{White,Black},ImageSize->Large,InterpolationOrder->2]

Algne seismiline impulss
Wolfram Mathematica geofüüsikas

Kaks piiri seame sügavustele 300 ms ja 600 ms ning refleksikoefitsiendid on juhuslikud arvud.

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["Peegeldumise koefitsiendid",Black,20],
LabelStyle->Directive[Black,Italic]]

Peegeldumise koefitsientide järjestus
Wolfram Mathematica geofüüsikas

Arvutame ja kuvame seismilise rada. Kuna peegeldumise koefitsiendid on erinevate märkidega, saame seismilisel rajal kaks märkide vahetust peegeldust.

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

Simuleeritud rada
Wolfram Mathematica geofüüsikas

Antud näite puhul tuleb teha erand – tegelikult määratakse kihtide sügavus kindlalt meetrites ning seismilise raja arvestus toimub ajapiiril. Olemuslikum oleks määrata sügavused meetrites ja arvutada saabumised, teadmisega kiirusest kihtides. Antud juhul määrasin kohe kihid ajateljel.

Kui rääkida põlevkiviuuringutest, siis registreeritakse selliste vaatlemiste tulemusena tohutul hulgal sarnaseid ajaloolisi andmeid (seismilised rajad). Näiteks 25 km pikkuse ja 15 km laiu ala uurimisel, kus iga rada iseloomustab 25x25 meetri suurust rakku (sellist rakku nimetatakse biniks), sisaldab lõplik andmestik 600 000 rada. Aja diskreetimise sammu puhul, mis on 1 ms ja salvestusaeg 5 sekundit, ulatub lõplik andmefail enam kui 11 GB-ni, samas kui lähtematerjal võib ulatuda sadadesse gigabaitidesse.

Kuidas nendega töötada Wolfram Mathematica?

Pakett GeologyIO

Paki arendamine sai alguse küsimusest VK gruppi venekeelse toe seinal. Tänu kogukonna vastustele leiti lahendus väga kiiresti. Ja see kasvas tõsise arenduse poole. Vastav post Wolfram Community seinal oli isegi moderaatorite poolt esile tõstetud. Praeguseks toetab pakett järgmiste andmetüüpide kasutamist, mis on aktiivselt kasutusel geoloogia valdkonnas:

  1. ZMAP ja IRAP formaadis kaartide andmete import
  2. LAS formaadis kaevamõõtmiste import
  3. seismiliste failide formaadi sisend ja väljund SEGY

Paketi installimiseks järgige laadimist lehe juhiseid, st esitmage järgmine kood igas Mathematica märkmikus:

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

Pärast seda installitakse pakett vaikimisi kausta, mille tee saab kätte järgmiselt:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Näiteks demonstreerime paketi põhivõimalusi. Kutsumine toimub traditsiooniliselt Wolfram Language'i pakettide jaoks:

Get["GeologyIO`"]

Pakett on välja töötatud kasutades Wolfram Workbench. See võimaldab paketi peamiste funktsioonide täiustamiseks valmistada dokumentatsiooni, mis ei erine Wolfram Mathematica enda dokumentatsioonist, ning varustada pakett testfailidega esmakordseks tutvumiseks.

Wolfram Mathematica geofüüsikas

Wolfram Mathematica geofüüsikas

Selle failiga on eriti tegemist failiga "Marmousi.segy" — see on sünteetiline geoloogilise lõike mudel, mille on välja töötanud Prantsuse nafta institutsioon. Arendajad testivad selle mudeli abil oma lainevälja modelleerimise, andmete töötlemise, seismiliste jälgede inversiooni jmt algoritme. Marmousi mudel on salvestatud hoidlas, kust kogu paket on alla laetud. Faili saamiseks käivitame järgmise koodi:

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

Importimise tulemus — objekt SEGYData
Wolfram Mathematica geofüüsikas

Formaat SEGY eeldab erineva teabe salvestamist vaatlustest. Esiteks, need on tekstilised kommentaarid. Siia kantakse teavet tööde asukoha, mõõtmisi teostanud ettevõtete nimede jmt kohta. Meie puhul kutsutakse see pealkiri välja päringuga, millel on võti TextHeader. Siin on toodud lühendatud tekstipealkiri:

Short[marmousi["TextHeader"]]

«Marmousi andmesett genereeriti Instituudis … alammooduli kiirus 1500 m/s ja maksimum 5500 m/s)»

Geoloogilise mudeli kuvamiseks saab pöörduda seismiliste radade poole võtmega «traces» (paketi ühekordne omadus on võtmete sõltumatus suurustest):

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

Marmousi mudel
Wolfram Mathematica geofüüsikas

Praeguse seisuga lubab paket ka andmete laadimist osade kaupa suurtest failidest, mis teeb võimalikuks failide töötlemise, mille suurus võib ulatuda kümnete gigabaitideni. Paketi funktsioonide hulka kuuluvad ka andmete ekspordifunktsioonid .segy formaati ja osaline lisamine faili lõpupoole.

Eraldi tasub märkida paketi funktsionaalsust .segy-failide keerulise struktuuriga töötamisel. Kuna see võimaldab mitte ainult pöörduda võtmete ja indeksite kaudu üksikute radade ja peade poole, vaid ka neid muuta ja faili kirjutada. Paljud GeologyIO tehnilised rakendused ületavad selle artikli piire ja väärivad tõenäoliselt eraldi kirjeldamist.

Spektraalanalüüsi asjakohasus seismiliste uuringute kontekstis

Seismiliste materjalide importimine Wolfram Mathematica'sse võimaldab kasutada sisseehitatud signaalitöötlusfunktsioone eksperimentaalsete andmete jaoks. Kuna iga seismiline rada on ajasari, on nende uurimise peamisteks tööriistadeks spektraalanalüüs. Sagedusanalüüsi eeltingimuste seas võib nimetada näiteks järgmisi aspekte:

  1. Erinevad laine tüübid iseloomustavad erinevad sageduskoostised. See võimaldab eristada kasulikke laineid ja summutada segavaid laineid.
  2. Muldade omadused, nagu poorsus ja küllastus, võivad mõjutada sageduskoostist. See võimaldab eristada madalama kvaliteediga kivimeid.
  3. Erineva paksusega kihid põhjustavad anomaaliaid erinevates sagedusvahemikes.

Kolmas punkt on artikli kontekstis peamine. Allpool on koodilõik seismiliste radade arvutamiseks muutuvpaksusega kihis — konete mudel. Seda mudelit uuritakse tavaliselt seismilises uurimises, et analüüsida interferentsiefekte, kui paljude kihtide peegeldunud lained üksteisele lisanduvad.

nx=200;(* Grid-punktide arv X suunas *)
ny=200;(* Grid-punktide arv Y suunas *)
T=2;(*Kogupropagatsiooniaeg *)
(*Kiirus ja tihedus *)
modellv=Table[4000,{i,1,ny},{j,1,nx}];(* P-laine kiirus m/s-is *)
rho=Table[2200,{i,1,ny},{j,1,nx}];(* Tihedus g/cm³, constants tihedus *)
Table[modellv[[150-Round[i*0.5];;,i]]=4500;,{i,1,200}];
Table[modellv[[;;70,i]]=4500;,{i,1,200}];
(*Mudeli joonistamine *)
MatrixPlot[modellv,PlotLabel->Style["Kihi mudel",Black,20],
LabelStyle->Directive[Black,Italic]]

Võllende kihise mudel
Wolfram Mathematica geofüüsikas

Laine kiirus konuse sees on 4500 m/s, konuse väljas 4000 m/s, tihedus on konstantne 2200 g/cm³. Sellise mudeli korral arvutame peegelduse koefitsiendid ja seismilised rajad.

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]

Seismoogilised jäljed klini mudelile
Wolfram Mathematica geofüüsikas

Käesoleval joonisel kujutatud seismiliste radade järjestust nimetatakse seismiliseks lõikeks. Nagu märgata, võib selle tõlgendust teostada ka intuitiivsel tasandil, kuna peegeldatud lainete geomeetria vastab selgelt eelnevalt antud mudelile. Kui rada põhjalikumalt analüüsida, võib märgata, et radade esimesed, umbes 30. ei erine — peegeldumine kihistiku katte ja aluse vahel ei üksteisega kattuvaid. Alates 31. radast hakkavad peegeldused omavahel interferentsi tekitama. Ja kuigi mudelis peegeldumise koefitsiendid ei muutu horisontaalselt, muudavad seismilised radad oma intensiivsust kihistiku paksuse muutumise korral.

Vaatleme peegeldumise amplituudi kihistiku ülemise piiri pealt. Alates 60. radast intensiivsus hakkab tõusma ja 70. radal saavutab maksimumi. Nii avaldub lainete interferents katte ja aluse vahel kihtides, tuues mõnel juhul kaasa märkimisväärseid seismilise salvestuse anomaaliaid.

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]

Peegli peegeldava laine amplituud ülemise serva lõike kaudu
Wolfram Mathematica geofüüsikas

On loogiline, et madalama sagedusega signaali korral hakkab sekkumine ilmnema suuremate kihipaksuste juures, samas kui kõrgsagedusliku signaali puhul esineb sekkumine väiksemate kihipaksuste juures. Järgmine koodifragmend loob signaale sagedustega 35 Hz, 55 Hz ja 85 Hz.

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]

Algsete signaalide kogum sagedustega 35 Hz, 55 Hz, 85 Hz
Wolfram Mathematica geofüüsikas

Tehes seismiliste radade arvutusi ja joonistades peegeldava laine amplituudi graafikud, saame näha, et erinevate sageduste puhul on anomaalia eri kihipaksuste juures.

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]

Peegeldatud laine amplituudide graafikud kile ülemisest servast erinevates sagedustes
Wolfram Mathematica geofüüsikas

Võime teha järeldusi kihistiku paksuse kohta seismilise seire tulemuste põhjal on äärmiselt kasulik, kuna üks peamisi ülesandeid naftamaardlate uurimisel on hinnata võimalikult perspektiivseid punkte kaevu rajamiseks (st alasid, kus kiht on suure paksusega). Lisaks võivad geoloogilises lõikes esineda sellised objektid, mille genesiis põhjustab järsu paksuste vahetuse. See teeb spektraalanalüüsist tõhusa tööriista nende uurimiseks. Järgmises artikli osas vaatame neid geoloogilisi objekte lähemalt.

Eksperimentaalsed andmed. Kus on saadud ja mida neis otsida?

Artiklis analüüsitud materjalid saadud Lääne-Siberi piirkonnas. See piirkond, nagu ilmselt kõik teavad, on meie riigi peamine nafta tootmispiirkond. Aktiivne maardlate arendamine algas siin 20. sajandi 60-ndatel. Peamine meetod naftamaardlate leidmiseks on seismiline uurimine. Huvi pakuvad satelliidifotod sellest piirkonnast. Väikesel mastaazil on näha tohutut hulka soo- ja järvi, suurendades kaarti on võimalik näha grupeeritud puurimisplatside olemasolu, ning maksimaalse suurenduse korral eristuvad isegi seismilise vaatlemise käigus kasutatud lõiked.

Yandexi kaardilt satelliidifoto — Novy Urengoy linna piirkond
Wolfram Mathematica geofüüsikas

Grupeeritud puurimisplatside võrk ühes maardlas
Wolfram Mathematica geofüüsikas

Naftat tootvad kihid Lääne-Siberis asuvad laias sügavuste vahemikus — 1 km kuni 5 km. Peamine maakiht, mis sisaldab naftat, moodustus jäo ja kreidi perioodidel. Jäo perioodi teavad paljud ilmselt samanimelisest filmist. Jäo perioodi kliima erinevalt kaasaegsest. Britannica entsüklopeedias on rida paleokaartide seeria, mis iseloomustab igat geoloogilist ajastut.

Praegune aeg
Wolfram Mathematica geofüüsikas
Jurassi periood
Wolfram Mathematica geofüüsikas

Pange tähele, et jurassi ajal esindas Lääne-Siberi territory mererannikut (maapind, mida läbisid jõed ja madalad mered). Kuna kliima oli mugav, võib eeldada, et selle ajastu tüüpiline maastik nägi välja järgmiselt:

Siber jurassi perioodil
Wolfram Mathematica geofüüsikas

Selles pildis ei ole meie jaoks nii olulised loomad ja linnud, vaid rohkem jõe kujutis taustal. Jõgi on see geoloogiline objekt, millele me varem viitasime. Asi on selles, et jõgede tegevus võimaldab koguda hästi sorteeritud liivakivi, mis seejärel muutub nafta reservuaariks. Need reservuaarid võivad omada ebamugavaid ja keerulisi vorme (nagu ka jõe vool) ning neil on muutuv paksus – kaldal on paksus väike, kuid voolu keskosas või meandreid leiduvatel aladel suureneb see. Seega on juuratööl kujunenud jõed praegu umbes kolme kilomeetri sügavusel ja need on naftareservuaaride otsimise objektid.

Eksperimentaalsed andmed. Töötlemine ja visualiseerimine

Teeme kohe erandi seoses artiklis esitatud seismiliste andmetega — kuna analüüsimiseks kasutatud andmete maht on suur, on artikli teksti lisatud ainult originaalse seismiliste radade komplekti fragment. See võimaldab kõigil soovijatel esitatud arvutusi taasluua.

Seismiliste andmete töötlemisel kasutab geofüüsik tavaliselt spetsialiseeritud tarkvara (olemas on mitu valdkonna tipptootjat, kelle lahendusi kasutatakse aktiivselt, näiteks Petrel või Paradigm), mis võimaldab analüüsida erinevaid andmetüüpe ning omab mugavat graafilist liidest. Vaatamata oma mugavusele on sellisel tarkvaral siiski omad puudused — näiteks kulub uute algoritmide integreerimine stabiilsetesse versioonidesse palju aega, ja arvutuste automatiseerimise võimalused on tavaliselt piiratud. Sellistes olukordades osutub arvutusmatemaatika süsteemide ja kõrgelt tasemel programmeerimiskeelte kasutamine väga mugavaks, kuna need võimaldavad rakendada laia algoritmilist baasi ning samal ajal võtavad nad endale palju rutiinseid ülesandeid. Wolfram Mathematica seismiliste andmete töötlemine põhineb just sellisel põhimõttel. Ei ole mõistlik arendada rikkalikku funktsionaalsust interaktiivseks andmetöötluseks — olulisem on tagada andmete laadimine tuttavatesse formaatidesse, rakendada neile soovitud algoritmid ning eksportida need tagasi välisse formaati.

Järgides ettepanekut, laadime originaalsed seismilised andmed ja kuvame need 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]

Nii laaditud kui ka imporditud andmed on rajad, mis on registreeritud 10x5 kilomeetri suurusel alal. Kui andmed on saadud kolmemõõtmelise seismilise uurimise meetodi kaudu (lainete registreerimine toimub mitte üksikute geofiisikaprofiilide, vaid kogu ala ulatuses korraga), on võimalik saada seismiliste andmete kuube. Need on kolmemõõtmelised objektid, mille vertikaalsed ja horisontaalsed lõiked võimaldavad geoloogilist keskkonda detailselt uurida. Antud näites käsitleme samuti kolmemõõtmelisi andmeid. Mõningaid andmeid saame tekstipealekandest, näiteks nii

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

C 1 SEE ON GEOLOGYIO PAKETI TESTIMISFAIL
C 2
C 3
C 4
C 5 KUUPÄEV KASUTAJANIMI: WOLFRAM KASUTAJA
C 6 UURIMISE NIMI: KUSAGIL SIBERIS
C 7 FAILI Tüüp 3D SEISMILINE MAHUTUS
C 8
C 9
C10 Z ULATUS: ESIMENE 2200M VIIMANE 2400M

Selle andmekogumi abil saame demonstreerida andmeanalüüsi peamisi etappe. Failis on jäljed järjestikku ja igaühe välimus on umbes nagu järgmises joonises – see esindab hüpoteesi lainete amplituudide jaotust vertikaalsel teljel (sügavuse teljel).

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]

Üks seismilise lõike jälgedest
Wolfram Mathematica geofüüsikas

Teades, kui palju jälgi asub iga suuna kohta uuritud alal, saab moodustada kolmemõõtmelise andmehnku ja kuvada seda funktsiooni Image3D[] abil.

traces=seismic3DSEGY["traces"];
startIL=1050; EndIL=2000; stepIL=2; (*X-telje algus- ja lõppkoha koordinaat ning jälgede samm*)
startXL=1165; EndXL=1615; stepXL=2; (*Y-telje algus- ja lõppkoha koordinaat ning jälgede samm*)
numIL=(EndIL-startIL)/stepIL+1;   (*X-telje jälgede arv*)
numXL=(EndXL-startXL)/stepIL+1;   (*Y-telje jälgede arv*)
Image3D[ArrayReshape[Abs[traces/Max[Abs[traces[[All,1;;;;4]]]]],{numIL,numXL,101}], ViewPoint->{-1, 0, 0}, Background->RGBColor[0,0,0]]

Kolmemõõtmeline seismiliste andmete kuju. (Vertikaalne telg — sügavus)
Wolfram Mathematica geofüüsikas

Kui geoloogilised objektid, mis pakuvad huvi, tekitavad intensiivseid seismilisi anomaaliaid, saab kasutada läbipaistusvahendeid. „Mitteolulised” salvestusosalised saab muuta nähtamatuks, jättes nähtavaks ainult anomaaliad. Wolfram Mathematica's saab seda teha järgmiselt, Opacity[] ja Raster3D[].

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]

Seismiliste andmete kuubi pilt, kasutades funktsioone Opacity[] ja Raster3D[]
Wolfram Mathematica geofüüsikas

Nagu sünteetilisel näitel, saab originaal-kuubi lõigetel esile tuua teatud geoloogilisi piire (kihte) muutlikku maastikku.

Peamine spektrianalüüsi tööriist on Fourier' transformatsioon. Selle abil on võimalik hinnata iga raja või raja gruppide amplituudisageduslikku spektrit. Siiski, kui andmed muudetakse sagedusvaldkonda, kaob teave selle kohta, millistel aegadel (loe: millistel sügavustel) sagedus muutub. Signaali muutuste lokaliseerimiseks ajateljel (sügavustel) kasutatakse akna Fourier’ transformatsiooni ja laineletunnetust. Selles artiklis kasutatakse laineletumist. Laineanalüüsi tehnoloogia hakkas aktiivselt rakenduma seismilistes uuringutes 90. aastatel. Akna Fourier' transformatsiooni ees on parem ajaline eristusvõime.

Järgmise koodi fragmendi abil saab jagada ühe seismilise traadi komponente:

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["Laineletunemine",Black,32],
LabelStyle->Directive[Black,Italic],
PlotRange->All,
Frame->True]

Traadi jagamine komponentideks
Wolfram Mathematica geofüüsikas

Energia peegeldumise jaotuse hindamiseks erinevate laine saabumise aegade vahel kasutatakse skalogramme (sarnane spekogrammiga). Tavapraktikas ei ole tavaliselt vajalik analüüsida kõiki komponente. Tavaliselt valitakse madal-, keskmine- ja kõrgsageduslik komponent.

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]

Sskalogramm. Funktsiooni tulemus WaveletScalogram[]
Wolfram Mathematica geofüüsikas

Wolfram Language'is kasutatakse laine muutmiseks funktsiooni ContinuousWaveletTransform[]. Selle funktsiooni rakendamine kogu jälje kogumile toimub funktsiooni Table[]. Siinkohal tasub märkida ühe Wolfram Mathematica tugevuse — võimaluse kasutada paralleelimist. ParallelTable[]. Antud näites ei ole paralleelimist vajalik — andmemahu tõttu, kuid eksperimentaalsete andmekogumite puhul, mis sisaldavad sadu tuhandeid jälgi, on see hädavajalik.

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

Pärast funktsiooni rakendamist ContinuousWaveletTransform[] ilmuvad uued andmemassid, mis vastavad valitud sagedustele. Ülaltoodud näites on need sagedused: 38 Hz, 33 Hz, 27 Hz. Sageduste valik toimub kõige sagedamini testimise põhjal – saadakse tõhusad kaardid erinevate sageduskompositsioonide jaoks ning valitakse geoloogilise tõlgenduse seisukohalt kõige informatiivsem.

Kui tulemusi on vaja jagada kolleegidega või esitada kliendile, siis saab kasutada funktsiooni SEGYExport[] pakist GeologyIO.

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];

Kolme sellise kuubiga (madala, keskmise ja kõrge sageduse komponendid) kasutatakse tavaliselt RGB segamist andmete ühiseks visualiseerimiseks. Iga komponendi jaoks antakse oma värv – punane, roheline, sinine. Wolfram Mathematica's saab selle teha funktsiooni abil ColorCombine[].

Tulemuseks on pildid, mille põhjal on võimalik teostada geoloogilist tõlgendust. Meandrid, mis on lõikes nähtavad, võimaldavad kaardistada paleojõgesid, mis tõenäolisemalt võivad olla reservuaarid ja sisaldada naftavarusid. Kaasaegse sarnase jõesüsteemi otsimine ja analüüsimine võimaldab määrata kõige perspektiivikamad meandri osad. Jõeharu ise on iseloomulik hästi sorteeritud liivakivikihtidega ja on hea naftareservuaar. Alad väljaspool “nöörikujulisi” anomaaliaid sarnanevad kaasaegsetele üleujutusalade settepooltele. Üleujutusalad on peamiselt esindatud saviste kivimitega ning nende alade puurimine oleks ebaefektiivne.

RGB andmekube lõige. Keskosas (veidi vasakul keskusest) saab jälgida meandrit tegevat jõge.
Wolfram Mathematica geofüüsikas
RGB andmekube lõige. Vasakus osas on nähtav meandrit tegeva jõgi.
Wolfram Mathematica geofüüsikas

Mõnel juhul võimaldavad seismiliste andmete kvaliteet saada oluliselt teravamaid pilte. See sõltub välitööde meetodist, varustusest ja kasutatavast häirivuse vähendamise algoritmist. Sel juhul on näha mitte ainult jõe süsteemide fragmente, vaid ka tervet pikka paleojõge.

RGB kolme komponendi segamine seismiliste andmete kuubist (horisontaalne lõige). Sügavus umbes 2 km.
Wolfram Mathematica geofüüsikas
Satelliidi pilt Volga jõest Saratovi piirkonnas
Wolfram Mathematica geofüüsikas

Kokkuvõte

Wolfram Mathematica abil on võimalik analüüsida seismilisi andmeid ja lahendada praktilisi ülesandeid, mis on seotud mineraalide otsimisega, samas kui GeologyIO pakett muudab selle protsessi mugavamaks. Seismiliste andmete struktuur on selline, et sisseehitatud arvutuskiirus meetodite kasutamine (ParallelTable[], ParallelDo[],…) on väga efektiivne ja võimaldab töödelda suuri andmemahtusid. Suuresti toetavad seda GeologyIO paketi andmete salvestamise eripärad. Muide, paketti saab kasutada mitte ainult rakenduslikus seismoloogias. Praktikas kasutatakse sarnaseid andmetüüpe georadiosondeerimises ja seismoloogias. Kui teil on ettepanekuid tulemuse parandamiseks, milliseid signaalianalüüsi algoritme Wolfram Mathematica arsenalist selliste andmete puhul kasutada või kui teil on kriitilisi märkusi - jätke kommentaare.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster