Pemodelan GPR

Georadar (perangkat radio-teknis suara bawah permukaan, GPR, Ground Penetrating Radar), yang saat ini digunakan secara luas - dari memetakan lubang kelinci dan mempelajari kadal hingga mencari tambang , tetap menjadi kesenangan yang agak mahal.

gambar

Layar GPR (bingkai dari acara TV Inggris "Command of the Time")

Tetapi dimungkinkan untuk mengevaluasi kemampuannya dan mempelajari berbagai aspek interaksi medan elektromagnetik georadar dengan lingkungan tanpa memperoleh / menyewa perangkat "besi". Paket gprMax ( gpr - dari singkatan GPR, Max - huruf awal dari nama James Clerk Maxwell, yang meletakkan dasar elektrodinamika), didistribusikan di bawah lisensi GNU GPL v3, akan membantu kami.
Para penulis proyek ini, dimulai pada tahun 1996, adalah Craig Warren dari University of Northumbria dan Antonis Giannopoulos dari University of Edinburgh. Paket ini awalnya dikembangkan di C dan kemudian sepenuhnya ditulis ulang dalam kombinasi Python 3 / Cython.

gambar

Instalasi paket memerlukan kompiler terinstal yang mendukung OpenMP (Microsoft Visual C ++ 2015 Build Tools (versi ini disarankan!) Untuk Windows / gcc untuk Linux), perpustakaan NumPy, dan kompiler Cython. Setelah mengunduh dari repositori di GitHub dan membongkar kode sumber proyek, buka folder root dan jalankan perintah:

python setup.py build python setup.py install 

Sebagai "quick start", kami mempertimbangkan untuk bekerja dengan paket menggunakan contoh dua dimensi sederhana - antena transmisi T dari radar berdenyut (impuls GPR) memancarkan pulsa elektromagnetik, bagian dari energi yang secara langsung mencapai antena penerima R dalam bentuk gelombang langsung (DW - gelombang langsung), dan beberapa penetrasi melalui pasir, itu tercermin dari permukaan silinder penghantar dan mencapai antena penerima dalam bentuk gelombang pantul (RW - gelombang pantulan):

gambar

Masukkan format file
Buat folder model di folder root proyek, di mana kita menempatkan file teks hello.in yang berisi perintah untuk melakukan simulasi (perintah berikut sesuai dengan versi proyek saat ini (ketiga)).

Setiap tim memiliki formulir:

 #: _1 _2 _3 ... 

Hanya satu perintah yang dapat ditulis pada satu baris, dan karakter pertama dari baris yang berisi perintah tersebut harus #.

Perintah dapat disertai dengan komentar:

 ## 

Urutan perintah penting untuk perintah untuk membangun objek - perintah tersebut dijalankan sesuai urutan yang muncul dalam file input.

Bentuk pulsa

Sebuah pulsa elektromagnetik yang dipancarkan oleh georadar berlangsung beberapa fraksi nanodetik, apalagi, tiga bentuk pulsa yang paling sering digunakan:

gambar

  1. satu periode gelombang sinus (sinus)
  2. Gaussian momentum (gaussian)
  3. Topi Meksiko (ricker) sebanding dengan turunan kedua dari fungsi Gaussian, bentuk kurva dari impuls tersebut menyerupai sombrero (bentuk impuls ini digunakan oleh ahli geofisika Amerika Norman Ricker pada tahun 1953 untuk mempelajari sinyal seismik)

Sebagai contoh kami, kami memilih pulsa Gaussian (jenis pulsa - gaussian) dengan frekuensi pusat fc=1GHz=1 cdot109Hzdidefinisikan oleh perintah:

 #waveform: gaussian 1 1e9 pulse 

(1 - amplitudo pulsa bersyarat, label pulsa - pulsa)

Dalam hal ini, momentum yang digunakan dalam simulasi dijelaskan oleh ekspresi:

W (t) = e ^ {- 2 \ cdot {\ pi} ^ 2 \ cdot {f_c} ^ 2 {(t- {1 \ over {f_c}}) ^ 2}


Model lingkungan dan sistem koordinat

Dalam pemodelan 2D, area yang diteliti dibagi menjadi sel-sel dengan ukuran tertentu, dan sistem koordinat model terlihat seperti ini - sumbu X dan Y membentuk bidang yang dihitung (dengan lebar wdan tinggi h), panjang model sepanjang sumbu Z memiliki nilai yang sama dengan langkah pengambilan sampel  Delta.

gambar

Saat memilih langkah pengambilan sampel, Anda dapat mengikuti aturan praktis - ukuran langkah tidak boleh melebihi sepersepuluh dari panjang gelombang terkecil yang dipelajari dalam model ("10 sel per panjang gelombang"):

 Delta le0,1 cdot lambdamin


Untuk menentukan panjang gelombang, kita perlu mengetahui frekuensi maksimum yang diperhitungkan dalam spektrum sinyal yang dipancarkan dan kecepatan gelombang dalam medium yang sedang dipertimbangkan.

Kecepatan rambat gelombang elektromagnetik dalam medium dengan konstanta dielektrik relatif  epsilonr, dinyatakan dalam sentimeter per nanodetik - satuan kecepatan yang diadopsi dalam radar ditentukan oleh ekspresi:

v=30 over sqrt epsilonr


Panjang gelombang dalam sentimeter ditentukan oleh ekspresi:

 lambda=v overf


( f- frekuensi dalam GHz).
Untuk menampilkan bentuk pulsa Gaussian dan spektrumnya, Anda dapat menggunakan perintah:

 python -m tools.plot_source_wave gaussian 1 1e9 5e-9 1e-12 -fft 

(tipe gaussian - pulsa, amplitudo 1 - pulsa, frekuensi 1e9 - pusat (1 GHz), durasi tampilan pulsa 5e-9 - (5 ns), 1e-12 - langkah waktu (1 ps))

gambar

Menurut spektrum pulsa Gaussian dengan fs=1 GHztentukan pada frekuensi -40 dB f sekitar3 GHz.
Dalam contoh ini, media di mana objek yang diselidiki berada, kami memilih pasir kering dengan permisivitas relatif  epsilonr=3.
Temukan kecepatan rambat gelombang elektromagnetik di pasir:

v=30 over sqrt3=17,3 cm/ns


Tentukan panjang gelombang di pasir:

 lambda=v overf=17.3 over3=5.8cm=58mm


Berdasarkan ini, kami memilih langkah yang sama untuk semua sumbu (  Delta= Deltax= Deltay= Deltaz) dan sama dengan 2 mm = 0,002 m untuk alasan kenyamanan (jumlah langkah integer menjadi 1 cm):

 #dx_dy_dz: 0.002 0.002 0.002 

Batasi area yang disimulasikan menjadi persegi panjang lebar wsama dengan 80 cm = 0,8 m dan tinggi hsama dengan 60 cm = 0,6 m:

 #domain: 0.60 0.60 0.002 

(untuk model dua dimensi, diperlukan untuk menunjukkan ketebalan yang sama dengan satu langkah (0,002))

Ukuran area simulasi dan ukuran langkah spasial menentukan jumlah sel model dan, karenanya, persyaratan memori komputer.

Kami menggambarkan pasir dengan konduktivitas spesifik  sigma=0,01  cm/mdan konstanta dielektrik relatif  epsilonr=3perintah:

 #material: 3 0.01 1 0 sand 

(1 sesuai dengan permeabilitas magnetik relatif  mursama dengan kesatuan (tidak ada sifat magnetik), 0 - tidak ada kehilangan magnetik, dan label pasir dari bahan ini).

Isi pasir dengan sebagian besar area simulasi (dari y = 0 hingga y = 38 cm = 0,38 m):

 #box: 0 0 0 0.80 0.38 0.002 sand 

(0 0 0 - koordinat sudut kiri bawah, 0,80 0,38 0,002 - koordinat sudut kanan atas (0,002 - langkah pengambilan sampel))
Sisanya adalah ruang bebas (label free_space), hampir setara di properti udara (  epsilonr=1,  mur=1,  sigma=0)
Batas-batas area simulasi disajikan sebagai Kondisi Batas Menyerap (ABC).

Sebagai target, kami memilih silinder dari konduktor yang ideal (radiasi elektromagnetik yang sepenuhnya mencerminkan) dengan jari-jari 6 cm = 0,06 m dengan pusat yang terletak pada titik dengan koordinat x = 25 cm = 0,25 m dan y = 10 cm = 0,1 m:

 #cylinder: 0.250 0.1 0 0.250 0.1 0.002 0.06 pec 

(Pec adalah bahan yang konduktif sempurna)

Antena

GPR yang disimulasikan dilengkapi dengan dua antena - pemancar dan penerima.
Dalam studi kasus kami, bayangkan antena pemancar dengan dipol Hertz yang panjangnya sama dengan langkah pengambilan sampel (dalam kasus tiga dimensi, Anda dapat memilih antena dari perpustakaan yang luas) berbaring di pasir (bekerja dalam kontak dengan media yang diselidiki) pada jarak 5 cm ke kiri tengah wilayah (x = 35 cm = 0,35 m, y = 38 cm = 0,38 m):

 #hertzian_dipole: z 0.35 0.380 0.0 pulse 

(z adalah sumbu polarisasi dipol (untuk kasus dua dimensi (mode 2D TMz) hanya z yang valid), pulsa adalah label bentuk pulsa yang dipancarkan oleh antena)

Antena penerima biasanya terletak pada jarak konstan kecil dari penerima, yang disebut pangkalan unit antena (opsi ini untuk posisi relatif antena disebut "common-offset"). Sebagai alas, pilih jarak 10 cm, sehingga koordinat horizontal adalah 35 + 10 = 45 cm = 0,45 m (5 cm di sebelah kanan tengah wilayah):

 #rx: 0.45 0.38 0.0 

Interval simulasi

Pilihan jendela waktu untuk pemodelan ditentukan sehingga sinyal yang dipantulkan dari target memiliki waktu untuk mencapai antena penerima.

Kami menentukan perkiraan waktu yang dibutuhkan oleh sinyal dalam case yang dipertimbangkan, mengambil jarak dari antena ke target h=18  cm:
t approx2 cdoth overv=2 cdot18 lebihdari17.3=2.1  ns
Mengingat bahwa bagian atas pulsa Gaussian dari radar dengan frekuensi pusat 1 GHz bergeser relatif ke awal sumbu waktu sebesar 1 ns, kami memilih jendela waktu 5 nanodetik:

 #time_window: 5e-9 

Pemodelan

Dengan demikian, isi file input adalah sebagai berikut:

hello.in
 #domain: 0.80 0.60 0.002 #dx_dy_dz: 0.002 0.002 0.002 #time_window: 5e-9 #material: 3 0.01 1 0 sand #waveform: gaussian 1 1e9 pulse #hertzian_dipole: z 0.35 0.380 0.0 pulse #rx: 0.45 0.38 0.0 #box: 0 0 0 0.80 0.38 0.002 sand #cylinder: 0.40 0.1 0 0.40 0.1 0.002 0.06 pec 


Kami memulai proses pemodelan:

 python -m gprMax models\hello.in 

Untuk melakukan simulasi, metode waktu-domain waktu-terbatas (FDTD, domain-waktu-terbatas) digunakan (algoritma dasar metode ini diusulkan oleh Kane Yee), setelah itu sel-sel ke mana model dibagi disebut sel Yee . Solusi numerik diperoleh dalam domain waktu dengan menyelesaikan persamaan Maxwell untuk setiap sel.

Dalam kasus dua dimensi (mode 2D TMz), hanya komponen yang dihitung Ezmedan listrik dan komponen Hxdan Hymedan magnet.

Jika jumlah memori yang tersedia terlampaui, pesan tentang kurangnya memori dikeluarkan untuk melakukan simulasi:

gambar

Jika ada objek di luar ruang lingkup simulasi, pesan kesalahan ditampilkan:

gambar

Untuk melakukan simulasi dengan model yang dijelaskan, hanya butuh sekitar 56 MB RAM (jika Anda mengurangi langkah setengah hingga 1 mm - persyaratan memori meningkat menjadi 99 MB).

Setelah simulasi selesai, file hello.out muncul di folder model , berisi hasil simulasi dalam format HDF5 , yang dirancang khusus untuk menyimpan data numerik.

Membangun jalur

Untuk memvisualisasikan hasil, kami membuat jejak:

 python -m tools.plot_Ascan models\hello.out 

Setiap trek (pemindaian A) yang disajikan dalam jendela yang terbuka menampilkan grafik waktu dari salah satu komponen medan elektromagnetik di lokasi antena penerima:

gambar

Gelombang langsung yang datang langsung dari antena pemancar (DW) dan gelombang yang dipantulkan dari target (RW) terlihat di jalur.

Sumbu horizontal waktu terkait dengan kedalaman target yang memantulkan sinyal melalui kecepatan gelombang elektromagnetik dalam substansi.

Tetapi apa yang terjadi jika Anda meletakkan perintah silinder di depan perintah kotak di file input?

gambar

Sinyal yang dipantulkan dari silinder menghilang - pasir menyerap silinder (ini adalah contoh pentingnya urutan di mana objek dibangun).

Bangunan profil

Tetapi yang lebih informatif adalah radarogram (radargram) - profil (B-scan), yang merupakan kombinasi dari banyak trek yang dibangun ketika memindahkan georadar di sepanjang arah yang diberikan - ini adalah prosedur untuk memindahkan troli dengan radar di sepanjang area yang diteliti.

Ubah deskripsi antena dengan memindahkannya ke awal sumbu horizontal:

 #hertzian_dipole: z 0.10 0.38 0.0 pulse #rx: 0.20 0.38 0.0 

Kami menetapkan langkah untuk memindahkan antena sama dengan 1 cm = 0,01 m:

 #src_steps: 0.01 0 0 #rx_steps: 0.01 0 0 

Dengan demikian, isi file input adalah sebagai berikut:

hello.in
 #domain: 0.80 0.60 0.002 #dx_dy_dz: 0.002 0.002 0.002 #time_window: 5e-9 #material: 3 0.01 1 0 sand #waveform: gaussian 1 1e9 pulse #hertzian_dipole: z 0.10 0.38 0.0 pulse #rx: 0.20 0.38 0.0 #src_steps: 0.01 0 0 #rx_steps: 0.01 0 0 #box: 0 0 0 0.80 0.38 0.002 sand #cylinder: 0.40 0.1 0 0.40 0.1 0.002 0.06 pec 


Jalankan simulasi dalam mode batch:

 python -m gprMax models\hello.in -n 50 

(50 adalah jumlah langkah radar bergerak).

Setelah memulai, simulasi dilakukan secara berurutan untuk 50 posisi GPR:

gambar

Setelah akhir simulasi, ada 50 file hello1.out ... hello50.out di folder model.
Gabungkan file-file ini ke file hello_merged.out dengan perintah:

 python -m tools.outputfiles_merge models/hello 

Bangun profil:

 python -m tools.plot_Bscan models\hello_merged.out Ez 

(Ez adalah komponen medan elektromagnetik yang digunakan untuk membuat profil - komponen yang secara langsung dikonversi menjadi tegangan)

gambar

Seperti yang Anda lihat, bilah horizontal yang disebabkan oleh gelombang langsung ditampilkan pada profil di atas, dan hiperbola khas yang disebabkan oleh gelombang yang dipantulkan dan menunjukkan perubahan jarak dari target ke GPR saat memindahkannya ditampilkan di bawah.

Legenda di sebelah kanan menunjukkan warna dan kekuatan bidang yang cocok. Ez(ditampilkan di trek):
merah - Ez>0
putih - Ez=0
biru - Ez<0
Dengan menganalisis profil semacam itu, kita dapat menarik kesimpulan tentang kedalaman, ukuran, dan bahkan bentuk target, dan jaringan saraf juga digunakan untuk ini.

gambar

Rute dan profil pada layar GPR (bingkai dari acara TV Inggris "Command of the Time")

Tetapi refleksi terjadi tidak hanya dari objek konduktif, tetapi juga pada batas dua lapisan dengan konstanta dielektrik yang berbeda.

Buat lapisan pasir kedua dengan konstanta dielektrik di bagian bawah model  epsilonr=9:

hello.in
 #domain: 0.8 0.6 0.002 #dx_dy_dz: 0.002 0.002 0.002 #time_window: 5e-9 #material: 3 0.01 1 0 sand_1 #material: 9 0.01 1 0 sand_2 #waveform: gaussian 1 1e9 pulse #hertzian_dipole: z 0.10 0.38 0.0 pulse #rx: 0.20 0.38 0.0 #src_steps: 0.01 0 0 #rx_steps: 0.01 0 0 #box: 0 0 0 0.80 0.38 0.002 sand_1 #box: 0 0 0 0.80 0.10 0.002 sand_2 


gambar

Seperti dapat dilihat, di bawah "jejak" gelombang langsung (DW), segmen linear gelombang (RW) tercermin dari antarmuka dua lapisan pasir muncul.

Di luar ruang lingkup contoh ini, fitur gprMax seperti pemodelan tiga dimensi, bentuk permukaan kompleks, model antena terperinci, yang menghitung dispersi gelombang elektromagnetik ... Selain itu, paket tersebut dapat digunakan tidak hanya untuk mensimulasikan operasi GPR, tetapi juga untuk mempelajari propagasi gelombang elektromagnetik di berbagai lingkungan, dan Mempercepat perhitungan menggunakan teknologi NVIDIA CUDA , yang memberikan peningkatan sepuluh kali lipat dalam kecepatan dibandingkan dengan komputasi paralel pada CPU menggunakan OpenMP. Untuk meningkatkan fleksibilitas pemodelan, Anda dapat menempatkan blok kode dalam Python di file input.

Beberapa contoh penggunaan paket gprMax:


Tautan yang bermanfaat:

situs resmi gprMax
Panduan pengguna GprMax
gprMax di YouTube

Source: https://habr.com/ru/post/id484946/


All Articles