Wolfram Mathematica dalam Geofisika

Terima kasih kepada penulis blog Anton Ekimenko untuk laporannya

pengenalan

Catatan ini ditulis setelah konferensi Konferensi Teknologi Wolfram Rusia dan berisi rangkuman laporan yang saya berikan. Acara tersebut berlangsung pada bulan Juni di St. Petersburg. Mengingat saya bekerja satu blok dari lokasi konferensi, mau tak mau saya menghadiri acara ini. Pada tahun 2016 dan 2017, saya mendengarkan laporan konferensi, dan tahun ini saya memberikan presentasi. Pertama, topik yang menarik (menurut saya) telah muncul, yang sedang kami kembangkan Kirill Belov, dan kedua, setelah penelitian panjang terhadap undang-undang Federasi Rusia mengenai kebijakan sanksi, di perusahaan tempat saya bekerja, muncul dua lisensi. Wolfram Mathematica.

Sebelum beralih ke topik pidato saya, saya ingin mencatat penyelenggaraan acara yang baik. Halaman kunjungan konferensi menggunakan gambar Katedral Kazan. Katedral adalah salah satu atraksi utama St. Petersburg dan terlihat sangat jelas dari aula tempat konferensi berlangsung.

Wolfram Mathematica dalam Geofisika

Di pintu masuk Universitas Ekonomi Negeri St. Petersburg, para peserta disambut oleh asisten dari kalangan mahasiswa - mereka tidak membiarkan mereka tersesat. Saat pendaftaran, suvenir kecil dibagikan (mainan - paku berkedip, pena, stiker dengan simbol Wolfram). Makan siang dan rehat kopi juga dimasukkan dalam jadwal konferensi. Saya sudah mencatat tentang kopi dan pai yang nikmat di dinding grup - kokinya hebat. Pada bagian perkenalan ini, saya ingin tekankan bahwa acara itu sendiri, format dan lokasinya sudah membawa emosi positif.

Laporan yang saya siapkan dan Kirill Belov berjudul “Menggunakan Wolfram Mathematica untuk memecahkan masalah dalam geofisika terapan. Analisis spektral data seismik atau “tempat aliran sungai purba”. Isi laporan mencakup dua bagian: pertama, penggunaan algoritma yang tersedia Wolfram Mathematica untuk menganalisis data geofisika, dan yang kedua adalah cara memasukkan data geofisika ke dalam Wolfram Mathematica.

Eksplorasi seismik

Pertama, Anda perlu melakukan perjalanan singkat ke dalam geofisika. Geofisika adalah ilmu yang mempelajari sifat fisik batuan. Nah, karena batuan memiliki sifat yang berbeda-beda: kelistrikan, kemagnetan, elastis, maka terdapat metode geofisika yang sesuai: pencarian kelistrikan, pencarian magnetik, pencarian seismik... Dalam konteks artikel kali ini, kita hanya akan membahas pencarian seismik secara lebih detail. Eksplorasi seismik merupakan metode utama pencarian minyak dan gas. Metode ini didasarkan pada eksitasi getaran elastis dan pencatatan respon selanjutnya dari batuan penyusun daerah penelitian. Getaran terjadi di darat (dengan dinamit atau sumber getaran elastis non-eksplosif) atau di laut (dengan senjata angin). Getaran elastis merambat melalui massa batuan, dibiaskan dan dipantulkan pada batas lapisan dengan sifat berbeda. Gelombang yang dipantulkan kembali ke permukaan dan direkam oleh geofon di darat (biasanya perangkat elektrodinamik berdasarkan pergerakan magnet yang tersuspensi dalam kumparan) atau hidrofon di laut (berdasarkan efek piezoelektrik). Pada saat datangnya gelombang, seseorang dapat menilai kedalaman lapisan geologi.

Peralatan penarik kapal seismik
Wolfram Mathematica dalam Geofisika

Senapan angin menimbulkan getaran elastis
Wolfram Mathematica dalam Geofisika

Gelombang melewati massa batuan dan direkam oleh hidrofon
Wolfram Mathematica dalam Geofisika

Kapal penelitian survei geofisika "Ivan Gubkin" di dermaga dekat Jembatan Blagoveshchensky di St. Petersburg
Wolfram Mathematica dalam Geofisika

