CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    如何获得网格坐标?

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

      定义了一个矢量,类型为dimensionedVector,=网格坐标*vector(1,0,0)。发现mesh.c()是一个scalerField,所以编译就报错“error: conversion from ‘Foam::tmp<Foam::GeometricField....". mesh.c()这里应该如何修改?

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

        fvMesh::C()返回的是一个矢量场,而不是一个矢量(dimensionedVector)

         const Foam::volVectorField& Foam::fvMesh::C() const
         {
             if (!CPtr_)
             {
                 makeC();
             }
         
             return *CPtr_;
         }
        

        让我们随波逐流

        D 1 条回复 最后回复 回复 引用
        • D
          danao @史浩 最后由 编辑

          @史浩 那怎么才能得到网格xyz坐标的标量值?

          史 D 2 条回复 最后回复 回复 引用
          • 史
            史浩 讲师 @danao 最后由 编辑

            @danao 这个矢量场中,每一个矢量的三个分量就是网格中心的x、y、z值

            让我们随波逐流

            D 1 条回复 最后回复 回复 引用
            • D
              danao @史浩 最后由 编辑

              @史浩 mesh.C().component(0),是这个吗?我试了好像还是volVectorField 类型,而不是一个scalar

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

                @danao 你说的方法也可以,不过我没有用过,你试一下可以写一下这个函数的用法,我也学习一下。
                我个人比较喜欢用是[]运算符,类似于这样

                forAll(mesh.C(), celli)
                {
                    Scalar x = mesh.C()[celli].x();
                }
                

                让我们随波逐流

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

                  @danao 在 如何获得网格坐标? 中说:

                  而不是一个scalar

                  网格坐标不就是个vector么?

                  线上CFD课程开始报名:http://www.dyfluid.com/class.html

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

                  D 1 条回复 最后回复 回复 引用
                  • D
                    Dingcy @danao 最后由 编辑

                    @danao 不知道你的最终目的是什么,如果就是为了获得网格坐标,paraview里就可以吧

                    我希望我得到的少一点,少一点,再少一点......

                    D 1 条回复 最后回复 回复 引用
                    • D
                      danao @Dingcy 最后由 编辑

                      @Dingcy 我要编写源项,公式里需要网格坐标xyz的值

                      1 条回复 最后回复 回复 引用
                      • D
                        danao @史浩 最后由 编辑

                        @史浩 我试了,提示[celli]没声明,后来我用的mesh.C().component(0),这个是个volScalarField 类型,有单位m

                        1 条回复 最后回复 回复 引用
                        • D
                          danao @李东岳 最后由 编辑

                          @东岳 是的,我要用到坐标三个方向的具体数值,标量

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