Revise the JFM research workflow documentation to clarify project structure, decision-making processes, and tool routing. Remove outdated figures and images that are no longer relevant to the current manuscript. Ensure that the workflow aligns with the latest research objectives and safety protocols.
DynamisLab
Machine Learning meets Numerical Simulation
DynamisLab 是一个面向机器学习与数值模拟交叉研究的框架,当前主线是二维 fluidic pinball(三圆柱)主动流动控制:以 GPU 加速 Lattice Boltzmann Method(LBM)求解流场,用 PPO 等策略驱动圆柱旋转,并用 Symbolic Regression(SR)、Corrected Cross-Covariance Decomposition(CCD)、Observable Identification(OID)和稳态理论分析审查控制规律与证据边界。
项目关注的科学问题是:有限的力/速度观测和三个旋转执行器,能否使下游流动接近无扰动基准(Kármán cloaking/stealth)或指定目标流动(Illusion),以及可复现证据究竟支持到“性能、控制结构、统计共变、稳态关联或机制”的哪一层。仓库不是一个已经证明普适机理的成品库;它同时保存可执行代码、当前受限结论、失败结果和历史路线。
当前状态(2026-08-09)
- 活跃(active):现代 CelerisLab V5 的
drl_pinball训练/评估工作流与保留的 compact policy bundles;Legacy Kármán SR 的受限结论;corrected Kármán CCD 的描述性 phase-coherent co-variation 结果;稳态 pinball 的 NS-first 后续验证路线。 - 受限(bounded):稳态端点、有限时域瞬态和 article publication 已形成可审计证据,但机制、因果性及渐近/全局稳定性未建立;现代 V5 发布可复现训练接口和部分保留模型,不表示所有 case/seed 已按当前代码完整重训并验证;Legacy 标准化 SR 图包仍是 partial Kármán package。
- 历史/负结果(historical/negative):Illusion SR 已失败并关闭为科学解释路线;OID 的 2026-07 双场景研究降级为条件性历史材料;早期 reproduce、CCD/OID 分支和被替代实现均保留在各级
archive/。
必须区分两个不同命题:Illusion PPO 是仓库仍支持的训练与确定性评估能力,包括现代 train_illusion.py、目标及 harmonics 合约;Illusion SR 则不是有效科学结果。长窗口 Legacy 标准化采集显示保留的 SR 动作衰减到接近 physical zero,未显示相对 zero 的有意义收益,因此不得把旧的 200/400-step target similarity 写成 Illusion SR efficacy、target tracking 或跨尺寸泛化。
Kármán CCD 只支持 DRL 相对 constant-control phase template 的描述性共变及稳定 rank-3 subspace;它不是配对反事实、因果效应、响应时间、机制、explained variance,也不证明 CCD 优于 POD。稳态结果同样尚未闭合 Navier–Stokes 机制链;potential-circulation cancellation 已失败,有限时域关联不得升级为因果性或全局稳定性。OID 当前是 claim-free CPU method core,不承载活跃科学结论。
五分钟阅读顺序
先看 src/README.md 获取源码包总索引,再按项目进入权威文档。
- 本页:项目范围、状态和证据规则。
src/drl_pinball/train/README.md:现代 V5 校准、训练与保留产物。src/drl_pinball/eval/README.md:canonical V5 确定性评估及 fail-closed 合约。src/SR_analysis/README.md:Legacy Kármán SR 主张、Illusion SR 负结果和不可变证据链。src/CCD_analysis/README.md:corrected Kármán CCD 当前唯一结果权威。src/steady_pinball_theory/README.md与src/OID_analysis/README.md:稳态受限路线与 OID scientific reset。
继续复现实验前,再读对应 package 的 pipeline、contract、results、handoff 和 archive index;不要只依据旧图、文件名或历史 README 作结论。
包与目录地图
src/drl_pinball/— 主运行包。train/是现代 2000×600 CelerisLab V5 校准/训练;eval/是 V5 评估;legacy_test/在 LegacyCelerisLab 上执行统一的历史角色采集;legacy_env/、legacy_train/和局部archive/服务于兼容与溯源。状态:active + bounded + historical。src/SR_analysis/— 在冻结 PPO 轨迹上发现、拟合并于 Legacy CFD 闭环验证符号控制器。当前只保留 Kármán/cloaking 为 active but bounded;Illusion SR 是 historical/negative,steady 仅作幅值校准背景。src/CCD_analysis/— correctedkarman_re100ROI mean 与 cycle-template CCD 的精简权威入口。状态:completed descriptive/bounded;旧 temporal/phase 与 pre-reset 树为 superseded historical。src/OID_analysis/— weighted snapshot POD、Schlegel LR/LE maps、配对和原子 artifact 校验。状态:active method core, no active science claim;2026-07 两场景研究为条件性历史材料。src/steady_pinball_theory/— rear-symmetric steady rotation 的分析、finite-Re 数值证据与 NS-first 验证。状态:active investigation, bounded evidence;尚无完成的稳态机制证明。src/pv_plot/— ParaView/FFmpeg 轻量 PNG/MP4 渲染接口,不是独立服务或 pip 项目。状态:active utility。src/archive/— 被替代的现代 solver reproduction Track B 等仓库级历史材料;各 package 自己的archive/也属于其 provenance chain。状态:historical, non-authoritative unless an active document explicitly cites it。CelerisLab/— Git submodule,现代 GPU LBM solver。Legacy solver 及其证据依赖按各 package 文档和本地环境解析;不要把两个 solver 的结果静默合并。
两条 solver 证据链
LegacyCelerisLab 是 SR article chain、标准化 Legacy acquisition 以及 corrected CCD 输入所依赖的历史 plant。其冻结模型、normalization、动作顺序、EMA、边界条件、采样时钟和 immutable manifests 共同定义证据;可从 src/drl_pinball/legacy_test/README.md 进入。
现代 CelerisLab V5 是当前 drl_pinball/train 与 drl_pinball/eval 的 2000×600 工作流,使用新的 Simulation API、calibration/target bundle 和 registry。仓库保留了可推理的 compact bundles 与评估基线,但这不等于当前实现已经完成全矩阵重训,也不允许用 V5 replay 自动替代 Legacy article evidence。
两条链的网格、边界实现、动作换算、force/sensor normalization、policy bundle 和指标版本必须分别报告。跨 solver 比较只能作为明确标注的 migration/reproduction 研究,不能混池统计或互相补证。
证据权威层级
由高到低采用以下顺序;若 package README 指定了更严格的内部顺序,以它为准:
- 不可变原始/派生 artifact:成功、失败或 partial run 的 manifest、SHA-256、parent identity、原始 telemetry/field 和完整 metric contract。
- 可执行代码与测试:能够重算或 fail closed 的 loader、analysis、runner 和 contract tests。
- 当前 package 权威文档:active README、RESULTS/claim ledger、METHOD/PIPELINE、checkpoint;后写且明确 supersede 的文档优先。
- 仓库根 README:负责导航和跨包边界,不替代 package 数值权威。
- 历史文档、计划、旧图和 archive narrative:只说明当时意图或演进,不证明 run 完成,也不覆盖后续负结果。
- Working Memory/对话摘要:仅作检索线索,不能替代仓库 artifact。
任何数字若不能解析到 scene、solver、role、realization、window、metric definition、artifact path/hash 和 evidence status,就不应写成权威结论。失败、拒绝、未完成和 partial 记录也是证据,不得覆盖或“清理”掉。
环境与安装
基础包声明 Python >=3.8,但当前 GPU 工作流以 Linux、NVIDIA GPU、CUDA 和 Python 3.10 的 pycuda_3_10 conda 环境为准。分析任务通常在 CPU-only pinball_math 环境运行;具体依赖和命令以相应 package README 为准。ParaView 自带 Python 不能混入 conda Python 的 PYTHONPATH。
git clone --recurse-submodules https://github.com/frank14f/DynamisLab.git
cd DynamisLab
git submodule update --init --recursive
conda create -n pycuda_3_10 python=3.10 -y
conda activate pycuda_3_10
pip install pycuda
pip install -e CelerisLab
pip install -e .
requirements.txt/pyproject.toml 提供 NumPy、SciPy、PyTorch、Gymnasium、Stable-Baselines3、绘图和开发工具的基础声明。GPU CFD 应串行初始化;尤其 Legacy 编译会改写共享 kernel/config 文件,不要因使用不同 GPU 就并发编译不同 case。
真实 quickstart
现代 V5 Kármán target calibration 与单次训练(完整参数见 train/README):
cd src/drl_pinball/train
conda run --no-capture-output -n pycuda_3_10 python -u calibrate.py \
--case kar_re100 --device-id 0 --si 800 \
--config ../../../configs/config_lbm_karman_2000x600.json \
--out-dir calibrations/kar_re100
conda run --no-capture-output -n pycuda_3_10 python -u train_karman.py \
--case-name kar_re100 --device-id 0 --seed 42 \
--config ../../../configs/config_lbm_karman_2000x600.json \
--calibration calibrations/kar_re100/calibration.json \
--total-episodes 500 --symmetry-prob 0
Illusion PPO 使用同一 calibration contract、train_illusion.py 和 ill_* case;这表示能力存在,不表示 Illusion SR 成功。V5 retained policy 评估:
bash src/drl_pinball/eval/run_all.sh --case kar_re100 --seed 45
python3 src/drl_pinball/eval/infer_train.py --validate-all --output-root /tmp/v5-eval
CPU-only 稳态分析/测试示例(更多命令及 bounded 条件见 steady_pinball_theory/README):
PYTHONPATH="$PWD/src" conda run -n pinball_math \
python -m pytest -q src/steady_pinball_theory/tests/test_core.py
绘图接口见 src/pv_plot/README.md;Legacy SR acquisition 和 CCD 不适合作为首次 GPU quickstart,应先读其 immutable-input、serial execution 与 provenance 合约。
2026 年 2–8 月演进
- 2 月:仓库建立,形成 “Machine Learning + numerical simulation” 的广义框架和 fluidic pinball 主问题。
- 6 月:集中整理早期 SR/SINDy、CCD correction-field 与 OID/POD/LR-LE 分析;同时暴露 alignment、FIFO、ROI 和证据组织问题,开始从“有图/有分数”转向 contract-first。
- 7 月上旬:建立参数化现代 V5 Kármán/Illusion 训练、跨 Re/尺寸路线和 solver reproduction;修正 inlet/action/order 等兼容问题。
- 7 月中下旬:冻结 Legacy SR Stage 1→2→3 article chain,加入 dual-clock CCD、OID 和轻量
pv_plot;闭环、hash、no-clobber 与失败保留成为基本要求。 - 8 月初:OID scientific reset 撤回 importance/causality 读法;现代 V5 training release 冻结 compact bundles;steady theory 转向 NS-first;CCD 重做为 corrected ROI mean/cycle-template 权威。
- 8 月 8–9 日:统一 Legacy 长窗口角色采集并完成项目收尾。Kármán SR 保持受限活跃;Illusion SR 因接近 physical-zero 的长窗口结果关闭;steady article publication 保持 BOUNDED;根文档改为状态与证据入口。
Archive 与 provenance 规则
- run/artifact 一经发布即 immutable、no-clobber;新尝试使用新 ID,不覆盖成功、失败或 partial 目录。
- 移动/重命名前先核对 parent path、hash、manifest、symlink、外部 Optane mapping 和下游消费者。可读性不能破坏 identity。
- Git 中没有 bulk payload 不代表证据不存在;外部 archive 必须由 inventory/hash 和 package relocation 文档绑定。仅有本地文件也不等于已经 Git-preserved。
archive/默认不执行、不导入、不作为当前结论;只有 active authority 明确引用时,才按其限定用途使用。- derived plot/report 不自动成为 acceptance evidence;必须回溯其完整输入和生成合约。
- Legacy 与 V5 的 artifact、normalization、target、metric 和 solver version 分库存放、分开引用。
科学写作边界
可以写:指定 solver、case、窗口和 comparator 下的性能;Kármán SR 在已测试 deletion window 内的 term ranking;corrected CCD 的 phase-coherent descriptive co-variation;稳态端点/有限时域的审计结果;OID 数学工具的实现与验证。
不能写:普适 Reynolds/尺寸规律、全局最优或唯一 SR 方程、PPO 本身具有等变性、CCD/DTW lag 给出因果机制或物理延迟、稳态旋转已经闭合动量/能量机制、单 realization 给出不确定性、现代全矩阵已完整重训、OID predictive R² 等价于 importance/control authority,或 Illusion SR 已实现 tracking/generalization。
写作时应并列给出 observation、interpretation 和 mechanism 的层级,并明确 solver、场景、基线、时长、样本数和状态。论文草稿、计划和 acknowledgements 不得反向升级本地证据。
Citation、License 与致谢
若使用本仓库,请引用实际采用的代码版本/commit、对应 artifact/manifest 和底层 solver;建议的软件引用为:
@software{dynamislab2026,
author = {Frank14f},
title = {DynamisLab: Machine Learning for Computational Fluid Dynamics},
year = {2026},
url = {https://github.com/frank14f/DynamisLab}
}
同时按实际使用情况引用 CelerisLab、Stable-Baselines3、Gymnasium、NumPy/SciPy、PyTorch、ParaView 以及各分析方法的原始论文。代码以 MIT License 发布;外部论文、模型、数据和 solver artifact 可能有各自的引用与再分发要求。
感谢 CelerisLab 提供 GPU-accelerated LBM 基础,Stable-Baselines3 与 Gymnasium 提供强化学习接口,PyTorch、NumPy/SciPy、Matplotlib 和 ParaView 支撑训练、分析与可视化。欢迎通过 issue 或 pull request 讨论可复现性、证据合约和明确限定范围的改进。