多相流的数值模拟.

合集下载

Ⅰ型拉伸试样金属注射成形多相流动的三维数值模拟

Ⅰ型拉伸试样金属注射成形多相流动的三维数值模拟
tp e sl e ts e i n y e tn i ts p cme e
国家 自然科学基金项 目 (0 7 13;17 26 ; 58 4 2 5 14 3 ) 国家重点基础研究发展计划项 目( 0 1 B 0 36) 中南大 学研究生 2 1C 6 6 0 ;
创新教育工程 (0 0s l5 2 1 s t 9 ; 2 1s t1 ; 1 x 3 ) 中南大学大学生 自由探索项 目( L 15 ) x 0 s1 Z 10 9
d f r n o i o sa e a ay e h e n m e c lsmu ain r s ls s o ta hee i wo— p a e s p r t n p e o e if e tp st n r n z d.T u r a i l to e u t h w h tt r st e i l i h s e a ai h n m — o
pw e i etnm ligI yet se et pc e s bi e , n e e c ycr s f i e adp w e o dr n c o o n —t ni ssei ni et lhd adt l i uv n r n o drn j i d p e lt m s a s h vot e ob d i
mo dng li .
Ke od Me lnetnMo ig Mut—paeFo G vrigE u t n N m r a Sm l i I・ yw rs t jc o l n aI i d l — hs l i w oe n qai s n o u e cl i uao i tn —
第3 2卷 第 1期 21 02年 3月
数 学 理 论 与 应 用
MAT MATI HE CAL THE0RY AND PL CA.I AP I r ONS

多相流模型数值模拟(中文)

多相流模型数值模拟(中文)
va
va
po r
– 欧拉显式
po r
liq
Байду номын сангаасui
d
Actual interface shape
Geo-reconstruct (piecewise linear) Scheme
– 欧拉隐式
• 定常和非定常都使用相同的求解器,在差的网格 单元上有固定的数值差分方法 –使用高阶VOF离 散(HRIC, CICSAM)
Stokes数
• 系统载入媒介粒子时, 根据Stokes数选择合适的模型。
– Stokes数(St)是粒子(分散内相)时间松弛系数(τd)和流动特征 时间比例(τc)的比值。
St =
2 ρd d d 其中 . τ d = 18 μ c
τd τc
,τ c =
D U
– D 和 U 是问题中的特征长度和速度标量。 – 如果 St << 1, 粒子流动将会跟随流场流动。 – 如果 St > 1, 粒子流动独立于流场流动。
• 几种有效的子模型方法:
– 散布相的加热/冷却 – – – – 流体液滴的汽化和蒸发 燃烧粒子的挥发演变和燃烧 喷雾模型中液滴的分裂和融合 腐蚀/衍生
DPM模型的适用条件
• 流域: • 填充体积: • 填充粒子: • 建立湍流模型: • Stokes数: • 案例
– – – – – – 气旋 喷雾干燥器 粒子的分离和分类 浮质散布 液体燃料 媒的燃烧
Primary Phase
选择多相流模型
• 为能选择合理的模型,用户需要推理得到下列 形式的一些流动参数:
– 流动域
• 微粒 (连续介质中的气泡,液滴和固体颗粒) • 分层 (流体分界面的长度和域的长度成正比)

铜富氧双侧吹熔炼炉中多相流的数值模拟

铜富氧双侧吹熔炼炉中多相流的数值模拟

铜富氧双侧吹熔炼炉中多相流的数值模拟铜富氧双侧吹熔池熔炼是一种高效、节能、环保的铜熔炼新工艺,其过程利用侧吹到炉内渣层的富氧空气搅动渣层运动,强化熔体的传质、传热过程,减少了铜锍在炉渣中的溶解,改善了熔体反应的动力学条件。

但目前,该项技术还存在对乳化层认知不清,熔体流动状态不明确及氧枪操作参数变化幅度大等问题。

为了进一步认知和掌握熔池内的流体的流动规律和乳化层现象,选择合适的氧枪操作参数,本文运用商业软件Ansys/Fluent13.0对熔池内多相流的流动特性进行了模拟,在气液两相流中考察了不同氧枪操作条件(气体流量、喷吹角度、喷嘴排布和喷嘴直径)下,熔池内流场分布、速度分布、湍动能分布、气含率分布以及壁面切应力的分布情况,得到了较为适宜的氧枪操作条件,并进一步在实际工况条件下,模拟了不同气体流量和不同喷吹角度下物料卷吸和乳化层高度的变化情况,结论如下:(1)建立了铜富氧双侧吹熔炼炉中多相流的数学模型,采用欧拉模型模拟熔池中多相流的流动过程,运用标准k-ε模型模拟湍流的流动情况,通过数值模拟的结果与PIV技术获得的流场的对比以及均混时间的对比,验证了模型的准确性。

(2)气体流量增大,气体进入熔池时的表观气速增大,对熔池内的搅拌强度增大,有利于熔池内传热传质的进行,但气体流量过大时,会对熔池下部的铜锍层的搅动加剧,造成铜锍损失增大,同时其气含率的分布也更不均匀。

因此,在保证铜锍区稳定的前提下,适当的加大气体流量有助于强化熔炼过程,最佳气体流量为 20m3/h~23m3/h。

(3)喷吹角度的增大,气体纵向的分速度增大,横向的穿透深度减小,导致熔池中心处的搅拌强度随之减小,在喷吹角度较小时,喷吹角度的增大有助于气体在熔池内的均匀分散,熔池内的气含率增大,但喷吹角度过大时,气体在熔池内的停留时间减小,气含率反而下降,综合考虑,最佳的喷吹角度为7~12°。

(4)相邻排布的喷嘴会使气体对熔池的搅动作用有着叠加的效果,即造成该区域流体的速度和湍动能加大,但同时会造成铜锍层的波动也随之加强,此外,局部的气含率的增大会导致气体分布不均和氧枪附近壁面冲刷应力增大,因此,喷嘴的排布不宜过于紧凑。

基于相场模型及涡量流函数形式的一种多相流数值模拟方法

基于相场模型及涡量流函数形式的一种多相流数值模拟方法

基于相场模型及涡量-流函数形式的一种多相流数值模拟方法1)黄军杰2),王时龙重庆大学机械传动国家重点实验室,重庆400044摘要:本文提出一种基于相场(Phase-Field)模型及涡量-流函数形式的二维多相流模拟数值方法。

基于相场的多相流数值模拟需求解两组方程:流动控制方程(具体为不可压Navier-Stokes方程)及界面演化方程(这里使用Cahn-Hilliard方程)。

与常见方法不同的是,对于流动控制方程,本文采用其涡量-流函数形式,并且给出涡量-流函数形式下包含界面张力作用的涡量演化方程及适当的边界条件。

两组方程都使用有限差分法进行空间离散,采用四阶龙格库塔(Runge-Kutta)法进行时间推进。

另外本方法采用空间交错网格,涡量和流函数定义于网格节点,而相场变量(包括相序参数和化学势)定义于网格中心。

对于相场变量的空间导数,本文尝试使用了一般二阶中心差分以及各向同性的九点差分格式(借鉴格子玻尔兹曼方法(Lattice-Boltzmann Method, LBM))。

通过三个基本的多相流算例(平整界面,静止液滴的表面张力平衡以及接触角),本方法得以初步验证;此外,以一种格子玻尔兹曼方法作为参考,本文亦对一般中心差分以及各向同性的差分格式作以比较。

本文认为涡量-流函数形式的多相流模拟方法有其一定的优势,可作为现有常见基于压力-速度形式方法的一种替代来研究某些多相流问题(特别是二维和轴对称问题)。

关键词:多相流;数值模拟;相场模型;涡量-流函数引言很多工业问题中(如石油,化工,食品,化妆品及制药等)都涉及到多相流。

对于不可混合的液-液两相流系统的研究在理论和工程应用中都有重要意义。

基于相场模型的多相流模拟方法近年来发展迅速,颇受关注。

这类方法基于流体临界点附近的理论,使用狭窄但具有有限厚度的区域来代表界面,可以更自然的处理界面的拓扑变化(如液滴融合和分离)[1,2,3,4]。

现有相场多相流模拟方法大多采用基于速度-压力形式的流体控制方程[3,4]。

多相流动的基础知识和数值模拟方法

多相流动的基础知识和数值模拟方法

多相流动的基础知识和数值模拟方法多相流动是指在同一空间中存在两种及以上物质的流动现象。

在工程领域中,多相流动具有广泛应用,如化工反应器中的气液流动、石油勘探中的油水混合流动等。

本文将介绍多相流动的基础知识,并探讨一些常用的数值模拟方法。

