Saya tidak begitu akrab dengan skema diskritisasi umum untuk PDE. Saya tahu bahwa Crank-Nicolson adalah skema populer untuk mendiskritisasi persamaan difusi. Apakah juga pilihan yang baik untuk masa adveksi?
Saya menarik dalam menyelesaikan persamaan Reaksi-Difusi-Adveksi ,
di mana adalah koefisien difusi zat dan adalah kecepatan.
Untuk aplikasi spesifik saya, persamaannya dapat ditulis dalam bentuk,
Berikut adalah skema Crank-Nicolson yang telah saya terapkan,
Perhatikan persyaratan dan . Ini memungkinkan skema untuk bergerak di antara:
- Crank-Niscolson,
- sepenuhnya tersirat
- sepenuhnya eksplisit
Nilai-nilainya bisa berbeda, yang memungkinkan istilah difusi menjadi Crank-Nicolson dan istilah adveksi menjadi sesuatu yang lain. Apa pendekatan yang paling stabil, apa yang akan Anda rekomendasikan?
sumber
Secara umum, Anda akan ingin menggunakan metode implisit untuk persamaan parabola (bagian difusi) - skema eksplisit untuk PDE parabola perlu memiliki catatan waktu yang sangat singkat untuk menjadi stabil. Sebaliknya, untuk bagian hiperbolik (adveksi) Anda akan menginginkan metode eksplisit karena lebih murah dan tidak mengganggu simetri sistem linear yang harus Anda selesaikan dengan menggunakan skema implisit untuk difusi. Dalam hal ini, Anda ingin menghindari perbedaan terpusat seperti dan beralih ke perbedaan satu sisi untuk alasan stabilitas.( u j - u j - 1 ) / Δ t(uj+1−uj−1)/2Δt (uj−uj−1)/Δt
Saya sarankan Anda melihat buku Randy Leveque atau buku Dale Durran untuk "analisis stabilitas von Neumann". Ini adalah pendekatan umum untuk memastikan stabilitas skema diskritisasi Anda, asalkan Anda memiliki kondisi batas berkala. (Ada juga artikel wiki yang bagus di sini .)
Ide dasarnya adalah mengasumsikan bahwa pendekatan diskrit Anda dapat dituliskan sejumlah gelombang bidang , di mana adalah bilangan gelombang dan frekuensi. Anda menjejalkan gelombang pesawat ke perkiraan Anda ke PDE dan berdoa itu tidak meledak. Kita dapat menulis ulang gelombang pesawat sebagai dan kami ingin memastikan bahwa . k ω ξ n e i k j Δ x | ξ | ≤ 1ei(kjΔx−ωnΔt) k ω ξneikjΔx |ξ|≤1
Sebagai ilustrasi, perhatikan persamaan difusi biasa dengan pembedaan sepenuhnya implisit:
Jika kita mensubstitusi dalam gelombang bidang, kemudian bagi dengan dan , kita mendapatkan persamaane i k j Δ xξn eikjΔx
Bersihkan ini sedikit sekarang dan kami mendapatkan:
Ini selalu kurang dari satu, jadi Anda jelas. Coba terapkan ini untuk skema eksplisit, terpusat untuk persamaan advection:
dan melihat apa yang Anda dapatkan. (Ini akan memiliki bagian imajiner saat ini.) Anda akan menemukan bahwa , yang merupakan masa-masa yang menyedihkan. Oleh karena itu nasihat saya bahwa Anda tidak menggunakannya. Jika Anda bisa melakukan itu, maka Anda tidak akan kesulitan menemukan skema yang stabil untuk persamaan advection-difusion penuh.ξ |ξ|2>1
Yang mengatakan, saya akan menggunakan skema sepenuhnya implisit untuk bagian difusi. Ubah perbedaan di bagian menjadi jika dan jika dan pilih timestep sehingga . (Ini adalah kondisi Courant-Friedrichs-Lewy .) Ini hanya urutan pertama yang akurat, jadi Anda mungkin ingin mencari skema diskritisasi tingkat tinggi jika itu menyangkut Anda.uj−uj−1 v>0 uj−uj+1 v<0 VΔt/Δx≤1
sumber