Saya mencoba untuk mengoptimalkan distributor aliran di tangki sehingga kecepatan dan distribusi suhu di setiap penampang relatif seragam. Ada banyak parameter yang dapat saya sesuaikan dengan keseragaman lintas bagian maksimum, seperti jumlah pipa saluran masuk, posisi, orientasi, dan arahnya. Saya tahu bahwa saya dapat membuat sejumlah geometri yang berbeda dan menguji masing-masing secara individual, tetapi ini sangat memakan waktu. Saya ingin dapat menulis sebuah program yang dapat secara berulang menguji beberapa kasus sekaligus (secara paralel), dan secara adaptif memilih serangkaian geometri baru untuk diuji berdasarkan hasil sebelumnya. Bagaimana saya bisa melakukan ini?
optimization
Paul
sumber
sumber
Jawaban:
Apa yang ingin Anda lakukan adalah optimasi bentuk menggunakan metode berbasis gradien. Ini pada dasarnya berarti bahwa Anda perlu menghitung gradien fungsi fungsi wrt ke parameter model Anda.
Untuk sejumlah kecil parameter Anda dapat menggunakan FD tetapi untuk sejumlah besar parameter Anda perlu melihat metode adjoint. Jika Anda menggunakan kode komersial atau kode orang lain yang tidak bisa menyelesaikan persamaan adjoint maka FD adalah satu-satunya pilihan Anda.
Lihatlah ke buku-buku dasar optimasi bentuk dasar.
Sunting: Untuk masalah struktural FE Anda dapat memeriksa buku karya Choi dan Kim I dan II
sumber
Jika Anda membuat parameter bagian konstruksi geometri dengan tepat, ini merupakan masalah optimasi kotak hitam dengan parameter campuran diskrit dan kontinu.
DAKOTA http://dakota.sandia.gov/ dan NOMAD http://www.gerad.ca/NOMAD/Project/Home.html adalah dua paket berguna yang memungkinkan Anda memilih secara otomatis pemilihan parameter terbaik. (DAKOTA memiliki dukungan aplikasi yang lebih baik, tetapi NOMAD mungkin memiliki pengoptimal yang lebih baik.)
Untuk memvariasikan geometri, perkenalkan parameter diskrit atau kontinu untuk setiap kontrol yang ingin Anda pengaruhi geometri, dan otomatisasi konstruksi geometri dari kumpulan kontrol. Perhatikan bahwa metode bebas-derivatif cukup lambat dalam dimensi tinggi, jadi jaga agar jumlah parameter tetap kecil.
Setelah selesai menjelajahi ruang dengan salah satu paket di atas, Anda dapat memperbaiki analisis dengan melakukan optimasi yang lebih akurat di mana semua parameter diskrit dan semua parameter kontinu diperbaiki yang Anda tidak bisa mendapatkan turunan analitik. Tetapi Anda dapat meningkatkan jumlah parameter bentuk berkelanjutan sehubungan dengan yang Anda dapat menghitung turunan analitik, sebagai pengoptimal berbasis gradien (seperti IPOPT https://projects.coin-or.org/Ipopt ) dapat secara efisien menangani masalah yang jauh lebih besar .
Jika Anda tidak tahu cara mendapatkan turunan tetapi ketergantungannya lancar, Anda dapat mempertimbangkan untuk menggunakan program diferensiasi otomatis, atau mengkodekan masalah kontinu Anda di AMPL, dalam hal ini antarmuka pemecah akan menangani turunan.
Untuk dasar-dasar pengoptimalan bentuk, lihat, misalnya, Haftka, RT dan Grandhi, RV, pengoptimalan bentuk struktur - Sebuah survei, Metode Komputer dalam Mekanika dan Teknik Terapan 57 (1986), 91-106. (Percayai deskripsi tentang pemodelan; tetapi jangan gunakan solver yang mereka rekomendasikan, karena teknologi optimisasi telah jauh meningkat sejak saat itu.)
sumber
Sejauh parameterisasi geometri dalam pertanyaan (seperti Geoff menunjukkan yang tidak sepele) - Saya dengan tulus dapat merekomendasikan Brenda Kulfan - Metode Representasi Geometri Universal Parametrik, J. Aircraft, Vol.45, No.1.2008 .
Pendekatan yang diuraikan dapat diterapkan dalam optimalisasi aerodinamis pesawat terbang.
sumber
Ada juga optimasi ruang adjoint, yang tampaknya jauh lebih cepat daripada optimasi parametrik standar dalam CFD. Baru-baru ini telah memiliki peningkatan besar dalam popularitas di dalam komunitas CFD secara umum, dan di OpenFOAM khususnya. Kami sedang menyelenggarakan lokakarya tentang OpenFOAM saat ini, dan kami menerima banyak pengiriman abstrak mengenai metode ini. Jika Anda tertarik, lihat ini , untuk info lainnya, cukup google "adjoint optimasi bentuk ruang di CFD".
Informasi tambahan:
Jika Anda bisa menggunakan OpenFOAM, ada pustaka berbasis Python yang digunakan untuk hal semacam itu, untuk memanipulasi sejumlah besar kasus dan mengubah parameter mereka yang disebut PyFoam . Untuk geometri sederhana, Anda bisa mendefinisikan mesh sebagai blockMesh sederhana dan beralih ke apa pun yang Anda suka. Untuk kasus sederhana, ini adalah pertanyaan untuk menulis beberapa loop dengan Python. Begini tampilannya skrip jika Anda mengubah kecepatan kondisi batas "inlet". Perubahan geometri mesh sederhana akan menjadi beberapa baris kode ...
sumber
Anda akan membutuhkan:
Fitur-fitur berikut sangat penting untuk alat CFD:
Jadi saya dapat merekomendasikan perangkat lunak berikut:
Perpustakaan Simulasi Lanjut yang menawarkan
Performa tinggi:
Fleksibilitas dan keramahan yang tinggi:
Generasi dan manipulasi primitif geometri .
sumber