一、多相流动的分类多相流动可以根据不同的分类标准进行分类,常见的分类方法包括:1.根据组分:固液流动、气液流动、固气流动等;2.根据速度:稳定流动、不稳定流动、湍流等;3.根据形态:离散相、连续相、两相界面等。

二、多相流动的基础知识1.多相流动的基本方程多相流动的基本方程包括连续性方程、动量方程和能量方程。

在连续性方程中,考虑到多相流动中各相的质量守恒关系;在动量方程中,引入各相之间的相互作用力和速度差等因素;在能量方程中,考虑到各相之间的相变、传热等现象。

2.多相流动的相互作用多相流动中的不同相之间存在相互作用力,如液固两相之间的颗粒间碰撞力、气液两相之间的表面张力等。

这些相互作用力对多相流动的行为和特性具有重要影响。

3.多相流动的模型为了更好地描述多相流动的行为,研究者们提出了多种多相流动模型,如两流体模型、Eulerian-Eulerian模型和Eulerian-Lagrangian模型等。

不同的模型适用于不同的多相流动情况,选择合适的模型对于准确描述多相流动至关重要。

三、多相流动的数值模拟方法数值模拟是研究多相流动的重要手段之一,常用的数值模拟方法包括:1.有限体积法有限体积法是常用的求解多相流动的数值方法之一,它将流动域划分为网格单元,通过离散化各个方程,利用差分格式求解模拟区域内的物理量。

2.多尺度方法多尺度方法考虑到多相流动中存在不同尺度的现象和作用力,通过将流动域划分为不同的区域进行求解,以更好地描述多相流动的行为。

常见的多尺度方法有多尺度网格方法和多尺度时间方法。

3.相场方法相场方法是一种常用的描述多相流动界面的方法,它通过引入相场函数来表示相界面,并利用Cahn-Hilliard方程等对相场函数进行求解,从而获得界面位置和形状等信息。

基于计算流体力学的多相流模拟研究

基于计算流体力学的多相流模拟研究

基于计算流体力学的多相流模拟研究随着计算机技术的不断发展,基于计算流体力学(CFD)的多相流模拟研究逐渐成为研究的热点之一。

多相流是指流体中同时含有两种或两种以上的物质的流动过程,如气体-固体、气体-液体、液体-固体等组合。

多相流的研究对于化工、生物、环境等领域具有重要的实际应用价值。

多相流模拟的目的在于对多相流体的流动及物质传递规律进行研究和分析,以获取相关参数,并对多相流体的流动进行数值模拟,推导其物理机理。

然而,多相流的复杂性和难以获取量测数据导致了多相流模拟的困难度较大,因此要想开展多相流的研究,需要引入CFD的理论和方法。

通过CFD方法对多相流动进行模拟,需要考虑许多因素,包括流体相间相互作用、分相界面运动、物质质量传递和能量传递等。

目前,CFD方法解多相流模拟主要分为两类: 集成法和分散法。

集成法将不同相的运动方程作为一个整体来求解,其中每个相的运动方程是由质量、动量可以和能量守恒方程所描述的,并且这些方程是连续的。

其中,Navier-Stokes方程组是求解多相流动的基本方程,另外还需考虑相间间的作用力,以克服各相之间的摩擦力和激发力的影响,从而得出该系统各相之间的相互作用模型。

集成法可以有效地模拟多相流动的物理过程,但计算复杂度较高,常用于多相流的精细模拟。

分散法则是用不同的计算区域来描述多相流体的各相,考虑各相之间相互作用、质量、动量和能量的转移,求解各相的运动方程。

分散法包括欧拉法和拉格朗日法两种基本方法。

欧拉法利用有限体积法将一个区域划分成小的有限体积,运用每个体积元的守恒方程来确定各个相的运动方程,从而解决多相流动问题。

而拉格朗日法则是以某一相的流体微团作为研究对象,跟踪其经过的路程、改变的状态和受到的力矩,同时考虑该微团与其它微团的相互影响,从而确定各相的运动方程。

无论是集成法还是分散法,多相流模拟都需要建立合适的数值模型以描述物理过程。

目前,多相流模拟的数值模型包含了不同的领域知识和理论方法,如离散元法、Lattice-Boltzmann方法、相场方法等。

多相流动动力学的数值模拟与分析

多相流动动力学的数值模拟与分析

多相流动动力学的数值模拟与分析多相流动是指在流体中同时存在两种或两种以上的物质,这些物质可以是气体、液体或固体。

由于多相流动的复杂性,数值模拟成为研究多相流动的有效手段之一。

数值模拟可以通过计算机模拟多相流动的各种特性,如相互作用、相变、物理效应等,以更深入地理解多相流动动力学行为。

本文将介绍多相流动动力学的数值模拟与分析方法和应用,包括模型、算法以及重要应用领域。

多相流动动力学模型在数值模拟中,多相流动动力学模型是处理多相流动问题的基础。

多相流动模型可以大致分为两类:欧拉-欧拉模型和欧拉-拉格朗日模型。

欧拉-欧拉模型使用两个或多个连续性方程对每个相的物质守恒和动量守恒进行建模。

这些方程用于描述不同相之间的相互作用,包括不同相之间的质量和能量传递。

欧拉-欧拉模型被广泛应用于处理多孔介质中的多相流,如油藏、地下水系统等。

欧拉-拉格朗日模型则使用一个欧拉方程对流体整体进行建模,用于描述流体的运动和相互作用。

该模型建立在欧拉方程的基础上,使用另一种拉格朗日方程来描述固体颗粒运动。

欧拉-拉格朗日模型通常用于研究一个或多个固体颗粒在流体中的运动,例如颗粒悬浮在液体中的情况。

多相流动动力学算法在多相流动动力学数值模拟中,有多种算法可供选择。

以下是几种常用的多相流动动力学算法:Lattice-Boltzmann方法:Lattice-Boltzmann方法是Lattice-Gas方法的一种改进。

该算法将连续性方程转化为离散空间和时间的微分方程,从而简化了计算过程。

Lattice-Boltzmann方法已经被广泛应用于湍流数值模拟、多孔流动和多相流动等领域。

有限元法:有限元法通过将流场划分为多个小区域来离散化流 field。

这种方法对任意复杂的几何形状和流动条件都有一个准确的数值解,已被广泛用于数值模拟和工程设计中。

元胞自动机方法:元胞自动机方法是一种离散事件方法,通过定义哪些工作单元(mesh cell)可以容纳颗粒,颗粒在各个时间步长内向相邻工作单元的移动,来模拟多相流动的行为。

多相流的数值模拟和实验研究

多相流的数值模拟和实验研究

多相流的数值模拟和实验研究多相流是指由两种或两种以上不同物质组成的两相或多相混合物所表现出来的流动现象。

对多相流的研究具有重要的理论和实际意义,它对于理解自然界的物理现象和化学过程,以及各种工业生产过程的优化和控制有着重要的意义。

由于多相流的复杂性,传统的实验和经验研究方法很难对其进行全面而准确的理论分析和实验研究,因此,数值模拟技术成为多相流研究的重要手段。

一、多相流的数学及物理模型多相流的模型是描述多相流动行为、相间传质、相间传热及相间反应过程的数学模型。

对于粒子数量较少的多相流应用连续介质模型,人们将不同相之间人为的断裂为一个个离散的颗粒,在一段时间内它们遵循阻力、碰撞、转移等物理规律分别运动。

在三维颗粒动力学(Discrete Element Method,DEM)模拟中,将某物质视作一堆颗粒的集合,部分颗粒之间具有碰撞和摩擦等相互作用。

相较于欧拉模型,DEM直接模拟颗粒的运动,颗粒运动的规律和特性可直接反映在输出的数据中。

对于粒子数量较多的多相流,例如颗粒流和气固两相流,需要采用欧拉模型。

欧拉模型将多相流看作为运动的连续介质,通过对流动状态中各相界面的移动和膨胀收缩来描绘多相流的运动及相间耦合反馈关系。

其中最重要的问题是对各相之间的相互作用关系、相互传递关系、相互转移关系进行描述和计算。

其中最经典的方法是用Navier-Stokes方程和质量守恒方程来描述多相流的欧拉模型,但是由于微观尺度的混沌运动和相互作用关系的复杂性,欧拉模型仅能模拟在能量和数量分布方面相对均一的现象。

二、多相流的数值模拟多相流的数值模拟将多相流视为连续介质,通过数值解法在离散化的时间和空间网格上对多相流动的各项参数进行计算,从而通过计算机模拟的方法来模拟多相流的运动行为。

数值模拟的过程通常包括以下几个方面的内容:建立数学模型、数值解法、模型验证和优化等。

1.建立数学模型多相流动的数学模型是研究多相流动过程的基础,在多相流动的数值模拟中,合适的模型对于准确得到各相的体积分数、速度以及温度等参数具有重要意义。

多相流热动力学基础(数值模拟)

多相流热动力学基础(数值模拟)

两相流动力学的数理模型一、均相流动模型均相流动模型就是把气液两相混合物看作一种均匀介质,这种介质具有均一的流动参数,其物理特性参数取两相介质相应参数的平均值。

因此可按单相介质处理均相流模型的流体力学问题。

由于这种模型回避了相之间的相互作用,对非均匀混合的情况误差较大。

使用均相流模型对于泡状流(尤其是沫状流和雾状流)具有较高的精确性;对于弹状流和块状流需要进行时间平均修正;对于分层流、波状流和环状流,则误差较大。

均流模型的基本假设是:①气液两相流的实际流动速度相等;②两相介质间处于热力学平衡状态,压力、密度等互为单值函数;③在计算摩擦阻力和压力损失时使用单相介质阻力系数。

由上述假设可知:u u u l g ==,滑动比1g l s u u ==,真实含气率与体积含气率相等αβ=,真实密度与流动密度相等()ρρ'=。

对于稳定的一维均相流动,其基本方程有 1、连续性方程根据质量守恒原理,可得M==常数uA ρ (1) 2、动量方程在一维流场中任取一长为dz 的微小流段,其直径为D,过流断面面积为A,如图一所示,现沿流动方向建立动量方程。

图一 均相流动模型作用在微小流段上的质量力只有重力,其沿z方向的分力为θρ-sin gAdz ; 作用在微小流段上的表面力有压力A )dp p (pA +-和切向力dF -。

由动量定律,可得如下动量方程:Mdu sin gAdz dF Adp =θρ--- (2) 或写成AdzMdu sin g AdzdF dz dp +θρ+-=(3)3、能量方程利用工程流体力学中的热焓形式能量方程di )2u(d )sin gz (d dwdw dq 2f ++θ++= (4)根据热力学第一定律dp pd de )p (d de di υ+υ+υ+==υ+=pd de dq 故 di =dp dq υ+ 由此可得dw )2u(d dz sin g dwdp 2f ++θ+υ-= (5)式中:dq ──单位质量流体吸收的热量,包括由外界直接吸收的热量和由机械能散失转变 成的热量;dw ──单位质量流体对外所作的功;f dw ──单位质量流体由于摩擦而散失的机械能; di ──单位质量流体焓的增量; de ──单位质量流体内能的增量; υ──两相混合物的比容,υ=ρ1。

电弧炉用氧技术的多相流数值模拟研究

电弧炉用氧技术的多相流数值模拟研究
mo e x e i n s dl p r e me t.M o es e i l ,t ep n tai n d p h p e i td b u r a i lt n h s e n f u d t g e l wi a y wa e r p c al h e er t e t r d ce yn me c l mu a i a e o n oa r ewel t t t t r y o i s o b h h b
睾 能 程 热 工
DO : 1.99 .i n 0 21 3 .0 1 1 0 I 03 6 / s .1 0 —6 92 1. . 7 j s 00
工加 4 21第 期 业 热第0 0年 1 卷1
电弧炉用氧技术 的多相流数值 模拟研究
李 桂 海, 何 春 来 , 朱 荣 , 董 凯
(co l f tlr i l n clgcl n i ei ,U iesyo ineadT cn lg e ig e ig 10 8 ,C ia S h o o al gc dE oo i gn r g nv ri f cec eh oo yB in ,B in 0 3 hn ) Me u a a aE e n t S n j j 0
Ab t a t sr c :A t e t a d l a e n d v lp d t n l z h a s n r e d me so a n r ep a e f w e 1 0 t ma h ma i l c mo e s e e eo e a ay et et n i t h e — i n i n l dt e — h s l i t EAF u ig h b o r e t a h o nh 5 sn
中 图 分 类 号 :T 7 1 F 4 文 献 标 志 码 :A 文 章 编 号 : 10 —6 92 1)10 2 —5 0 2 13 (0 10 —0 30

多相流动的数值模拟

多相流动的数值模拟

多相流动的数值模拟引言在石油、化工、冶金等领域,多相流动是一类十分重要的现象。

它对于流体力学、化学反应等方面的研究都有着重要的意义。

在实验室内研究多相流动往往受到条件的限制,因此人们常常借助数值模拟的方法来探究多相流动的规律。

随着高性能计算技术的进步,多相流动的数值模拟得到了显著的发展。

概述多相流动是指两种以上物质同时存在于同一空间内、流动行为相互影响的现象。

其中流体中两相之间相对运动存在的现象称为相互作用。

两相之间的相互作用表现为牛顿第三定律:相互作用力相等,方向相反。

多相流动的计算方法目前主要有多介质方法、连续介质方法等。

多介质方法:将流体划分为两个或以上相分离的单相流,依据一个对象在单相流中的位置,判定该对象处于哪个相中,并且根据两相之间物质交换规律,计算两个相之间的相互作用和传质传热情况。

多介质方法的优点是可以明确地区分出多种物质,但是在相界面上,流体速度及物理量的梯度会达到无穷大,时间步长受到的限制较大。

连续介质方法:将两个相或多个相混合在一起作为一个流体进行数值模拟。

连续介质方法将相互作用作为成分间的扩散流。

连续介质方法的优点是计算机容易处理,且时间步长相对较大。

缺点是得到的结果是平均化的量,难以表达相之间的详细信息。

多相流动的数值模拟方法主要有欧拉法、拉格朗日法和欧拉-拉格朗日方法。

欧拉法:与连续介质方法相似,欧拉法以物质点的质量为基础来进行计算。

以两相为例,沿任何一条雷诺迹线,可以得到该点处气相和液相的不同体积分数。

欧拉法的优点是可以精确的描述流体的宏观特征,计算快速简单,缺点是欧拉法忽略了颗粒之间的相互作用。

拉格朗日法:是以颗粒为基础,采用颗粒运动方程和颗粒轨迹计算颗粒的定位和速度。

拉格朗日法的优点是可以精确的描述颗粒间的相互作用,计算精度高。

缺点是需要像物理颗粒模型这样的复杂的计算,计算量很大。

欧拉-Lagrange方法:欧拉-Lagrange方法采用欧拉法描述流体的运动,采用Lagrange法描述颗粒间的相互作用。

硫铁矿沸腾焙烧炉多相流动反应特性的数值模拟

硫铁矿沸腾焙烧炉多相流动反应特性的数值模拟

硫铁矿沸腾焙烧炉多相流动反应特性的数值模拟穆玺文;缪海山;薛绍秀;韩志明;曾伟;焦璐璐;张浩;余艾冰【期刊名称】《材料与冶金学报》【年(卷),期】2024(23)3【摘要】采用双流体方法对硫铁矿在沸腾焙烧炉内的多相流动反应特性进行数值模拟研究,得到了不同工况下炉内温度分布、各组分分布及反应速率等关键数据,重点分析了进气速度和预热风温对反应速率的影响规律.结果表明:当进气速度由2m/s增至2.5 m/s时,沸腾焙烧炉内焙烧硫铁矿的反应速率由8.01mmol/(m^(3)·s)增至13 mmol/(m^(3)·s),同时流化床层厚度会随着进气速度的增加而增大,但过高的气速有可能致使固相扰动SO2的收集工序,因此建议将进气速度调整至2.5 m/s;预热风温对提高沸腾焙烧炉内硫铁矿的反应速率起促进作用,当预热风温由25℃升至600℃时,炉内平均温度升高,反应速率由4.1 mmol/(m^(3)·s)增至6.3 mmol/(m^(3)·s),反应进行得更完全,残硫率也更低;当预热风温到达600℃时,炉内局部区域超过1000℃,极易造成安全隐患,因此建议将预热风温设置在200~300℃.【总页数】8页(P218-225)【作者】穆玺文;缪海山;薛绍秀;韩志明;曾伟;焦璐璐;张浩;余艾冰【作者单位】东北大学多金属共生矿生态化冶金教育部重点实验室;东北大学冶金学院;瓮福(集团)有限责任公司瓮福化工公司;东南大学能源与环境学院;江苏集萃工业过程模拟与优化研究所有限公司【正文语种】中文【中图分类】TF806.11【相关文献】1.同心反切燃烧器系统炉内多相流动特性试验及数值模拟2.渣油加氢沸腾床的多相流流动特性模拟3.球团竖炉气固流动与焙烧过程耦合的三维数值模拟4.催化裂解反应器内的多相反应流动数值模拟5.基于DPM的悬浮磁化焙烧主炉气固流动传热数值模拟因版权原因,仅展示原文概要,查看原文内容请购买。

多相流体的数值模拟及计算方法

多相流体的数值模拟及计算方法

多相流体的数值模拟及计算方法随着科技的不断发展,数值模拟成为了多领域科学研究的重要手段。

在工程领域中,多相流体的数值模拟显得尤为重要,因为多相流体系统中的相互作用十分复杂,实验条件受到限制,因此数值模拟成为了研究这些系统的主要手段之一。

一、多相流体的数值模拟多相流体包括两个或两个以上物理相或化学相的混合物,比如液体、气体、固体等。

在多相流流场中,不同相之间互相作用,流体间相互作用形成了复杂的流动现象,如空气中的雾、汽车燃烧室中的燃气和固体颗粒等。

如何对这些现象进行准确模拟,是工程领域中多相流体研究的一大挑战。

数值模拟在多相流体研究中的作用不言而喻。

数值模拟能够模拟多相流体流动的各种现象,如液滴、气泡、颗粒等运动轨迹、质量传递过程、界面着生和破裂过程等。

数值模拟方法主要有拉格朗日方法和欧拉方法两种。

拉格朗日方法主要适用于离散相数目较少、相互之间相对独立的情况。

该方法通过在每个离散相质点上解运动方程来描述相的运动,然后通过在每个极小团上解质量、动量和能量守恒方程来描述其与流体场的相互作用。

而欧拉方法适用于离散相数目较多或相互依赖较多的情况。

该方法将全多相流看做是一种非连续的流体,将其称为“均相流”。

根据物理实验数据的观察和分析,多相流体的数值模拟可以分为不同的模型,如气-液两相模型、沸腾模型、涡流破碎模型、松弛模型等,而不同的模型又需要不同的求解算法。

二、多相流体数值模拟的计算方法在多相流体模拟中,需要解决连续相和离散相之间的相互作用,因此需要涉及到两套计算方法。

前者是连续相计算,主要基于欧拉方法;后者则是离散相计算,主要基于拉格朗日方法。

两种方法的计算过程都十分复杂,需要对流场的参数进行求解。

多相流的数值模拟使用的计算方法有:有限体积法(FVM)和有限元法(FEM)。

FVM是应用广泛的计算数值方法,它将集成区域划分为有限数量的小单元,然后使用控制方程组来求解每个单元的值。

FEM则是将连续体分成小单元,通过建立节点来对其进行离散化。

封闭空腔中多相流振荡传热特性的数值模拟

封闭空腔中多相流振荡传热特性的数值模拟

wa s p e r f o r me d b y u s i n g CFD d y n a mi c me s h me t h o d a n d v o l u me o f f l u i d ( V OF) mo d e 1 . Th e r e l a t i o n s o f h e a t t r a n s f e r c o e f f i c i e n t t o t h e s p e e d a n d s t r o k e o f p i s t o n a n d f i l l r a t i o o f l i q u i d we r e o b t a i n e d . Th e r e s u l t s
Ch i n a No r t h V e h i c l e Re s e a r c h I n s t i t u t e,Be i j i n g 1 0 0 0 7 2, C h i n a)
Abs t r a c t : Os c i l l a t i n g he a t t r a n s f e r h a s be e n wi de l y us e d i n e n gi n e p i s t o ns a nd v a l v e s, bu t t h e me c ha n i s m of he a t t r a ns po r t i s s t i l l n ot c l e a r l y u nde r s t o o d, S O t he d e s i gn o f l i q ui d c o o l e d p i s t on s a n d v a l ve s i s mo s t l y
意义。

