Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 求问:OpenFOAM如何读取脉谱数据呢?

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

已定时 已固定 已锁定 已移动 OpenFOAM
12 帖子 3 发布者 6.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • strive_DUTS 离线
    strive_DUTS 离线
    strive_DUT
    在 中回复了 bestucan 最后由 编辑
    #3

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

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 strive_DUT 最后由 编辑
    #4

    @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

    strive_DUTS 1 条回复 最后回复
  • strive_DUTS 离线
    strive_DUTS 离线
    strive_DUT
    在 中回复了 bestucan 最后由 编辑
    #5

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

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 strive_DUT 最后由 编辑
    #6

    @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

    strive_DUTS 1 条回复 最后回复
  • strive_DUTS 离线
    strive_DUTS 离线
    strive_DUT
    在 中回复了 bestucan 最后由 编辑
    #7

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

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 strive_DUT 最后由 编辑
    #8

    @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

    strive_DUTS 1 条回复 最后回复
  • strive_DUTS 离线
    strive_DUTS 离线
    strive_DUT
    在 中回复了 bestucan 最后由 编辑
    #9

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

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 strive_DUT 最后由 编辑
    #10

    @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

    strive_DUTS 1 条回复 最后回复
  • strive_DUTS 离线
    strive_DUTS 离线
    strive_DUT
    在 中回复了 bestucan 最后由 编辑
    #11

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

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #12

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

    :146: :146: :146:

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]