INFO Generator objek fungsi. Untuk menggunakan generator objek fungsi, pastikan bahwa lingkungan OpenFOAM telah diatur.
Berikut adalah perintah-perintah untuk membuat perpustakaan objek fungsi baru dengan skrip foam-NewFunctionObject:
Pada OpenFOAM-v2012, terdapat kesalahan sintaks dalam file templat, yang telah diperbaiki di cabang utama. Karena buku tersebut menggambarkan versi rilis, modifikasi kecil pada konstruktor objek fungsi yang dihasilkan harus dilakukan. Baris dengan kesalahan kurung tersebut adalah:
harus diubah seperti ini:
Setelah koreksi sintaks kecil ini, perpustakaan baru dapat dikompilasi dengan
Skrip foamNewFunctionObject menghasilkan satu perpustakaan OpenFOAM per objek fungsi, seperti yang didefinisikan dalam myFunctObject/Make/files.
Perpustakaan dinamai secara otomatis sebagai myFuncObjectFunctionObject dan disimpan dalam folder OpenFOAM yang berisi biner perpustakaan yang ditentukan pengguna.
Menghasilkan perpustakaan objek fungsi yang berbeda untuk setiap objek fungsi yang kita perkenalkan tidak praktis, karena hal ini membutuhkan penambahan entri perpustakaan dalam file sistem/controlDict untuk setiap objek fungsi yang dihasilkan dengan foamNewFunctionObject. Objek fungsi yang dapat dikategorikan ke dalam suatu grup, termasuk dalam perpustakaan yang sama. Untuk mengorganisir objek fungsi yang dihasilkan dengan foamNewFunctionObject ke dalam grup, struktur folder objek fungsi yang berbeda dapat dihasilkan dengan foamNewFunctionObject, dan dikompilasi menjadi satu perpustakaan. Sebagai contoh,
menciptakan dua objek fungsi, myFuncObjectA dan myFuncObjectB, yang harus dikompilasi ke dalam perpustakaan yang sama, myFunctionObjects. Berkas Make/files,options dari setiap objek fungsi yang dihasilkan oleh foamNewFunctionObject dapat digunakan sebagai awal untuk konfigurasi pembangunan dari perpustakaan tersebut. Sebagai contoh, menggunakan konfigurasi pembangunan dari myFuncObjectB,
Folder Make-nya sekarang berisi konfigurasi pembangunan dari perpustakaan myFunctionObjects, yang perlu dimodifikasi. Secara khusus, myFunctionObject/Make/files seharusnya terlihat seperti ini:
yang pada dasarnya mencantumkan dua berkas implementasi (.C) dari dua objek fungsi yang terdapat dalam perpustakaan myFunctionObjects, dan menentukan lokasi ($FOAM_LIBBIN), serta nama dari perpustakaan objek fungsi baru.
INFO Jika Anda berada pada commit terbaru di cabang master, kesalahan sintaks yang ada pada tag OpenFOAM-v2012 telah diperbaiki.
Untuk mengompilasi perpustakaan, perbaiki kesalahan sintaks kecil di konstruktor kedua objek fungsi seperti yang dibahas di atas, dan jalankan wmake libso. Setelah perpustakaan berhasil dikompilasi, objek fungsi dari perpustakaan myFunctionObjects dapat digunakan seperti objek fungsi OpenFOAM lainnya, dengan solver apa pun dan kasus simulasi apa pun, asalkan perpustakaan myFunctionObjects terdaftar sebagai perpustakaan yang dimuat secara dinamis dalam file controlDict. Sebagai contoh, perpustakaan baru digunakan dalam kasus tutorial cavity dengan solver icoFoam sebagai berikut:
Objek fungsi baru myFuncObjectA dari perpustakaan baru myFunctionObjects diaktifkan oleh entri berikut dalam file system/controlDict:
Baris pertama menentukan perpustakaan baru yang harus dimuat secara dinamis. OpenFOAM secara otomatis mencari $FOAM_LIBBIN dan $FOAM_USER_LIBBIN untuk perpustakaan yang tersedia. Entri functions adalah kamus yang dapat berisi banyak entri kamus, masing-masing menentukan objek fungsi yang berbeda. Dalam potongan kode di atas, sub-kamus funcA mengkonfigurasi objek fungsi myFuncObjectA. Nama funcA adalah sembarang: nama yang ditentukan pengguna mana pun dapat diterima.
Menghasilkan mesh dengan blockMesh dan memulai solver icoFoam menghasilkan kesalahan
Hal ini diharapkan: skrip pembuat objek fungsi foamNewFunctionObject menyiapkan implementasi kerangka yang tidak melakukan apa pun kecuali dari inisialisasi beberapa anggota data palsu (bool, label, dan scalar). Jika data untuk anggota data tersebut tidak disediakan dalam sistem/controlDict, objek fungsi akan mengeluh.
Namun, jika kita salah menamai objek fungsi, OpenFOAM akan memberikan peringatan:
Oleh karena itu, ada dua cara di mana penggunaan objek fungsi bisa salah: kita salah menamai objek fungsi, atau kita tidak menyediakan data yang diperlukan untuk inisialisasinya. Jika kita salah menamai objek fungsi, solver akan berjalan tanpa itu. Jika entri data yang diperlukan untuk menginisialisasi objek fungsi hilang, solver tidak akan berjalan dan pengguna akan diminta untuk memasukkan data yang diperlukan di sistem/controlDict. Definisi lengkap dari sub-kamus funcA di sistem/controlDict adalah:
Setelah implementasi objek fungsi template dikompilasi menjadi perpustakaan dan dapat digunakan (diuji) dengan solver, implementasi default dapat diperluas.
Anggota data palsu yang dihasilkan oleh foamNewFunctionObject:
akan digantikan oleh anggota data yang mendukung perhitungan objek fungsi baru. Fungsi anggota yang dihasilkan oleh foamNewFunctionObject sebenarnya tidak melakukan apa-apa: