当前位置: 首页 > news >正文

实验室里折腾多孔介质的时候,最让人头秃的莫过于看着两种流体在孔隙里掐架。想象一下往咖啡粉里倒热水——水怎么渗透的?油怎么被顶出去的?这背后全是两相流的宫斗大戏

多孔介质流动 多孔介质中的两相流动, 多尺度模拟,孔隙尺度建模,Darcy-Brinkman-biot理论。 可以模拟粘性指进,毛细管力驱动,接触角研究。 模拟驱替和渗吸过程。

先甩段代码热热身,用OpenFOAM搞个孔隙级模拟:

# 定义两相流场 twoPhaseSystem = TwoPhasePhaseSystem( phase1=Air, phase2=Water, porousZone=foam.PorousZone( permeability=1e-9, # 渗透率像堵车似的 porosity=0.35 # 孔隙率比海绵蛋糕还密 ) ) solver = PimpleFoam( timeSchemes=[Backward], nNonOrthogonalCorrectors=2 ) solver.run(endTime=0.1)

这段代码的核心是渗透率参数,单位是m²。1e-9什么概念?相当于沙子的渗透能力。当两相流体在这种介质里较劲时,Darcy方程可能hold不住了,得搬出Brinkman修正项来救场:

$$

\mu_{eff} \nabla^2 \mathbf{u} = \frac{\mu}{K} \mathbf{u} + \nabla p

$$

这个式子妙在左边是粘性项,右边是达西阻力,相当于让Navier-Stokes和Darcy两派大佬握手言和。实际模拟时要注意有效粘度μ_eff的取值,这货经常在孔隙尺度与宏观尺度之间反复横跳。

说到尺度问题,最近在折腾多尺度耦合。举个栗子,用Python的PoreSpy生成微观结构:

import porespy as ps im = ps.generators.blobs(shape=[500,500], porosity=0.6) props = ps.metrics.pore_size_distribution(im)

生成的孔隙网络活像显微镜下的砂岩(图1)。但直接拿这个做全场模拟?算到明年也出不来结果。机智的搞法是把微观参数升尺度到宏观模型——比如把局域毛细管压力曲线打包成等效参数。

驱替过程的代码更有意思,粘性指进现象堪比流体界的闪电:

// 表面张力项处理 volScalarField pc = pcModel->pc() * (1.0 - saturation); surfaceScalarField phic = fvc::interpolate(pc) * mesh.magSf(); // 求解饱和度方程 fvScalarMatrix sEqn ( fvm::ddt(s) + fvm::div(phi, s) == fvm::laplacian(M, s) + fvc::div(phic) );

关键在laplacian项里的M——流动特性矩阵,它决定了粘性指进的分叉程度。当注入速度超过某个阈值时,界面就开始发疯似的分叉,这时候需要自适应网格来捕捉细节(图2)。

最后说说接触角这个磨人精。实验室测接触角要烧香拜佛,数值模拟也没好到哪去。用VOF方法处理三相接触线时,边界条件要这么玩:

contact_angle = 60 # 亲水表面 mesh.boundary['wall'].setContactAngle( angle=contact_angle, limiter=ContactAngleLimiter.COSINE )

这个角度参数能让流体界面在固体表面"站"成特定姿势。但实际中发现,动态接触角跟静态设定值能差出20度——所以最新算法开始用神经网络实时预测接触角变化。

折腾完这些,终于能看着模拟动画里两种流体像贪吃蛇一样在孔隙迷宫里你追我赶。虽然头发掉了一地,但看着粘性指进的枝状分叉在屏幕上绽放,比看烟花还带劲——当然,前提是别问我算这个用了多少CPU小时。

http://www.cnnetsun.cn/news/26560.html

相关文章:

  • 单相并网逆变器Matlab仿真:离网仿真与PLL锁相环研究,电感电流谐波含量THD优化仿真效果
  • Kate 高级文本编辑器 v26.03.70 官方中文版
  • yadm 完整使用指南:从入门到精通掌握点文件管理
  • 基于Web的大学生体测管理系统设计与实现中期(1)
  • 代码随想录算法训练营第四十三天 | 98. 所有可达路径
  • GBase 8a数据库集群硬件部署安装建议
  • GBase数据库护航国家管网SCADA系统四年无中断平稳运行
  • 一文搞定 AI 智能体架构设计的9大核心技术
  • 计算机毕业设计springboot基于JAVA的校园图书馆管理系统的设计与实现 基于Spring Boot框架的校园图书馆信息化管理系统开发与应用研究 利用Spring Boot与Java技术构建的高
  • 数据结构==LRU Cache ==
  • AMD ROCm平台上的YOLOv8目标检测:从入门到精通的5步优化指南
  • 如何让GPT-5.2成为你职场上的得力助手?这5大功能必看!
  • 如何快速掌握YOLOv12:实时目标检测的完整实践指南
  • PINNs-Torch:用PyTorch轻松实现物理信息神经网络
  • JavaScript学习笔记:5.函数
  • Apache Kvrocks数据库部署实战:从零到一的完整搭建教程
  • 16、远程系统管理与安全防护指南
  • 施耐德BMENOC0321C:高性能模块化驱动控制器(增强通信版)
  • 金融人转AI:从入门到上手,我的“证书认证+技能”学习路线分享
  • 模块化多电平变换器MMC(20子模块、21电平,工作条件220kV(AC)/400kV(DC)...
  • 生态共舞!恭喜10家企业荣获“2025龙蜥社区最佳联合解决方案奖”
  • Java常见开发框架大比拼:Jeesite 、jeecgBoot、smartAdmin、ruoyi
  • IDEA(2020版)实现HttpServletRequest对象
  • 跨平台开发框架选型指南:Uniapp、React Native、Flutter
  • 数字孪生软件开发公司
  • springboot基于vue的校园报修管理系统设计与实现_t45k51ip
  • 嵌入式彩屏单色字体点阵的存储结构设计
  • 《Medical Vision Generalist: Unifying Medical Imaging Tasks in Context》(医学视觉通才:在上下文中统一医学成像任务)的
  • 西安电子科技大学专属信纸模板:3分钟打造专业学术形象
  • 【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?