Model sinyal seismik

Batuan mempunyai sifat fisik yang berbeda-beda. Untuk eksplorasi seismik, sifat elastis sangat penting - kecepatan rambat getaran dan kepadatan elastis. Jika dua lapisan memiliki sifat yang sama atau serupa, maka gelombang “tidak akan memperhatikan” batas di antara keduanya. Jika cepat rambat gelombang pada lapisan-lapisan tersebut berbeda, maka akan terjadi pemantulan pada batas lapisan tersebut. Semakin besar perbedaan sifat, semakin kuat pantulan. Intensitasnya akan ditentukan oleh koefisien reflektansi (rc):

Wolfram Mathematica dalam Geofisika

dimana ρ adalah kepadatan batuan, ν adalah kecepatan gelombang, 1 dan 2 menunjukkan lapisan atas dan bawah.

Salah satu model sinyal seismik yang paling sederhana dan paling sering digunakan adalah model konvolusi, ketika jejak seismik yang terekam direpresentasikan sebagai hasil konvolusi rangkaian koefisien refleksi dengan pulsa probing:

Wolfram Mathematica dalam Geofisika

dimana s(t) — jejak seismik, mis. segala sesuatu yang direkam dengan hidrofon atau geofon selama waktu perekaman yang tetap, w(t) - sinyal yang dihasilkan oleh senapan angin, tidak(t) - suara acak.

Mari kita hitung jejak seismik sintetik sebagai contoh. Kami akan menggunakan pulsa Ricker, yang banyak digunakan dalam eksplorasi seismik, sebagai sinyal awal.

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]

Impuls seismik awal
Wolfram Mathematica dalam Geofisika

Kami akan menetapkan dua batas pada kedalaman 300 ms dan 600 ms, dan koefisien refleksi akan berupa angka acak

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

Urutan koefisien refleksi
Wolfram Mathematica dalam Geofisika

Mari kita hitung dan tampilkan jejak seismik. Karena koefisien refleksi memiliki tanda yang berbeda, kita memperoleh dua refleksi bergantian pada jejak seismik.

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

Jalur simulasi
Wolfram Mathematica dalam Geofisika

Untuk contoh ini, perlu dibuat reservasi - pada kenyataannya, kedalaman lapisan ditentukan, tentu saja, dalam meter, dan penghitungan jejak seismik dilakukan dalam domain waktu. Akan lebih tepat untuk mengatur kedalaman dalam meter dan menghitung waktu tiba dengan mengetahui kecepatan di lapisan tersebut. Dalam hal ini, saya langsung mengatur layer pada sumbu waktu.

Jika kita berbicara tentang penelitian lapangan, maka sebagai hasil pengamatan tersebut sejumlah besar rangkaian waktu (jejak seismik) yang serupa terekam. Misalnya, ketika mempelajari sebuah situs dengan panjang 25 km dan lebar 15 km, di mana, sebagai hasil kerja, setiap jejak mencirikan sel berukuran 25x25 meter (sel seperti itu disebut bin), susunan data akhir akan berisi 600000 jejak. Dengan waktu pengambilan sampel 1 ms dan waktu perekaman 5 detik, file data akhir akan lebih dari 11 GB, dan volume bahan “mentah” asli bisa mencapai ratusan gigabyte.

Bagaimana cara bekerja dengan mereka Wolfram Mathematica?

Paket GeologiIO

Pengembangan paket dimulai pertanyaan di dinding VK kelompok pendukung berbahasa Rusia. Berkat tanggapan masyarakat, solusi ditemukan dengan sangat cepat. Dan sebagai hasilnya, hal itu berkembang menjadi perkembangan yang serius. Sesuai Postingan dinding Komunitas Wolfram Bahkan ditandai oleh moderator. Saat ini, paket tersebut mendukung pekerjaan dengan tipe data berikut yang secara aktif digunakan dalam industri geologi:

  1. impor data peta dalam format ZMAP dan IRAP
  2. impor pengukuran dalam sumur format LAS
  3. input dan output format file seismik SEGI

Untuk menginstal paket, Anda harus mengikuti instruksi pada halaman download paket rakitan, mis. jalankan kode berikut di mana saja Buku catatan Mathematica:

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

Setelah itu paket akan diinstal pada folder default, path yang dapat diperoleh sebagai berikut:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Sebagai contoh, kami akan mendemonstrasikan kemampuan utama paket tersebut. Panggilan dilakukan secara tradisional untuk paket dalam Bahasa Wolfram:

Get["GeologyIO`"]

Paket ini dikembangkan menggunakan Meja Kerja Wolfram. Hal ini memungkinkan Anda untuk melengkapi fungsionalitas utama paket dengan dokumentasi, yang dalam hal format presentasi tidak berbeda dengan dokumentasi Wolfram Mathematica itu sendiri, dan untuk menyediakan paket dengan file pengujian untuk kenalan pertama.

Wolfram Mathematica dalam Geofisika

Wolfram Mathematica dalam Geofisika

File tersebut, khususnya, adalah file “Marmousi.segy” - ini adalah model sintetis dari bagian geologi, yang dikembangkan oleh French Petroleum Institute. Dengan menggunakan model ini, pengembang menguji algoritme mereka sendiri untuk pemodelan medan gelombang, pemrosesan data, inversi jejak seismik, dll. Model Marmousi sendiri disimpan dalam repositori tempat paket itu sendiri diunduh. Untuk mendapatkan file tersebut, jalankan kode berikut:

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

Hasil impor - objek SEGYData
Wolfram Mathematica dalam Geofisika

Format SEGY melibatkan penyimpanan berbagai informasi tentang observasi. Pertama, ini adalah komentar teks. Hal ini mencakup informasi tentang lokasi pekerjaan, nama perusahaan yang melakukan pengukuran, dll. Dalam kasus kami, header ini dipanggil berdasarkan permintaan dengan kunci TextHeader. Berikut header teks yang dipersingkat:

Short[marmousi["TextHeader"]]

“Kumpulan data Marmousi dihasilkan di Institut ... kecepatan minimum 1500 m/s dan maksimum 5500 m/s)”

Anda dapat menampilkan model geologi sebenarnya dengan mengakses jejak seismik menggunakan kunci “jejak” (salah satu fitur paket ini adalah kuncinya tidak peka huruf besar-kecil):

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

Model Marmousi
Wolfram Mathematica dalam Geofisika

Saat ini, paket tersebut juga memungkinkan Anda memuat data sebagian dari file besar, sehingga memungkinkan untuk memproses file yang ukurannya bisa mencapai puluhan gigabyte. Fungsi paket juga mencakup fungsi untuk mengekspor data ke .segy dan menambahkan sebagian ke akhir file.

Secara terpisah, perlu diperhatikan fungsionalitas paket saat bekerja dengan struktur kompleks file .segy. Karena ini memungkinkan Anda tidak hanya mengakses jejak dan header individual menggunakan kunci dan indeks, tetapi juga mengubahnya dan kemudian menulisnya ke file. Banyak rincian teknis penerapan GeologyIO berada di luar cakupan artikel ini dan mungkin memerlukan penjelasan terpisah.

Relevansi analisis spektral dalam eksplorasi seismik

Kemampuan untuk mengimpor data seismik ke Wolfram Mathematica memungkinkan Anda menggunakan fungsionalitas pemrosesan sinyal bawaan untuk data eksperimen. Karena setiap jejak seismik mewakili rangkaian waktu, salah satu alat utama untuk mempelajarinya adalah analisis spektral. Di antara prasyarat untuk menganalisis komposisi frekuensi data seismik, misalnya, berikut ini:

  1. Berbagai jenis gelombang dicirikan oleh komposisi frekuensi yang berbeda. Hal ini memungkinkan Anda untuk menyorot gelombang yang berguna dan menekan gelombang interferensi.
  2. Sifat batuan seperti porositas dan saturasi dapat mempengaruhi komposisi frekuensi. Hal ini memungkinkan untuk mengidentifikasi batuan dengan sifat terbaik.
  3. Lapisan dengan ketebalan berbeda menyebabkan anomali pada rentang frekuensi berbeda.

