9.5 Computational Pointers
9.5.1 uFVM
Computational pointers. Dalam uFVM, fungsi cfdComputeGradientGauss0 dan cfdComputeGradientNodal digunakan untuk menghitung gradien elemen. Rutinitas gradien Gauss (Listing 9.1) mengambil array elemen phi sebagai input dan mengembalikan array gradien elemen. Nilai-nilai diinterpolasi ke wajah menggunakan faktor pembobotan tanpa koreksi untuk non-konjungtivitas, oleh karena itu digit 0 dalam nama fungsi.
Rutinitas gradien nodal, yang tercantum di bawah ini (Listing 9.2), sangat mirip dengan rutinitas gradien Gauss kecuali bahwa ia menggunakan fungsi cfdInterpolateFromElementsToNodes dan cfdInterpolateFromNodesToFaces untuk menginterpolasi nilai phi ke wajah yang kemudian digunakan dalam algoritma Gauss.
Untuk interpolasi gradien wajah, berbagai opsi interpolasi diperbolehkan dalam fungsi cfdInterpolateGradientsFromElementsToInteriorFaces. Input untuk fungsi tersebut adalah theInterpolationScheme, gradien elemen grad, array elemen phi, dan mdot untuk kasus di mana skema upwind atau downwind digunakan. Fungsi tersebut ditunjukkan dalam Listing 9.3.
Perlu dicatat bahwa theInterpolationScheme “Average:Corrected” menerapkan teknik koreksi gradien wajah yang digunakan untuk mendapatkan representasi gradien yang lebih akurat sepanjang arah CF, yaitu, Persamaan (9.33).
9.5.2 OpenFOAM®
In OpenFOAM®, beberapa jenis teknik evaluasi gradien didefinisikan: metode Green-Gauss standar, metode kuadrat terkecil orde kedua, dan metode kuadrat terkecil orde keempat. Perhatian akan difokuskan pada metode Green-Gauss di sini. Namun, diskritisasi dalam semua kasus dilakukan secara eksplisit dan oleh karena itu merupakan bagian dari ruang nama operator fvc. Gradien Green-Gauss didefinisikan di pusat sel, seperti dalam Persamaan (9.4), dan kode sumbernya di OpenFOAM terletak di direktori “src/finiteVolume/finiteVolume/gradSchemes/gaussGrad”. Dalam implementasi, evaluasi gradien dilakukan dalam dua langkah berikut:
– Interpolasi ke wajah variabel
– Evaluasi formula Green-Gauss
Interpolasi ke wajah dilakukan dalam rutinitas calcGrad yang tercantum di bawah ini (Listing 9.4).
Sebagai langkah pertama, nilai-nilai diinterpolasi ke wajah dan disimpan dalam bidang generik “vsf” (kelas interpolasi akan dijelaskan dengan lebih detail di Bab. 11). Kemudian gradien dihitung berdasarkan formula Green-Gauss dalam rutinitas gradf yang ditunjukkan dalam Listing 9.5.
Penjumlahan atas wajah sel dilakukan menggunakan alamat LDU. Dengan demikian, “for” loop yang mengevaluasi jumlah atas wajah sel didasarkan hanya pada penomoran wajah global dan menggunakan vektor penomoran atas dan bawah untuk menambah atau mengurangi (Listing 9.6) fluks ke nilai sel. Setelah semua fluks telah diproses, nilai bersihnya dibagi oleh volume untuk menghasilkan gradien, seperti dalam Persamaan 9.4.
Tipe gradien didefinisikan dalam fvSchemes yang ditunjukkan dalam Listing 9.7.
Skema interpolasi wajah didefinisikan seperti yang ditampilkan dalam Listing 9.8.
Konsep mengevaluasi gradien berdasarkan skema interpolasi generik yang harus didefinisikan oleh kamus, memungkinkan penghitungan gradien dengan formula Green-Gauss dengan beberapa cara hanya dengan mengubah skema interpolasi.
Jika koreksi skew, seperti yang didefinisikan dalam Persamaan (9.8), diperlukan maka definisi skema interpolasi di atas harus diganti dengan (Listing 9.9)
Sebuah sintaks yang lebih ringkas dapat digunakan untuk mendefinisikan gradien di mana tipe interpolasi ditentukan langsung di bawah gradSchemes seperti yang ditampilkan dalam Listing 9.10.
Dalam kasus ini, metode interpolasi didefinisikan langsung dalam kamus gradien. Pilihan jenis sintaks terserah pengguna dengan memperhatikan bahwa definisi terpisah dari skema interpolasi membantu menjelaskan berbagai langkah perhitungan gradien.