Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

autoCFD — 自动化 NACA 翼型 CFD 与气动系数数据库

基于 PyFluent 的二维 NACA 翼型可压缩流仿真与气动系数数据库构建工具。 本仓库附带 Cursor Agent Skills,把已收敛的工程主路径固化下来,便于人或 AI Agent 复现,而无需重新探索失败分支:

| Skill | 用途 |

|-------|------|

| airfoil-cfd-pipeline | 单工况流程:NACA 几何 → 多块拼接结构网格 → Fluent 求解(定常收敛判定 / 波动转 URANS)→ Tecplot/matplotlib 后处理(CL/CD/CM + 流场图) |

| airfoil-aero-database | 批量扫描 (Mach, AoA, Re) → 气动系数数据库;与薄翼/普朗特–格劳厄特/经验模型对比;工况矩阵可问询增减 |

| aero-database | 跨项目气动数据库生命周期契约(工况问询 → 收敛判定 → URANS → 报告刷新) |

每个 skill 含 skill.json、探索轨迹、原子技能目录、错误手册与示例,详见上表链接。

项目结构


autoCFD/
├─ src/
│ ├─ config.py # 默认参数与机器路径(可用环境变量覆盖)
│ ├─ geometry.py # NACA 四位数翼型坐标
│ ├─ mesh.py # 单块结构网格 + .msh 导出
│ ├─ multiblock.py # 钝后缘多块拼接结构网格
│ ├─ solver.py # PyFluent 求解生命周期
│ ├─ numerics.py # CASM + HOTR + CFL=5 等数值设置
│ ├─ convergence.py # 力收敛早停(分块迭代)
│ ├─ urans.py # URANS 时均与波动带
│ ├─ postprocess.py # 气动力、Tecplot 流场、CSV 汇总
│ ├─ aero_database.py # 气动系数库 I/O + 插值 API
│ └─ aero_theory.py # 薄翼 / PG / 经验模型
├─ scripts/
│ ├─ run_simulation.py # 单工况入口
│ ├─ run_with_convergence.py # 力收敛早停求解
│ ├─ run_urans_average.py # URANS 时均 + 波动带
│ ├─ build_aero_database.py # 批量扫掠 → 气动库
│ ├─ compare_aero_models.py # CFD vs 理论/经验报告
│ ├─ export_matrixA.py # 导出完整矩阵表(含波动列)
│ ├─ sync_urans_bands_to_db.py # URANS 波动带同步入库
│ ├─ rerun_one_db_point.py # 重跑单个定常点
│ └─ rerun_one_db_point_urans.py / rerun_urans_queue.py
├─ .cursor/skills/ # Cursor skills(可复用 know-how)
├─ requirements.txt
├─ README.md
└─ LICENSE

环境要求

  • ANSYS Fluent 2023 R1+(设置 FLUENT_EXE)
  • Tecplot 360 EX(可选,仅流场出图,设置 TECPLOT_EXE)
  • Python 3.9+
  • 依赖见 requirements.txt

安装

python -m pip install -r requirements.txt

配置

可执行文件路径集中在 src/config.py,优先读环境变量:

# Windows PowerShell
$env:FLUENT_EXE = "C:\Program Files\ANSYS Inc\v231\fluent\ntbin\win64\fluent.exe"
$env:TECPLOT_EXE = "C:\Program Files\Tecplot\Tecplot 360 EX 2023 R1\bin\tec360.exe"
# Linux / macOS
export FLUENT_EXE=/usr/ansys/v231/fluent/bin/fluent

默认物理设置

| 项目 | 选择 |

|------|------|

| 气体 | 理想气体空气;批量扫掠用常黏度强制 Re(非 Sutherland) |

| T∞ / P∞ | 300 K / 101325 Pa |

| 求解器 | 密度基隐式,定常(波动时升级 URANS) |

| 湍流 | k-ω SST |

| 壁面 | 无滑移、等温 |

| 远场 | 压力远场(Mach, AoA, Tu, μt/μ) |

| 力矩中心 | x = c/4(抬头为正) |

| 网格 | 多块拼接结构网格,钝后缘开缝,保形交界面 |

| 数值(推荐) | CASM + HOTR + CFL=5 + 远场标准初始化;Pseudo Time 关闭 |

快速开始

单工况(skill: airfoil-cfd-pipeline)

接到仿真请求时,Agent 会先询问计算条件 / 网格 / 求解 / 输出;也可回复「默认」直接开算。

