ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Rocky 4.3 DEM与CFD-DEM耦合:前处理、后处理与API实战

Rocky 4.3 DEM与CFD-DEM耦合:前处理、后处理与API实战 简介这份《Rocky 4.3 工作坊索引》面向使用 Rocky DEM 进行颗粒物质仿真的工程师与研究人员也可作为采矿、化工、制药等领域从业者了解离散元方法的入门指南。它梳理了 Rocky 4.3 在软件设置与处理流程、与 ANSYS 产品集成以及后处理方面的主要功能入口覆盖新材料添加、边界域设定、接触数据管理、仿真时间扩展、材料组成与相互作用修改、粒子数量估算、周期性边界与项目归档恢复等操作并给出与 Fluent、Mechanical、SpaceClaim、Workbench 的参数化集成思路。资源包仅含 1 个 PDF 文件体积约 171KB轻量易存适合快速查阅索引结构。索引中还列出 1-way/2-way CFD-DEM 耦合、DEM-FEA 单向耦合、粗粒模型、DEM-LBM 等高级模块以及锥形干燥器热建模、破碎机破损、球磨机磨损、振动筛分、落锤试验等应用场景并标注 Professional、Academic 版或高性能计算需求。目前已有 315 人学习可帮助读者定位工作坊模块、理解功能边界为后续按需查阅教程提供清晰线索。1. 把 Rocky 4.3 工作坊索引当成一张 DEM 项目路线图很多人拿到 Rocky 4.3 workshop 的索引页第一反应是当成功能清单翻一遍材料、接触模型、Fluent 耦合、后处理一页一页看过去觉得“大概知道有哪些功能了”。真正开一个输送溜槽或者半自磨机的项目时才发现卡点根本不在功能多少。域边界设小了颗粒从侧面飞出去时间步长给大了接触力发散双向耦合跑了三天没收敛回头还得重跑。这份索引的价值不在“有什么”而在它把 Rocky 4.3 的能力按 Setup/Processing、ANSYS Integration、Post-Processing 三条线摆开加上 Professional、Higher-Powered、ANSYS 三类授权标记本质上是一条从建模到验证的施工顺序。按这个顺序走能少返工不按顺序走大概率在耦合阶段推倒重来。2. Rocky 4.3 前处理链路Domain 边界、材料与粒子输入的参数怎么定DEM 项目里 80% 的返工发生在前处理阶段。求解器本身很稳参数没定对才是主因。索引里 Geometry、Particles、Motions 三块看着平淡实际是所有后续耦合的地基。2.1 Domain 边界与周期性边界的设置逻辑Domain 在 Rocky 里就是仿真域的范围它决定三件事颗粒从哪里进、从哪里出、撞到虚拟壁面后怎么处理。常见做法是先按几何包围盒给一个粗范围再根据颗粒流动方向收窄。斜溜槽这种开放流动下游出口要留足颗粒加速段一般留 23 倍特征长度太短会出现颗粒还没来得及离开就被截断的假堆积。周期性边界只在两类场景真正划算一是几何和流动沿某个方向真正周期重复比如长距离皮带机的中间段二是你只想看统计意义上的稳态行为不想模拟全长。索引里标注的是 Periodic Boundaries (Cartesian)也就是只支持笛卡尔方向的平移周期旋转周期不在此列这点选型时容易漏。注意周期边界要求进出两侧的颗粒数量长期守恒。跑之前先用颗粒数量估算工具确认一下填充率否则跑起来粒子数单向增加或者减少说明域高和颗粒直径的比值不对。边界条件的碰撞统计Boundary Collisions Statistics Collection建议一开始就打开。它比求解器日志更早暴露问题颗粒撞壁次数异常飙升通常意味着域太窄或者壁面摩擦系数给错了。2.2 材料与接触模型从 Hertz-Mindlin 到 JKR 的选型表Rocky 4.3 的接触模型不止默认那一个。索引里明确列出的有 Constant、Linear、Leeds、JKR 四类粘附力模型外加滚动阻力模型 Type 3 的弹塑性弹簧-阻尼模型。选型的判断依据是颗粒间有没有液相、有没有明显的塑性变形。场景接触模型滚动阻力模型备注干燥矿石、砂石Hertz-Mindlin可选 Type 3默认组合先跑通再调湿颗粒、造粒JKRType 3需要表面能参数含液桥的片剂包衣Liquid Bridge JKRType 3需 Professional 授权高压力磨辊Hertz-MindlinType 3配合 Ab-T10 破碎材料参数里最容易踩坑的是杨氏模量。真实岩石的杨氏模量动辄几十 GPa直接填进去时间步长会被压到 1e-8 秒量级跑不动。工程上的常见做法是软化处理把杨氏模量降低一到两个数量级同时保证颗粒的宏观流动行为休止角、堆积形态与实测一致。索引里的 Angle of Repose and Drawdown 验证算例就是干这个用的拿它反标定软化系数比拍脑袋靠谱。滚动摩擦系数是最敏感的参数之一同一个几何下它从 0.1 改到 0.3溜槽出口的流量可能差 20%。标定顺序建议是先用休止角算例定滚动摩擦再用混合分析LMI算例校核。2.3 粒子输入、PSD 与颗粒数量估算粒子形状支持分几档球形、圆化类型Sphero-Cylinder、Sphero-Polygon、Sphero-Polyhedron、非圆类型Polyhedron、Briquette、Faceted Cylinder以及从外部导入的自定义凸体。形状越复杂接触检测开销越大圆化类型是精度和性能之间比较实际的折中。PSD 输入方式索引里列了筛分尺寸、等效球径、原始尺度等好几种。筛分数据最贴近现场直接用筛网孔径和通过率填Rocky 会自动拟合。分箱数量建议控制在 812 个太少不能反映级配太多会让最大颗粒数量失控。颗粒数量估算工具必须用。它的逻辑是按填充体积除以单颗粒体积再乘空隙率修正给的量级参考。一般我会先估一遍然后把估算值的 1.2 倍作为上限分配内存再开跑。颗粒数超过 200 万又没开 GPU 加速索引里的 Higher-Powered 标记单机 CPU 基本不用想。2.4 存档、恢复与 Restart 的工程意义索引里 Project Archive Restore、Save Simulation for Restart、Resume Capabilities 三项经常被跳过。它们解决的是现实问题算到一半断电、参数要微调重跑后半段、要把结果挪到另一台机器上做后处理。Restart 的前提是存档时保留了颗粒状态。Rocky 的存档会生成一个工程目录里面包含几何、材料、颗粒快照。跨机器恢复时最容易出问题的是路径几何文件用的是绝对路径换机器前先在文本编辑器里批量替换根目录或者用 API 脚本重新挂载几何。扩展仿真时间Extend Simulation Time就是在 Restart 的基础上改总时长不需要重新初始化颗粒。提示Restart 和 Archive 不是一回事。Archive 是完整工程打包用于迁移Save for Restart 只存求解所需的中间状态体积小但缺东西。3. DEM-CFD 与 DEM-FEA 耦合ANSYS Fluent / Mechanical 集成的落地方式索引剩下的半壁江山都是 ANSYS 集成。核心就两类颗粒和流体耦合CFD-DEM颗粒和结构耦合DEM-FEA。搞清楚单向和双向的代价差异比记住菜单在哪更重要。3.1 单向与双向 CFD-DEM 的差别与代价单向耦合1-Way CFD-to-DEM是流体影响颗粒颗粒不影响流体。做法是先在 Fluent 里算好流场再把速度场、压力场以插值方式映射到 Rocky 的域里作为颗粒受到的外力。这条路便宜一次 Fluent 稳态算完就能反复用适合风选、气力输送里颗粒浓度很低的场合。双向耦合2-Way CFD-DEM是每个耦合步内两边互相交换数据颗粒占体积、挡流道流体反过来改变颗粒轨迹。代价是指数级上升Fluent 的时间步必须和 Rocky 的交换步对齐耦合交换步一般是 DEM 时间步的 510 倍交换太频繁精度不提升但耗时翻倍太稀疏则流固之间的能量传递会出现明显滞后。索引里标注双向 CFD-DEM单相需要 Higher-Powered 授权不是没道理。冷启动策略上常见做法是先单独跑一段纯 DEM 把颗粒床层铺好再挂上 Fluent 做双向比直接从空床双向启动稳得多。3.2 Workbench 里跑 Rocky-Fluent 双向耦合的关键参数在 Workbench 里搭 Rocky 和 Fluent 的耦合系统参数对齐是全部工作的重点。下面这张表是项目里反复用的配置基准。参数典型取值说明DEM 时间步20% Rayleigh 时间步先按最小颗粒算耦合交换步DEM 时间步的 510 倍过大则滞后过小则空转Fluent 时间步与耦合交换步一致必须严格相等亚松弛因子0.30.7发散时先降到 0.3最大耦合迭代20超出说明参数不对空隙率计算网格不小于 DEM 域分辨率网格过粗会抹平颗粒团流程上先在 Rocky 里配好 Particles 和 Geometry导出耦合所需的域信息再在 Fluent 里建立对应的流体域网格尺寸不能比颗粒直径大太多一般要求流体网格特征尺寸小于 3 倍颗粒直径否则空隙率计算失真。注意双向耦合跑不动的时候先看质量守恒和颗粒体积分数曲线再看残差。很多时候残差看着还行颗粒体积分数已经漂到不物理的区间了这时候调松弛因子没用得回去查网格。3.3 DEM-to-FEA 单向耦合与瞬态结构DEM-FEA 耦合是把颗粒对结构的作用力映射到 ANSYS Mechanical 上。索引里区分了 1-Way Static Coupling 和 1-Way Transient Coupling区别在于载荷是否随时间变化。静态耦合用颗粒接触力的时间平均值得到一个等效静载适合评估料仓壁、溜槽衬板的长期受力。做法是把 Rocky 统计出的接触力按几何面片分组导出再映射到 Mechanical 的对应面上。映射前必须确认两边的几何面编号一致不一致就会出现力加载到错误区域的尴尬情况。瞬态耦合把每个时间步的接触力序列传给 Mechanical 做瞬态结构分析能看出冲击峰值和结构响应。代价是要跑两次瞬态且两边时间步要对齐。颗粒对衬板的冲击往往是单次毫秒级事件Rocky 侧的输出频率必须足够高否则峰值会被平均掉。斗式输送机、转运溜槽这类项目实践中用瞬态耦合反而更常见因为要评估的是磨损和疲劳平均值没有意义。3.4 几何与参数化SpaceClaim、.cas/.msh 导入与 Workbench 参数联动几何来源索引里列了三条从 ANSYS SpaceClaim 经 Workbench 传入的自定义几何、直接导入 *.xgl / *.stl / *.dxf、以及从 Fluent 导入 *.cas / *.msh。三条路的适用场景不同。STL 最通用但要注意网格密度。STL 是三角面片密度不够时曲面会被多边形近似颗粒在曲面上滚动的行为会失真。DXF 适合二维轮廓拉伸的场合XGL 保留的信息比 STL 多能带上命名和层级。从 Fluent 导入 *.cas / *.msh 的价值在于两边共用同一套几何省掉重复建模也让后续 CFD-DEM 耦合的域完全一致。导入时单位要核对Fluent 用米有些前处理软件默认毫米单位错了整个域会缩一千倍颗粒直接穿模。参数化集成Workbench Parametric Integration是索引里容易被低估的一块。它让 Rocky 的输入参数进料带式输送机速度、受料带式输送机速度等能挂到 Workbench 的参数管理器里和 Fluent、Mechanical 的输入输出一起做设计点扫描。做法是把 Rocky 侧要变的量定义为输入参数把关注的输出出口流量、最大接触力、磨损量定义为输出参数然后在 Workbench 里跑 Design of Experiments。参数类型Rocky 侧示例下游用途输入皮带速度、给料量、倾角驱动 DOE输出出口流量、平均停留时间响应面拟合输出最大接触力、磨损深度传给 Mechanical4. Python Macro 与 Rocky API把前后处理批量化索引把 Python Macro Scripting 标注为前处理和后处理都支持。这块能力决定了你是在做一次性项目还是在做可复用的流程。4.1 Macro Panel 能做什么不能做什么Macro Panel 是 Rocky 内置的宏入口适合固定动作的快速回放批量删除仿真结果、扩展仿真时间、重新定义输出变量、修改材料组分、调整材料相互作用。它的特点是跟界面紧耦合录一次能重复用。它的天花板也明显跨工程批量执行、条件判断、外部数据读写都做不了。超过三个工程要处理就应该转到 API 层面。4.2 API 脚本的典型结构Rocky 的 Python API 走的是“打开工程 → 拿仿真对象 → 改参数 → 提交”的路子。下面是我一般会用的骨架。import rocky # 1. 加载工程拿到 Study 对象 study rocky.Study() study.LoadProject(rD:\demo\transfer_chute.rocky) # 2. 定位到具体的仿真多仿真工程必须指名 sim study.GetSimulation(Transfer Chute) # 3. 查询颗粒集合与当前颗粒数用于校验 collection sim.GetParticleCollection() print(collection:, collection.GetName()) # 4. 读取接触参数确认改动前的基线 material sim.GetMaterials().GetMaterial(Ore) print(rolling friction:, material.GetRollingFrictionCoefficient())这段脚本本身不做计算它的作用是把工程状态读出来。改参数之前先读一遍基线是批量处理里最重要的习惯否则改错了没法回退。函数名以本机help(rocky)的输出为准4.3 和后续版本的命名空间会有差异照抄网上例子容易报 AttributeError。4.3 材料组分与相互作用的批量修改项目里最常见的批量场景是参数扫描同一套几何滚动摩擦系数取五个值各跑一遍。手工改五次再点五次运行效率极低还容易改漏。import rocky study rocky.Study() study.LoadProject(rD:\demo\transfer_chute.rocky) sim study.GetSimulation(Transfer Chute) # 扫描区间滚动摩擦系数 for mu_r in [0.10, 0.15, 0.20, 0.25, 0.30]: materials sim.GetMaterials() pair materials.GetInteraction(Ore, Steel) pair.SetRollingFrictionCoefficient(mu_r) # 修改接触对参数 sim.SetName(fchute_mur_{mu_r:.2f}) # 每个工况单独命名便于归档 sim.Save() # 存成独立工程避免相互覆盖 print(fsaved case mu_r{mu_r})逻辑上是三步改参数、改名字、存独立工程。第三步最关键如果只改参数不另存五轮跑完只留下最后一次的状态。材料相互作用Material Interactions在 API 里是按接触对组织的改之前要确认接触对的名字和界面上显示的一致名字拼错会静默失败。4.4 批量跑工程与结果导出批处理的下一步是把求解也拉进来。常见做法是用脚本循环提交仿真、等待完成、导出目标曲线再统一汇总成 CSV。无头模式启动的写法跟安装方式和版本有关参数以本机命令行为准核心就是把脚本路径和工程路径传进去。导出侧的重点是选对量。索引里 Post-Processing 一栏列出的 Cross Plot、Multi Time Plot、Eulerian Statistics 在 API 里都有对应接口。批量任务一般只导三个量出口颗粒流量、平均停留时间、最大接触力。前两个看产能第三个是给 Mechanical 用的输入。提示批处理脚本一定要加日志。每轮开始和结束各写一行时间戳跑二十个工况的时候没有日志你无法判断是卡在第三个还是第十九个。5. 后处理与可信度验证交叉图、能量谱和三条自检线结果出来之后真正花时间的是判断它可不可信。Rocky 4.3 的后处理工具足够多但工具多不等于结论可靠。5.1 后处理工具的组合用法索引里的后处理可以分成三层。第一层是几何选择类Cube、Cylinder、Plane、Custom Polyhedron Envelope作用是把域切成关心的区域。第二层是统计类Histogram、Time Plot、Multi Time Plot、Cross Plot、Eulerian Statistics用来量化。第三层是诊断类Particle and Cell Inspector、Particle Trajectory、Vectors Display用来定位单个颗粒的异常行为。组合顺序一般是先用 Plane 或 Cube 把出口区域切出来用 Time Plot 看出口流量的时间序列是否稳定流量稳定后用 Histogram 看颗粒速度分布分布有明显双峰时用 Cross Plot 把速度和位置做交叉往往能发现某一层颗粒在死区里打转。Cross Plot 是被低估的工具。它把两个变量放同一张散点图上颗粒数和接触力的相关性、速度和粒径的关系都能一眼看出来。Eulerian Statistics 则是把颗粒数据映射到空间网格上适合做浓度场和速度场的可视化。Multi Time Plot 和 Time Plot 的区别在于前者能同时画多个工况。参数扫描跑完五个滚动摩擦系数用 Multi Time Plot 把五条出口流量曲线叠在一起比看五张图省事得多。5.2 用能量谱判断仿真是否进入稳态索引里 Particles and Contacts Energy Spectrum 是专门给能量审计用的。它的价值在于颗粒体系的动能、势能、接触弹性能、摩擦耗散能、破碎耗散能各自随时间的变化曲线能直接告诉你算没算稳。判断标准很直接。进入稳态的标志是总动能在均值附近小幅波动摩擦耗散能曲线单调上升且斜率基本恒定。如果总动能持续上升说明能量在注入但没耗散掉常见原因是滚动摩擦给得太小或者域边界有异常反弹。如果总动能持续下降逼近零颗粒已经静止后面的统计没有意义得检查是不是时间步长太大导致人为耗散。能量账本还有一个用法核对它是否闭合。输入的势能变化减去耗散能应该等于动能变化误差超过几个百分点就说明接触模型参数有问题这时候去看别的后处理曲线都是浪费时间。5.3 用内置验证算例反标定参数索引里的验证场景不是演示是标定工具。休止角与卸料Angle of Repose and Drawdown、混合分析LMI、落锤试验Ab-T10 破碎标定、振动筛分每一个都对应一组需要标定的参数。落锤试验最典型。Ab-T10 破碎模型的核心参数是颗粒的破碎能阈值和碎片生成规律这两个量不能靠猜得用落锤试验的实测破碎产物粒径分布去反推。做法是先用一个初始参数跑冲击仿真导出破碎后的粒径分布和实验室筛分曲线对比按偏差方向调阈值再跑通常三到五轮能收敛。注意标定必须在和实际工况相近的尺度下做。用 10 毫米颗粒标出来的破碎参数直接用到 50 毫米颗粒上结果一定跑偏。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进