Skip to content
cxs503Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

TensorFVM

Tensor 生态愿景与项目边界

AI 时代 Tensor 生态总纲:Tensor Ecosystem: Vision for the AI Era.

本项目职责与 Agent 开发规则:docs/PROJECT_CHARTER.md。有限体积算法、求解器诊断与本仓库的验证基准属于 TensorFVM;跨领域 Agent 运行基础设施属于 TensorPlatform;科研工作流与科学验收由 TensorPhysics 负责。

系统总览

跨仓库系统架构、模块边界、统一接口与破冰船应用路线见 TensorPhysics 系统总览。

基于 PyTorch 的二维不可压缩有限体积求解器,采用 SIMPLE 压力-速度耦合。支持层流,以及实验性的 Spalart--Allmaras(SA)一方程 RANS 闭合;网格包括笛卡尔交错网格、圆柱 O 型贴体网格、NACA 翼型 C 型网格、三段翼非结构贴体网格及高 Re 平板边界层网格;另含实验性的三维圆柱 投影/SGS 基线。 它不是已经验证的工程 CFD 软件。

面向 Agent 科研工厂的职责

在以 Agent 为科研主体的黑灯科研工厂中,TensorFVM 是一个**可编程、可观测、可验证的有限体积数值实验设备**。它负责有限体积数值内核及自身基准验证,不负责全局科研规划、跨仓库工作流编排,也不能自行判定结果已获得科学验证。

目标接口应支持参数化实验、结构化诊断、可复现输出和基准证据关联。科研工作流可按物理问题和验证要求选择 TensorFVM、TensorLBM 或外部求解器;自主开发的价值应由准确性、可维护性、耦合能力和同等条件下的性能基准证明,而不是预先假定自研总是更优。

科研工厂架构: TensorPhysics 科研工厂架构;系统总览: SYSTEM_OVERVIEW.md。

系统职责与集成边界

TensorFVM 是 Tensor 工程仿真体系中的**有限体积流体求解器**,负责 FVM 数值内核、网格/边界条件处理及自身的基准验证。TensorPhysics 负责跨求解器工作流、执行生命周期、场数据交换与运行追溯;TensorPlatform 负责共性数据、实验、权限和模型生命周期服务。

在破冰船应用中,TensorFVM 可作为流体计算选项,与 TensorLBM 按物理模型、网格、边界条件和验证结果选择使用。跨求解器耦合需另外验证单位、时间推进、载荷映射、守恒及敏感性;本仓库的流体基准结果不自动证明破冰船耦合已验证。

成熟度说明: README 中的实验性模型和案例应按各自基准结果理解。有限体积求解器能力、跨仓库工作流接通情况以及工程应用准确性是不同的验收层级。

安装

需要 Python 3.10 或以上。核心求解器只用 PyTorch;测试、benchmark 报告与网格生成 需要可选依赖:.[dev]``(pytest、numpy、matplotlib、scipy、ruff)、 ``.[benchmark]``(numpy、matplotlib、scipy)与 ``.[mesh]``(Gmsh Python 包)。 未安装 ``.[benchmark] 时 tensorfvm-benchmark 会在导入报告模块处失败。 在仓库根目录运行:

python -m venv .venv
source .venv/bin/activate
python -m pip install -e .

仅使用 CPU 时可先从 PyTorch 官方 CPU 索引安装,避免下载 CUDA 运行库:

python -m pip install "torch>=2.7" --index-url https://download.pytorch.org/whl/cpu
python -m pip install -e .

CUDA 需安装与硬件兼容的 PyTorch,并通过 --device cuda 选择。 计算使用 float64;不包含可微分求解或训练接口。

架构扩展接口见 docs/architecture.rst:二维后端通过 SolverBackend 注册, 网格通过 Mesh2D structural protocol 接入;当前保留既有 SolverConfig 和 SimpleSolver 调用形式。该渐进式改造不代表配置、IO、三维和案例层已经 全部完成平台化拆分。

圆柱绕流案例

运行默认低雷诺数案例:

tensorfvm-cylinder --output results/cylinder

或者:

python -m tensorfvm --mesh-type body-fitted --nx 80 --ny 40 --reynolds 20 --max-iterations 1000

