Apa metode paling sederhana untuk menyelesaikan persamaan Navier-Stokes yang tidak bisa dimampatkan?

9

Yang paling sederhana yang saya maksud adalah yang paling sederhana untuk dipelajari dan diimplementasikan dari awal. Saya harap pertanyaan saya kurang lebih bisa dijawab.

kendaraan
sumber
1
Dalam geometri apa?
Rhys Ulerich
@Rhys Ulerich Saya menebak yang paling sederhana?
James
@ user2697246 Domain tak terbatas dengan kondisi awal yang seragam? Sepele. Itu tidak dimaksudkan untuk menjadi pertanyaan yang meremehkan.
Rhys Ulerich
1
Untuk memulai dengan simulasi NS, lihat ini, lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes
Subodh

Jawaban:

10

Dalam dua dimensi, formulasi kecepatan-vortisitas adalah yang paling sederhana untuk diimplementasikan karena variabel-variabelnya saling bersinggungan, tetapi kondisi batas dapat menjadi rumit dan ini merupakan pernyataan masalah yang kurang langsung. Untuk formulasi variabel primitif, metode beda hingga grid terhuyung-huyung dari Harlow dan Welch (1965) adalah tempat yang bagus untuk memulai.

Jed Brown
sumber
2
Deskripsi yang sangat jelas tentang algoritma ini, dengan syarat batas, diberikan oleh Pozrikidis .
John Stockie
10

Anda dapat menemukan implementasi yang sepenuhnya didokumentasikan dari metode solusi yang sangat sederhana, namun cukup efisien (metode pemisahan Chorin) di sini .

Untuk pilihan metode populer lainnya, lihat Bab 21 di buku ini .

Penafian: Saya penulis (co) dari program demo dan buku. Buku itu dapat diunduh secara gratis.

Anders Logg
sumber
5

Sederhana akan selalu relatif terhadap minat dan kebutuhan khusus Anda. Saya setuju dengan Anders bahwa, untuk aliran yang tidak dapat dikompres pada domain dengan geometri sederhana, Anda akan kesulitan untuk mengalahkan metode proyeksi (yaitu, metode pemisahan Chorin) jika Anda memprioritaskan kemudahan penggunaan dan akurasi.

Untuk sedikit lebih detail, metode pertanyaan diperkenalkan di [1]. Metode proyeksi yang lebih modern, orde kedua, perkiraan dijelaskan dengan baik dalam [2]. Motivasinya adalah bahwa menyelesaikan persamaan Navier-Stokes yang sepenuhnya tidak dapat dipampatkan memerlukan penyelesaian untuk bidang kecepatan dan tekanan secara bersamaan, dan sistem linear yang dihasilkan agak dikondisikan dengan buruk. Metode proyeksi menghilangkan masalah ini dengan memecah setiap langkah waktu menjadi penyelesaian kecepatan, menggunakan tekanan dari catatan waktu sebelumnya, diikuti oleh pembaruan tekanan, yang pada dasarnya menegakkan bahwa medan kecepatan tetap tidak dapat dimampatkan.

Untuk mengimplementasikan ini, Anda memerlukan beberapa komponen lain, tetapi semua dapat dipelajari dan diprogram dengan mudah.

  1. Untuk penyelesaian tekanan, dengan asumsi Anda tertarik pada sistem dengan kerapatan konstan, Anda harus menyelesaikan persamaan Poisson. Tentu saja ada banyak algoritma untuk mendekati masalah ini, tetapi sejauh ini yang paling mudah untuk diterapkan - jika mungkin tidak sepenuhnya dipahami - adalah algoritma konjugat gradien (CG). Salah satu penjelasan terbaik CG yang pernah saya baca ditulis oleh Jonathan Shewchuk dan dapat ditemukan di sini . Anda tentu tidak perlu membaca seluruh makalah, namun, untuk dapat hanya mengimplementasikan algoritma.

  2. Anda akan membutuhkan algoritma lain untuk menangani istilah advection di Navier-Stokes. Dalam beberapa dimensi, pemrograman implementasi yang kuat dari metode yang paling fleksibel, misalnya Godunov, bisa sangat menantang. Namun, asalkan Anda tertarik pada aliran dengan angka Reynolds yang relatif sederhana (yaitu, dengan viskositas yang tidak dapat diabaikan), salah satu metode yang pada dasarnya tidak berosilasi (ENO) sangat sesuai dengan tagihan dalam hal kemudahan implementasi. Ada gambaran yang sangat baik dari teori dan implementasi di [3].

  3. Anda harus menangani istilah kental menggunakan metode implisit, biasanya Crank-Nicolson. Ini dijelaskan secara terperinci dalam makalah metode proyeksi, dan Anda dapat dengan mudah menggunakan CG untuk penyelesaian matriks asalkan viskositasnya konstan.

[1] AJ Chorin, solusi numerik dari persamaan Navier-Stokes , J. Math. Comput., 22 (1968), hlm. 745-762

[2] A. Almgren, JB Bell, dan W. Szymczak, Metode numerik untuk persamaan Navier-Stokes yang tidak dapat dikompres berdasarkan pada perkiraan proyeksi , SIAM J. Sci. Komputasi. 17 (1996), hlm. 258-369.

[3] S. Osher dan R. Fedkiw, Metode Set Level dan Permukaan Implisit Dinamis . Springer-Verlag New York ,. Ilmu Matematika Terapan, 153, 2002

Ben
sumber
Untuk jawaban yang bagus ini, izinkan saya menambahkan bahwa pemahaman terkini tentang sifat tekanan dalam metode proyeksi (diskrit waktu) ada di: J.-G. Liu, J. Liu, RL Pego, Perkiraan tekanan yang stabil dan akurat untuk aliran viscous tidak stabil yang tidak stabil, J. Comp. Phys 229 (2010) 3428-3453.
Bob Pego
4

Grafik dan permainan komputer telah melihat ledakan besar minat dalam simulasi cairan dalam beberapa tahun terakhir. Berikut ini adalah makalah yang bagus dari Jos Stam yang membahas penerapan solver untuk aplikasi realtime. Muncul dengan kode sumber yang sangat mudah dipahami. Saya tidak tahu seberapa akuratnya, tetapi mungkin itu yang Anda cari.

DaleyPaley
sumber
1

Metode lain yang sangat bagus dan sederhana adalah menggunakan otomat seluler untuk diskritisasi. Ada banyak model seperti itu, termasuk LBA, FHP dan banyak lagi. Ini sangat bagus karena mereka dapat memberikan simulasi waktu nyata pada komputer modern dan dapat juga lumpuh dan berjalan pada GPU. Mereka juga memiliki beberapa kelemahan dan hasilnya sangat tergantung pada bentuk kisi yang diterapkan. Kisi-kisi persegi tidak cukup karena tidak memiliki kebebasan rotasi dan vortisitas von kaarman akan berbentuk persegi yang tidak bagus :)

Maks
sumber