CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    切结边界网格命名问题

    OpenFOAM
    2
    4
    1966
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      yang山青 最后由 李东岳 编辑

      我想将我的边界根据边界条件的不同类型划分为不同的类型场,以便以后调用,但是现在的代码报错

          const GeometricField<vector, fvPatchField, volMesh>::Boundary& 
              uBCs = U.boundaryField();
      
          forAll(uBCs, patchi)
          {
              if (uBCs[patchi].type() == "farField") //inlet
              {
                  gSurf_.boundaryField().set
                  (
                      patchi, 
                      fvsPatchField<scalar>::New
                      (
                          "farField", mesh.boundary()[patchi], gSurf_
                      )
                  );
              }
              else if (uBCs[patchi].type() == "bounceBack") //maxwellWall
              {
                  gSurf_.boundaryField().set
                  (
                      patchi, 
                      fvsPatchField<scalar>::New
                      (
                          "bounceBack", mesh.boundary()[patchi], gSurf_
                      )
                  );
              }
          }
      

      错误原因是

      createFields.H: In function ‘int main(int, char**)’:
      createFields.H:160:13: error: passing ‘const Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh>::Boundary’ as ‘this’ argument discards qualifiers [-fpermissive]
                   );
      

      求解我这问题在哪啊

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        你第一段代码用在哪里了?

        把你createFields.H贴一下?

        CFD高性能服务器 http://dyfluid.com/servers.html

        Y 1 条回复 最后回复 回复 引用
        • Y
          yang山青 @李东岳 最后由 编辑

          @李东岳 相关的createField.H

              volVectorField U
              (
                  IOobject
                  (
                      "U",
                      runTime.timeName(),
                      mesh,
                      IOobject::MUST_READ,
                      IOobject::AUTO_WRITE
                  ),
                  mesh
              );
          
              surfaceScalarField gSurf_
              (
                  IOobject
                  (
                      "gSurf",
                      mesh.time().timeName(),
                      mesh,
                      IOobject::NO_READ,
                      IOobject::NO_WRITE
                  ),
                  mesh,
                  dimensionedScalar
                  (
                      "0", dimMass/pow3(dimLength), 0.0
                  )
              );
          

          应该就这些了吧

          1 条回复 最后回复 回复 引用
          • 李东岳
            李东岳 管理员 最后由 编辑

            你用的什么版本,试试把U.boundaryField()改为U.boundaryFieldRef()

            CFD高性能服务器 http://dyfluid.com/servers.html

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