Penggunaan optimal Strang splitting (untuk persamaan difusi reaksi)


9

Saya membuat pengamatan aneh sambil menghitung solusi untuk persamaan difusi reaksi 1D sederhana:

ta=2x2aab

tb=ab

tc=a

Nilai awal adalah konstan ( ), dan aku hanya tertarik terpisahkan atas dari ke ( ). Tujuan dari dan persamaan hanya untuk mengevaluasi integral ini.b ( 0 , x ) = b 0 a 0 1 1 0 a ( t , x ) d t c bb(0,x)=b0a0101a(t,x)dtctc=a

Saya menggunakan skema pemisahan Strang untuk penggandaan antara difusi dan reaksi (reaksi setengah langkah, kemudian difusi langkah penuh, dan kemudian lagi setengah langkah reaksi), skema Crank Nicholson untuk difusi, dan solusi analitis untuk reaksi ( termasuk persamaan ).tc=a

Karena satu langkah dari solusi analitis lebih dari faktor 3 lebih lambat dari satu langkah skema Crank Nicholson, saya mencoba membuat lebih dari satu langkah Crank Nicholson untuk setiap langkah reaksi. Saya berharap untuk bertahan dengan langkah yang lebih sedikit dari skema pemisahan Strang, sehingga saya akan lebih cepat secara keseluruhan.

Namun, efek sebaliknya dapat diamati, yaitu bahwa lebih banyak langkah untuk skema pemisahan Strang diperlukan jika lebih dari satu langkah Crank Nicholson digunakan. (Saya hanya peduli dengan akurasi integral atas , yang tampaknya konvergen lebih cepat dari itu sendiri.) Setelah bertanya-tanya untuk beberapa waktu, saya melihat bahwa efek yang sama juga terjadi untuk , dan saya bahkan mengerti mengapa untuk kasus ini. Intinya adalah bahwa jika saya membuat tepat satu langkah Crank Nicholson, maka skema keseluruhan berubah menjadi aturan trapesium (jika ).a b ( t , x ) = b 0 = 0 b ( t ) = 0aab(t,x)=b0=0b(t)=0

Jadi jika saya akan memperlakukan sebagai bagian dari langkah difusi, meningkatkan jumlah langkah Crank Nicholson (mungkin) tidak akan menyebabkan berkurangnya akurasi keseluruhan (seperti yang diamati). Tapi itu tampaknya mengalahkan tujuan menggunakan solusi analitis untuk bagian reaksi (non-linear dan berpotensi sangat kaku) dari sistem.tc=a

Jadi inilah pertanyaan saya: Apakah ada cara yang lebih baik untuk memperlakukan dalam konteks pemisahan Strang, daripada memperlakukannya sebagai bagian dari langkah reaksi, atau untuk memperlakukan itu sebagai bagian dari langkah difusi. Saya ingin menghindari "dipaksa" untuk menggunakan tepat satu langkah Crank Nicholson untuk difusi. (Misalnya dalam 3D, saya lebih suka menyelesaikan difusi secara analitik dengan FFT daripada menggunakan Crank Nicholson. Tentu saja saya juga bisa menggabungkan FFT dengan Crank Nicholson, jadi ini bukan masalah besar.)tc=a


Di people.maths.ox.ac.uk/dellar/OperatorLB.html , efek yang serupa tampaknya dijelaskan. Kesimpulannya adalah sangat penting untuk menggunakan Crank Nicholson alih-alih solusi yang tepat. Jadi mungkin jawaban untuk pertanyaan saya adalah tidak.
Thomas Klimpel

Tampaknya ada yang salah dengan persamaan Anda. tidak muncul dalam dua yang pertama membuat kopling satu arah dan artinya Anda dapat menghitung pada sebagai langkah pasca-pemrosesan. c tcct
Bill Barth

@ BillBarth Saya mengubah pertanyaan untuk memperjelas peran . Jadi hanyalah alat untuk menghitung . Tolong beri tahu saya jika Anda memiliki saran cara menghitung integral ini lebih akurat (daripada apa yang saya dapatkan dari kombinasi pemisahan Strang dan Crank Nicholson yang dijelaskan di atas), berpotensi menggunakan langkah pasca-pemrosesan. c 1 0 a ( t , x ) d tcc01a(t,x)dt
Thomas Klimpel

Ini sekarang sudah lama berlalu, tetapi apakah Anda menyadari bahwa sistem persamaan ini dapat ditulis sebagai PDE parabola dalam dengan istilah reaksi eksponensial? Saya kira saya ingin tahu apakah Anda benar-benar ingin menyelesaikan sistem 3-variabel ini daripada yang disederhanakan. c
Bill Barth

@BillBarth Saya akan tertarik untuk mempelajari bagaimana sistem ini dapat ditulis sebagai PDE parabola dengan istilah reaksi eksponensial. Kecepatan solusi model ini adalah faktor pembatas selama kalibrasi model (yang bisa memakan waktu beberapa jam), meskipun demikian akurasi yang digunakan sehubungan dengan integrasi waktu cukup jauh dari konvergensi penuh.
Thomas Klimpel

Jawaban:


6

Saya akan menulis ini sebagai jawaban walaupun tidak langsung menjawab pertanyaan.

Memasukkan persamaan kedua dan persamaan ketiga ke yang pertama, dan memasukkan yang ketiga ke yang kedua, bersama-sama memberikan: Menyusun ulang keduanya memberi: Sekarang, kita dapat mengintegrasikan keduanya sekaligus dalam , pergi ke persamaan pertama:

2ct2=2x2ct+btbt=(ct)b
t(ct2cx2b)=01b(bt)=ct
t
ct2cx2=b+A(x)
Dengan menggunakan persamaan ketiga, kita dapat mengekspresikan "konstan" integrasi sebagai . Persamaan kedua sedikit lebih rumit. Menulis ulang sedikit, kita memiliki: Ini mengarah ke solusi Atau eksponensial memberi: Dan, akhirnya, menghubungkan ini ke PDE untuk memberi A(x)=a02c0x2b0
0t1b(x,t)(b(x,t)t)dt=0tc(x,t)tdt
lnb(x,t)lnb0(x)=c(x)+c0(x)
lnbb0=c+c0
b=b0ec0c
c
ct2cx2=b0ec0c+A(x)

Mengganti dengan , atau menggunakan kondisi awal , persamaan ini menyederhanakan menjadi Sekarang, Anda harus dapat menemukan literatur yang cukup tentang cara terbaik untuk menyelesaikan persamaan ini. Saya tidak tahu apakah Crank-Nicholson adalah pilihan yang baik untuk istilah eksponensial, tetapi tampaknya masuk akal. Beberapa perawatan mungkin harus diambil untuk menjamin bahwa mana-mana atau solusi dapat meledak dengan cepat.c - c 0 c 0 ( x ) = 0 cccc0c0(x)=0c>c0

ct=2cx2+a0(1ec)b0
c>c0

Saya hanya berjalan melalui derivasi ini dua kali, jadi mungkin ada satu atau dua kesalahan di dalamnya, tetapi itu terasa tepat bagi saya. Jika mana-mana, maka ini jelas merupakan solusi yang tepat, dan memiliki aroma masuk akal sebaliknya.b0=0

Memecahkan ini sampai dan mengevaluasi akan memberi Anda jawaban yang Anda cari.c ( x , 1 )t=1c(x,1)


ca

Tidak masalah. Saya mengomel setelah pertukaran komentar awal kami. Saya harap ini membantu.
Bill Barth
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.