基于Comsol的高频振动微颗粒乳化仿真探索
2026/9/17 3:44:16 网站建设 项目流程

做高频振动乳化仿真这事儿,我是在一个微颗粒分散项目里被“逼”出来的。当时想研究悬浮在连续相中的固体微颗粒,在高频振动激励下如何被流场剪切力击碎、分散成更细的颗粒,用传统CFD软件算了好几个方案,总觉得弯曲振动带来的流固耦合和界面追踪处理得不够自然。后来换到Comsol多物理场平台,把结构振动、流体流动和相场界面追踪放在同一个环境里搭模型,反而顺利很多。

这套“基于Comsol的高频振动击碎微颗粒乳化仿真探索”并不是什么正式产品,更像是一个研究型框架。里面包含了高频振动激励、微颗粒破碎过程、乳化相分布、多物理场耦合等一连串关键技术点。对于正在做微流控乳化、超声波乳化、或者想用仿真手段分析颗粒破碎机理的工程师来说,这套思路可以直接抄作业。想理解高频振动如何在液体里“拆散”颗粒,Comsol的耦合建模方式会是非常趁手的工具。

1. 项目整体设定:高频振动为什么能击碎微颗粒

高频振动乳化并不神秘。你可以把它想象成在一个装满液体的小空间里,有一个极薄的振动片,每秒以几万次的频率来回震荡。这个振动带动周围液体快速交替压缩和拉伸,产生强烈的脉动速度和局部压差,微颗粒在这样的非定常流场中会受到很大的剪切应力。当局部剪切应力超过颗粒表面张力或结构强度能够承受的极限时,颗粒就会发生变形、撕裂,随后被液流裹挟分散,形成更加细腻、均匀的乳化体系。

这个原理听起来简单,做仿真时却很难。因为它涉及了三个不同的物理过程:结构振动、流体流动、界面破碎与重构。如果只做流体计算,把振动简化为进口边界条件,就丢失了振动片与液体之间的耦合效应;如果只做结构振动,不计算液体,那就完全不知道颗粒怎么碎。所以从一开始我就确定,需要在一个能同时求解结构力学和流体力学、并且能处理自由界面的平台上做。

1.1 为什么选择Comsol这类多物理场耦合平台

Comsol最吸引我的地方是“统一建模空间”。用固体力学接口给振动片施加正弦激励,用流体流动接口计算液体速度场和压力场,再通过流固耦合多物理场节点把两者绑定,让振动片的变形实时作用于流体边界。同时,为了让乳化过程看得清,我在流体域内部加了相场接口,跟踪颗粒相与连续相之间的界面。这种集成方式比在CFD软件里用动态网格、再手动调用结构变形数据要省事得多。

另外Comsol自带参数扫描和频域/瞬态切换。我可以先用频域分析找一找模型固有的共振频率,再切到瞬态模式看高频振动下的颗粒破碎过程。这在探索阶段非常有用,因为高频振动的频率选择往往会直接影响乳化效果,频域扫描能快速筛选出几个“敏感频率”,不用每次都跑一个长周期瞬态计算。

1.2 仿真目标与关键物理量的设定

我的仿真对象是这样一个微尺度系统:一个边长为0.5mm左右的方形微流道,流道中央有一根短小的振动梁,梁的末端伸入液体中。液体是连续相,里面悬浮着半径约20微米的油滴或固体颗粒。振动梁以5kHz到50kHz之间的频率做横向弯曲振动,振幅控制在1到5微米。这个频率和振幅范围是参考了一些微型超声乳化装置的参数,属于用一个相对保守的模型来验证“击碎”机制的可行性。

仿真的核心目标是观察:颗粒在振动片附近产生的剪切和压力扰动下,是否会出现长径比增大的变形?能否达到临界破碎条件?破碎后的小颗粒在流场内如何分布?乳化效果是否与振动频率和振幅呈正相关?这些目标会直接影响建模简化程度,比如我做了二维模型来降低计算量,先跑通物理过程,再考虑扩展到三维。

2. 多物理场耦合模型的物理本质与数学描述

这一节讲的是模型内部的“物理后端”。很多人一上来就设置参数,却忽略了高频振动乳化本质上是流场对颗粒做功、界面能与之博弈的过程。理解了这个,后面调参数才有方向。

