Wolfram Mathematica geofüüsikas

Täname blogi autorit Anton Ekimenkot tema ettekande eest

Sissejuhatus

See märkus on kirjutatud Wolfram Russian Technology Conference'i jälgedes ja sisaldab kokkuvõtet ettekandest, millega esinesin. Üritus toimus juunis Peterburis. Arvestades, et töötan konverentsi toimumiskohast kvartali kaugusel, ei saanud ma seda sündmust mitte külastada. Aastal 2016 ja 2017 kuulasin konverentsi ettekandeid, kuid sellel aastal esinesin ise ettekandega. Esiteks tekkis huvitav (kuidas mulle tundub) teema, mida arendame koos Kirill Beloviga , ja teiseks, pärast pikaajalist uuringut Venemaa Föderatsiooni seadusandlusest sanktsioonide poliitika osas, on ettevõttel, kus töötan, nüüd lausa kaks litsentsiWolfram Mathematica Enne kui liigun oma ettekande teema juurde, tahaksin rõhutada ürituse head korraldust. Konverentsi visiitkaardil kasutatakse Kazani katedraali pilti. Katedraal on üks Peterburi peamisi vaatamisväärsusi ja seda on hästi näha saalist, kus konverents toimus..

Peterburi Riikliku Majanduse Ülikooli sissepääsu juures tervitas osalejaid üliõpilaste seas abi, et nad ei eksiks ära. Registreerimise ajal jagati väikeseid suveniire (mingi helendav mänguasi, pastapliiats, Wolframi sümboolikaga kleebised). Lõuna ja kohvipaus olid samuti konverentsi kavas. Ma olen juba maininud grupi seinal maitsvat kohvi ja pirukaid – kokad olid tublid. Selle sissejuhatava osaga tahaksin rõhutada, et üritus ise, selle formaat ja toimumiskoht kannavad endas juba positiivseid emotsioone.

Wolfram Mathematica geofüüsikas

Ettekand, mille valmistasin koos Kirill Beloviga, kannab pealkirja „Wolfram Mathematica kasutamine rakendusgeofüüsika probleemide lahendamiseks. Spektriline analüüs seismiliste andmete kohta või „kuhu jooksid iidsete jõgede“. Ettekande sisu katab kaks osa: esiteks, see on olemasolevate algoritmide kasutamine

geofüüsikaliste andmete analüüsimiseks, ja teiseks, kuidas geofüüsikalised andmed Wolfram Mathematica'sse paigutada. Enne kui liigun oma ettekande teema juurde, tahaksin rõhutada ürituse head korraldust. Konverentsi visiitkaardil kasutatakse Kazani katedraali pilti. Katedraal on üks Peterburi peamisi vaatamisväärsusi ja seda on hästi näha saalist, kus konverents toimus. Seismikauurimine

Seismiline uurimine

Esiteks on vaja teha väike ekskurs geofüüsikasse. Geofüüsika on teadus, mis uurib kivimite füüsikalisi omadusi. Kuna kivimid omavad erinevaid omadusi: elektrilisi, magnetilisi, elastsuse, siis on ka vastavad geofüüsika meetodid: elektrilised uuringud, magnetilised uuringud, seismilised uuringud… Käesolevas artiklis käsitleme lähemalt ainult seismilisi uuringuid. Seismilised uuringud on peamine meetod nafta ja gaasi leidmiseks. Meetod põhineb elastsete kõikumiste tekitamisel ja sellele järgneva vastuse registreerimisel kivimite peal, mis moodustavad uuritava ala. Kõikumiste tekitamine toimub maal (dünaamiidi või mitteplahvatusohtlike vibratsiooniallikate kaudu) või merel (pneumopüsside abil). Elastsed kõikumised levivad läbi kivimite kihistiku, murdes ja peegeldudes kihtide piirimistel, millel on erinevad omadused. Peegeldunud lained naasevad pinnale ja registreeritakse geofonidega maal (tavaliselt on need elektrodünaamilised seadmed, mis põhinevad magneti liikumisel, mis on riputatud spiraali) või hüdrofonidega merel (need põhinevad piezoefektil). Lainete saabumise aja järgi saab hinnata geoloogiliste kihtide sügavust.

Seismilaev vedab varustust
Wolfram Mathematica geofüüsikas

Pneumopüss tekitab elastseid kõikumisi
Wolfram Mathematica geofüüsikas

Lained läbivad kivimite kihistiku ja registreeritakse hüdrofonide abil
Wolfram Mathematica geofüüsikas

Teaduslik uurimislaev geofüüsiliste uuringute jaoks "Ivan Gubkin" Peterburis Blagoveštšenski silla sadamas
Wolfram Mathematica geofüüsikas

Seismilise signaali mudel

Kivimitel on erinevad füüsikalised omadused. Seismiliste uuringute jaoks on eelkõige olulised elastsed omadused — elastsete kõikumiste leviku kiirus ja tihedus. Kui kaks kihti omavad samu või sarnaseid omadusi, siis laine ei "tunneta" piiri nende vahel. Kui aga lainete kiirus kihtides on erinev, siis tekib kihtide piiril peegeldus. Mida suurem on omaduste erinevus, seda intensiivsem on peegeldus. Selle intensiivsus määratakse peegelduskoefitsiendi (rc) järgi:

Wolfram Mathematica geofüüsikas

kus ρ — kivimite tihedus, ν — lainete kiirus, 1 ja 2 tähistavad ülemist ja alumist kihti.

Üks lihtsamaid ja sageli kasutatavaid seismiliste signaalide mudeleid on konvolutsioonimudel, kus registreeritud seismiline rada esitatakse kui järjestuse peegelduskoefitsientide konvolutsioon zondimisimpulssiga:

Wolfram Mathematica geofüüsikas

kus s(t) on seismiline rada, st kõik, mida on registreerinud hydrofon või geofon kindla registreerimise aja jooksul, w(t) on signaal, mida genereerib pneumopüss, n(t) on juhuslik müra.

Kalkuleerime näitena sünteetilise seismilise raja. Algsignaalina kasutame seismiline uurimises laialdaselt kasutatavat Rickeri impulssi.

length=0.050; (*Signaali pikkus*)
dt=0.001;(*Signaali proovide määr*)
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["Esialgne wavelet",Black,20],
LabelStyle->Directive[Black,Italic],
FillingStyle->{White,Black},ImageSize->Large,InterpolationOrder->2]

Algne seismiline impulss
Wolfram Mathematica geofüüsikas

Seame kaks piiri sügavustes 300 ms ja 600 ms, samas kui peegelduskoefitsiendid on juhuslikud numbrid.

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

Peegelduskoefitsientide järjestus
Wolfram Mathematica geofüüsikas

Kalkuleerime ja kuvame seismilise raja. Kuna peegelduskoefitsiendid on erinevate märkidega, saame seismilisel rajal kaks märkide vahetumist.

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

Modelleeritud rada
Wolfram Mathematica geofüüsikas

Selle näite puhul tuleb märkida — tegelikult määratakse kihtide sügavus kindlasti meetrites, kuid seismilise raja kalkulatsioon toimub ajapiirkonnas. Õigem oleks määrata sügavused meetrites ja arvutada saabumise ajad, teades kiirusest kihtides. Selles juhus otsustasin kohe kihtide määrata ajateljel.

Kui rääkida välitöödest, siis nende vaatlemise tulemusena registreeritakse tohutul hulgal sarnaseid ajajadasid (seismilised jäljed). Näiteks uurides 25 km pika ja 15 km laia ala, kus iga jälg iseloomustab ruumi suurusega 25x25 meetrit (sellist ruumi nimetatakse bin-ks), sisaldab lõplik andmekogum 600000 jälge. Aja diskretsiooniga 1 ms ja salvestusaega 5 sekundit, moodustab lõplik andmefail üle 11 GB, samas kui algse „toore“ materjali maht võib ulatuda sadadesse gigabaitidesse.

Kuidas nendega töötada Enne kui liigun oma ettekande teema juurde, tahaksin rõhutada ürituse head korraldust. Konverentsi visiitkaardil kasutatakse Kazani katedraali pilti. Katedraal on üks Peterburi peamisi vaatamisväärsusi ja seda on hästi näha saalist, kus konverents toimus.?

Pakett GeologyIO

Paketis arendamine algas küsimusest VK gruppi venekeelse toe seinal. Tänu kogukonna vastustele leiti lahendus väga kiiresti. Ja see kasvas tõsise arenduse suunas. Vastav post Wolfram Community seinal oli isegi moderaatorite poolt esile tõstetud. Praegu toetab pakett järgmiste andmetüüpidega töötamist, mida kasutatakse aktiivselt geoloogia valdkonnas:

  1. kaardistusandmete import ZMAP ja IRAP formaadis
  2. mõõtmiste import kaevandustes LAS formaadis
  3. seismiliste failide sissesisestamine ja väljund SEGY

Paketis vajalik installimiseks tuleb järgida juhiseid kogutud paketi laadimise lehelt, s.t. teostada 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 järgmiselt:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Näiteks demonstreerime paketi põhifunktsioone. Kõne toimub traditsiooniliselt pakettide jaoks Wolfram Language'is:

Get["GeologyIO`"]

Pakett arendatakse kasutades Wolfram Workbench. See võimaldab paketi põhifunktsiooni dokumentatsiooni kaasata, mis ei erine esituse formaadi poolest Wolfram Mathematica dokumentatsioonist ja varustada paketti testfailidega esmakordseks tutvumiseks.

Wolfram Mathematica geofüüsikas

Wolfram Mathematica geofüüsikas

Selline fail on näiteks fail „Marmousi.segy“ - see on sünteetiline geoloogilise lõike mudel, mille on välja töötanud Prantsuse nafta instituut. Kasutades seda mudelit testivad arendajad oma lainete modelleerimise, andmete töötlemise, seismiliste radade inversiooni jms algoritme. Isegi mudel Marmousi talletatakse hoidlas, kust allalaaditi ka pakett. Faili saamiseks käivitage järgmine kood:

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 teave tööde toimimise koha, mõõtmiste läbi viinud ettevõtete nimede jne kohta. Meie juhul kutsutakse see pealkiri välja päringuga võtmega TextHeader. Siin on toodud lühendatud tekstipealkiri:

Short[marmousi["TextHeader"]]

„Marmousi andmefail genereeriti Instituudis… minimaalne kiirus 1500 m/s ja maksimaalne 5500 m/s)“

Geoloogilist mudelit saab kuvada, pöördudes seismiliste radade poole võtmega „traces“ (paketi üheks omaduseks on võtmete registrist sõltumatu kasutamine):

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

Mudel Marmousi
Wolfram Mathematica geofüüsikas

Praegu võimaldab pakett samuti andmete osalist laadimist suurtest failidest, võimaldades seega töötlemist failide puhul, mille suurus võib ulatuda kümnetesse gigabaitidesse. Paketi funktsioonide hulka kuuluvad ka andmete eksportimise funktsioonid .segy formaati ja osaline kirjutamine faili lõppu.

Eraldi tasub märkida paketi funktsionaalsust keerukate .segy-failide töötlemisel. Kuna see võimaldab mitte ainult pöörduda võtmete ja indeksite kaudu individuaalsete radade, pealkirjade poole, vaid ka neid muuta ja seejärel faili salvestada. Paljud tehnilised detailid GeologyIO rakendamisest ületavad selle artikli raame ning väärivad tõenäoliselt eraldi kirjeldamist.

Spektraalanalüüsi aktuaalsus seismiliste uuringute valdkonnas

Seismilised materjalide importimine Wolfram Mathematica'sse võimaldab kasutada integreeritud signaalitöötlusfunktsioone eksperimentaalsetele andmetele. Kuna iga seismiline rada esindab ajajoonet, on nende uurimise peamine tööriist spektraalanalüüs. Seismiliste andmete sageduskompleksi analüüsi eeldusteks on näiteks järgmised:

  1. Erinevate laine tüüpide sageduskompleks on erinev. See võimaldab eristada kasulikke laineid ja summutatud segalaineid.
  2. Mullaproovide omadused, nagu poorsus ja küllastus, võivad mõjutada sageduskompleksi. See võimaldab eristada paremate omadustega kivimeid.
  3. Erineva paksusega kihid põhjustavad anomaaliaid erinevates sagedusvahemikes.

Kolmas punkt on selles artiklis peamine. Allpool on näidis kood, et arvutada seismilisi radu muutuva paksusega kihi puhul — kolmnurksete mudelite puhul. Seda mudelit uuritakse traditsiooniliselt seismilise uurimise käigus, et analüüsida interferentsiefekte, kui paljude kihtide peegeldunud lained üksteisele kattuvad.

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

Kaluge kihistiku mudel
Wolfram Mathematica geofüüsikas

Laine kiirus kihis on 4500 m/s, väljaspool kihti 4000 m/s ning tihedus on võetud konstantseks 2200 g/cm³. Sellise mudeli jaoks arvutame peegeldumisnäitajad 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]

Seismilised rajad kolmnurkse mudeli jaoks
Wolfram Mathematica geofüüsikas

Selle seismiliste jälgede järjestust, mis on kujutatud sellel pildil, nimetatakse seismiliseks lõikeks. Nagu võib märgata, võib selle tõlgendust teostada ka intuitiivsel tasemel, kuna peegeldunud lainete geomeetria vastab selgelt varasemale mudelile. Kui jälgi lähemalt analüüsida, võib märkida, et 1. kuni umbes 30. jäljega nad ei eristu — peegeldumine kihistumise katest ja põhjast ei kattu. Alates 31. jäljest hakkavad peegeldused interferentsi näitama. Ja kuigi mudelis peegelduskoefitsiendid ei muutu horisontaalselt — seismilised jäljed muudavad oma intensiivsust kihistumise paksuse muutmisel.

Vaadakem peegeldumise amplituudi kihistumise ülemisest piirist. Alates 60. jäljest hakkab peegeldumise intensiivsus tõusma ja 70. jäljel saavutab see maksimaalse taseme. Nii ilmneb lainete interferents katuse ja põhja vahel, tuues mõnel juhul kaasa olulisi seismilise salvestuse anomaaliaid.

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

Graafik peegeldunud laine amplituudist kiilu ülemise serva suhtes
Wolfram Mathematica geofüüsikas

On loogiline, et kui signaal on madalama sagedusega, siis interferents hakkab avalduma suuremate kihistumise paksuste korral, aga kõrgsageduselise signaali korral tekib interferents väiksemate paksuste korral. Järgmine koodifragment loob signaali 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["Waveletide kogum",Black,20],
LabelStyle->Directive[Black,Italic],
ImageSize->Large,InterpolationOrder->2]

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

Tehes seismiliste jälgede arvutusi ja koostades peegeldunud laine amplituudi graafikud, saame näha, et erinevate sageduste korral ilmneb anomaalia erinevates kihistumise paksustes.

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]

Peegli peegli peegli peegli laine amplituudid erinevatelt sagedustelt
Wolfram Mathematica geofüüsikas

Võimalus järeldada kihi paksusest seismiliste vaatluste tulemustest on äärmiselt kasulik, kuna üks peamisi ülesandeid naftamaardlate uurimisel on määrata kõige paljulubvamad kohad puurkaevu rajamiseks (st need alad, kus kiht on suurem). Lisaks võivad geoloogilises lõikes esineda sellised objektid, mille geneesi tõttu toimub kihi paksuste järsk muutus. See teeb spektraalanalüüsi tõhusaks vahendiks nende uurimiseks. Artikli järgmises osas vaatleme selliseid geoloogilisi objekte lähemalt.

Katselised andmed. Kuidas ja kust need on saadud?

Artiklis analüüsitavad materjalid on saadud Lääne-Siberi territooriumilt. See piirkond, nagu kõik kindlasti teavad, on meie riigi peamine nafta tootmispiirkond. Aktiivne naftamaardlate uurimine algas regioonis 60. aastatel. Peamine naftamaardlate otsimise meetod on seismiline uurimine. Huvi pakub satelliitpildid sellest piirkonnast. Väikese mastaabi korral võib märgata tohutut hulka sooja ja järvi, suurendades kaarti, on näha puurkaevukohtade rühmi ja maksimum suurendades paika tuleb välja ka radade profile, mida kasutatakse seismiliste vaatluste tegemiseks.

Yandex kaardilt saadud satelliitpilt — Novyabrsk linna piirkond
Wolfram Mathematica geofüüsikas

Rühmade platvormide võrgustik ühel naftamaardlastest
Wolfram Mathematica geofüüsikas

Naftat sisaldavad kivid Läänesiberi piirkonnas asuvad laias sügavusvahemikus — 1 km kuni 5 km. Peamine kivi, mis sisaldab naftat, moodustus jurapüree ja kriidiajastul. Juras ajastu on tõenäoliselt paljudele tuttav sama nime kandva filmi kaudu. Jurapüree kliima erinevalt kaasaegsest. Briti entsüklopeedias on olemas paleokaardiseeria, mis iseloomustab igat geoloogilist ajastut.

Praegune aeg
Wolfram Mathematica geofüüsikas
Juura ajastu
Wolfram Mathematica geofüüsikas

Pange tähele, et juura ajal esindas Lääne-Siberi territoorium mereäärset randa (maapind, mida lõikavad jõed ja madal meri). Kuna kliima oli mugav, võib eeldada, et selle aja tüüpiline maastik nägi välja järgmine:

Siber juura ajastul
Wolfram Mathematica geofüüsikas

Selles pildis on meie jaoks olulised mitte niivõrd loomad ja linnud, kuivõrd tagaplaanil oleva jõe kujutamine. Jõgi on see geoloogiline objekt, millele me varem tähelepanu pöörasime. Asi on selles, et jõgede tegevus võimaldab hea sorteeringuga liivakivide kogunemist, mis muutuvad seejärel nafta reservoiriks. Need reservoirid võivad omada kummalisi, keerulisi kujundeid (nagu ka jõe vool) ja neil on muutuva paksusega — kallaste lähedal on paksus väike, ent voolu keskosas või keerispiirkondades suureneb. Nii et juura ajal kujundatud jõed asuvad praegu umbes kolme kilomeetri sügavusel ja on naftareservuaaride otsimise objektiks.

Eksperimentaalsed andmed. Töötlemine ja visualiseerimine

Teeme kohe märkuse seoses artiklis näidatud seismiliste materjalidega — arvestades analüüsiks kasutatud andmemahtu, on artikli tekstis kajastatud ainult originaalsete seismiliste radade fragment. See võimaldab kõigil huvilistel reproduseerida esitatud arvutusi.

Töödeldes seismilisi andmeid kasutab geofüüsik tavaliselt spetsialiseeritud tarkvara (on mitmeid valdkonna liidreid, kelle arendustöid aktiivselt kasutatakse, näiteks Petrel või Paradigm), mis võimaldab analüüsida erinevat tüüpi andmeid ja omab mugavat graafilist kasutajaliidest. Hoolimata kõigest sellisest mugavusest, on neil tarkvaradel ka oma puudused — näiteks kaasaegsete algoritmide integreerimine stabiilsetesse versioonidesse võtab palju aega ja arvutuste automatiseerimise võimalused on tavaliselt piiratud. Sellises olukorras on väga mugav kasutada arvutuslike süsteemide ja kõrgemate programmeerimiskeelte abil, mis võimaldavad kasutada suurt algoritmilist baasi ning samal ajal võtavad enda peale palju rutiinseid ülesandeid. Wolfram Mathematica'is põhineb seismiliste andmete töötlemine just sellisel põhimõttel. Ei ole mõistlik kirjutada rikkalikku funktsionaalsust interaktiivseks andmete töötlemiseks - olulisem on tagada laadimine üldiselt aktsepteeritud formaadist, rakendada soovitud algoritme ja laadida andmed tagasi välisesse formaati.

Järgides ettepanekut, laadime originaalsed seismilised andmed ja kuvame need Enne kui liigun oma ettekande teema juurde, tahaksin rõhutada ürituse head korraldust. Konverentsi visiitkaardil kasutatakse Kazani katedraali pilti. Katedraal on üks Peterburi peamisi vaatamisväärsusi ja seda on hästi näha saalist, kus konverents toimus.:

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]

Laaditud ja sellisel viisil imporditud andmed on rajad, mis on registreeritud alal suurusega 10 korda 5 kilomeetrit. Kui andmed on saadud kolmemõõtmelise seismilise uuringu meetodi abil (lainete registreerimine toimub mitte piki eraldi geofüüsilisi profiile, vaid kogu pinnal korraga), on võimalik saada seismiliste andmete kuupe. Need on kolmemõõtmelised objektid, mille vertikaalsed ja horisontaalsed lõiked võimaldavad detailselt uurida geoloogilist keskkonda. Antud näites tegeleme just kolmemõõtmeliste andmetega. Mõningaid andmeid saame tekstipealkirjast, näiteks nii

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

C 1 THIS IS DEMO FILE FOR GEOLOGYIO PACKAGE TEST
C 2
C 3
C 4
C 5 DATE USER NAME: WOLFRAM USER
C 6 SURVEY NAME: SOMEWHERE IN SIBERIA
C 7 FILE TYPE 3D SEISMIC VOLUME
C 8
C 9
C10 Z RANGE: FIRST 2200M LAST 2400M

Selle andme komplekti peaks olema piisavalt, et demonstreerida andmeanalüüsi põhietappe. Failis on jooned järjestikku ja igaüks neist näeb välja umbes nagu järgmine joonis - see on peegeldunud lainete amplituudide jaotus vertikaalsel teljel (sügavuse teljel).

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

Üks seismilise lõike jooned
Wolfram Mathematica geofüüsikas

Teades, kui palju jooni on igas suunas uuritavas piirkonnas, saab moodustada kolmemõõtmelise andme massiivi ja kuvada seda funktsiooni Image3D[] abil.

traces=seismic3DSEGY["traces"];
startIL=1050;EndIL=2000;stepIL=2; (*X-koordinaat alguse ja lõpu jaoks ja joonte samm*)
startXL=1165;EndXL=1615;stepXL=2; (*Y-koordinaat alguse ja lõpu jaoks ja joonte samm*)
numIL=(EndIL-startIL)/stepIL+1;   (*joonte arv X soonel*)
numXL=(EndXL-startXL)/stepIL+1;   (*joonte arv Y soonel*)
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 kuubiku pilt. (Vertikaaltel - sügavus)
Wolfram Mathematica geofüüsikas

Kui geoloogilised objektid, mis on huvipakkuvad, toodavad intensiivseid seismilisi anomaaliaid, saab kasutada läbipaistvuse visualiseerimist. „Mitteolulised” salvestussektorid saab teha nähtamatuks, jättes nähtavaks ainult anomaaliad. Wolfram Mathematica's saab seda teha 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 kuubiku pilt, kasutades funktsioone Opacity[] ja Raster3D[]
Wolfram Mathematica geofüüsikas

Nagu sünteetilises näites, võib originaalse kuubiku lõikel tuvastada teatud geoloogilised piirid (kihid) muutuva reljeefi korral.

Peamine spektraalanalüüsi tööriist on Fourier' muundamine. Selle abil on võimalik hinnata iga trajektoori või trajektooride rühma amplituudifrekventsi spektrit. Kuid pärast andmete teisendamist frekentsiala kaob teave selle kohta, millistel aegadel (loe: sügavustel) muutub sagedus. Selleks, et lokaliseerida signaali muudatused ajateljel (sügavuse teljel), kasutatakse akende Fourier' muundamist ja lainevõrgu lagundamist. Käesolevas artiklis kasutatakse lainevõrgu lagundamist. Lainevõrgu analüüsi tehnoloogiat on aktiivselt rakendatud seismilise uurimise alal 90ndatel. Eeliseks akna Fourier' muundamise ees on parem ajaline eristusvõime.

Järgmise koodifragmendi abil on võimalik teha lagunemist üksikute komponentideks ühe seismilise trajektoori puhul:

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]

Trajektoori lagunemine komponentideks
Wolfram Mathematica geofüüsikas

Selleks, et hinnata, kuidas on peegeldumise energia jaotatud erinevates lainete saabumise aegades, kasutatakse skalogramme (analoog spekrogrammile). Tavaolukorras ei ole tavaliselt vajalik analüüsida kõiki komponente. Üldiselt valitakse madala, keskmise ja kõrge sagedusega komponendid.

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->{"Aeg","Sagedus(Hz)"},LabelStyle->Directive[Black,Bold,14],
ColorFunction->"RustTones",ImageSize->Large]

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

Wolfram Language'is kasutatakse lainevõrgu muundamiseks funktsiooni ContinuousWaveletTransform[]. Selle funktsiooni rakendamine kogu trajektooride komplekti puhul toimub funktsiooni abil Table[]. Siinkohal on oluline märkida ühe Wolfram Mathematica tugevaima külje, nimelt võimalust kasutada paralleelsust. ParallelTable[]. Antud näites ei ole paralleelsuse kasutamine vajalik — andmehulk ei ole suur, kuid blokeeritud andmekogumite töötlemisel, mis sisaldavad sadu tuhandeid trajektoore, on see hädavajalik.

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

Funktsiooni rakendamise järel ContinuousWaveletTransform[] Uued andmekogumid ilmuvad vastavalt valitud sagedustele. Ülaltoodud näites on need sagedused: 38 Hz, 33 Hz, 27 Hz. Sageduste valik põhineb kõige enam testimistest - saadakse tulemuslikud kaardid erinevate sageduskombinatsioonide jaoks ja valitakse geolooge silmas pidades kõige informatiivsem.

Kui tulemusi on vaja jagada kolleegidega või esitada need kliendile, saab kasutada paketi GeologyIO funktsiooni SEGYExport[]

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

Kui on olemas kolm sellist kuubikut (madalsageduslik, keskmisesageduslik ja kõrgsageduslik komponent), kasutatakse tavaliselt RGB segamist andmete ühiseks visualiseerimiseks. Iga komponent saab oma värvi - punane, roheline, sinine. Wolfram Mathematica-s saab seda teha funktsiooni abil ColorCombine[].

Tulemuseks saadakse pildid, mille põhjal saab teha geoloogilisi tõlgendusi. Meandreid, mis on lõikes fikseeritud, saab kasutada paleojõgede kontuurimiseks, mis võivad suure tõenäosusega olla reservuaarideks ja sisaldada nafta varu. Kaasaegsete analoogide otsimine ja analüüs sellise jõgesüsteemi puhul võimaldab tuvastada kõige perspektiivikamaid meandri osi. Jõgede tõelised vood on iseloomustatud paksude hästi sorteeritud liivakivikihtidega ning on hea nafta reservuaar. Alad „nööriliste” anomaaliate väljaspool on sarnased kaasaegsetele üleujutatud settekihtidele. Üleujutatud settekihti esindavad peamiselt savised kivimid ja puurimine nendesse piirkondadesse ei ole efektiivne.

RGB andmekuubi lõige. Keskosas (veidi vasakule keskpunktist) on näha meandreid, mis moodustavad jõe.
Wolfram Mathematica geofüüsikas
RGB andmekuubi lõige. Vasakus osas on näha meandreid, mis moodustavad jõe.
Wolfram Mathematica geofüüsikas

Mõnel juhul võimaldab seismiliste andmete kvaliteet saada oluliselt selgemaid pilte. See sõltub välitööde metoodikast, seadmetest ja rakendatud müra vähendamise algoritmidest. Sellistel juhtudel on nähtavad mitte ainult jõe süsteemide fragmendid, vaid ka pikad paleojõed.

RGB kolme seismiliste andmete komponendi segamine (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 võimaldab analüüsida seismilisi andmeid ja lahendada rakendusülesandeid, mis on seotud maavarade otsimisega. GeologyIO pakett muudab selle protsessi mugavamaks. Seismiliste andmete struktuur on selline, et sisseehitatud kiirendamisviiside kasutamine (ParallelTable[], ParallelDo[],…) on väga efektiivne ning võimaldab töödelda suuri andmehulkade. Oluline on ka GeologyIO paketi andmete salvestamise omadused. Muide, seda paketti saab kasutada mitte ainult rakenduslikus seismilises uurimises. Peaaegu samasuguseid andmeid kasutatakse georadaritehnoloogias ja seismoloogias. Kui teil on ettepanekuid, kuidas tulemusi parandada, milliseid signaalianalüüsi algoritme Wolfram Mathematica arsenalis saaks nende andmete puhul rakendada või kui teil on kriitilisi märkusi - jätke kommentaarid.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster