FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

来自https://confluence.cornell.edu/pages/viewpage.action?pageId=191794314
将原本的非结构网格转化成了结构网格,同时添加了关于LES相关设置的说明。

Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

以ANSYS 17.0为例

问题描述

考虑通过圆形截面直管道的流动问题,圆管直径D=0.0127mD=0.0127m,长度L=5D=0.0635mL=5D=0.0635m。管道进口处的平均流速为Ubulk=6.58m/sU_{bulk}=6.58m/s,假设流体密度为定值,ρ=1.331kg/m3\rho=1.331kg/m^3,流体动力粘性系数μ=2.34×105kg/(ms)\mu=2.34\times10^{-5}kg/(m\cdot s)。那么基于圆管直径、平均流速、流体密度、动力粘性系数算得该问题的Reynold数(Re)为

Re=ρUbulkDμ=1.3316.580.01272.34×1054750Re=\frac{\rho U_{bulk} D}{\mu}=\frac{1.331*6.58*0.0127}{2.34\times10^{-5}}\approx 4750

接下来咱们用ANSYS FLUENT中的LES方法来求解该流动问题,绘制在距离进口x/Dx/D处下游截面上随着半径变化的平均速度和均方根速度,并比较由LES方法和kϵk-\epsilon方法模拟得到的平均速度。

1 预分析和准备工作

预分析

在大涡模拟中,瞬时速度U(x,t)\vec{U}(\vec{x},t)被分解为滤波后的分量Uˉ(x,t)\bar{\vec{U}}(\vec{x},t)以及剩余的残差分量U(x,t)\vec{U}'(\vec{x},t),滤波后的速度分量表征了大尺度的非定常运动。在LES中,大尺度的湍流运动被直接表征,而小尺度的湍流运动则用模型近似。关于滤波速度的滤波方程可以从Navier-Stokes方程推出,由于残差操作,动量方程中的非线性对流项引入了一个应力张量的残差项,该残差应力张量需要通过构造模型来完成方程组的封闭,而FLUENT中提供了从易到难的多种模型。

既然咱们要求解Uˉ(x,t)\bar{\vec{U}}(\vec{x},t),那么LES就是个非定常的模拟过程,需要在时域内向前推进。为了收集统计平均量,比如平均和均方根(root mean square(r.m.s.))速度,咱们需要首先达到统计上的稳定状态(然后再开展统计平均的处理)。作为对比,kϵk-\epsilon模型求得的平均速度也一并给出。

关于LES的详细理论和方程可以再很多湍流的书籍中找到。

准备工作

LES是三维非定常计算(只能适用于三维问题和非定常问题),那么计算域是全部的管道。

在打开ANSYS之前,先创建一个文件夹turbulent_pipe_LES,然后里面在创建一个ICEM文件夹和FLUENT文件夹,分别用来存放ICEM的建模和画网格文件,以及FLUENT的计算文件。

2 构建几何模型

打开ICEM CFD 17.0软件,在其中完成建模工作,咱们计算域是圆管内部流道,也就是一个圆柱体,让圆柱体的轴线沿着xx方向,进口截面位于yOzyOz平面上,圆心位于坐标原点OO

注意:在建模过程中所用长度单位为m。

创建点

Geometry -> Create Point -> Explicit Coordinates
依次创建坐标(x,y,z)(x,y,z)(0,0,0)(0,0,0)(0,0.00635,0)(0,0.00635,0)(0,0,0.00635)(0,0,0.00635)(0.0635,0,0)(0.0635,0,0)的点0、1、2、3。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

创建线

Geometry -> Create/Modify Curve -> Cricle or arc from Center point and 2 points on plane. Optional Radius
依次选中前3个点,即圆心、圆环上两个点,OK,生成进口圆环曲线crv.00

Geometry -> Create/Modify Curve -> From Points
选中第1和第4个点,即轴线上两个点,OK,生成轴线crv.01

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

创建面

Geometry -> Create/Modify Surface -> Simple Surface
将Simple Surface Method中由默认的From 2-4 Curves改为From Curves
选中进口的圆环,OK,生成进口面Suf.00

Geometry -> Create/Modify Surface -> Curve Driven
选择Driving Cruve为crv.01,Driven Curves为crv.00,OK,生成环面即为圆管的壁面Suf.01。

Geometry -> Create/Modify Surface -> Simple Surface
将Simple Surface Method中由默认的From 2-4 Curves改为From Curves
选中出口的圆环,OK,生成进口面Suf.02

创建体

Geometry -> Create Body -> Material Point
选中pnt.03和pnt.01两个点,则创建好了圆柱体Body
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

创建边界面

Parts 右击 Create Part,Part中命名为inlet,选中进口面,OK;
同样,将出口面命名为outlet;将侧面命名为pipeWall。

删除模型创建过程中多余的点、线

Geometry -> Delete Point,按下键盘中的A删除所有的点;
Geometry -> Delete Curve,按下键盘中的A删除所有的线;
Model -> Parts -> GEOM右击,Delete,删除没有几何元素的空Part。

现在就只剩下来了一个三维实体BODY,还有三个边界面INLET、OUTLET和PIPEWALL。

创建几何模型的拓扑结构

Geometry -> Repair Geometry,保持默认,Apply,再次生成表征几何体所必须的Point和Curve。
系统会根据体和面生成所必须的点和线。

之所以这么做,是为了保证体、面与点、线的关联性,便于后续网格剖分。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

3 剖分网格

还是在ICEM软件中操作,接下来剖分几何体为分区结构化网格。
为确保完全,先保存下,Save Project到咱们最早新建的文件夹…\turbulent_pipe_LES\ICEM中,名字叫Pipe就好了。

创建整体Block

Blocking -> Create Block,
Part命名为Fluid,保持默认的Initialize Blocks,选择默认的Type为3D Bounding Box,OK。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

创建O-Block

Blocking -> Split Block,
选择Ogrid Block,
Select Block(s),选择需要划分的Block;
Select Face(s),选择进口与出口的两个面;
OK,即可看到切分好的O-型分区。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

建立映射关系

Blocking -> Associate -> Snap Project Vertices,选择All Visible,OK。
则Block中的点自动和几何体中最近的点映射到一起了。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
Blocking -> Associate -> Associate Edge to Curves -> Associate Edge to Curves,
将对应的Block中的Edge映射到几何体的Curves上。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

定义网格节点数目

Blocking -> Pre-Mesh Params -> Edge Params

将所有轴向Edge设置为均分160个单元,这样单元尺度为h=0.0635m/1604×104mh=0.0635m/160\approx4\times10^{-4}m
将进出口处与1/4圆弧对应的Edge均分为25个单元,这样单元尺度为h=0.0127mπ/4/254×104mh=0.0127m*\pi/4/25\approx4\times10^{-4}m
将壁面边界层网格,即O-结构网格的四个径向Edge设置为首层网格h0=5×106mh_0=5\times10^{-6}m,等比增长比例为1.1,总共40层网格。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

生成网格

Model -> Blocking -> Pre-mesh,Yes。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)Model -> Blocking -> Pre-mesh右击Pre-Mesh Info,可看网格信息:
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
其节点总数约70万,其六面体单元总数约70万。

检查网格质量

Blocking -> Pre-Mesh Quality Histograms,
选择Criterion为Determinant 2x2x2,Apply。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
选择Criterion为Angle,Apply。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
网格质量还好的,可以导出网格做计算了。

导出网格文件

Model -> Blocking -> Pre-Mesh,右击,选择Convert to Unstruct Mesh,
信息框出现“Current Coordinate system is global”,则表示转化完成。
File -> Mesh -> Save Mesh As,保存当前网格文件为Pipe_Str.uns。

Output Mesh -> Select solver,
保持Output Solver为默认的ANSYS Fluent,Apply。

Output Mesh -> Write input,
Yes保存现有Project,在跳出的窗口中选择刚才保存的网格文件Pipe_Str.uns,
在随后弹出的窗口中选择3D,可将Output file名字改为Pipe_Str,Done完成输出。

关闭ICEM软件。

4 物理问题设置(Setup设置)

接下来需要在FLUENT当中进行CFD设置和计算了。

打开FLUENT软件:
咱们求解的是三维问题,当然设置成3D了;
为了提高精度,一般都是用的Double Precision双精度模式,因为默认的单精度real计算误差太大了,没谁会拿它来跑计算的;
Precessing Options下,打开Parallel并行计算,然后把Processes中设置成你想用的CPU核数,由于LES是非定常和三维的运算,其计算量非常大,如果用Serial串行计算,那么可能要耗费数月的时间才能算好,所以条件允许的话,尽可能用多核并行计算吧,不然你要等到黄花菜都凉了。。。

读入/检查/缩放网格