# 固定迭代
python scripts/run_simulation.py --mach 0.5 --aoa 2.0 --re 3e6 --iter 5000 --nproc 4
# 力收敛早停(推荐)
python scripts/run_with_convergence.py `
 --mach 0.3 --aoa 2.0 --re 3e6 --nproc 4 --case naca0012_m03_a2_conv `
 --window 300 --res-tol 1e-5 --dcl 1e-4 --dcd 2e-4 --dcm 2e-4 `
 --min-iter 2000 --max-iter 10000 --chunk 200 --warmup 600

| 参数 | 默认 | 说明 |

|------|------|------|

| --mach | 0.5 | 来流马赫数 |

| --aoa | 2.0 | 攻角 [deg] |

| --re | 3e6 | 弦长雷诺数 |

| --iter | 5000 | 定常默认迭代步数 |

| --ni / --nj | 201 / 81 | 流向 / 法向网格点数 |

| --dy1 | 5e-6 | 第一层网格法向高度 [m] |

| --case | naca0012 | 算例名 / 输出子目录 |

| --airfoil | 0012 | NACA 四位数 |

| --nproc | 4 | CPU 核数(分区失败可回退 1) |

若定常力/力矩波动幅值 amp% > 5%(或不收敛),升级 URANS(scheme B:dt = 0.005 c/U),取最后 3 个稳定周期时均并标注波动区间:

python scripts/run_urans_average.py `
 --mach 0.5 --aoa 10 --re 3e6 --nproc 4 `
 --dt-factor 0.005 --inner-iter 25 --max-steps 10000 --avg-periods 3

构建气动系数数据库(skill: airfoil-aero-database)

接到建库任务时,会先列出拟算工况(Matrix A,约 37 点)供增减,并询问可并行提交多少个工况(默认 4 个、每案 4 核);也可回复「默认」开算。

# 预览工况矩阵(不启动 Fluent)
python scripts/build_aero_database.py --dry-run
# 批量扫掠(推荐力收敛早停)
python scripts/build_aero_database.py --converged --nproc 4 --n-parallel 4 `
 --window 300 --res-tol 1e-5 --dcl 1e-4 --dcd 2e-4 --dcm 2e-4 `
 --min-iter 2000 --max-iter 10000 --chunk 200 --warmup 600
# URANS 可疑点队列(如 M0.5 α=10/12/14;M0.7 α=6/8/10)
python scripts/rerun_urans_queue.py --dt-factor 0.005
python scripts/sync_urans_bands_to_db.py
# 刷新对比报告与图片
python scripts/export_matrixA.py
python scripts/compare_aero_models.py

输出目录 outputs/aero_database/<airfoil>/:

  • cfd_database.csv — CL/CD/CM/L/D 及波动带、source(全部来自 Fluent 力报告)
  • cfd_database.meta.json — 包络元数据
  • comparison_report.md — CFD vs 理论/经验(含 MAPE 与图)
  • figures/ — 各 Ma 极曲线、马赫/雷诺扫描、相对误差图(α≈0 不画;高 α/跨声速标「理论参考区外」)
  • matrixA_results.csv — 完整矩阵表(含波动列) Python 查询示例:
from pathlib import Path
from src.aero_database import AeroDatabase
db = AeroDatabase.from_csv(Path("outputs/aero_database/naca0012/cfd_database.csv"))
CL = db.query(0.6, 4.0, "CL") # 在 (Mach, AoA) 上线性 ND 插值

工作流程

  1. 几何 — NACA 四位数坐标(余弦分布,开缝钝后缘)

  2. 网格 — 多块拼接结构网格 → Fluent ASCII .msh(airfoil / farfield)

  3. 设置 — 密度基 / SST / 理想气体 / 远场 BC / 参考点 c/4

  4. 求解 — CASM+HOTR+CFL=5 + 远场标准初始化;固定迭代或力收敛早停

  5. 波动门控 — amp%>5% 或不收敛 → URANS 时均 + 波动带(禁止用 last-iter 快照入库)

  6. 后处理 — 保存 cas/dat;Tecplot 流场;matplotlib Cp;写 summary.csv

  7. 数据库(批量) — 共享多块拼接结构网格;并行计划默认 4 ×ばつ4 核(--n-parallel / --nproc);常黏度强制 Re;每案 checkpoint

  8. 对比 — 同节点评估薄翼/PG/经验模型;生成图与 Markdown 报告

示例结果

单工况(M=0.5,α=2°,Re=3e6,多块,5000 iter):CL≈0.24,CD≈0.010,CM≈-0.002,L/D≈25 量级。 Matrix A 数据库(NACA0012,Re=3e6,37 点;部分高 α/跨声速点为 URANS)见 outputs/aero_database/naca0012/comparison_report.md

局限

  • 代数多块网格(非椭圆光顺);钝后缘靠开缝实现

  • 默认亚声速(M≤0.85);矩阵 |α|≤16°

  • 默认网格上 5000 iter 残差未必到 1e-6;边际点(如 M=0.6 α=2)可能需 6000 iter

  • Tecplot 出图需许可证;气动库批量构建本身只需 Fluent

  • 库内 CL/CD/CM 全部来自 Fluent 力报告,不做理论填补;理论/经验模型仅作对比基线

验证清单(简版)

完整清单见各 skill 的 SKILL.md

  • outputs/<case>/*.msh 存在,C/W 块无负体积单元
  • Fluent 显示 Calculation finished(非 AMG 发散)
  • summary.csv 中 CL/CD/CM 有限
  • 健全性:M=0.5、α=2°、Re=3e6 时 CL 约在 0.15–0.25
  • 数据库:无长期 status=failed;无 CD≤0;无「定常 last-iter 且 amp%>5%」仍标 ok

Cursor Skills

.cursor/skills/ 中的技能固化了主路径、原子契约、错误手册与示例,供人或 Agent 复用。注册表见 .cursor/skills/skill-pool/index.json

许可证

MIT License

贡献

欢迎 PR。请注意:

  • 代码变更时同步更新 skill(并 bump skill.jsonversion)
  • 勿提交 outputs/.cas/.dat(已在 .gitignore)
  • 机器路径用环境变量,勿硬编码进仓库

引用


@software{autoCFD,
 title = {autoCFD: 自动化 NACA 翼型 CFD 与气动系数数据库},
 author = {autoCFD contributors},
 year = {2026},
 url = {https://github.com/Shao-hansen/AutoAeroModelForAirfoil}
}

About

自动化 NACA 翼型 CFD 流程与气动系数数据库:多块钝后缘网格、Fluent RANS/URANS、工况矩阵扫掠,以及 Cursor Skills(问询/收敛/波动升级/对比报告)。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /