DPM颗粒模型

1 学习笔记

0、Fluent 颗粒流

Fluent 有 3 种颗粒模拟方法

  1. 欧拉颗粒流(双流体模型):把颗粒当做连续介质处理,优点是计算量小,但需要更多的相互作用模型,比如阻力等,多用于流化床。
  2. DPM 模型(离散相模型):DPM 模型之间不考虑碰撞也不考虑体积空间,适用于流体占主导作用的,颗粒占比不超过 10%。模拟一般灰尘、气溶胶等小颗粒的运动,也经常配合化学反应。
  3. DDPM 模型(稠密离散相模型):DDPM 是 Dense Discrete Phase Model 的缩写,是专门用来模拟例如流化床这种稠密颗粒流的模型,可以理解为简化了的 DEM。他和 DPM 的区别就是考虑了体积分数,是有孔隙率的,后处理中能够查看颗粒所占的体积分数,在相间相互作用力也可以考虑颗粒之间的碰撞,但是对于碰撞的计算是进行了模化的,不是用软球模型计算真实的碰撞过程,颗粒间的碰撞产生的力是根据 KTGF 下颗粒的 stress tensori 计算得到。
  4. DEM 离散元模型:可考虑颗粒的真实碰撞,可采用弹性 弹性阻尼 赫兹 赫兹阻尼碰撞模型,一般 DDPM+DEM 一起使用

1、耦合

  1. 单向耦合
  2. 双向耦合

1.1 单向耦合

单向耦合:离散相对连续相影响很小无需设置相间耦合.

单向耦合问题:只要在加入离散相粒子前计算连续相流场直至收敛,然后打开离散相模型,加入离散相粒子,无需迭代计算因为已经计算收敛流场稳定了.

连续相(也就是流场)计算可以是 steady(定常/稳态流场)也可以是 unsteady(非定常/瞬态/transient)。这两种连续相的流场中离散相计算都可以用非耦合粒子计算。

单相耦合计算不考虑离散相对连续相的影响,离散相的动量、质量、温度等信息不会反馈给流场,因为流场事先已经计算收敛了,不能变了,当开 DPM 时候,就是通过流场的信息计算 DPM 了,简单说是流场产生 DPM 场的概念。

1.2 双向耦合

耦合计算的步骤:

  1. 求解连续相流场(在引入离散相之前))
  2. 通过计算每个离散相注入的粒子轨迹来引入离散相。
  3. 使用先前粒子计算期间确定的动量、热量和质量的相间交换,重新计算连续相流。
  4. 重新计算修改的连续相流场中的离散相轨迹。
  5. 重复前两个步骤,直到获得收敛解,其中连续相流场和离散相颗粒轨迹在每次附加计算 中都保持不变。

2、DPM 边界条件

  1. escape 逃逸:颗粒离开流体域
  2. trap:被捕获吸收
  3. reflect:反弹,一般用于壁面上,需要指定反射系数
  4. wall jet:壁面射流,颗粒触碰壁面后会分成更小的颗粒继续流动
  5. wall film:需要打开壁面液膜模型,与 wall jet 相似
  6. reinject:当颗粒达到某个计算域边界时,将粒子重新引入域。
image-20230829165815567

3、粒子方向

Inject Using Face Normal Direction:开启这个选项后,粒子在入射时的速度方向将与面法向一致,这样就无需定义颗粒在 x、y、z 三个方向的速度分量,只需要定义速度值; image.png

4、粒子射入类型

https://zhuanlan.zhihu.com/p/532180420 image.png

5、颗粒碰撞

https://zhuanlan.zhihu.com/p/621078742

6、颗粒其他作用

2 案例:颗粒搅拌

1、重力项

2、离散相模型

