CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    如何在湍流模型中读取压力场

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

      请教各位老师~ 想在湍流模型中读取压力场,进行运算后置入湍流输运方程中,采取createField.H中的形式,如下:

      volScalarField p
      (
           IOobject
           (
                "p",
                this->runTime_.timeName(),
                this->mesh_,
                IOobject::MUST_READ,
                IOobject::AUTO_WRITE
           ),
           this->mesh_
      );
      

      可以编译通过,但是运行时候报错:
      cannot find file".../../case/1/p".

      目前是steady case, 1100步保存一次结果。 尝试过用READ_IF_MODIFIED. NO WRITE,都不行。受编程指南启发,尝试加上

      dimensionedScalar
      (
             "p",
             dimensionSet (1,-1,-2,0,0,0,0),
             lookupObject<volScalarField>("p")
      )
      

      报错,没有lookupObject. 请问该如何解决这个问题?p应该是public变量,而且确实在不同时间步都储存了。

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

        你的计算结果里面第一个时间步结果文件里面没有压力场p?

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

        F 2 条回复 最后回复 回复 引用
        • F
          fangyuanaza @李东岳 最后由 李东岳 编辑

          @李东岳 有的,计算结果中

          Time = 1 GAMG: Solving for p, Initial residual = 1, Final residual = 0.00833422. 
          

          从残差控制可见求解了控制方程的压力

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

            @李东岳 学生也include 了header volFields.H, 应该就是两步,一是#include “volFields.H”, 第二是:

            volScalarField p
            (
            IOobject
            (
            "p",
            this->runTime_.timeName(),
            this->mesh_,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
            ),
            this->mesh_
            );
            

            控制方程也求解了每步的pressure,不清楚问题出在哪里,请老师指点一下

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

              @fangyuanaza 解决了这个问题,代码分享如下,以免大家有需要:

              const volScalarFields& p = this->db().objectRegistry::lookupObject<volScalarField>("p")
              

              经过Info输出发现,确实是每一步的压力场

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