infistream

Turbulence Modelling K-epsilon

Kelas “kEpsilon” mengimplementasikan versi standar dari model k − ε yang diberikan oleh Persamaan (17.25) dan (17.26). Ini mendefinisikan konstanta-konstanta yang diperlukan dan set variabel yang digunakan dalam model, seperti yang ditunjukkan dalam Listing 17.4.

Listing 17.4 Skrip yang mendefinisikan model k − ε

Ini dapat dipilih dari kamus “RASProperties” dengan nama “kEpsilon” yang didefinisikan di bawah “TypeName” dari kelas sebagai (Listing 17.5)

Listing 17.5 Pernyataan yang digunakan untuk memilih model k-ε.

Diturunkan dari kelas virtual dasar “turbulenceModel”, semua fungsinya harus didefinisikan sebagai berikut (Listing 17.6)

Listing 17.6 Pernyataan yang digunakan untuk mendefinisikan tensor tegangan efektif dan bidang difusi dalam persamaan momentum.

Fungsi “divDevReff” mengembalikan kontribusi difusi dalam persamaan momentum termasuk tegangan Reynolds, yaitu

Dalam kasus ini, jenis data yang dikembalikan oleh fungsi (Listing 17.7) berupa sebuah fvMatrix yang didefinisikan sebagai

Listing 17.7 Kontribusi implisit dan eksplisit dari istilah Laplacian.

Di mana Laplacian dari medan kecepatan dibagi menjadi kontribusi matriks implisit dan eksplisit. Penting untuk mencatat bahwa istilah divDevReff hanya bergantung pada medan gradien kecepatan dan viskositas total atau efektif (nuEff()). Ini berarti bahwa OpenFOAM® mengimplementasikan kontribusi gaya geser dinding dengan memodifikasi hanya viskositas turbulen di dinding; dengan demikian mengimplementasikan Persamaan (17.77). Pengumpulan dan penyelesaian persamaan model turbulensi didefinisikan melalui fungsi anggota “correct()” seperti pada Listing 17.8.

Listing 17.8 Pengumpulan dan penyelesaian model turbulensi.

Di sini, OpenFOAM® pertama-tama mengumpulkan dan kemudian menyelesaikan persamaan ε sebelum persamaan k, menggunakan skrip seperti yang tercantum pada Listing 17.9.

Listing 17.9 Mengumpulkan dan menyelesaikan persamaan ε.

Di mana medan G mendefinisikan istilah produksi global yang sebelumnya didefinisikan dalam Persamaan (17.28) sebagai Pk. Berdasarkan pendekatan fungsi dinding, sebelum menyelesaikan persamaan ε, perlu untuk memodifikasi nilai ε di semua sentroid sel yang terhubung ke dinding menggunakan Persamaan (17.81) dan (17.83). Dalam OpenFOAM®, nilai-nilai ε dan Pk diubah di dinding dengan mendefinisikan kondisi batas dinding khusus untuk medan ε dengan modifikasi yang dipaksa melalui fungsi “epsilon_.boundaryField(). updateCoeffs();” dengan definisi batas khusus untuk laju dissipasi ε yang ditemukan di bawah direktori “FOAM_SRC/turbulenceModels/incompressible/RAS/ derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction”. Berdasarkan model fungsi dinding, kelas ini harus memperbarui nilai dari dua variabel ε dan Pk. Operasi ini dilakukan oleh fungsi “calculate” di mana, setelah mendefinisikan semua variabel yang diperlukan, siklus loop mengubah nilai-nilai yang sesuai (dengan G dalam Listing 17.10 sesuai dengan istilah produksi Pk). Variabel “w” hanya merupakan faktor bobot untuk memperhitungkan sel batas yang berkontak dengan lebih dari satu dinding (misalnya, sudut). Untuk wajah standar, “w” memiliki nilai satu

Listing 17.10 Perhitungan ε dan modifikasi produksi energi kinetik turbulensi pada sel-sel dekat dinding.

Penting untuk dicatat bahwa sementara G atau Pk adalah istilah sumber, ε adalah sebuah medan yang diselesaikan oleh persamaan transportasi. Untuk memaksakan nilai yang sebelumnya dihitung di dalam sebuah sel, matriks harus dimanipulasi pada lokasi yang tepat, untuk mengembalikan nilai yang benar. Oleh karena itu, kelas “epsilonWallFunctionFvPatchScalarField” diturunkan, seperti yang ditunjukkan dalam Listing 17.11, dari kelas “fixedInternalValueFvPatchField” sesuai dengan

Listing 17.11 Membuat kelas “epsilonWallFunctionFvPatchScalarField” dari kelas “fixedInternalValueFvPatchField”.

dengan kelas “fixedInternalValueFvPatchField”, seperti yang ditunjukkan dalam Listing 17.12, hanya merupakan kelas pembungkus yang berisi fungsi khusus untuk memanipulasi matriks dengan memaksakan nilai yang diharapkan dari variabel dalam daftar sel

Listing 17.12 Fungsionalitas dari kelas “fixedInternalValueFvPatchField”.

Fungsi ini dipanggil dari kelas “kEpsilon::correct()” setelah merakit matriks dengan “epsEqn().boundaryManipulate(epsilon_.boundaryField());”. Setelah persamaan ε diselesaikan, OpenFOAM® melanjutkan ke pengumpulan dan penyelesaian persamaan k, seperti yang ditunjukkan dalam Listing 17.13.

Listing 17.13 Mengumpulkan dan menyelesaikan persamaan k.

Dalam kasus ini, tidak diperlukan manipulasi tambahan karena istilah produksi Pk sudah diubah di dinding dan kondisi batas untuk k adalah tipe gradien nol (“zeroGradient”).

Setelah menghitung nilai k dan ε, viskositas turbulen vt (=μt/ρ) diperbarui dan kemudian diperbaiki di batas dinding sesuai dengan Persamaan (17.77). Ini dilakukan menggunakan pernyataan berikut dalam Listing 17.14:

Listing 17.14 Memperbarui viskositas turbulen pada dinding.

Variabel “volScalarField” nut (vt) didefinisikan dalam konstruktor kelas kEpsilon seperti yang ditunjukkan dalam Listing 17.15 sebagai

Listing 17.15 Skrip yang digunakan untuk mendefinisikan viskositas turbulen.

Di mana fungsi “autoCreateNut” digunakan. Fungsi ini didefinisikan dalam file “backwardsCompatibilityWallFunctions.C”, yang ditempatkan di direktori “FOAM_SRC/src/turbulenceModels/incompressible/RAS/backwardsCompatibility/wallFunctions”. “autoCreateNut” bertindak untuk membuat objek (vt) dengan membaca file dan jenis batas terkait hanya jika sudah ada dalam direktori kerja (Listing 17.16).

Listing 17.16 Pernyataan “IF” untuk memeriksa definisi file nut.

Untuk kasus di mana file “nut” tidak ditemukan, fungsi dinding standar Spalding diterapkan menggunakan definisi kelas patch batas “nutkWallFunctionFvPatchScalarField”, melalui pernyataan berikut (Listing 17.17):

Listing 17.17 Penerapan fungsi dinding standar Spalding.

Kelas “nutkWallFunctionFvPatchScalarField” yang dijelaskan dalam Listing 17.18 terletak di direktori “FOAM_SRC/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions” dan mewarisi kelas dasar yang bernama “nutWallFunctionFvPatchScalarField”, yaitu

Listing 17.18 Definisi kelas.

Kelas “nutWallFunctionFvPatchScalarField” dalam Listing 17.19 adalah kelas dasar yang membungkus perubahan nilai batas viskositas turbulen “nut” (vt) dengan mendefinisikan fungsi “updateCoeffs” terkait sebagai

Listing 17.19 Definisi fungsi updateCoeffs().

Di mana fungsi “calcNut” didefinisikan sebagai virtual murni dan harus diimplementasikan dari kelas turunannya. Berdasarkan itu, kelas turunan “nutkWallFunctionFvPatchScalarField” mengimplementasikan fungsi “calcNut” sesuai dengan asumsi Spalding dan Persamaan (17.77) seperti yang ditunjukkan dalam Listing 17.20.

Listing 17.20 Menghitung viskositas turbulen di dinding sesuai dengan fungsi dinding Spalding.

Setelah viskositas turbulen diperbarui berdasarkan nilai fungsi dinding, tegangan geser momentum kemudian dievaluasi dengan benar.