ofsp2026 16_meshRatio

Created time
Mar 28, 2026 08:28 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 16_meshRatio
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:14 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

我们基于前文对网格的讨论,来尝试一个计算网格参数的应用,便于读者练习和理解网格以及 OpenFOAM 项目流程。
本项目代码来自于 Tom Smith 讲义《programming with OpenFOAM》(Tutorial at The 3rd UCL OpenFOAM Workshop)。
本文主要讨论
练习网格类方法的使用
考虑代码的运行效率
复习自定义字典文件的使用
编译运行 meshRatio 项目

1. 项目准备

终端输入命令,建立项目
测试初始求解器,提供脚本和说明。

2. 网格体积比

主源码修改为
执行 caserun 脚本,或者直接对测试算例划分网格,运行求解器
终端输出如下

3. 改进体积比

List 类的 append 方法虽然方便,但是效率很低,因为每一次向 List 添加数据的时候,都要创建一个 n+1 大小的新 List ,将老数据拷贝过去,再加入新数据。在数据量很大的时候,每次添加新数据都有新建再复制的过程,效率非常低。
我们考虑到对于要处理的网格,因为网格确定,所以要计算的体积比总量也是确定的。可以提前声明一个固定大小的 List,分配好内存,后续只需要向其添加数据就行。
改进后主源码如下
终端输入命令,编译运行
终端输出如下
可以很明显看到运行时间从 0.13s 减少到了 0.06s,效率大大提高。

4. 最大体积比

如果我们只是要获得最大体积比,那么其实我们不需要保存所有的体积比,保存体积比的最大值就够了。
主源码如下
编译运行项目
终端输出如下

5. 体积比准则

仅获得体积比还不够,我们可能希望知道测试算例的网格有多少超过了指定的体积比准则。
我们通过 OpenFOAM 的字典来接入体积比准测这一参数。
为测试算例提供字典 /ofsp_16_meshRatio/debug_case/system/volumeRatioDict ,内容如下
用户可以通过字典文件修改参数而不用再次编译项目。
📌
Tip
我们约定
  • Properties 文件放在 /userApp/constant 文件夹下
  • Dict 文件放在 /userApp/system 文件夹下
主源码如下
编译运行项目
终端输出如下

6. 小结

本文继续讨论了网格类的方法,提供了实践案例。读者通过反复练习,可以回顾之前的知识点,克服 OpenFOAM 编程陌生感,方便后续学习。
本文完成讨论
练习网格类方法的使用
考虑代码的运行效率
复习自定义字典文件的使用
编译运行 meshRatio 项目
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...