File -> Read -> Mesh,找到刚才咱们输出的Pipe_Str.msh文件,把它读进来。

Setting Up Domain -> Info -> Size,查看下网格单元、面、节点数目。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
Setting Up Domain -> Display,显示网格。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)Setting Up Domain -> Check,检查网格,注意看又没有负体积,计算域的x、y、z上下限是不是跟之前建模的一样,如果不一致,是不是差了一定倍数,那就需要做Scale缩放处理。这里一切都OK的,表明网格没问题。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

通有设置

Setup -> General,保持默认Pressure-Based Solver,压力基求解器适用于不可压缩流动,将Time下的默认Steady改为Transient,因为LES只能是非定常三维计算。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

模型设置

Setup -> Models -> Viscous - Laminar,Edit…,Model选择Large Eddy Simulation (LES),Subgrid-Scale Model选择WMLES,这个模型对网格的要求最低(可查看FLUENT帮助文档里的详细说明),OK。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)跳出来个信息框,其实是告诉你,要是用LES的话,空间离散和时间离散都要求比较高,必须要用到它推荐的这些离散格式。即,空间用有界中心差分,时间用有界二阶隐式格式。当然,系统已经自动帮你设置好了。OK关掉它就好了。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

物性参数

Setup > Materials > Fluid > Create/Edit… ,
在打开的窗口中,设置密度ρ=1.331kg/m3\rho=1.331kg/m^3,流体动力粘性系数μ=2.34×105kg/(ms)\mu=2.34\times10^{-5}kg/(m\cdot s),Change/Create,Close。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

边界条件

Setup > Boundary Conditions > inlet,确认其类型是velocity-inlet,Edit…,

设置Velocity Specification Method为Magnitude, Normal to Boundary:
设置Velocity Magnitude (m/s)为6.58 m/s,
设置Fluctuation Velocity Algorithm为Spectral Synthesizer (SS方法,在进口处生成扰动的湍流速度分布,而非均匀恒定的速度场);

设置Turbulence Specification Method为Intensity and Hydraulic Diameter,用强度和水力直径设置湍流:
设置Turbulent Intensity (%)为10 %,湍流强度10%,
设置Hydraulic Diameter (m)为0.0127 m,水力直径用圆管直径给定即可;

设置Reynolds-Stress Specification Method为K or Turbulent Intensity。

OK关闭进口速度设置对话框。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
确保outlet边界类型为Pressure-outlet,并保持默认设置即可。

确保pipewall边界类型为wall,并保持默认设置即可。

确保int_fluid边界类型为interior,这个实际上是计算域内部的面。

设置参考值

Setup > Reference Values,选择Compute from为inlet,即可。

至此,物理问题描述完毕,可以选择保存下文件到先前的文件夹…\turbulent_pipe_LES\FLUENT:
File -> Write -> Case,将Case命名为Pipe即可,OK。

5 求解器设置(Solution设置和求解)

求解方法

Solution -> Solution Methods,
设置Scheme为默认的SIMPLE,
设置Momentum为默认的Bounded Central Differencing,(还记得前面选择LES模型时的提示么)
设置Pressure为Second order,
设置Transient为Second Order Implicit。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

初始流场设置

Solution -> Solution Initialization, 选择Compute from为inlet,然后点击initialize来完成初始化流场。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

设置收敛标准

Solution -> Monitors > Residuals - Print, Plot,Edit…,
将连续方程和x、y、z速度的收敛指标全部设置为1e-6,OK。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)

开始计算

Solution -> Run Calculation,
设置Time Step Size(s)为1e-05,
设置Number of Time Steps为10000,
勾选Extrapolate Variables选项,
设置Max Iterations/Time Step为默认的20次。
FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
为确保万全,先保存下case和dat,然后点Calculate开始计算,愉快地出现了残差收敛曲线,虽然刚开始20步不足以收敛到1e-6,但没过几部之后,系统就不需要20步就能收敛到1e-6了,所以计算精度还是OK的。

FLUENT算例 —— Turbulent Pipe Flow (LES) 圆管湍流流动(大涡模拟)
注意:这里的10000步算到0.1s,这样的计算值仅仅是为了让流场发展到统计稳定状态(也就是类似于振动力学里面的稳态响应状态),然后再从0.1s开始后续的10000步计算到0.2s,边算边统计,以获取0.1-0.2s的统计平均值。

由于我电脑比较烂,所以用的是单核串行计算……只能苦苦等待了……