修复循环信号与事件采样并接入 LSTP 接触定位,补充八路验证及复用实验

相较上一版 Jacobian 确定性复用更新,本次补齐事件边界一致性、结果两侧采样及接触事件定位;保留已有物性复用和组件力学公式。

- 统一 UD00 信号求值与下一事件查询的绝对时间边界,修复循环边界浮点舍入导致的阶段错位、重复或漏报,并覆盖零时长、多阶段及长周期场景。
- 引入原生输出语义 v2:保留规则网格真实时间,补充内部时间事件和状态事件的左邻及事件后采样,按保存时间、状态和离散模式重放结果。
- 两条代码生成路径均发出 LSTP 接触描述,默认定位间隙过零及非负力模式的力截断;仅在接受事件时更新防重复记录,增加 contactEvents 诊断计数。
- 补充 MASS/LSTP 独立事件实验、八路全曲线与驱动阶段配对评估,以及 Amesim 不连续点输出对照和力差定位报告;MASS 新增释放机制仍保留为独立实验。
- 保存局部 probe、context 访问与回退、shadow replay、R288 real skip/typed replay 及阀门数值尾部诊断工具和报告;未证明净收益的实验不启用为生产默认优化。
- 更新原生运行说明和元件建模规范,补充信号边界、输出语义、接触事件和实验依赖回归测试。

验证:五组专项回归共 34 项全部通过;37 个待提交 Python 文件语法检查通过;git diff --cached --check 通过。
This commit is contained in:
ljz committed 2026-09-17 23:50:13 +08:00
1 parent 1aac220084
commit 7611f13208
85 files changed
+11358 -33

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
"""Emit state-only LSTP event descriptors for both native lowering paths."""
from .compiler import _number
def contact_table(contacts):
"""Rows: velocity indices, gap, stiffness, damping, depth, force option,
subtract-first flag. Keep the force expression's floating operation order.
Position follows velocity in each reviewed mechanical state pair.
"""
rows = []
for v1, v2, gap, stiffness, damping, depth, option, subtract_first in contacts:
rows.append('{' + ','.join((str(v1), str(v2), _number(gap),
_number(stiffness), _number(damping), _number(depth),
str(option), str(subtract_first))) + '}')
count = len(rows)
header = f'''#define NCONTACTS {count}
typedef struct {{
int velocity1, velocity2;
double gap0, stiffness, damping, depth;
int signed_force, subtract_first;
}} NativeContact;
extern const NativeContact model_contacts[{max(1, count)}];'''
source = f'const NativeContact model_contacts[{max(1, count)}] = {{' + (','.join(rows) or '{0,0,0,0,0,0,0,0}') + '};'
return source, header