2.1 流固耦合:振动片与液体的相互作用

振动片在液体中振动时,液体对振动片施加阻尼和附加质量力,振动片反过来又为液体提供动量来源。这种双向耦合用公式描述就是:结构域中的位移 \mathbf{u} 通过流固界面传递给流体,使流体边界速度等于结构边界速度;流体域中的压力 p 和黏性应力 \boldsymbol{\tau} 又作为载荷施加到结构表面。

在高频情况下,振动片周围会形成一层很薄的粘性边界层,边界层厚度大约是 \delta = \sqrt{2\nu/\omega}。假设工作频率是20kHz、水的运动粘度1e-6 m²/s,那么边界层厚度大约为5.6微米。这个量级和颗粒尺寸很接近,说明振动片附近的剪切梯度非常强,颗粒一旦进入这个高剪切区域,就会感受到非常大的拉力和扭转作用。仿真时如果网格不解析这个边界层,计算出的剪切力会严重偏低,颗粒就很难被“击碎”。这也是我在模型里特意在振动片表面加密网格的原因。

2.2 相场界面捕捉:颗粒如何变形和分裂

颗粒破碎是典型的界面拓扑变化问题,颗粒从球形变成椭球形,再产生颈缩,最后分裂成两个或多个子颗粒。这种变化不能用单纯的流体迹线表示,必须用界面追踪或界面捕捉方法。我用的是Comsol“流体流动”分支下的“相场”物理接口。

相场方法用一个相场变量 \phi 区分两种流体,界面被视为一个有限厚度的过渡区,通过Cahn-Hilliard方程控制界面迁移。相比于水平集方法,相场方法的好处是它能天然处理界面拓扑变化,颗粒分裂时不需要额外处理,而且相场变量和流场是同时求解的,结果更稳定。代价是会引入一个界面厚度参数和迁移率参数,这两个参数需要仔细标定,不然界面会过于弥散,或者计算不稳定。

2.3 破碎判据:什么时候算“击碎”

仿真过程中需要量化颗粒是否被击碎。我常用的一个无因次数是韦伯数,表达式为 We = \rho U^2 d/ \sigma,其中 \rho 是连续相密度,U是颗粒附近的相对速度,d是颗粒粒径,\sigma是界面张力。当韦伯数超过临界值(通常在1到10之间,具体取决于黏度比和流动类型),颗粒就会失稳破碎。

所以我在模型中通过在振动片附近流场监测颗粒位置处的相对速度,估算局部韦伯数,再结合颗粒的形状变化来判断破碎风险。如果在某个振动振幅下,颗粒长径比超过2.5并且局部We持续超过临界值,基本可以断定这个颗粒会被击碎。

3. 几何建模、材料参数与网格处理

这部分写实操设置。很多细节需要耐心调,但一旦调好,整个模型就跑得很顺。

3.1 几何简化思路与几何尺寸设计

我用的二维模型,长0.6mm,宽0.4mm。振动梁是长0.2mm、宽0.02mm的矩形,左侧固定在壁面上,右侧悬臂伸入流场中。颗粒初始位置在振动梁端部正下方约0.05mm处。用二维模型有几个好处:计算快、边界条件设置简单、后处理直观。但在高频振动下,二维模型会忽略离面方向的流动效应,对于球形颗粒,自由度的限制会让破碎过程稍微“硬”一点,颗粒不容易像三维那样扭曲。对于初步机制研究,这是可以接受的。

实际建模时,很多教程会建议直接用轴对称模型。如果你用圆柱形振动件、球形颗粒,轴对称模型能更真实地反映三维效应,同时计算量也不大。但我这里因为振动梁是悬臂式的横向弯曲,不是轴对称结构,所以规则二维模型更合适。不同工况可以选择不同几何假设,不要盲目照搬。

3.2 材料参数与界面张力的标定

材料参数的设定不能拍脑袋。连续相我用的是水,密度998 kg/m³,动力粘度0.001 Pa·s。颗粒相选择的是和矿物油类似的流体,密度850 kg/m³,动力粘度0.05 Pa·s,界面张力设为0.02 N/m。这个界面张力值是比较典型的油水界面张力,实际体系里加入表面活性剂后会降低到不到0.01 N/m,所以可以重点关注表面活性剂对破碎效果的影响。

固体振动梁的参数也很重要。我用了不锈钢材料属性,弹性模量205GPa、密度7850kg/m³、泊松比0.3。仔细观察后你会发现,在20kHz频率下,长度0.2mm的钢制悬臂梁是可以产生稳定的弯曲振动的。材质选择会影响共振频率,进而影响振动位移幅值,所以材料参数不是一个无关紧要的常量。

3.3 网格划分和移动网格的取舍

网格划分是高频振动仿真里最让人头疼的部分。一方面要解析粘性边界层,另一方面还要让界面区域有足够的网格分辨率。我的做法是:先用“自由三角形网格”给流体域划分网格,粒子界面附近局部加密,单元尺寸设为颗粒直径的1/10,大约是4微米。振动梁表面则设置边界层网格,第一层厚度为0.5微米,增长因子1.2,共8层。

这里的核心问题是:结构振动时,固体边界会在流体域中移动,网格要不要跟着动?Comsol有两种选择:一是用移动网格接口把流体域的边界变形传递到整个网格,让网格随之移动;二是固定网格,通过多物理场耦合把边界速度作为入口条件赋予流体,并用相场方法处理界面位置变化。高通量计算时,我强烈建议优先考虑固定网格方案,因为移动网格在大位移高频率下非常容易出现网格畸变,导致负单元崩溃。但如果振动位移幅值很小(小于网格尺寸的10%),移动网格也可以稳定运行,而且能更准确地给出边界几何变形。

我实际跑了移动网格版本,振动梁端部位移为3微米,流道网格初始尺寸5微米,马马虎虎可以不变形。但要是一不小心时间步长设得太大,网格就会在振动梁尖端附近扭曲,计算直接失败。这个坑后面细说。

4. 高频振动加载与边界条件实现

振动加载是整个模型的心脏。不能简单给一个正弦位移就完事,需要结合边界条件、相位、频率和物理场耦合仔细考虑。

4.1 振动激励表达式的常见写法

在Comsol的固体力学接口中,我把振动梁的固定端设为“固定约束”,然后把“指定位移”应用于振动梁的底面或末端边界,让它在y方向做正弦运动。表达式可以写成:

A * sin(2*pi*f*t)

A是振幅,f是频率。比如振幅取3微米,频率取20kHz,表达式就是:

3e-6 * sin(2*pi*20e3*t)

需要特别注意的是,如果你把位移表达式直接加载在结构边界上,那这个边界是“被驱动”的,不再具有结构的动力学响应。如果你想模拟梁的共振,应该用“边界载荷”施加周期性体力,而不是指定位移。我前期考虑到数值稳定性,用了指定位移,把梁端部位移固定为正弦曲线。这样的好处是能精准控制振幅,坏处是掩盖了结构谐振的影响。如果想要更真实的物理,建议使用压电模块或者边界载荷,让梁在驱动力下自己振动。

4.2 流体域边界条件设置

对于流体域,入口处我设为层流充分发展或者压力为零,出口设为压力为零,防止压力反射。在振动梁表面,通过流固耦合边界把结构速度传递给流体,使流体在边界上的速度与结构表面速度一致。对于颗粒相,初始相场变量设置为一个圆形区域。连续相和颗粒相之间的界面初始宽度设置为颗粒直径的百分之几。

有一个小细节:高频振动会产生压力波,在边界上如果不加吸收层,压力波会在出口反射回来干扰计算结果。Comsol在压力声学模块里有完美匹配层PML,但在CFD模块中没有这么直接。我是把进出口边界设得离振动区足够远,并用“开放边界”条件来减少反射,或者用“无粘性”的弱约束处理。实际算下来,只要出口边界离振动梁超过0.5mm,反射波的影响基本可以忽略。

4.3 多物理场耦合节点的配置

我添加了三个耦合节点:“流固耦合”连接固体力学和层流;“相场”连接流体流动和相场接口;还有一个“非局部耦合”用来在颗粒位置计算速度差。在流固耦合节点中,需要选择“流固边界”并启用“双向耦合”,使结构变形对流体产生反作用。

