CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    rhoSimpleFoam算例初始值及边界问题

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

      报错:

      --> FOAM FATAL IO ERROR: 
      Cannot find patchField entry for far
      

      系统信息:win10,VMware Ubantu20.04,openFoam 7
      网格:pointwise 三维C-H网格
      边界:inlet,outlet,far(右侧外边界),wing,sym
      OF刚上手,想计算个机翼。
      我拷贝二维的naca0012算例 $FOAM_TUTORIALS/compressive/aerofoilNACA0012,根据近期学习,我的理解是只要把常规二维算例中frontAndback的empty边界条件(对应我算例的far和sym)改为相应的patch和symmetry即可。
      其中我发现的一个问题是,tutorial算例/0的初始值文件(贴出U,其他类似)设置方式为:

      FoamFile
      {
          version     2.0;
          format      ascii;
          class       volVectorField;
          object      U;
      }
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      Uinlet          (250 0 0);
      
      dimensions      [0 1 -1 0 0 0 0];
      
      internalField   uniform $Uinlet;
      
      boundaryField
      {
          freestream
          {
              type            freestreamVelocity;
              freestreamValue uniform $Uinlet;
              value           uniform $Uinlet;
          }
      
          wall
          {
              type            noSlip;
          }
      
          #includeEtc "caseDicts/setConstraintTypes"
      }
      
      

      区别于常规的结构:

      boundaryField
      {
          名称1
          {
              type            类型;
          }
         名称2
          {
              type            类型;
          }
      }
      
      

      看了半天,我的理解是patch类型边界就是freestream类型,由于机翼或翼型计算外流,上下前后自由流条件相同,就不用常规写法,一个个写了。

      于是,我检查了/0下文件,所有文件都是这个结构写的,我就没啥改动,直接运行了。。。
      结果出现报错:

      --> FOAM FATAL IO ERROR: 
      Cannot find patchField entry for far
      
      file: /mnt/hgfs/openfoam/sharerun/testwing/0012noswpc9/0/p.boundaryField from line 27 to line 74.
      
          From function void Foam::GeometricField<Type, PatchField, GeoMesh>::Boundary::readField(const Foam::DimensionedField<TypeR, GeoMesh>&, const Foam::dictionary&) [with Type = double; PatchField = Foam::fvPatchField; GeoMesh = Foam::volMesh]
          in file /home/rebel/OpenFOAM/OpenFOAM-7/src/OpenFOAM/lnInclude/GeometricBoundaryField.C at line 188.
      
      FOAM exiting
      
      
      [1]+  退出 1                rhoSimpleFoam > log.rhoSimpleFoam
      

      Google了半天,发现一般这种error都是缺分号造成的。。
      可是我p文件就是没改动的那种啊。。。

      FoamFile
      {
          version     2.0;
          format      ascii;
          class       volScalarField;
          object      p;
      }
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      pOut            1e5;
      
      dimensions      [1 -1 -2 0 0 0 0];
      
      internalField   uniform $pOut;
      
      boundaryField
      {
          freestream
          {
              type            freestreamPressure;
              freestreamValue uniform $pOut;
          }
      
          wall
          {
              type            zeroGradient;
          }
      
          #includeEtc "caseDicts/setConstraintTypes"
      }
      
      

      我又把tutorials naca0012 跑了一遍,真的没问题啊!

      无奈之下,来论坛提问,请大佬们指点一下。万分感谢!!!

      1 条回复 最后回复 回复 引用
      • R
        RebelYoung 最后由 编辑

        @东岳 老师,help me.

        1 条回复 最后回复 回复 引用
        • R
          RebelYoung 最后由 编辑

          突然反应,可能是那种方式对sym不可用,我赶紧去试试

          R 1 条回复 最后回复 回复 引用
          • R
            RebelYoung @RebelYoung 最后由 编辑

            @RebelYoung 还是不行。。。。相同报错

            1 条回复 最后回复 回复 引用
            • R
              RebelYoung 最后由 编辑

              我好像发现什么了,这个结构是一样的,不过tutorial case里obj生成polyMesh中,有分组。。。

              (
                  aerofoil
                  {
                      type            wall;
                      inGroups        List<word> 1(wall);
                      nFaces          120;
                      startFace       31760;
                  }
                  inlet
                  {
                      type            patch;
                      inGroups        List<word> 1(freestream);
                      nFaces          200;
                      startFace       31880;
                  }
                  outlet
                  {
                      type            patch;
                      inGroups        List<word> 1(freestream);
                      nFaces          160;
                      startFace       32080;
                  }
                  back
                  {
                      type            empty;
                      inGroups        List<word> 1(empty);
                      nFaces          16000;
                      startFace       32240;
                  }
                  front
                  {
                      type            empty;
                      inGroups        List<word> 1(empty);
                      nFaces          16000;
                      startFace       48240;
                  }
              )
              

              所以,/0下文件头上freestream不是类型名,是边界(组)名。。。
              感觉这个地方有误导性,导致我以为文件结构不同。。。
              建议改个组名!

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