infistream

Objek Fungsi di C++

Deskripsi detail tentang implementasi dan penggunaan objek fungsi dalam C++ di luar lingkup buku ini dan dijelaskan secara ekstensif dalam [2], [3], dan [1], antara lain. Tinjauan singkat tentang objek fungsi C++ dicakup, yang cukup untuk membedakannya dari objek fungsi OpenFOAM.
OBJEK FUNGSI DI C++​
Fitur bahasa C++ ini digunakan secara luas untuk operasi lapangan aljabar dalam OpenFOAM itu sendiri. Dengan cara yang serupa, membebani operator()() untuk sebuah kelas memungkinkan perilaku mirip fungsi dari objeknya.

Fakta bahwa objek fungsi adalah objek menghasilkan berbagai keuntungan:

° Objek fungsi dapat menyimpan informasi tambahan tentang statusnya.
° Itu diimplementasikan sebagai tipe yang sering digunakan dalam pemrograman generik.
° Eksekusinya akan lebih cepat daripada kode yang melibatkan pengiriman pointer fungsi karena objek fungsi umumnya diin-line-kan.
OBJEK FUNGSI DI C++​
Fungsi anggota collectCells hanya mengulang semua nilai bidang dan mengharapkan Collector untuk mengembalikan variabel boolean sebagai hasil dari operasi pada nilai bidang field[I]. Ini menentukan konsep parameter templat collector:

° callable: objek fungsi adalah pilihan alami
° unary: harus memungkinkan setidaknya satu argumen fungsi
°predicate: mengembalikan variabel boolean

Implementasi langsung ini memungkinkan objek fungsi apa pun untuk dilewatkan ke fungsi anggota template collectCells. Bagian dari testFieldCellSet yang terkait dengan objek fungsi dalam C++ adalah satu baris kode:
OBJEK FUNGSI DI C++​
Metode collectCells dipanggil pada objek fcs dari kelas fieldCellSet.

Desain berorientasi objek memungkinkan kelas fieldCellSet untuk menyerahkan penyimpanan label sel serta operasi output yang dilakukan pada setiap langkah waktu baru. Ini dicapai dengan menggunakan pewarisan ganda:
OBJEK FUNGSI DI C++​
Aplikasi testFieldCellSet dapat diuji dalam kasus contoh dari bab 11, yaitu
OBJEK FUNGSI DI C++​
dengan menyebut
Hasil set sel yang dihasilkan disimpan dalam direktori 0 dan untuk memvisualisasikannya menggunakan aplikasi paraView, harus dikonversi ke format VTK menggunakan foamToVTK. Sebelum ini dapat dilakukan, set sel harus disalin dari direktori 0 ke constant/polyMesh/sets:
Setelah ini dilakukan, set sel dikonversi dengan
Perhitungan dan visualisasi set sel berdasarkan lapangan bisa dengan mudah dilakukan dalam aplikasi paraView, tetapi intinya adalah untuk memahami objek fungsi dalam C++, dan bagaimana mereka dapat dengan mudah digunakan saat memprogram kode OpenFOAM.
OBJEK FUNGSI DI C++​
Open chat
Infichat
Hello 👋
Thank you for text me
Can we help you?