Poin ketiga adalah poin utama dalam konteks artikel ini. Di bawah ini adalah potongan kode untuk menghitung jejak seismik pada kasus lapisan dengan ketebalan bervariasi - model baji. Model ini secara tradisional dipelajari dalam eksplorasi seismik untuk menganalisis efek interferensi ketika gelombang yang dipantulkan dari banyak lapisan saling bertumpukan.

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 formasi pinch-out
Wolfram Mathematica dalam Geofisika

Cepat rambat gelombang di dalam baji adalah 4500 m/s, di luar baji 4000 m/s, dan massa jenis diasumsikan konstan 2200 g/cm³. Untuk model seperti itu, kami menghitung koefisien refleksi dan jejak seismik.

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]

Jejak seismik untuk model baji
Wolfram Mathematica dalam Geofisika

Urutan jejak seismik yang ditunjukkan pada gambar ini disebut bagian seismik. Seperti yang Anda lihat, interpretasinya juga dapat dilakukan pada tingkat intuitif, karena geometri gelombang yang dipantulkan jelas sesuai dengan model yang telah ditentukan sebelumnya. Jika Anda menganalisis jejak lebih detail, Anda akan melihat bahwa jejak dari 1 hingga sekitar 30 tidak berbeda - pantulan dari atap formasi dan dari bawah tidak saling tumpang tindih. Mulai dari jejak ke-31, pantulan mulai mengganggu. Dan, meskipun dalam model, koefisien refleksi tidak berubah secara horizontal, jejak seismik mengubah intensitasnya seiring dengan perubahan ketebalan lapisan.

Mari kita perhatikan amplitudo pemantulan dari batas atas formasi. Mulai jalur ke-60 intensitas pantulan mulai meningkat dan pada jalur ke-70 menjadi maksimal. Ini adalah bagaimana interferensi gelombang dari atap dan bagian bawah lapisan terwujud, yang dalam beberapa kasus menyebabkan anomali signifikan dalam rekaman seismik.

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]

Grafik amplitudo gelombang pantulan dari tepi atas baji
Wolfram Mathematica dalam Geofisika

Adalah logis bahwa ketika sinyal berfrekuensi lebih rendah, interferensi mulai muncul pada ketebalan formasi yang besar, dan dalam kasus sinyal frekuensi tinggi, interferensi terjadi pada ketebalan yang lebih kecil. Cuplikan kode berikut menghasilkan sinyal dengan frekuensi 35 Hz, 55 Hz, dan 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]

Kumpulan sinyal sumber dengan frekuensi 35 Hz, 55Hz, 85Hz
Wolfram Mathematica dalam Geofisika

Dengan menghitung jejak seismik dan memplot grafik amplitudo gelombang pantulan, kita dapat melihat bahwa untuk frekuensi yang berbeda, anomali diamati pada ketebalan formasi yang berbeda.

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]

Grafik amplitudo gelombang yang dipantulkan dari tepi atas irisan untuk frekuensi yang berbeda
Wolfram Mathematica dalam Geofisika

Kemampuan menarik kesimpulan tentang ketebalan formasi dari hasil pengamatan seismik sangatlah berguna, karena salah satu tugas utama dalam eksplorasi minyak adalah menilai titik-titik yang paling menjanjikan untuk peletakan sumur (yaitu daerah di mana formasi tersebut berada). lebih tebal). Selain itu, pada bagian geologi mungkin terdapat benda-benda yang asal usulnya menyebabkan perubahan ketebalan formasi yang tajam. Hal ini menjadikan analisis spektral sebagai alat yang efektif untuk mempelajarinya. Pada bagian artikel selanjutnya kita akan membahas objek geologi tersebut secara lebih rinci.

Data eksperimental. Di mana Anda mendapatkannya dan apa yang harus dicari di dalamnya?

Bahan-bahan yang dianalisis dalam artikel tersebut diperoleh di Siberia Barat. Wilayah ini, seperti yang mungkin diketahui semua orang, tanpa kecuali, adalah wilayah penghasil minyak utama di negara kita. Pengembangan aktif simpanan dimulai di wilayah tersebut pada tahun 60an abad terakhir. Metode utama pencarian cadangan minyak adalah eksplorasi seismik. Menarik untuk melihat citra satelit wilayah ini. Dalam skala kecil, sejumlah besar rawa dan danau dapat dicatat; dengan memperbesar peta, Anda dapat melihat lokasi pengeboran sumur cluster, dan dengan memperbesar peta hingga batasnya, Anda juga dapat membedakan pembukaan profil di mana seismik observasi dilakukan.

Citra satelit peta Yandex - wilayah kota Noyabrsk
Wolfram Mathematica dalam Geofisika

Jaringan bantalan sumur di salah satu ladang
Wolfram Mathematica dalam Geofisika

Batuan yang mengandung minyak di Siberia Barat terdapat pada berbagai kedalaman - dari 1 km hingga 5 km. Volume utama batuan yang mengandung minyak terbentuk pada zaman Jurassic dan Cretaceous. Periode Jurassic mungkin diketahui banyak orang dari film berjudul sama. Iklim Jurassic sangat berbeda dengan zaman modern. Encyclopedia Britannica mempunyai serangkaian peta paleoma yang menjadi ciri setiap era helogis.

Present tense
Wolfram Mathematica dalam Geofisika
periode Jurasik
Wolfram Mathematica dalam Geofisika

Perlu diketahui bahwa pada zaman Jurassic, wilayah Siberia Barat merupakan pesisir laut (daratan yang dilintasi sungai dan laut dangkal). Karena iklimnya nyaman, kita dapat berasumsi bahwa pemandangan khas pada masa itu terlihat seperti ini:

Siberia Jurassic
Wolfram Mathematica dalam Geofisika

Dalam gambar ini, yang penting bagi kita bukanlah binatang dan burung, melainkan gambar sungai sebagai latar belakangnya. Sungai adalah objek geologi yang sama yang kami singgahi tadi. Faktanya, aktivitas sungai memungkinkan terakumulasinya batupasir yang tersortir dengan baik, yang kemudian menjadi reservoir minyak. Waduk ini dapat memiliki bentuk yang aneh dan kompleks (seperti dasar sungai) dan memiliki ketebalan yang bervariasi - di dekat tepian, ketebalannya kecil, tetapi lebih dekat ke tengah saluran atau di daerah berliku, ketebalannya bertambah. Jadi, sungai-sungai yang terbentuk pada zaman Jurassic itu kini berada di kedalaman sekitar tiga kilometer dan menjadi objek pencarian reservoir minyak.

Data eksperimental. Pemrosesan dan visualisasi

Mari kita segera melakukan reservasi mengenai material seismik yang ditampilkan dalam artikel - karena jumlah data yang digunakan untuk analisis sangat besar - hanya sebagian dari kumpulan jejak seismik asli yang disertakan dalam teks artikel. Ini akan memungkinkan siapa pun untuk mereproduksi perhitungan di atas.

Saat bekerja dengan data seismik, ahli geofisika biasanya menggunakan perangkat lunak khusus (ada beberapa pemimpin industri yang perkembangannya digunakan secara aktif, misalnya Petrel atau Paradigm), yang memungkinkan Anda menganalisis berbagai jenis data dan memiliki antarmuka grafis yang nyaman. Terlepas dari semua kemudahannya, perangkat lunak jenis ini juga memiliki kekurangan - misalnya, penerapan algoritme modern dalam versi stabil membutuhkan banyak waktu, dan kemungkinan untuk mengotomatiskan penghitungan biasanya terbatas. Dalam situasi seperti ini, akan sangat mudah untuk menggunakan sistem matematika komputer dan bahasa pemrograman tingkat tinggi, yang memungkinkan penggunaan basis algoritmik yang luas dan, pada saat yang sama, melakukan banyak rutinitas. Ini adalah prinsip yang digunakan untuk bekerja dengan data seismik di Wolfram Mathematica. Tidak pantas untuk menulis fungsionalitas yang kaya untuk pekerjaan interaktif dengan data - lebih penting untuk memastikan pemuatan dari format yang diterima secara umum, menerapkan algoritma yang diinginkan dan mengunggahnya kembali ke format eksternal.

Mengikuti skema yang diusulkan, kami akan memuat data seismik asli dan menampilkannya 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]