多相流的数值模拟综述

多相流的数值模拟综述
10

颗粒轨道模型 假设: 颗粒相是离散体系,与连续流体相之间有速度差; 弥散颗粒相无自身的湍流扩散,湍流粘性和湍流导热; 颗粒群按初始尺寸分布分组,每组颗粒在任何时刻都有相同
的的尺寸、速度;
每组颗粒从某一初始位置开始沿着各自独立的轨道运动,互 不干扰,互不碰撞; 颗粒相作用于流体的质量,动量及能量源都以一个等价的量 均匀分布于流体相所在的单元内。
5

多相流数值模拟中的常用特殊参数 容积气流率 气相体积流量和两相体积流量之比为体积含气率,又称容 QG / Q QG / QG QL 积气流率,用 表示: 相函数 相函数表示两相流气体(液体)相的体积(在二维空间中,对 应的参数是面积)在局部单个网格区域中所占据的份额。 Level Set函数 Level Set函数是一个高阶空间分布函数,它的零等值面可 被用来指示相界面的位置和形状。 加权参数 为了计算方便和便于进行试验数据拟合,常对多相流的真 实参数进行权重因子的加权。 运动参数 静止参数
多相流的数值模拟
机械设计及理论(3)班 叶圣军 136091321
1
• 本章主要内容
多相流数值模拟的特点
多相流数值模拟中常用的特殊参数 多相流数值模拟方法的分类 连续介质力学模型 其他多相流数值模拟方法 多相流数值模拟中的困难及发展方向
2
• 多相流数值模拟的特点
数值模拟也叫计算机模拟,它以计算机为手段,通过数
mp
dv pi dt p
Fdi Fvmi Fpi FBi FMi Fsi
附加质量力 压力剃度力
颗粒运动的阻力
Basset力
Saffman力 Magnus力
简化后的单颗粒运动方程:

流体动力学中的多相流动问题

流体动力学中的多相流动问题

流体动力学中的多相流动问题引言流体动力学是研究流体运动和相互作用的一门学科,多相流动是其中一个重要的研究领域。

多相流动指的是在一个系统中存在多种不同相态的物质同时发生流动和相互作用的现象。

这种流动问题在许多科学和工程领域都有着广泛的应用,例如石油工业、化学工程、环境工程等。

多相流动问题的研究旨在深入理解和描述多相流体的运动规律,预测和控制多相流动行为对于提高工艺效率和减少环境污染具有重要意义。

在本文中,我们将介绍流体动力学中的多相流动问题,并探讨其在不同领域的应用和挑战。

多相流动的基本概念在多相流动中存在两种或多种不同相态的物质同时存在和流动。

这些物质可以是固体颗粒、液体滴液、气体泡沫等。

在多相流动中,不同相态的物质之间存在着各种相互作用,例如固体颗粒与流体之间的颗粒-流体相互作用力、气体泡沫之间的表面张力等。

多相流动的研究需要考虑以下几个重要的问题:1. 相态的描述和识别在多相流动中,不同相态的物质具有不同的物理性质,如密度、粘度等。

因此,准确地描述和识别不同相态的物质是研究多相流动问题的关键。

通常使用标量、向量或张量等物理量来描述相态,如颜色、速度、形状等。

2. 相态之间的相互作用在多相流动中,不同相态的物质之间存在着各种相互作用,如质量传递、动量传递、能量传递等。

这些相互作用会对多相流动的行为产生重要影响,需要综合考虑各种相互作用力的作用。

3. 多相流动的数学模型为了研究多相流动问题,需要建立合适的数学模型来描述多相流体的运动规律。

多相流动的数学模型通常包括质量守恒方程、动量守恒方程、能量守恒方程等。

这些方程需要考虑物质的相态转换、相互作用等因素。

4. 多相流动的数值模拟为了求解多相流动的数学模型,常常采用数值模拟的方法。

数值模拟可以通过离散化的方法将连续的流动问题转化为求解离散网格上的代数方程组。

常用的数值模拟方法包括有限体积法、有限元法等。

多相流动的应用领域多相流动问题在许多科学和工程领域都有着广泛的应用。

24_多相流的数值模拟课件

