本案例演示利用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. ES6+javaScript原型

    Symbol 属性私有化,数据保护 let _gender = Symbol('gender') function Person(name, gender) { this.name = name; t ...

  2. 环形动画加载视图AnimatedCircleLoadingView​​​​​​​

    环形动画加载视图AnimatedCircleLoadingView AnimatedCircleLoadingView是基于Android手表动画android-watch-loading-anima ...

  3. Numpy np.array 相关常用操作学习笔记

    1.np.array构造函数 用法:np.array([1,2,3,4,5]) 1.1 numpy array 和 python list 有什么区别? 标准Python的列表(list)中,元素本质 ...

  4. python高级——垃圾回收机制

    GC作为现代编程语言的自动内存管理机制,专注于两件事:1. 找到内存中无用的垃圾资源 2. 清除这些垃圾并把内存让出来给其他对象使用.GC彻底把程序员从资源管理的重担中解放出来,让他们有更多的时间放在 ...

  5. [PA2014]Lustra

    [PA2014]Lustra 题目大意: 有n个工厂参加竞标.每个工厂能生产长度在\([a_i,b_i]\)之间,宽度在\([c_i,d_i]\)之间的镜子,镜子不可以旋转. 问是否有某个工厂能生产出 ...

  6. JDK 1.8 新特性

    default 函数式接口 待总结

  7. 在win10中解决 你要以何方式打开此 .xlsx

    鼠标右击开始按钮,点击控制面板. 查看方式选择大图标或者小图标.   然后点击“默认程序”.     点击,设置默认程序.   在左侧程序蓝,选择你需要设定的程序.然后点击“将此程序设为默认值”.确定 ...

  8. LINUX文件及目录管理命令基础(2)

    Linux文件类型 文件作为Linux操作系统中最常见的对象,在系统中被分为了多种类型 如下: - 普通文件 d 目录 l 链接 b 块设备 c 字符设备 p 管道设备 s 套接字文件 Linux目录 ...

  9. Nginx (LNMP+https)

    单向认证与双向认证的概念 什么是单向认证 单项认证就是比如你有个密码用户名然后和服务器上的用户信息进行比对一致的话你们就可以建立连接. 什么是双向认证 SSL的双向认证就是客户端要获取服务端的证书,检 ...

  10. Java Web 域名

    虽然可以直接通过IP地址来访问WWW的每一台主机,但是32位IP地址非常难记.所以,为了便于记忆,按照一定的规则给Internet上的计算机起了名字即域名.通俗地说,域名相当于一个房屋的门牌号码,别人 ...