OpenFOAM 中的边界条件(一)【转载】
链接:http://xiaopingqiu.github.io/2016/04/02/Boundary-conditions-in-OpenFOAM1/
本系列解读 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<class
Type, template<class> class
PatchField, class GeoMesh>
void
Foam::GeometricField<Type, PatchField,
GeoMesh>::
correctBoundaryConditions()
{
this->setUpToDate();
storeOldTimes();
boundaryField_.evaluate();
}
调用了 evaluate 函数。
为什么有些边界条件用 updateCoeffs(),而有些则用 evaluate() 呢?目前的理解是这样的: updateCoeffs() 主要用来显式地计算并更新变量在边界上的值,当边界上的值是通过某个依赖于外部参数的公式来计算,并且值会随着迭代的进行而不断改变时,则需要用
updateCoeffs()。有些边界条件,比如最基本的
zeroGradient(),不需要外部的参数,只需要每一次将临近网格的值赋给边界就可以了,这时就可以用
evaluate()。
关于边界条件调用的具体过程,需要在看了 fvMatrix 类以后才能更深入地理解,博主目前只能给出一个粗浅的理解。
参考资料:
The Finite
Volume Method in Computational Fluid Dynamics: An Advanced
Introduction with OpenFOAM® and Matlab®
OpenFOAM 中的边界条件(一)【转载】的更多相关文章
- OpenFOAM 中的边界条件(二)【转载】
转载链接:http://xiaopingqiu.github.io/2016/04/02/Boundary-conditions-in-OpenFOAM2/ 本篇在上一篇的基础上来解读 OpenFOA ...
- 如何在OpenFOAM中增加边界条件【翻译】
注:如有翻译不妥,还请见谅 翻译自:http://openfoamwiki.net/index.php/HowTo_Adding_a_new_boundary_condition 首先请看:http: ...
- OpenFOAM 中边界条件的设定【转载】
转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102v7jt.html 用习惯了FLUENT的操作界面,再使用OpenFOAM就会觉得非常繁琐.遇到的第一个问 ...
- spring中context:property-placeholder/元素 转载
spring中context:property-placeholder/元素 转载 1.有些参数在某些阶段中是常量 比如 :a.在开发阶段我们连接数据库时的连接url,username,passwo ...
- SqlServer中的merge操作(转载)
SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...
- OpenFOAM 中 c++ 基础
文件布置 在 OpenFOAM 中,所有代码都以注释段开头,使用有限体积的 CFD 类型文件都包括以下头文件 #include "fvCFD.H" 在此头文件种,仅包含类或函数的定 ...
- 在OpenFOAM中做用户自定义库——编译library【转载】
转载自:http://openfoam.blog.sohu.com/22041538.html OpenFOAM自己提供的标准类都是以库的形式提供的,并且利用头文件给出了库的应用接口.这样一来,用户的 ...
- OpenFOAM中的基本变量快速认知【转载】
转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102vsf9.html label 实际上就是整型数据的变体,int,OF对它进行了包装,以适应32或64位系 ...
- 如何在openfoam中使用probes?【转载】
The probes functionObject 可以监测结果和在后处理中提出结果处理结果.基本用法如下: in $FOAM_TUTORIAL/oodles/pitzDaily/ case func ...
随机推荐
- pmtk3
summary A list of every PMTK3 demo auto-generated by publishDemos on 27-Mar-2012 Book Demos (1) Intr ...
- JS基础_函数作用域练习
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 恺撒密码 I
恺撒密码 I ...
- 基于【 MySql 】一 || 主从复制
一.centos7安装mysql 1. 先检查系统是否装有mysql rpm -qa | grep mysql 2. 下载mysql的repo源 wget http://repo.mysql.com/ ...
- VBA连接操作符
VBA支持以下连接运算符. 假设变量A=5,变量B=10,则 - 运算符 描述 示例 + 将两个值添加为变量,其值是数字 A + B = 15 & 连接两个值 A & B = 510 ...
- spingboot启动报驱动Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of th
原因: springboot应用了最新的驱动com.mysql.cj.jdbc.Driver,这个驱动需要用mysql-connector-java包的6.x版本才可以, 而mysql-connect ...
- 4.Java集合-ArrayList实现原理及源码分析
一.ArrayList概述: ArrayList 是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程的情况 ...
- SuperMemo method
原文:https://www.supermemo.com/en/archives1990-2015/english/ol/sm2 别人的研究:http://wdxtub.lofter.com/post ...
- rt-thread下调试elmfat 问题记录
硬件平台:stm32f107 SPI flash:w25q32 RTT版本:v2.1 w25q32的驱动大神们已经写好(w25qxx.c),我只需要照猫画虎的实现相应SPI的驱动程序即可(bsp例 ...
- 属性 Attribute
一.创建属性 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor, AllowMultiple = true, ...