命令行默认采用 body-fitted 贴体 O 型网格,nx 为周向单元数 (至少 8,且为 4 的倍数),ny 为径向层数(至少 4)。 内边界节点位于圆柱上,外边界严格保持原矩形通道并包含四个角点, 周向接缝周期连接。圆柱边界由节点间的直线面片构成,仍需周向加密 控制圆的多边形近似误差,但不再使用阶梯状固体掩码。 原交错网格可通过 --mesh-type cartesian 选择,此时 nx、ny 仍为 x、y 方向的单元数。

NACA 四位数翼型可使用 C 型网格计算,例如 NACA 0012 基准:

python -m tensorfvm --mesh-type c-grid --airfoil-code 0012 --reynolds 100 \
    --nx 160 --ny 40 --domain-length 10 --domain-height 8 \
    --airfoil-x 2 --airfoil-y 4 --output results/naca0012

此模式 nx 为周向单元数(至少 16,且为 4 的倍数),ny 为从翼型 表面到外边界的径向层数。四位数 NACA 外形按解析公式生成,尾缘闭合; 周向接缝从尾缘延伸到下游出口中点并作为内部连接处理。翼型表面无滑移, 径向间距向翼型表面作指数聚集;入口及远场边界指定均匀来流,出口压力为零。 airfoil-x、airfoil-y 指定前缘和弦线位置,Re 以弦长为特征长度;angle-of-attack 以度为单位, 通过旋转来流方向设置攻角。可用 domain-length、domain-height 和 翼型位置控制外边界距离。

默认计算域为 4 × 2,圆柱中心 (1, 1)、半径 0.2,入口速度 1, 密度 1,Re = 20,以圆柱直径作为特征长度, 动力黏度由 mu = rho * U * (2 * radius) / Re 确定。 入口给定均匀水平速度;上下壁面及圆柱无滑移; 出口压力为零,速度预测采用零法向梯度,出口通量参与压力修正。 因此这是有壁面约束的绕流,并非无限域圆柱绕流。

命令行提供网格、Re、迭代上限、容差、设备、CPU 线程数和输出目录选项, 可运行 tensorfvm-cylinder --help 查看。 默认单线程适合小网格;GPU 对小网格未必更快。 返回码 0 表示收敛,2 表示达到迭代上限但已导出结果,1 表示计算或输出失败。 不要将仅满足连续性方程的中间结果视为稳态收敛。

输出

输出目录包含以下文件(再次运行会覆盖同名文件):

  • fields.csv:单元中心 x、y、u、v、p 及 fluid 标记; fluid 为 0 的固体单元不应参与流场后处理。
  • history.json:每次 SIMPLE 迭代的残差记录。
  • summary.json:配置、迭代次数、收敛标记及最终残差。
  • 贴体模式另含 nodes.csv 和 cells.csv:节点坐标与四边形连接关系, 单元编号按 fields.csv 的行顺序排列;接缝两侧节点坐标重合。 fields.csv 使用真实物理单元中心坐标,所有贴体单元均为流体。
  • C 型网格另含 airfoil.csv``(翼型表面面片坐标、邻接单元压力和压力系数 ``Cp); summary.json 包含由离散压力及壁面剪切积分得到的升力、阻力系数。
  • 启用 SA 时另含 turbulence.csv``(单元中心 ``nu_tilde、运动学涡黏度 nu_t),summary.json 记录壁面合力和 SA 残差。
  • 物理时间推进的 URANS 结果另含 forces.json:逐时间步的 drag、 lift 及物理时间,可用于计算升力 RMS 和 Strouhal 数。
  • 贴体 O/C 及平板网格另含 velocity.svg、pressure.svg; 按物理四边形单元绘制速度模和无量纲表压,不需要绘图库。

压力为以出口为参考的表压。结果可以直接用 CSV 工具后处理, 没有额外绘图库依赖,也不使用 pickle 保存结果。

