Wolfram Mathematica in de geofysica

Met dank aan de auteur van de blog Anton Ekimenko voor zijn rapport

Introductie

Deze nota is geschreven in de nasleep van de conferentie Wolfram Russische technologieconferentie en bevat een samenvatting van het rapport dat ik heb uitgebracht. Het evenement vond plaats in juni in Sint-Petersburg. Aangezien ik op een steenworp afstand van de conferentielocatie werk, kon ik niet anders dan dit evenement bijwonen. In 2016 en 2017 luisterde ik naar conferentieverslagen en dit jaar gaf ik een presentatie. Ten eerste is er een interessant (lijkt mij) onderwerp verschenen, waarmee we ons ontwikkelen Kirill Belov, en ten tweede, na een lange studie van de wetgeving van de Russische Federatie met betrekking tot het sanctiebeleid, verschenen er bij de onderneming waar ik werk maar liefst twee licenties Wolfram Mathematica.

Voordat ik verder ga met het onderwerp van mijn toespraak, wil ik graag wijzen op de goede organisatie van het evenement. Op de bezoekerspagina van de conferentie wordt een afbeelding van de Kazankathedraal gebruikt. De kathedraal is een van de belangrijkste bezienswaardigheden van Sint-Petersburg en is goed zichtbaar vanuit de hal waarin de conferentie plaatsvond.

Wolfram Mathematica in de geofysica

Bij de ingang van de St. Petersburg State Economic University werden de deelnemers opgewacht door assistenten uit de studenten - ze lieten hen niet verdwalen. Tijdens de registratie werden kleine souvenirs uitgedeeld (speelgoed - een knipperende punt, een pen, stickers met Wolfram-symbolen). Lunch- en koffiepauzes waren ook opgenomen in het conferentieschema. Ik heb al opgemerkt dat er heerlijke koffie en taarten op de muur van de groep hangen - de koks zijn geweldig. Met dit inleidende deel wil ik benadrukken dat het evenement zelf, het format en de locatie al positieve emoties met zich meebrengen.

Het rapport dat door mij en Kirill Belov is opgesteld heet “Using Wolfram Mathematica to solve problemen in toegepaste geofysica. Spectrale analyse van seismische gegevens of ‘waar oude rivieren stroomden’. De inhoud van het rapport omvat twee delen: ten eerste het gebruik van algoritmen die beschikbaar zijn in Wolfram Mathematica voor het analyseren van geofysische gegevens, en ten tweede: dit is hoe geofysische gegevens in Wolfram Mathematica kunnen worden geplaatst.

Seismische verkenning

Eerst moet je een korte excursie naar de geofysica maken. Geofysica is de wetenschap die de fysische eigenschappen van gesteenten bestudeert. Omdat gesteenten verschillende eigenschappen hebben: elektrisch, magnetisch, elastisch, zijn er overeenkomstige geofysica-methoden: elektrische prospectie, magnetische prospectie, seismische prospectie... In de context van dit artikel zullen we seismische prospectie alleen in meer detail bespreken. Seismische exploratie is de belangrijkste methode voor het zoeken naar olie en gas. De methode is gebaseerd op de excitatie van elastische trillingen en de daaropvolgende registratie van de respons van de rotsen waaruit het studiegebied bestaat. Trillingen worden opgewekt op het land (met dynamiet of niet-explosieve trillingsbronnen van elastische trillingen) of op zee (met luchtkanonnen). Elastische trillingen planten zich voort door de rotsmassa en worden gebroken en gereflecteerd op de grenzen van lagen met verschillende eigenschappen. Gereflecteerde golven keren terug naar het oppervlak en worden geregistreerd door geofoons op het land (meestal elektrodynamische apparaten gebaseerd op de beweging van een magneet opgehangen in een spoel) of hydrofoons in de zee (gebaseerd op het piëzo-elektrische effect). Tegen de tijd dat de golven arriveren, kan men de diepte van geologische lagen beoordelen.

Seismische sleepuitrusting voor schepen
Wolfram Mathematica in de geofysica

Het luchtpistool wekt elastische trillingen op
Wolfram Mathematica in de geofysica

De golven gaan door de rotsmassa en worden geregistreerd door hydrofoons
Wolfram Mathematica in de geofysica