相场接口设置时,需要给“迁移率”和“界面厚度”赋值。迁移率决定界面在流场中的扩散速度,太高会让界面模糊,太低则界面太僵硬。我通常将界面厚度设为最大网格尺寸的一半,迁移率则设为特征速度与特征长度的乘积,让界面移动速度合理。初始试算时,可以用较小的迁移率,确保界面不会过度扩散。

5. 破碎与乳化过程的瞬态仿真实现

设置完所有边界条件后,真正的挑战才刚刚开始。高频振动周期很短,颗粒破碎往往发生在几个振动周期内,但总时长又需要足够长才能看到完整的乳化分布。所以瞬态计算要平衡精度与时间。

5.1 时间步长的选择:每个振动周期至少40步

20kHz的振动周期是50微秒。如果你用自适应时间步长,默认的容差可能会让时间步长变得过大,导致振动波形不能被完整解析。我建议强制设置最大时间步长为振动周期的1/40,也就是1.25微秒。对于更高频率,比如40kHz,最大时间步长要缩小到0.625微秒。

划分时间步长还有一个经验公式:\Delta t < 0.2 \times \delta / U_{max},\delta是网格最小尺寸,U_max是局部最大速度。如果振动梁端部速度幅值达到 0.376 m/s(3微米振幅、20kHz时),网格最小尺寸为0.5微米,那么 \Delta t < 2.66微秒,和振动周期1/40接近。所以直接把时间步长设为固定1微秒,能兼顾稳定性和精度。

5.2 求解器配置:分离式更稳

高频振动问题属于强非线性问题,我尝试过全耦合求解,发现内存消耗大、迭代容易发散。后来改用分离式求解器,将流体、固体、相场分别求解,在耦合步骤之间迭代。虽然会增加迭代次数,但稳定性大幅提升。

在求解器配置中,流体均设置为“层流”加“相场”。将相场和流动作为两个步骤分别求解。通常设置一个耦合迭代的最大次数为50。实际计算中,每个时间步大约需要3-5次耦合迭代就收敛。相场变量的残差控制在1e-4以内即可。想要更准确,可以降到1e-5,但时间会成倍增加。

5.3 后处理:如何判断颗粒被击碎

仿真结束之后,最重要的就是后处理。我一般会提取这样几个物理量:颗粒相的面积(二维体积分数)、颗粒形状的长径比、颗粒质心处的局部Weber数、以及整个流域内颗粒相与连续相之间的界面面积。

界面面积是乳化程度的直接度量。破碎后的小颗粒总表面积会比大颗粒大,用Comsol的“导出”功能,可以计算相场变量梯度的积分,得到界面长度或面积。长径比则可以画颗粒等值线,再通过测量最小二维投影长度和最大长度之比得到。我在做参数扫描时,会针对不同频率和振幅分别计算破碎时间,定义为颗粒长径比从1增加到2.5的瞬时时刻。这个定义比主观看云图要客观得多。

6. 高频振动乳化仿真的常见问题与排查实录

这部分是我踩坑最多的地方,总结成表方便你直接查阅。

常见问题可能原因排查与解决思路
计算不收敛,残差振荡时间步长过大,驱动频率远高于网格分辨率缩短最大时间步长,建议每个周期40步以上
移动网格出现负单元振动位移过大,网格无法跟随结构变形改用固定网格+相场方法,或增加网格重构/自适应
界面区域过于模糊相场迁移率太高或界面厚度设置过大调小迁移率,界面厚度设为最小网格尺寸的2-3倍
波动在边界反弹高频压力波逃逸不出去增加流体域缓冲区,或启用开放边界/吸收层条件
颗粒不破碎局部韦伯数不够,或者剪切区太薄增大振动振幅或缩小颗粒与振动面的距离
长期计算认为结果“卡住”颗粒被推离高剪切区,再难进入破碎区域增加振动梁近场约束,或设计循环流道让颗粒反复穿过
固体梁位移表现异常指定位移掩盖了结构动力学响应改用边界载荷激励,让结构与流体自由耦合

举一个具体例子。我第一次跑移动网格版本时,振动梁振幅设为5微米,频率20kHz,结果计算到第200步就报错“网格变形过大”。排查发现,梁端部往复摆动的横向位移,让附近的流体网格单元被拉长成细条。解决办法很简单:把梁端部位移降到3微米,同时把附近区域重新划分,网格尺寸从6微米降为3微米。计算重新启动后,稳定跑完了整个周期。

