今天有网友在群里讨论开发CFD软件的事情,众说纷纭,有网友提到“没有必要开发CFD软件了,直接使用开源OpenFOAM就行”。但个人认为这说法还是有一些需要商榷的地方,开源软件也不是万金油。

以下部分内容翻译自网站CAEWatch,有修改。


当人们在谈论开源CFD解决方案时,经常会听到下面的这两种描述:

  • 开源CFD解决方案便宜,因为没有什么可以比免费便宜。
  • 开源CFD解决方案较差,否则为什么它是免费的?
    然而这两种说法都是有问题的。

开源CFD并不便宜

开源CFD并不便宜,尽管其许可是免费的。
大多数开源CFD软件包都是基于GNU通用公共许可证(GPL)或BSD许可证或MIT许可证授权的。按照许可协议,任何人都可以免费使用该软件(包括源代码),其对软件的使用没有限制(这意味着它可以在商业项目中使用)。唯一的限制是在重新分发软件或其衍生产品时:如果您想要销售或重新发布,您必须发布源代码。所以,开源软件没有许可成本。你可以从互联网上得到它。
然而软件只是CFD解决方案的一部分。在计算成本时也必须将人力资源和硬件考虑进去。在大多数组织中,这两种费用通常更高,特别是人员成本。
当然不管是开源软件还是商用软件,这些成本都会存在,但是相对于商用软件来讲,开源解决方案所需要的人力资源更加昂贵。
要想从真正的发挥开源方案的优势,仅仅使用该软件是不够的,用户还需要知道如何修改代码并进行编译。

成熟的商用软件通常具有良好的人机界面和成熟的培训方案,因此招聘操作人员相对容易。大部分新来的毕业生可以在一两个星期的培训之后操作软件并产生合理的结果。一两个月后,他们可以做一些项目。但对于开源解决方案,招聘流程将会延长几倍,您将发现大多数求职者人根本无法适应这一职位。如果您正在寻找商用CFD解决方案的“经验丰富”(有时只是自称)的分析师,则您有很多选择。但对于开源的CFD解决方案,您可能必须祈祷,除非您在这个几乎孤立的圈子中有广泛的人脉联系。因此,与开源CFD相关的成本并不总是更便宜。招聘和培训符合条件的工程师所需的额外时间并不小。大多数时候,这个成本是非常显著的。
如果节省许可成本是选择开源CFD解决方案的主要原因,则您的选择是错误的。

开源CFD在精度和效率上不逊色

对开源CFD解决方案的另一个误解是,与商用软件相比,它们不太准确,效率较低,因此较差。来自不同供应商的大多数商用CFD软件销售工程师可能会这样跟你宣传,但你要清醒的认识到,这是他们为了推销自己的软件而做出的贬低对手的行为。
需要了解的是,并非所有的开源CFD解算器都有相同的开发机会。有一些ghost开源项目,虽然项目非常有希望,但可能会因为志愿者不足或筹资不足而夭折。
幸运的是,有一些开源CFD项目得到了强大的社区支持,或者从不同的来源(一些直接来自商业实体,其业务建立在服务而不是许可的情况下)获得了持续资助。对于开源解决方案的用户,实际上有更多的选择。例如,如果您正在寻找一个通用求解器,OpenFOAM可能是一个选择;如果你需要一个格子波尔兹曼方法的CFD sover,Palabos可以是一个很好的选择;如果您需要具有完全离散元素方法(DEM)功能的求解器,可以选择LIGGGHTS。如果您正在为某些特定问题寻找CFD解决方案,您可能会有更多的选择。例如,SU2偏重于空气动力学领域; FDS(公共领域代码,不是GPLed)是火灾模拟的实际标准; Gerris可选择用于明渠流计算。
现在,回到准确性和效率的讨论上来。

对于CFD求解器来说,几乎没什么秘密可言。几乎所有的算法与模型都是公开的。求解计算的准确性更多的是依赖于网格质量与网格分辨率、物理模型与数值方法,计算的准确性实际上掌握在操作者手中,不准确的结果往往是由软件使用者(不恰当的设置或选用了不恰当的模型,网格质量差或网格数量太少等)而不是求解器造成的。

这里肯定有有人提出不同的意见,商用求解器的求解效率、收敛速度就是要比开源代码要快,这如何解释呢?商用求解器的“快”来自于代码的修正和优化。很多的商用求解器只支持有限的操作系统(通常被称为“认证系统”),所以比较容易对这些特定的系统进行代码优化,因此能够使其计算计算效率更高。但开源代码的为了便于用户在大多数平台上编译代码,因此很难做到针对某些特定平台进行优化。如果用户使用默认编译设置或使用预编译的二进制文件(可能有超过90%的用户属于此类别),这些编译后的程序都是没有进行优化的,所以运行效率普遍不高。

一些专门从事开源解决方案的机构可以调整您的目标系统的代码和编译器设置。有时只需调整几个编译器设置即可显着提高计算速度。如果您拥有内部HPC专家,则有可能获得比某些商业软件效率更高的开源程序。

简而言之,准确性主要是由用户控制的。准确性差主要是由于用户的不恰当使用,而并非来自于求解器本身。商业和开源解决方案现在都提供了足够的控制/选项。开源CFD代码的效率问题主要是“默认”编译设置的结果,而不是代码本身的问题。

免费是为了自由

开源并不意味着免费。即使一些商业软件可能会在原始密码保存为纯文本的时候附带源代码。
GNU GPL许可证(和其他类似的BSD,MIT许可证)允许任何人或公司出售GPL许可软件的副本。你可以收取任何你想要的,并保留所有的收益。限制包括:1)必须提供源代码; 2)用户可以自由使用,修改和重新分配(当然也可以销售); 3)用户可以自由修改,除非他们想出售修改。

如果开源CFD代码用于项目(任何项目),则没有人会要求使用费或许可费用。如前所述,许可成本的节省可能会很容易地被增加的员工成本和可能的第三方服务成本所抵消。

因此,开源CFD解决方案中的“免费”并不是为了节省获取仿真工具的成本。

开源是为了自由。
使用开源代码,您可以轻松地为您的问题定制代码。而对于商业二进制文件,您必须为软件定制问题。这是用户自由的意思。

例如,您需要在CFD软件中使用一些特殊的(也许简单的)功能。一些CFD供应商提供各种定制,以便您可以将代码挂接到软件中(如Fluent中的UDF)。问题是谁可以保证这样的定制工作在将来的版本中还能存在。在更糟糕的情况下,产品可能与另一个产品合并,或者供应商可能被其他供应商收购。对于用户来说,您将来会失去控件的自定义功能(如果有效)。

您可能不用担心开源CFD解决方案。可以将任何专有的模型,功能和修改合并到代码中,并将其内部和私有维护永远保留下来。您可以随时使其适用于新版本的代码和不同的系统。那么知识产权将会更好的维护。

用户自由意味着它可以用于任何格式的任何项目。修改或改进可以保留并用于任何项目。用户没有义务公开他们的修改,除非他们出售这些修改(派生工作)。

结论:开源CFD不适合所有人

开源CFD解决方案的主要优点是自由。但这带来成本。不是每个人都可以接受自由的成本。
开源解决方案可能不适合您,如果:

  • 你正在做商业项目,但你觉得CFD许可证太贵了;
  • 团队中没有人直接的C / C ++ / FORTRAN的编程经验;
  • 您被限制在Windows环境中工作(可能由您的IT部门)

要从事CFD方面的学术研究,如果您从不接触源代码,您将永远不会真正地理解CFD。不过好在,如果您只想使用CFD完成最后一年的项目或使用CFD为您的论文生成一些彩色图片,您可能并不需要了解CFD的内部 运作细节,商业软件完全可以胜任这些工作。


更多CFD资料可微信扫描下方二维码关注微信公众号。