Geofysisch onderzoeksschip "Ivan Gubkin" op de pier nabij de Blagovesjtsjenski-brug in Sint-Petersburg
Wolfram Mathematica in de geofysica

Seismisch signaalmodel

Gesteenten hebben verschillende fysieke eigenschappen. Voor seismische verkenning zijn elastische eigenschappen in de eerste plaats belangrijk: de voortplantingssnelheid van elastische trillingen en de dichtheid. Als twee lagen dezelfde of vergelijkbare eigenschappen hebben, zal de golf de grens ertussen “niet opmerken”. Als de golfsnelheden in de lagen verschillen, zal er reflectie optreden aan de grens van de lagen. Hoe groter het verschil in eigenschappen, hoe intenser de reflectie. De intensiteit ervan wordt bepaald door de reflectiecoëfficiënt (rc):

Wolfram Mathematica in de geofysica

waarbij ρ de rotsdichtheid is, ν de golfsnelheid is, geven 1 en 2 de bovenste en onderste lagen aan.

Een van de eenvoudigste en meest gebruikte seismische signaalmodellen is het convolutiemodel, waarbij het opgenomen seismische spoor wordt weergegeven als het resultaat van convolutie van een reeks reflectiecoëfficiënten met een sondepuls:

Wolfram Mathematica in de geofysica

waar s(t) — seismisch spoor, d.w.z. alles wat door een hydrofoon of geofoon is opgenomen gedurende een vaste opnametijd, w(t) - het signaal gegenereerd door het luchtpistool, n(t) - willekeurig geluid.

Laten we als voorbeeld een synthetisch seismisch spoor berekenen. We zullen de Ricker-puls, die veel wordt gebruikt bij seismisch onderzoek, als het initiële signaal gebruiken.

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]

Initiële seismische impuls
Wolfram Mathematica in de geofysica

We zullen twee grenzen instellen op een diepte van 300 ms en 600 ms, en de reflectiecoëfficiënten zullen willekeurige getallen zijn

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 reflectiecoëfficiënten
Wolfram Mathematica in de geofysica

Laten we het seismische spoor berekenen en weergeven. Omdat de reflectiecoëfficiënten verschillende tekens hebben, krijgen we twee afwisselende reflecties op het seismische 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]]

Gesimuleerd spoor
Wolfram Mathematica in de geofysica

Voor dit voorbeeld is het noodzakelijk om een ​​reservering te maken - in werkelijkheid wordt de diepte van de lagen uiteraard bepaald in meters, en vindt de berekening van het seismische spoor plaats voor het tijdsdomein. Het zou juister zijn om de diepten in meters in te stellen en de aankomsttijden te berekenen, wetende de snelheden in de lagen. In dit geval heb ik de lagen onmiddellijk op de tijdas gezet.

Als we het hebben over veldonderzoek, worden als resultaat van dergelijke waarnemingen een groot aantal vergelijkbare tijdreeksen (seismische sporen) geregistreerd. Als u bijvoorbeeld een locatie van 25 km lang en 15 km breed bestudeert, waar, als resultaat van werk, elk spoor een cel van 25x25 meter karakteriseert (zo'n cel wordt een bak genoemd), zal de uiteindelijke data-array 600000 sporen bevatten. Met een bemonsteringstijd van 1 ms en een opnametijd van 5 seconden zal het uiteindelijke gegevensbestand meer dan 11 GB groot zijn, en het volume van het originele “ruwe” materiaal kan honderden gigabytes bedragen.

Hoe je ermee kunt werken Wolfram Mathematica?

Verpakking GeologieIO

De ontwikkeling van het pakket begon vraag op de VK-muur van de Russischtalige steungroep. Dankzij de reacties van de community werd er zeer snel een oplossing gevonden. En daardoor groeide het uit tot een serieuze ontwikkeling. Overeenkomend Wandpost van Wolfram Community Het werd zelfs gemarkeerd door moderators. Momenteel ondersteunt het pakket het werken met de volgende gegevenstypen die actief worden gebruikt in de geologische industrie:

  1. import van kaartgegevens in ZMAP- en IRAP-formaten
  2. import van metingen in LAS-formaat putten
  3. invoer en uitvoer van seismisch bestandsformaat SEGY

Om het pakket te installeren, moet u de instructies op de downloadpagina van het samengestelde pakket volgen, d.w.z. voer de volgende code uit in any Wiskunde notitieboekje:

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

Daarna wordt het pakket in de standaardmap geïnstalleerd, waarvan het pad als volgt kan worden verkregen:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Als voorbeeld zullen we de belangrijkste mogelijkheden van het pakket demonstreren. De aanroep wordt traditioneel gedaan voor pakketten in de Wolfram-taal:

Get["GeologyIO`"]

Het pakket is ontwikkeld met behulp van Wolfram-werkbank. Hierdoor kunt u de hoofdfunctionaliteit van het pakket begeleiden met documentatie, die qua presentatieformaat niet afwijkt van de documentatie van Wolfram Mathematica zelf, en het pakket voorzien van testbestanden voor de eerste kennismaking.

Wolfram Mathematica in de geofysica

Wolfram Mathematica in de geofysica

Zo'n bestand is in het bijzonder het bestand "Marmousi.segy" - dit is een synthetisch model van een geologische sectie, ontwikkeld door het Franse Petroleum Instituut. Met behulp van dit model testen ontwikkelaars hun eigen algoritmen voor golfveldmodellering, gegevensverwerking, seismische trace-inversie, enz. Het Marmousi-model zelf wordt opgeslagen in de repository van waaruit het pakket zelf is gedownload. Om het bestand te verkrijgen, voert u de volgende code uit:

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

Resultaat importeren - SEGYData-object
Wolfram Mathematica in de geofysica

Het SEGY-formaat omvat het opslaan van verschillende informatie over waarnemingen. Ten eerste zijn dit tekstcommentaren. Denk hierbij aan informatie over de locatie van de werkzaamheden, de namen van de bedrijven die de metingen hebben uitgevoerd etc. In ons geval wordt deze header aangeroepen door een verzoek met de TextHeader-sleutel. Hier is een verkorte tekstkop:

Short[marmousi["TextHeader"]]

“De Marmousi-dataset is gegenereerd op het Instituut … met een minimale snelheid van 1500 m/s en een maximum van 5500 m/s)”

U kunt het daadwerkelijke geologische model weergeven door toegang te krijgen tot de seismische sporen met behulp van de “traces”-sleutel (een van de kenmerken van het pakket is dat de sleutels niet hoofdlettergevoelig zijn):

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

Model Marmousi
Wolfram Mathematica in de geofysica

Momenteel kun je met het pakket ook gegevens in delen uit grote bestanden laden, waardoor het mogelijk wordt bestanden te verwerken waarvan de grootte kan oplopen tot tientallen gigabytes. De functies van het pakket omvatten ook functies voor het exporteren van gegevens naar .segy en het gedeeltelijk toevoegen aan het einde van het bestand.

Afzonderlijk is het de moeite waard om de functionaliteit van het pakket te noteren bij het werken met de complexe structuur van .segy-bestanden. Omdat u hiermee niet alleen toegang krijgt tot individuele sporen en headers met behulp van sleutels en indexen, maar deze ook kunt wijzigen en vervolgens naar een bestand kunt schrijven. Veel van de technische details van de implementatie van GeologyIO vallen buiten het bestek van dit artikel en verdienen waarschijnlijk een aparte beschrijving.

Relevantie van spectrale analyse bij seismische verkenning

Dankzij de mogelijkheid om seismische gegevens in Wolfram Mathematica te importeren, kunt u de ingebouwde signaalverwerkingsfunctionaliteit voor experimentele gegevens gebruiken. Omdat elk seismisch spoor een tijdreeks vertegenwoordigt, is spectrale analyse een van de belangrijkste instrumenten om deze te bestuderen. Onder de vereisten voor het analyseren van de frequentiesamenstelling van seismische gegevens kunnen we bijvoorbeeld het volgende noemen:

  1. Verschillende soorten golven worden gekenmerkt door een verschillende frequentiesamenstelling. Hiermee kunt u nuttige golven markeren en interferentiegolven onderdrukken.
  2. Gesteente-eigenschappen zoals porositeit en verzadiging kunnen de frequentiesamenstelling beïnvloeden. Dit maakt het mogelijk om gesteenten met de beste eigenschappen te identificeren.
  3. Lagen met verschillende diktes veroorzaken afwijkingen in verschillende frequentiebereiken.

Het derde punt is het belangrijkste in de context van dit artikel. Hieronder staat een codefragment voor het berekenen van seismische sporen in het geval van een laag met variërende dikte: een wigmodel. Dit model wordt traditioneel bestudeerd bij seismisch onderzoek om interferentie-effecten te analyseren wanneer door vele lagen gereflecteerde golven op elkaar worden gesuperponeerd.

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 een pinch-outformatie
Wolfram Mathematica in de geofysica

De golfsnelheid binnen de wig bedraagt ​​4500 m/s, buiten de wig 4000 m/s, en de dichtheid wordt constant verondersteld 2200 g/cm³ te zijn. Voor een dergelijk model berekenen we reflectiecoëfficiënten en seismische sporen.

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]

Seismische sporen voor het wigmodel
Wolfram Mathematica in de geofysica

De reeks seismische sporen die in deze figuur wordt weergegeven, wordt een seismische sectie genoemd. Zoals u kunt zien, kan de interpretatie ervan ook op intuïtief niveau worden uitgevoerd, aangezien de geometrie van de gereflecteerde golven duidelijk overeenkomt met het eerder gespecificeerde model. Als je de sporen gedetailleerder analyseert, zul je merken dat sporen van 1 tot ongeveer 30 niet verschillen - de reflectie van het dak van de formatie en van de bodem overlappen elkaar niet. Vanaf het 31e spoor beginnen de reflecties te interfereren. En hoewel in het model de reflectiecoëfficiënten niet horizontaal veranderen - veranderen de seismische sporen hun intensiteit naarmate de dikte van de formatie verandert.

Laten we eens kijken naar de amplitude van de reflectie vanaf de bovengrens van de formatie. Vanaf de 60e route begint de intensiteit van de reflectie toe te nemen en bij de 70e route wordt deze maximaal. Dit is hoe de interferentie van golven vanaf het dak en de onderkant van de lagen zich manifesteert, wat in sommige gevallen tot aanzienlijke afwijkingen in het seismische record leidt.

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 de amplitude van de gereflecteerde golf vanaf de bovenrand van de wig
Wolfram Mathematica in de geofysica

Het is logisch dat wanneer het signaal een lagere frequentie heeft, er interferentie optreedt bij grote formatiedikten, en in het geval van een hoogfrequent signaal treedt interferentie op bij kleinere dikten. Het volgende codefragment creëert een signaal met frequenties 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]

Een set bronsignalen met frequenties van 35 Hz, 55 Hz, 85 Hz
Wolfram Mathematica in de geofysica

Door seismische sporen te berekenen en grafieken van gereflecteerde golfamplitudes uit te zetten, kunnen we zien dat er voor verschillende frequenties een anomalie wordt waargenomen bij verschillende formatiediktes.

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]

Grafieken van de amplitudes van de gereflecteerde golf vanaf de bovenrand van de wig voor verschillende frequenties
Wolfram Mathematica in de geofysica

Het vermogen om uit de resultaten van seismische waarnemingen conclusies te trekken over de dikte van de formatie is buitengewoon nuttig, omdat een van de hoofdtaken bij olie-exploratie het beoordelen van de meest veelbelovende punten voor het leggen van een put is (d.w.z. die gebieden waar de formatie is dikker). Bovendien kunnen er in de geologische sectie objecten zijn waarvan het ontstaan ​​een scherpe verandering in de dikte van de formatie veroorzaakt. Dit maakt spectraalanalyse een effectief hulpmiddel om ze te bestuderen. In het volgende deel van het artikel zullen we dergelijke geologische objecten in meer detail bekijken.

Experimentele gegevens. Waar heb je ze vandaan en waar moet je op letten?