离散与算法

  • 笛卡尔模式使用均匀交错网格:压力在单元中心,u、v 分别在 x、y 面上。
  • 贴体模式使用四边形有限体积几何、物理坐标下的单元中心速度及压力, 通过 Rhie–Chow 面通量耦合避免同位网格的压力棋盘格, 并用最小二乘梯度重构处理非正交修正; 内部面的通量在相邻单元中符号相反,壁面法向通量为零。
  • 有限体积面通量守恒;对流采用一阶迎风,黏性扩散采用中心离散。
  • 依次求解欠松弛动量方程、压力修正方程,修正压力、速度及面通量; 压力修正系数使用欠松弛后的动量对角系数。 笛卡尔压力修正方程采用矩阵无关、对角预条件共轭梯度求解; 贴体非正交压力修正及动量方程采用对角预条件 BiCGSTAB。
  • 圆柱、翼型、平板及通道壁面采用无滑移条件;C 型网格和平板顶部的远场 速度固定为来流值。
  • SA 模式求解原始完全湍流 Spalart--Allmaras 工作变量;湍流黏度反馈到 动量扩散,壁面 nu_tilde=0,入口/远场用 sa_freestream_ratio 指定 nu_tilde / nu。它使用墙面解析而非壁函数。
  • 设置 time_step 可启用一阶隐式 Euler URANS:每一物理时间步执行 inner_iterations 次 SIMPLE 子迭代,速度和 SA 方程保留真实时间惯性; 它不能与 pseudo_time_step 同时使用。
  • 同时监测连续性和动量收敛;SA 模式还监测输运方程残差;达到迭代上限仍明确报告未收敛。

笛卡尔历史中的 continuity 为最大单元散度乘以通道高度、除以入口速度; momentum 为最大稳态离散动量方程缺陷除以对角系数和入口速度。 贴体模式中 continuity 为最大单元净质量通量除以入口质量流量, momentum 为两个速度分量中较大的全域动量缺陷绝对值之和, 除以 max(rho * U² * Lref, mu * U);通道算例 Lref=height, C 型网格 Lref=airfoil_chord。该标准随加密可能更严格。 mass_imbalance 在圆柱模式下为进出口流量差相对入口流量的绝对值; C 型网格为所有外边界净质量流量相对 rho * U * height 的绝对值。 三者均小于配置容差才报告收敛,velocity_change 仅作辅助诊断。 程序接口可设置 pseudo_time_step 添加伪时间阻尼,但稳态动量残差 不包含伪时间项,避免将小步长造成的小变化误判为稳态解。

笛卡尔模式仍通过单元中心圆形掩码表示阶梯状圆柱; 贴体模式的圆柱为内接多边形,细化周向网格也会改变有效圆柱面积。 一阶迎风会产生数值耗散,贴体网格不等于高阶精度或已验证的工程结果。 当前不包含切割单元、转捩、壁函数、可压缩修正、二阶时间格式、DES 或 LES。 SA 仅是实验性、完全湍流的一方程 RANS 闭合。虽然可用 time_step 进行 二维 URANS 并记录圆柱升阻力历史,但 Re=3900 尾迹本质上三维;二维 SA-URANS 可能衰减到对称解或错误预测 Cd/St,不能以增加物理步数替代 DES/LES 或三维验证。 定量使用前应进行网格无关性、充分长采样时间及公开基准验证。 NACA C 型网格的压力系数和升阻力仅作数值实验输出;当前层流翼型基准不等于 SA 高 Re 翼型验证,远场位置、近壁 y+、自由流湍流量和网格分辨率会影响结果。

程序接口与测试

tensorfvm 导出 SolverConfig、SimpleSolver、BodyFittedMesh、 CGridMesh、ThreeElementMesh 和 BodyFittedSolver。程序接口为兼容旧代码, SolverConfig 默认 mesh_type="cartesian";设置 mesh_type="body-fitted"、mesh_type="c-grid"、 mesh_type="flat-plate" 或 mesh_type="three-element" 后 SimpleSolver(config) 自动选择贴体/同位求解器;三段翼模式还需通过 mesh_file 提供带命名物理边界的 Gmsh v2 ASCII 网格。设置 turbulence_model="spalart-allmaras" 可启用实验性的 SA RANS 闭合。 修改配置可以设置几何、网格、物性、欠松弛参数及设备。 SimpleSolver(config).solve() 返回压力、速度、流体掩码、 残差历史及收敛状态;cell_center_velocity() 在两种模式下均提供 单元中心速度。结构化贴体结果的 u、v、x、y 均为 (ny, nx) 数组;Gmsh 三段翼结果以 (1, n_cells) 形式返回单元值, 由 mesh 提供非结构拓扑;笛卡尔结果仍保留交错面速度与一维坐标。 将圆柱半径设置为 0 可计算无障碍通道,此时 Re 的特征长度为通道高度。 无障碍通道仅支持笛卡尔模式;贴体 O 型网格要求正半径且圆柱严格位于通道内部。

