CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用。通用商业CFD软件譬如Fluent、CFX、Star CCM+等在工业上得到了广泛的应用,另外一些专用的软件(如旋转机械领域Numeca、电子散热领域的Flotherm等)也以其专业性牢牢占据着各自领域的市场。这些软件都具有良好的前后处理、众多的物理模型、较高的并行求解效率及可靠性。

但是细数起来,这些软件仍然具有一些劣势,可以简单的归纳为:

  • 价格很贵。这些商用软件,价格一个比一个贵,少则好几万,高则几十万上百万。对于工业巨头来说没有经济压力,但是对于中小型企业、个人用户来说,无疑是一笔巨大的经济开销。
  • 黑箱操作。商用软件的内部运作原理是不会对用户公开的。一些数学物理模型的处理细节,用户没有任何途径可以了解。虽然说商用软件这么做可以在一定程度上使软件的操作更简单,减少软件使用者的学习时间,但是对细节的掩盖也会造成一些问题调试上的麻烦。
  • 功能扩展麻烦。仍然是由于程序代码的封闭造成的后果。用户想要扩展现有商用软件的功能是一件非常麻烦的事情。当前商用软件的所谓二次开发,实际上能够扩展的功能非常有限,一般只能扩展一些外壳,对于核心算法基本上没法更改。

有人说,可以采用自己编程来进行CFD计算。这当然可以,自己编程的最大好处是可以对程序的所有细节进行控制,大到计算流程、GUI界面,小到离散算法、网格布置等都可以自己设置。但是不知道动不动就说自己编程的人有多少是真正自己动手编程求解过CFD问题的,如果真的动手编过CFD程序的人,自然会知道从零开始进行CFD程序的开发,是一件多么需要时间和经历的事情(有不信邪的童鞋可以自己动手尝试,不需要尝试很复杂的程序,就动手编一个方腔顶盖流计算的程序就好,在很多的参考书中都有该程序的源代码,可以动手抄一遍试试)。

OpenFoam其实就是一种解决这种手动编程麻烦的程序包。其主要具有一些优点:

  • 代码开源。什么叫“开源”?开源的意思就是所有的代码都是可以打开看的。还不明白么?换句话说,你可以修改代码中的任何地方,也可以将代码用到其他的地方。OpenFoam对于手工编写CFD代码的人来说,其提供了一个非常好的平台。基础代码实际上已经为我们搭建了一个框架,我们要做的只是针对自己特定的问题在已有框架的基础上做小幅的修改或增加。
  • 定制求解器。OpenFoam提供了一些标准的求解器,完全满足常用的CFD计算。至于提供了哪些标准求解器,我们后面再慢慢的掰。由于代码是开源的,因此我们也可以开发自己的求解器,这是商用软件所无法提供的功能。

    当然,OpenFoam也有一些麻烦的地方:
  • 没有成熟的GUI前处理器。这个其实不能称之为缺点,虽然说没有前处理GUI会给初学者带来一些麻烦,但是使用惯了其实也没什么,无非就是那么几个文本文件,修改起来也挺快。当然目前也有一些商用的或开源的OpenFoam前处理器,商用的前处理器功能比较强大,使用起来和商用的CFD软件并没有多大的区别,开源的前处理器界面比较朴素。当然,如果熟悉了OpenFoam的使用,完全可以自己开发一个前处理器,难度并不大。
  • 学习曲线比较陡峭。对于初学者来说,OpenFoam的学习曲线要比商用CFD软件陡峭得多,需要花费更多的时间和经历。就算是利用标准求解器来解决工程问题,由于没有前处理GUI,因此需要使用者熟悉OpenFoam中一些常用的关键字,不过其实也并不难,OpenFoam计算文件中所涉及的关键字命名还是比较有规律。

本系列以OpenFoam的学习过程为主线,讲述如何从完全不了解OpenFoam到开发自己的求解器求解工程问题的完全学习路径。

【一起学OpenFoam】01 OpenFoam的优势的更多相关文章

  1. 【OpenFOAM】——OpenFOAM入门算例学习

    1  明确目标——为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l  [ ]学会用SnappyHexMesh生成高质量网格: l  [ ]学习使用O ...

  2. 和李洪强一起学设计01 PS第一天

    和李洪强一起学设计01 PS第一天

  3. 女生学java是否真的没有优势

    随着女性越来越独立,我们可以看到再以前我们认为不适合女性朋友从事的工作,也出现了越来越多的女生,例如对IT行业也不再跟之前一样畏惧.虽然当下很多人所持的观点依旧是,女生不适合IT行业,但是很多女生已经 ...

  4. 谷哥的小弟学前端(01)——HTML常用标签(1)

    探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架 ...

  5. [从产品角度学EXCEL 01]-EXCEL是怎样运作的

    这是<从产品角度学EXCEL>系列第二篇. 前言请看:从产品角度学EXCEL-系列0-为什么要关注EXCEL的本质 本文不接受无授权转载,如需转载,请先联系我,非常感谢. 1.EXCEL是 ...

  6. 从零开始学JAVA(01)-JAVA开发环境安装

    写在前面: 本人没有JAVA基础(包括语法.开发环境),未使用开发工具开发过程序,如果有不对或误导的地方,欢迎指正. 本系列所有文章使用Eclipse,JDK是Version 7 Update 51, ...

  7. 1094:零起点学算法01——第一个程序Hello World!

    Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Output 输出"Hello World!" ...

  8. 【Django】不知道为什么就是想学一下 01

    1. Django安装.项目创建及服务器连接 系统:Ubuntu 14.04.4 > cat /etc/issue //查看系统版本 安装Django > sudo pip install ...

  9. 优雅哥学 Webpack - 01 - Webpack 5 快速体验

    程序员优雅哥简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构 本文摘要:主要讲解 webpack 5 初体验.从webpack 5 初识到便写代码.优雅哥将 ...

随机推荐

  1. iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法

    问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...

  2. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  3. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  4. JS实现页面进入、返回定位到具体位置

    最为一个刚入职不久的小白...慢慢磨练吧... JS实现页面返回定位到具体位置 其实浏览器也自带了返回的功能,也就是说,自带了返回定位的功能.正常的跳转,返回确实可以定位,但是有些特殊场景就不适用了. ...

  5. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  6. 【搬砖】安卓入门(1)- Java开发入门

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  7. [转载]敏捷开发之Scrum扫盲篇

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...      为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述S ...

  8. mac好用的markdown编辑器

    在刚开始接触markdown的时候,就被吸引了.此后一直在找贴心的好用的markdown编辑器.印象笔记和马克飞象配合着用也是挺好的,唯一的缺点就是比较封闭,发个笔记的链接给同学,还得注册才能看,导致 ...

  9. DB2重启数据库实例

    DB2重启数据库实例时,有时停止实例会失败,此时需要先确认没有应用链接数据库,然后再关闭数据库实例,并重新启动. 1.查看是否有活动的链接 命令:db2 list applications for d ...

  10. MySQL 数据库双向同步复制

    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...