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
13 帖子 6 发布者 15.3k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    这个非常费事,有时候底层代码改动很多,举例:openfoam23x之前中所有的scalarSquareMatrix应该初始化为:

    scalarSquareMatrix sig(2*n + 1, 2*n + 1, scalar(0));
    

    但是在openfoam23x之后全部只能这样声明:

    scalarSquareMatrix sig(2*n + 1, scalar(0));
    

    每次比较大的版本号改动都比较多。类似上面的改动你得自己去做。并且有些涉及到非常底层的改动,往往是底层动了一行,顶层要动100行。
    所以 :confused:

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

    1 条回复 最后回复
  • C 离线
    C 离线
    CFDngu
    写于 最后由 编辑
    #3

    个人认为如果你在某一版本上开发了,就继续下去吧,不用移植了。。。。。

    1 条回复 最后回复
  • X 离线
    X 离线
    xiaofenger
    写于 最后由 编辑
    #4

    谢谢,不过还是好奇openfoam2.1.1版本跟后来新版本的区别?比如新版本里有哪些明显的改进呢

    1 条回复 最后回复
  • 赵 离线
    赵 离线
    赵一铭
    写于 最后由 编辑
    #5

    这个改动可是太大了,openfoam2.1.1是很老的版本了,官方发布都会进行算法类的提高,不过如果是别人写的求解器,你还是用211吧,移植不简单。

    X 1 条回复 最后回复
  • X 离线
    X 离线
    xiaofenger
    在 中回复了 赵一铭 最后由 编辑
    #6

    @赵一铭 多谢回答,我已经改写了几个,但有的比如基于interFoam开发的代码变化太大了,感觉你说得对,改写还不如自己重新写一个。。。

    1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    写于 最后由 编辑
    #7

    每个OpenFOAM发布都有个release note,最近还有个叫updates for developers的页面,讲api变化。

    我记得OF说过,版本号变化规则:X.Y.Z

    X: case都得改
    Y: api可能有变,也就是求解器源代码需要改
    Z: bug fix啥的,基本没啥需要改的。

    of41的主要变化在:http://www.openfoam.com/documentation/developer-upgrade-guide.php

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    X 1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    写于 最后由 程迪 编辑
    #8

    据我经验,错误最多的是这么几个:

    1. of4 的const ref 和ref分得比较清楚了,参考http://www.openfoam.com/documentation/developer-upgrade-guide.php
    2. of版本升级时,热力学那块类变化比较大
    3. of中cxx类有abstract base class (ABC), ABC不能实例化,需要在子类中实现所有的虚方法,但是of版本升级时可能虚方法数量发生了变化,这个在错误中会有提示。
    4. Make/options里include path变化,特别湍流/热力学那些库变化比较大
    纯虚函数个数 of41 of2x
    fvcDdt 5 4
    fvmDdt 4 3
    fvcDdtPhiCorr 2 2
    fvcDdtUfCorr 2 0
    meshPhi 1 1
    type 1 1

    不过of41支持cxx11了,似乎有些语法糖衣可以用:比如auto x = phi.ref(),不用写又臭又长的模板展开了。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    1 条回复 最后回复
  • X 离线
    X 离线
    xiaofenger
    在 中回复了 程迪 最后由 编辑
    #9

    @程迪 多谢回复!能不能问个比较土的问题,一直不明白,openfoam4.1 5.0 这种命名方式和OpenFOAM v1706有啥区别?好像一个是 OpenFOAM.org 一个是openfoam.com

    hurricane007H 程 2 条回复 最后回复
  • hurricane007H 离线
    hurricane007H 离线
    hurricane007
    在 中回复了 xiaofenger 最后由 编辑
    #10

    @xiaofenger 算是不同的分支吧。后面那个应该是OpenFOAM+

    1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    在 中回复了 xiaofenger 最后由 编辑
    #11

    @xiaofenger
    openfoam起源于foam,现在分foam_extend, openfoam(.org)和openfoam+(.com)三个分支。

    • foam_extend是功能比较激进的。最新版本4.0,有些算法挺好的。api感觉和of23x比较接近。
    • openfoam基金会(这个基金会是个英国注册的公司,不是非盈利机构)版本应该算是主流吧。最新4.1,更新的功能在dev版里。
    • openfoam+是opencfd公司(openfoam商标持有者,授权基金会免费使用)搞的,在基金会版本上添加了一些功能,也是免费的。基本可以保持和同时期的基金会主要版本兼容。

    不同版本都是gpl授权,但是版本有一些差别,有些v2有些v3,不过对于中国人而言都一样。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    X 1 条回复 最后回复
  • X 离线
    X 离线
    xiaofenger
    在 中回复了 程迪 最后由 编辑
    #12

    @程迪 原来如此,我还以为一个是Linux一个是Windows的。。。多谢回复

    我还想问一下,比如OpenFOAM2.1.1 到4.1版本吧,像interFoam 这个solver代码变化非常大,是不是可以认为总体上是越来越精确、运算效率也越高?就是说能用新版本就不用旧版本?

    程 1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    在 中回复了 xiaofenger 最后由 编辑
    #13

    @xiaofenger
    没人能保证新的比旧的精确效率高。。。可以跟踪一下github上代码相关的commit message.历史,可以看出它是怎么演进的。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    1 条回复 最后回复

  • 登录

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