OpenFOAM——90度T型管
本算例来自《ANSYS Fluid Dynamics Verification Manual》中的VMFL010: Laminar Flow in a 90° Tee-Junction.

。
本算例的入口速度分布满足下面的形式:


首先进行建模操作,任何建模软件均可,本算例采用ICEM直接建模,生成网格,然后利用OpenFOAM下转化网格,划分完成的网格如下:


首先新建一个文件夹,名字任取,用来作为算例文件夹,本算例中我将该文件夹命名为:90Tee

文件夹下的epsilon,f,k,nut,nuTilda,omega,v2这些文件,因为本算例不会用到这些文件。



这次我们由于要设置入口处是充分发展的速度,我们就只需要修改新算例下0文件夹的p和U文件,constant目录下的transportproperties文件、turbulenceProperties文件和system目录下的controlDict文件,其他如网格转换,设置入口的速度的操作我们通过Python脚本来实现修改。
我们打开constant文件夹下的transportproperties文件,此处我们将运动黏度设置为0.003333㎡/s

接着修改turbulenceProperties文件,此处我们将模拟类型设置为层流(laminar)

然后对初始边界条件进行设置,下面转入0文件夹下进行操作:
在0文件夹下我们可以看到U和P两个文件:
然后对初始边界条件进行设置,下面转入0文件夹下进行操作:
修改P文件和U文件
P文件当中的内容如下:

U文件当中的内容如下:

说明一下:
INLET
{
}
入口的边界设置为这样的形式,在后面运行Python脚本以后会被修改为正确的边界形式。
我们编写如下的Python脚本:

说明一下:
使用脚本并不是唯一写选择,上面脚本的操作也可以使用诸如Excel等工具实现。我们主要是通过网格的位置信息,然后计算得到该位置的速度分布,然后再把计算得到的速度分布写入边界当中。
首先我们运行postProcess -time 0 -func writeCellCentres命令,就可以在0文件夹下得到4个文件,分别是C,Cx,Cy,Cz。其中C文件包含了单元的x,y,z所有坐标,而Cx只对应x坐标,Cy对应y坐标,Cz对应z坐标。这里我们只需要Cx,我们打开Cx文件,可以找到如下图的字典:


我们可以将字典里面的x坐标信息提取出来,然后在脚本(当然也可以用Excel等其他工具)根据速度分布的公式,计算出各个单元的速度,然后我们再将计算的结果用nonuniform List形式写回到U文件中对应的边界。修改以后的U文件如下:

接着我们设置controlDict文件

fvSchemes文件修改如下:

fvSolution文件修改如下:

回到算例文件夹下,打开终端,由于我安装了PyFoam来实时输出残差,所以在终端中输入pyFoamPlotRunner.py --clear simpleFoam开始计算:

等到计算结束


将计算结果导入paraview里面进行处理

流线图

tecplot的处理结果

我们需要得到出口的体积流量和入口的体积流量之比,这里我们有两种方法进行操作
第一种方法是直接在OpenFOAM当中利用OpenFOAM自带的后处理命令输出入口和出口的体积流量,格式如下:
postProcess -func "flowRatePatch(name=边界名称)"
我们输出收敛后(加上参数-latestTime)入口处的体积流量:
postProcess -latestTime -func "flowRatePatch(name=INLET)"
我们输出收敛后(加上参数-latestTime)顶部出口处的体积流量:

postProcess -latestTime -func "flowRatePatch(name= OUTLET_TWO)"

在算例文件夹下会多出一个postProcessing文件夹

点击进去以后,里面会有两个我们刚才命令生成的两个边界的流量的文件夹

任选其中一个文件夹(我们以“flowRatePatch(name=INLET)”文件夹为例),打开到底,则存在surfaceFieldValue.dat文件

打开surfaceFieldValue.dat文件

说明一下:这里的正负号只代表方向,不代表大小,负号表示流入计算域。
第二种方法是将计算结果导入ParaView里面,通过对指定面的积分,计算通过该面的体积流量















如果没有出现体积流量的显示,请参考以下步骤

通过对比以上两种方法得到的体积流量,结果基本一致
流量比为:

而实验值为:0.887
计算值与实验值的比为:

OpenFOAM——90度T型管的更多相关文章
- 关于android中调用系统拍照,返回图片是旋转90度
转载博客:http://blog.csdn.net/walker02/article/details/8211628 项目开发中遇到的一个问题,对于三星手机在做手机照片选择时出现图片显示不正常,研究后 ...
- android 选择图片或拍照时旋转了90度问题
由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下: 首先直接看上面博文下的拍完照或者选完图后处理 ...
- 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...
- 用VBox虚拟机安装Android 屏幕90度翻转竖屏设置
在虚拟机中安装好Android之后,有一些Android应用(比如UC浏览器.UC桌面)不能安装.但更有一些程序是可以安装,却自动顺时间旋转了90度,操作和看起来非常不爽! 这个情况下,在Androi ...
- 【Python】将4*4数组旋转90度新数组
需求:将一个4*4的数组90度旋转生成新的4*4数组 原来的4*4数组:[0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3]90度旋转后的4*4数组:[0, ...
- LeetCode——Rotate Image(二维数组顺时针旋转90度)
问题: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockw ...
- 将n*n矩阵顺时针旋转90度
/** * 将n*n矩阵顺时针旋转90度 * @param mat * @param n 矩阵的阶数 * @date 2016-10-7 * @author shaobn */ public stat ...
- 利用exif.js解决ios手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- android Camera拍照 及 MediaRecorder录像 预览图像差90度
Camera拍照: 今天做照相机程序,结果写好了发现出问题了,预览的图像差90度.相关源代码如下: Camera.Parameters params = camera.getParameters(); ...
随机推荐
- vue从零开始(二)指令
一.v-text和v-html <span v-text="msg"></span> <div v-html="html"> ...
- Celery:Next Steps
参考文档:http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#next-steps
- idea忽略并隐藏.idea文件夹.iml文件不提交到svn
File-->setting-->Editor-->File Types 选中.boringignore,添加*.iml;.idea;即可
- react native错误排查-TypeError: window.deltaUrlToBlobUrl is not a function
错误现象:window.deltaUrlToBlobUrl is not a function 最近在调试react-native时,打开浏览器调试时发现报错window.deltaUrlToBlob ...
- WinServer-the security database on the server does not have a computer account for
用了本地的administrator登陆
- mongodb驱动接口
mongodb对外接口或驱动:https://docs.mongodb.com/ecosystem/drivers/,包含C,C++,Go,Python等. C驱动 mongodb的C驱动,即libm ...
- SLF4J: Failed to load class "org.slf4j.impl.StaticLo
今天在修改项目是修改了pom中的配置启动后提示下面的错误, SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&qu ...
- python函数调用时参数传递方式
python函数调用时参数传递方式 C/C++参数传递方式 对于C程序员来说,我们都知道C在函数调用时,采用的是值传递,即形参和实参分配不同的内存地址,在调用时将实参的值传给实参,在这种情况下,在函数 ...
- MySQL/MariaDB数据库的复制加密
MySQL/MariaDB数据库的复制加密 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的安全问题 1>.基于SSL复制 在默认的主从复制过程或远程连接 ...
- SQL进阶系列之4HAVING字句的力量
写在前面 SQL是面向集合的语言,与面向过程和面向对象语言都不一样 寻找缺失的编号 /* 寻找缺失的编号 */ CREATE TABLE SeqTbl (seq INTEGER PRIMARY KEY ...