标签:surfaceScalarField phi const propertiesName OpenFOAM alphaRhoPhi rho 可压缩 湍流
分析可压缩湍流部分的继承关系
继承关系:

solver 中:
Info << "Creating turbulence model.n" << nl; autoPtr<compressible::turbulenceModel> turbulence ( compressible::turbulenceModel::New ( rho, U, phi, thermo ) );
|
其中 Foam::compressible::turbulenceModel
是 Foam::compressible::ThermalDiffusivity<CompressibleTurbulenceModel<fluidThermo>>
的 typedef
所以这里首先调用的是 ThermalDiffusivity
中的 New
:
template<class BasicTurbulenceModel> Foam::autoPtr<Foam::ThermalDiffusivity<BasicTurbulenceModel>> Foam::ThermalDiffusivity<BasicTurbulenceModel>::New ( const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, const transportModel& transport, const word& propertiesName ) { return autoPtr<ThermalDiffusivity> ( static_cast<ThermalDiffusivity*>( BasicTurbulenceModel::New ( rho, U, phi, transport, propertiesName ).ptr()) ); }
|
CompressibleTurbulenceModel<class TransportModel>
是 BasicTurbulenceModel
的实例化,
因此接下来来到了 CompressibleTurbulenceModel
声明:
template<class TransportModel> class CompressibleTurbulenceModel : public TurbulenceModel < geometricOneField, volScalarField, compressibleTurbulenceModel, TransportModel >
|
New
函数:
template<class TransportModel> Foam::autoPtr<Foam::CompressibleTurbulenceModel<TransportModel>> Foam::CompressibleTurbulenceModel<TransportModel>::New ( const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, const transportModel& transport, const word& propertiesName ) { return autoPtr<CompressibleTurbulenceModel> ( static_cast<CompressibleTurbulenceModel*>( TurbulenceModel < geometricOneField, volScalarField, compressibleTurbulenceModel, transportModel >::New ( geometricOneField(), rho, U, phi, phi, transport, propertiesName ).ptr()) ); }
|
接着来到 TurbulenceModel
这里用到了 RTS
New
函数:
static autoPtr<TurbulenceModel> New ( const alphaField& alpha, const rhoField& rho, const volVectorField& U, const surfaceScalarField& alphaRhoPhi, const surfaceScalarField& phi, const transportModel& transport, const word& propertiesName = turbulenceModel::propertiesName );
|
构造函数:
Foam::TurbulenceModel<Alpha, Rho, BasicTurbulenceModel, TransportModel>:: TurbulenceModel ( const alphaField& alpha, const rhoField& rho, const volVectorField& U, const surfaceScalarField& alphaRhoPhi, const surfaceScalarField& phi, const transportModel& transport, const word& propertiesName ) : BasicTurbulenceModel ( rho, U, alphaRhoPhi, phi, propertiesName ), alpha_(alpha), transport_(transport) {}
|
它的模板基类 BasicTurbulenceModel
的实例化是 compressibleTurbulenceModel
:
Foam::compressibleTurbulenceModel::compressibleTurbulenceModel ( const volScalarField& rho, const volVectorField& U, const surfaceScalarField& alphaRhoPhi, const surfaceScalarField& phi, const word& propertiesName ) : turbulenceModel ( U, alphaRhoPhi, phi, propertiesName ), rho_(rho) {}
|
最后终于来到了幕后大 Boss:turbulenceModel
面前:
Foam::turbulenceModel::turbulenceModel ( const volVectorField& U, const surfaceScalarField& alphaRhoPhi, const surfaceScalarField& phi, const word& propertiesName )
|
初始化列表中:alphaRhoPhi_(alphaRhoPhi)
另有函数:
inline const surfaceScalarField& alphaRhoPhi() const { return alphaRhoPhi_; }
|
combustionModel.H
中:
inline Foam::tmp<Foam::surfaceScalarField> Foam::combustionModel::phi() const { return turbulence().alphaRhoPhi(); }
|
就是说,solver
中 #include "compressibleCreatePhi.H"
创建的 phi
逐级传到了湍流模型中,我可以使用 Foam::combustionModel::phi()
来调用它!!!这是合理的!!!
原文:大专栏 OpenFOAM 可压缩湍流库深度解析
标签:surfaceScalarField,phi,const,propertiesName,OpenFOAM,alphaRhoPhi,rho,可压缩,湍流
来源: https://www.cnblogs.com/petewell/p/11597572.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。