在OpenFOAM中使用湍流模型(二)
在求解器中使用湍流模型
1.在求解器中添加頭文件。
#include "turbulenceModel.H"
//通過 turbulence->correct();求解湍流模型中的方程
2.在求解器的createField.H中實例化BasicCompressibleTurbulenceModel。
在turbulenceModel.H中有如下的selectors:
namespace Foam
{
namespace incompressible
{
typedef IncompressibleTurbulenceModel<transportModel> turbulenceModel;
typedef laminarModel<turbulenceModel> laminarModel;
typedef RASModel<turbulenceModel> RASModel;
typedef LESModel<turbulenceModel> LESModel;
template<class BasicCompressibleTurbulenceModel>
autoPtr<BasicCompressibleTurbulenceModel> New
(
const volVectorField& U,
const surfaceScalarField& phi,
const typename BasicCompressibleTurbulenceModel::transportModel&
transport,
const word& propertiesName = turbulenceModel::propertiesName
);
}
}
需要傳入4個參數,其中U在runTime.timeName()中讀取。
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
phi通過 #include "createPhi.H"創建。
第三個參數transport-model需要自己設定。這裡的Transport_Model應該是為有效粘度的計算做準備,例如在 模型中有:
//- Return the effective viscosity
virtual tmp<volScalarField> nuEff() const
{
return tmp<volScalarField>
(
new volScalarField
(
IOobject::groupName("nuEff", this->U_.group()),
this->nut() + this->nu()
)
);
}
在createField.H中實例化:
autoPtr<incompressible::turbulenceModel> turbulence
(
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
);
在[1]中有關於New的詳細分析,簡單地講此代碼會讀取turbulenceProperties這個字典,確定使用的湍流模型(PS:好複雜,我也沒有仔細看-*-)。
3.在求解器的Make/options中添加相應的需要包含的文件。
使用的頭文件在編譯時會到 EXE_INC(execute-include)中去尋找,這裡需要把路徑定義好。
EXE_INC =
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel
//turbulenceModel.H 就在該目錄下
添加需要鏈接的庫。
庫文件是一種已經編譯過了,需要使用是直接鏈接即可。修改後的湍流模型被編譯為了庫,將支持的湍流模型庫鏈接到Solvers的Make/options中,然後確保constant下設置的湍流模型可以被識別。
EXE_LIBS =
-lincompressibleTransportModels
-lincompressibleTurbulenceModel
-lincompressibleRASModels
-lincompressibleLESModels
參考資料:
[1]https://pingpong.chalmers.se/public/pp/public_courses/course08331/published/1507799955754/resourceId/4037154/content/41433022-b456-4cd1-b467-4f7ef688841e/e36b265f-f3f7-4199-a981-d8c7d3928653.html?language=en
[2]OpenFOAM guide/runTimeSelection mechanismOpen
推薦閱讀: