吾生有涯 学海无涯
析模有界 知识无界

OpenFOAM编程入坑的一点建议

最近有道友在后台提到OpenFOAM编程的问题,抱怨说OpenFOAM编程很难,询问如何快速入坑。这问题其实挺难回答的,OpenFOAM是一个规模庞大的C++类库,快速入坑似乎难度挺大。

想要快速地进入状态,下面是我个人的一些经验。

1 C++学习

这个是基本功,有C语言基础的话,大概需要个把月的时间。啥编程基础都没有的话,会需要更多的时间。但也说不准,也有天赋异禀之人,个把星期搞定也说不准。学习C++的目的是为了能读懂OpenFOAM代码。然而C++实在太过于复杂,想要精通C++语言,没有个三五年的时间基本不可能。但是若只是为了能够读懂OpenFOAM代码,似乎并不需要掌握全部的C++特性。

个人觉得下面的一些C++基础内容必须了解:

  • 基础语法。最基础的语法,有C语言基础可以略过。随便找本C++教材看前面三四章基本就可以了。包括变量定义、控制结构、函数等。
  • 指针与引用。尤其是引用,在OpenFOAM代码中随地可见,尤其是带有const的引用,简直会把人迷惑死。反而指针用得不多,不过需要了解指针的使用方法,不至于搞晕。
  • 类与对象。了解类的定义与对象的创建方法。
  • 类继承与多态。了解类继承的定义方法,以及虚函数的概念。
  • 函数重载。了解函数重载的定义方法与使用方法。
  • 函数模板与类模板。这个在OpenFOAM中遍地都是,泛化与特化搞得新手死去活来。

另外一个问题,OpenFOAM持续的时间很长,在其持续期间,C++制定了好多个版本,建议看看新标准的C++,如C++11、C++14、C++17等。有一些奇奇怪怪的语法,很有可能是新标准中添加的。

C++还好,市面上的教材很多,随便找一本就可以了。OpenFOAM就麻烦了,目前尚未发现有专门讲OpenFOAM编程的教材。

2 OpenFOAM文档

这里的文档不是UserGuide,而是API文档。想要使用OpenFOAM编程,首先必备API文档。

  • org版的在线文档:https://cpp.openfoam.org/v9/
  • com版的在线文档:https://www.openfoam.com/documentation/guides/v2112/api/index.html

也可以从安装文件夹中利用doxygen生成本地文档。

采用下面的步骤生成本地文档:

  1. 修改doc文件夹的权限,简单起见可以使用下面的命令sudo chmod 777 /doc -R。若没有doc文件夹,可以去官方仓库下载
  2. 利用命令sudo apt install doxygen安装doxygen
  3. 进入doc/Doxygen文件夹,运行命令./Allmake即可生成帮助文件,存放在html文件夹下
  4. 若无法生成图片,可以使用下面的命令sudo apt-get install graphviz安装graphiviz,再重新执行第3步

3 环境搭建

这个倒不是必须的,不过弄好的话可以帮助查看代码。

这里推荐使用vs code插件OFextension,该插件能实现编程时代码智能提示,以及查看代码的原始定义与声明,非常方便。

如下图所示,鼠标放到特定字符上会有其定义方式,还支持自动跳转到原始定义位置,查看代码非常方便。

4 撸代码

想要熟练掌握程序设计,撸代码是必不可少的过程。一开始不知道怎么撸,那就抄代码,比如抄求解器代码,从简单的抄起,如icoFoam,抄上五遍八遍自然会有新的。当然也可以上网找一些OpenFOAM例程照着撸,github中有很多此类例程。

等到能够默写代码了,就开始着手读代码,挨句挨句的解读,这时候不用管程序背后的数学问题,只是从程序设计的角度去理解代码结构就行,搞清楚求解器的结构,顺便熟悉各种数据调用方式。看不懂的地方就查文档,正常人坚持一两个月基本上就差不多了。其实OpenFOAM的求解器程序结构还是很简单的,无非就是一个读取数据、数据处理、数据输出的过程。

当能够顺利读懂求解器代码后,就可以开始了解物理数学上的问题了。主要是控制方程和各种离散算法,这个其实已经和编程没有多大关系了。当然如果走到这一步,可以试着找一些涉及到算法的文献,并尝试着将文献中的算法植入到求解器中去。没事儿找本计算流体力学的书看看,可能会有帮助。

撸代码要坚持不懈,一天不写手会生疏。OpenFOAM的类库太庞大太杂了,长时间不用会忘记。


(本文完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《OpenFOAM编程入坑的一点建议》
文章链接:https://www.topcfd.cn/18760/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册