24_多相流的数值模拟课件
18
18
小滑移模型 较均相模型有以下改进:
➢按尺寸分组的各弥散颗粒相的速度不再等于当地的流体相速度, 各弥散相之间的速度也不再相等; ➢弥散颗粒相的运动由流体的运动引起,颗粒相的滑移则由颗粒相 相对于多相流整体的湍流扩散所致;湍流脉动的相互作用是造成颗 粒相与连续流体相之间相对运动的基本因素;弥散颗粒相与连续流 体相之间的滑移是颗粒相在连续流体中湍流扩散的表现。 ➢各相之间存在阻力作用,在动量方程中增加阻力项。
➢ 缺点
• 描述两相流的变量几乎增加一倍 • 描述两相流的基本方程组比单相流要复杂的多 • 需要确定相之间的相互作用 • 相分布的描述困难 • 两相流守恒方程的求解困难 • 气-液相界面的数学描述困难 • 气-液相界面上表面张力的计算困难
4
4
• 多相流数值模拟中的常用特殊参数
相分布参数
➢ 浓度 浓度表示固体相的质量在局部计算区域中所占据的质量(或
19
19
颗粒拟流体模型(多流体模型)
特点:将弥散颗粒相与连续流体相均看作是连续介质,对颗粒相的 处理方法与对连续介质相的处理方法类似,认为颗粒相是欧拉坐标 系中与连续相流体相互渗透的一种“假想”流体。
较之小滑移模型:考虑速度和温度滑移的同时,认为滑移与颗粒相 的扩散是两种不同的作用,而且颗粒相的扩散是独立于流体相扩散 之外的另一种运动特性。引入了颗粒相粘相、扩散和导热系数这些 与连续流体类似的物理性质。
颗粒运动的阻力
Basset力
Saffman力
附加质量力
压力剃度力
Magnus力
简化后的单颗粒运动方程:
适用:流场中一相须是弥散于连续介质中的独立的颗粒、气泡或液滴。 适用模型:处理稀疏的气-固两相流或弥散的气-液,液-液两相流问题。

液-液多相流微萃取的数值模拟和实验分析

液-液多相流微萃取的数值模拟和实验分析

used as the organic phase. The cylindrical auxiliary structure promotes the diffusion of Cu 2+ in the
aqueous phase, and the extraction efficiency was the highest, which can reach more than 90%. The cross-
扩散效率可表征萃取效率。有限元计算得到的扩散效率与实验获取的萃取效率值吻合良好,进一步得出了两相
流场分布等流动特征,以解释不同辅助结构下的扩散效率差异。
关键词:微流控芯片;多相层流;液-液萃取;辅助结构
中图分类号:TH122
文献标志码:A
文章编号:1000-6613 (2019) 05-2085-08
distribution was further obtained, and the difference of diffusion efficiency under different auxiliary
structures was explained.
Keywords: micro-fluidic chip; multiphase laminar flow; liquid-liquid extraction; auxiliary structure
Chemical Industry and Engineering Progress, 2019, 38(5): 2085-2092.
Copyright©博看网 . All Rights Reserved.
· 2086 ·




2019 年第 38 卷

FLUENT UDF代码_颗粒(煤或生物质)床层多相流燃烧过程数值模拟-【第1部分】

FLUENT UDF代码_颗粒(煤或生物质)床层多相流燃烧过程数值模拟-【第1部分】

Fluent-UDF_Coal-Combustion-Multiphase-Flow-Processes ---Codes for various kinds of heterogeneous reactions【第一部分-Part1】#include "udf.h"#include "stdio.h"#include "time.h"#define SMALL_S 1.e-29#define eps_g_small 1.#define eps_s_small 1.e-6#define spe_small 1.e-6#define spe_small_comb 1.e-6#define TMAX 3000.#define TMIN 280.#define Rgas 1.987 /* cal/mol.K */ /*UNIVERSAL_GAS_CONSTANT;*/#define PR_NUMBER(cp,mu,k) ((cp)*(mu)/(k))#define IP_HEAT_COEFF(vofP,vofS,k,nu,d) ((vofP)*(vofS)*6.*(k)*(Nu)/(d)/(d))#define Carbon_Init_MF 0.541#define Volatile_Init_MF 0.418#define Moisture_Init_MF 0.026#define Ash_Init_MF (1.-Carbon_Init_MF-Volatile_Init_MF-Moisture_Init_MF)#define rho_c (1000.)#define rho_ash (2931)#define rho_liq_water (998.2)#define rho_volatile (1000.)#define solid_rho (1./(Carbon_Init_MF/rho_c+Volatile_Init_MF/rho_volatile+Moisture_Init_MF/rho_liq_water+Ash _Init_MF/rho_ash))/* Functions Defination */void SolidFuel_Reactant(cell_t c, Thread *t, Hetero_Reaction *hr, double* y_carbon, double* mol_weight);void volatile_mass_fractions();void SetSpeciesIndex();void read_c3m_data();double satPressure(double T);double Get_Phase_Index(Hetero_Reaction *hr);double Turbulent_rr(cell_t c, Thread *t, Hetero_Reaction *r, real yi[MAX_PHASES][MAX_SPE_EQNS]);double Mass_Transfer_Coeff(cell_t c, Thread *tp, Thread *ts);double heat_gunn_udf(cell_t c, Thread *ti, Thread *tj);double rr_combustion(cell_t c, Thread *t, Thread *ts, Thread *tp, double yi_O2, double y_ash, double y_carbon);double rr_steam_gasif(cell_t c, Thread *t, Thread *ts, Thread *tp, double p_h2o, double p_co, double p_h2, double y_carbon, double mol_weight, double* direction);double rr_co2_gasif(cell_t c, Thread *t, Thread *ts, Thread *tp, double y_co, double y_co2, double y_carbon, double mol_weight, double* direction);double rr_h2_gasif(cell_t c, Thread *t, Thread *ts, Thread *tp, double y_h2, double y_ch4, double y_carbon, double mol_weight, double* direction);int IP_CH4 = 0, IS_CH4 = 0, IP_CO = 0, IS_CO = 0,IP_CO2 = 0, IS_CO2 = 0, IP_H2 = 0, IS_H2 = 0,IP_H2O = 0, IS_H2O = 0, IP_O2 = 0, IS_O2 = 0,IP_H2S = 0, IS_H2S = 0, IP_CL2 = 0, IS_CL2 = 0,IP_NH3 = 0, IS_NH3 = 0, IP_N2 = 0, IS_N2 = 0,IP_TAR = 0, IS_TAR = 0, IP_C = 0, IS_C = 0,IP_VOL = 0, IS_VOL = 0, IP_MOISTURE = 0, IS_MOISTURE = 0,IP_ASH = 0, IS_ASH = 0, IP_SOOT = 0, IS_SOOT = 0,IP_PAH = 0, IS_PAH = 0, IP_OIL = 0, IS_OIL = 0,IP_ASH_R = 0, IS_ASH_R = 0, IP_C_R = 0, IS_C_R = 0,IP_C2H2 = 0, IS_C2H2 = 0, IP_SLURRY = 0, IS_SLURRY = 0,IP_C2H4 = 0, IS_C2H4 = 0, IP_C2H6 = 0, IS_C2H6 = 0,IP_C3H6 = 0, IS_C3H6 = 0, IP_C3H8 = 0, IS_C3H8 = 0,IP_SLURRY_D = 0, IS_SLURRY_D = 0, IP_SAND = 0, IS_SAND = 0,IP_ASH_D = 0, IS_ASH_D = 0;int current_c3m_solid_phase = 0;cxboolean init_flag = TRUE;cxboolean PCCL_Devol = FALSE;cxboolean MGAS_Devol = FALSE;cxboolean CPD_Devol = FALSE;cxboolean FGDVC_Devol = FALSE;cxboolean HPTR_Devol = FALSE;cxboolean MGAS_Moisture = FALSE;cxboolean PCCL_Moisture = FALSE;cxboolean MGAS_TarCracking = FALSE;cxboolean PCCL_2nd_Pyro = FALSE;cxboolean MGAS_Gasif = FALSE;cxboolean PCCL_Gasif = FALSE;cxboolean PCCL_TarCracking = FALSE;cxboolean MGAS_WGS = FALSE;cxboolean PCCL_soot_gasif = FALSE;cxboolean MGAS_char_combustion = FALSE;cxboolean PCCL_char_combustion = FALSE;cxboolean PCCL_soot_oxidation = FALSE;cxboolean TAR_oxidation = FALSE;cxboolean MGAS_gas_phase_oxidation = FALSE;doubleavg_mf_h2o,avg_mf_co,avg_mf_h2,avg_mf_ch4,avg_mf_co2,avg_c,avg_volatile,avg_moisture,av g_ash;/* coal analysis variables */double fc_ar=0.,vm_ar=0.,ash_ar=0.,moist_ar=0.;double f_ep_a = 0.;double mw[MAX_PHASES][MAX_SPE_EQNS];double A1_devolatilization=0.0, E1_devolatilization=0.0; /* pan : Oct 2012 */double A2_devolatilization=0.0, E2_devolatilization=0.0; /* pan : Oct 2012 */double A_tar_cracking=0.0 , E_tar_cracking=0.0;double A_steam_gasification=0.0, E_steam_gasification=0.0;double K_steam_gasification=0.0, N_steam_gasification=0.0; /* pan : Oct 2012 */double Annealing_steam_gasification=1.0; /* pan : Oct 2012 */double A_co2_gasification=0.0, E_co2_gasification=0.0;double K_co2_gasification=0.0, N_co2_gasification=0.0; /* pan : Oct 2012 */double Annealing_co2_gasification=1.0; /* pan : Oct 2012 */double A_h2_gasification=0.0, E_h2_gasification=0.0;double N_h2_gasification=0.0; /* pan : Oct 2012 */double Annealing_h2_gasification=1.0; /* pan : Oct 2012 */double A_soot_steam_gasification=0.0, E_soot_steam_gasification=0.0; /* pan : oct 2012 */ double K_soot_steam_gasification=0.0, N_soot_steam_gasification=0.0; /* pan : Oct 2012 */ double Annealing_soot_steam_gasification=0.0; /* pan : Oct 2012 */double A_soot_co2_gasification=0.0, E_soot_co2_gasification=0.0; /* pan : Oct 2012 */ double K_soot_co2_gasification=0.0, N_soot_co2_gasification=0.0; /* pan : Oct 2012 */ double Annealing_soot_co2_gasification=0.0; /* pan : Oct 2012 */double A_soot_h2_gasification=0.0, E_soot_h2_gasification=0.0; /* pan : Oct 2012 */ double N_soot_h2_gasification=0.0; /* pan : Oct 2012 */double Annealing_soot_h2_gasification=0.0; /* pan : Oct 2012 */double A_Soot_Combustion = 0.0, E_Soot_Combustion = 0.0;double A_c_combustion = 8710. /* g/(atm.cm^2.s) */, E_c_combustion = 27000. /* cal/mole */; double Annealing_c_combustion=0.0 , N_c_combustion=0.0; /* pan : Oct 2012 */double A_moisture_release = 0.0, E_moisture_release = 0.0;double wg3 = 0.014;double Moisture_Flux;DEFINE_ADJUST(gasification,domain){if(init_flag){#if !RP_HOSTif(0) SetSpeciesIndex();#endif#if !RP_NODEvolatile_mass_fractions();#endifhost_to_node_real_5(fc_ar,vm_ar,ash_ar,moist_ar,f_ep_a);host_to_node_int_4(PCCL_Devol,MGAS_Devol,MGAS_Moisture,PCCL_2nd_Pyro);host_to_node_int_3(MGAS_Gasif,PCCL_Gasif,PCCL_Moisture);host_to_node_int_3(CPD_Devol,FGDVC_Devol,HPTR_Devol); /* pan : Oct 2012 */host_to_node_int_3(PCCL_TarCracking,MGAS_WGS,PCCL_soot_gasif); /* pan : Oct 2012 */host_to_node_int_1(PCCL_char_combustion); /* pan : Oct 2012 */host_to_node_int_3(MGAS_char_combustion,TAR_oxidation,MGAS_gas_phase_oxidation); /* pan : Oct 2012 */host_to_node_real_2(A_moisture_release, E_moisture_release);host_to_node_real_2(A1_devolatilization, E1_devolatilization); /* pan : Oct 2012 ... added the "1" */host_to_node_real_2(A2_devolatilization, E2_devolatilization); /* pan : Oct 2012 */host_to_node_real_2(A_tar_cracking, E_tar_cracking);host_to_node_real_2(A_steam_gasification, E_steam_gasification);host_to_node_real_2(K_steam_gasification, N_steam_gasification); /* pan : Oct 2012 */host_to_node_real_1(Annealing_steam_gasification);/* pan : Oct 2012 */host_to_node_real_2(A_co2_gasification, E_co2_gasification);host_to_node_real_2(K_co2_gasification, N_co2_gasification); /* pan : Oct 2012 */host_to_node_real_1(Annealing_co2_gasification);/* pan : Oct 2012 */host_to_node_real_2(A_h2_gasification, E_h2_gasification);host_to_node_real_2(Annealing_h2_gasification, N_h2_gasification); /* pan : Oct 2012 */host_to_node_real_2(A_soot_steam_gasification, E_soot_steam_gasification); /* pan : Oct 2012 */host_to_node_real_2(K_soot_steam_gasification, N_soot_steam_gasification); /* pan : Oct 2012 */host_to_node_real_1(Annealing_soot_steam_gasification);/* pan : Oct 2012 */host_to_node_real_2(A_soot_co2_gasification, E_soot_co2_gasification); /* pan : Oct 2012 */host_to_node_real_2(K_soot_co2_gasification, N_soot_co2_gasification); /* pan : Oct 2012 */host_to_node_real_1(Annealing_soot_co2_gasification);/* pan : Oct 2012 */host_to_node_real_2(A_soot_h2_gasification, E_soot_h2_gasification); /* pan : Oct 2012 */host_to_node_real_2(Annealing_soot_h2_gasification, N_soot_h2_gasification); /* pan : Oct 2012 */host_to_node_real_2(A_Soot_Combustion, E_Soot_Combustion);host_to_node_real_2(A_c_combustion, E_c_combustion); /* pan : Oct 2012 */host_to_node_real_2(N_c_combustion, Annealing_c_combustion); /* pan : Oct 2012 */host_to_node_real_2(wg3,Moisture_Flux);init_flag = FALSE;} /* end init_flag */}DEFINE_ON_DEMAND(Devol_and_Tar_Cracking){#if !RP_NODEvolatile_mass_fractions();#endif}void SetSpeciesIndex(){Domain *domain = Get_Domain(1);int n, ns, MAX_SPE_EQNS_PRIM = 0;Domain *subdomain;/*int n_phases = DOMAIN_N_DOMAINS(domain);*//* search all the species and saved the Molecular Weight */sub_domain_loop(subdomain, domain, n){Material *m_mat, *s_mat;if (DOMAIN_NSPE(subdomain) > 0){m_mat = Pick_Material(DOMAIN_MATERIAL_NAME(subdomain),NULL);mixture_species_loop(m_mat,s_mat,ns){if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"ch4")){IP_CH4 = n;IS_CH4 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"co")){IP_CO = n;IS_CO = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c2h2")){IP_C2H2 = n;IS_C2H2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c2h4")){IP_C2H4 = n;IS_C2H4 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c2h6")){IP_C2H6 = n;IS_C2H6 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c3h6")){IP_C3H6 = n;IS_C3H6 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c3h8")){IP_C3H8 = n;IS_C3H8 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"co2")){IP_CO2 = n;IS_CO2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2")){IP_H2 = n;IS_H2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2o")){IP_H2O = n;IS_H2O = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"o2")){IP_O2 = n;IS_O2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2s")){IP_H2S = n;IS_H2S = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"cl2")){IP_CL2 = n;IS_CL2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"nh3")){IP_NH3 = n;IS_NH3 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"n2")){IP_N2 = n;IS_N2 = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"oil")){IP_OIL = n;IS_OIL = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"pah")){IP_PAH = n;IS_PAH = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"tar")){IP_TAR = n;IS_TAR = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c")){IP_C = n;IS_C = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"c_recycle")){IP_C_R = n;IS_C_R = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"soot")){IP_SOOT = n;IS_SOOT = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"volatile")){IP_VOL = n;IS_VOL = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2o<l>")){IP_MOISTURE = n;IS_MOISTURE = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2o<l>-slurry")){IP_SLURRY = n;IS_SLURRY = ns;mw[n][ns] = MATERIAL_PROP(s_mat,PROP_mwi);}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"h2o<l>-dummy")){IP_SLURRY_D = n;IS_SLURRY_D = ns;mw[n][ns] = MATERIAL_PROP(s_mat,PROP_mwi);}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"ash-coal")){IP_ASH = n;IS_ASH = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"ash-dummy")){IP_ASH_D = n;IS_ASH_D = ns;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"ash-recycle")){IP_ASH_R = n;IS_ASH_R = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}else if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"si<s>")){IP_SAND = n;IS_SAND = ns;if(n == 0)MAX_SPE_EQNS_PRIM +=1;}mw[n][ns] = MATERIAL_PROP(s_mat,PROP_mwi);}}else{s_mat = Pick_Material(DOMAIN_MATERIAL_NAME(subdomain),NULL);mw[n][0] = MATERIAL_PROP(s_mat,PROP_mwi);}}}DEFINE_HET_RXN_RATE(moisture_release,c,t,hr,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);int index_phase = Get_Phase_Index(hr);Thread *ts = pt[index_phase]; /* solid phase */double prod = 0.0, Ts = C_T(c,ts);double Pt = MAX(0.1,(op_pres+C_P(c,t)));double Tsat = 1./(0.0727/log(Pt/611.) - 0.0042) + 273.;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if(C_VOF(c, ts) > 0.0 && Ts >= Tsat){if(MGAS_Moisture){prod = yi[IP_MOISTURE][IS_MOISTURE]*C_R(c,ts)/mw[IP_MOISTURE][IS_MOISTURE]; /* kg-mol/m^3*/ A_moisture_release = A1_devolatilization;E_moisture_release = E1_devolatilization;*rr = A_moisture_release*exp(-E_moisture_release/(Rgas*Ts)) * prod*C_VOF(c, ts); /* kmol/(m3.s) */}if(PCCL_Moisture){*rr = 6. * C_VOF(c, ts) / C_PHASE_DIAMETER(c,ts) * Moisture_Flux /mw[IP_MOISTURE][IS_MOISTURE] ; /* kmol/(m3.s) */}}}DEFINE_HET_RXN_RATE(devolatilization,c,t,hr,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);int index_phase = Get_Phase_Index(hr);Thread *ts = pt[index_phase]; /* solid phase */double x0_star = 0., x_star =0.;double Ts = C_T(c,ts);*rr = 0.0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();/*Volatile Matter --> c1 Tar + c2 CO + c3 CO2 + c4 CH4 + c5 H2 + c6 H2O + c7 H2S + c8 NH3*/if(C_YI(c,ts,IS_MOISTURE) < spe_small){if(MGAS_Devol){if(Ts<1223)x0_star = pow((867.2/MAX((Ts-273.),1.)),3.914) / 100.;x_star = solid_rho * (fc_ar/100. + vm_ar/100.)/C_R(c,ts) * x0_star;A2_devolatilization = 0.0;E2_devolatilization = 0.0;}if((PCCL_Devol || CPD_Devol || FGDVC_Devol || HPTR_Devol) && yi[IP_VOL][IS_VOL] > x_star){*rr = (A1_devolatilization *exp(-E1_devolatilization/(1.987*Ts)) + A2_devolatilization *exp(-E2_devolatilization/(1.987*Ts)))*(yi[IP_VOL][IS_VOL]-x_star)*C_VOF(c,ts)*C_R(c,ts)/mw[IP_VOL][IS_VOL];}}}DEFINE_HET_RXN_RATE(tar_comb,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = MAX(TMIN, C_T(c,tp));double rho_g = C_R(c,tp)*1.e-3; /* g/cm^3 */double rr_turb = 1e+20;*rr = 0.0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);if(yi[IP_O2][IS_O2] > spe_small_comb){double tmp_exp, tmp_o2, tmp_tar;T_g = MIN(T_g, TMAX);tmp_exp = 3.8e11 * exp(-30000./(Rgas*T_g)); /* 30000 ---> 60000*/tmp_o2 = pow(rho_g*yi[IP_O2][IS_O2]/mw[IP_O2][IS_O2],1.5);tmp_tar = pow(rho_g*yi[IP_TAR][IS_TAR]/mw[IP_TAR][IS_TAR],0.25);*rr = tmp_exp * tmp_o2 * tmp_tar * C_VOF(c,tp); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(tar_cracking,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double prod = 0.0;double T_g = MAX(TMIN, C_T(c,tp));double rr_turb = 1e+20;*rr = 0.0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);if(yi[IP_TAR][IS_TAR] > spe_small){prod = yi[IP_TAR][IS_TAR]*C_R(c,tp)*C_VOF(c,tp)/mw[IP_TAR][IS_TAR];*rr = A_tar_cracking*exp(-E_tar_cracking/(1.987*T_g))* prod*C_VOF(c, tp); /* kmol/(m3.s) */}}DEFINE_HET_RXN_RATE(co_comb,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = MAX(TMIN, C_T(c,tp));double rho_g = C_R(c,tp)*1.e-3; /* g/cm^3 */double rr_turb = 1e+20;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if(yi[IP_O2][IS_O2] > spe_small_comb){double tmp_exp, p_o2, p_co, p_h2o;if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);T_g = MIN(T_g, TMAX);tmp_exp = 3.98e+14 * exp(-40000./(Rgas*T_g)); /*40000 ---> 80000 */p_o2 = pow(rho_g*yi[IP_O2][IS_O2]/mw[IP_O2][IS_O2],0.25);p_co = rho_g*yi[IP_CO][IS_CO]/mw[IP_CO][IS_CO];p_h2o = pow(rho_g*yi[IP_H2O][IS_H2O]/mw[IP_H2O][IS_H2O], 0.5);*rr = tmp_exp * p_o2 * p_co * p_h2o * C_VOF(c,tp); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(ch4_comb,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = MAX(TMIN, C_T(c,tp));double rho_g = C_R(c,tp)*1.e-3; /* g/cm^3 */double rr_turb = 1e+20;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if(yi[IP_O2][IS_O2] > spe_small_comb){double p_o2, p_ch4;if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);T_g = MIN(T_g, TMAX);p_o2 = pow(rho_g*yi[IP_O2][IS_O2]/mw[IP_O2][IS_O2],1.3);p_ch4 = pow(rho_g*yi[IP_CH4][IS_CH4]/mw[IP_CH4][IS_CH4],0.2);*rr = 6.7e12 * exp(-48400./(Rgas*T_g)) * p_o2 * p_ch4 * C_VOF(c,tp); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(h2_comb,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = MAX(TMIN, C_T(c,tp));double rho_g = C_R(c,tp)*1.e-3; /* g/cm^3 */double rr_turb = 1e+20;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();if(yi[IP_O2][IS_O2] > spe_small_comb){double tmp_exp, tmp_o2, tmp_h2;if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);T_g = MIN(T_g, TMAX);tmp_exp = 1.08e16 * exp(-30000./(Rgas*T_g)); /* 30000 ----> 60000 cal/mole */ /* cm3/gmole-s */tmp_o2 = rho_g*yi[IP_O2][IS_O2]/mw[IP_O2][IS_O2]; /* gmole/cm3 */tmp_h2 = rho_g*yi[IP_H2][IS_H2]/mw[IP_H2][IS_H2]; /* gmole/cm3 */*rr = tmp_exp * tmp_o2 * tmp_h2 * C_VOF(c,tp); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(WGS_char,c,t,hr,mw,yi,rr,rr_t){Domain *domain = Get_Domain(1);Domain *subdomain;Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = C_T(c,tp), f3 = 0., k3=1.;double Pt = MAX(0.1,(op_pres+C_P(c,t))/101325);double p_co = 0., p_h2o = 0., p_co2 = 0., p_h2=0., sum = 0.0;int phase_domain_index, ns;double rr_turb = 1e+20;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();sub_domain_loop(subdomain, domain, phase_domain_index){if(phase_domain_index > 0){Thread *ts = pt[phase_domain_index]; /* solid phase */Material *m_mat, *s_mat;if (DOMAIN_NSPE(subdomain) > 0){m_mat = Pick_Material(DOMAIN_MATERIAL_NAME(subdomain),NULL);mixture_species_loop(m_mat,s_mat,ns){if (0 == strcmp(MIXTURE_SPECIE_NAME(m_mat,ns),"ash-coal")){sum +=C_VOF(c,ts)*C_YI(c,ts,IS_ASH)*C_R(c,ts)*1.e-3;}}}}}if (rp_ke)rr_turb = Turbulent_rr(c, t, hr, yi);if(C_VOF(c, tp) < 1.0){T_g = MIN(T_g, TMAX);f3 = sum *exp(-8.91+5553/T_g);k3 = exp( -3.63061 + 3955.71/T_g );p_co = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp)* yi[IP_CO][IS_CO]/mw[IP_CO][IS_CO] / 101325.;p_co2 = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp)* yi[IP_CO2][IS_CO2]/mw[IP_CO2][IS_CO2] / 101325.;p_h2o = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp)* yi[IP_H2O][IS_H2O]/mw[IP_H2O][IS_H2O] / 101325.;p_h2 = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp)* yi[IP_H2][IS_H2]/mw[IP_H2][IS_H2] / 101325.;*rr = 2.877e+5 * wg3 * f3 * pow (Pt, 0.5-Pt/250.) * exp(-27760/Rgas/T_g)*(p_co * p_h2o /Pt/Pt - p_co2 * p_h2 /Pt/Pt / k3) * C_VOF(c,tp); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(soot_comb,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */double T_g = MIN(TMAX, MAX(TMIN, C_T(c,tp)));double rr_turb = 1e+20;double soot_dia = 8.e-6;*rr = 0;/* Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();double y_o2 = yi[IP_O2][IS_O2];if(y_o2 > spe_small_comb){double tmp1_exp, tmp2_exp;if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);double P_o2 = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * T_g*y_o2/mw[IP_O2][IS_O2]/ 101325.;tmp1_exp = 240.*exp(-15100./T_g)*P_o2/(1.+21.3*exp(2060./T_g));tmp2_exp = 5.35e-2*exp(-7640./T_g)*P_o2;double tmp3_exp = 1.51e5*exp(-48800./T_g);double tmp4_exp = 4.46e-3*exp(-7640./T_g)*P_o2;double chi = tmp4_exp/(tmp3_exp+tmp4_exp);double prod = tmp1_exp*chi+tmp2_exp*(1.-chi); /* g/cm2-s */prod *= 10.; /* kg/m2-s */*rr = (6.*C_VOF(c, tp)/soot_dia)*prod/mw[IP_SOOT][IS_SOOT]; /* kmol/m^3.s */*rr = MIN(*rr, rr_turb);}}DEFINE_HET_RXN_RATE(SteamGasif,c,t,hr,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */int index_phase = Get_Phase_Index(hr);Thread *ts = pt[index_phase]; /* solid phase */*rr = 0;double direction = 0.0, mol_weight, y_carbon;/*C(s) + H2O ---> CO + H2Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done bythe firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();double RoRT = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp);double p_h2o = RoRT * yi[IP_H2O][IS_H2O]/mw[IP_H2O][IS_H2O]/ 101325.;double p_co = RoRT * yi[IP_CO][IS_CO]/mw[IP_CO][IS_CO] / 101325.;double p_h2 = RoRT * yi[IP_H2][IS_H2]/mw[IP_H2][IS_H2] / 101325.;SolidFuel_Reactant(c, t, hr, &y_carbon, &mol_weight);if(C_VOF(c, ts) >= eps_s_small){*rr = rr_steam_gasif(c, t, ts, tp, p_h2o, p_co, p_h2, y_carbon, mol_weight, &direction); /* mol/(cm^3 .s) */if( direction < 0.0) /* negative value implies reverse steam gasification */*rr = 0.0;}}DEFINE_HET_RXN_RATE(Soot_H2O_Gasif,c,t,r,mw,yi,rr,rr_t){Thread **pt = THREAD_SUB_THREADS(t);Thread *tp = pt[0]; /* gas phase */*rr = 0;double rr_turb = 1e+20;double T_g = MIN((MAX(TMIN,C_T(c,tp))),TMAX);/*1/25 Soot + H2O ---> CO + H2Set the phase and species indices. Ash species index is initialized to zero, with all other indices.Ash species index is used as a flag to execute SetSpeciesIndex only once. This is done by the firstreaction, defined in the heterogeneous reaction panel in FLUENT GUI.*/if(IS_ASH == 0)SetSpeciesIndex();double RoRT = C_R(c,tp) * UNIVERSAL_GAS_CONSTANT * C_T(c,tp);double p_h2o = RoRT * yi[IP_H2O][IS_H2O]/mw[IP_H2O][IS_H2O]/ 101325.;double p_h2 = RoRT * yi[IP_H2][IS_H2]/mw[IP_H2][IS_H2] / 101325.;if (rp_ke)rr_turb = Turbulent_rr(c, t, r, yi);double prod = yi[IP_SOOT][IS_SOOT]*(C_R(c,tp)*1e-03)/mw[IP_SOOT][IS_SOOT]*C_VOF(c,tp); /*1e-3 is to convert density from kg/m^3 to g/cm^3 */*rr = A_soot_steam_gasification*exp(-E_soot_steam_gasification/Rgas/T_g)* Annealing_soot_steam_gasification * prod *pow(p_h2o, N_soot_steam_gasification)/(1.+K_soot_steam_gasification*p_h2); /* mol/cm^3.s */*rr *= 1000.; /* kmol/(m^3 .s) */*rr = MIN(*rr, rr_turb);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
颗粒轨道模型 第k组颗粒的动量方程:
k v v v k ki vi vki k gi vi Sk Fk ,Mi k kj ki t x j rk
连续流体相的能量方程:
c T v c T p x j p x t j j
多相流的数值模拟
机械设计及理论(3)班 叶圣军 136091321
1
• 本章主要内容
多相流数值模拟的特点
多相流数值模拟中常用的特殊参数 多相流数值模拟方法的分类 连续介质力学模型 其他多相流数值模拟方法 多相流数值模拟中的困难及发展方向
Байду номын сангаас
2
• 多相流数值模拟的特点
数值模拟也叫计算机模拟,它以计算机为手段,通过数
微观层次的深入分析
7
• 连续介质力学模型
欧拉—拉格朗日类模型 特点:连续相的介质的运动由经典的Navier-Stokes方程控制, 而分散相的运动则由独立的动量方程控制。 适用范围:用于解决由连续相(气体或者液体)和分散相(如 液滴或气泡)组成的弥散多相流动体系。
单颗粒动力学模型 欧拉 拉格朗日类模型 颗粒轨道模型
8

单颗粒动力学模型(单向耦合模型)
考虑:单个颗粒在连续相流体中的受力和运动,认为连续相的流 场已知 忽略:1.由颗粒相的存在造成的对连续相流体流动的影响 2.颗粒之间的相互作用以及颗粒的脉动
单颗粒在流体中的受力及运动情况
9

单颗粒动力学模型(单向耦合模型)
在拉格朗日坐标中,一般形式的颗粒运动方程为:
6

多相流数值模拟方法分类 根据数学和物理原理不同,将多相流数值模拟主要分为以下三类: 经典的连续介质力学方法(欧拉-拉格朗日方法和欧拉-欧拉
方法) 建立在统计分子动力学基础上的分子动力学模拟方法 介观层次上的模拟方法(格子-Boltzmann方法) 从应用角度,将多相流数值模拟主要分为以下三类: 宏观整体特性的数值模拟 局部场分布特性的数值模拟
11

颗粒轨道模型
连续流体相的质量守恒方程: v j nk mk t x j

nk 、 mk分别为第k中颗粒的数密度和单个颗粒重量, mk
k 第k组颗粒的连续方程: k vkj nk mk t x j
dmk dt
e T S QS qr nk Qk cPTS x T j
S 连续流体相中第s组分的反应率。 辐射热; 第k组颗粒的能量方程:

k nk mk 为k相颗粒的表现密度;
连续流体相的动量方程:
p v v v i j i x x t x j i j v j v i e x i x j
gi k vki vi / rk vi S FMi
5

多相流数值模拟中的常用特殊参数 容积气流率 气相体积流量和两相体积流量之比为体积含气率,又称容 QG / Q QG / QG QL 积气流率,用 表示: 相函数 相函数表示两相流气体(液体)相的体积(在二维空间中,对 应的参数是面积)在局部单个网格区域中所占据的份额。 Level Set函数 Level Set函数是一个高阶空间分布函数,它的零等值面可 被用来指示相界面的位置和形状。 加权参数 为了计算方便和便于进行试验数据拟合,常对多相流的真 实参数进行权重因子的加权。 运动参数 静止参数
mp
dv pi dt p
Fdi Fvmi Fpi FBi FMi Fsi
附加质量力 压力剃度力
颗粒运动的阻力
Basset力
Saffman力 Magnus力
简化后的单颗粒运动方程:
dvi vi vki / rk gi dtk
适用:流场中一相须是弥散于连续介质中的独立的颗粒、气泡或液滴。 适用模型:处理稀疏的气-固两相流或弥散的气-液,液-液两相流问题。
10

颗粒轨道模型 假设: 颗粒相是离散体系,与连续流体相之间有速度差; 弥散颗粒相无自身的湍流扩散,湍流粘性和湍流导热; 颗粒群按初始尺寸分布分组,每组颗粒在任何时刻都有相同
的的尺寸、速度;
每组颗粒从某一初始位置开始沿着各自独立的轨道运动,互 不干扰,互不碰撞; 颗粒相作用于流体的质量,动量及能量源都以一个等价的量 均匀分布于流体相所在的单元内。
值计算和图像显示的方法,达到对工程问题和物理问题乃 至自然界各类问题研究的目的。多相流数值模拟即对两相 或多相流动系统进行数值模拟。
3
多相流数值模拟的特点 优点 • 数值模拟工作的物质耗费较少,花费时间短,节省人力物力 • 便宜性 • 数值模拟具有很好的可重复性 • 通过数值模拟可以对一些难以测量的量做出预测 • 通过数值模拟可以发现一些新的现象 缺点 • 描述两相流的变量几乎增加一倍 • 描述两相流的基本方程组比单相流要复杂的多 • 需要确定相之间的相互作用 • 相分布的描述困难 • 两相流守恒方程的求解困难 • 气-液相界面的数学描述困难 • 气-液相界面上表面张力的计算困难

4
• 多相流数值模拟中的常用特殊参数
相分布参数 浓度 浓度表示固体相的质量在局部计算区域中所占据的质量(或 体积)份额,对应的浓度参数则称为质量(或体积)的浓度。 容积含气率和截面含气率 含气率表示气体相的体积在局部计算区域中所占据的份额, Vg / V ,其中, Vg 表示控制单元内 也叫空泡率,表示为: 气体相的体积,而 V 表示控制单元的体积。 质量气流率 气-液两相流中气相质量流量WG 所占两相质量流量的份额称 为质量气流率,用 x 表示:x WG / WG WL
相关文档
最新文档