OpenFOAM中自帶的自適應加密只支持三維的,這里分兩種情況,一種是三維的自適應加密,
本文參考https://www.jianshu.com/p/b67bcaf3a440
和github上的https://github.com/krajit/dynamicRefine2DFvMesh
因為我做這個的目的是想算一個瞬態(tài)問題,而且加密區(qū)域不需要改變,所以用這樣的辦法來獲得一個有特定區(qū)域加密的網格。
結果

一、三維情況
## 1.1 更改求解器
**OpenFOAM版本:openfoam-v2012**
瞬態(tài)不可壓求解器有pisoFOAM和pimpleFOAM,其中只有pimpleFOAM添加了動網格和自適應網格模塊,所以采用pimpleFOAM求解器進行更改。
復制一個pimpleFOAM到另外位置,新建一個.H文件calculate_S.H
打開createFields.H文件,在其中添加
這代表了要加密的區(qū)域,s是一個沒有單位的標量,運行的時候只需要在“0”文件夾中復制一個“p”文件進行邊界條件的定義,這里先按下不表。
打開之前新建立的文件calculate_S.H,在里邊添加上
這里邊的**s.field()[i]**指的是之前新定義的一個標量場在第i個單元中的值,上邊簡單的代碼可以看出來,s的大小取決于距離圓心在(0,0)半徑為0.5的圓邊界的距離,距離越近,s的值越大,但是s不是無限大和無限小的,只有當distance小于0.5時,s才會被賦值,s的最大值是1000。
打開pimpleFoam.C文件,在runTime.write();之前添加上#include "calculate_S.H",具體哪個位置我也不好說,我的理解是只要在時間循環(huán)內和pimple循環(huán)外就是了。
最后打開Make/files,修改EXE = $(FOAM_USER_APPBIN)/dynamic_2,最后保存并回到終端wmake就行了。
## 算例
修改的部分就只是在0文件夾和constant文件夾下,復制p,并修改
我的p文件是這樣
修改成s文件是這樣
至于constant文件夾下的修改,要添加dynamicMeshDict
其他地方的意思可以參照這篇文章https://www.jianshu.com/p/b67bcaf3a440
然后運行dynamic_2就能看到特定區(qū)域的加密
# 不過這樣的加密是三維的,如果是二維的加密看下邊
參照github上的這個代碼
https://github.com/krajit/dynamicRefine2DFvMesh
不過是在openfoam8中wmake沒有報錯,在v2012中報錯了
因為我做這個的目的是想算一個瞬態(tài)問題,而且加密區(qū)域不需要改變,所以用這樣的辦法來獲得一個有特定區(qū)域加密的網格。