openfoam中ddt()处理数据类型问题

Foam::tmp<Foam::Field >和Foam::tmp<Foam::GeometricField这两个有什么区别呢?
我在使用ddt()的时候提示我的错误是这个:


我认为应该是ddt的处理的数据类别有问题,我的数据类型是Foam::tmp<Foam::Field >,我如何把这个数据转换成ddt能够处理的数据类型呢?不知道想法对不对,希望能得到大家的帮助,谢谢

对于Foam::FieldFoam::GeometricField是继承的关系啊。
GeometricField -> DimensionedField -> Field
这一块可以参考:OpenFOAM GeometricField详解

对于tmp其是OpenFOAM中的智能指针,可以参考:OpenFOAM内存管理
你应该代码写的有问题,

tmp<volScalarField> trho = thermo.rho();
const volScalarField& rho = trho(); //********

fvScalarMatrix hEqn (fvm::ddt(rho, h)