De in het artikel geanalyseerde materialen zijn verkregen in West-Siberië. De regio is, zoals iedereen zonder uitzondering waarschijnlijk weet, de belangrijkste olieproducerende regio van ons land. De actieve ontwikkeling van afzettingen begon in de regio in de jaren 60 van de vorige eeuw. De belangrijkste methode voor het zoeken naar olievoorraden is seismische exploratie. Het is interessant om naar satellietbeelden van dit gebied te kijken. Op kleine schaal kun je een groot aantal moerassen en meren waarnemen; door de kaart te vergroten kun je boorlocaties voor clusterputten zien, en door de kaart tot het uiterste te vergroten kun je ook de open plekken onderscheiden van de profielen waarlangs seismische waarnemingen gedaan.

Satellietfoto van Yandex-kaarten - stadsgebied Noyabrsk
Wolfram Mathematica in de geofysica

Een netwerk van putkussens op een van de velden
Wolfram Mathematica in de geofysica

Oliehoudende rotsen van West-Siberië komen voor op een breed scala aan diepten - van 1 km tot 5 km. Het grootste deel van de rotsen die olie bevatten, werd gevormd in het Jura- en Krijttijdperk. De Jura-periode is waarschijnlijk bij velen bekend uit de gelijknamige film. Jura klimaat verschilde aanzienlijk van de moderne. De Encyclopedia Britannica heeft een reeks paleokaarten die elk helogisch tijdperk karakteriseren.

Tegenwoordige tijd
Wolfram Mathematica in de geofysica
Jura-periode
Wolfram Mathematica in de geofysica

Houd er rekening mee dat in de Jura-tijd het grondgebied van West-Siberië een zeekust was (land doorkruist door rivieren en een ondiepe zee). Omdat het klimaat comfortabel was, kunnen we aannemen dat een typisch landschap uit die tijd er als volgt uitzag:

Jura Siberië
Wolfram Mathematica in de geofysica

Op deze foto zijn voor ons niet zozeer de dieren en vogels belangrijk, maar het beeld van de rivier op de achtergrond. De rivier is hetzelfde geologische object waar we eerder stopten. Feit is dat de activiteit van rivieren ervoor zorgt dat goed gesorteerde zandstenen zich kunnen ophopen, wat dan een reservoir voor olie zal worden. Deze reservoirs kunnen een bizarre, complexe vorm hebben (zoals een rivierbedding) en ze hebben een variabele dikte: nabij de oevers is de dikte klein, maar dichter bij het midden van het kanaal of in meandergebieden neemt deze toe. De rivieren gevormd in het Jura bevinden zich nu dus op een diepte van ongeveer drie kilometer en zijn het voorwerp van een zoektocht naar oliereservoirs.

Experimentele gegevens. Verwerking en visualisatie

Laten we meteen een voorbehoud maken met betrekking tot de seismische materialen die in het artikel worden getoond. Vanwege het feit dat de hoeveelheid gegevens die voor de analyse wordt gebruikt aanzienlijk is, is slechts een fragment van de oorspronkelijke set seismische sporen in de tekst van het artikel opgenomen. Hierdoor kan iedereen de bovenstaande berekeningen reproduceren.

Bij het werken met seismische gegevens gebruikt een geofysicus meestal gespecialiseerde software (er zijn verschillende marktleiders wier ontwikkelingen actief worden gebruikt, bijvoorbeeld Petrel of Paradigm), waarmee u verschillende soorten gegevens kunt analyseren en een handige grafische interface heeft. Ondanks al het gemak hebben dit soort software ook hun nadelen: de implementatie van moderne algoritmen in stabiele versies kost bijvoorbeeld veel tijd en de mogelijkheden voor het automatiseren van berekeningen zijn meestal beperkt. In een dergelijke situatie wordt het erg handig om computerwiskundesystemen en programmeertalen van hoog niveau te gebruiken, die het gebruik van een brede algoritmische basis mogelijk maken en tegelijkertijd veel routine aannemen. Dit is het principe dat wordt gebruikt om met seismische gegevens te werken in Wolfram Mathematica. Het is ongepast om rijke functionaliteit te schrijven voor interactief werken met gegevens - het is belangrijker om te zorgen voor het laden vanuit een algemeen geaccepteerd formaat, de gewenste algoritmen erop toe te passen en ze weer naar een extern formaat te uploaden.

Volgens het voorgestelde schema zullen we de originele seismische gegevens laden en weergeven 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]

De op deze manier gedownloade en geïmporteerde gegevens zijn de geregistreerde routes over een gebied van 10 bij 5 kilometer. Als de gegevens worden verkregen met behulp van een driedimensionale seismische onderzoeksmethode (golven worden niet langs individuele geofysische profielen geregistreerd, maar tegelijkertijd over het hele gebied), wordt het mogelijk om seismische gegevenskubussen te verkrijgen. Dit zijn driedimensionale objecten waarvan de verticale en horizontale delen een gedetailleerde studie van de geologische omgeving mogelijk maken. In het beschouwde voorbeeld hebben we te maken met driedimensionale gegevens. We kunnen wat informatie uit de tekstkop halen, zoals deze

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

C 1 DIT IS DEMOBESTAND VOOR GEOLOGYIO PAKKETTEST
C 2
C 3
C 4
C 5 DATUM GEBRUIKERSNAAM: WOLFRAM GEBRUIKER
C 6 ENQUÊTENAAM: ERGENS IN SIBERIË
C 7 BESTANDSTYPE 3D SEISMISCH VOLUME
C 8
C 9
C10 Z-SERIE: EERSTE 2200M LAATSTE 2400M

Deze dataset zal voldoende zijn om de belangrijkste fasen van data-analyse te demonstreren. De sporen in het bestand worden opeenvolgend opgenomen en elk ervan ziet er ongeveer uit als in de volgende afbeelding: dit is de verdeling van de amplitudes van gereflecteerde golven langs de verticale as (diepteas).

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]

Eén van de seismische sectiesporen
Wolfram Mathematica in de geofysica

Als u weet hoeveel sporen zich in elke richting van het bestudeerde gebied bevinden, kunt u een driedimensionale gegevensarray genereren en deze weergeven met behulp van de Image3D[]-functie

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-afbeelding van een seismische gegevenskubus (verticale as - diepte)
Wolfram Mathematica in de geofysica

Als de geologische kenmerken van belang intense seismische afwijkingen veroorzaken, kunnen visualisatietools met transparantie worden gebruikt. “Onbelangrijke” delen van de opname kunnen onzichtbaar worden gemaakt, waardoor alleen afwijkingen zichtbaar blijven. In Wolfram Mathematica kan dit gedaan worden met behulp van Dekking[] и 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]

Seismische datakubusafbeelding met behulp van de functies Opacity[] en Raster3D[]. Wolfram Mathematica in de geofysica

Net als in het synthetische voorbeeld kan men op delen van de oorspronkelijke kubus enkele geologische grenzen (lagen) met variabel reliëf identificeren.

Het belangrijkste hulpmiddel voor spectrale analyse is de Fourier-transformatie. Met zijn hulp kunt u het amplitude-frequentiespectrum van elk spoor of elke groep sporen evalueren. Na het overbrengen van de data naar het frequentiedomein gaat er echter informatie verloren over op welke momenten (lees op welke diepte) de frequentie verandert. Om signaalveranderingen op de tijd- (diepte-)as te kunnen lokaliseren, worden de windowed Fourier-transformatie en wavelet-decompositie gebruikt. Dit artikel maakt gebruik van wavelet-ontleding. Wavelet-analysetechnologie werd in de jaren negentig actief gebruikt bij seismisch onderzoek. Het voordeel ten opzichte van de Fourier-transformatie met vensters wordt beschouwd als een betere tijdresolutie.

Met behulp van het volgende codefragment kunt u een van de seismische sporen opsplitsen in afzonderlijke componenten:

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]

Ontleding van een spoor in componenten
Wolfram Mathematica in de geofysica

Om te beoordelen hoe de reflectie-energie wordt verdeeld op verschillende aankomsttijden van golven, worden scalogrammen (analoog aan een spectrogram) gebruikt. In de praktijk is het in de regel niet nodig om alle componenten te analyseren. Meestal worden componenten met lage, midden- en hoge frequentie geselecteerd.

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. Functie resultaat WaveletScalogram[]
Wolfram Mathematica in de geofysica

De Wolfram-taal gebruikt de functie voor wavelet-transformatie ContinuWaveletTransform[]. En de toepassing van deze functie op de gehele set sporen zal worden uitgevoerd met behulp van de functie Tafel[]. Hier is het de moeite waard om een ​​van de sterke punten van Wolfram Mathematica op te merken: het vermogen om parallellisatie te gebruiken ParallelleTabel[]. In het bovenstaande voorbeeld is er geen behoefte aan parallellisatie - de hoeveelheid gegevens is niet groot, maar als u werkt met experimentele gegevenssets die honderdduizenden sporen bevatten, is dit een noodzaak.

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

