infistream

Variasi parameter

Variasi parameter
Untuk melakukan studi variasi parameter dalam OpenFOAM, skrip shell, skrip Python, atau aplikasi utilitas OpenFOAM yang tersedia dapat digunakan untuk mengkloning simulasi dan menyesuaikan parameter mereka dalam file input berbasis teks. Karena OpenFOAM dibangun untuk penggunaan baris perintah, OpenFOAM lebih cocok untuk otomatisasi dibandingkan dengan platform CFD berbasis GUI lainnya.

Bahasa pemrograman Python adalah alternatif yang mudah digunakan untuk skrip shell, yang lebih menyederhanakan pemrosesan dan visualisasi hasil simulasi. Selain itu, banyak perpustakaan berbasis Python yang sudah ada dengan fungsionalitas yang dirancang untuk mendukung proses simulasi numerik, seperti metode interpolasi, metode pencarian akar, pemrosesan data, dan perpustakaan analisis, pembelajaran mesin, dan sejenisnya. Ada proyek Python yang sudah mengimplementasikan banyak fungsionalitas yang diperlukan untuk mengotomatisasi variasi parameter simulasi OpenFOAM: PyFoam.

INFO

PyFoam dapat diinstal menggunakan penginstal paket pip untuk Python dengan sudo pip install PyFoam, atau tanpa hak akses root, dengan pip install --user PyFoam.

Meskipun memungkinkan untuk memanipulasi hasil CFD dari OpenFOAM menggunakan PyFoam, penting untuk memahami bahwa memanipulasi larik data besar (nilai lapangan) akan berjalan agak lambat dibandingkan dengan bahasa yang dikompilasi seperti C++. Contoh ini berfokus pada persiapan studi variasi parameter dan tidak memanipulasi lapangan yang dihasilkan dari simulasi dengan OpenFOAM.

PERINGATAN

Penting bahwa kasus simulasi template diatur dengan baik, karena semua kasus yang diberi parameter dibuat darinya.

Sebelum memprogram aplikasi pra-pemrosesan untuk studi parameter yang lebih kompleks, masuk akal untuk mempelajari apa yang sudah bisa dicapai menggunakan pyFoamRunParameterVariation.py. Aplikasi PyFoam memiliki dokumentasi yang luas yang dapat ditampilkan menggunakan opsi --help di baris perintah. Menjalankan pyFoamRunParameterVariation.py --help menampilkan daftar opsi yang tidak semuanya dicakup di sini.


INFO

Skrip create_naca_study.py dapat ditemukan di folder ofprimer/cases/chapter04 bersama dengan kasus simulasi templat naca.

Opsi yang dilewatkan ke pyFoamRunParameterVariation.py dalam create_naca_study.py ditunjukkan dalam listing 11:
--every-variant-one-case-execution memastikan kasus simulasi OpenFOAM dibuat untuk setiap vektor parameter dalam variasi,
--create-database menyimpan hubungan antara ID simulasi dan vektor parameter (penting untuk mereproduksi hasil),
--no-mesh-create mencegah pembuatan mesh,
--no-execute-solver mencegah eksekusi solver (simulasi),
--cloned-case-prefix digunakan untuk membedakan studi parameter ini dari studi lain.

Berguna untuk menyimpan "konfigurasi" panggilan seperti pyFoamRunParameterVariation.py dalam skrip seperti create_naca_study.py: ini menyederhanakan alur kerja simulasi dan memastikan reproduksi hasil yang mudah.

Aplikasi pyFoamRunParameterVariation.py memerlukan sebagai masukan kasus simulasi template dan sebuah file yang berisi parameter-parameter yang bervariasi.
Variasi parameter
Daftar 12 menunjukkan parameter untuk kasus naca, di mana hanya viskositas kinematik yang divariasikan. Nilai yang tercantum dalam daftar 12 dan disimpan dalam file naca.parameter harus diganti dengan cara tertentu di dalam file constant/transportProperties dari kasus naca. Untuk memastikan PyFoam menggantikan nilai-nilai ν dalam constant/transportProperties, file tersebut disalin ke constant/transportProperties.parameter, dan ν is
Variasi parameter
dimodifikasi seperti yang ditunjukkan dalam daftar 13.
Variasi parameter
Menjalankan
Variasi parameter
Menghasilkan empat kasus simulasi OpenFOAM baru dari templat kasus simulasi naca dengan empat nilai viskositas yang tercantum dalam daftar 13.
Jika beberapa vektor parameter didefinisikan dalam daftar 13, PyFoam akan membuat produk Kartesius dari vektor-vektor tersebut dan folder-folder simulasi mereka masing-masing. Variasi parameter yang besar memerlukan hubungan antara ID simulasi unik (00000, 00001, ...) dan vektor parameter. Ini dengan mudah diperoleh dengan
Variasi parameter
Setelah membahas variasi parameter simulasi OpenFOAM yang ada dengan pyFoamRunParameterVariation.py dari PyFoam, langkah selanjutnya melibatkan pembangkitan mesh dan simulasi.

Sebelum masuk ke detail tentang menulis skrip PyFoam kustom, informasi latar belakang yang diperlukan tentang simulasi disediakan. Sebuah mesh simetris dibangkitkan menggunakan blockMesh, yang terdiri dari tiga blok seperti yang dijelaskan dalam gambar 8.1. Grading dari blok-blok tersebut disesuaikan sehingga tidak ada perubahan yang mencolok dalam ukuran sel dari blok 1 ke 2 dan dari 2 ke 3. Untuk menyelesaikan lapisan batas viskos sepanjang profil airfoil, sel-sel yang cukup kecil dibangkitkan di dekat profil NACA.

Semua patch dinamai sesuai dengan penandaan yang ditunjukkan dalam gambar 8.1. Nomor vertex ditunjukkan oleh dua nomor yang dipisahkan oleh tanda hubung. Semua tepi pada patch FOIL yang tidak berorientasi dalam arah normal dari gambar diformat menggunakan polyLine dari blockMesh dengan stasiun yang dihitung sesuai dengan fungsi yang mendefinisikan profil NACA dua digit apa pun.
Variasi parameter
Semua dimensi domain komputasi serta profil NACA itu sendiri dapat diperoleh dari gambar 8.1. Solver yang digunakan adalah simpleFoam dan akan dijalankan dalam mode serial.

INFO

Kasus / bab04 / kasus naca diatur hanya untuk pembangkitan mesh dan variasi parameter, bukan untuk memperoleh hasil fisik.

Memprogram skrip Python dimulai dengan mengimpor modul yang diperlukan, seperti yang ditunjukkan dalam daftar 14. Tiga submodul PyFoam penting untuk contoh yang dibahas dalam bagian ini:

SolutionDirectory: menangani seluruh kasus dan menyediakan akses mudah ke datanya serta metode untuk mengkloning kasus ke direktori yang berbeda,

ParsedParameterFile: membaca setiap kamus OpenFOAM dan menyediakan akses kepadanya seolah-olah itu adalah kamus Python, Vector: menangani manipulasi vektor.
Variasi parameter
Modul untuk mengurai argumen baris perintah dan jalur file serta melakukan perhitungan dalam variasi parameter kustom (lihat daftar 15) langsung mengikuti modul PyFoam dari daftar 14.

Studi parameter kustom akan memvariasikan sudut serang dari airfoil NACA0012, yang memerlukan rotasi vektor sekitar sumbu koordinat -y dalam kasus contoh ini, diimplementasikan oleh fungsi dari daftar 16.

Skrip variasi parameter mengontrol studi melalui opsi baris perintah. Sebagai alternatif, kita bisa mengontrol variasi parameter dengan cara yang sama seperti pyFoamRunParameterVariation.py: menggunakan file konfigurasi, dalam format standar seperti CSV, JSON, atau YAML. Argumen baris perintah diurai oleh kode yang ditunjukkan dalam daftar 17.

Fungsi utama dari skrip variasi parameter ditunjukkan dalam daftar 18 dan dijelaskan secara detail dengan komentar. Ide inti adalah membaca kasus simulasi template, kemudian mengkloning kasus ke beberapa kasus simulasi, yang diidentifikasi oleh pengenal unik (ID) yang sesuai dengan variasi parameter. Dalam kasus ini, memvariasikan sudut serang memerlukan rotasi medan kecepatan sekitar arah sumbu koordinat -y. File kecepatan dibaca menggunakan PyFoam, dan dari sana akses diperoleh
Variasi parameter
INFO
Argumen baris perintah diurai oleh kode yang ditunjukkan dalam daftar 17. Fungsi utama dari skrip variasi parameter ditunjukkan dalam daftar 18 dan dijelaskan secara detail dengan komentar. Ide inti adalah membaca kasus simulasi template, kemudian mengkloning kasus ke beberapa kasus simulasi, yang diidentifikasi oleh pengenal unik (ID) yang sesuai dengan variasi parameter. Setiap variasi parameter dalam kasus contoh ini terdiri dari satu nilai skalar: sudut serang α.

Secara umum, variasi parameter diidentifikasi oleh vektor parameter n-dimensi dalam ruang parameter, di mana n sesuai dengan jumlah parameter yang divariasikan dalam simulasi. Dalam kasus ini, memvariasikan sudut serang memerlukan rotasi medan kecepatan sekitar arah sumbu koordinat -y. File kecepatan dibaca menggunakan PyFoam, dan dari sana akses diperoleh ke kondisi batas aliran masuk dan medan kecepatan internal. Kedua kondisi batas aliran masuk dan nilai internal awal kemudian diatur sedemikian rupa sehingga sudut serang tertentu tercapai. Begitu medan kecepatan diinisialisasi seperti ini, filenya ditulis.

Kamus yang menghubungkan ID variasi parameter unik dengan vektor parameter kemudian disimpan sebagai file YAML. Pemetaan ID - vektor parameter ini juga disimpan oleh pyFoamRunParameterVariation.py dalam format yang khusus untuk PyFoam. Di sini, YAML digunakan sebagai format standar yang mudah dimanipulasi dalam Python. Meskipun hanya satu parameter yang divariasikan dalam skrip contoh kecil ini, contoh ini menunjukkan bagaimana sub-modul utama PyFoam dapat digunakan bersama dengan modul Python standar untuk memperluas variasi parameter dalam OpenFOAM hingga memiliki kendali penuh atas variasi tersebut. Langkah selanjutnya misalnya, adalah untuk mengurangi produk kartesian penuh vektor parameter dengan menerapkan kondisi yang menonaktifkan vektor parameter yang tidak masuk akal.

Skrip tersebut tersedia dalam repositori kode, di cases/chapter04/ parametricStudy.py. Memanggilnya untuk memvariasikan sudut serang antara 0◦ dan 10◦ dengan 10 langkah, yaitu
Variasi parameter
Variasi parameter
Menghasilkan
Variasi parameter
ID-parameter vektor yang disimpan dalam angle-of-attack.yml
Variasi parameter
Meskipun parameter simulasi dari kasus naca tidak menjamin kebenaran hasil fisik dalam contoh ini, garis aliran dari dua variasi ekstrem dari studi parameter ditunjukkan dalam gambar 8.2.
variasi parameter
Open chat
Infichat
Hello 👋
Thank you for text me
Can we help you?