OpenFOAM大涡模拟湍流模型之Smagorinsky模型代码详解
本人南航CFD研究生,歡迎加qq:1019003721互相學(xué)習(xí)討論!
本文將介紹OpenFOAM里面的大渦模擬相關(guān)代碼。起因是最近學(xué)習(xí)OpenFOAM中的大渦模擬,在一篇OpenFOAM中的LES湍流模型及其植入的專欄中看到,但是里面的公式不知道是什么格式,雖然知道一些變量,但一時間也無法弄清楚。因此一邊學(xué)習(xí)張兆順教授的湍流大渦數(shù)值模擬的理論與應(yīng)用及相關(guān)文獻,一邊看代碼校對。(相關(guān)文獻資料下載)在這期間,看到CFD中文網(wǎng)的李東岳教授發(fā)的CFD中的LES湍流模型。這里面講得非常詳細。我將結(jié)合上面的內(nèi)容和OpenFOAM對應(yīng)的Smagorinsky.C中的代碼盡可能仔細地講解。
LES控制方程
OpenFOAM內(nèi)含有非常豐富的操作符和算子等。只要確定了控制方程,就能在求解器里自定義要程序解的方程了。在大渦模擬中,省去推導(dǎo)過程,控制方程一般如下形式(張兆順,2007):
如果寫成矩陣形式,引用李東岳的網(wǎng)站:
先看上面的分量形式。在這個控制方程中,要想在OpenFOAM里求解流場變量,仍需要知道τkk/3\tau_{kk}/3τkk?/3和νt\nu_tνt?才能封閉方程組。在這里,νt\nu_tνt?即為亞格子渦粘系數(shù),它在OpenFOAM中是nuSgs。而正應(yīng)力τkk\tau_{kk}τkk?則可以用亞格子動能代替:ksgs=τkk/2k_{sgs}=\tau_{kk}/2ksgs?=τkk?/2。ksgsk_{sgs}ksgs?在OpenFOAM中是k。
Boussinesq假定
具體推導(dǎo)可參照李東岳的博文,這里給出不可壓時的結(jié)果:
該方程描述了亞格子應(yīng)力τij\tau_{ij}τij?和νsgs\nu_{sgs}νsgs?、ksgsk_{sgs}ksgs?的關(guān)系。
Smagorinsky模型
在1967年Lilly給出了τkk/3\tau_{kk}/3τkk?/3的表達式(相關(guān)文獻):
τkk3=23νsgs2/(Ck△)2\frac{\tau_{kk}}{3}=\frac{2}{3}\nu_{sgs}^2/(C_k\triangle)^2 3τkk??=32?νsgs2?/(Ck?△)2
而正應(yīng)力τkk\tau_{kk}τkk?又可以通過ksgs=τkk/2k_{sgs}=\tau_{kk}/2ksgs?=τkk?/2來替換,最后得到νsgs\nu_{sgs}νsgs?和ksgsk_{sgs}ksgs?的關(guān)系:
νsgs=Ck△ksgs\nu_{sgs}=C_k\triangle\sqrt{k_sgs} νsgs?=Ck?△ks?gs?
由此,方程的封閉還差最后一個變量ksgsk_{sgs}ksgs?。Smagorinsky提出模型:
Sˉij:τij+Ceksgs32/△=0\bar{S}_{ij}:\tau_{ij}+C_ek_{sgs}^\frac{3}{2}/\triangle=0 Sˉij?:τij?+Ce?ksgs23??/△=0
通過代入上述各式,即可求解ksgsk_{sgs}ksgs?。過程可參考CFD中文網(wǎng)中一二發(fā)的帖子。
Ps:運算符“:”是雙重內(nèi)積,即兩張量先作矩陣乘法運算(點積),再進行縮并(Contraction)。因為參與運算的兩個張量都是二階,點積后仍為二階,但縮并后降二階,最后是零階,即一個數(shù)。最后這個方程是一個一元二次方程,按公式法求解即可。
在此引用一二發(fā)的帖子中的結(jié)果:
OpenFOAM中代碼
在OpenFOAM中,公式與上文所述一致,只是所用的變量名字不同:
\verbatimB = 2/3*k*I - 2*nuSgs*dev(D)whereD = symm(grad(U));k from D:B + Ce*k^3/2/delta = 0nuSgs = Ck*sqrt(k)*delta\endverbatimB就是τij\tau_{ij}τij?,D就是SijS_{ij}Sij?。
在Smagorinsky.C的代碼中,先計算了ksgsk_{sgs}ksgs?:
代碼中abc都與上面的結(jié)果一一對應(yīng)。
再計算νsgs\nu_{sgs}νsgs?并修正控制方程中的nut:
correctNut()在各求解器中都會有的,在計算完這一時間步之后,修正湍流粘度系數(shù),作下一時間步所用。這就是OpenFOAM植入湍流模型的邏輯:在不改變其控制方程的情況下,只修改湍流粘度系數(shù),就能達到計算湍流的目的。
參數(shù)CkC_kCk?在Lilly(1967)的文章中是0.094,和OpenFOAM中的對應(yīng)。而CeC_eCe?的來源尚不清楚,博文說Ce=1.048C_e=1.048Ce?=1.048是因為湍流模型基于GenEddyVisc model(一般渦粘性假設(shè)?),如有誤,請加qq1019003721進行勘誤,謝謝!
參考文獻
equations: I. the basic experiment[J]. Monthly weather review, 1963,
91(3): 99-164.
“numerical results from a nine-layer general circulation model,”.
monthly weather review, 91(12), 263-270.
turbulent channel flow at large reynolds number. Journal of Fluid
Mechanics, 41.
Symposium on Environmental Sciencer, IBM Form no. 320-1951, 195.
其中1235可以在我上傳的文件中下載。
總結(jié)
以上是生活随笔為你收集整理的OpenFOAM大涡模拟湍流模型之Smagorinsky模型代码详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练集和测试集 — 模型评估
- 下一篇: php中如何从键盘获取,在javascr