本案例演示利用OpenFOAM的icoFoam求解器计算弯曲管道中的混合流动问题。

1 拷贝tutorials文件

启动终端,且拷贝tutorials文件夹中的文件。利用命令:

cp -r $FOAM_TUTORIALS/incompressible/icoFoam/elbow/ $FOAM_RUN

将案例文件拷贝到了$FOAM_RUN路径中。

此时可以利用命令查看目录结构:

tree $FOAM_RUN/elbow

查询结果如下图所示。

$ tree $FOAM_RUN/elbow
/home/ofuser/blueCFD/ofuser-of4/run/elbow
├── 0
│ ├── p
│ └── U
├── Allclean
├── Allrun
├── constant
│ └── transportProperties
├── elbow.msh
└── system
├── controlDict
├── foamDataToFluentDict
├── fvSchemes
└── fvSolution
3 directories, 10 files

包含三个文件夹:0、constant以及system。

2 转换网格

案例中的网格使用的是msh文件,这里要通过命令将其转化为openfoam网格。

采用命令:

cd $FOAM_RUN/elbow
fluentMeshToFoam elbow.msh

如下图所示。

注:Fluent提供了众多的工具用于将外部网格文件转换为OpenFOAM网格

3 case结构

OpenFOAM的case组织结构如如所示。

包含三个基本文件夹:

  • 0:存储物理量的初始值
  • constant:存储网格参数、边界条件以及物理属性(如材料参数、湍流参数等)
  • system:存储一些求解控制参数

4 设置0文件夹

本案例中0文件夹中包含两个文件:p文件与U文件,分别设置初始时刻的压力与速度。

4.1 修改p文件

利用文本编辑器打开p文件。在blueCFD中可以使用命令(先进入0目录,然后用nano打开p文件):

cd 0
nano p

注意:在不同的linux系统中可以使用不同的文本编辑器,如在ubuntu系统中,可以使用gedit、nano或vi

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
wall-4
{
type zeroGradient;
} velocity-inlet-5
{
type zeroGradient;
} velocity-inlet-6
{
type zeroGradient;
} pressure-outlet-7
{
type fixedValue;
value uniform 0;
} wall-8
{
type zeroGradient;
} frontAndBackPlanes
{
type empty;
}
} // ************************************************************************* //

文件内容:

  • 压力单位是m2/s2。OpenFOAM不可压缩求解器中压力定义为单位质量的压力。即压力与密度的比值。
  • 量纲矩阵:[质量 长度 时间 温度 物质的量]
  • internalField关键字定义的是求解区域中的物理量
  • 边界类型:zeroGradient、fixedValue及empty。

关于OpenFOAM中的边界类型:

  • zeroGradient:边界物理量梯度为0。(Neumann边界)
  • fixedValue:边界物理量为定值。(Direchlet边界)
  • empty:在利用2D模型模拟3D情况时,侧边同城设定为empty边界,在计算过程中,此边界并不参与求解。

当fixedvalue的值与internalField的值相同时,fixedValue边界与zeroGradient边界等效。

4.2 U文件

U文件中指定边界速度值。利用文本编辑器打开U文件。

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField
{
wall-4
{
type noSlip;
} velocity-inlet-5
{
type fixedValue;
value uniform (1 0 0);
} velocity-inlet-6
{
type fixedValue;
value uniform (0 3 0);
} pressure-outlet-7
{
type zeroGradient;
} wall-8
{
type noSlip;
} frontAndBackPlanes
{
type empty;
}
} // ************************************************************************* //

文件中指定边界velocity-inlet-5的速度为x方向1m/s,velocity-inlet-6边界速度为y方向3m/s。

本案例中U文件不需要修改。

5 constant目录

constant目录下保存了网格数据与物性参数等。

├── polyMesh
│ ├── boundary
│ ├── cellZones
│ ├── faces
│ ├── faceZones
│ ├── neighbour
│ ├── owner
│ ├── points
│ └── pointZones
└── transportProperties 1 directory, 9 files

本案例中的网格来自于外部转化,因此不需要修改polyMesh文件夹中的内容。

transportProperties文件中存储了传输属性参数,用文本文件打开来看。

nano transportProperties

此文件的内容:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // nu [0 2 -1 0 0 0 0] 0.01; // ************************************************************************* //

此文件中只是定义了粘度为0.01 m2/s。在不可压缩流动中,只需要定义此参数。

6 system目录

system目录下包含四个文件。

.
├── controlDict
├── foamDataToFluentDict
├── fvSchemes
└── fvSolution 0 directories, 4 files
  • fvShceme:该文件中定义了求解过程中所采用的各种离散格式。
  • fvSolution:该文件包含压力速度耦合方法、用于求解差分量的数值方法,以及收敛残差等。
  • controlDict:此文件中定义了各种求解控制参数,如时间步长、文件保存间隔等。
  • foamDataToFluentDict:此文件只有当使用了fluentMeshToFoam命令才会出现,一般情况下不用修改。

本案例需要关注的是文件controlDict。用文本文件打开此文件,修改endTime为75。其他参数保持默认。

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application icoFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 75; deltaT 0.05; writeControl timeStep; writeInterval 20; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; // ************************************************************************* //

7 求解计算

case路径下输入命令:

icoFoam

计算自动进行,直至求解完成。

8 计算后处理

输入命令:

paraFoam

系统启动paraView进行后处理。

速度分布如图所示。

压力分布如图所示。

【OpenFOAM案例】01 elbow的更多相关文章

  1. python 面向对象编程案例01

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例01 class Behave(): def __init__(self,name): se ...

  2. web综合案例01

    web综合案例01 ... .... 内容待添加

  3. 【OpenFOAM案例】02 自己动手

    前言:很多人说OpenFOAM很难,要啃上很多的理论书籍,什么流体力学.计算流体力学.矩阵理论.线性代数.数值计算.C++程序设计神马的,看看光这一堆书就能吓倒绝大多数的人.其实我们并不一定要从这些基 ...

  4. 【一起学OpenFoam】01 OpenFoam的优势

    CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用.通用商业CFD软件譬如Fluent.CFX.Star CCM+等在工业上得到了广泛的应用,另外一些专用的软件(如 ...

  5. Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01

    1. 字符流缓冲流之复制文本文件案例 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamRe ...

  6. 【OpenFOAM案例】03 Docker安装OpenFOAM

    "工欲善其事必先利其器",软件装不上,讲再多的使用技巧也是白搭.近期不少留言说OpenFOAM不容易安装,今天来谈谈如何在Linux下利用Docker安装OpenFOAM. Lin ...

  7. Python3面向对象——案例-01

    经典的策略模式案例 问题描述 使用"策略"设计模式处理订单折扣的 UML 类图 定义一系列算法,把它们一一封装起来,并且使它们可以相互替换.本模式使得算法可以独立于使用它的客户而变 ...

  8. MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode

    周五同事监控报警,有个MySQL从库复制状态异常,让我帮忙排查下,经过排查发现是MySQL5.6并行复制的一个Bug所致,具体处理过程如下: 一.错误信息 登录mysql从库服务器,检查复制状态 my ...

  9. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容 ...

随机推荐

  1. Junit4单元测试的基本用法

    看了一些Junit4的视频,简单了解了Junit4的一些基本用法,整理记录一下. 环境搭建 这里使用的开发工具是MyEclipse,首先新建一个Java工程,将Junit4的jar包引入,eclips ...

  2. shell编程第五天

  3. Web API之service worker

    一.参考链接 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API http://www.alloyteam.com/ ...

  4. 在Qt中调用Mupdf库进行pdf显示

    2018.5.10 更新内存对齐说明 感谢知乎网友@孤独子狮 指出QImage处需要考虑内存对齐的问题.因为本人缺乏跨平台.图形库开发经验,所以在调试成功后就没有深入探究. 主要修改了QImage的构 ...

  5. Module not found: Error: Can't resolve 'XXX' in 'XXXX'

    故障 控制台运行webpack/npm时出现 Module not found: Error: Can't resolve 'XXX' in 'XXXX' 解决方案 npm i XXX --save ...

  6. [BZOJ3339]Rmq Problem / mex

    Description: 有一个长度为n的数组{a1,a2,-,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Hint: \(n \le 2*10^5\) Solution: 主席树好 ...

  7. 20172327 2018-2019-1 《第一行代码Android》第二章学习总结

    学号 2017-2018-2 <第一行代码Android>第二章学习总结 教材学习内容总结 - 活动是什么: 活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件 ...

  8. windows上redis添加密码

    命令: config get requirepass config set requirepass pwd redis-server.exe redis-windows.conf. auth   pw ...

  9. Java 构造器 通过私有构造器强化不可实例化的能力

    只有当类不包含显式的构造器时,编译器才会生成一个公有的.无参的缺省构造器.只要让一个类包含私有构造器,这个类就不能被实例化了.示例: // 工具类 public class UtilityClass ...

  10. list(列表) python

    1.list(列表): list是处理一组有序项目的数据结构 list(列表)是python中使用最频繁的数据类型 list中什么类型的数据都可以存放(如:类.自己.函数......): list(列 ...