openfoam學習心得-dynamic mesh_day1
求解器中如果支援動網格将包括兩個頭檔案分别是:
dynamicFvMesh.H、createDynamicFvMesh.H
在src中搜尋這檔案的位置可以使用下列指令:
find $FOAM_SRC -name createDynamicFvMesh.H
dynamic mesh需要包含dynamicMeshDict檔案,同理可用find指令在tutorials中進行搜尋
find $FOAM_TUTORIALS -name dynamicMeshDict
c++文法:
autoPtr motionPtr_ //motionPtr_是個指針,指向的對象是motionSolver類
motionPtr_->newPoints() //調用motionSolver類中的newPoints()函數
//motionSolve是所有求解器的虛基類-newPoints()函數如下:
Foam::tmpFoam::pointField Foam::motionSolver::newPoints()
{
solve(); / /不同的求解器中對solve()函數的定義不同–動網格算法主要看這個函數
return curPoints(); / /FVM求解出來的是cell體中心的位移,這個函數就是從中心的位移插值網格頂點的位移
}
virtual void solve() = 0; / /定義在motionSolver類中的純虛函數,必須在子類中重寫
動網格主要就是兩點,第一邊界怎麼運動:随時間正弦運動?還是solution dependent?第二點知道了邊界随時間的變化規律,内部的網格點怎麼變化?—關于此點,用的最多的是dynamicMotionSolverFvMesh-拓撲不改變,網格變形,其一般是通過求解一個PDE來确定位移場的,那麼到底指定什麼樣的PDE呢,需要指定不同的MotionSolver,并給出MotionSolver求解時需要給出相應的系數。注意網格在動,流場也存在速度,那麼相當于動坐标系,故而算流量要以相對速度來計算。在這求解器代碼中有定義,動網格源碼主要位于這兩個地方:
/root/OpenFOAM/OpenFOAM-7/src/dynamicMesh/
/root/OpenFOAM/OpenFOAM-7/src/fvMotionSolver/fvMotionSolvers/ --solve()、curPoints()函數位于這裡
以上筆記來源于研發埠教程
dynamicMeshDict
/ /不知道如何設定輸入moveDynamicMesh
dynamicFVmesh dynamicMotionSolverFvMesh
motionSolverLibs
linux平台下,靜态庫通常字尾為.a,動态庫為.so,位于$FOAM_LIBBIN檔案夾下,使用指令ls $FOAM_LIBBIN | grep Motion發現此處連結的庫有三個。我們可以這樣 一級一級的debug來檢視缺少什麼字典。
以上操作來源于此視訊https://www.youtube.com/watch?v=JmC0ohzLJfo
筆者主要需要學習的是sixDoFRigidMotion,openfoamwiki上面有學習資源:https://
openfoamwiki.net/index.ph/Parameter_Definitions__dynamicMotionSolverFvMesh