Apa praktik terbaik untuk algoritma dan implementasi simulasi multi-fisika?

16

Simulasi multi-fisika melibatkan menggabungkan beberapa "fisika", seringkali dengan skala ruang dan / atau waktu yang berbeda. Selain itu, kode fisika tunggal sering ditulis oleh tim yang berbeda. Teknik kopling yang paling umum digunakan adalah pemisahan operator tingkat pertama, tetapi ini memiliki sifat akurasi dan stabilitas yang buruk. Bagaimana cara menentukan algoritma mana yang akan efektif untuk masalah yang diminati, dan bagaimana saya harus menyusun perangkat lunak saya untuk membuat algoritma ini tersedia?

Jed Brown
sumber

Jawaban:

5

Saya sangat menganjurkan perakitan penuh karena ini dapat dengan mudah mereproduksi versi perpecahan operator. Secara khusus, rutinitas yang menghitung residu dan Jacobian untuk fisika yang berbeda dapat dipisahkan, tetapi kerangka kerja harus dapat menggabungkannya untuk membentuk residu terpadu untuk seluruh sistem. Beginilah cara kerja PETSc.

Kemudian, solusi pemecahan operator dapat digunakan sebagai prekondisi untuk sistem yang sepenuhnya berpasangan, atau sebagai pemecah dengan sendirinya, semua dari baris perintah. Selain itu, beberapa kopling dapat dilestarikan, sementara yang lain dapat dibuang. PETSc menangani ini melalui antarmuka PC FieldSplit. Ini memungkinkan replikasi skema hybrid, seperti ICE semi-implisit untuk dinamika fluida.

Matt Knepley
sumber
5

Karena ini adalah bidang penelitian yang sangat aktif, saya ragu untuk mencoba jawaban untuk ini tetapi saya memiliki beberapa pengalaman tentang apa yang tidak boleh dicoba.

Jangan Tidak :

  • Ambil kode aplikasi lama A dan aplikasi lama B, lalu coba gabungkan keduanya
  • Gunakan kode kuno (menyiratkan tidak dapat digunakan di belakang), alih-alih membangun aplikasi baru
  • Memerlukan kerangka kerja yang sangat besar (> 10 dependensi yang diperlukan) pada pengguna baru yang mulai berkontribusi
  • Asumsikan tata letak data (jerat, matriks, vektor, dll.) Mudah untuk ditulis sendiri

Lakukan :

  • Gunakan praktik pemrograman standar dan, semoga, pola desain yang baik
  • Baca literatur tentang pemisahan operator untuk memahami batasan akurasi dan stabilitas
Sean Farley
sumber