feat: add 2D plane math, JKR surface adhesion, clump particles, CAD mesh facets, and drum tumbler benchmark
moonbit-granular 是基于 MoonBit 语言纯原生实现的颗粒介质离散元(Discrete Element Method, DEM)物理仿真与微宏观统计分析库。与通用的刚体碰撞引擎(如 Box2D/PhysX)不同,本库专注于散体材料(土壤、砂石、矿粉、粮食、药品颗粒)的非线性接触力学、粘结破坏、侧壁伺服控制以及微宏观力学特征统计。
moonbit-granular
Quat
src/ ├── math/ # 3D向量(Vec3)、矩阵张量(Mat3)、四元数(Quat)、确定性PRNG ├── particle/ # 颗粒3D表示(Particle3D)、材料属性(MaterialProps)、PSD颗粒级配生成器 ├── contact/ # Hertz-Mindlin、Hooke、ParallelBond平行粘结模型 ├── boundary/ # 平面壁、圆柱壁、Servo伺服壁面控制器、Periodic周期边界 ├── spatial/ # 3D空间哈希网格(SpatialHashGrid)、Verlet邻域表 ├── integrator/ # Velocity-Verlet时间积分器、Rayleigh瑞利波步长估算 ├── simulation/ # SimulationWorld求解器主引擎、TrajectoryRecorder轨迹导出器 ├── stats/ # Love-Weber应力张量、Fabric织构张量、力链网络、配位数与孔隙比 ├── app/ # 典型应用: 直剪盒(DirectShearBox)、漏斗下料(Hopper)、三轴剪切(Triaxial)、粮仓沉积(Silo) ├── bench/ # 性能基准测试套件 └── main/ # CLI 演示主入口
# 检查项目与依赖 moon check # 运行单元测试套件 moon test # 运行 CLI 演示程序 moon run src/main # 格式化与接口检查 moon fmt moon info
import "ssqzerz/moonbit-granular/src/math" @math import "ssqzerz/moonbit-granular/src/particle" @particle import "ssqzerz/moonbit-granular/src/boundary" @boundary import "ssqzerz/moonbit-granular/src/simulation" @simulation import "ssqzerz/moonbit-granular/src/stats" @stats fn example() { // 1. 创建 DEM 仿真世界 let world = @simulation.SimulationWorld::new( 0.02, 512, 0.005, 0.0001, @math.Vec3::new(0.0, -9.81, 0.0) ) // 2. 添加底壁与颗粒 let wall = @boundary.PlaneWall3D::new(0, @math.Vec3::zero(), @math.Vec3::new(0.0, 1.0, 0.0), 0) world.add_plane_wall(wall) let p1 = @particle.Particle3D::new(1, @math.Vec3::new(0.0, 0.01, 0.0), 0.005, 2650.0, 0) world.add_particle(p1) // 3. 推进仿真 for step = 0; step < 100; step = step + 1 { world.step() } // 4. 统计 Love-Weber 应力张量 let stress = @stats.compute_love_weber_stress(world, 0.001) println("Mean stress p = " + stress.hydrostatic_mean().to_string()) }
本项目基于 Apache License 2.0 许可证开源。
与通用刚体引擎区分,专注颗粒统计和接触模型。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
moonbit-granular (MoonBit 颗粒介质离散元库)
moonbit-granular是基于 MoonBit 语言纯原生实现的颗粒介质离散元(Discrete Element Method, DEM)物理仿真与微宏观统计分析库。与通用的刚体碰撞引擎(如 Box2D/PhysX)不同,本库专注于散体材料(土壤、砂石、矿粉、粮食、药品颗粒)的非线性接触力学、粘结破坏、侧壁伺服控制以及微宏观力学特征统计。🌟 核心特性
Quat的转动运动学同步二阶积分。📁 架构与包设计
🚀 快速开始
依赖环境
构建与测试
💡 使用示例
📜 开源许可证
本项目基于 Apache License 2.0 许可证开源。