解析 benchmark(误差 < 3%)

可运行三档网格的平行板 Poiseuille 验证:

python -m tensorfvm.benchmark --output results/benchmark

独立检查充分发展截面的速度 L2、最大速度归一化 Linf 误差和压力梯度误差, 仅在所有网格收敛且每项误差严格小于 3% 时返回 0,否则返回 2。 输出包含完整数值场、残差、机器可读误差表、速度对标 CSV、 速度/压力 SVG 云图及中文 report.rst。不增加绘图库依赖。 已运行的说明和计算云图见 docs/benchmark/report.rst。 这一验证仅适用于无障碍笛卡尔通道,不代表圆柱、翼型或贴体求解器精度已达标。

圆柱公开基准(DFG 2D-1)

运行 Schäfer–Turek Re=20 圆柱基准,入口采用抛物线速度剖面:

python -m tensorfvm.benchmark_dfg --output results/dfg

算例为 2.2 × 0.41 通道、直径 0.1 的圆柱,入口截面平均速度 0.2; 在三档 O 型网格上对比公开阻力系数 Cd=5.579535;前两档记录网格 收敛趋势,最细 256×96 网格的误差必须严格小于 3% 且 SIMPLE 收敛才通过。 --inlet-profile parabolic 也可用于直接运行 O 网格算例;入口速度参数表示 截面平均速度。输出包括各网格的场、网格、收敛历史、阻力指标、SVG 云图及 汇总报告。

NACA 0012 公开低雷诺数基准

稳态翼型定量验证采用 Di Ilio 等人(2020,arXiv:2006.10487)的二维层流 NACA 0012、Re=1000、攻角 4° 数据。该攻角低于文献给出的 8° 非稳态起始点, 与本项目稳态模型相容;图10/11的矢量曲线读取 Cl≈0.2009636、Cd≈0.1250065, 各有 ±0.0001 图形读取区间,两项最坏端点相对误差分别严格小于3%才通过。 旧估读参考0.205/0.120及其通过结论撤回;图形区间不包含作者计算不确定度:

python -m tensorfvm.benchmark_airfoil --output results/airfoil-benchmark

输出包含完整流场、表面 Cp、升阻力、残差、机器可读验收 JSON 和报告。 匹配的 4° 文献数据没有机器可读 Cp 表;文献给出的 Cp 曲线属于 8° 工况, 已处于非稳态起始点,故本稳态验收不伪造 Cp 的 3% 声明。NASA 高 Re 实验 数据也不能直接作为当前层流模型的合格目标。

30P30N 三段翼公开几何算例(诊断性)

增加 MDA 30P30N 的 slat、main、flap 三段独立轮廓,来自公开的 30P-30N Validation Case (坐标与来源说明见 src/tensorfvm/data/30p30n/README.rst)。运行 Re=5,000,000、 攻角 0° 的二维 SA-RANS 诊断算例:

python -m tensorfvm.benchmark_30p30n --output results/30p30n

需要额外安装 Gmsh 可执行程序来生成带近壁层的三角形/四边形网格;求解器本身 仍只依赖 PyTorch。也可预先生成 Gmsh v2 ASCII 网格,再通过 --mesh-file 复用。 求解器读取 slat、main、flap、inlet、outlet、far-field 物理边界组,并分别积分三段翼的压力与壁面剪切力。结果目录包含非结构网格、 单元场、逐段表面 Cp、残差和机器可读报告。

原 Wolf Dynamics 表的正确数值是 Cl=2.167089、Cd=0.033243;早期派生资料 把两者标签抄反,现已纠正。该参考仅适用于其 Re=5,000,000、攻角 0° 工况, 且读图不确定度与几何匹配仍需检查,不据此自动宣称验证通过。当前旧算例使用矩形远场域和 二维不可压缩 SA 模型,未严格复刻风洞边界,也未包含可压缩效应;返回码 0 仅代表 数值残差收敛。该案例用于三段几何与求解器联调,不能替代网格无关性、y+ 检查及 严格的实验复现。

新增官方 HLPW4 三段翼实验对比

