CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    ceil(alpha2)

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

      定义一个标量场,赋值为ceil(alpha2),报错
      cannot convert VolScalarField to double...

      该如何解决啊?:chouchou:

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

        @danao 在 ceil(alpha2) 中说:

        ceil(alpha2)

        这个是什么..

        2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
        CFD高性能服务器 http://dyfluid.com/servers.html

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

          @东岳
          ceil是向上取整。换个例子 ,VolScalarField A=max(0.5,alpha2),也是同样的错误。求救!

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

            volScalarField test("", max(0.5, alpha2));

            2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
            CFD高性能服务器 http://dyfluid.com/servers.html

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

              @东岳 非常感谢!还想请教一下,我仿写了个判别条件:

              volScalarField test("test", alpha2=0?0:1);
              

              报错:

              error:invalid use of void expression
              

              这是哪错了?

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

                volScalarField test("", max(0.5, alpha2));
                
                forAll(test, cellI)
                {
                    if (alpha2 == 0)
                    {
                        test[cellI] = 0;
                    }
                    else
                    {
                        test[cellI] = 1.0;
                    }
                }
                
                

                类似的边界场可能也需要处理

                2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
                CFD高性能服务器 http://dyfluid.com/servers.html

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

                  @东岳 必须要循环吗?太慢了啊。。不能用三目运算符啊

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

                    volScalarField test("", pos(alpha2));
                    用这个也行,但表示alpha2大于0的时候为1, 其他情况为0,跟你那个一样

                    2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
                    CFD高性能服务器 http://dyfluid.com/servers.html

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

                      @东岳 要判断alpha2是否大于0.5,只能用forAll了啊?。。刚试了一下,好像volScalarField不能进行布尔运算。

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

                        forAll循环在openfoam里面特别多,这种小操作不会减慢速度,

                        2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
                        CFD高性能服务器 http://dyfluid.com/servers.html

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