今天有网友在群里讨论开发CFD软件的事情,众说纷纭,有网友提到“没有必要开发CFD软件了,直接使用开源OpenFOAM就行”。但个人认为这说法还是有一些需要商榷的地方,开源软件也不是万金油。
以下部分内容翻译自网站CAEWatch,有修改。
当人们在谈论开源CFD解决方案时,经常会听到下面的这两种描述:
-
开源CFD解决方案便宜,没什么比免费更便宜。
-
开源CFD解决方案较差,否则为什么免费?
然而这两种说法都是存在问题的。
开源CFD并不便宜,尽管其许可是免费的。
大多数开源CFD软件包都是基于GNU通用公共许可证(GPL)或BSD许可证或MIT许可证授权的。按照许可协议,任何人都可以免费使用该软件(包括源代码),其对软件的使用没有限制(这意味着它可以在商业项目中使用)。唯一的限制是在重新分发软件或其衍生产品时:如果您想要销售或重新发布,您必须发布源代码。所以,开源软件没有许可成本。你可以从互联网上得到它。
然而软件只是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许可证太贵了;
-
团队中没有人直接的C / C ++ / FORTRAN的编程经验;
-
您被限制在Windows环境中工作(可能由您的IT部门)
要从事CFD方面的学术研究,如果您从不接触源代码,您将永远不会真正地理解CFD。不过好在,如果您只想使用CFD完成最后一年的项目或使用CFD为您的论文生成一些彩色图片,您可能并不需要了解CFD的内部 运作细节,商业软件完全可以胜任这些工作。
我的新浪博客被封了,写了6年的博客说封就封,连个错误提示也不给,我只是把公众号发过的文章贴到新浪博客而已,不知道怎么就触犯了新浪,也不知道能不能解封。以后文章发到博客园了,地址是http://www.cnblogs.com/lscax。
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册