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.
sumber
Jawaban:
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:
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.
Aliran daya apung. Kotak tertutup, hot plate di bagian bawah, cold plate di atas, fluida panas mulai naik karena gaya apung. Inilah patokannya .
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.
sumber