OpenFOAM——设置非均匀边界方法总结
在使用OpenFOAM求解的时候我们经常需要设置非均匀的边界,比如我们在计算层流的时候,很多时候需要入口为充分发展的入口边界,下面我们就以入口处为充分发展的层流速度分布为总结OpenFOAM当中设定不均匀边界条件的方法
OpenFOAM当中对非均匀边界条件设置大致有以下几种方法:
方法一:直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中,详细操作见算例:《OpenFOAM——90度T型管》,链接:http://blog.sina.com.cn/s/blog_14d64daa10102xh4r.html
方法二:使用codedFixedValue边界
codedFixedValue
基本格式为:
边界名称
{
type codedFixedValue;
value uniform 0;
name rampedFixedValue; // name of generated BC
code
#{
operator==(min(10, 0.1*this->db().time().value()));
#};
//codeInclude
//#{
// #include "fvCFD.H"
//#};
//codeOptions
//#{
// -I$(LIB_SRC)/finiteVolume/lnInclude
//#};
}
对于入口处为充分发展的层流速度分布可如下设置边界条件:

也可以写为下面的形式
首先在0文件夹下设定入口

在system目录下新建一个名为codeDict的文件

然后在codeDict当中实现非均匀边界



方法三:编译新的边界条件
翻译整理自:https://pingpong.chalmers.se/public/courseId/7056/lang-en/publicPage.do?item=3209036
进入任意目录,在终端中输入:
foamNewBC -f -v parabolicVelocity



编译目录下的文件如下:

具体用途可参加苏老师《运用OpenFOAM编译器wmake编译自己的程序》,链接:http://blog.sina.com.cn/s/blog_5fdfa7e60100dciw.html
简单说一下这些文件的用途:

parabolicVelocityFvPatchVectorField.H包含了编译所需要的头文件,新边界的构造函数

parabolicVelocityFvPatchVectorField.C主要包含了编译边界的构造函数的实现,以及新的边界条件实现的相关函数
Make文件夹下文件的用途
files文件主要用于指定编译的文件以及编译完成的库保存的路径


options文件主要用于指定编译所需要链接的库以及编译所包含头文件所在的路径


这里我们只需要修改parabolicVelocityFvPatchVectorField.H和parabolicVelocityFvPatchVectorField.C两个文件
我们修改parabolicVelocityFvPatchVectorField.H文件
首先我们删除parabolicVelocityFvPatchVectorField.H文件下原来的私有成员(这里我们直接将其注释掉)

然后添加我们自己的私有成员

删除掉成员函数autoMap和rmap函数(这里我们直接将其注释掉)

完成以上操作保存parabolicVelocityFvPatchVectorField.H,转入parabolicVelocityFvPatchVectorField.C文件的修改,主要是对构造函数的实现、updateCoeffs()函数的实现和write()函数实现
与前面的parabolicVelocityFvPatchVectorField.H当中构造函数相对应的实现





updateCoeffs()函数的实现

write()函数实现

进入parabolicVelocity目录下
然后在终端中输入:
wmake libso


我们进入算例目录下,找到controlDict文件,在其末尾添加libs ("libparabolicVelocity.so");

进入算例目录下的0文件夹,将U文件当中的入口边界设置如下

然后回到算例目录,在终端中输入
pyFoamPlotRunner.py simpleFoam

求解完成


和前面通过直接用非均匀场的方式将边界上对应的值写入算例目录下0文件夹下的文件当中的计算结果一致

相关文件下载:https://pan.1dqxMfO 密码:q7os
方法四:使用swak4foam
具体可参加下面的链接:
http://suo.im/2B1Rl7
http://suo.im/p1XDp
OpenFOAM——设置非均匀边界方法总结的更多相关文章
- OpenFOAM——设置自定义非均匀场区域
在使用OpenFOAM进行计算的时候,我们需要对计算域设置非均匀场,比如最典型的溃坝算例,在开始计算以前,我们需要首先设定某一区域的水的体积分数为1,就是下面这样的: 有可能我们在计算传热问题的时候, ...
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- Keil MDK下如何设置非零初始化变量
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始 ...
- Keil MDK下如何设置非零初始化变量(转)
源:Keil MDK下如何设置非零初始化变量 一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默 ...
- Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始 ...
- 详解PHP设置定时任务的实现方法
详解PHP设置定时任务的实现方法 一.总结 一句话总结: 1.ignore_user_abort(true)是什么意思? 无论客户端是否关闭浏览器,下面的代码都将得到执行 2.set_time_lim ...
- 非均匀B样条离散点的加密与平滑
非均匀B样条离散点的加密与平滑 离散点的预处理是点云网格化很关键的一步,主要就是离散点的平滑.孔洞修补:本文是基于非均匀B样条基函数进行离散点云的加密和平滑的,一下为初步实现结果. 算法步骤: 1.数 ...
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- 类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,
编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...
随机推荐
- java List深拷贝示例
示例一 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java ...
- YUM方法安装mysql5.7版本
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kabolee/article/deta ...
- NumPy 之 ndarray 多维数组初识
why 回顾我的数据分析入门, 最开始时SPSS+EXCEL,正好15年初是上大一下的时候, 因为统计学的还蛮好的, SPSS傻瓜式操作,上手挺方便,可渐渐地发现,使用软件的最不好的地方是不够灵活, ...
- VS code key shortcuts for windows
mac上的快捷键,尽量是选择像我用vs studio上靠近. ctrl+K+S: 显示快捷键列 ctrl+shift+p: 系统配置命令行 ctrl+p:项目中文件列表,选择文件 Alt+M:当前文件 ...
- JQuery-zTree.js使用范例
JQuery-zTree.js使用范例 实现Tree树的插件很多,比如常见的UI:Layui.ElementUI.iView ... .这里我们介绍一个小巧的构建Tree树的插件 zTree.js z ...
- HTML通用模板
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 图论 - Bellman-Ford算法
Bellman-Ford Dijkstra算法虽好,但是不能解决带有负边权的图. 而利用Bellman-Ford可以完美的解决最短路和负边权的问题 朴素Bellman-Ford算法 w[i] 权值 u ...
- [原创]VBA实现汇总excel,将多个Excel文件内容复制到一个Excel文件中
功能:遍历用户指定的文件夹,把文件夹中所有的excel文件的第一个表格的数据复制到本excel文件中.注意,每个excel文件中有效数据行的判断标准是A列的最后一个有数据的单元格的行号,比如A列到第1 ...
- DT系统应用-添加地图标注
修改方法:修改模板->Homepage->contact.htm 在 {php $map_height = 300;} {php @include DT_ROOT.'/api/map/'. ...
- SQL语言基础和数据库操作
Sql语言基础: 核心思想:我们自己构造一段查询的代码,然后添加到语句后,从而得到想要的某些数据. Mysql是一种开源数据库 APP Serv:Apache+php+mysql,相当于phpstud ...