src/tensorfvm/data/30p30n-hlpw4 保存官方 BANC 几何、NASA LTPT 原始 Cp/Cl/Cf 数据、来源及 SHA256。采用名义收起弦长 C=1,Re=9,000,000, 攻角 8.10°,500C 圆形远场;实验 M=0.2,当前求解器为不可压近似。 Gmsh 壁面四边形层和外部三角形网格复用共享 Mesh2D/SIMPLE/SA 模块。 网格检查包含重心投影、壁面非正交角和自由流出口回流。 这是一个尚未达到物理精度要求的开发案例,单个流场计算不构成 overset 流动验证。

安装 .[benchmark,mesh] 后运行:

OMP_NUM_THREADS=1 PYTHONPATH=src python scripts/mesh_hlpw30p30n.py \
    --output results/30p-mesh --level 0 --layer-thickness .001
OMP_NUM_THREADS=1 PYTHONPATH=src python scripts/run_three_element_steady.py \
    --mesh-file results/30p-mesh/mesh.msh --output results/30p-flow \
    --chord 1 --alpha 8.10 --pressure-gradient gauss-skew-corrected
PYTHONPATH=src python scripts/report_hlpw30p30n.py results/30p-flow

报告输出三翼段 Cp 对比、实际几何、压力/速度云图、残差、逐测点误差和 PDF。 未收敛或多值 x 注册不完整的结果保留失败状态,不外推、平均或用实验数据修正方程。 实验存在已知三维效应,官方 BANC 缝翼尾缘也比原实验更厚,均在报告中说明。 --sa-newton 仅供研究:虽有独立自动微分和真实线性残差检查,仍可能趋向非物理 低湍流分支;正式开发计算默认使用正生产项的 Picard SA 更新。

原始 STEP 曲线的几何对照可以运行 --geometry cad --cad-mesh-mode triangles。 15,004 单元的实际 CAD 网格及独立壁节点验证见 docs/verification-30p30n-cad-geometry/;它没有壁面层,不能用于 Re9M 精度验收。 --cad-mesh-mode hybrid 仍为研究路径:真实缝翼凹槽处的层碰撞和 Gmsh 曲线终止限制尚未解决,失败日志单独保留。默认仍使用 polygon。 70 步实际 SIMPLE/SA 与官方实验的 Cp 对比见 docs/verification-30p30n-hlpw4-diagnostic/hlpw-report.md,升力差21.20%,未达标。

高 Re 平板 SA RANS 基准(实验性)

SA 模型以无壁函数、近壁积分方式接入贴体求解器,支持 body-fitted、 c-grid 与专用 flat-plate 网格。当前首先采用 Re_L=100000 的二维、 零压梯度、从前缘即完全湍流的光滑平板验证;高 Re 圆柱另有下述 URANS 诊断,但两者都不替代三维湍流验证:

python -m tensorfvm.benchmark_flat_plate --output results/flat-plate

该算例以 Schlichting 平滑完全湍流平板平均摩擦关联式 Cf = 0.074 Re_L^(-1/5) 为参考,要求平均 Cf 误差严格小于 20%, 第一单元 y+ < 1,并同时收敛连续性、动量、质量平衡和 SA 输运残差。 turbulence.csv 导出 SA 工作变量 nu_tilde 及运动学涡黏度 nu_t。 这是初始模型回归而不是翼型、圆柱的高 Re 工程验证;尚不包括转捩、壁函数、 可压缩/曲率修正,也尚未完成高 Re 翼型公开数据对标。一次实际运行的指标见 平板 SA benchmark 报告。

Re=3900 外流圆柱 SA-URANS 诊断

圆柱 O 网格可设置 outer_boundary="far-field",将上下外边界从通道无滑移 壁面改为均匀来流远场;body_fitted_stretching 用于向圆柱表面集中径向网格。 物理时间推进用隐式 Euler,输出逐步升阻力并从升力频谱计算 Strouhal 数:

python -m tensorfvm.benchmark_cylinder_urans --output results/cylinder-urans