另一个问题是相场迁移率。最初我参考默认值设置迁移率,结果在颗粒刚受到振动时,界面很快扩散,颗粒形状变得模糊不清,后续破碎判断根本无从谈起。后来我用公式 U_{ref} \cdot h / 4 来估算迁移率,其中U_ref是特征速度,h是局部网格尺寸。得到大约1e-9 m²/s量级,界面才变得清晰锐利。这算是相场仿真一个很值得记录的调试经验。

7. 高频振动乳化仿真中的实操心得与扩展空间

经过这轮探索,我最大的体会是:高频振动击碎微颗粒的仿真,难度不在任何一个单物理场,而在“频率匹配”和“尺度匹配”。振动频率决定剪切速率,颗粒大小决定界面稳定性,网格尺寸决定能否捕捉局部变形。三者如果不匹配,仿真结果要么过于虚假,要么算不出来。

一个实用的经验是:在做参数化扫描之前,先用小模型做短时间试算,比如只算前0.1毫秒(5个振动周期),确认稳定性和界面形态。一旦这段时间内相场没有失真、残差正常收敛,再扩大到完整时长。这样能把大规模计算失败的概率降到最低。

7.1 从二维到三维的扩展方向

二维模型的限制主要体现在颗粒分裂后的子颗粒是不规则的“碎片”,而实际三维空间中小液滴在剪切流场中会先被拉成丝状,然后由于瑞利-泰勒不稳定性断裂成数个均匀液滴。三维模型能更真实地展示这种“液丝断裂”模式。如果你打算做三维仿真,建议用轴对称模型替代全三维,当前驱动激励若是对称的,能保留三维界面特征又能把计算量控制在可接受范围内。

7.2 后续可以加入的表面活性剂效应

实际乳化体系通常会加入表面活性剂,它会降低界面张力,使颗粒更容易破碎,同时阻止破碎后的小颗粒重新聚并。在Comsol中,可以通过“稀物质传递”接口添加表面活性剂输运方程,并将其浓度与界面张力关联,表达式如 \sigma = \sigma_0 - k \Gamma,\Gamma是界面浓度、k是经验常数。这样就能仿真表面活性剂对破碎动力学的促进作用。这是我下一轮计划做的扩展方向,因为工业上的乳液配方几乎都离不开表面活性剂。

7.3 频段扫描:寻找最优乳化频率

仿真实验里我发现一个有趣的现象:并不是振动频率越高,乳化效果越好。因为频率太高时,粘性边界层变薄,高剪切区只集中在振动片表面几个微米内,颗粒很难进入这个区域。而频率适中时,边界层更厚,剪切区能覆盖更多颗粒。这个发现对实际装置设计很有意义。利用Comsol参数扫描功能,可以快速得到不同频率下的乳化界面面积曲线,从而找到最优工作频段。

我在实际测试中,对20kHz、30kHz、40kHz三组频率进行了对比。20kHz时颗粒大部分变形但破碎率为60%左右;30kHz时破碎率达到85%;40kHz时虽然局部剪切更强,但因为颗粒被推离振动区的速度太快,破碎率反而降到70%。这提醒我们,仿真不应该只追求大功率、高频率,而应该让颗粒有足够的时间停留在高剪切区。这也是为什么有些工业超声乳化设备会设计为脉冲式工作,目的就是让颗粒反复进出剪切区。

7.4 最后给同行的建议

如果你正准备用Comsol做类似的高频振动微颗粒乳化仿真,我建议你先把问题简化得足够极端:单颗粒、二维、固定频率、固定振幅,先跑通整个流程,画出颗粒破碎的动画。等这些基本流程没问题了,再一步步加入更真实的振动驱动、表面活性剂、多颗粒相互作用。这样做的原因是高频振动仿真中的数值稳定性非常敏感,一开始就追求复杂,很容易被各种不收敛折腾到崩溃。

记住一条原则:不要一开始就指望仿真能给你精确的粒径分布曲线,仿真首先应当帮你理解物理过程。当你看到颗粒在振动剪切下从一个完整的圆被拉伸成哑铃状,然后从中断裂成两个小液滴的时候,你对高频振动乳化机理的理解会上升一个层次。这种理解是任何实验照片都给不了的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询