Wolfram Mathematica trong Địa vật lý

Cảm ơn tác giả của blog Anton Ekimenko cho báo cáo của anh ấy

Giới thiệu

Ghi chú này được viết sau cuộc hội thảo Hội nghị công nghệ Nga Wolfram và chứa một bản tóm tắt của báo cáo tôi đã đưa ra. Sự kiện diễn ra vào tháng 2016 tại St. Petersburg. Vì tôi làm việc cách địa điểm hội nghị một dãy nhà nên tôi không thể không tham dự sự kiện này. Năm 2017 và XNUMX, tôi đã nghe báo cáo hội nghị và năm nay tôi đã thuyết trình. Đầu tiên, một chủ đề thú vị (có vẻ như đối với tôi) đã xuất hiện mà chúng tôi đang phát triển với Kirill Belov, và thứ hai, sau một thời gian dài nghiên cứu pháp luật của Liên bang Nga liên quan đến chính sách trừng phạt, tại doanh nghiệp nơi tôi làm việc, có tới hai giấy phép đã xuất hiện Wolfram Mathicala.

Trước khi chuyển sang chủ đề bài phát biểu của mình, tôi muốn lưu ý đến việc tổ chức sự kiện tốt. Trang tham quan của hội nghị sử dụng hình ảnh của Nhà thờ Kazan. Nhà thờ là một trong những điểm thu hút chính của St. Petersburg và có thể nhìn thấy rất rõ ràng từ hội trường nơi hội nghị diễn ra.

Wolfram Mathematica trong Địa vật lý

Tại lối vào Đại học Kinh tế Bang St. Petersburg, những người tham gia đã gặp các trợ lý trong số các sinh viên - họ không để họ bị lạc. Trong quá trình đăng ký, những món quà lưu niệm nhỏ đã được trao (một món đồ chơi - một cây bút nhấp nháy, một cây bút, nhãn dán có biểu tượng Wolfram). Bữa trưa và giờ nghỉ giải lao cũng được bao gồm trong lịch trình hội nghị. Tôi đã lưu ý về cà phê và bánh nướng thơm ngon trên tường nhóm - các đầu bếp rất tuyệt. Với phần giới thiệu này, tôi muốn nhấn mạnh rằng bản thân sự kiện, hình thức và địa điểm của nó đã mang lại những cảm xúc tích cực.

Báo cáo do tôi và Kirill Belov chuẩn bị có tên là “Sử dụng Wolfram Mathematica để giải các bài toán địa vật lý ứng dụng. Phân tích quang phổ của dữ liệu địa chấn hoặc “nơi các dòng sông cổ chảy qua”. Nội dung báo cáo bao gồm hai phần: thứ nhất là việc sử dụng các thuật toán có sẵn trong Wolfram Mathicala để phân tích dữ liệu địa vật lý và thứ hai là cách đưa dữ liệu địa vật lý vào Wolfram Mathematica.

Thăm dò địa chấn

Đầu tiên bạn cần thực hiện một chuyến tham quan ngắn vào địa vật lý. Địa vật lý là môn khoa học nghiên cứu các tính chất vật lý của đá. Vâng, vì đá có các tính chất khác nhau: điện, từ, đàn hồi nên có các phương pháp địa vật lý tương ứng: thăm dò điện, thăm dò từ tính, thăm dò địa chấn... Trong phạm vi bài viết này, chúng ta sẽ chỉ thảo luận chi tiết hơn về thăm dò địa chấn. Thăm dò địa chấn là phương pháp chính để tìm kiếm dầu khí. Phương pháp này dựa trên sự kích thích của các dao động đàn hồi và sau đó ghi lại phản ứng từ các loại đá tạo nên khu vực nghiên cứu. Các rung động được kích thích trên đất liền (với nguồn rung động nổ hoặc không nổ của dao động đàn hồi) hoặc trên biển (bằng súng hơi). Dao động đàn hồi lan truyền trong khối đá, bị khúc xạ và phản xạ tại ranh giới của các lớp có tính chất khác nhau. Sóng phản xạ quay trở lại bề mặt và được ghi lại bằng geophone trên đất liền (thường là thiết bị điện động dựa trên chuyển động của nam châm lơ lửng trong một cuộn dây) hoặc hydrophone trên biển (dựa trên hiệu ứng áp điện). Vào thời điểm sóng đến, người ta có thể đánh giá được độ sâu của các lớp địa chất.

Thiết bị kéo tàu địa chấn
Wolfram Mathematica trong Địa vật lý

Súng hơi kích thích dao động đàn hồi
Wolfram Mathematica trong Địa vật lý

Sóng truyền qua khối đá và được ghi lại bằng hydrophone
Wolfram Mathematica trong Địa vật lý

Tàu nghiên cứu khảo sát địa vật lý "Ivan Gubkin" tại bến tàu gần cầu Blagoveshchensky ở St. Petersburg
Wolfram Mathematica trong Địa vật lý

Mô hình tín hiệu địa chấn

Đá có tính chất vật lý khác nhau. Đối với hoạt động thăm dò địa chấn, đặc tính đàn hồi chủ yếu quan trọng - tốc độ truyền dao động đàn hồi và mật độ. Nếu hai lớp có đặc tính giống nhau hoặc tương tự nhau thì sóng “sẽ không nhận thấy” ranh giới giữa chúng. Nếu tốc độ sóng trong các lớp khác nhau thì sự phản xạ sẽ xảy ra ở ranh giới của các lớp. Sự khác biệt về tính chất càng lớn thì sự phản xạ càng mãnh liệt. Cường độ của nó sẽ được xác định bởi hệ số phản xạ (rc):

Wolfram Mathematica trong Địa vật lý

trong đó ρ là mật độ đá, ν là tốc độ sóng, 1 và 2 biểu thị lớp trên và lớp dưới.

Một trong những mô hình tín hiệu địa chấn đơn giản và được sử dụng thường xuyên nhất là mô hình tích chập, khi dấu vết địa chấn được ghi lại được biểu diễn dưới dạng kết quả tích chập của chuỗi hệ số phản xạ với xung thăm dò:

Wolfram Mathematica trong Địa vật lý

ở đâu s(t) - dấu vết địa chấn, tức là mọi thứ được ghi lại bằng hydrophone hoặc geophone trong thời gian ghi cố định, w(t) - tín hiệu được tạo ra bởi súng hơi, n(t) - tiếng ồn ngẫu nhiên.

Chúng ta hãy tính toán dấu vết địa chấn tổng hợp làm ví dụ. Chúng tôi sẽ sử dụng xung Ricker, được sử dụng rộng rãi trong thăm dò địa chấn, làm tín hiệu ban đầu.

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]

Xung động đất ban đầu
Wolfram Mathematica trong Địa vật lý

Chúng ta sẽ đặt hai ranh giới ở độ sâu 300 ms và 600 ms và hệ số phản xạ sẽ là số ngẫu nhiên

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

Chuỗi hệ số phản xạ
Wolfram Mathematica trong Địa vật lý

Hãy tính toán và hiển thị dấu vết địa chấn. Vì hệ số phản xạ có dấu khác nhau nên ta có hai phản xạ xen kẽ nhau trên vết địa chấn.

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

Đường đua mô phỏng
Wolfram Mathematica trong Địa vật lý

Đối với ví dụ này, cần phải đặt trước - trên thực tế, độ sâu của các lớp tất nhiên được xác định bằng mét và việc tính toán dấu vết địa chấn xảy ra trong miền thời gian. Sẽ đúng hơn nếu đặt độ sâu tính bằng mét và tính thời gian đến khi biết vận tốc trong các lớp. Trong trường hợp này, tôi ngay lập tức đặt các lớp trên trục thời gian.

Nếu chúng ta nói về nghiên cứu thực địa, thì kết quả của những quan sát như vậy là một số lượng lớn các chuỗi thời gian tương tự (dấu vết địa chấn) được ghi lại. Ví dụ: khi nghiên cứu một địa điểm dài 25 km và rộng 15 km, trong đó, do kết quả công việc, mỗi dấu vết đặc trưng cho một ô có kích thước 25x25 mét (ô như vậy được gọi là thùng), mảng dữ liệu cuối cùng sẽ chứa 600000 dấu vết. Với thời gian lấy mẫu là 1 ms và thời gian ghi là 5 giây, tệp dữ liệu cuối cùng sẽ có dung lượng hơn 11 GB và dung lượng của nguyên liệu “thô” ban đầu có thể lên tới hàng trăm gigabyte.

