movingConeTopoFvMesh使用的一些疑惑
-
各位大佬,以下是使用movingConeTopoFvMesh提示我需要输入的参数,
dynamicFvMesh movingConeTopoFvMesh; motionVelAmplitude (1 0 0); motionVelPeriod 1; leftEdge 0; leftObstacleEdge 0; rightObstacleEdge 1; right 1;
但运行时跳出报这样错误,求教怎么解决
Attempt to return primitive entry ITstream : /home/fang/OpenFOAM/fhc/study/cavity/constant/dynamicMeshDict.right, line 25, IOstream: Version 2.0, format ASCII, line 0, OPENED, GOOD primitiveEntry 'right' comprises on line 25 the label 1 as a sub-dictionary
-
@xiaolin 你用的是哪个版本?我用OpenFOAM 7,这个动网格设置大约是这个风格
dynamicFvMeshLibs ("libmovingConeTopoFvMesh.so"); dynamicFvMesh movingConeTopoFvMesh; movingConeTopoXXXFvMeshCoeffs { motionVelAmplitude (0 0.00006 0); motionVelPeriod 1; //leftEdge 0; leftObstacleEdge 0.2; rightObstacleEdge 1.5; left { minThickness 2.5e-3; maxThickness 7.6e-3; } right { minThickness 1.2e-3; maxThickness 2.8e-3; } }
-
您好,史老师,我在设置的时候碰到这个问题,是不是需要在初始文件中定义边界运动情况还是网格拉伸区域范围
Face extrusion zone contains no faces. Please check your mesh definition.
我使用的是6,所以删除了一点,不知道会不会产生影响呢
dynamicFvMesh movingConeTopoFvMesh; motionVelAmplitude (0 0.3 0); motionVelPeriod 1; leftEdge -0.1; leftObstacleEdge 0; rightObstacleEdge 2; left { minThickness 0.005; maxThickness 0.05; } right { minThickness 0.005; maxThickness 0.05; }
-
@xiaolin 我刚刚看了一下,我用的是OpenFOAM 6,前面写错了抱歉。
下面是movingConeTopoFvMesh中对应的构造函数(初始化函数)Foam::movingConeTopoFvMesh::movingConeTopoFvMesh(const IOobject& io) : topoChangerFvMesh(io), motionDict_ ( IOdictionary ( IOobject ( "dynamicMeshDict", time().constant(), *this, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE, false ) ).optionalSubDict(typeName + "Coeffs") //在movingConeTopoFvMeshCoeffs中寻找对应参数 ), motionVelAmplitude_(motionDict_.lookup("motionVelAmplitude")), motionVelPeriod_(readScalar(motionDict_.lookup("motionVelPeriod"))), curMotionVel_ ( motionVelAmplitude_*sin(time().value()*pi/motionVelPeriod_) ), leftEdge_(readScalar(motionDict_.lookup("leftEdge"))), curLeft_(readScalar(motionDict_.lookup("leftObstacleEdge"))), curRight_(readScalar(motionDict_.lookup("rightObstacleEdge"))) { ... }
从构造函数可以看出来,所有的动网格参数要从一个movingConeTopoFvMeshCoeffs的字典中查找获得,所以,在设置动网格参数的时候,这个字典是不能少的,其对应结构如下:
movingConeTopoFvMeshCoeffs { ... }
你好像缺少了这个结构
-
@史浩
好的,已经照您说的加了,不过我的6里面并不包含libmovingConeTopoFvMesh.so这个动态链接库,dynamicFvMeshLibs ("libmovingConeTopoFvMesh.so");
所以这个我没加进去,不知道会不会有影响,现在碰到了这个问题
Selecting dynamicFvMesh movingConeTopoFvMesh Initial time:0 Initial curMotionVel_:(0 0 0) Time = 0 Adding zones and modifiers to the mesh zone: 0() zone: 0() Adding mesh zones. --> FOAM FATAL ERROR: Face extrusion zone contains no faces. Please check your mesh definition.
尝试使用求解器计算时出现如上错误,zone无边界面,我想达成的效果如下,底部滑块可以左右移动
有如下几点疑惑:在DyDict里只给定了运动周期和振幅,leftEdge,leftObstacleEdge,rightObstacleEdge,因为没有实例,所以想问程序怎么识别我想运动哪一块边界,即出现上述Zone no faces的原因
2.能不能应用于模型内部滑块上下左右的可变运动,既然运动通过motionVelAmplitude和motionVelPeriod给定,那leftEdge,leftObstacleEdge,rightObstacleEdge达到一种什么目的?看不太明白