Metode penyelesaian sistem difusi-adveksi non-linear di luar Newton-Raphson?


9

Saya sedang mengerjakan sebuah proyek di mana saya memiliki dua domain digabungkan adv-diff melalui istilah sumber masing-masing (satu domain menambah massa, yang lain mengurangi massa). Untuk singkatnya, saya memodelkan mereka dalam kondisi stabil. Persamaannya adalah persamaan transport adveksi-difusi standar Anda dengan istilah sumber terlihat seperti ini:

c1t=0=F1+Q1(c1,c2)c2t=0=F2+Q2(c1,c2)

Di mana Fi adalah fluks difusif dan progresif untuk spesies i , dan Qi adalah istilah sumber untuk spesies i .

Saya telah mampu menulis sebuah solver untuk masalah saya menggunakan metode Newton-Raphson, dan telah sepenuhnya menggabungkan dua domain menggunakan matriks massa blok, yaitu:

Fcoupled=[A100A2][c1,ic2,i]xi[b1(c1,i,c2,i)b2(c1,i,c2,i)]

Istilah digunakan untuk menentukan matriks Jacobian dan memperbarui c 1 dan c 2 :Fcoupledc1c2

J(xi)[xi+1xi]=Fcoupled

atau

xi+1=xi(J(xi))1Fcoupled

Untuk mempercepat, saya tidak menghitung Jacobian setiap iterasi - saat ini saya bermain dengan setiap lima iterasi, yang tampaknya bekerja cukup baik dan menjaga solusinya tetap.

Masalahnya adalah: Saya akan pindah ke sistem yang lebih besar di mana kedua domain dalam 2D ​​/ 2.5D, dan menghitung matriks Jacobian akan dengan cepat menghabiskan sumber daya komputer saya yang tersedia. Saya sedang membangun model ini untuk digunakan dalam pengaturan optimasi nanti, jadi saya juga tidak bisa berada di belakang kemudi di setiap iterasi yang mengatur faktor redaman, dll.

Apakah saya benar mencari di tempat lain untuk algoritma yang lebih kuat dan untuk masalah saya, atau apakah ini sebagus yang didapat? Saya telah melihat sedikit ke dalam Kuasi-linierisasi, tetapi saya tidak yakin bagaimana penerapannya pada sistem saya.

Apakah ada algoritma licin lain yang mungkin saya lewatkan yang dapat memecahkan sistem persamaan nonlinier tanpa menggunakan kembali menghitung Jacobian sebagai offen?


2
Sudahkah Anda mempertimbangkan pemecah iteratif seperti AMG - metode multigrid aljabar. Anda mungkin perlu membuat prekondisi yang bagus yang berbasis fisika.
NameRakes

1
Bisakah Anda mendapatkan akses ke cluster komputasi di mana Anda dapat mendistribusikan formasi dan solusi Jacobian menggunakan paket aljabar linier paralel?
Bill Barth

Tidak, saya belum mempertimbangkan AMG, saya pikir itu hanya untuk sistem simetris dan tidak dapat digunakan dalam masalah yang didominasi konveksi. Saya akan melihat lagi dalam literatur untuk AMG.
cbcoutinho

Komputasi paralel sulit karena proyek ini sedang dikembangkan sebagai aplikasi mandiri untuk kolega yang tidak memiliki akses ke sumber daya semacam itu. Saya mempertimbangkan untuk mengembangkan mpi ke dalam proyek ini untuk kepentingan saya sendiri, tetapi itu akan meningkatkan penghalang bagi orang lain, yang merupakan titik
utamanya

3
Mengapa menghitung orang Jacobian begitu bermasalah? Jika Anda menggunakan perbedaan / volume / elemen hingga, ia harus memiliki bagian yang jarang yang selalu sama dan bagian diagonal yang berubah tetapi sepele untuk dihitung.
David Ketcheson

Jawaban:


4

Saya mengasumsikan batasan dalam 2D ​​dan 3D adalah menyimpan Jacobian.

Salah satu opsi adalah untuk mempertahankan turunan waktu dan menggunakan "pseudo" waktu-eksplisit untuk beralih ke kondisi mapan. Biasanya nomor CFL yang Anda butuhkan untuk sistem difusi dan reaktif mungkin menjadi sangat kecil. Anda dapat mencoba multigrid nonlinier (ini juga disebut Multimrid Penyimpanan Penuh Aproksimasi) dan loncatan waktu lokal untuk mempercepat konvergensi.

DF(un)δun=F(un)
DF
DF(un)δuF(un+ϵδuδu)F(un)ϵ.
AAxx

Sekarang dengan nilai yang tepat dari (biasanya sekitar untuk pelampung presisi ganda) Anda dapat menjalankan loop Newton tanpa pernah menghitung atau menyimpan Jacobian. Saya tahu pasti bahwa teknik ini digunakan untuk menyelesaikan beberapa kasus non-sepele dalam dinamika fluida komputasi. Perhatikan, bagaimanapun, bahwa jumlah evaluasi fungsi akan lebih dari pada teknik penyimpanan-matriks, daripada membutuhkan produk matriks-vektor.ϵ107F

Hal lain yang perlu diperhatikan adalah bahwa jika sistem Anda sedemikian rupa sehingga diperlukan prekondisi yang kuat (mis. Jacobi atau block-Jacobi tidak akan mencukupi), Anda mungkin ingin mencoba menggunakan metode yang disebutkan di atas sebagai lebih lancar dalam skema multigrid. Jika Anda ingin mencoba preconditioner point- atau block-Jacobi, Anda bisa menghitung dan menyimpan hanya elemen diagonal atau blok diagonal Jacobian, yang tidak banyak. Saya juga akan menyebutkan bahwa prekondisi Gauss-Seidel atau SSOR dimungkinkan untuk diterapkan tanpa secara eksplisit menyimpan Jacobian. Makalah ini menjelaskan implementasi GMRES bebas matriks yang dikondisikan dengan Gauss-Seidel simetris bebas matriks dalam konteks dinamika fluida komputasi.


1

Dari pengalaman saya dengan persamaan Navier-Stokes, seseorang dapat melakukannya dengan sangat baik tanpa skema yang sepenuhnya implisit.

Jika Anda hanya ingin skema numerik cepat untuk solusi evolusi waktu, lihat skema IMEX (eksplisit-eksplisit); lihat misalnya makalah ini oleh Ascher, Ruuth, Spiteri Implisit-Eksplisit Runge-Kutta Metode untuk Persamaan Diferensial Parsial-Tergantung-Waktu .

Anda bahkan dapat mencoba hanya menggunakan skema integrasi waktu orde tinggi yang eksplisit dengan kontrol ukuran langkah (seperti milik Matlab ODE45). Namun, Anda mungkin mengalami masalah karena kekakuan sistem Anda, yang berasal dari bagian difusif. Untungnya, bagian difusif adalah linier sehingga dapat diperlakukan secara implisit (yang merupakan gagasan skema IMEX).


0

Pada awalnya saya dianggap hanya menambahkan komentar, tetapi ruang tidak cukup, jadi saya menambahkan beberapa deskripsi singkat tentang pengalaman saya dengan topik ini.

Pertama, melihat notasi Saya tidak melihat form coupled, saya kira dan bergantung pada dan . Apalagi jika dan adalah representasi matriks dari perkiraan dan maka mereka tidak hanya bergantung pada , tetapi juga pada nilai tetangga, tetapi ini mungkin hanya pemahaman yang salah tentang notasi Anda .Fcoupledb1b2c1,ic2,iA1A2F1F2ci

Sebagai komentar umum saya ingin menambahkan bahwa menggunakan Jacobian analitis tampaknya menjadi satu-satunya cara untuk mendapatkan konvergensi kuadratik dari solver iteratif nonlinier (yaitu solver Newton-Raphson dalam kasus Anda). Apakah Anda mengamatinya dalam kasus Anda? Ini sangat penting, karena kalau tidak, mungkin ada beberapa kesalahpahaman dalam perkiraan Anda (linierisasi).

Dalam semua aplikasi yang saya terlibat (beberapa di antaranya termasuk perhitungan skala besar) kami tidak pernah mengeluarkan masalah dengan konsumsi waktu merakit Jacobian, masalah yang paling memakan waktu selalu menerapkan pemecah linear. Jacobian analitik (jika tersedia) selalu dalam aplikasi yang saya kerjakan pada pilihan yang lebih disukai karena konvergensi kuadratik. Dalam beberapa kasus, pemecah nonlinier tersebut menghasilkan matriks yang menyebabkan masalah pada konvergensi pemecah linier iteratif, jadi kami mencoba menggunakan linearisasi yang lebih sederhana daripada Jacobian analitik untuk membantu pemecah linear. Pertukaran antara perilaku pemecah aljabar nonlinier dan linier tergantung pada linierisasi sistem aljabar nonlinier selalu rumit dan saya tidak bisa memberikan rekomendasi umum.

Tetapi Anda benar bahwa kelemahan (atau properti) Jacobian analitik untuk sistem PDE adalah bahwa ia menghasilkan sistem aljabar gabungan, jadi jika Anda memisahkan sistem tersebut dengan cara apa pun, misalnya memecahkan secara terpisah perkiraan masing-masing PDE dengan, katakanlah, pemisahan berulang metode, sekali lagi Anda kehilangan konvergensi kuadrat dari pemecah global. Tetapi setidaknya jika Anda menyelesaikan secara terpisah masing-masing PDE yang didiskritisasi (dipisahkan), Anda dapat kembali mempercepat solusi untuk masalah khusus ini dengan menggunakan metode Newton-Raphson.


Howdy @ Peter, Anda benar tentang kopling, saya telah mengedit persamaan utama untuk menunjukkan dan dan keduanya fungsi dan . Matriks dan dalam kasus ini adalah matriks kekakuan kedua sistem, yang dikembangkan menggunakan metode elemen hingga. Itu hanya fungsi dari koordinat node, dan bukan dari variabel state. dan adalah vektor, jadi mereka adalah fungsi dari vektor variabel keadaan, bukan hanya satu variabel. Saya menghitung Jacobian secara numerik menggunakan perbedaan hingga. Sejauh ini saya belum menyelidiki Jacobian analitik. b 2 c 1 c 2 A 1 A 2 F 1 F 2b1b2c1c2A1A2F1F2
cbcoutinho
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.