OpenFOAM源代码解析问题
-
大伙好,最近在读OpenFOAM源代码,遇到两个问题不太明白,望各路大神指点啊。
1)比如这样的语法:
theta.primitiveFieldRef() /= mesh.time().deltaTValue()*mesh.V();
以我幼儿园级别的C++语法知识,mesh是类对象,time()是成员函数,但搞不懂为何成员函数后面还可以加“.deltaTValue()”这个成员函数呢?2)经常看到这样的一个表达形式,
scalarField sumPhi ( fvc::surfaceSum(mag(phi))().primitiveField() );
这个代码我能读懂啥意思,就是求某个单元体的各个面的通量和,但有两个问题,一个是
surfaceSum(mag(phi))()
,为何(mag(phi))
后面还有个()
,费解啊,不懂啊;第二个是primitiveField()
这个函数是干啥的,看到很多地方都用它。求指点,好人一生平安!!!
-
mesh是类对象,time()是成员函数,但搞不懂为何成员函数后面还可以加“.deltaTValue()”这个成员函数呢?
可以理解成mesh是类对象,time()是成员函数,但是还返回一个类对象,其实mesh.time()返回的是TimeState对象,然后deltaTValue()是TimeState对象的成员函数
()
OpenFOAM有一些括号被重载了。目前你说的这个表示tmp类型的重载()
,要不然的话返回的是一个tmp类型。primitiveField()
可以理解成是内部场。求某个单元体的各个面的通量和
对,就是这个意思。对网格单元的面的通量的绝对值加和