开源CFD并非万金油的更多相关文章

  1. 【CFD之道】2017年原创文章汇总

    1 Fluent案例(21篇) [Fluent案例]01 空气流经障碍物 [Fluent案例]02:Tesla阀 [Fluent案例]03:RAE2822翼型外流场计算 [Fluent案例]04:多孔 ...

  2. 【小白的CFD之旅】17 需要编程?

    小白经过大半个多月对于CFD的学习,终于对其大概轮廓有了初步的了解,尤其是在与小牛师兄交流之后.小牛师兄毕竟是专业学流体力学的,小白认为在流体力学理论方面自己与牛师兄至少存在5年的差距.不过小白并不气 ...

  3. 【小白的CFD之旅】15 四种境界

    天气不错,小白一大早就起床了,吃过早餐就往奔实验室而去.路上碰到了同去实验室的小牛师兄. "小白,这么早啊",小牛师兄老远就发现了小白,打招呼道. "早啊,牛师兄,刚吃完 ...

  4. 【小白的CFD之旅】07 CFD常识

    学了一周的流体力学,小白对于流体力学有了基本的了解,但是流体力学涵盖的内容何其之多,一周的时间怎么可能学得好呢,很多的概念都是模棱两可.为了在一个月之后能够应用CFD,小白又找到了黄师姐. “师姐,看 ...

  5. 【一起学OpenFOAM】系列由来

    1 为什么要学习OpenFOAM 掐指算起来,接触CFD也差不多有十个年头了,其间一直使用的商用CFD软件,有Fluent.CFX.StarCCM+等,这些商用软件各有其优缺点,都能较好的解决常规的工 ...

  6. <转载> 优秀程序员必备的23条好习惯

    转自 优秀程序员必备的23条好习惯 编程是一项聪明人玩的游戏,它既是对智力的考验,也是对习惯的考验,智力的好坏取决于父母的基因,人们无从左右,但习惯的好坏却是可以不断培养.一项由美国芝加哥大学国家研究 ...

  7. 2014年终开发感悟(Tamic)

    接触Anroid已经一年过了,眼看就要2015年的到来,但是在这不长不短的时间以来,虽然没给IT圈贡献过什么大的开源项目,但是自己也一直在坚持着自己的爱好,也在不断的更新着自己博客,有  一次项目中偶 ...

  8. 八问WebSocket协议:为你快速解答WebSocket热门疑问

    一.引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答 ...

  9. 架构师速成7.3-devops为什么非常重要

    evops是一个非常高大上的名字,事实上说的简单点就是开发和运维本身就是一个团队的,要干就一起把事情干好.谁出了问题,站点都不行. 作为一个架构师.必需要devops,并且要知道怎样推行devops. ...

随机推荐

  1. 063 日志分析(pv  uv  登录人数  游客人数  平均访问时间  二跳率  独立IP)

    1.需求分析 分析指标 pv uv 登录人数 游客人数 平均访问时间 二跳率 独立IP 2.使用的日志(一号店),会话信息 3.创建数据库 4.创建源表,存储源数据 5.创建我们需要的use表 6.创 ...

  2. Digital biquad filter

    Direct Form 1 The most straightforward implementation is the Direct Form 1, which has the following ...

  3. Ubuntu python Compression requires the (missing) zlib module

    描述: 在Ubuntu中安装setuptools时出现   Compression requires the (missing) zlib module 解决方法步骤: ①Ubuntu下安装zlib: ...

  4. Orleans部署

    一.配置指南 1,客户端配置 2,服务端配置 3,典型配置 4,配置.NET垃圾收集 5,SQL系统存储 二.监控 1,运行时监视 2,silo错误代码监测 3,客户端错误代码监测 三.解决部署问题 ...

  5. JAVA编程:字符串转为数字求和

    程序从命令行接入数字,求和,如果接入的是字符串的解决办法 设计思想: 首先定义一个double类型的一维数组,然后在定义一个double型的变量sum,并赋值为0,用if循环判断从命令行是否有参数输入 ...

  6. Playmaker全面实践教程之Playmaker常用工具

    Playmaker全面实践教程之Playmaker常用工具 Playmaker常用工具 Playmaker插件搭载了8个工具:FSM Browser.State Browser.Templates.T ...

  7. java 客户端调用 go grpc服务端问题总结

    1.网络不通,无法调试. 2.proto文件更改后要及时通知客户端. 3.grpc跨语言调用多语言使用很方便.

  8. JDBC(6)—BeanUtils

    1.简介: BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品 2.Java 类的属性: 1>.在JavaEE中java类的属性通过getter和s ...

  9. windows Server 2008 R2 添加新用户时密码不满足密码策略的要求

    ---------------------------本地用户和组---------------------------在计算机 WINSERVER2008R2 上创建用户 lintx 时,出现了以下 ...

  10. Android典型界面设计(6)——ActionBar Tab+ViewPager+Fagment实现滑动导航

    一.问题描述 在Android典型界面设计一文中,实现典型滑动导航界面,其实使用ActionBar 也可以轻松实现这一效果,甚至也可实现类似Android典型界面设计(3)的双导航效果.可见Actio ...