热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

【一起学OpenFoam】01OpenFoam的优势

CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用。通用商业CFD软件譬如Fluent、CFX、StarCCM+等在工业上得到了广泛的应用,另外一些专用的软件(如

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到开发自己的求解器求解工程问题的完全学习路径。


推荐阅读
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文详细介绍了Java中的注解功能,包括如何定义注解类型、设置注解的应用范围及生命周期,并通过具体示例展示了如何利用反射机制访问注解信息。 ... [详细]
  • 如何使用MD5进行文件验证
    本文详细介绍MD5(Message-Digest Algorithm 5)的用途及如何通过MD5码来验证文件的完整性。 ... [详细]
  • 深入解析Spring Boot自动配置机制
    本文旨在深入探讨Spring Boot的自动配置机制,特别是如何利用配置文件进行有效的设置。通过实例分析,如Http编码自动配置,我们将揭示配置项的具体作用及其背后的实现逻辑。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 初探Java编程:从入门到实践
    本文旨在为初学者提供Java编程的基础知识,涵盖程序、算法、流程图的概念,以及JDK环境的配置和Eclipse的使用方法。 ... [详细]
  • 作为一名跨专业考生,最近在备战研究生入学考试的计算机编程部分。虽然没有编程基础,但通过九度在线教育平台的机试教程逐步学习,进展顺利。直到遇到贪心算法相关的题目,特别是浙江大学2012年的一道机试题——《加油还是不加油》,才遇到了挑战。本文将分享我在解决这一问题过程中的思考与学习体会。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
author-avatar
华福-日语人才_601
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有