Perbedaan terbatas pada domain dengan batas tidak beraturan


11

Adakah yang bisa membantu saya menemukan buku tentang solusi numerik (beda hingga dan metode Crank-Nicolson) dari persamaan Poisson dan difusi termasuk contoh-contoh pada geometri tidak beraturan, seperti domain yang terdiri dari area antara persegi panjang dan lingkaran (terutama buku atau tautan) pada contoh kode MATLAB dalam kasus ini)?


4
Untuk tujuan apa? Pengantar untuk siswa di awal? Dan apa geometri tidak beraturan dalam kasus Anda? Domain dengan sudut reentrant?
shuhalo

@ Martin: Saya biginner di bidang ini. Saya membutuhkannya untuk menyelesaikan persamaan poisson menggunakan metode berulang pada domain yang bentuknya tidak beraturan, terutama yang memiliki bundarium melengkung (mis. Domain melingkar 2-D)
liona

2
@Terakhir Harap edit judul dan isi pertanyaan untuk memperjelas apa yang Anda tanyakan. Tentukan jenis persamaan yang Anda pedulikan. Apakah Anda tertarik pada kebijaksanaan, pemecah aljabar, atau keduanya? Apakah Anda peduli tentang perbedaan hingga vs elemen hingga ( scicomp.stackexchange.com/questions/290/… )? Pertanyaan Anda saat ini sangat luas dan sulit ditemukan dalam pencarian.
Jed Brown

@JedBrown: Saya ingin menyelesaikan persamaan poisson menggunakan perbedaan hingga pada kondisi domain dan batas yang diberikan.
liona

terakhir, silakan edit isi pertanyaan Anda untuk memasukkan informasi di kedua komentar Anda hingga saat ini. Juga, seperti yang dikatakan JedBrown, harap juga edit judul pertanyaan Anda sehingga lebih mudah bagi orang untuk mencari pertanyaan Anda, dan lebih mudah bagi orang untuk menilai apakah pertanyaannya mungkin menarik atau berlaku untuk mereka.
Geoff Oxberry

Jawaban:


3

Kunci untuk membuat skema beda hingga bekerja pada geometri tidak beraturan adalah memiliki matriks 'bentuk' dengan nilai yang menunjukkan titik di luar, di dalam, dan pada batas domain. Katakanlah kita memiliki bentuk seperti ini:

000000000000011111111110001222222100000122221000000012210000000001100000000000000000

Domain sebenarnya (di mana semua entri non-nol dari matriks) membentuk segitiga yang mengarah ke bawah. Angka 1 mewakili titik pada batas, sedangkan angka 2 mewakili titik interior (tidak dikenal, biasanya). Kita dapat menetapkan nomor simpul sebagai berikut:

0000000000000-1-1-1-1-1-1-1-1-1-1000-1123456-100000-178910-10000000-11112-1000000000-1-100000000000000000

Di sini, -1 mewakili lokasi batas. Kemudian, Anda dapat menjalankan skema beda hingga atas semua entri dalam matriks, tetapi gunakan pernyataan if untuk mengeksekusi skema Anda hanya pada node interior (dari 1 hingga 12). Pendekatan ini bukan cara yang paling efisien untuk melakukannya, tetapi ini akan menyelesaikan pekerjaan ... jika Anda mampu menggunakan memori, mungkin lebih baik untuk menyimpan entri (i, j) dari semua node interior, dan menjalankan a for loop hanya pada node tersebut.

Untuk membuat geometri secara langsung, Anda dapat melakukan salah satu dari dua hal:
1. Buat gambar hitam putih secara manual, dan impor ke program Anda (paling mudah untuk diterapkan, tetapi tidak mungkin untuk memperbaiki resolusi spasial Anda, dx atau dy).
2. Tulis kode yang akan membuat representasi diskrit dari bentuk dasar yang Anda inginkan untuk resolusi spasial apa pun yang Anda pilih (lebih sulit untuk diterapkan, tetapi lebih kuat untuk skema perbedaan hingga umum dari setiap resolusi spasial dx atau dy).

Jika Anda ingin mempelajari lebih lanjut tentang cara melakukan ini, Anda mungkin ingin mempertimbangkan untuk menonton video ini:
Kursus Grafik Komputer NPTEL, Video 2 (Grafik Raster)
Kursus Grafik Komputer NPTEL, Video 3 (Grafik Raster, lanjutan)
Lihat, dan beri tahu saya jika ini menjawab pertanyaan Anda.


Apakah ada cara agar saya dapat memperbaiki format nilai matriks yang saya posting ... tidak terlihat seperti yang saya inginkan
Paul

Ya, Anda bisa menggunakan MathJax dan meletakkannya di lingkungan array.
David Ketcheson

Anda benar ... ini terlihat jauh lebih baik dengan MathJax. Terima kasih atas sarannya :)
Paul

@ Paul: Terima kasih atas solusi sederhana Anda! Namun Bagaimana saya bisa menghitung titik batas untuk mendapatkan titik dalam untuk wilayah tertutup antara persegi panjang dan segitiga atau (wilayah tertutup antara persegi panjang dan lingkaran)?
liona

Apakah Anda memiliki gambar bentuk domain yang ingin Anda modelkan? Selalu lebih mudah untuk melihatnya, daripada menggambarkannya hanya dengan kata-kata :)
Paul


2

Saya akan menyarankan makalah berikut:

Metode beda hingga pada grid acak yang tidak beraturan dan penerapannya dalam mekanika terapan - Liszka Orkisz

http://www.sciencedirect.com/science/article/pii/0045794980901492

Teknik beda hingga untuk grid variabel - Jensen

http://www.mendeley.com/research/finite-difference-techniques-variable-grids-7/

Memecahkan persamaan parabola dan hiperbolik dengan metode beda hingga umum - Benito Urena Gavete

http://www.sciencedirect.com/science/article/pii/S037704270600687X

Pada dasarnya mereka menggambarkan bagaimana menghasilkan stencial beda hingga untuk jerat nonstruktur / tidak teratur. Saya tidak tahu buku apa pun yang membahas topik khusus ini secara mendalam, tetapi buku Randall LeVeque mungkin memiliki sesuatu tentangnya. Berikut adalah tautan untuk halaman web penulis, yang berisi beberapa file m Matlab untuk perbedaan yang terbatas.

http://faculty.washington.edu/rjl/booksnotes.html


1

Saya berpikir bahwa membuat mesh sesuai dengan batas dan karenanya penyimpangan dari mesh persegi standar fdm mungkin merupakan solusi tetapi tetap memiliki implikasi serius terhadap penggunaan algoritma orde tinggi - sulit jika bukan tidak mungkin. Saya telah mengambil pendekatan yang berbeda, yaitu menjaga kotak persegi panjang di atas geometri batas melengkung, membuat algoritma orde tinggi, menyisipkan dari batas untuk mengatur nilai "di luar" geometri, dan hanya itu yang ada. kami telah mencapai ketepatan dalam geometri uji bola konsentris ~ 1e-12 dengan metode ini menggunakan algoritma order 8. jika Anda akan google "Edwards, batas melengkung fdm" Anda akan menemukan referensi untuk pekerjaan saya.


0

Apakah mungkin bagi Anda untuk menggunakan penyempurnaan mesh adaptif? Pencarian Google cepat akan menghasilkan banyak tautan. AMR digunakan, misalnya, dalam dinamika fluida untuk memodelkan aliran melewati bentuk rumit; serta banyak aplikasi lainnya. Berikut adalah contoh penyelesaian sistem hukum konservasi hiperbolik yang muncul dalam pembentukan bintang. Geometrinya sangat kompleks. Bagian pertama dari makalah ini adalah tutorial yang bagus. http://www.mpa-garching.mpg.de/lectures/ADSEM/SS05_Homann.pdf


0

Pertanyaan ini membuka sekaleng cacing, seperti yang dibuktikan dengan berbagai jawaban yang diberikan. Banyak dari ini memberikan poin yang bermanfaat, tetapi jawaban yang sangat membantu akan mempertimbangkan pertimbangan yang belum diajukan. Selain membuat spesifik sifat geometri yang tepat, akan sangat berharga untuk mengetahui a) Akurasi seperti apa yang Anda butuhkan? b) Apakah Anda ingin tetap dengan jerat persegi biasa? c) Seberapa banyak Anda bersedia berinvestasi dalam mempelajari teknologi baru?

Jerat kotak biasa membuatnya sulit untuk mendefinisikan batas secara tepat, sehingga banyak orang berubah menjadi jeruji sesuai. Menyesuaikan jerat dengan konektivitas persegi panjang mengalami kesulitan untuk menyesuaikan dengan bentuk yang sangat tidak teratur, sehingga banyak orang mengadopsi jerat tidak terstruktur (segitiga / tetraheda atau lebih umum).

Untuk setiap data yang tidak memiliki struktur kartesius yang teratur, sulit untuk mengevaluasi turunan, sehingga banyak orang merumuskan kembali masalah mereka dalam bentuk integral, yang mengarah pada metode elemen hingga / volume terbatas (yang DAPAT mencapai tingkat tinggi). Ada metode bebas mesh. Ada metode elemen batas. Ada metode batas terendam. Ada metode cut-cell. Seringkali ada metode yang populer di beberapa aplikasi tetapi tidak pada yang lain, karena alasan yang sebagian besar historis.

Semoga Anda beruntung dalam menavigasi labirin ini, tetapi Anda harus menyadari bahwa tidak ada solusi satu ukuran untuk semua untuk pertanyaan Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.