Tenang banyak wawasan yang bisa didapat dari pengalaman, saya hanya ingin tahu apakah ada yang melihat sesuatu yang mirip dengan ini sebelumnya. Plot menunjukkan kondisi awal (hijau) untuk persamaan advection-difusion, kemudian solusi pada iterasi 200 (biru) dan kemudian lagi pada iterasi 400 (merah).
Solusi dari persamaan advection-difusion meledak setelah beberapa iterasi. Angka Péclet , dan kondisi CFL terpenuhi, C ≈ 0,0015 , sehingga persamaannya harus stabil. Saya mengantisipasi saya memiliki bug dalam kode numerik.
Latar Belakang. Diskretisasi adalah perbedaan utama untuk istilah adveksi dan difusi. Saya percaya ini adalah urutan pertama adveksi dan urutan kedua untuk difusi. Saya telah menerapkan ini menggunakan pendekatan volume-terbatas (untuk pertama kalinya) di mana nilai-nilai koefisien (kecepatan dan koefisien difusi) pada permukaan sel ditemukan dengan interpolasi linier dari rata-rata sel. Saya menerapkan kondisi batas Robin di permukaan kiri dan kanan dan mengatur fluks pada batas menjadi nol.
Bagaimana Anda men-debug kode numerik Anda? Adakah yang pernah melihat adegan seperti ini sebelumnya, di mana tempat yang bagus untuk mulai mencari?
Memperbarui
- Ini adalah catatan gaya "buku lab" pribadi saya tentang penerapan metode volume hingga untuk persamaan advection-difusion, http://danieljfarrell.github.io/FVM/
- Kode sumber Python tersedia di sini, http://github.com/danieljfarrell/FVM.git
Memperbarui
Solusinya tidak bisa lebih sederhana! Saya baru saja membuat kesalahan tanda pada istilah difusi. Aneh, saya yakin saya belum memposting ini saya tidak akan menemukan kesalahan! Jika seseorang ingin berbagi kiat tentang cara men-debug kode numerik mereka, saya masih tertarik. Saya tidak punya metode, ini sedikit untung-untungan, saya terus mencoba hal-hal untuk mendapatkan petunjuk, tetapi proses ini bisa memakan waktu berminggu-minggu (kadang-kadang).
Buktikan itu bekerja ( NB bahwa dengan metode volume hingga semua yang perlu Anda lakukan untuk menghitung luas adalah penjumlahan dari lebar tinggi untuk semua sel, jika Anda menggunakan metode integrasi seperti numpy.trapz hasil Anda termasuk numerik kesalahan metode trapezium). Apa yang terjadi disini? Ada koefisien kecepatan dan difusi yang konstan tetapi dengan kondisi batas tertutup . Oleh karena itu pada batas kita melihat keseimbangan antara medan kecepatan yang mendorong ke kanan dan dorongan difusi ke kiri.
sumber
Jawaban:
Saya telah mengumpulkan beberapa pengalaman saya tentang debug kode numerik di sini: deal.II FAQ: debugging . Saya tidak tahu apakah itu akan membantu Anda dalam kasus khusus ini, tetapi mungkin pada orang lain.
sumber