turbulence->divDevSigma(U),不可能完成的任务
-
首先,turbulence为一个指针,类型为
incompressible::momentumTransportModel
(在createFields.H中):autoPtr<incompressible::momentumTransportModel> turbulence ( incompressible::momentumTransportModel::New(U, phi, laminarTransport) );
为了能合理调用上述代码,需要在求解器中引入相应的类型,因此头文件中需要包含kinematicMomentumTransportModel.H。在这个文件以及上述高亮的代码中,
-
incompressible::momentumTransportModel
中的incompressible
为名称空间 -
momentumTransportModel
为IncompressibleMomentumTransportModel<transportModel>
,其中的transportModel
在createFields.H中被定义为laminarTransport
所以
turbulence
为一个autoPtr<incompressible::IncompressibleMomentumTransportModel<laminarTransport>>
类型。这并不是一个具体的类型,因此需要New
出来一个。同时,在IncompressibleMomentumTransportModel.H中定义的
IncompressibleMomentumTransportModel
继承于MomentumTransportModel
。MomentumTransportModel
又继承与incompressibleMomentumTransportModel
,incompressibleMomentumTransportModel
又继承于momentumTransportModel
。所以,在IncompressibleMomentumTransportModel
被构造的时候,上述类型均被构造。整理一下,在对
IncompressibleMomentumTransportModel<transportModel>
使用New
函数的时候,需要顺次进行构造:
-> IncompressibleMomentumTransportModel
-> MomentumTransportModel
-> incompressibleMomentumTransportModel
-> momentumTransportModel(在这一步读取算例constant文件夹下的momentumTransport文件)这还没完,上述类型都是虚基类。比如,在构建
-