Skip to content

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)

相关包