CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    求问:OpenFOAM如何读取脉谱数据呢?

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

      最近看一篇博士论文,提到“利用 C++程序语言将正庚烷-氮气混合物气液平衡数据库转化为 OpenFoam 可以调用和读取的脉谱数据”,请问各位,这个应该怎么实现呢,给个提示也行。谢谢啦~
      脉谱数据如下:
      4034a308-0261-492f-8d8e-eb0957ffc6b7-image.png

      1 条回复 最后回复 回复 引用
      • bestucan
        bestucan 版主 副教授 最后由 bestucan 编辑

        @strive_DUT 随便找个算例,计算一两个时间不。时间节点文件夹里有温度(标量)、速度(矢量)的文件,看看那些文件的格式。然后无论用什么语言,把数据按那个格式输出

        滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

        异步沟通方式(《posting style》from wiki)(下载后打开):
        https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
        提问的智慧(github在gitee的镜像):
        https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

        strive_DUT 1 条回复 最后回复 回复 引用
        • strive_DUT
          strive_DUT @bestucan 最后由 编辑

          @bestucan 感谢老师的解答。是这样的,每执行一个时间步,我都需要调用这个脉谱数据来对比计算域的每个单元的数据,然后对于需要部分单元的数据采用两相参数进行重新求解。不知道您说的这种方式可不可以实现,您可以再具体给一些提示吗?

          bestucan 1 条回复 最后回复 回复 引用
          • bestucan
            bestucan 版主 副教授 @strive_DUT 最后由 编辑

            @strive_dut 你问的第一个问题是怎么把外部数据导入OpenFOAM参与计算:

            利用 C++程序语言将正庚烷-氮气混合物气液平衡数据库转化为 OpenFoam 可以调用和读取的脉谱数据

            我说的可以解决这个问题。


            你的第二个问题是求解过程中如何使用脉谱数据:

            每执行一个时间步,我都需要调用这个脉谱数据来对比计算域的每个单元的数据,然后对于需要部分单元的数据采用两相参数进行重新求解

            这个是关于如何 选用求解器 或者 修改求解器 的问题了。选用求解器得看需求。


            另外,我又看了看你的图,大概想象到,你想要在计算过程中随时根据当前点的温度和压力得到那个质量分数?

            如果是这样,可以把那个面拟合成个函数写到求解器里需要用的位置。
            或者把散点数据输入OpenFOAM,使用时再插值,得到任意一点的值。

            不知道哪个更快

            滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

            异步沟通方式(《posting style》from wiki)(下载后打开):
            https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
            提问的智慧(github在gitee的镜像):
            https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

            strive_DUT 1 条回复 最后回复 回复 引用
            • strive_DUT
              strive_DUT @bestucan 最后由 编辑

              @bestucan 老师,您好,求解器是已经编译好的了,只是需要加入这个热力学状态判定过程。您分析的是对的,您说的将散点数据输入到OpenFOAM进行插值,可以具体一点吗?
              我的具体问题是:在数值模拟计算过程中,根据压力从混合物临界温度脉谱中读取混合物临界温度;根据压力和温度在饱和液相正庚烷质量分数脉谱中读取液相中正庚烷质量分数;根据压力和温度在饱和气相正庚烷质量分数脉谱中读取气相中正庚烷质量分数,然后在OpenFoam 中实现正庚烷-氮气混合物热力学状态的判定过程。最后,根据判定结果可获得混合物中气相、液相和超临界相的质量分数,用于进一步混合物热力参数的计算。
              判定流程如下:
              5c8ae9fd-3e3a-40e5-8df1-375f24df6994-image.png

              bestucan 1 条回复 最后回复 回复 引用
              • bestucan
                bestucan 版主 副教授 @strive_DUT 最后由 编辑

                @strive_dut 关于那两张图,如果没有原始数据,只有数据点。那得选差值方法,可以看看这个 。

                这样插值了之后再读入OpenFOAM(按我第一回帖说的方法),就是查表法获得数值了。如果是在OpenFOAM里插值,没做过,估计是C++手动实现那些插值算法。比较麻烦。


                那两张图可能就是用实验测得的数据点拟合出来的(因为比较光滑)。

                也可以用现有的数据点,把那两张图拟合成函数表达式。可以看看这个。

                这样把求解器里的 $X_c$出现的位置换成拟合出的函数就行了: FX_c(temperature, pressure)

                滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

                异步沟通方式(《posting style》from wiki)(下载后打开):
                https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
                提问的智慧(github在gitee的镜像):
                https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

                strive_DUT 1 条回复 最后回复 回复 引用
                • strive_DUT
                  strive_DUT @bestucan 最后由 编辑

                  @bestucan 感谢老师的耐心解答!第一帖的两张图的确是通过MATLAB计算出的散点数据然后进行拟合得到的。我可以通过MATLAB计算出这些原始的散点数据,按照您说的方式将其拟合为函数表达式。您说的“把求解器里的Xc出现的位置换成拟合出的函数”这个地方我不太明白,拟合好的函数应该怎么用OpenFOAM识别呢?

                  bestucan 1 条回复 最后回复 回复 引用
                  • bestucan
                    bestucan 版主 副教授 @strive_DUT 最后由 编辑

                    @strive_dut 不是识别呀,就是,你给出的流程图中,读取完$X_c$之后就开始$Z_c$与$X_c$做比较了。哪里用到$X_c$,就把$X_c$替换成其拟合出的函数。

                    if (Zc >= Xc) {
                    ...
                    } else {
                    ...
                    }
                    
                    

                    换成

                    if (Zc >= FXc(temperature, pressure)) {
                    ...
                    } else {
                    ...
                    }
                    
                    

                    温度和压力要取该网格的?还是该区域的?看具体情况。

                    至于这个FXc()函数怎么定义

                    float FXc(float temperature, pressure) {
                    result = ...// matlab拟合出来的函数,如何用温度和压力计算质量分数
                    
                    return result;
                    }
                    

                    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

                    异步沟通方式(《posting style》from wiki)(下载后打开):
                    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
                    提问的智慧(github在gitee的镜像):
                    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

                    strive_DUT 1 条回复 最后回复 回复 引用
                    • strive_DUT
                      strive_DUT @bestucan 最后由 编辑

                      @bestucan 老师,我好像明白您的意思了。通过将我的求解器求出的压力和温度传递给函数FXc(float temperature, pressure),然后在函数中可以得到具体的Xc或者Yc值,接下来进行对比,再按照流程就可以了。因为求解过程中每个网格单元的温度和压力都是在不断变化的,那我的拟合函数应该是一个曲面的数据吧?

                      bestucan 1 条回复 最后回复 回复 引用
                      • bestucan
                        bestucan 版主 副教授 @strive_DUT 最后由 编辑

                        @strive_dut

                        通过将我的求解器求出的压力和温度传递给函数FXc(float temperature, pressure),然后在函数中可以得到具体的Xc或者Yc值

                        是的。

                        因为求解过程中每个网格单元的温度和压力都是在不断变化的,那我的拟合函数应该是一个曲面的数据吧?

                        是的,就是你第一个帖子里的那两个曲面(其实就是用函数表达那两个曲面图)

                        滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

                        异步沟通方式(《posting style》from wiki)(下载后打开):
                        https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
                        提问的智慧(github在gitee的镜像):
                        https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

                        strive_DUT 1 条回复 最后回复 回复 引用
                        • strive_DUT
                          strive_DUT @bestucan 最后由 编辑

                          @bestucan 非常感谢老师您的耐心解答!受教了!再次感谢!

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

                            好专业好专业,看的我蒙蒙的

                            :146: :146: :146:

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

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