打开【交互】-【与连续相的交互】

  • 每次流动迭代更新 DPM 源项:意思是每 10 个流动迭代更新一下颗粒的数量变化,这个都给他勾选上,颗粒破碎,被壁面捕获,更改质量流量都会使数量发生变化。
  • DPM 迭代间隔:连续相每次迭代 10 步,开始进行离散相的计算。(不收敛可调小)
  • 颗粒时时间步大小:如为 0.001s 代表颗粒相每 0.001s 追踪一次,但是,在开始计算阶段,粒子一边释放一边追踪,释放完成后也在追踪。(不收敛可调小)
  • 最大步数和步长因子:Max number of steps 和 Specify Length Scale,每一次轨迹跟踪的最大积分时间步数和积分长度标尺,都是为了确定积分时间步长 ∆t。选择 Specify Length Scale 选项以确定积分时间步长时,积分时间步长约等于所给的长度尺度(Length Scale)除以颗粒相对于连续相的速度大小。而积分步数约等于颗粒时间步长(Particle Time Step Size)除以积分时间步长,但以 Max Number of Steps 为限(因此:积分时间步长 ∆t<颗粒时间步长 Particle Time Step Size∆tp)。所以,如 Max Number of Steps 不够大,则未到颗粒时间步长就结束一个颗粒时间步,并转入下一个颗粒时间步,因而颗粒终了状态报告为 incomplete。
image-20230829104022213

设置喷射源

image-20230829104130041

3、追踪颗粒轨迹

创建颗粒轨迹

image-20230829154138243

创建颗粒场景并保存

image-20230829154239921

创建解决方案动画

image-20230829154309557

4、导出颗粒数据

image-20230829154336663

3 喷头模拟

碳酸氢钠性质

密度:2.16 g/mL 直径:在 0.1-10mm 之间

20230829

使用之前的网格,只有喷嘴和场域,出口 5MPa 和出口 2MPa 都发散。 想到昨天尝试的将出口都改为压力出口(包括计算域的 edge)计算较好,今天再试一下,但还是发散。 使用昨天的设置再跑一边,只不过加入离散相。但是昨天加入了 VOF 模型,现在关闭了。 成功设置 1、瞬态 2、能量 3、标准 k-e,标准壁面 4、离散相模型: image.png 直径 0.0001,温度 300K,停止时间 1e-5,总流量 100000 image.png 5、材料 image.png 6、边界条件 image.png 压力进口(ecapse) image.png 压力出口 edge(reflect) image.png image.png 7、方法 PISO 方法 image.png 8、残差 1e-06 9、步长 时间步长 0.01 时间步数 100

20230905

截止今日,在雪研师姐电脑上已经模拟完成渐扩喷头 2MPa 和 5MPa,在自己电脑上渐扩喷头(带孔)2MPa,步长 1e-6,共 1000 步。但是模拟出的粒子速度太大,现在想要使用 udf 改变压力边界条件,呈现一个递减的趋势,气体使用真实气体状态方程进行模拟,密度基求解器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "udf.h"
DEFINE_PROFILE(inlet_x,thread,index)
{
real y,v0,h0;
real x[ND_ND];
face_t f;
real flow_time = CURRENT_TIME; // 获取当前模拟的时间
begin_f_loop(f,thread)
{
if(flow_time >=0 && flow_time <= 0.05 )
F_PROFILE(f,thread,index) = 2000000 - 40000000 * flow_time;
else
F_PROFILE(f,thread,index) = 0;
}
end_f_loop(f,thread)
}

为了能使粒子喷出后分散均匀,共设计 6 种喷头结构,分别为渐扩喷头、渐扩喷头(带孔)、拉法尔喷头、拉法尔喷头(带孔)、蘑菇喷头和蘑菇喷头(带孔)。 喷嘴尺寸:

喷嘴网格:

空气

使用高压空气作为驱动气充入喷粉罐中,空气携带粒子以 2MPa 和 5MPa 的压力喷出。压力以 40MPa/s 速度衰减,在 50ms 时衰减为 0。 使用理想气体,密度变化。

粒子

抑爆剂粒子选用 NaHCO3 粒子,密度为 2.16g/cm³,比热为 2170J/(kg K) 粒子的直径分布在 1~100um 范围内,平均直径为 50um,共 10 种粒子大小。 粒子总质量 100g,在 50ms 内喷完。即产生速率为 2kg/s。(假设阀门 50ms 打开) 粒子速度为 0.1m/s 从壁面出来 双向耦合,考虑粒子的碰撞

求解器设置:

因喷出速度较大,求解器选用密度基。


DPM颗粒模型
http://example.com/2024/07/26/029 Fluent DPM模型/
作者
DB
发布于
2024年7月26日
许可协议