经验大分享:OpenFOAM中的边界条件(一)

简介: 经验大分享:OpenFOAM中的边界条件(一)

博客园:硫酸亚铜

原文链接:

本系列解读 OpenFOAM 中边界条件的实现。主要关心一些几个问题:

OpenFOAM 中边界条件是怎样与有限体积离散部分交互的?

怎么从代码看懂一个边界条件具体是怎么计算边界上的值的?

怎么定制一个边界条件?

本篇先阐述第一个问题。

从有限体积离散的角度来看,离散过程中,可能要用到的边界信息包括两类:一是某个场在边界上的值,另一是某个场在边界上的梯度。前者在对流项的离散中需要用到,举例说

当组成体积元的面中有边界面时,需要用到这些边界面上的值 ?f。

而在扩散项的离散过程中

这时,如果组成体积元的某个面是边界面,就需要该边界面上 ?的梯度值 ??f 了。

边界上的某个场值,或者梯度值,其计算方法可以用如下通式表示

这里,?C表示?在邻近边界的网格中心的值,A1 ,B1,A2,B2是系数。

OpenFOAM 中的边界条件类中,有四个函数分别对应上面四个系数:valueInternalCoeffs 对应A1,valueBoundaryCoeffs 对应 B1,gradientInternalCoeffs对应 A2,gradientBoundaryCoeffs对应B2。

所以,看懂 OpenFOAM 中的边界条件,很关键的一步就是看懂这四个函数的定义。

此外,还有一个函数,updateCoeffs, 也很重要。这个函数负责对边界条件进行显式地更新。浏览一下 OpenFOAM 边界条件的代码,会发现很多边界条件都是在 updateCoeffs 这个函数中进行边界值的计算的。

另外,还有些边界条件,似乎是在 evaluate 函数中进行边界值的指定的。

至于边界条件是在什么地方调用的,cfd-online 上有一个帖子,Hrvoje Jasak 对这个问题的回答是:

"

Easy:

- on correctBoundaryConditions() for a field

- on updateCoeffs() at matrix creation

correctBoundaryConditions is also called after the linear solver call automatically.

"

其他网友还提供了一些有价值的信息,比如,在 correctBoundaryConditions 函数中,

template

void Foam::GeometricField::

correctBoundaryConditions()

{

this->setUpToDate();

storeOldTimes();

boundaryField_.evaluate();

}

调用了 evaluate 函数。

为什么有些边界条件用 updateCoeffs(),而有些则用 evaluate() 呢?目前的理解是这样的: updateCoeffs() 主要用来显式地计算并更新变量在边界上的值,当边界上的值是通过某个依赖于外部参数的公式来计算,并且值会随着迭代的进行而不断改变时,则需要用 updateCoeffs()。有些边界条件,比如最基本的 //代码效果参考:http://www.zidongmutanji.com/zsjx/194807.html

zeroGradient(),不需要外部的参数,只需要每一次将临近网格的值赋给边界就可以了,这时就可以用 evaluate()。

关于边界条件调用的具体过程,需要在看了 fvMatrix 类以后才能更深入地理解,博主目前只能给出一个粗浅的理解。

参考资料:

The Finite Volume Method in Computational Fluid Dynamics: An Advanced Introduction with OpenFOAM? and Matlab?

相关文章
|
Shell Linux C++
【Shell 命令集合 文件管理】Linux 拷贝命令 cp命令使用指南
【Shell 命令集合 文件管理】Linux 拷贝命令 cp命令使用指南
1828 0
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
5183 2
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
1956 0
|
4月前
|
机器学习/深度学习 存储 人工智能
阿里云CPU云服务器gn6v、gn7i、gn6i实例最新租用收费标准与2026最新活动价格参考
阿里云GPU云服务器以其在深度学习、科学计算等领域的卓越性能,成为企业和开发者的首选。本文解析了gn6v、gn7i、gn6i三大实例规格族的核心性能参数与差异化特性。gn6v搭载NVIDIA V100 GPU,适合深度学习训练;gn7i采用NVIDIA A10 GPU,适合AI推理与图形渲染;gn6i则以NVIDIA T4 GPU为核心,提供高性价比的异构计算能力。此外,阿里云还提供了包年包月与按量付费两种模式,结合最新优惠活动,为用户提供灵活且经济的选择。
|
索引
如何理解openfoam案例里面的blockMesh文件里面的simpleGrading
在OpenFOAM的blockMesh文件中,`simpleGrading`参数用于控制网格的非均匀分布,通过调整x、y、z方向的拉伸系数,可以精确地控制网格的密集和稀疏程度。这对于模拟中需要高精度的区域提供了灵活性。在实际应用中,合理设置 `simpleGrading`参数,可以优化计算资源,提高模拟精度。
653 20
|
JSON 数据格式 Docker
docker load导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or directo...
docker load导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or directo...
7604 0
|
机器学习/深度学习 分布式计算 并行计算
【MATLAB】史上最全的13种数据拟合算法全家桶
【MATLAB】史上最全的13种数据拟合算法全家桶
2831 1
|
10月前
|
安全 生物认证 数据安全/隐私保护
微信加人频繁怎么快速解除???
微信加人频繁限制的技术分析与解决方案 1. 微信加人限制机制解析
|
机器学习/深度学习 人工智能 自然语言处理
MetaGPT开源自动生成智能体工作流,4.55%成本超GPT-4o
AFlow是由Jiayi Zhang等学者提出的一项新研究,发表于arXiv。它通过将工作流优化问题转化为代码表示空间中的搜索,并引入蒙特卡洛树搜索(MCTS)算法,实现了高效的工作流自动化生成与优化。在六个基准数据集上,AFlow性能比现有基线平均提高5.7%,并使小模型以较低成本超越GPT-4。尽管存在一些局限性,如通用性和计算复杂度,AFlow为降低大型语言模型应用成本提供了新思路,推动了人工智能技术的进步。论文地址:https://arxiv.org/abs/2410.10762。
520 27
|
传感器 机器学习/深度学习 人工智能
再见吧云台!AI“魔法”让视频稳定起来
再见吧云台!AI“魔法”让视频稳定起来

热门文章

最新文章