RibleMoreau
RibleMoreau 实现了Moreau-Jean时间步进方法,这是一种专门用于非光滑动力学系统的隐式积分算法。
概述
Moreau-Jean方法是处理接触、碰撞和摩擦等非光滑现象的标准数值方法。该方法基于测度微分包含(Measure Differential Inclusions)理论,能够精确处理不连续的速度跳变。
主要特性
非光滑动力学:精确处理接触和碰撞
隐式积分:θ-方法(通常θ=0.5)
能量耗散:自然处理碰撞能量损失
约束稳定:保持约束满足
理论基础
测度微分包含
系统动力学表示为:
M dv = f(t,q,v)dt + r其中:
M:质量矩阵
v:速度
f:光滑力
r:非光滑冲量测度(接触力)
时间离散
使用θ-方法离散化:
θ = 0.5:中点法(二阶精度)
θ = 1.0:隐式欧拉(一阶精度,更稳定)
接触处理
Signorini条件
非穿透约束
互补性条件
法向冲量非负
Coulomb摩擦
摩擦锥约束
最大耗散原理
切向滑动规则
应用场景
颗粒系统:散体材料动力学
机器人接触:抓取和操作
碰撞问题:多体碰撞仿真
摩擦系统:滑动和滚动接触
数值求解
互补问题
每个时间步求解:
线性互补问题(LCP)
非线性互补问题(NCP)
锥互补问题(CCP)
求解器
投影法
内点法
ADMM方法
使用示例
julia
using Rible
import Rible as RB
# 使用Moreau求解器
solver = RB.DynamicsSolver(
RB.Moreau(θ=0.5), # 中点Moreau方法
RB.InnerLayerContactSolver(
RB.InteriorPointMethod()
)
)
RB.solve!(prob, solver; tspan=(0.0, 5.0), dt=1e-3)相关包
RibleGeneralizedAlpha - 光滑系统积分器
核心Rible包 - Zhong06族方法