ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于Comsol的高频振动微颗粒乳化仿真探索

基于Comsol的高频振动微颗粒乳化仿真探索 做高频振动乳化仿真这事儿我是在一个微颗粒分散项目里被“逼”出来的。当时想研究悬浮在连续相中的固体微颗粒在高频振动激励下如何被流场剪切力击碎、分散成更细的颗粒用传统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/s3微米振幅、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做类似的高频振动微颗粒乳化仿真我建议你先把问题简化得足够极端单颗粒、二维、固定频率、固定振幅先跑通整个流程画出颗粒破碎的动画。等这些基本流程没问题了再一步步加入更真实的振动驱动、表面活性剂、多颗粒相互作用。这样做的原因是高频振动仿真中的数值稳定性非常敏感一开始就追求复杂很容易被各种不收敛折腾到崩溃。记住一条原则不要一开始就指望仿真能给你精确的粒径分布曲线仿真首先应当帮你理解物理过程。当你看到颗粒在振动剪切下从一个完整的圆被拉伸成哑铃状然后从中断裂成两个小液滴的时候你对高频振动乳化机理的理解会上升一个层次。这种理解是任何实验照片都给不了的。
返回列表