当你第一次尝试使用 COMSOL 软件运行粒子追踪模拟流体中非常小的粒子(通常直径为几十微米或更小的粒子)时,可能会发现瞬态求解器使用的时步比平常要短得多。这通常是由于粒子的运动方程表现出数值刚度而导致的。在这篇博客中,我们将介绍与粒子仿真有关的刚度的概念,并提供一些基于粒子大小选择正确方程的指南。
示例:小球形粒子的重力沉降
以一个小的球形粒子为例,当它掉落在一个以速度 u (SI 单位:m/s)匀速流动的流体中时,遵循牛顿第二运动定律,
(1)
{d}t}\left(m_\textrm{p}\frac{\textrm{d}
\mathbf{q}}{\textrm{d}t}\right) = \mathbf{F}_\textrm{t}
其中,
- mp(SI单位:kg)是粒子的质量
- q(SI单位:m)是粒子的位置矢量
- Ft(SI单位:N)是作用在粒子上的净力或总力
对于一个在流体中下沉的粒子,它的总力是重力 Fg 和曳力 FD 的总和,
(2)
\qquad
\mathbf{F}_\textrm{D} = 3\pi \mu d_\textrm{p}\left(\mathbf{u}-\mathbf{v}\right)
其中,
- ρp(SI 单位:kg/m3)是粒子的密度
- ρ(SI 单位:kg/m3)是周围流体的密度
- g(SI单位:m/s2)是重力引起的加速度(海平面以下约为 9.8m/s2)
- μ(SI 单位:Pa s)是周围流体的动力黏度
- dp(SI 单位:m)是粒径
- u(SI 单位:m/s)是周围流体的速度
- v(SI 单位:m/s)为粒子的速度(v≡dq/dt)
重力表达式中的(ρp-ρ)/ρp 项代表浮力。当粒子(例如,空气中的固体粒子)比流体重得多时就会取代流体,其浮力的值接近 1。当粒子和周围的流体具有相同的密度时,浮力值接近于零,在这种情况下,粒子被称为悬浮粒子。
此处使用的曳力表达式来自斯托克斯曳力定律(Stokes drag law)。当粒子的相对雷诺数非常小时,此曳力定律较为适用:
\textrm{Re}_\textrm{r} \equiv \frac{\rho d_\textrm{p}\left|\mathbf{u}-\mathbf{v}\right|}{\mu} \ll 1这对于较小的粒子更有效。
假设粒子没有改变大小(dp和mp为常数),则球形粒子的质量是
(3)
结合方程1–3,我们得到粒子运动方程的简化表达式:
(4)
=
\frac{\rho_\textrm{p}-\rho}{\rho_\textrm{p}}\mathbf{g}
+
\frac{1}{\tau_\textrm{p}}\left(\mathbf{u}-\mathbf{v}\right)
这里,引入了常数 τp,
τp 具有时间单位,并且通常被称为拉格朗日时间尺度(Lagrangian time scale) 或粒子速度响应时间(particle velocity response time),下面我们将解释其原因。
进一步简化方程,假定周围的流体是静止的(û=0),并且所述粒子初始是静止的(q=0, v=0, 时间 t= 0)。假设我们对齐坐标系,以使重力矢量指向 –y 方向。然后,根据方程4,粒子位置的 y 分量方程变为
(5)
=
-\frac{\rho_\textrm{p}-\rho}{\rho_\textrm{p}}g-\frac{1}{\tau_\textrm{p}}v_y
当给定初始条件为 qy=0 和 vy=0 时,方程5 的精确解或解析 解为
q_y &= -v_\textrm{t}\left\{t+\tau_\textrm{p}\left[\exp\left(-\frac{t}{\tau_\textrm{p}}\right)-1\right]\right\}\\
v_y &= -v_\textrm{t}\left[1-\exp\left(-\frac{t}{\tau_\textrm{p}}\right)\right]\\
\end{aligned}
其中,vt 是自由沉降速度,
转换为无量纲变量
为了更好的理解粒子在 τp 之前最初一段时间是如何加速的,我们可以用相应的无量纲量(t´, qy´, vy´)代替时间、位置和速度(t, qy, vy),定义为
将这些无量纲变量代入解析解中,得到
v_y^{\prime} &= -1 + \exp\left(-t^{\prime}\right)\\\end{aligned}
在下图中,无量纲的位置和速度被绘制成为无量纲时间 t 的函数。该绘图表明粒子速度逐渐接近自由沉降速度,粒子加速主要发生在拉格朗日时间尺度 τp 最初一段时间。在此初始加速期之后,粒子位置似乎呈线性变化。
从静止开始,经历重力沉降的粒子的无量纲位置和速度的绘图。
一些典型粒径的时间尺度
为了更好地了解粒子加速所涉及的时间尺度,假设粒子为密度约为 2200 kg/m3 的石英玻璃珠。下表列出了不同粒径的粒子在空气和水中的一些拉格朗日时间尺度值。
流体 | 粒径(μm) | 流体的动力黏度(Pa s) | 流体密度(kg/m3) | 响应时间(s) | 自由沉降速度(m/s) |
---|---|---|---|---|---|
水 | 1 | 1.009×10-3 | 998.2 | 1.2×10-7 | 6.5×10-7 |
水 | 20 | 1.009×10-3 | 998.2 | 4.8×10-5 | 2.6×10-4 |
水 | 50 | 1.009×10-3 | 998.2 | 3.0×10-4 | 1.6×10-3 |
空气 | 1 | 1.814×10-5 | 1.204 | 6.7×10-6 | 6.6×10-5 |
空气 | 20 | 1.814×10-5 | 1.204 | 2.7×10-3 | 2.6×10-2 |
空气 | 50 | 1.814×10-5 | 1.204 | 1.7×10-2 | 0.17 |
τp 和直径平方呈线性关系意味着大粒子比小粒子具有更长的速度响应时间和更大的自由沉降速度。这会产生两个主要结果:
- 大粒子掉落到地面的速度比小粒子快得多。
- 当大粒子以一定的初始速度射入流体时,会沿着入射轨迹,能够在曳力使它们减速之前行进相当长的距离。相反,较小的粒子将更快地匹配流体速度。当它们散开时,很可能是由于周围流体的湍流扩散所致。
数值粒子追踪仿真
在上一节中,很幸运我们由方程4 得到一个精确的解析解。精确解仅可能在引入许多简化假设时得到,尤其是各处的流体速度 u 均为零。但在大多数真实情况中,周围流体的速度不仅不为零,而且在空间上是不均匀的,因此仅靠公式不可能找到精确解。
对于更一般的问题,我们可以通过数值仿真来获得近似解。其主要思想是,在初始时间 t=0 时,给定初始粒子位置 q0 和速度 v0,我们可以使用数值时步算法来计算一组离散时步 t1,t2,t3,……的解。为此,设计了各种各样不同的时步算法,其中有许多是在 COMSOL Multiphysics® 软件中可用的。
用数值方法求解一组微分方程会引入一定量的误差,即实际粒子运动与计算得到的数值解之间的差异。虽然通常不能指望从数值仿真中获得一个完美的解,但更现实的目标是,当时间间隔(t1,t2–t1,t3–t2 等)减小时,模拟的粒子运动应变得更加精确。
需要权衡的是,如果时间步较小,则需要花更多的时间步才能达到相同的输出时间。最终,这可能会导致实际运行时间 显著增加,这是仿真完成的时间。进行数值仿真的工程师必须始终在解精度和执行时间之间寻求合理的平衡。
COMSOL Multiphysics® 中的粒子追踪模块提供了一个流体流动颗粒跟踪 接口,该接口通过数值求解牛顿第二定律来模拟周围流体中单个粒子的运动。基本上,此接口可求解方程1,同时允许我们向方程右侧添加各种不同的力。它还包括用于设置初始粒子位置和速度以及检测和处理粒子与周围几何中的表面的碰撞的各种选项。
处理小粒子和长时间尺度
在许多实际应用中,粒子追踪模型的需要求解时间的范围远大于拉格朗日时间尺度 τp。例如,假设我们要在 1s 的总仿真时间内追踪水中直径约 20μm 的石英玻璃颗粒的运动。从上述表格我们可知,水中这样的小粒子的拉格朗日响应时间约为 5×10-5s,所以总仿真时间约为 2000τp。如果我们想在几分钟或几小时的跨度内追踪更小的粒子,很容易想象我们的总仿真时间可能比 τp 大几百万倍。
下面的截图显示了瞬态求解器在跟踪这些 20μm 粒子时所采取的时间步日志。在步骤1 中输出时间的范围:瞬态 节点已被设置为 range(0,0.1,1)
,这意味着它将仅以 0.1s 的倍数存储输出。但是,这并不妨碍求解器在必要时采取更短的时间步来获得精确的解。如这里所显示的,求解器先从采取 1ms 或更小的时间步开始,然后在粒子接近其最终速度时逐渐采取更大的时间步。
如下面的步骤24 所示,在 COMSOL Multiphysics 中,粒子追踪物理场接口通常使用严格的时间步算法,该算法至少要求求解器所采取的某些步长与输出时间一致。但这并不是所有物理场的普遍要求;对于某些物理场接口,可以通过在求解器所采用的最近步长之间进行插值来获得输出时间。
在研究接近尾声时因为粒子几乎不再加速,所以时间步可能会很大。最终,求解器需要 24 个时间步才能在 0.1s 达到第一个输出时间,但是只需要再增加 12 个时间步就能在 1s 到达最终时间。
经历重力沉降的粒子运动方程是刚性常微分方程(或刚性 ODE)的一个示例。大多数粒子追踪模型中使用的默认时间步进方法被称为广义 α,这是一种二阶隐式时间步方案,非常适合用于处理刚性问题。如果需要额外稳定性,则可以在瞬态求解器 设置中调整一个被称为放大高频的数值阻尼项。因此,随着粒子速度接近自由沉降速度,时间步变得更大。(相比之下,显式 Runge–Kutta 方法 RK34 采取 7425 个步长来求解相同的问题!)
但是,如果粒子在几个不同的释放时间进入仿真域,或者背景流体速度在空间上不均匀(这样粒子在以后的研究中仍会加速),则求解器可能直到最终时间都会一直采用如此小的时间步。因为求解器可能需要成千上万甚至数百万的时间步,所以如果我们试图在很长的仿真时间内追踪非常小的粒子,则最终这些研究将需要大量的执行时间才能完成。
有一个与此密切相关的现象可能会使 COMSOL® 软件新用户感到困惑,当使用入口 边界条件将粒子释放到仿真域中,并且假设这些粒子被分配了指向仿真域的初始速度。请注意,从之前的截图中可以看出,初始时步大小(总仿真时间为1秒)为 1 毫秒。如果初始时步仍然远远大于 τp,则曳力可能会过度补偿,导致粒子速度短暂改变方向并指向入口 边界。如果发生这种情况,粒子可能会错误地检测到与入口 边界的碰撞,从而使它们卡在此处。
粒子追踪模型中的数值刚度处理
有两种方法可以求解流体中的粒子运动的数值刚度模型,即输出时间间隔比 τp 大几个数量级的模型。
第一种是我们所说的“强力”方法:只需告诉求解器采取更小的时间步即可。如果不想产生大量的输出(可能会创建大量文件大小),那么可以不考虑输出时间,而是在求解器序列的瞬态求解器设置中指定一个较小的步长或最大步长。
从 COMSOL Multiphysics® 5.6 版本开始,另外一种方法是从方程4 中删除惯性项。首先,我们把方程4 改写成一对耦合的一阶方程,
\frac{\textrm{d} \mathbf{q}}{\textrm{d}t} &= \mathbf{v}\\
\frac{\textrm{d} \mathbf{v}}{\textrm{d}t} &= \frac{\rho_\textrm{p}-\rho}{\rho_\textrm{p}}\mathbf{g} + \frac{1}{\tau_\textrm{p}}\left(\mathbf{u}-\mathbf{v}\right)\\
\end{aligned}
然后,仅假设曳力始终与其他作用力处于动态平衡,而不是在 τp 最初一段时间完全解析粒子运动,
(6)
+
\frac{1}{\tau_\textrm{p}}\left(\mathbf{u}-\mathbf{v}\right)
=
\mathbf{0}
换句话说,我们仅假设粒子立即达到其自由沉降速度。如果达到自由沉降速度所需的时间比总仿真时间小许多数量级,那么这是一个合理的近似值。方程6 可用于求解 v,
或者,一般而言,
(7)
其中,Fother 是除了曳力以外的其他所有作用力的总和。
然后,我们要做的就是把 v 的表达式对时间进行积分以获得粒子位置 q。
我们可以在粒子释放和传播 部分,选流体流动颗粒跟踪 接口求解的方程组。从公式列表中,可以选择以下选项之一:
- 牛顿型:求解方程1
- 牛顿型,一阶:将方程1 分离为 q 和 v 的一对耦合一阶方程,然后求解它们
- 牛顿型,忽略惯性项(自版本 5.6 起可用):使用方程7 定义速度的简化公式,然后求解 q
- 无质量:一种更简化的公式,其中直接指定 v 来求解 q
需要注意的是,牛顿型和牛顿型,一阶公式,可用的内置力数量略多于牛顿型,忽略惯性项公式。明显取决于粒子速度或其他粒子的相对位置的力已被排除。
牛顿型公式中的可用力。
下面是 COMSOL 案例库中使用牛顿型,忽略惯性项 公式来追踪长求解时间内的很小的粒子的示例:
因为粒子足够大以致于惯性对粒子运动产生重大影响,所以下示例使用了牛顿型公式:
结语
当使用流体流动接口的粒子追踪来模拟流体中的小颗粒的运动时,通常应从估计与粒子相关的拉格朗日时间尺度 τp 开始,
并将此时间尺度与我们要模拟的求解时间范围进行比较。
如果具有不同粒径的分布,请基于最小粒径进行此估算,因为模型中最小惯性粒子决定了运动方程的数值刚度。
如果要在比速度响应时间大得多的时间范围内预测粒子运动(比如说几千倍甚至更多倍),则应该考虑惯性是否实际上在粒子运动中起着重要作用。如果不是,则可以从列表中选择牛顿型,忽略惯性项(从 5.6 版本开始可用)。
如果仍要考虑惯性,则可以使用牛顿型 或牛顿型,一阶公式。但是,请注意,要求解的方程组是数值刚性的,我们可能需要手动减小求解器采取的时间步的大小,以防止粒子位置和速度发生非物理振荡。
评论 (26)
克竹 杨
2023-04-10我想问一下,我需要模拟带磁性的粒子在磁场中的粒子运动轨迹,我应该怎么选择粒子模型呢
Haoze Wang
2023-04-26 COMSOL 员工您好,可以通过添加磁泳力(边界条件)的方式,模拟磁性粒子受到的磁力。
Zachery Zhang
2024-03-30您好,请问磁泳力和传统意义上不带电的磁性粒子受到的吸引力(磁力)是不是不同的?
Zachery Zhang
2024-03-30如果想模拟铁粒子被永磁体的吸附过程,那就是在粒子追踪开启磁泳力呗?
罗云 刘
2023-05-15您好 ,我需要模拟10mm至20mm的多颗粒在管道中的运移轨迹,选粒子追踪模块合适吗?
Qihang Lin
2023-07-25 COMSOL 员工可以的,粒子追踪支持设置两种或以上粒子,只是粒子会被考虑为固定形状,比如完美球型等。若考虑微观的不规则粒子碰撞等则不建议粒子追踪模块。
文波 刘
2023-08-31您好,我想请教一下,为什么根据官网改编冲蚀,总是显示零或负粒子密度?
高 维
2024-05-13具体该如何设置两种或以上的粒子呢?
桂霞 周
2023-11-02你好,我想问一下粒子追踪模块用户指南在哪里找呢,需要冲蚀模型的具体介绍
越 赵
2023-11-07 COMSOL 员工您好,可以在COMSOL安装目录下:C:\Program Files\COMSOL\COMSOL61\Multiphysics\doc\pdf\Particle_Tracing_Module\ParticleTracingModuleUsersGuide.pdf,文件中第319页到第321页查阅相关理论介绍,您也可以在查阅提供的参考文献来学习冲蚀模型。
佳宾 史
2024-02-26若考虑微观的不规则粒子在多孔介质中的运移、堵塞等情况使用什么模块?
Haoze Wang
2024-03-05 COMSOL 员工您好,建议将多孔介质孔隙结构完整画出,再利用CFD模块和粒子追踪模块进行模拟,与本博客中介绍的方法一致
高 维
2024-06-26您好,我设置的粒子粒径为0.5mm,在多孔介质中我的狭缝只有0.1mm,为什么粒子还是能够穿过狭缝而不是堵塞住呢?查询相关资料发现粒子追踪模块是将粒子考虑为质子,该如何模拟出粒子的堵塞情况呢?
松禄 肖
2024-04-17你好,我仿真的粒子在声场中的运动轨迹,粒子在入口处粘住不释放是哪没设置好呢
Yuqing Ge
2024-04-25 COMSOL 员工您好,出现这种情况可能性很多,可能是您没有添加使粒子运动的力,如“曳力”等,也可能是您模型中的某些设置不合理。如有进一步问题,请将问题发送到技术支持中心,https://cn.comsol.com/support
高 维
2024-05-13您好,我在使用粒子追踪模块时发现,粒径1mm和10mm的大小一样,是粒径参数没有起作用吗?同时如何模拟10mm的粒子在1mm的通道处的堵塞情况?
Haoze Wang
2024-05-16 COMSOL 员工您好,请在绘制粒子轨迹时,将点半径表达式改为粒子半径。模拟堵塞的一般思路是使用“壁距离”接口,计算粒子到壁面的距离,并与粒子半径对比判断是否发生堵塞。
玉霞 董
2024-05-21请问有没有使用磁泳力的案例,我在粒子追踪模块加了磁泳力,但是感觉粒子没有受到力,想学习一下如何正确使用磁泳力,谢谢。
Xiaohan Jiang
2024-05-28 COMSOL 员工在官网上可通过检索 Magnetophoretic Force 找到以下的链接:https://www.comsol.com/blogs/red-blood-cell-separation-flow-channel。这个案例已经下架了,您可试下软件中的 “磁泳力” 这个节点来仿真这个过程,若结果不太理想,建议看下粒子上所受到的力是否合理。
Jiaxin He
2024-07-16您好,我想问一下,粒子追踪设置曳力的时候,如果把密度设置为之前定义的流体密度会有什么影响吗
Haoze Wang
2024-07-18 COMSOL 员工您好,如果流体接口中定义的密度和来自材料中的密度一致则没有影响,例如流场是不可压缩流动。
Jiaxin He
2024-08-13您好,想计算粒子到壁面的距离,后处理的时候选择“壁距离”接口可以吗?这个接口的具体含义是什么呢?
Haoze Wang
2024-08-16 COMSOL 员工您好,可以使用壁距离接口,该接口的详细介绍建议参考说明手册。
杰 杨
2024-09-11我需要模拟一个直径一毫米的小钢球沿中心放下盛有蓖麻油的液体中,求速度的变化
Jianshen Li
2024-09-20 COMSOL 员工通常有两种做法,1.小球与容器尺寸相差不大,建议做流固耦合仿真;2.否则,可以使用流体流动颗粒跟踪接口,释放单个粒子并为粒子添加曳力、重力研究此问题。
江豪 冯
2024-11-20您好,我想请教一下,要实现磁性粒子被外加磁场吸附在壁上,之后撤去磁场使磁性粒子从壁上脱落,应该怎样在粒子追踪模块下设置壁条件呢?