Bagaimana saya bisa mengecek kebenaran hasil simulasi cairan saya?

9

Saya menulis sebuah program simulasi fluida berbasis partikel. Sulit untuk mengatakan apakah saya mendapatkan hasil yang benar. Hasil yang divisualisasikan tampaknya masuk akal, tetapi beberapa bagian terlihat aneh. Saya tidak tahu apakah ini fitur cairan. Apakah ada metode yang akurat untuk memverifikasi apakah program saya benar?

Mengubah beberapa detail:

Program saya adalah program simulasi berbasis partikel 2D. Cairan ini bisa dimampatkan. Implementasinya hampir didasarkan pada kertas klasik:

Müller, Matthias, David Charypar, dan Markus Gross. "Simulasi fluida berbasis partikel untuk aplikasi interaktif." Prosiding ACM SIGGRAPH 2003

Saya memecahkan persamaan Navier-Stokes dengan metode iterasi. Itu hanya dianggap tekanan, gravitasi, viskositas, dan tegangan permukaan.

Yyao
sumber
Mungkin Anda bisa menghitung ulang syarat persamaan NS dengan diferensiasi numerik dan memeriksa bagaimana mereka membatalkannya.
Yves Daoust

Jawaban:

2

Bandingkan dengan perangkat lunak orang lain. Jalankan beberapa tes standar dan cari tahu apakah Anda mendapatkan jawaban yang kira-kira sama dengan yang lain. Jika Anda mendapatkan jawaban yang sama, maka kemungkinan memiliki kode Anda cukup tinggi.

Beberapa tes:

  1. Mengalir melewati silinder. Dalam 2d ambil domain persegi panjang, silinder di tengah, inflow di sebelah kiri, outflow pada pertarungan dan hitung gaya pada silinder. Berikut ini adalah perbandingan membandingkan beberapa kode.

  2. Aliran daya apung. Kotak tertutup, hot plate di bagian bawah, cold plate di atas, fluida panas mulai naik karena gaya apung. Inilah patokannya .

  3. Gelembung naik, patokan .

Namun sayangnya mungkin cukup sulit untuk membandingkan kode Anda dengan kode ilmiah dalam tolok ukur tersebut. Saya kira Anda menerapkan sesuatu sebagai SPH atau cairan stabil yang tidak dibuat untuk akurasi tetapi untuk stabilitas.

Ambil contoh aliran melewati silinder. Saya akan memulai tes dengan angka Reynolds yang sangat kecil dan kemudian mengukur kekuatan pada silinder saat Anda meningkatkan akurasi simulasi Anda (langkah waktu yang lebih rendah, menambah subdivisi atau menambah jumlah partikel). Apakah gaya berkumpul ke beberapa nomor? Jika tidak, maka Anda memiliki masalah, jika ya, daripada melihat kertas patokan dan membandingkan hasil Anda dengan orang lain.


Metode ini adalah teknik yang sangat mirip dengan yang saya gunakan untuk menguji raytracer saya. Saya hanya membuat adegan pengujian dengan pembuat orang lain dan membandingkannya dengan hasil saya. Apakah mereka bertemu untuk hasil yang sama? Jika ya daripada saya benar, jika tidak, maka saya salah.

tom
sumber
Alih-alih perangkat lunak untuk menguji terhadap yest terhadap pengukuran dunia nyata dan dinamika fluida yang diketahui. Kalau tidak, kesalahan Anda sudah ternoda. Saya melihat pertanyaan yang sama diposting di tempat lain di jaringan stackexhange btw
joojaa
1
Saya pikir pengujian terhadap pengukuran dunia nyata baik untuk pengujian jika Anda memiliki fisika yang benar. Jika Anda hanya ingin men-debug program Anda, daripada menguji terhadap kode lain adalah ide yang lebih baik. Plus dalam simulasi komputer Anda dapat mengukur apa saja tanpa mempengaruhi percobaan. Misalnya mengukur kecepatan fluida di titik mana pun tidak mungkin dalam eksperimen dunia nyata, tetapi sepele dalam simulasi komputer.
tom
Ya tapi Anda juga mewarisi masalah pemecahnya. Saya akui saya memang melakukan ini beberapa kali mengembangkan simulator multibodi dan mengecek hasil dari MSC Adams, tetapi kalau dipikir-pikir itu tidak terlalu berguna
joojaa
Memeriksa eksperimen dunia nyata lebih baik? Saya meragukannya, tetapi saya mungkin salah. Situasi dengan fisika multibodi sangat berbeda dengan fisika fluida. Bahkan sesuatu yang sederhana seperti biliar memiliki perilaku kacau. Terlebih lagi dinamika tubuh yang kaku dengan kontak bahkan bukan masalah matematika yang baik, tahukah Anda paradoks Painlevé? Jadi melakukan simulasi numerik fisika multibodi akan gagal pada umumnya. Beberapa referensi: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
tom
1
Ya saya menyadari bagaimana dinamika multi-tubuh bekerja, saya agak mengajarkannya (dan merisetnya sebentar selama satu atau dua tahun). Tetapi tidak ada pemeriksaan terhadap solusi analitis yang diketahui lebih mudah. Tapi fluida nyata sama kacau seperti dinamika multi-tubuh. Jadi seseorang harus dapat memeriksa terhadap situasi aliran laminar dll. Gesekan adalah menyebalkan.
joojaa