@李东岳 东岳老师还记得我哈哈,我现在已经毕业了,现在虽然还在搞相关工作但不是专门做算法的,这几年搞的方向也比较杂,但主要还是围绕openfoam做流固耦合相关的
吴优
帖子
-
关于omega_和omega_()中的括号 -
基于Fluent 中的UDF做双向流固耦合。@csfine 讨论的话可以直接在帖子里,有问题大家都能看到
-
关于omega_和omega_()中的括号@xpqiu 谢谢您的回复,我把 omega_ 换成omega_() ,报了类型不匹配的错误,看了一下错误提示确实omega_() 是Internal的,但是omega_() 的相关定义在哪里可以找到呢?我看这个类里面没有,是在父类中吗?还是定义在volScalarField中呢?我看到GeometricField里面有一个重载:
inline const Internal& operator()() const;
不知道实现的是不是就是这个返回Internal信息的功能
-
declareRunTimeSelectionTable在基类中可否同时调用两个?各位前辈好,我最近准备从其他版本移植一个动网格功能时发现新旧版本之间motionSolver类在调用declareRunTimeSelectionTable函数时存在不同,旧版本中argList使用了Istream,新版本改为了Iodictionary。这导致旧版本的派生类移植到新版本遇到问题,如果直接改新版本的话又会导致其他派生类出现问题。因此可否在基类motionSolver中调用两次declareRunTimeSelectionTable,argList分别使用Istream和Iodictionary?
事实上我在polyPatch.H中看到了调用两个declareRunTimeSelectionTable的例子:TypeName("patch"); //- Debug switch to disallow the use of genericPolyPatch static int disallowGenericPolyPatch; // Declare run-time constructor selection tables declareRunTimeSelectionTable ( autoPtr, polyPatch, word, ( const word& name, const label size, const label start, const label index, const polyBoundaryMesh& bm, const word& patchType ), (name, size, start, index, bm, patchType) ); declareRunTimeSelectionTable ( autoPtr, polyPatch, dictionary, ( const word& name, const dictionary& dict, const label index, const polyBoundaryMesh& bm, const word& patchType ), (name, dict, index, bm, patchType) );
但是不清楚是否是为了实现上述的功能?
-
超算上并行计算问题你可以试一下这里面的方法链接文本,这个报错一般就是指你的算例发散了,这个方法有可能会让你多算几步,但如果计算本身是发散的,你检查log文件时还是会看到发散的结果。这种发散有可能是超算本身的问题,我之前用超算算过一个算例的不同工况,但是总有一些特定的工况在超算上会报fork error,但是在我的台式机里就没有问题。你最好先在自己的设备里完整运行一遍,确定是不是发散的问题。
-
关于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>类所引起的?
-
关于《无痛苦N-S方程笔记》中动量方程的封闭问题你可以参考《The finite volume method in computational fluid dynamics: An advanced introduction with OpenFOAM and MATLAB》的第17.3章,以及该章节中引用的部分文献,应该可以解答你的问题
-
如何修改并编译kOmegaSSTBase?@东岳 谢谢老师的回复,我是按照在
turbulentTransportModels.C
加入了#include "kOmegaSST2.H" makeRASModel(kOmegaSST2);
然后在
kOmegaSST2.H
中#include "kOmegaSST2Base.H"
实现这一编译过程,但是还是会报错,似乎要增加一个新的Base需要修改的地方非常多。
我目前暂时采取的解决方案是直接在修改原base,增加了一个Switch,在算例的constant/turbulenceProperties
中设置true
来启动新功能,这样也算保留了原模型,打算后面如果找到更好的方法我再改过来 -
如何修改并编译kOmegaSSTBase?大家好,最近的研究中涉及到对kOmegaSST模型的自定义修改,kOmegaSST模型的结构非常特别,它的具体定义并不在kOmegaSST.C,而是在kOmegaSSTBase.C中,我需要修改的部分也在Base中。我希望实现的是从原模型复制一个副本,之后修改副本并编译,这样可以保留原模型。但是我在整个湍流模型的文件夹下的任何一个Make/flies文件中都找不到kOmegaSSTBase的相关信息,因此是不能直接通过在Make/flies中添加一行来编译的。我找到的一个相关的参考资料链接地址也是自定义了一个新的SST模型,但是他并没有修改过kOmegaSSTBase文件,因此我按照他的教程执行后,会遇到:
fatal error: myKOmegaSSTBase.H: 没有那个文件或目录
这应该还是Base文件没有正常编译引起的,似乎是需要先编译Base,有没有前辈可以赐教,十分感谢!
-
基于Fluent 中的UDF做双向流固耦合。弱耦合是可以实现的,如果你做的是刚体运动,就用DEFINE_CG_MOTION,如果你做的是非刚体的变形(比如弯曲变形之类的),你就要用DEFINE_GRID_MOTION,你自己定义的结构求解模块放入这两个宏内,就会随着时间推进每一步求解一次。从FLUENT中读取节点、面气动力的方法手册里都可以查到。
-
借助localPoints实现网格运动控制的问题各位foamer大家好,最近在做一个翼型的运动控制的算例,想实现一个翼型柔性运动与俯仰运动的耦合。现在在编写俯仰运动时遇到了问题。首先我用localPoints函数分别读取了翼型的x,y坐标,命令如下:
scalarField x = patch().localPoints().component(vector::X); scalarField y = patch().localPoints().component(vector::Y);
然后在operator里面乘以旋转矩阵,这里减去x,y是因为要求位移增量:
amplitudex_*((x)*cos(theta)-(y)*sin(theta)-x) + amplitudey_*((x)*sin(theta)+(y)*cos(theta)-y)
这个theta是一个时间变化的角度,例如:
scalar theta = 20*sin(20*t.value());
现在出现的问题是翼型在旋转过程中会边转边向旋转中心缩短,这个是什么原因?我个人感觉是我对localPoints函数读取点坐标理解有问题,不知道有没有人试过。
-
sixDoFRigidBodyMotion问题求助@一步西龙 你可以大致描述一下你是怎么给的这个柔性运动吗
-
rhoCentralFoam求解器的问题@zhangdong 如果mu随温度变化,transport就不选const而是sutherland,然后在transport中规定As,Ts取值