Làm thế nào để làm việc với họ Wolfram Mathicala?

Gói Địa chấtIO

Sự phát triển của gói bắt đầu câu hỏi trên tường VK của nhóm hỗ trợ nói tiếng Nga. Nhờ phản hồi của cộng đồng, giải pháp đã được tìm ra rất nhanh chóng. Và kết quả là nó đã phát triển thành một sự phát triển nghiêm túc. tương ứng Bài đăng trên tường của Cộng đồng Wolfram Nó thậm chí còn được đánh dấu bởi người điều hành. Hiện tại, gói hỗ trợ làm việc với các loại dữ liệu sau được sử dụng tích cực trong ngành địa chất:

  1. nhập dữ liệu bản đồ ở định dạng ZMAP và IRAP
  2. nhập số đo trong giếng định dạng LAS
  3. đầu vào và đầu ra của định dạng tập tin địa chấn SEGY

Để cài đặt gói, bạn phải làm theo hướng dẫn trên trang tải xuống của gói đã lắp ráp, tức là. thực thi đoạn mã sau trong bất kỳ Sổ tay toán học:

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

Sau đó, gói sẽ được cài đặt trong thư mục mặc định, đường dẫn đến đó có thể được lấy như sau:

FileNameJoin[{$UserBasePacletsDirectory, "Repository"}]

Để làm ví dụ, chúng tôi sẽ chứng minh các khả năng chính của gói. Cuộc gọi được thực hiện theo truyền thống đối với các gói bằng Ngôn ngữ Wolfram:

Get["GeologyIO`"]

Gói được phát triển bằng cách sử dụng Bàn làm việc Wolfram. Điều này cho phép bạn đi kèm với chức năng chính của gói với tài liệu, về mặt định dạng trình bày không khác với tài liệu của chính Wolfram Mathematica và cung cấp gói với các tệp thử nghiệm cho người làm quen đầu tiên.

Wolfram Mathematica trong Địa vật lý

Wolfram Mathematica trong Địa vật lý

Cụ thể, tệp như vậy là tệp “Marmousi.segy” - đây là mô hình tổng hợp của một mặt cắt địa chất, được phát triển bởi Viện Dầu khí Pháp. Sử dụng mô hình này, các nhà phát triển thử nghiệm các thuật toán của riêng họ để lập mô hình trường sóng, xử lý dữ liệu, đảo ngược dấu vết địa chấn, v.v. Bản thân mô hình Marmousi được lưu trữ trong kho lưu trữ nơi gói được tải xuống. Để lấy tập tin, hãy chạy đoạn mã sau:

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

Nhập kết quả - đối tượng SEGYData
Wolfram Mathematica trong Địa vật lý

Định dạng SEGY liên quan đến việc lưu trữ nhiều thông tin khác nhau về các quan sát. Đầu tiên, đây là những bình luận bằng văn bản. Điều này bao gồm thông tin về vị trí công trình, tên của các công ty thực hiện phép đo, v.v. Trong trường hợp của chúng tôi, tiêu đề này được gọi bởi một yêu cầu có khóa TextHeader. Đây là một tiêu đề văn bản rút gọn:

Short[marmousi["TextHeader"]]

“Bộ dữ liệu Marmousi được tạo ra tại Viện ...tốc độ tối đa là 1500 m/s và tối đa là 5500 m/s)”

Bạn có thể hiển thị mô hình địa chất thực tế bằng cách truy cập các dấu vết địa chấn bằng phím “dấu vết” (một trong những tính năng của gói là các khóa không phân biệt chữ hoa chữ thường):

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

Người mẫu Marmousi
Wolfram Mathematica trong Địa vật lý

Hiện tại, gói này cũng cho phép bạn tải dữ liệu theo từng phần từ các tệp lớn, giúp xử lý các tệp có kích thước có thể lên tới hàng chục gigabyte. Các chức năng của gói cũng bao gồm các chức năng xuất dữ liệu sang .segy và thêm một phần vào cuối tệp.

Riêng biệt, cần lưu ý chức năng của gói khi làm việc với cấu trúc phức tạp của tệp .segy. Vì nó cho phép bạn không chỉ truy cập các dấu vết và tiêu đề riêng lẻ bằng cách sử dụng khóa và chỉ mục mà còn có thể thay đổi chúng rồi ghi chúng vào một tệp. Nhiều chi tiết kỹ thuật về việc triển khai GeologyIO nằm ngoài phạm vi của bài viết này và có lẽ xứng đáng được mô tả riêng.

Sự liên quan của phân tích quang phổ trong thăm dò địa chấn

Khả năng nhập dữ liệu địa chấn vào Wolfram Mathematica cho phép bạn sử dụng chức năng xử lý tín hiệu tích hợp cho dữ liệu thử nghiệm. Vì mỗi dấu vết địa chấn thể hiện một chuỗi thời gian nên một trong những công cụ chính để nghiên cứu chúng là phân tích quang phổ. Trong số các điều kiện tiên quyết để phân tích thành phần tần số của dữ liệu địa chấn, chúng ta có thể đặt tên như sau:

  1. Các loại sóng khác nhau được đặc trưng bởi thành phần tần số khác nhau. Điều này cho phép bạn làm nổi bật các sóng hữu ích và triệt tiêu sóng nhiễu.
  2. Các đặc tính của đá như độ xốp và độ bão hòa có thể ảnh hưởng đến thành phần tần số. Điều này giúp có thể xác định các loại đá có đặc tính tốt nhất.
  3. Các lớp có độ dày khác nhau gây ra sự bất thường ở các dải tần số khác nhau.

Điểm thứ ba là điểm chính trong bối cảnh của bài viết này. Dưới đây là đoạn mã để tính toán dấu vết địa chấn trong trường hợp lớp có độ dày khác nhau - mô hình hình nêm. Mô hình này thường được nghiên cứu trong thăm dò địa chấn để phân tích hiệu ứng giao thoa khi sóng phản xạ từ nhiều lớp chồng lên nhau.

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

Mô hình đội hình nhúm
Wolfram Mathematica trong Địa vật lý

Tốc độ sóng bên trong nêm là 4500 m/s, bên ngoài nêm là 4000 m/s và mật độ sóng được coi là không đổi 2200 g/cm³. Đối với mô hình như vậy, chúng tôi tính toán hệ số phản xạ và dấu vết địa chấn.

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]

Dấu vết địa chấn cho mô hình nêm
Wolfram Mathematica trong Địa vật lý

Chuỗi dấu vết địa chấn thể hiện trong hình này được gọi là mặt cắt địa chấn. Như bạn có thể thấy, việc giải thích nó cũng có thể được thực hiện ở mức độ trực quan, vì hình dạng của sóng phản xạ rõ ràng tương ứng với mô hình đã được chỉ định trước đó. Nếu bạn phân tích các dấu vết chi tiết hơn, bạn sẽ nhận thấy rằng các dấu vết từ 1 đến xấp xỉ 30 không khác nhau - sự phản chiếu từ mái của hệ tầng và từ phía dưới không chồng lên nhau. Bắt đầu từ dấu vết thứ 31, các phản xạ bắt đầu can thiệp. Và, mặc dù trong mô hình, hệ số phản xạ không thay đổi theo chiều ngang - dấu vết địa chấn thay đổi cường độ khi độ dày của hệ tầng thay đổi.

Hãy xem xét biên độ phản xạ từ ranh giới trên của hệ tầng. Bắt đầu từ tuyến đường thứ 60, cường độ phản xạ bắt đầu tăng lên và ở tuyến đường thứ 70, cường độ phản xạ trở nên tối đa. Đây là cách thể hiện sự giao thoa của sóng từ mái và đáy của các lớp, trong một số trường hợp dẫn đến những bất thường đáng kể trong hồ sơ địa chấn.

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]

Đồ thị biên độ của sóng phản xạ tính từ mép trên của hình nêm
Wolfram Mathematica trong Địa vật lý

Điều hợp lý là khi tín hiệu có tần số thấp hơn, nhiễu bắt đầu xuất hiện ở độ dày hình thành lớn và trong trường hợp tín hiệu tần số cao, nhiễu xảy ra ở độ dày nhỏ hơn. Đoạn mã sau tạo tín hiệu có tần số 35 Hz, 55 Hz và 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]

Tập hợp các nguồn tín hiệu có tần số 35 Hz, 55Hz, 85Hz
Wolfram Mathematica trong Địa vật lý

Bằng cách tính toán dấu vết địa chấn và vẽ đồ thị biên độ sóng phản xạ, chúng ta có thể thấy rằng đối với các tần số khác nhau, người ta quan sát thấy sự bất thường ở các độ dày hình thành khác nhau.

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]

Đồ thị biên độ của sóng phản xạ từ mép trên của nêm cho các tần số khác nhau
Wolfram Mathematica trong Địa vật lý

Khả năng đưa ra kết luận về độ dày của thành hệ từ kết quả quan sát địa chấn là cực kỳ hữu ích, bởi vì một trong những nhiệm vụ chính trong thăm dò dầu khí là đánh giá các điểm hứa hẹn nhất để đặt giếng (tức là những khu vực có thành hệ dày hơn). Ngoài ra, trong mặt cắt địa chất có thể có những vật thể có nguồn gốc gây ra sự thay đổi mạnh về độ dày của hệ tầng. Điều này làm cho phân tích quang phổ trở thành một công cụ hiệu quả để nghiên cứu chúng. Trong phần tiếp theo của bài viết, chúng tôi sẽ xem xét các đối tượng địa chất như vậy một cách chi tiết hơn.

Số liệu thực nghiệm. Bạn lấy chúng ở đâu và cần tìm gì ở chúng?

Các tài liệu được phân tích trong bài viết được lấy ở Tây Siberia. Khu vực này, như tất cả mọi người, không có ngoại lệ, có lẽ đều biết, là khu vực sản xuất dầu mỏ chính của nước ta. Sự phát triển tích cực của tiền gửi bắt đầu trong khu vực vào những năm 60 của thế kỷ trước. Phương pháp chính để tìm kiếm các mỏ dầu là thăm dò địa chấn. Thật thú vị khi nhìn vào hình ảnh vệ tinh của lãnh thổ này. Ở quy mô nhỏ, bạn có thể ghi nhận một số lượng lớn đầm lầy và hồ nước; bằng cách phóng to bản đồ, bạn có thể thấy các vị trí khoan giếng theo cụm và bằng cách phóng to bản đồ đến giới hạn, bạn cũng có thể phân biệt các khoảng trống của các mặt cắt dọc theo địa chấn các quan sát đã được thực hiện.

Hình ảnh vệ tinh của bản đồ Yandex - khu vực thành phố Noyabrsk
Wolfram Mathematica trong Địa vật lý

Mạng lưới các giếng nước tại một trong các mỏ
Wolfram Mathematica trong Địa vật lý

Đá chứa dầu ở Tây Siberia có độ sâu khác nhau - từ 1 km đến 5 km. Khối lượng đá chứa dầu chủ yếu được hình thành vào kỷ Jura và kỷ Phấn trắng. Kỷ Jura có lẽ được nhiều người biết đến qua bộ phim cùng tên. khí hậu kỷ Jura khác biệt đáng kể so với hiện đại. Bách khoa toàn thư Britannica có một loạt các bản đồ cổ đặc trưng cho từng thời đại huyết học.

Ngày nay
Wolfram Mathematica trong Địa vật lý
kỷ Jura
Wolfram Mathematica trong Địa vật lý

Xin lưu ý rằng vào kỷ Jura, lãnh thổ Tây Siberia là bờ biển (vùng đất có sông và biển nông). Vì khí hậu dễ ​​chịu nên chúng ta có thể cho rằng cảnh quan điển hình thời đó trông như thế này:

Siberia kỷ Jura
Wolfram Mathematica trong Địa vật lý

Trong bức ảnh này, điều quan trọng đối với chúng ta không phải là các loài động vật và chim chóc mà là hình ảnh dòng sông ở hậu cảnh. Con sông chính là đối tượng địa chất mà chúng ta đã dừng lại trước đó. Thực tế là hoạt động của các con sông cho phép tích tụ các loại đá sa thạch được chọn lọc tốt, sau đó sẽ trở thành nơi chứa dầu. Những hồ chứa này có thể có hình dạng kỳ lạ, phức tạp (như lòng sông) và chúng có độ dày thay đổi - gần bờ độ dày nhỏ, nhưng càng gần tâm kênh hoặc ở những khu vực uốn khúc thì độ dày càng tăng. Vì vậy, các con sông hình thành trong kỷ Jura hiện có độ sâu khoảng ba km và là đối tượng tìm kiếm các hồ chứa dầu.

Số liệu thực nghiệm. Xử lý và hiển thị

Chúng ta hãy đặt trước ngay lập tức về các tài liệu địa chấn được hiển thị trong bài viết - do thực tế là lượng dữ liệu được sử dụng để phân tích là đáng kể - chỉ một phần của tập hợp dấu vết địa chấn ban đầu được đưa vào văn bản của bài viết. Điều này sẽ cho phép bất cứ ai tái tạo các tính toán trên.

Khi làm việc với dữ liệu địa chấn, nhà địa vật lý thường sử dụng phần mềm chuyên dụng (có một số phần mềm dẫn đầu ngành đang tích cực sử dụng các phát triển của nó, ví dụ như Petrel hoặc Paradigm), cho phép bạn phân tích các loại dữ liệu khác nhau và có giao diện đồ họa thuận tiện. Bất chấp sự tiện lợi, những loại phần mềm này cũng có những nhược điểm - ví dụ, việc triển khai các thuật toán hiện đại ở phiên bản ổn định mất rất nhiều thời gian và khả năng tự động hóa tính toán thường bị hạn chế. Trong tình huống như vậy, việc sử dụng hệ thống toán học máy tính và ngôn ngữ lập trình cấp cao sẽ trở nên rất thuận tiện, cho phép sử dụng cơ sở thuật toán rộng, đồng thời thực hiện nhiều công việc thường ngày. Đây là nguyên tắc được sử dụng để làm việc với dữ liệu địa chấn trong Wolfram Mathematica. Việc viết chức năng phong phú cho công việc tương tác với dữ liệu là không phù hợp - điều quan trọng hơn là đảm bảo tải từ định dạng được chấp nhận rộng rãi, áp dụng các thuật toán mong muốn cho chúng và tải chúng trở lại định dạng bên ngoài.

Theo sơ đồ đề xuất, chúng tôi sẽ tải dữ liệu địa chấn gốc và hiển thị chúng ở dạng Wolfram Mathicala:

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]

Dữ liệu được tải xuống và nhập theo cách này là các tuyến đường được ghi lại trên một khu vực có kích thước 10 x 5 km. Nếu dữ liệu thu được bằng phương pháp khảo sát địa chấn ba chiều (sóng được ghi không dọc theo các mặt cắt địa vật lý riêng lẻ mà trên toàn bộ khu vực), thì có thể thu được các khối dữ liệu địa chấn. Đây là những vật thể ba chiều, các phần dọc và ngang cho phép nghiên cứu chi tiết về môi trường địa chất. Trong ví dụ được xem xét, chúng ta đang xử lý dữ liệu ba chiều. Chúng tôi có thể lấy một số thông tin từ tiêu đề văn bản, như thế này

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

C 1 ĐÂY LÀ FILE DEMO CHO KIỂM TRA GÓI ĐỊA CHẤT
C 2
C 3
C 4
C 5 NGÀY TÊN NGƯỜI DÙNG: NGƯỜI DÙNG WOLFRAM
C 6 TÊN KHẢO SÁT: ĐÂU ĐÂU Ở SIBERIA
C 7 LOẠI TẬP TIN KHỐI LƯỢNG ĐỊA CHẤT 3D
C 8
C 9
C10 Z PHẠM VI: 2200M ĐẦU TIÊN 2400M CUỐI CÙNG

Tập dữ liệu này sẽ đủ để chúng tôi chứng minh các giai đoạn chính của phân tích dữ liệu. Các dấu vết trong tệp được ghi lại một cách tuần tự và mỗi dấu vết trông giống như hình sau - đây là sự phân bố biên độ của sóng phản xạ dọc theo trục tung (trục độ sâu).

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]

Một trong những dấu vết mặt cắt địa chấn
Wolfram Mathematica trong Địa vật lý

Biết có bao nhiêu dấu vết nằm ở mỗi hướng của khu vực nghiên cứu, bạn có thể tạo mảng dữ liệu ba chiều và hiển thị nó bằng hàm 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]]

Hình ảnh XNUMXD của khối dữ liệu địa chấn (Trục tung - chiều sâu)
Wolfram Mathematica trong Địa vật lý

Nếu các đặc điểm địa chất quan tâm tạo ra các dị thường địa chấn dữ dội thì có thể sử dụng các công cụ trực quan hóa trong suốt. Các khu vực “không quan trọng” của bản ghi có thể được ẩn đi, chỉ để lại những điểm bất thường. Trong Wolfram Mathematica, điều này có thể được thực hiện bằng cách sử dụng Độ mờ [] и 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]

Hình ảnh khối dữ liệu địa chấn sử dụng hàm Opacity[] và Raster3D[] Wolfram Mathematica trong Địa vật lý

Như trong ví dụ tổng hợp, một số ranh giới địa chất (lớp) có hình nổi thay đổi có thể được xác định trên các phần của khối ban đầu.

Công cụ chính để phân tích quang phổ là phép biến đổi Fourier. Với sự trợ giúp của nó, bạn có thể đánh giá phổ tần số biên độ của từng dấu vết hoặc nhóm dấu vết. Tuy nhiên, sau khi truyền dữ liệu sang miền tần số, thông tin sẽ bị mất về thời điểm (đọc ở độ sâu) tần số thay đổi. Để có thể định vị các thay đổi tín hiệu trên trục thời gian (độ sâu), biến đổi Fourier cửa sổ và phân tách sóng con được sử dụng. Bài viết này sử dụng phân rã wavelet. Công nghệ phân tích Wavelet bắt đầu được sử dụng tích cực trong thăm dò địa chấn vào những năm 90. Ưu điểm so với biến đổi Fourier cửa sổ được coi là độ phân giải thời gian tốt hơn.

Sử dụng đoạn mã sau, bạn có thể phân tách một trong các dấu vết địa chấn thành các thành phần riêng lẻ:

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]

Phân hủy vết thành các thành phần
Wolfram Mathematica trong Địa vật lý

Để đánh giá cách phân bổ năng lượng phản xạ tại các thời điểm sóng tới khác nhau, người ta sử dụng biểu đồ hình học (tương tự như biểu đồ phổ). Theo quy định, trong thực tế không cần thiết phải phân tích tất cả các thành phần. Thông thường, các thành phần tần số thấp, trung bình và cao được chọn.

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. Kết quả hàm WaveletScalogram[]
Wolfram Mathematica trong Địa vật lý

Ngôn ngữ Wolfram sử dụng chức năng chuyển đổi wavelet Liên tụcWaveletTransform[]. Và việc áp dụng hàm này cho toàn bộ tập hợp dấu vết sẽ được thực hiện bằng hàm Bàn[]. Ở đây điều đáng chú ý là một trong những điểm mạnh của Wolfram Mathematica - khả năng sử dụng song song Bảng song song[]. Trong ví dụ trên không cần song song hóa - khối lượng dữ liệu không lớn, nhưng khi làm việc với các tập dữ liệu thử nghiệm chứa hàng trăm nghìn dấu vết thì đây là điều cần thiết.

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

Sau khi áp dụng chức năng Liên tụcWaveletTransform[] Tập dữ liệu mới xuất hiện tương ứng với tần số đã chọn. Trong ví dụ trên, các tần số này là: 38Hz, 33Hz, 27Hz. Việc lựa chọn tần số thường được thực hiện trên cơ sở thử nghiệm - họ thu được các bản đồ hiệu quả cho các kết hợp tần số khác nhau và chọn tần số có nhiều thông tin nhất theo quan điểm của nhà địa chất.

Nếu bạn cần chia sẻ kết quả với đồng nghiệp hoặc cung cấp cho khách hàng, bạn có thể sử dụng chức năng SEGYExport[] của gói 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];

Với ba trong số các khối này (các thành phần tần số thấp, tần số trung bình và tần số cao), việc trộn RGB thường được sử dụng để trực quan hóa dữ liệu với nhau. Mỗi thành phần được gán màu riêng - đỏ, lục, lam. Trong Wolfram Mathematica, điều này có thể được thực hiện bằng hàm Kết hợp màu sắc[].

Kết quả là có được những hình ảnh từ đó có thể giải thích địa chất. Các đoạn uốn khúc được ghi lại trên mặt cắt giúp có thể phân định các kênh nhạt, nhiều khả năng là các bể chứa và chứa trữ lượng dầu. Việc tìm kiếm và phân tích các điểm tương tự hiện đại của một hệ thống sông như vậy cho phép chúng ta xác định những phần hứa hẹn nhất của các đoạn uốn khúc. Bản thân các kênh này được đặc trưng bởi các lớp sa thạch dày được chọn lọc kỹ càng và là nơi chứa dầu tốt. Các khu vực bên ngoài các dị thường "ren" tương tự như trầm tích vùng ngập lũ hiện đại. Trầm tích vùng ngập chủ yếu được thể hiện bằng đá sét và việc khoan vào các khu vực này sẽ không hiệu quả.

Lát RGB của khối dữ liệu. Ở trung tâm (hơi chếch về bên trái của trung tâm), bạn có thể theo dõi dòng sông uốn khúc.
Wolfram Mathematica trong Địa vật lý
Lát RGB của khối dữ liệu. Ở phía bên trái, bạn có thể theo dõi dòng sông uốn khúc.
Wolfram Mathematica trong Địa vật lý

Trong một số trường hợp, chất lượng dữ liệu địa chấn cho phép hình ảnh rõ ràng hơn đáng kể. Điều này phụ thuộc vào phương pháp làm việc tại hiện trường, thiết bị được sử dụng bởi thuật toán giảm tiếng ồn. Trong những trường hợp như vậy, không chỉ có thể nhìn thấy các mảnh của hệ thống sông mà còn có thể nhìn thấy toàn bộ các dòng sông cổ mở rộng.

Trộn RGB của ba thành phần của khối dữ liệu địa chấn (lát cắt ngang). Độ sâu khoảng 2 km.
Wolfram Mathematica trong Địa vật lý
Hình ảnh vệ tinh của sông Volga gần Saratov
Wolfram Mathematica trong Địa vật lý

Kết luận

Wolfram Mathematica cho phép bạn phân tích dữ liệu địa chấn và giải các bài toán ứng dụng liên quan đến thăm dò khoáng sản và gói GeologyIO giúp quá trình này trở nên thuận tiện hơn. Cấu trúc của dữ liệu địa chấn là sử dụng các phương pháp có sẵn để tăng tốc độ tính toán (Bảng song song[], ParallelDo[],...) rất hiệu quả và cho phép bạn xử lý lượng lớn dữ liệu. Điều này phần lớn được hỗ trợ bởi các tính năng lưu trữ dữ liệu của gói GeologyIO. Nhân tiện, gói này không chỉ có thể được sử dụng trong lĩnh vực thăm dò địa chấn ứng dụng. Hầu hết các loại dữ liệu giống nhau được sử dụng trong radar xuyên đất và địa chấn. Nếu bạn có đề xuất về cách cải thiện kết quả, thuật toán phân tích tín hiệu nào từ kho Wolfram Mathematica có thể áp dụng cho dữ liệu đó hoặc nếu bạn có ý kiến ​​phê bình, vui lòng để lại phản hồi bình luận.

Nguồn: www.habr.com

Thêm một lời nhận xét