天天看點

openfoam學習心得-dynamic mesh_day1

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

繼續閱讀