Na het toepassen van de functie ContinuWaveletTransform[] Er verschijnen nieuwe datasets die overeenkomen met de geselecteerde frequenties. In het bovenstaande voorbeeld zijn deze frequenties: 38 Hz, 33 Hz, 27 Hz. De keuze van frequenties wordt meestal uitgevoerd op basis van testen: ze verkrijgen effectieve kaarten voor verschillende frequentiecombinaties en selecteren de meest informatieve vanuit het standpunt van een geoloog.

Als u de resultaten met collega's wilt delen of aan de klant wilt doorgeven, kunt u de functie SEGYExport[] van het GeologyIO-pakket gebruiken

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 deze kubussen (componenten met lage frequentie, middenfrequentie en hoge frequentie) wordt doorgaans RGB-overvloeiing gebruikt om de gegevens samen te visualiseren. Elk onderdeel krijgt zijn eigen kleur toegewezen: rood, groen, blauw. In Wolfram Mathematica kan dit gedaan worden met behulp van de functie KleurCombineer[].

Het resultaat zijn beelden waaruit geologische interpretatie kan worden gemaakt. De meanders die op de sectie zijn geregistreerd, maken het mogelijk om paleokanalen af ​​te bakenen, die waarschijnlijker reservoirs zijn en oliereserves bevatten. Het zoeken en analyseren van moderne analogen van een dergelijk riviersysteem stelt ons in staat de meest veelbelovende delen van de meanders te bepalen. De kanalen zelf worden gekenmerkt door dikke lagen goed gesorteerde zandsteen en vormen een goed reservoir voor olie. Gebieden buiten de "kant" -afwijkingen zijn vergelijkbaar met moderne afzettingen in uiterwaarden. Afzettingen in de uiterwaarden bestaan ​​voornamelijk uit kleiachtige rotsen en het boren in deze zones zal niet effectief zijn.

RGB-segment van de datakubus. In het midden (iets links van het midden) kun je de meanderende rivier volgen.
Wolfram Mathematica in de geofysica
RGB-segment van de datakubus. Aan de linkerkant kun je de meanderende rivier volgen.
Wolfram Mathematica in de geofysica

In sommige gevallen zorgt de kwaliteit van seismische gegevens voor aanzienlijk duidelijkere beelden. Dit hangt af van de veldwerkmethodologie en de apparatuur die wordt gebruikt door het ruisonderdrukkingsalgoritme. In dergelijke gevallen zijn niet alleen fragmenten van riviersystemen zichtbaar, maar ook hele uitgestrekte paleorivieren.

RGB-menging van drie componenten van een seismische datakubus (horizontale slice). Diepte ongeveer 2 km.
Wolfram Mathematica in de geofysica
Satellietfoto van de Wolga bij Saratov
Wolfram Mathematica in de geofysica

Conclusie

Met Wolfram Mathematica kunt u seismische gegevens analyseren en toegepaste problemen met betrekking tot de exploratie van mineralen oplossen, en het GeologyIO-pakket maakt dit proces handiger. De structuur van seismische gegevens is zodanig dat het gebruik van ingebouwde methoden om berekeningen te versnellen (ParallelleTabel[], ParallelDo[],…) is zeer efficiënt en stelt u in staat grote hoeveelheden gegevens te verwerken. Dit wordt voor een groot deel mogelijk gemaakt door de gegevensopslagfuncties van het GeologyIO-pakket. Overigens kan het pakket niet alleen worden gebruikt op het gebied van toegepaste seismische verkenning. Bijna dezelfde soorten gegevens worden gebruikt in grondradar en seismologie. Als u suggesties heeft om het resultaat te verbeteren, welke signaalanalyse-algoritmen uit het Wolfram Mathematica-arsenaal van toepassing zijn op dergelijke gegevens, of als u kritische opmerkingen heeft, neem dan contact met ons op. laat een reactie achter.

Bron: www.habr.com

Voeg een reactie