CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    movingConeTopoFvMesh使用的一些疑惑

    OpenFOAM
    2
    6
    1218
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • X
      xiaolin 最后由 编辑

      各位大佬,以下是使用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
      
      
      史 1 条回复 最后回复 回复 引用
      • 史
        史浩 讲师 @xiaolin 最后由 编辑

        @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;
            }
        }
        

        让我们随波逐流

        1 条回复 最后回复 回复 引用
        • X
          xiaolin 最后由 编辑

          您好,史老师,我在设置的时候碰到这个问题,是不是需要在初始文件中定义边界运动情况还是网格拉伸区域范围

          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;
              }
          
          
          史 1 条回复 最后回复 回复 引用
          • 史
            史浩 讲师 @xiaolin 最后由 编辑

            @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
            {
                ...
            }
            

            你好像缺少了这个结构

            让我们随波逐流

            1 条回复 最后回复 回复 引用
            • X
              xiaolin 最后由 编辑

              @史浩
              好的,已经照您说的加了,不过我的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无边界面,我想达成的效果如下,底部滑块可以左右移动
              2020-08-22 20-36-25 的屏幕截图(1).jpg
              有如下几点疑惑:在DyDict里只给定了运动周期和振幅,leftEdge,leftObstacleEdge,rightObstacleEdge,因为没有实例,所以想问程序怎么识别我想运动哪一块边界,即出现上述Zone no faces的原因
              2.能不能应用于模型内部滑块上下左右的可变运动,既然运动通过motionVelAmplitude和motionVelPeriod给定,那leftEdge,leftObstacleEdge,rightObstacleEdge达到一种什么目的?看不太明白

              史 1 条回复 最后回复 回复 引用
              • 史
                史浩 讲师 @xiaolin 最后由 编辑

                @xiaolin leftEdge没有意义,leftObstacleEdge(rightObstacleEdge)是指运动的左(右)侧边界的位置
                这个类其实是一个不太好用的类,你自己要改一下。这个建议你先去看一下源码,了解里面的操作流程,然后修改一下就可以自己用了,亲测可以

                让我们随波逐流

                1 条回复 最后回复 回复 引用
                • First post
                  Last post