关于omega_和omega_()中的括号
-
各位好!
我看到了东岳老师之前在CFD online上的一篇post:call a tmp formal value without a parentheses?,我最近在研究k-omega SST模型时也发现了类似的问题。
例如在定义epsilonByk时,用到的是有括号的omega_():template<class BasicEddyViscosityModel> tmp<volScalarField::Internal> kOmegaSSTBase<BasicEddyViscosityModel>::epsilonByk ( const volScalarField& F1, const volTensorField& gradU ) const { return betaStar_*omega_(); } 而在定义分段函数F2时用到的是omega_:
template<class BasicEddyViscosityModel> tmp<volScalarField> kOmegaSSTBase<BasicEddyViscosityModel>::F2() const { tmp<volScalarField> arg2 = min ( max ( (scalar(2)/betaStar_)*sqrt(k_)/(omega_*y_), scalar(500)*(this->mu()/this->rho_)/(sqr(y_)*omega_) ), scalar(100) ); return tanh(sqr(arg2)); }
我试着用Info将omega_和omega_()都输出到log文件中,得到的是完全一样的体标量场。但是有时如果删去原有的括号或是加上括号会引起报错。说明omega_和omega_()具有同样的值,但是类型不同。不知道这个括号是否也是由于<tmp>类所引起的?
-
@xpqiu 谢谢您的回复,我把 omega_ 换成omega_() ,报了类型不匹配的错误,看了一下错误提示确实omega_() 是Internal的,但是omega_() 的相关定义在哪里可以找到呢?我看这个类里面没有,是在父类中吗?还是定义在volScalarField中呢?我看到GeometricField里面有一个重载:
inline const Internal& operator()() const;
不知道实现的是不是就是这个返回Internal信息的功能
-
受益匪浅呀
2020年7月24日 09:30
6/10
2025年1月10日 16:27