Model 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 seperti (Listing 17.5).
Listing 17.5 Pernyataan yang digunakan untuk memilih model k − ε
Karena merupakan turunan dari kelas dasar virtual “turbulenceModel”, semua fungsi dasar virtualnya harus didefinisikan sebagai berikut (Listing 17.6).
Listing 17.6 Pernyataan yang digunakan untuk mendefinisikan tensor tegangan efektif dan medan difusi dalam persamaan momentum
Fungsi “divDevReff” mengembalikan kontribusi difusi dalam persamaan momentum termasuk tegangan Reynolds, yaitu,
Dalam hal ini, jenis data yang dikembalikan oleh fungsi (Listing 17.7) berupa 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 bergantung hanya pada medan gradien kecepatan dan viskositas total atau efektif (nuEff()). Ini berarti bahwa OpenFOAM® menerapkan kontribusi tegangan geser dinding dengan memodifikasi hanya viskositas turbulen di dinding; dengan demikian menerapkan Persamaan (17.77).
Pembuatan dan penyelesaian persamaan model turbulensi didefinisikan melalui fungsi anggota “correct()” seperti dalam Listing 17.8.
Listing 17.8 Perakitan dan penyelesaian model turbulensi
Di sini OpenFOAM® pertama-tama merakit dan kemudian menyelesaikan persamaan ε sebelum persamaan k, menggunakan skrip dalam Listing 17.9 seperti
Listing 17.9 Merakit dan selesaikan persamaan ε
di mana lapangan G mendefinisikan istilah produksi global sebelumnya didefinisikan dalam Persamaan (17.28) sebagai Pk. Berdasarkan pendekatan fungsi dinding, sebelum menyelesaikan persamaan ε, perlu untuk memodifikasi nilai ε di semua sentroid sel yang terpasang pada dinding menggunakan Persamaan (17.81) dan (17.83). Dalam OpenFOAM®, nilai-nilai ε dan Pk diubah di dinding dengan mendefinisikan kondisi batas dinding khusus untuk lapangan ε dengan modifikasi yang dipaksakan melalui fungsi “epsilon_.boundaryField().updateCoeffs();” dengan definisi batas yang didedikasikan 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-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 yang sesuai dengan istilah produksi Pk). Variabel “w” hanya merupakan faktor bobot untuk memperhitungkan sel-sel batas yang berhubungan dengan lebih dari satu dinding (misalnya, sudut). Untuk wajah standar, “w” memiliki nilai satu.
Listing 17.10 Menghitung ε dan memodifikasi produksi energi kinetik turbulensi di sel-sel dekat dinding
Perlu dicatat bahwa sementara G atau Pk adalah istilah sumber, ε adalah lapangan yang dipecahkan oleh persamaan transport. Untuk memaksakan nilai yang sebelumnya dihitung dalam sebuah sel, matriks harus dimanipulasi di 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 memaksa nilai yang diharapkan dari variabel dalam daftar sel.
Listing 17.12 Fungsionalitas kelas “fixedInternalValueFvPatchField”
Fungsi ini dipanggil dari kelas “kEpsilon::correct()” setelah merakit matriks dengan “epsEqn().boundaryManipulate(epsilon_.boundaryField());”. Setelah persamaan ε diselesaikan, OpenFOAM® melanjutkan untuk merakit dan menyelesaikan persamaan k, seperti yang ditunjukkan dalam Listing 17.13.
Listing 17.13 Merakit dan selesaikan persamaan k
Dalam hal ini, tidak diperlukan manipulasi tambahan karena istilah produksi Pk sudah diubah di dinding dan kondisi batas untuk k hanya berupa tipe gradien nol (“zeroGradient”).
Setelah menghitung nilai k dan ε, viskositas turbulendiperbarui dan kemudian diperbaiki di batas dinding sesuai dengan Persamaan (17.77). Ini dilakukan dengan menggunakan pernyataan berikut dalam Listing 17.14:
Listing 17.14 Memperbarui viskositas turbulen eddy di dinding
Variabel nut (vt) “volScalarField” ditentukan dalam konstruktor kelas kEpsilon seperti yang ditunjukkan dalam Listing 17.15 sebagai
Listing 17.15 Skrip yang digunakan untuk mendefinisikan viskositas turbulen eddy
di mana fungsi “autoCreateNut” digunakan. Fungsi ini didefinisikan dalam file “backwardsCompatibilityWallFunctions.C”, yang ditempatkan di direktori “FOAM_SRC/src/turbulenceModels/incompressible/RAS/backwardsCompatibility/wallFunctions”. Fungsi “autoCreateNut” bertindak untuk membuat objek (vt) dengan membaca file dan tipe-tipe batas terkait hanya jika sudah ada di 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/derivedFv PatchFields/wallFunctions/nutWallFunctions” dan mewarisi kelas dasar bernama “nutWallFunctionFvPatchScalarField”, yaitu
Listing 17.18 Definisi kelas
Kelas dasar “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 dibedakan dari kelas turunannya. Berdasarkan itu, kelas turunan “nutkWallFunction FvPatchScalarField” mengimplementasikan fungsi “calcNut” sesuai dengan asumsi Spalding dan Persamaan (17.77) seperti pada Listing 17.20.
Listing 17.20 Menghitung viskositas turbulen di dinding sesuai dengan fungsi dinding Spalding
Setelah viskositas turbulen eddy diperbarui berdasarkan nilai fungsi dinding, tegangan geser momentum kemudian dievaluasi dengan benar.