Apakah ada pemecah CFD open source berkualitas baik, mudah digunakan dan berkualitas tinggi di luar sana?

17

Tesis saya adalah mengembangkan metode numerik untuk pengurangan model dalam pembakaran. Saya menjalankan metode saya murni pada bagian kimia dari simulasi pembakaran, dan saya punya banyak studi kasus untuk simulasi 0-D (tidak ada aliran). Yang saya inginkan adalah menjalankan simulasi yang memiliki aliran di dalamnya, lebih disukai simulasi 2-D atau 3-D.

Simulasi ini harus paralel, karena persyaratan komputasi yang tinggi. Saya juga butuh sesuatu yang bisa berinteraksi dengan pemecah kimia seperti Chemkin atau Cantera, yang saya punya kode sumbernya. (Chemkin di Fortran 77, dan Cantera di C ++.)

Dalam kasus yang ideal, saya dapat menentukan pola aliran menggunakan pengetahuan dasar mekanika fluida yang saya miliki dari program pascasarjana dan beberapa paket CFD, menambahkan kimia, dan menjalankannya. Jika saya harus, saya dapat mengatur persamaan yang mengatur gerak fluida dan kimia untuk studi kasus sederhana berdasarkan pengaturan eksperimental yang digunakan oleh mantan kolaborator, tetapi saya lebih suka untuk tidak memutar kode CFD saya sendiri kecuali ada paket atau paket yang membuatnya sangat mudah untuk dilakukan. Saya bersedia menghabiskan 2-3 minggu untuk itu; Saya tidak tahu apakah persyaratan ini mengesampingkan PETSc atau Trilinos. Jika saya harus menghabiskan lebih lama untuk itu, saya lebih suka menundanya sampai nanti, karena saya memiliki kolaborator yang memasok kode CFD untuk studi kasus juga.

Adakah yang punya pengalaman menggunakan paket CFD atau menulis kode CFD, dan jika demikian, dapatkah Anda merekomendasikannya? Satu hal yang saya tahu ingin saya gunakan adalah Strang splitting, tapi saya bukan ahli CFD atau PDE; Saya mempelajari kimia dan metode numerik untuk reduksi model. Juga, tolong beri komentar tentang berapa lama Anda untuk mendapatkan kecepatan menggunakan perangkat lunak yang Anda rekomendasikan.

@FrenchKheldar menunjukkan bahwa saya harus menyebutkan karakteristik masalah yang ingin saya pecahkan:

  • Gas ideal (sempurna), satu fase
  • Terkompresi
  • Aliran laminar sangat penting; aliran turbulen merupakan nilai tambah. (Saya tahu sedikit tentang turbulensi dari pekerjaan sebelumnya dalam metode numerik di CFD, tapi saya belum bekerja pada pemecah CFD; Saya hanya tahu sedikit tentang fisika.)
  • Formulasi Zero-Mach-number tidak apa-apa (saya tidak peduli dengan guncangan atau aliran supersonik)
  • Kimia pembakaran, mengabaikan fluks Soret dan Dufour, dan memperlakukan difusi sebagai Fickian
  • Geometri bisa menjadi sesuatu yang sederhana

Saya dapat menulis kode antarmuka, meskipun semakin sedikit saya harus menulis, semakin baik; @FrenchKheldar juga menunjukkan bahwa Cantera memiliki Fortran dan Python bindings. Saya menggunakan binding Cantera Python sekarang untuk prototyping cepat, jadi saya nyaman dengan itu juga.

Geoff Oxberry
sumber
Cantera memiliki pembungkus untuk python dan Fortran, sehingga sedikit memperluas pencarian.
FrenchKheldar
Apakah Anda ingin memodelkan aliran laminar atau aliran turbulen? Tertekan atau tidak tertekan? Gas sempurna? Fase tunggal? Semakin banyak detail yang Anda berikan kepada kami, semakin tepat jawabannya.
FrenchKheldar
@FrenchKheldar: Terima kasih sudah menunjukkannya. Saya telah menambahkan beberapa spesifik.
Geoff Oxberry
2
Satu komentar lagi: jika Anda tidak peduli dengan akustik atau gelombang, bukankah Anda bisa menggunakan pemecah yang tidak bisa dimampatkan? Itu akan memperluas kemungkinan Anda ...
FrenchKheldar
Biarkan saya ulangi: Saya tidak peduli dengan kejutan. Karena fase adalah gas yang ideal, dan gas ideal berubah dalam kepadatan ketika tekanan berubah, aliran harus kompresibel.
Geoff Oxberry

Jawaban:

11

Saya pengguna berat OpenFOAM , jadi tentu saja saya akan merekomendasikannya. Ini memiliki sejumlah besar fitur termasuk model pembakaran (meskipun tidak selalu tepat apa yang Anda butuhkan) dan telah digunakan bersama dengan Canterra oleh orang lain. Jika Anda membutuhkan pemecah untuk persamaan tertentu yang belum diimplementasikan, Anda dapat menulis persamaan Anda secara harfiah . Saya tidak tahu apa itu strang-splitting (saya sendiri tidak bekerja pada pembakaran), tetapi orang lain telah menggunakannya di OpenFOAM .

Ada sejumlah tutorial terbatas. Yang didokumentasikan dalam panduan pengguna tidak termasuk kimia. Ada beberapa contoh kasus untuk pemecah reaksi yang bisa Anda lihat. Taruhan terbaik Anda adalah memeriksa situs web kursus OS-CFD di Chalmers (tautannya untuk 2011, tetapi memuat tautan ke halaman-halaman tahun-tahun sebelumnya). Para siswa di sana sering mendokumentasikan solver yang sedang mereka kerjakan, misalnya di sini .

Tentang upaya untuk mempelajarinya: Jika Anda menggunakan salah satu model yang sudah ditentukan sebelumnya, cukup mudah untuk digunakan dan Anda akan dapat memperoleh hasilnya dalam beberapa minggu. Jika Anda harus turun di bawah tingkat atas (misalnya untuk menambahkan pemecah ODE baru), segala sesuatunya bisa menjadi lebih sulit dengan cukup cepat dan Anda akan menghargai untuk mengetahui C ++.

akid
sumber
Terima kasih atas rekomendasinya! Saya telah mendengar hal-hal baik tentang OpenFOAM, dan saya ingin menggunakannya di masa depan. Menurut pengalaman Anda, apakah mudah untuk mempelajari API? Apakah ada tutorial atau contoh bagus yang menggunakan OpenFOAM, lebih disukai dengan kimia?
Geoff Oxberry
Saya memperbarui jawaban saya
akid
1
Mulai segera belajar C ++. :) Semoga berhasil.
tmaric
2

Anda bisa menggunakan PyClaw , ekstensi paralel Clawpack (catatan: Saya adalah salah satu pengembang utama PyClaw). Ini termasuk pemecah 2D dan 3D untuk persamaan Euler inviscid (aliran kompresibel) dari gas ideal. Ini juga memiliki Strang splitting bawaan, tetapi Anda perlu menambahkan evaluasi istilah kental dan kimia sendiri. Seharusnya mudah untuk berinteraksi dengan Chemkin dan Cantera, karena PyClaw ditulis dalam Python dan sudah menyertakan kode Fortran 77 dan C.

PyClaw relatif baru (meskipun kode Clawpack yang mendasarinya cukup lama) dan dengan demikian tidak ditetapkan sebagai sesuatu seperti OpenFOAM.

David Ketcheson
sumber
Terima kasih! Saya harus memeriksanya, meskipun mungkin perlu beberapa saat untuk mendapatkannya. Ketika saya mulai menggunakannya, saya akan memberi tahu Anda bagaimana hasilnya.
Geoff Oxberry
2

Fire Dynamics Simulator (FDS) NIST terdengar seperti yang Anda inginkan. FDS adalah pemecah aliran angka Mach rendah. Kepadatan bisa berubah, tetapi efek akustik dan guncangan diabaikan.

FDS didokumentasikan dengan cukup baik, meskipun, saya akui saya belum melihat dalam rutinitas pemecah aliran utama. Saya juga tidak tahu banyak tentang bagaimana FDS menangani kimia pembakaran.

Saya sarankan mengunduh kode terbaru dari situs Google Code FDS .

Ben Trettel
sumber
0

Ada banyak di sana!

OpenFOAM adalah yang terbaik, IMHO, tetapi yang lain ada di tautan ini ,

T3rmInAt0r
sumber
Tolong jangan berikan jawaban 'tautan saja', karena tautan mungkin rusak.
Jan
Saya tidak ingin menyajikan semua opsi yang disebutkan di sana sebagai "milikku". Secara teknis, saya bisa menyalin dan menempelkan semua konten, tetapi saya bukan orang itu. Jadi, saya letakkan tautan langsung untuk memberikan kredit kepada penulis asli
T3rmInAt0r
1
Baik. Tetapi, Anda dapat, misalnya, mengatakan bahwa kursi untuk Dinamika Fluida Komputasi dan Mekanika Turbulensi di Universitas Manchester telah menyusun daftar perangkat lunak sumber terbuka untuk insinyur. Jika Anda melakukannya, sesama pengunjung masih dapat mencari di internet jika tautannya terputus.
Jan