67 lines
5.0 KiB
Plaintext
67 lines
5.0 KiB
Plaintext
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 的交界所有权方案仍需重新设计与验证。
|