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.
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.
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):
Masukkan format fileBuat 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:
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 pulsaSebuah pulsa elektromagnetik yang dipancarkan oleh georadar berlangsung beberapa fraksi nanodetik, apalagi, tiga bentuk pulsa yang paling sering digunakan:

- satu periode gelombang sinus (sinus)
- Gaussian momentum (gaussian)
- 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
didefinisikan oleh perintah:
(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 koordinatDalam 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
dan tinggi
), panjang model sepanjang sumbu Z memiliki nilai yang sama dengan langkah pengambilan sampel
.
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"):
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
, dinyatakan dalam sentimeter per nanodetik - satuan kecepatan yang diadopsi dalam radar ditentukan oleh ekspresi:
Panjang gelombang dalam sentimeter ditentukan oleh ekspresi:
(
- 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))
Menurut spektrum pulsa Gaussian dengan
tentukan pada frekuensi -40 dB
.
Dalam contoh ini, media di mana objek yang diselidiki berada, kami memilih pasir kering dengan permisivitas relatif
.
Temukan kecepatan rambat gelombang elektromagnetik di pasir:
Tentukan panjang gelombang di pasir:
Berdasarkan ini, kami memilih langkah yang sama untuk semua sumbu (
) dan sama dengan 2 mm = 0,002 m untuk alasan kenyamanan (jumlah langkah integer menjadi 1 cm):
Batasi area yang disimulasikan menjadi persegi panjang lebar
sama dengan 80 cm = 0,8 m dan tinggi
sama dengan 60 cm = 0,6 m:
(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
dan konstanta dielektrik relatif
perintah:
(1 sesuai dengan permeabilitas magnetik relatif
sama 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):
(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 (
,
,
)
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:
(Pec adalah bahan yang konduktif sempurna)
AntenaGPR 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):
(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):
Interval simulasiPilihan 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
:
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:
PemodelanDengan demikian, isi file input adalah sebagai berikut:
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
medan listrik dan komponen
dan
medan magnet.
Jika jumlah memori yang tersedia terlampaui, pesan tentang kurangnya memori dikeluarkan untuk melakukan simulasi:
Jika ada objek di luar ruang lingkup simulasi, pesan kesalahan ditampilkan:
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 jalurUntuk 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:
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?
Sinyal yang dipantulkan dari silinder menghilang - pasir menyerap silinder (ini adalah contoh pentingnya urutan di mana objek dibangun).
Bangunan profilTetapi 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:
Kami menetapkan langkah untuk memindahkan antena sama dengan 1 cm = 0,01 m:
Dengan demikian, isi file input adalah sebagai berikut:
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:
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)
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.
(ditampilkan di trek):
merah -
putih -
biru -
Dengan menganalisis profil semacam itu, kita dapat menarik kesimpulan tentang kedalaman, ukuran, dan bahkan bentuk target, dan
jaringan saraf juga digunakan untuk ini.
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
:
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 gprMaxPanduan pengguna GprMaxgprMax di YouTube