默认工况为 D=1、Re=3900、20D × 12D 外流域和 SA-URANS。报告比较 Cd=1.12、St=0.20 的公开 Re=3900 参考值,并且只有在解析出非零周期 升力、每步内残差满足容差且 Cd/St 达到阈值时才返回 0。若二维一方程 RANS 衰减到对称解,benchmark 会保留 forces.json 等诊断输出并返回 2;这不是 可通过放宽判据掩盖的失败,而是需要更高阶对流、DES/LES 或三维计算的信号。 当前 48×24、15 个对流时间单位的实际诊断结果已如实记录在 Re=3900 圆柱 URANS 报告。

三维圆柱与多 GPU 投影基线

三维代码以独立的 runtime、mesh3d、solver3d 与 benchmark 模块构建, 避免将二维贴体假设隐式复制到三维。Cylinder3DSolver 是可执行的三维笛卡尔 投影/Smagorinsky SGS 基线,展向周期、圆柱固体掩码和中展向可移植输出均已具备。 单 rank 运行方式为:

python -m tensorfvm.benchmark_cylinder3d --output results/cylinder-3d

三维贴体圆柱 O-grid 已作为独立网格层提供:它从二维 O-grid 横截面挤出正体积 六面体,保留圆柱壁面、矩形远场、theta 接缝、曲面面积向量及按 z-slab 分区的 全局节点/单元编号。可导出网格并审计体积和曲面逼近误差:

tensorfvm-mesh-cylinder-3d --output results/cylinder-3d-o-grid \
    --nx 48 --ny 24 --nz 12 --stretching 2.5

当前 Cylinder3DSolver 仍明确只支持 mesh_type="cartesian";请求贴体 模式会 fail-fast,而不会用笛卡尔差分伪装成曲线坐标求解。贴体网格上的守恒动量、 Rhie--Chow 和压力投影是后续数值阶段,故该命令仅生成/验证网格,不能宣称已求解 贴体三维 Re=3900 流动。

多 rank 使用真实 z-slab 分解:每个 rank 只保留本地速度/压力场;展向导数、 SGS 梯度和分布式压力 PCG 算子都通过一层周期 halo 点对点交换跨分区耦合。 压力求解使用矩阵无关、对角预条件 PCG,出口 gauge 与入口/远场 Neumann 值在 独立未知量中处理;每步输出全局初始/最终压力残差、目标、迭代数和收敛标记。 pressure_iterations 是上限,pressure_relative_tolerance 与 pressure_absolute_tolerance 控制停止目标。以两 GPU 启动的示例为:

torchrun --standalone --nproc-per-node=2 -m tensorfvm.benchmark_cylinder3d \
    --device cuda --nx 48 --ny 32 --nz 12 --output results/cylinder-3d-2gpu

CPU 可用相同命令配合 --device cpu,使用 Gloo;CUDA 使用 NCCL 和 LOCAL_RANK 设备绑定。全局 nz 必须不小于 rank 数。输出目录由中展向 所有者写 midspan.csv,rank 0 写全局历史和汇总,因而不会发生并行写冲突。 两 rank Gloo 的自动回归会重组场并与单 rank 比较,且要求两端 PCG 达到残差目标。 3-D smoke case 只在有限值、低 CFL、压力残差收敛和并行数值一致性同时满足时 通过,**不**对 Re=3900 的 Cd、Cl 或 St 声称精度;阶梯圆柱、中心差分和短时间 窗口仍不足以构成 LES/DES 或 GPU 扩展验证。当前 PCG 尚没有多重网格预条件, 故不能将它的可执行性视为大规模性能结论。详见 三维与分布式架构说明.

测试

运行测试:

python -m pip install -e ".[dev]"
python -m pytest -q

测试以 pytest 编写(tests/ 中绝大多数文件是模块级 test_* 函数加 fixture), 因此 python -m pytest 才是完整回归入口;python -m unittest discover -s tests 只能收集到少量 unittest.TestCase 风格文件,看到的“通过”不代表回归全绿。 测试覆盖输入检查、交错网格及边界、贴体几何与周期接缝、连续性和质量平衡、 无障碍通道及小网格圆柱案例,并检查真实坐标、网格导出、命令行状态,以及 三段翼 Gmsh v2 拓扑解析、物理边界分组和几何脚本生成。

许可证

GNU GPL v3,见 LICENSE。

联合平台通道交叉核验

新增 python -m tensorfvm.benchmark_suite_channel,输出三网格 SI 实际场、 MAC 面流量、压力梯度、壁面剪切及质量守恒;默认写入 results/suite-channel, 与其它 benchmark 一致。已发布的三网格证据快照在 docs/suite-channel/,只用于 只读复核;重建必须显式 --output docs/suite-channel,避免默认运行覆盖已提交证据。 scripts/compare_lbm_channel_reference.py 可调用独立 TensorLBM 解析 benchmark; 两套入口/出口不同,仅共同解析验证,尚不构成移动冰流固耦合资格。

当前状态与正确性阻塞

2026-10-09 的源码、原始场和 CPU/CUDA 定向审查见 docs/current-status-2026-10-09.md,保留旧投影失败证据。后续相容面通量 投影与逐步连续性/质量验收见 docs/compatible-projection/README.md; 静态 SI 通道和面投影验证均不能外推 Re=3900 LES 或移动体物理资格。

共性解析 benchmark 与论文报告

新增 tensorfvm-benchmark(或 python -m tensorfvm.verification;需 .[benchmark]),通过共性模块 执行 Poiseuille 固壁通道、Taylor–Green 瞬态涡、空间/时间加密及失败对照。 正式案例速度、压力和适用壁面误差严格小于3%,另设质量/求解/能量门。 --lbm-repo 指向独立 TensorLBM 仓库,开展实际匹配解析对照。 报告提供问题、方法、使用、原场、云图、压力/速度曲线、独立审计、 PDF/HTML/LaTeX和300dpi/矢量图。见 docs/benchmark-workflow.md 和 docs/verification-benchmarks/。失败资料在 docs/verification-benchmarks-failed-n128/;不认证工程破冰。

Additional analytic benchmarks

Genuine three-dimensional ABC/Beltrami decay and advected shear with nonzero mean flow now use the shared verification gates, raw exports and publication figures. See benchmark inventory, additional report. DFG Re20 cylinder evidence has strict drag/lift/pressure gates; the published coarse case remains a physical failure despite residual convergence.

Large conforming meshes and measured CUDA execution

The annular axial-flow reduction now solves full 16,384 / 65,536 / 262,144 unknown sparse matrices with independent geometry/flux audits and strict 3% physical gates. Spalding dimensional traction has CPU/CUDA implementations and a public correlation comparison; coupling to SA wall boundaries remains pending. The 1800-iteration SA flat-plate diagnostic fails strict qualification. See engineering and GPU roadmap and measured CPU/CUDA report.

Full collocated SIMPLE and CPU-first case verification

Conforming curved-channel Navier--Stokes manufactured solutions now exercise both momentum components, computed pressure and nonorthogonal Rhie--Chow fluxes. The optional sparse solver checks its assembled operators and true linear residuals. Steady SA and CPU mesh refinement distinguish convergence from empirical friction accuracy. CPU/CUDA consistency is a supporting check. See workflow and acceptance scope and full SIMPLE report. SIMPLEC, PISO and PIMPLE remain separate future implementations.

Three-dimensional body-fitted cylinder, Re3900

新增真正三维贴体有限体积瞬态入口 scripts/run_body_fitted_cylinder3900.py:周期展向、无滑移圆柱、 WALE、共享面通量和变黏度应力、非正交压力投影及原子检查点。 scripts/report_body_fitted_cylinder3900.py 输出实际网格、压力/速度场、 表面 Cp、力历史和 PDF,并对照原作者 DNS 标量。

参考匹配域的 6,144 控制体、300 步仅为启动稳定性验证。 连续性缺陷 6.11e-9,但最大 y+=16.24,记录仅 0.6D/U; 尚未达到壁面分辨率、长期统计或严格 3% 物理误差门。 docs/verification-cylinder3900-body-fitted-primary/report.md 保留 DNS 来源、原场检查点、全部生产源码及真实差距;GPU 尚未验证。

后续八网格预检及两网格实际启动计算见 docs/verification-cylinder3900-wall-refinement/report.md。 24,576 控制体案例测得最大 y+=2.81,仍未达标; 589,824 控制体仅进行了几何/初始黏度预检,未完成 LES 求解。 共性验收模块独立复核原场守恒,统计模块修复谱分段过短的问题。

原生 TensorFVM 修复进展

最新进展见 完整 Newton 雅可比与三维加密验证。 新增带残差线搜索的原生联合 Newton 参考求解和可选分块 AMG 预条件。 三维 ABC 采用 1,792/6,048/14,336 单元加密,压力误差为 8.83%/4.50%/2.73%; 最细网格速度误差 0.0365%,守恒检查通过。该项制造解门槛已达到,物理 SUBOFF 尚未达标。 当前 Re=40 Kovasznay 的 9,216 单元固定参考压力误差为 2.666%,速度误差为 0.0673%; 四档误差单调下降,数值收敛与守恒检查通过。 新增 混合标量与 SST 输运验证; SST 一步输运已接入新后端。新增 动量—SST 耦合控制, 8 个控制计算和 78 项回归通过,包含 SIMPLEC/Newton 对照、物理压力恢复和低 Re 四边形壁面控制。 新增 非线性标量正值修正,修复了已测零源项负值与部分三角面壁面反例; 三档标量误差为 2.629%/1.163%/0.594%,84 项回归通过。修正引入额外扩散, 较细壁面耦合及实际 SUBOFF 薄层网格内迭代仍停滞,候选原场与失败记录保留。 一般多面体正值性、湍流物理精度、壁面函数和 SUBOFF 仍未验收。

上一阶段见 共享面惯性与压力相容性验证。 统一惯性与体力的对偶加载,补齐惯性牵引和能量账本。无体力三维势流通过三档网格验证, 756 单元速度/压力误差为 0.076%/0.318%;ABC 压力同网格从 55.82% 降至 13.78%, 1,792 单元仍为 8.83%。低黏度 0.001 的不收敛结果完整保留;61 项相关回归测试通过。 SST、壁面函数和原生 SUBOFF 的 Cp/Cd 尚未达标。

上一阶段见 三维压力诊断与梯度跳变稳定化。 新增非负梯度跳变项并同步数值牵引;756 单元三维 ABC 的 Stokes 压力误差从 37.52% 降至 12.76%,NS 从 139.46% 降至 55.82%,仍未通过 3% 门槛。不可压缩速度空间的 能量控制、真实切面图和未通过数据均保留;110 项核心测试通过,旧配点缺陷仍为已知失败。

上一阶段见 无体力 Kovasznay 流与对称面验证。 新增分量边界、正确的对称面压力参考、SIMPLEC 分量索引、外层松弛,以及带当前真实残差 审计的 LU 预条件复用。Re=40 的完整立方体粗网格与平面对称挤出加密结果分别报告;9,216 单元挤出案例的 速度、固定参考压力误差为 0.058%、2.292%。三维偏斜混合网格 ABC 探针的压力仍未达标。 另完成 变黏度与壁面剪切力验证。 最终物理验收按 原生 SUBOFF 开发计划 持续推进, SST、壁面函数和原生 SUBOFF 尚未完成。

前一阶段见 有限 Re 对流与压力—体力平衡修复。 混合后端已接入守恒对流、线性迎风重构和当前非线性残差验收,修复了常体力与线性压力 无法严格平衡的问题。Re=10 制造解在 1,000 单元上的速度、压力相对 L2 误差分别为 0.77%、2.75%(原生联合求解);SIMPLE/SIMPLEC 同方程对照在 27 单元完成。 SST、壁面函数和原生 SUBOFF 尚待后续接入与验收。

混合黏性算子与 Stokes / SIMPLE / SIMPLEC 验证 已接入原生压力速度方程与混合牵引边界。512 单元解析通道的速度、压力、壁面力误差 分别为 1.10%、0.14%、1.48%。这些是原生 Stokes 结果;旧配点黏性缺陷仍保留失败测试, 该阶段尚未接入对流;后续对流进展见上文。SST、Spalding 和 SUBOFF 的原生 Cp/Cd 尚未达标。

OpenFOAM SUBOFF 对照基线

文献设置核查、Foundation 12 复现脚本和实际网格检查见 OpenFOAM SUBOFF 调研与试算报告。 新增 原生 SIMPLEC 小案例验证 及 第一层变薄、尾部加密对照。 该独立基线仍处于诊断阶段;不能据此宣称 TensorFVM 或 SUBOFF 的 Cp/阻力已达到 3% 精度。

Tensor 生态项目协同

本文档说明本求解器与共享平台及其他 Tensor 项目的职责边界、数据交换约定和推荐集成路径。

详见 生态集成说明。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages