Wolfram Mathematica in Geofisika

Dankie aan die skrywer van die blog Anton Ekimenko vir sy verslag

Inleiding

Hierdie nota is geskryf in die nasleep van die konferensie Wolfram Russiese Tegnologie-konferensie en bevat 'n opsomming van die verslag wat ek gegee het. Die geleentheid het in Junie in St. Aangesien ek 'n blok van die konferensieterrein af werk, kon ek nie anders as om hierdie geleentheid by te woon nie. In 2016 en 2017 het ek na konferensieverslae geluister, en hierdie jaar het ek 'n aanbieding gelewer. Eerstens het 'n interessante (lyk my) onderwerp verskyn, waarmee ons ontwikkel Kirill Belov, en tweedens, na 'n lang studie van die wetgewing van die Russiese Federasie rakende sanksiebeleid, by die onderneming waar ek werk, het soveel as twee lisensies verskyn Wolfram Mathematica.

Voordat ek oorgaan na die onderwerp van my toespraak, wil ek graag kennis neem van die goeie organisasie van die geleentheid. Die konferensie se besoekbladsy gebruik 'n beeld van die Kazan-katedraal. Die katedraal is een van die hoofbesienswaardighede van St. Petersburg en is baie duidelik sigbaar vanaf die saal waarin die konferensie plaasgevind het.

Wolfram Mathematica in Geofisika

By die ingang van die St. Petersburg State Economic University is deelnemers deur assistente uit die studente ontmoet – hulle het nie toegelaat dat hulle verdwaal nie. Tydens registrasie is klein aandenkings uitgedeel ('n speelding - 'n flitsende punt, 'n pen, plakkers met Wolfram-simbole). Middagete en koffiepouses is ook by die konferensieskedule ingesluit. Ek het reeds opgemerk van heerlike koffie en pasteie op die groep se muur - die sjefs is puik. Met hierdie inleidende deel wil ek beklemtoon dat die geleentheid self, sy formaat en ligging reeds positiewe emosies bring.

Die verslag wat deur my en Kirill Belov voorberei is, heet “Using Wolfram Mathematica to lost problems in toegepaste geofisika. Spektrale analise van seismiese data of "waar antieke riviere geloop het." Die inhoud van die verslag dek twee dele: eerstens, die gebruik van algoritmes wat beskikbaar is in Wolfram Mathematica vir die ontleding van geofisiese data, en tweedens, dit is hoe om geofisiese data in Wolfram Mathematica te plaas.

Seismiese eksplorasie

Eerstens moet jy 'n kort uitstappie na geofisika maak. Geofisika is die wetenskap wat die fisiese eienskappe van gesteentes bestudeer. Wel, aangesien gesteentes verskillende eienskappe het: elektries, magneties, elasties, is daar ooreenstemmende metodes van geofisika: elektriese prospektering, magnetiese prospektering, seismiese prospektering... In die konteks van hierdie artikel sal ons slegs seismiese prospektering in meer besonderhede bespreek. Seismiese eksplorasie is die hoofmetode om na olie en gas te soek. Die metode is gebaseer op die opwekking van elastiese vibrasies en daaropvolgende opname van die reaksie van die rotse wat die studie-area saamstel. Vibrasies word opgewek op land (met dinamiet of nie-plofbare vibrasiebronne van elastiese vibrasies) of op see (met luggewere). Elastiese vibrasies versprei deur die rotsmassa, word gebreek en weerkaats by die grense van lae met verskillende eienskappe. Gereflekteerde golwe keer terug na die oppervlak en word opgeneem deur geofone op land (gewoonlik elektrodinamiese toestelle gebaseer op die beweging van 'n magneet wat in 'n spoel hang) of hidrofone in die see (gebaseer op die piëso-elektriese effek). Teen die tyd van aankoms van golwe, kan 'n mens die dieptes van geologiese lae beoordeel.

Seismiese vaartuig sleep toerusting
Wolfram Mathematica in Geofisika

Die luggeweer wek elastiese vibrasies op
Wolfram Mathematica in Geofisika

Die golwe gaan deur die rotsmassa en word deur hidrofone aangeteken
Wolfram Mathematica in Geofisika

Geofisiese opname navorsingsvaartuig "Ivan Gubkin" by die pier naby die Blagoveshchensky-brug in St. Petersburg
Wolfram Mathematica in Geofisika

Seismiese sein model

Gesteentes het verskillende fisiese eienskappe. Vir seismiese eksplorasie is elastiese eienskappe hoofsaaklik belangrik - die spoed van voortplanting van elastiese vibrasies en digtheid. As twee lae dieselfde of soortgelyke eienskappe het, dan "sal die golf nie die grens tussen hulle opmerk nie". As die golfspoed in die lae verskil, sal weerkaatsing by die grens van die lae plaasvind. Hoe groter die verskil in eienskappe, hoe intenser is die refleksie. Die intensiteit daarvan sal bepaal word deur die reflektansiekoëffisiënt (rc):

Wolfram Mathematica in Geofisika

waar ρ die rotsdigtheid is, ν die golfspoed is, 1 en 2 dui die boonste en onderste lae aan.

Een van die eenvoudigste en mees gebruikte seismiese seinmodelle is die konvolusiemodel, wanneer die aangetekende seismiese spoor voorgestel word as die resultaat van konvolusie van 'n reeks refleksiekoëffisiënte met 'n ondersoekende puls:

Wolfram Mathematica in Geofisika

waar s(t) — seismiese spoor, d.w.s. alles wat opgeneem is deur 'n hidrofoon of geofoon gedurende 'n vaste opname tyd, w(t) - die sein wat deur die luggeweer gegenereer word, n(t) - ewekansige geraas.

Kom ons bereken 'n sintetiese seismiese spoor as 'n voorbeeld. Ons sal die Ricker-puls, wat wyd in seismiese eksplorasie gebruik word, as die aanvanklike sein gebruik.

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]

Aanvanklike seismiese impuls
Wolfram Mathematica in Geofisika

Ons sal twee grense op dieptes van 300 ms en 600 ms stel, en die refleksiekoëffisiënte sal ewekansige getalle wees

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

Volgorde van refleksiekoëffisiënte
Wolfram Mathematica in Geofisika

Kom ons bereken en vertoon die seismiese spoor. Aangesien die refleksiekoëffisiënte verskillende tekens het, kry ons twee afwisselende refleksies op die seismiese spoor.

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

Gesimuleerde spoor
Wolfram Mathematica in Geofisika

Vir hierdie voorbeeld is dit nodig om 'n bespreking te maak - in werklikheid word die diepte van die lae natuurlik in meter bepaal, en die berekening van die seismiese spoor vind plaas vir die tyddomein. Dit sal meer korrek wees om die dieptes in meter te stel en die aankomstye te bereken met kennis van die snelhede in die lae. In hierdie geval stel ek dadelik die lae op die tyd-as.

As ons oor veldnavorsing praat, word 'n groot aantal soortgelyke tydreekse (seismiese spore) as gevolg van sulke waarnemings aangeteken. Byvoorbeeld, wanneer 'n terrein 25 km lank en 15 km breed bestudeer word, waar elke spoor, as gevolg van werk, 'n sel van 25x25 meter kenmerk (so 'n sel word 'n bak genoem), sal die finale dataskikking 600000 1 spore bevat. Met 'n steekproeftyd van 5 ms en 'n opnametyd van 11 sekondes, sal die finale datalêer meer as XNUMX GB wees, en die volume van die oorspronklike "rou" materiaal kan honderde gigagrepe wees.

Hoe om met hulle te werk Wolfram Mathematica?

pakket GeologieIO

Die ontwikkeling van die pakket het begin vraag op die VK-muur van die Russiessprekende ondersteuningsgroep. Danksy die gemeenskap se antwoorde is 'n oplossing baie vinnig gevind. En gevolglik het dit tot 'n ernstige ontwikkeling gegroei. Ooreenstemmende Wolfram Gemeenskap muurpaal Dit is selfs deur moderators gemerk. Tans ondersteun die pakket werk met die volgende datatipes wat aktief in die geologiese industrie gebruik word:

  1. invoer van kaartdata in ZMAP- en IRAP-formate
  2. invoer van metings in LAS-formaat putte
  3. invoer en uitvoer van seismiese lêers formaat SEGY

Om die pakket te installeer, moet jy die instruksies op die aflaaibladsy van die saamgestelde pakket volg, d.w.s. voer die volgende kode in enige uit Mathematica notaboek:

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

Daarna sal die pakket in die verstekmap geïnstalleer word, waarna die pad soos volg verkry kan word:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

As 'n voorbeeld sal ons die belangrikste vermoëns van die pakket demonstreer. Die oproep word tradisioneel gedoen vir pakkette in die Wolfram-taal:

Get["GeologyIO`"]

Die pakket is ontwikkel met behulp van Wolfram Werkbank. Dit laat jou toe om die hooffunksionaliteit van die pakket te vergesel met dokumentasie, wat in terme van aanbiedingsformaat nie verskil van die dokumentasie van Wolfram Mathematica self nie, en om die pakket van toetslêers te voorsien vir die eerste kennismaking.

Wolfram Mathematica in Geofisika

Wolfram Mathematica in Geofisika

So 'n lêer is veral die lêer "Marmousi.segy" - dit is 'n sintetiese model van 'n geologiese afdeling, wat deur die Franse Petroleuminstituut ontwikkel is. Deur hierdie model te gebruik, toets ontwikkelaars hul eie algoritmes vir golfveldmodellering, dataverwerking, seismiese spoorinversie, ens. Die Marmousi-model self word gestoor in die bewaarplek waaruit die pakket self afgelaai is. Om die lêer te kry, voer die volgende kode uit:

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

Voer resultaat in - SEGYData voorwerp
Wolfram Mathematica in Geofisika

Die SEGY-formaat behels die stoor van verskeie inligting oor waarnemings. Eerstens is dit tekskommentaar. Dit sluit inligting in oor die ligging van die werk, die name van die maatskappye wat die metings uitgevoer het, ens. In ons geval word hierdie kopskrif geroep deur 'n versoek met die TextHeader-sleutel. Hier is 'n verkorte teksopskrif:

Short[marmousi["TextHeader"]]

"Die Marmousi-datastel is by die Instituut gegenereer ... minimum snelheid van 1500 m/s en 'n maksimum van 5500 m/s)"

U kan die werklike geologiese model vertoon deur toegang tot die seismiese spore te verkry deur die "spore"-sleutel te gebruik (een van die kenmerke van die pakket is dat die sleutels hoofletter-onsensitief is):

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

Model Marmousi
Wolfram Mathematica in Geofisika

Tans laat die pakket jou ook toe om data in dele van groot lêers af te laai, wat dit moontlik maak om lêers te verwerk waarvan die grootte tientalle gigagrepe kan bereik. Die pakket se funksies sluit ook funksies in vir die uitvoer van data na .segy en gedeeltelik byvoeging aan die einde van die lêer.

Afsonderlik is dit die moeite werd om te let op die funksionaliteit van die pakket wanneer u met die komplekse struktuur van .segy-lêers werk. Aangesien dit jou nie net toelaat om toegang te verkry tot individuele spore en kopskrifte deur sleutels en indekse te gebruik nie, maar ook om dit te verander en dan na 'n lêer te skryf. Baie van die tegniese besonderhede van GeologyIO se implementering is buite die bestek van hierdie artikel en verdien waarskynlik 'n aparte beskrywing.

Relevansie van spektrale analise in seismiese eksplorasie

Die vermoë om seismiese data in Wolfram Mathematica in te voer, laat jou toe om ingeboude seinverwerkingsfunksionaliteit vir eksperimentele data te gebruik. Aangesien elke seismiese spoor 'n tydreeks verteenwoordig, is een van die hoofinstrumente om dit te bestudeer spektrale analise. Onder die voorvereistes vir die ontleding van die frekwensiesamestelling van seismiese data, kan ons byvoorbeeld die volgende noem:

  1. Verskillende tipes golwe word gekenmerk deur verskillende frekwensiesamestelling. Dit laat jou toe om nuttige golwe uit te lig en interferensiegolwe te onderdruk.
  2. Rotseienskappe soos porositeit en versadiging kan die frekwensiesamestelling beïnvloed. Dit maak dit moontlik om gesteentes met die beste eienskappe te identifiseer.
  3. Lae met verskillende diktes veroorsaak anomalieë in verskillende frekwensiereekse.

Die derde punt is die hoofpunt in die konteks van hierdie artikel. Hieronder is 'n kodefragment vir die berekening van seismiese spore in die geval van 'n laag met wisselende dikte - 'n wigmodel. Hierdie model word tradisioneel bestudeer in seismiese eksplorasie om interferensie-effekte te ontleed wanneer golwe wat deur baie lae weerkaats word op mekaar geplaas word.

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

Model van 'n uitknip-formasie
Wolfram Mathematica in Geofisika

Die golfspoed binne die wig is 4500 m/s, buite die wig 4000 m/s, en die digtheid word as konstant 2200 g/cm³ aanvaar. Vir so 'n model bereken ons weerkaatsingskoëffisiënte en seismiese spore.

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]

Seismiese spore vir die wigmodel
Wolfram Mathematica in Geofisika

Die volgorde van seismiese spore wat in hierdie figuur getoon word, word 'n seismiese snit genoem. Soos u kan sien, kan die interpretasie daarvan ook op 'n intuïtiewe vlak uitgevoer word, aangesien die meetkunde van die gereflekteerde golwe duidelik ooreenstem met die model wat vroeër gespesifiseer is. As jy die spore in meer besonderhede ontleed, sal jy agterkom dat spore van 1 tot ongeveer 30 nie verskil nie - die weerkaatsing van die dak van die formasie en van onder af oorvleuel mekaar nie. Vanaf die 31ste spoor begin die refleksies inmeng. En, hoewel in die model, die refleksiekoëffisiënte nie horisontaal verander nie - die seismiese spore verander hul intensiteit soos die dikte van die formasie verander.

Kom ons kyk na die amplitude van refleksie vanaf die boonste grens van die formasie. Vanaf die 60ste roete begin die intensiteit van die refleksie toeneem en by die 70ste roete word dit maksimum. Dit is hoe die interferensie van golwe vanaf die dak en onderkant van die lae manifesteer, wat in sommige gevalle tot beduidende afwykings in die seismiese rekord lei.

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]

Grafiek van die amplitude van die gereflekteerde golf vanaf die boonste rand van die wig
Wolfram Mathematica in Geofisika

Dit is logies dat wanneer die sein laerfrekwensie is, steuring by groot formasiediktes begin verskyn, en in die geval van 'n hoëfrekwensiesein vind steuring by kleiner diktes plaas. Die volgende kodebrokkie skep 'n sein met frekwensies van 35 Hz, 55 Hz en 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]

'n Stel bronseine met frekwensies van 35 Hz, 55Hz, 85Hz
Wolfram Mathematica in Geofisika

Deur seismiese spore te bereken en grafieke van gereflekteerde golfamplitudes te teken, kan ons sien dat vir verskillende frekwensies 'n anomalie by verskillende formasiediktes waargeneem word.

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]

Grafieke van die amplitudes van die gereflekteerde golf vanaf die boonste rand van die wig vir verskillende frekwensies
Wolfram Mathematica in Geofisika

Die vermoë om gevolgtrekkings oor die dikte van die formasie te maak uit die resultate van seismiese waarnemings is uiters nuttig, want een van die hooftake in olie-eksplorasie is om die mees belowende punte vir die lê van 'n put te bepaal (d.w.s. daardie gebiede waar die formasie is dikker). Daarbenewens kan daar in die geologiese afdeling voorwerpe wees waarvan die ontstaan ​​'n skerp verandering in die dikte van die formasie veroorsaak. Dit maak spektrale analise 'n effektiewe hulpmiddel om dit te bestudeer. In die volgende deel van die artikel sal ons sulke geologiese voorwerpe in meer besonderhede oorweeg.

Eksperimentele data. Waar het jy hulle gekry en wat om in hulle te soek?

Die materiaal wat in die artikel ontleed is, is in Wes-Siberië verkry. Die streek, soos almal sonder uitsondering seker weet, is die belangrikste olieproduserende streek van ons land. Aktiewe ontwikkeling van afsettings het in die 60's van die vorige eeu in die streek begin. Die hoofmetode om na olieneerslae te soek is seismiese eksplorasie. Dit is interessant om na satellietbeelde van hierdie gebied te kyk. Op 'n klein skaal kan jy 'n groot aantal moerasse en mere opmerk; deur die kaart te vergroot, kan jy trosboorplekke sien, en deur die kaart tot die uiterste te vergroot, kan jy ook die opruimings van die profiele onderskei waarlangs seismiese waarnemings is uitgevoer.

Satellietbeeld van Yandex-kaarte - Noyabrsk-stadsgebied
Wolfram Mathematica in Geofisika

'n Netwerk van putblokkies by een van die velde
Wolfram Mathematica in Geofisika

Oliedraende gesteentes van Wes-Siberië kom in 'n wye reeks dieptes voor - van 1 km tot 5 km. Die hoofvolume gesteentes wat olie bevat is in die Jurassic en Kryt-tyd gevorm. Die Jurassic-tydperk is waarskynlik aan baie bekend uit die film met dieselfde naam. Jurassiese klimaat was aansienlik anders as die moderne een. Die Encyclopedia Britannica het 'n reeks paleomapte wat elke helogiese era kenmerk.

Huidige tyd
Wolfram Mathematica in Geofisika
Jurassiese tydperk
Wolfram Mathematica in Geofisika

Neem asseblief kennis dat die gebied van Wes-Siberië in die Jurassiese tyd 'n seekus was (land wat deur riviere en 'n vlak see gekruis is). Aangesien die klimaat gemaklik was, kan ons aanvaar dat 'n tipiese landskap van daardie tyd soos volg gelyk het:

Jurassiese Siberië
Wolfram Mathematica in Geofisika

In hierdie prentjie is wat vir ons belangrik is nie soseer die diere en voëls nie, maar die beeld van die rivier in die agtergrond. Die rivier is dieselfde geologiese voorwerp waarby ons vroeër gestop het. Die feit is dat die aktiwiteit van riviere goedgesorteerde sandstene laat ophoop, wat dan 'n reservoir vir olie sal word. Hierdie reservoirs kan 'n bisarre, komplekse vorm hê (soos 'n rivierbedding) en hulle het veranderlike dikte - naby die walle is die dikte klein, maar nader aan die middel van die kanaal of in kronkelgebiede neem dit toe. Dus, die riviere wat in die Jurassic gevorm is, is nou op 'n diepte van ongeveer drie kilometer en is die voorwerp van 'n soektog na oliereservoirs.

Eksperimentele data. Verwerking en visualisering

Laat ons dadelik 'n voorbehoud maak ten opsigte van die seismiese materiaal wat in die artikel getoon word - as gevolg van die feit dat die hoeveelheid data wat vir die analise gebruik word betekenisvol is - word slegs 'n fragment van die oorspronklike stel seismiese spore in die teks van die artikel ingesluit. Dit sal enigeen in staat stel om die bogenoemde berekeninge weer te gee.

Wanneer jy met seismiese data werk, gebruik ’n geofisikus gewoonlik gespesialiseerde sagteware (daar is verskeie bedryfsleiers wie se ontwikkelings aktief gebruik word, byvoorbeeld Petrel of Paradigm), wat jou toelaat om verskillende tipes data te ontleed en ’n gerieflike grafiese koppelvlak het. Ten spyte van al die gerief het hierdie tipe sagteware ook hul nadele - byvoorbeeld, die implementering van moderne algoritmes in stabiele weergawes neem baie tyd, en die moontlikhede vir die outomatisering van berekeninge is gewoonlik beperk. In so 'n situasie word dit baie gerieflik om rekenaarwiskundestelsels en hoëvlakprogrammeertale te gebruik, wat die gebruik van 'n wye algoritmiese basis moontlik maak en terselfdertyd baie roetine aanneem. Dit is die beginsel wat gebruik word om met seismiese data in Wolfram Mathematica te werk. Dit is onvanpas om ryk funksionaliteit vir interaktiewe werk met data te skryf - dit is belangriker om te verseker dat laai vanaf 'n algemeen aanvaarde formaat, die verlangde algoritmes daarop toepas en dit terug oplaai na 'n eksterne formaat.

Na aanleiding van die voorgestelde skema, sal ons die oorspronklike seismiese data laai en dit in vertoon 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]

Die data wat op hierdie manier afgelaai en ingevoer word, is die roetes wat op 'n gebied van 10 by 5 kilometer aangeteken is. As die data verkry word met behulp van 'n driedimensionele seismiese opname metode (golwe word nie langs individuele geofisiese profiele aangeteken nie, maar oor die hele gebied gelyktydig), word dit moontlik om seismiese datakubusse te verkry. Dit is driedimensionele voorwerpe waarvan vertikale en horisontale dele 'n gedetailleerde studie van die geologiese omgewing moontlik maak. In die voorbeeld wat oorweeg word, het ons te doen met driedimensionele data. Ons kan 'n bietjie inligting van die teksopskrif kry, soos hierdie

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

C 1 DIT IS DEMO-LÊER VIR GEOLOGYIO-PAKKETTOETS
C 2
C 3
C 4
C 5 DATUM GEBRUIKER NAAM: WOLFRAM GEBRUIKER
C 6 OPNAMENAAM: IERENS IN SIBERIE
C 7 LêERTIPE 3D SEISMIESE VOLUME
C 8
C 9
C10 Z REEKS: EERSTE 2200M LAASTE 2400M

Hierdie datastel sal genoeg wees vir ons om die hoofstadia van data-analise te demonstreer. Die spore in die lêer word opeenvolgend aangeteken en elkeen van hulle lyk iets soos die volgende figuur - dit is die verspreiding van die amplitudes van gereflekteerde golwe langs die vertikale as (diepte-as).

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]

Een van die seismiese snitspore
Wolfram Mathematica in Geofisika

As u weet hoeveel spore in elke rigting van die bestudeerde gebied geleë is, kan u 'n driedimensionele dataskikking genereer en dit vertoon met behulp van die Image3D[]-funksie

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-beeld van 'n seismiese datakubus. (Vertikale as - diepte)
Wolfram Mathematica in Geofisika

As die geologiese kenmerke van belang intense seismiese anomalieë skep, kan visualiseringsinstrumente met deursigtigheid gebruik word. "Onbelangrike" areas van die opname kan onsigbaar gemaak word, wat slegs afwykings sigbaar laat. In Wolfram Mathematica kan dit gedoen word deur Ondeursigtigheid[] и 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]

Seismiese datakubusbeeld met behulp van Opacity[] en Raster3D[] funksies Wolfram Mathematica in Geofisika

Soos in die sintetiese voorbeeld, kan sommige geologiese grense (lae) met veranderlike reliëf op die gedeeltes van die oorspronklike kubus geïdentifiseer word.

Die hoofinstrument vir spektrale analise is die Fourier-transform. Met sy hulp kan u die amplitude-frekwensiespektrum van elke spoor of groep spore evalueer. Nadat die data egter na die frekwensiedomein oorgedra is, gaan inligting verlore oor op watter tye (lees op watter dieptes) die frekwensie verander. Ten einde seinveranderinge op die tyd- (diepte)-as te kan lokaliseer, word die venstervormige Fourier-transformasie en golf-ontbinding gebruik. Hierdie artikel gebruik wavelet-ontbinding. Golfanalise-tegnologie het in die 90's aktief begin gebruik word in seismiese eksplorasie. Die voordeel bo die Fourier-transform met vensters word as beter tydresolusie beskou.

Deur die volgende kodefragment te gebruik, kan jy een van die seismiese spore in individuele komponente ontbind:

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]

Ontbinding van 'n spoor in komponente
Wolfram Mathematica in Geofisika

Om te bepaal hoe die refleksie-energie by verskillende golfaankomstye versprei word, word skalogramme (analoog aan 'n spektrogram) gebruik. As 'n reël is dit in die praktyk nie nodig om alle komponente te ontleed nie. Tipies word lae-, middel- en hoëfrekwensiekomponente gekies.

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]

Skalogram. Funksie resultaat WaveletScalogram[]
Wolfram Mathematica in Geofisika

Die Wolfram-taal gebruik die funksie vir wavelet-transformasie Deurlopende golftransformasie[]. En die toepassing van hierdie funksie op die hele stel spore sal met behulp van die funksie uitgevoer word Tabel[]. Hier is dit die moeite werd om te let op een van die sterk punte van Wolfram Mathematica - die vermoë om parallelisering te gebruik Parallelle tabel[]. In bogenoemde voorbeeld is daar geen behoefte aan parallelisering nie - die volume data is nie groot nie, maar wanneer daar met eksperimentele datastelle gewerk word wat honderde duisende spore bevat, is dit 'n noodsaaklikheid.

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

Na die toepassing van die funksie Deurlopende golftransformasie[] Nuwe datastelle verskyn wat ooreenstem met die geselekteerde frekwensies. In die voorbeeld hierbo is hierdie frekwensies: 38Hz, 33Hz, 27Hz. Die keuse van frekwensies word meestal op grond van toetsing uitgevoer - hulle kry effektiewe kaarte vir verskillende frekwensiekombinasies en kies die mees insiggewende een vanuit die oogpunt van 'n geoloog.

As jy die resultate met kollegas moet deel of dit aan die kliënt moet verskaf, kan jy die SEGYExport[]-funksie van die GeologyIO-pakket gebruik

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

Met drie van hierdie kubusse (laefrekwensie-, middelfrekwensie- en hoëfrekwensiekomponente), word RGB-vermenging tipies gebruik om die data saam te visualiseer. Elke komponent kry sy eie kleur - rooi, groen, blou. In Wolfram Mathematica kan dit gedoen word deur die funksie te gebruik ColorCombine[].

Die resultaat is beelde waaruit geologiese interpretasie gemaak kan word. Die kronkels wat op die gedeelte aangeteken word, maak dit moontlik om paleokanale af te baken, wat meer waarskynlik reservoirs is en oliereserwes bevat. Die soektog en ontleding van moderne analoë van so 'n rivierstelsel stel ons in staat om die mees belowende dele van die kronkels te bepaal. Die kanale self word gekenmerk deur dik lae goed gesorteerde sandsteen en is 'n goeie reservoir vir olie. Gebiede buite die "kant"-afwykings is soortgelyk aan moderne vloedvlakte-afsettings. Vloedvlakteafsettings word hoofsaaklik deur kleiagtige rotse verteenwoordig en boor in hierdie sones sal ondoeltreffend wees.

RGB deel van die data kubus. In die middel (effens links van die middel) kan jy die kronkelende rivier naspeur.
Wolfram Mathematica in Geofisika
RGB deel van die data kubus. Aan die linkerkant kan jy die kronkelende rivier naspeur.
Wolfram Mathematica in Geofisika

In sommige gevalle laat die kwaliteit van seismiese data aansienlik duideliker beelde toe. Dit hang af van die veldwerkmetodologie, die toerusting wat deur die geraasverminderingsalgoritme gebruik word. In sulke gevalle is nie net fragmente van rivierstelsels sigbaar nie, maar ook hele uitgebreide paleo-riviere.

RGB vermenging van drie komponente van 'n seismiese data kubus (horisontale sny). Diepte ongeveer 2 km.
Wolfram Mathematica in Geofisika
Satellietbeeld van die Wolga-rivier naby Saratov
Wolfram Mathematica in Geofisika

Gevolgtrekking

Wolfram Mathematica laat jou toe om seismiese data te ontleed en toegepaste probleme wat verband hou met mineraaleksplorasie op te los, en die GeologyIO-pakket maak hierdie proses geriefliker. Die struktuur van seismiese data is sodanig dat die gebruik van ingeboude metodes om berekeninge te bespoedig (Parallelle tabel[], ParallelDo[],...) is baie doeltreffend en laat jou toe om groot hoeveelhede data te verwerk. Dit word tot 'n groot mate vergemaklik deur die databergingskenmerke van die GeologyIO-pakket. Terloops, die pakket kan nie net op die gebied van toegepaste seismiese eksplorasie gebruik word nie. Byna dieselfde tipe data word gebruik in grondpenetrerende radar en seismologie. As jy voorstelle het oor hoe om die resultaat te verbeter, watter seinanalise-algoritmes van die Wolfram Mathematica-arsenaal op sulke data van toepassing is, of as jy enige kritiese opmerkings het, moet asseblief Los kommentaar.

Bron: will.com

Voeg 'n opmerking