Objek Fungsi
Objek fungsi adalah kode yang independen dari solver yang dikompilasi ke dalam sebuah perpustakaan dinamis dan dieksekusi baik selama loop waktu simulasi atau oleh aplikasi pemrosesan setelah simulasi selesai. Objek fungsi paling sering melakukan perhitungan pasca-pemrosesan saat simulasi berjalan, tetapi mereka juga dapat memanipulasi bidang atau parameter simulasi. Perpustakaan objek fungsi OpenFOAM dapat berisi sejumlah objek fungsi yang dapat dihubungkan ke aplikasi selama runtime: OpenFOAM menyediakan mekanisme untuk memuat perpustakaan dinamis di setiap kasus simulasi. Fungsionalitas yang terkapsulasi dalam objek fungsi diakses dari solver dengan cara yang telah ditentukan sebelumnya, sehingga objek fungsi harus sesuai dengan antarmuka kelas yang tetap.
Seperti model transportasi atau kondisi batas, objek fungsi OpenFOAM diimplementasikan sebagai kelas-kelas, yang diorganisir ke dalam hierarki kelas, dan dikompilasi ke dalam perpustakaan terkait dinamis. Ini memungkinkan pengguna untuk memilih sejumlah objek fungsi yang berbeda melalui file konfigurasi. Manfaat lain dari struktur hierarkis modular objek fungsi dalam OpenFOAM adalah kemampuan untuk berbagi perpustakaan objek fungsi dengan mudah dengan orang lain. Objek fungsi mengimplementasikan perhitungan yang sepenuhnya mandiri dan tidak melibatkan modifikasi kode aplikasi sama sekali. Tidak ada perubahan yang harus diterapkan pada solver atau aplikasi utilitas, dan tidak perlu mengkompil ulang mereka untuk mengakses objek fungsi baru. Ini meningkatkan kegunaan ulang kode mengikuti pola OOD “Open-Closed”: fungsionalitas terbuka untuk perluasan, dan implementasi yang ada tertutup untuk modifikasi.
Dari sudut pandang pengguna, objek fungsi biasanya menyediakan fungsionalitas yang tidak memengaruhi solusi: mereka melakukan tugas pasca-pemrosesan saat runtime yang seharusnya secara umum independen dari solver yang dipilih. Tujuan mereka adalah untuk mengimplementasikan metode pasca-pemrosesan umum, seperti menghitung nilai rata-rata dari variabel bidang apa pun, terpisah dari kode solver.
Sebagai contoh hipotetis, pertimbangkan studi optimisasi CFD parametrik dengan penurunan tekanan antara batas masuk dan keluar dari simulasi steady-state sebagai fungsi target. Dengan menggunakan objek fungsi, adalah mungkin untuk mengevaluasi penurunan tekanan ini setelah setiap iterasi dan menghentikan simulasi segera setelah penurunan tekanan memenuhi beberapa kondisi yang diinginkan. Sebaliknya, menggunakan aplikasi pasca-pemrosesan akan memerlukan setiap simulasi untuk diselesaikan, mungkin melibatkan banyak iterasi lebih dari yang diperlukan untuk penurunan tekanan makroskopis yang konvergen, tergantung pada kriteria konvergensi algoritma solusi.