简介:这份《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 里就是仿真域的范围,它决定三件事:颗粒从哪里进、从哪里出、撞到虚拟壁面后怎么处理。常见做法是先按几何包围盒给一个粗范围,再根据颗粒流动方向收窄。斜溜槽这种开放流动,下游出口要留足颗粒加速段,一般留 2~3 倍特征长度,太短会出现颗粒还没来得及离开就被截断的假堆积。
周期性边界只在两类场景真正划算:一是几何和流动沿某个方向真正周期重复,比如长距离皮带机的中间段;二是你只想看统计意义上的稳态行为,不想模拟全长。索引里标注的是 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 | 默认组合,先跑通再调 |
| 湿颗粒、造粒 | JKR | Type 3 | 需要表面能参数 |
| 含液桥的片剂包衣 | Liquid Bridge + JKR | Type 3 | 需 Professional 授权 |
| 高压力磨辊 | Hertz-Mindlin | Type 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 会自动拟合。分箱数量建议控制在 8~12 个,太少不能反映级配,太多会让最大颗粒数量失控。
颗粒数量估算工具必须用。它的逻辑是按填充体积除以单颗粒体积再乘空隙率修正,给的量级参考。一般我会先估一遍,然后把估算值的 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 时间步的 5~10 倍,交换太频繁精度不提升但耗时翻倍,太稀疏则流固之间的能量传递会出现明显滞后。索引里标注双向 CFD-DEM(单相)需要 Higher-Powered 授权,不是没道理。
冷启动策略上,常见做法是先单独跑一段纯 DEM 把颗粒床层铺好,再挂上 Fluent 做双向,比直接从空床双向启动稳得多。
3.2 Workbench 里跑 Rocky-Fluent 双向耦合的关键参数
在 Workbench 里搭 Rocky 和 Fluent 的耦合系统,参数对齐是全部工作的重点。下面这张表是项目里反复用的配置基准。
| 参数 | 典型取值 | 说明 |
|---|---|---|
| DEM 时间步 | 20% Rayleigh 时间步 | 先按最小颗粒算 |
| 耦合交换步 | DEM 时间步的 5~10 倍 | 过大则滞后,过小则空转 |
| Fluent 时间步 | 与耦合交换步一致 | 必须严格相等 |
| 亚松弛因子 | 0.3~0.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 |
| 输出 | 出口流量、平均停留时间 | 响应面拟合 |
| 输出 | 最大接触力、磨损深度 | 传给 Mechanical |
4. 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(r"D:\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(r"D:\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(f"chute_mur_{mu_r:.2f}") # 每个工况单独命名,便于归档 sim.Save() # 存成独立工程,避免相互覆盖 print(f"saved 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 毫米颗粒上,结果一定跑偏。
本文还有配套的精品资源,点击获取