ofsp2024-06 开发库

ofsp2024-06 开发库
Created time
Jul 10, 2025 11:10 AM
type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jul 10, 2025 11:14 AM
😀
前言: Preface:
 
参考:
感谢原作者们的无私引路和宝贵工作。
前置: OpenFOAM开发编程基础05 场的基本操作 | 𝓐𝓮𝓻𝓸𝓼𝓪𝓷𝓭 (aerosand.cn)
OpenFOAM 中,当某一些类实现某个特定的功能,可以把它们开发成库。
我们将上篇讨论中的压力场、速度场的伪计算开发成独立的库,然后在应用中调用它,当然开发库也可以被任何应用调用。
建立本文的项目文件夹并进入

应用准备

在应用文件夹中新建开发库

脚本和说明

略。

文件结构

整个应用的文件结构如下

开发库

头文件

头文件 /userApp/computeVelocityPressure/computeVelocityPressure.H ,内容如下
  • 各个函数的原型
  • 为什么开发库的头文件要包含 fvCFD.H ?读者可以尝试注释掉这行,重新编译,并阅读报错信息。这样可以加深对 fvCFD.H 文件内容的理解。

源代码

源文件 /userApp/computeVelocityPressure/computeVelocityPressure.C,我们采用更“OpenFOAM”风格的实现方式,内容如下
注意和 OpenFOAM开发编程基础05 场的基本操作 | 𝓐𝓮𝓻𝓸𝓼𝓪𝓷𝓭 (aerosand.cn) 比较各个函数的实现
也许会有同学对比数据类型有困惑,比如 scalar 类型和 volScalarField 类型。简单理解就是,scalar 只是一个值,而 volScalarField 是一组数据,包含了计算域内所有离散点的 scalar 值,相当于是一个矩阵,也就是表示了一个“场”。

库 Make

/userApp/computeVelocityPressure/Make/files 内容如下
  • 注意 LIB 关键字的变化
/userApp/computeVelocityPressure/Make/options
  • 该库,强调是这个库,在编译的时候,不会使用到其他更多的库,所以 options 中有这些基础库就够了,不需要修改

编译

终端使用命令
  • 这个库也是独立的,可以被其他任何应用调用,只要写对调用路径

createFields.H

创建场 /userApp/createFields.H,内容上和上一篇讨论的场文件相同

主源码

主源码 /userApp/06_01_devLib.C,内容如下

应用 Make

/userApp/Make/files
/userApp/Make/options
  • 注意开发库的处理,既要“包含”,也要“链接”。

编译运行

运行结果如下
我们也可以通过 paraview 打开查看计算结果。

小结

研究中涉及到的通用方法可以抽象成开发库,但是初学者不能追求把方法都写成开发库,具体问题应当具体对待。通过本篇讨论,最主要的还是熟悉代码架构和代码语法。
此外,编程中注意单位统一,注意数据类型统一。
 
 
 
💡
欢迎留言讨论,反馈建议和意见,赞助打赏。 Feel free to leave comments, feedback, suggestions, opinions, and donations..
Alipay
Alipay
 
 
上一篇
ofsp2024-07 第一个求解器
下一篇
ofsp2024-05 场初步
Loading...