Relaksasi Bawah
Metode relaksasi bawah yang digunakan dalam OpenFOAM® mencakup teknik implisit Patankar dan relaksasi variabel eksplisit. Lebih khususnya, relaksasi implisit hanya diterapkan pada objek fvMatrix (yaitu, matriks diskritisasi volume terbatas aktual) sementara relaksasi eksplisit hanya didefinisikan untuk objek GeometricField.
Relaksasi eksplisit yang dijelaskan oleh Persamaan (14.6) dapat ditemukan di file GeometricField.C dalam direktori “$FOAM_SRC/OpenFOAM/fields/GeometricFields/ GeometricField”. Fungsi khusus (Listing 14.6) di dalam kelas GeometricField untuk melakukan tugas ini diberikan oleh
di mana operator "==" menentukan nilai baru dari GeometricField sendiri berdasarkan nilai saat ini dan yang sebelumnya sesuai dengan Persamaan (14.6).
Secara umum, untuk secara eksplisit merelaksasi suatu variabel, pertama nilainya disimpan dalam array prevIter(), setelah itu perhitungan dilakukan untuk mendapatkan nilai prediksi baru, dan akhirnya relaksasi diterapkan. Sebagai contoh, menggunakan tekanan "p" sebagai variabel GeometricField, berikut harus ditulis (Listing 14.7):
Dalam kasus ini, nilai faktor relaksasi langsung dibaca dari kamus fvSolution. Jika pengembang memerlukan nilai konstan tertentu, misalnya 0.5, baris terakhir dalam Listing 14.5 harus digantikan dengan "p.relax(0.5);".
Relaksasi Patankar diterapkan langsung pada matriks koefisien dan dalam OpenFOAM®, itu diimplementasikan di dalam kelas fvMatrix. File fvMatrix.C dalam direktori "$FOAM_SRC/finiteVolume/fvMatrices/fvMatrix" berisi definisi relaksasi implisit yang diberikan dalam Listing 14.8.
Definisi fungsi cukup panjang, terutama karena batasan yang diberlakukan oleh persyaratan dominasi diagonal matriks koefisien, tetapi kode yang relevan terbaca (Listing 14.9)
Pada bagian pertama, setelah memeriksa tanda kemiringan suku sumber yang dilinearkan, referensi ke vektor diagonal dan sumber disiapkan. Diagonal asli disimpan di bawah bidang skalar "D0" dan kemudian dibagi oleh faktor relaksasi "alpha". Kontribusi tambahan ditambahkan ke vektor sumber matriks di mana "psi_" adalah variabel yang terkait dengan kelas fvMatrix. Suku sumber terlihat sedikit berbeda dari sisi kanan Persamaan (14.4) tetapi mendefinisikan kontribusi yang sama persis, seperti yang ditunjukkan dalam persamaan berikut:
