Repository navigation
[AI Generated][FEAT] 新增 CR3BP 多项式流 DA 传播内核 - #793
Merged
Merged
Conversation
ouyangjiahong26
added a commit
that referenced
this pull request
Oct 3, 2026
评审对 PR #793 提出六条非阻塞发现,逐一修复:e2m2e-da 模块文档恢复被误删的零算法约定半句;一致半径脚本的输出路径从 CWD 相对路径改为按脚本文件定位仓库根(与 generate_catalog_baseline.py 同惯例),docstring 补二分搜索的误差随半径单调假设;CONTEXT.md 多项式流词条修正一阶截断与状态转移矩阵的关系表述(一阶截断就是 STM,高阶截断才是推广);ADR 0059 日期改为实际记录日 2026-10-03,并补一句数据落位与 issue 验收字面的偏差说明(数据按 datasets/ 留档惯例放 datasets/da_flow/,脚本仍在 scripts/)。脚本从仓库外目录重跑验证输出与入库 CSV 逐字节一致,make check 全绿。
这一改动在 #784 落地的微分代数原语之上实现 CR3BP 多项式流:初值六分量偏差作为 DA 变量,固定步长 RK4 在 DA 算术下积分,各求值时刻的状态是初值偏差的 k 阶截断 Taylor 多项式,Python 侧可与既有 `Da`/`CompiledDa` 原语组合在任意偏差处快速求值。内核落在 `e2m2e-dyn` 的 `polynomial_flow` 模块(沿 MEGNO 先例,`e2m2e-da` 保持零算法);DA 上下文由调用方初始化,内核只做前置校验并临时切换线程截断阶、返回前恢复旧值。DA 版运动方程不设 `MIN_DISTANCE` 钳制,近碰撞轨迹表现为 DA 域错误,这一口径差异连同其余决策记录在 ADR 0059。 绑定 `propagate_cr3bp_da_py` 注册于 `e2m2e-integrators`,前置条件与参数错误映射为 ValueError,传播期 DA 运算失败映射为 RuntimeError,Rust 扩展 ABI 版本升至 28。验收按三条研究级断言进 Rust 测试:一阶截断对既有 STM 逐元素相对误差小于 1e-10,二阶系数与中心差分 Hessian 抽查一致到 1e-6,Jacobi 常数 DA 展开余项低于 1e-10;Python 侧另有返回契约、零偏差求值与错误路径的行为测试。`scripts/da_uniform_radius_curve.py` 给出 NRHO 短弧的一致半径-阶数曲线,结果落在 `datasets/da_flow/` 留档,曲线随阶数单调不降,1 阶约 2.6e-6 到 8 阶约 2.1e-3。 Related to #786
评审对 PR #793 提出六条非阻塞发现,逐一修复:e2m2e-da 模块文档恢复被误删的零算法约定半句;一致半径脚本的输出路径从 CWD 相对路径改为按脚本文件定位仓库根(与 generate_catalog_baseline.py 同惯例),docstring 补二分搜索的误差随半径单调假设;CONTEXT.md 多项式流词条修正一阶截断与状态转移矩阵的关系表述(一阶截断就是 STM,高阶截断才是推广);ADR 0059 日期改为实际记录日 2026-10-03,并补一句数据落位与 issue 验收字面的偏差说明(数据按 datasets/ 留档惯例放 datasets/da_flow/,脚本仍在 scripts/)。脚本从仓库外目录重跑验证输出与入库 CSV 逐字节一致,make check 全绿。
ouyangjiahong26
force-pushed
the
issue786
branch
from
October 3, 2026 07:51
4007753 to
f929f6d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联 issue:#786(实现其 Agent Brief 的全部验收)。本 PR 由 omp agent 会话完成,实现过程与验证证据见下文。
这一改动解决的问题是:#784 落地的微分代数原语只有算术与求值能力,没有把它接到轨道动力学上。任务设计里初值偏差的传播长期只有线性 STM 一档,偏差稍大或弧稍长就失真。多项式流把初值六分量偏差作为 DA 变量,让积分器直接在截断 Taylor 多项式算术下运转,各求值时刻的状态输出为偏差的 k 阶截断多项式,一次传播拿到任意阶的偏差映射,经
CompiledDa可在任意偏差处反复快速求值。这是分区判据区间化与后续自动域分裂工单的数值底座。方案上,算术层直接组合 dace-rs,不重写多项式运算;内核落在
e2m2e-dyn新模块polynomial_flow(沿 MEGNO 先例:dyn 收 CR3BP 之上的传播内核,e2m2e-da保持零算法)。积分器取经典固定步长 RK4:单条多项式流本征串行,不做 Rayon 并行;步长自适应与域分裂是有意后置的替代路线,留给后续工单。DA 上下文由调用方经da_init_py初始化,内核只做前置校验并临时切换线程截断阶、返回前恢复,绝不自行 re-init;dace 对超界变量静默给零多项式、对超高截断阶静默钳制,这两类必须在入口显式挡住并报错。DA 版运动方程不设MIN_DISTANCE钳制:多项式求值域不可先验钳制,近碰撞轨迹表现为 DA 域错误上抛,这是与 f64 版有意的口径差异。以上决策连同骨架文献引用记录在 ADR 0059。实际改动按阅读顺序:
e2m2e-da增补max_order/max_variables上下文内省的 re-export;e2m2e-dyn新增polynomial_flow.rs(DA 版 CR3BP 右端项、RK4 步进、事件序列为 t_eval 逐点加区间端、结果含名义状态与多项式映射);e2m2e-integrators注册propagate_cr3bp_da_py绑定,前置条件与参数错误映射为 ValueError、传播期 DA 运算失败映射为 RuntimeError,Rust 扩展 ABI 版本升至 28;e2m2e/integrators.py三处符号清单同步;测试与文档随后。验证分四层。Rust 行为测试
cargo test -p e2m2e-dyn polynomial_flow -- --test-threads=1六项全绿,其中三条是 issue 验收的研究级断言:一阶截断对既有 STM 传播(PD78,rtol=atol=1e-13)逐元素相对误差小于 1e-10;二阶系数对 PD78 重积分的中心差分 Hessian 抽查(x_f 对 δxδx 含 1/2 因子、y_f 对 δxδy 混合项)误差小于 1e-6;Jacobi 常数 DA 展开在初值与终值映射之间的余项(常数项与全部单项式系数)低于 1e-10。Python 行为测试tests/numerical/integrators/bindings/test_propagate_cr3bp_da.py三项(返回契约与零偏差求值、一阶对 STM 筛选级 1e-8、错误路径)与tests/_metaABI 门全绿。第四条验收是研究脚本scripts/da_uniform_radius_curve.py:NRHO 种子半周期弧、16 个固定伪随机方向的二分搜索给出一致半径-阶数曲线,结果 CSV 落在datasets/da_flow/留档,曲线随阶数单调不降,1 阶约 2.6e-6 到 8 阶约 2.1e-3。全量make test-rust串行通过(exit 0),make check静态门禁全绿。继续阅读从
crates/e2m2e-dyn/src/polynomial_flow.rs的模块文档开始,决策依据在docs/adr/0059-da-cr3bp-polynomial-flow.md,术语见CONTEXT.md的新小节微分代数与多项式流。后续工作是把一致半径曲线用于自适应阶数选择与自动域分裂,属 #786 之外的独立工单。Related to #786