Data yang diunduh dan diimpor dengan cara ini merupakan rute yang tercatat pada area berukuran 10 kali 5 kilometer. Jika data diperoleh dengan menggunakan metode survei seismik tiga dimensi (gelombang dicatat tidak sepanjang profil geofisika individu, tetapi pada seluruh area secara bersamaan), maka dimungkinkan untuk memperoleh kubus data seismik. Ini adalah objek tiga dimensi, bagian vertikal dan horizontal yang memungkinkan studi rinci tentang lingkungan geologi. Dalam contoh yang dibahas, kita berurusan dengan data tiga dimensi. Beberapa informasi dapat kita peroleh dari teks header, seperti ini

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

C 1 INI ADALAH FILE DEMO UNTUK UJI PAKET GEOLOGIIO
C 2
C 3
C 4
C 5 TANGGAL NAMA PENGGUNA: PENGGUNA WOLFRAM
C 6 NAMA SURVEI: DI TEMPAT DI SIBERIA
C 7 VOLUME SEISMIK 3D JENIS FILE
C 8
C 9
JANGKAUAN C10 Z: 2200M PERTAMA, 2400M TERAKHIR

Kumpulan data ini akan cukup bagi kita untuk mendemonstrasikan tahapan utama analisis data. Jejak dalam file dicatat secara berurutan dan masing-masing terlihat seperti gambar berikut - ini adalah distribusi amplitudo gelombang yang dipantulkan sepanjang sumbu vertikal (sumbu kedalaman).

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]

Salah satu jejak bagian seismik
Wolfram Mathematica dalam Geofisika

Mengetahui berapa banyak jejak yang terletak di setiap arah area yang diteliti, Anda dapat membuat larik data tiga dimensi dan menampilkannya menggunakan fungsi Image3D[]

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

Gambar XNUMXD kubus data seismik (Sumbu vertikal - kedalaman)
Wolfram Mathematica dalam Geofisika

Jika fitur geologi yang menarik menimbulkan anomali seismik yang intens, maka alat visualisasi dengan transparansi dapat digunakan. Area rekaman yang “tidak penting” dapat dibuat tidak terlihat, sehingga hanya anomali yang terlihat. Di Wolfram Mathematica hal ini dapat dilakukan dengan menggunakan Kegelapan[] и 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]

Citra kubus data seismik menggunakan fungsi Opacity[] dan Raster3D[]. Wolfram Mathematica dalam Geofisika

Seperti pada contoh sintetik, pada bagian kubus asli seseorang dapat mengidentifikasi beberapa batas geologi (lapisan) dengan relief yang bervariasi.

Alat utama untuk analisis spektral adalah transformasi Fourier. Dengan bantuannya, Anda dapat mengevaluasi spektrum frekuensi amplitudo dari setiap jejak atau kelompok jejak. Namun, setelah data ditransfer ke domain frekuensi, informasi tentang jam berapa (baca pada kedalaman berapa) frekuensi berubah hilang. Untuk dapat melokalisasi perubahan sinyal pada sumbu waktu (kedalaman), digunakan transformasi Fourier berjendela dan dekomposisi wavelet. Artikel ini menggunakan dekomposisi wavelet. Teknologi analisis wavelet mulai aktif digunakan dalam eksplorasi seismik pada tahun 90an. Keuntungan dibandingkan transformasi Fourier berjendela dianggap resolusi waktu yang lebih baik.

Dengan menggunakan potongan kode berikut, Anda dapat menguraikan salah satu jejak seismik menjadi komponen individual:

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]

Dekomposisi jejak menjadi komponen-komponen
Wolfram Mathematica dalam Geofisika

Untuk menilai bagaimana energi refleksi didistribusikan pada waktu kedatangan gelombang yang berbeda, digunakan skalogram (analog dengan spektogram). Sebagai aturan, dalam praktiknya tidak perlu menganalisis semua komponen. Biasanya, komponen frekuensi rendah, menengah dan tinggi dipilih.

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. Hasil fungsi WaveletSkalogram[]
Wolfram Mathematica dalam Geofisika

Bahasa Wolfram menggunakan fungsi transformasi wavelet Transformasi Wavelet Berkelanjutan[]. Dan penerapan fungsi ini ke seluruh rangkaian jejak akan dilakukan menggunakan fungsi tersebut Meja[]. Di sini perlu diperhatikan salah satu kekuatan Wolfram Mathematica - kemampuan untuk menggunakan paralelisasi Tabel Paralel [ ]. Dalam contoh di atas, paralelisasi tidak diperlukan - volume datanya tidak besar, tetapi ketika bekerja dengan kumpulan data eksperimental yang berisi ratusan ribu jejak, ini adalah suatu keharusan.

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

Setelah menerapkan fungsinya Transformasi Wavelet Berkelanjutan[] Kumpulan data baru muncul sesuai dengan frekuensi yang dipilih. Pada contoh di atas, frekuensinya adalah: 38Hz, 33Hz, 27Hz. Pemilihan frekuensi paling sering dilakukan berdasarkan pengujian - mereka memperoleh peta yang efektif untuk kombinasi frekuensi yang berbeda dan memilih yang paling informatif dari sudut pandang ahli geologi.

Jika Anda perlu membagikan hasilnya dengan rekan kerja atau memberikannya kepada pelanggan, Anda dapat menggunakan fungsi SEGYExport[] dari paket GeologyIO

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

Dengan tiga kubus ini (komponen frekuensi rendah, frekuensi menengah, dan frekuensi tinggi), pencampuran RGB biasanya digunakan untuk memvisualisasikan data secara bersamaan. Setiap komponen diberi warna tersendiri - merah, hijau, biru. Di Wolfram Mathematica hal ini dapat dilakukan dengan menggunakan fungsi Kombinasi Warna[].

Hasilnya adalah gambar yang dapat dijadikan interpretasi geologi. Berliku-liku yang terekam pada bagian tersebut memungkinkan untuk menggambarkan saluran-saluran paleo, yang kemungkinan besar merupakan reservoir dan mengandung cadangan minyak. Pencarian dan analisis analog modern dari sistem sungai semacam itu memungkinkan kita menentukan bagian liku-liku yang paling menjanjikan. Salurannya sendiri dicirikan oleh lapisan tebal batupasir yang tersortir dengan baik dan merupakan reservoir minyak yang baik. Daerah di luar anomali "renda" mirip dengan endapan dataran banjir modern. Endapan dataran banjir sebagian besar diwakili oleh batuan lempung dan pengeboran ke zona ini tidak akan efektif.

Irisan RGB dari kubus data. Di bagian tengah (sedikit ke kiri tengah) Anda dapat menelusuri sungai yang berkelok-kelok.
Wolfram Mathematica dalam Geofisika
Irisan RGB dari kubus data. Di sisi kiri Anda bisa menelusuri sungai yang berkelok-kelok.
Wolfram Mathematica dalam Geofisika

Dalam beberapa kasus, kualitas data seismik memungkinkan gambar yang jauh lebih jelas. Hal ini tergantung pada metodologi kerja lapangan, peralatan yang digunakan, dan algoritma pengurangan kebisingan. Dalam kasus seperti itu, tidak hanya fragmen sistem sungai yang terlihat, tetapi juga seluruh sungai paleo yang memanjang.

Pencampuran RGB dari tiga komponen kubus data seismik (irisan horizontal). Kedalamannya kurang lebih 2 km.
Wolfram Mathematica dalam Geofisika
Citra satelit Sungai Volga dekat Saratov
Wolfram Mathematica dalam Geofisika

Kesimpulan

Wolfram Mathematica memungkinkan Anda menganalisis data seismik dan memecahkan masalah terapan terkait eksplorasi mineral, dan paket GeologyIO membuat proses ini lebih nyaman. Struktur data seismik sedemikian rupa sehingga menggunakan metode bawaan untuk mempercepat perhitungan (Tabel Paralel [ ], Lakukan Paralel[],…) sangat efisien dan memungkinkan Anda memproses data dalam jumlah besar. Hal ini sebagian besar difasilitasi oleh fitur penyimpanan data pada paket GeologyIO. Omong-omong, paket tersebut tidak hanya dapat digunakan di bidang eksplorasi seismik terapan. Jenis data yang hampir sama digunakan dalam radar penembus tanah dan seismologi. Jika Anda memiliki saran tentang cara meningkatkan hasil, algoritme analisis sinyal mana dari gudang senjata Wolfram Mathematica yang dapat diterapkan untuk data tersebut, atau jika Anda memiliki komentar kritis, silakan Tinggalkan komentar.

Sumber: www.habr.com

Tambah komentar