Files
CelerisLab/research/surface_actuation_20261014/report.txt
T

67 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
2026-10-14 — 静止圆局部表面吹吸,实施与验证
A 已完成当前受限增量。新增 SurfaceActuation(angle, half_width, normal_velocity),
由 Simulation.add_body('circle', ..., surface_actuation={...}) 或 cylinder body config
设置。角度为弧度,正速度沿 solid→fluid 法向;采用 (1-s²)² 平滑孔口剖面。
范围:D2Q9 / FP32 / unshifted / double_buffer,圆保持静止。
实现路径与简洁性
- 不改原八列 cut-link 几何、packer 或 geometry SHA。由已有真实 hit−center
得到圆法向及孔口角度;不使用流体节点角度或被截断的 q 重建命中点。
- 独立 Nx2 表面速度 → CurvedBoundaryKernel → 现有 BFL 两分支/halfway fallback。
不占用 omega 控制槽。未开启时不分配两个新 GPU 缓冲;零速度保留原算式路径。
- read_surface_exchange(id) 返回最后一步 wall/aperture 的 (Fx,Fy,Tz)。这是
离散边界动量交换,不是喷嘴总推力,也不输出质量流率;同步/恢复后清零。
- 规格不可变,禁止非静止状态及不支持的模式;无有效孔口/重复写者/非流体接收
节点在同步或恢复写入之前拒绝。同步复制规格,释放/重建相应缓冲。
- 带规格(包括零振幅)checkpoint 保存为 v4,旧 reader 会拒绝,避免静默按
普通固壁恢复;无驱动仍保存 v3。新 loader 接收 v1–v4,严格核对几何和规格,
恢复前拒绝非零 saved vx/vy/omega 或 applied omega。
本次相对开始时工作树:9 个生产文件 +222/−27(净 +195),2 个新测试文件
共 479 行。incremental.diff 仅包含本次变化,不混入历史未提交修改。
baseline.json 记录 HEAD、当时 status、380 个 src/tests/examples 文件哈希;
manifest.json 确认除本次 9 个生产文件之外的 371 个基线文件不变。
未修改 refinement、既有 jet 案例、DynamisLab;未安装依赖、提交或推送。
验证(现有 pycuda_3_10 环境,显式 PYTHONPATH=/home/frank14f/CelerisLab/src)
- 初始相关回归:44 passed,1.60s,exit 0,见 cpu_initial.txt。
- 新 CPU 规格/恢复/内存生命周期测试:31 passed,0.41s,exit 0。
- checkpoint 版本调整后的针对性回归:30 passed,0.63s,exit 0。
这 30 项属于此前 44 项的重测,不重复计入不同测试数。
- 新 GPU 测试:6 passed,19.80s,exit 0。独立 FP64 解析检查正负驱动、
q=.2/.5/.8 和 fallback;真实圆的 incoming populations、质量/动量账本、
力矩及 wall/aperture 分区;零驱动与旧路径逐元素完全相等;实际 checkpoint
恢复后 2 步续算与原运行逐元素完全相等。未声称包括正负零符号的逐字节等同。
- GPU 前置预检:设备 0 UUID GPU-e8853ae7-a302-6a17-bcfa-aa767e9ed20c,
占用 5 MiB、利用率 0、无计算进程;设备 1 未运行任务。
进程组峰值 RSS 397094912 bytes,VRAM 最小空闲 15826 MiB,
RAM 最小空闲 63571013632 bytes,本次相关临时空间采样峰值 3579568 bytes。
无固定 RSS/address-space 上限;按实际余量保留 RAM/VRAM、120s 时间界限、
2GB 本次临时空间界限。采样监测不是 OS 硬资源隔离。原始命令/环境见 gpu_run.json。
- git diff --check 与增量 patch 反向可应用检查通过。
参考依据(算法对照,未复制外部代码)
OpenLB fb62326f260bf0c5ec2666fc5e055c0813ff50a9:
1. ref/OpenLB/src/boundary/defineU2D.hh:74–79 在真实 intersection 上取完整速度。
2. ref/OpenLB/src/boundary/offBoundaryPostProcessors2D.hh:115–127,153–155
的两段速度修正与现有 BFL 方向约定对照;本库方向为 fluid→solid,故负号。
3. 本库沿用自身 rho_wall 约定及 fallback;未直接搬用外部 dynamics 密度约定。
4. 原 apply_bouzidi_link 的 c_i*(f_toward+f_reflected) 动量交换保持不变;
新诊断仅保留逐链接结果后按孔口分区,力矩使用原真实 lever arm。
OpenLB 为 GPL-2.0-or-later,仅作来源对照。
B 独立分析见 ../wall_seam_pulse_20261014/。
三个单位 population 脉冲表明,在该脚本明确限定的候选运输假设下,单改 BB/
coalescence 优先级或排除 solid-source 记录仍产生 ±0.25 权重残差。
prestream 与 postpull BB 两次 fine hop 等价,且目的 slot 唯一写者并不足以
保证每个初始 packet 只有一个全局所有者。没有碰撞、GPU 或生产 refinement
修改,不能称为现存 backend 或外部库的 bug。一次真实执行 exit 0;随后仅
删除固定 AS 上限且未重跑,执行版/当前版哈希和原始输出保持可追踪。
限制与停点
GPU 验证使用 SRT;未开展长时稳定性、空间收敛、真实质量流率标定、性能基准,
也未据此宣称 MRT/TRT 的物理精度或多层网格交界正确。当前只是静止圆的局部
表面吹吸,没有移动物体/喷嘴内部,也没有将该边界接入 refinement。
本步已停止扩展,留待独立审查;B 的交界所有权方案仍需重新设计与验证。