mcpField
F
fluid-dynamics-workflow

fluid-dynamics-workflow

github.com/soljourner其他9553 次安装51 周前更新
代码仓库

关于 fluid-dynamics-workflow

面向 CFD 与流体力学问题的系统化分析技能,覆盖问题定义、模型与边界条件选择、数值求解及结果验证。适合需要规划完整流体分析流程的工程师和研究人员。

主要功能

  1. 01定义计算域与流动状态
  2. 02选择控制方程和湍流模型
  3. 03设置边界条件与网格
  4. 04制定求解和收敛检查
  5. 05后处理并验证结果

适用场景

  1. 01规划外流或管道流 CFD 分析
  2. 02评估湍流模型与边界条件
  3. 03检查网格和时间步独立性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/soljourner/claude-engineering-skills --skill fluid-dynamics-workflow

安装后在 Claude Code 中输入/fluid-dynamics-workflow确认已加载。

附带文件equations-reference.mdworkflow-examples.md

详细介绍

流体动力学分析工作流

针对计算流体动力学(CFD)和解析流体力学问题的全面、系统化方法。

概述

此工作流将引导你完成完整的流体动力学分析,从初始问题建模到验证。它确保对控制物理过程进行严谨处理、合理选择模型,并正确验证结果。

完整分析工作流

1. 问题定义
1.1 几何与计算域
  • 物理域:

    • 定义计算域范围
    • 识别关键几何特征(边界层、分离区、回流区)
    • 确定对称面以降低计算成本
    • 建立坐标系(笛卡尔、柱坐标、球坐标)
    • 评估是否需要进行 2D 或 3D 分析
  • 计算域尺寸考量:

    • 入口:上游 5-10 个特征长度
    • 出口:下游 20-30 个特征长度
    • 侧边界:距物体 5-10 个特征长度
    • 验证不存在人工约束效应
1.2 流动状态表征

雷诺数分析:

Re = ρVL/μ = VL/ν

Where:
- ρ: density
- V: characteristic velocity
- L: characteristic length
- μ: dynamic viscosity
- ν: kinematic viscosity

流动状态分类:

  • Re < 2300:层流(管道)
  • 2300 < Re < 4000:过渡流
  • Re > 4000:湍流(管道)
  • 外部流动:
    • Re < 5×10⁵:层流边界层
    • Re > 5×10⁵:湍流边界层

马赫数分析:

Ma = V/c

Where:
- V: flow velocity
- c: speed of sound = √(γRT)

可压缩性分类:

  • Ma < 0.3:不可压缩(ρ = 常数)
  • 0.3 < Ma < 0.8:亚声速可压缩流
  • 0.8 < Ma < 1.2:跨声速流
  • 1.2 < Ma < 5.0:超声速流
  • Ma > 5.0:高超声速流

弗劳德数(自由液面流动):

Fr = V/√(gL)
  • Fr < 1:缓流
  • Fr = 1:临界流
  • Fr > 1:急流
1.3 其他无量纲数

斯特劳哈尔数(非定常流动):

St = fL/V
  • 表征振荡流动机制
  • 涡脱落:圆柱体的 St ≈ 0.2

普朗特数(传热):

Pr = ν/α = μcp/k

格拉晓夫数(自然对流):

Gr = gβΔTL³/ν²
2. 控制方程
2.1 连续性方程

不可压缩流动:

∇·V = 0

可压缩流动:

∂ρ/∂t + ∇·(ρV) = 0
2.2 动量方程(纳维-斯托克斯方程)

不可压缩牛顿流体:

ρ(∂V/∂t + V·∇V) = -∇p + μ∇²V + ρg

分量形式(笛卡尔坐标):

ρ(∂u/∂t + u∂u/∂x + v∂u/∂y + w∂u/∂z) = -∂p/∂x + μ(∂²u/∂x² + ∂²u/∂y² + ∂²u/∂z²) + ρgₓ
ρ(∂v/∂t + u∂v/∂x + v∂v/∂y + w∂v/∂z) = -∂p/∂y + μ(∂²v/∂x² + ∂²v/∂y² + ∂²v/∂z²) + ρgᵧ
ρ(∂w/∂t + u∂w/∂x + v∂w/∂y + w∂w/∂z) = -∂p/∂z + μ(∂²w/∂x² + ∂²w/∂y² + ∂²w/∂z²) + ρgᵣ

可压缩形式:

ρ(∂V/∂t + V·∇V) = -∇p + ∇·τ + ρg

其中,应力张量为:

τᵢⱼ = μ(∂uᵢ/∂xⱼ + ∂uⱼ/∂xᵢ) + λ(∇·V)δᵢⱼ
2.3 能量方程

适用于可压缩流动:

ρcp(∂T/∂t + V·∇T) = ∇·(k∇T) + Φ + Q

其中:

  • Φ:黏性耗散
  • Q:热源项

总能量形式:

∂(ρE)/∂t + ∇·(ρEV) = -∇·(pV) + ∇·(k∇T) + ∇·(τ·V)
2.4 湍流建模

雷诺平均纳维-斯托克斯方程(RANS): 分解变量:u = ū + u'

雷诺应力张量:

τᵢⱼᴿᴬᴺˢ = -ρu'ᵢu'ⱼ

闭合模型决策树:

START
  │
  ├─ Simple geometry, equilibrium turbulence?
  │  └─ YES → k-ε Standard
  │
  ├─ Wall-bounded flow, adverse pressure gradient?
  │  └─ YES → k-ω SST (Menter)
  │
  ├─ Separated flow, vortex shedding?
  │  └─ YES → k-ω SST or Transition SST
  │
  ├─ Swirling flow, rotation?
  │  └─ YES → Reynolds Stress Model (RSM)
  │
  ├─ High accuracy needed, large-scale unsteadiness?
  │  └─ YES → Large Eddy Simulation (LES)
  │
  └─ Research, turbulence structure critical?
     └─ YES → Direct Numerical Simulation (DNS)

模型对比:

模型优势局限性最佳适用场景
k-ε Standard稳健,经过充分验证近壁面和分离流动预测较差工业流动、简单几何形状
k-ε Realizable对分离流动的预测更好仍需要壁面函数复杂几何形状、分离流动
k-ω Standard近壁面表现良好对自由来流敏感壁面边界流动
k-ω SST综合性能出色计算成本较高空气动力学、不利压力梯度
Spalart-Allmaras单方程,效率高针对航空航天领域校准翼型、外部空气动力学
RSM可捕捉各向异性需解 5-7 个方程,较复杂旋流、旋转流动
LES可解析大涡计算成本很高非定常流动、声学
DNS无建模误差计算成本极高基础研究,Re < 10⁴
3. 边界条件
3.1 入口边界条件

速度入口:

  • 指定:u、v、w(速度分量)
  • 对于湍流,还需指定:
    • 湍流强度:I = u'/U(通常为 1-10%)
    • 湍流长度尺度:l = 0.07L
    • 或直接指定:k、ε(或 ω)

计算湍流量:

k = 3/2(UI)²
ε = C_μ^(3/4) k^(3/2) / l
ω = k^(1/2) / (C_μ^(1/4) l)

其中 C_μ = 0.09

压力入口:

  • 指定:总压 p₀
  • 流动方向
  • 温度(可压缩流)

质量流量入口:

  • 指定:ṁ = ρVA
  • 流动方向
3.2 出口边界条件

压力出口:

  • 指定静压
  • 所有其他量采用零梯度:∂φ/∂n = 0
  • 最常用且稳定

流出边界:

  • 假设流动已充分发展
  • ∂u/∂x = 0(所有变量)
  • 出口位于下游较远处时使用

出口距离要求:

  • 下游至少 10-15 个水力直径
  • 对于分离流:20-30 个直径
3.3 壁面边界条件

无滑移壁面(标准):

  • 壁面处 V = 0
  • 指定温度(等温)或热通量

滑移壁面:

  • 切向速度 ≠ 0
  • 法向速度 = 0
  • V·n = 0,∂V_tangential/∂n = 0

壁面函数方法: 对于湍流,当满足以下条件时使用壁面函数:

  • 30 < y⁺ < 300
y⁺ = ρu_τy/μ
u_τ = √(τ_w/ρ)  [friction velocity]

近壁分辨率要求:

方法首层网格 y⁺棱柱层总数增长率
壁面函数30-3003-51.2-1.3
低雷诺数模型y⁺ < 110-201.1-1.2
增强壁面处理y⁺ < 58-151.15-1.25

移动壁面:

  • 指定壁面速度
  • 应用:旋转机械、输送带
3.4 对称边界与周期边界

对称边界:

  • 法向速度 = 0
  • 其他量采用零梯度
  • ∂φ/∂n = 0

周期边界:

  • 平移:φ(x₁) = φ(x₂)
  • 旋转:用于旋转几何
  • 用于缩小计算域
3.5 自由液面(多相流)

流体体积法(VOF):

  • 使用体积分数追踪界面
  • α = 1(相 1),α = 0(相 2)

水平集方法:

  • 使用有符号距离函数
  • 追踪清晰界面
4. 离散化
4.1 网格要求

网格类型:

网格类型优点缺点最适用场景
结构化网格(六面体)高效、准确复杂几何难以处理简单计算域、通道
非结构化网格(四面体)几何适应性强所需网格单元更多复杂 CAD 几何
混合网格(棱柱 + 四面体)兼具两者优点需要仔细设置大多数 CFD 应用
多面体网格网格单元更少、稳定需要专用网格划分器工业 CFD

网格质量指标:

  • 长宽比 < 100(最好 < 20)
  • 偏斜度 < 0.85(最好 < 0.5)
  • 正交性 > 0.15(最好 > 0.7)

网格无关性研究:

Refinement ratio: r = 1.5 to 2.0
Test at least 3 mesh levels:
- Coarse: N cells
- Medium: r²N cells
- Fine: r⁴N cells

Check convergence of key outputs:
- Forces (drag, lift)
- Pressures at critical points
- Flow rates

Richardson 外推:

f_exact ≈ f_fine + (f_fine - f_coarse)/(r^p - 1)

其中 p 为精度阶数

4.2 湍流的 Y⁺ 值

关键 y⁺ 范围:

Viscous sublayer:     y⁺ < 5
Buffer layer:         5 < y⁺ < 30
Log-layer:            30 < y⁺ < 300
Outer layer:          y⁺ > 300

首层网格高度计算:

y = y⁺μ/(ρu_τ)

For flat plate:
u_τ ≈ U∞√(C_f/2)
C_f = 0.058Re_L^(-0.2)  [turbulent]

估算所需 y⁺ 对应的 y:

Example: Airfoil at Re = 1×10⁶, V = 50 m/s
1. Estimate C_f ≈ 0.0037
2. u_τ = 50√(0.0037/2) = 2.15 m/s
3. For y⁺ = 1: y = 1×1.5e-5/(1.225×2.15) ≈ 5.7e-6 m

First cell: 5.7 μm
4.3 时间步长选择(非定常)

CFL 条件(Courant-Friedrichs-Lewy):

CFL = VΔt/Δx ≤ CFL_max

For explicit schemes: CFL < 1
For implicit schemes: CFL < 10-20 (stability)
                      CFL < 1-5 (accuracy)

时间步长计算:

Δt = CFL × Δx_min / V_max

非定常特征的时间分辨率:

  • 捕捉涡脱落:Δt < T/100(T = 脱落周期)
  • 瞬态分析:Δt < τ/50(τ = 特征时间)

双时间步进:

  • 物理时间步长:用于保证精度
  • 内迭代:用于保证收敛
5. 求解策略
5.1 求解器选择

压力-速度耦合:

算法类型优势使用场景
SIMPLE分离式节省内存稳态
SIMPLEC分离式收敛更快稳态/瞬态
PISO分离式瞬态精度高高度非定常流动
Coupled全耦合稳健、快速可压缩流、复杂流动

动量离散:

  • 一阶迎风:稳定但数值耗散大
  • 二阶迎风:精度良好
  • QUICK:精度更高、有界
  • 中心差分:数值耗散低,但需要稳定性

压力插值:

  • Standard:适用于大多数情况
  • PRESTO:适用于旋流、高速旋转流动
  • Body-force-weighted:适用于浮力驱动流动
5.2 收敛标准

残差监测:

Continuity:   < 1e-4
Velocity:     < 1e-4
Turbulence:   < 1e-4
Energy:       < 1e-6

其他收敛检查:

  • 监测力系数(C_L、C_D)
  • 跟踪质量流量平衡(流入 = 流出)
  • 检查积分量
  • 检查流场可视化结果是否合理

收敛图应显示:

  • 残差平滑下降
  • 渐近趋近稳态值
  • 所有残差同步下降
5.3 欠松弛因子

用途:稳定求解过程,防止发散

典型值(SIMPLE):

Pressure:         0.3
Momentum:         0.7
Turbulence (k):   0.8
Turbulence (ε,ω): 0.8
Energy:           0.9

调整策略:

  • 对不稳定问题调低因子
  • 随着求解过程推进逐步增大
  • Coupled 求解器可使用更高的因子
6. 后处理与验证
6.1 流场可视化

必要的可视化内容:

  1. 速度云图/矢量图:

    • 识别回流区
    • 检查边界层发展情况
    • 验证流动方向
  2. 压力分布:

    • 表面压力系数:C_p = (p - p_∞)/(½ρV²)
    • 识别压力梯度
    • 检查是否存在非物理振荡
  3. 流线/迹线:

    • 可视化流动模式
    • 识别流动分离/再附
    • 检查出口处是否存在反向流动
  4. 涡量:

    • ω = ∇ × V
    • 识别涡结构
    • 可视化湍流
  5. 壁面剪切应力:

    • τ_w = μ(∂u/∂y)_wall
    • 分离:τ_w = 0
    • 摩擦系数:C_f = τ_w/(½ρV²)
  6. 湍流量:

    • 湍动能(k)
    • 湍流黏度比(μ_t/μ)
    • y⁺ 分布
6.2 力的计算

压力力和黏性力:

F_pressure = ∫∫ p·n dA
F_viscous = ∫∫ τ·n dA
F_total = F_pressure + F_viscous

无量纲系数:

C_D = D/(½ρV²A)    [Drag coefficient]
C_L = L/(½ρV²A)    [Lift coefficient]
C_M = M/(½ρV²AL)   [Moment coefficient]

压力系数:

C_p = (p - p_∞)/(½ρV²)

摩擦系数:

C_f = τ_w/(½ρV²)
6.3 验证与确认

确认(正确求解方程):

  1. 网格收敛指数(GCI):
GCI = F_s |ε|/(r^p - 1)

Where:
- F_s = safety factor (1.25 for 3+ grids)
- ε = (f_fine - f_coarse)/f_fine
- r = refinement ratio
- p = order of accuracy
  1. 时间收敛性:
  • 使用 Δt/2 重复计算
  • 验证结果与时间步长无关
  1. 迭代收敛性:
  • 确保残差充分下降
  • 监测求解变量

验证(求解正确的方程):

  1. 解析解:

    • 泊肃叶流(通道)
    • 库埃特流
    • Blasius 边界层
    • 圆柱绕流势流
  2. 实验数据:

    • 风洞测量
    • PIV(粒子图像测速)
    • 热线风速测量
  3. 基准算例:

    • 顶盖驱动方腔流
    • 圆柱绕流
    • 后向台阶流
    • Ahmed 车体

验证指标:

Mean Absolute Error:
MAE = (1/N)Σ|φ_CFD - φ_exp|

Root Mean Square Error:
RMSE = √[(1/N)Σ(φ_CFD - φ_exp)²]

Coefficient of Determination:
R² = 1 - Σ(φ_exp - φ_CFD)²/Σ(φ_exp - φ̄_exp)²

决策树

流动状态决策树
START: Define Problem
  │
  ├─ Calculate Re = ρVL/μ
  │
  ├─ Re < 1 (Stokes flow)
  │  └─ Use: Creeping flow equations
  │
  ├─ 1 < Re < 100 (Low Re)
  │  └─ Use: Laminar NS, full domain
  │
  ├─ Re < 2300 (Internal)
  │  └─ Use: Laminar NS
  │
  ├─ 2300 < Re < 4000 (Transitional)
  │  └─ Use: Transition models (γ-Re_θ)
  │
  ├─ Re > 4000 (Turbulent)
  │  ├─ Calculate Ma = V/c
  │  │
  │  ├─ Ma < 0.3
  │  │  └─ Incompressible RANS
  │  │
  │  ├─ 0.3 < Ma < 1
  │  │  └─ Compressible RANS
  │  │
  │  └─ Ma > 1
  │     └─ Compressible + shock capturing
  │
  └─ Unsteady features?
     ├─ YES → Calculate St = fL/V
     │  ├─ St > 0.1 → Use URANS or LES
     │  └─ St < 0.1 → RANS may suffice
     └─ NO → RANS sufficient
湍流模型选择树
START: Turbulent Flow Confirmed
  │
  ├─ Computational Budget?
  │
  ├─ VERY HIGH (Research)
  │  └─ Use DNS (if Re allows)
  │
  ├─ HIGH
  │  ├─ Massively separated?
  │  │  └─ YES → LES (WALE, Smagorinsky)
  │  │
  │  └─ NO → URANS with fine mesh
  │
  └─ MODERATE (Engineering)
     │
     ├─ Flow Type?
     │
     ├─ EXTERNAL (Aero/Hydro)
     │  ├─ Pressure gradient?
     │  │  ├─ ADVERSE → k-ω SST
     │  │  └─ FAVORABLE → Spalart-Allmaras
     │  │
     │  └─ Separation likely? → k-ω SST
     │
     ├─ INTERNAL (Pipes, Channels)
     │  ├─ Simple geometry → k-ε Standard
     │  ├─ Complex, bends → k-ε Realizable
     │  └─ Heat transfer → k-ω SST
     │
     ├─ ROTATING/SWIRLING
     │  └─ RSM (Reynolds Stress Model)
     │
     └─ TRANSITIONAL
        └─ γ-Re_θ Transition SST
网格策略决策树
START: Domain Defined
  │
  ├─ Geometry Complexity?
  │
  ├─ SIMPLE (Rectangular, cylindrical)
  │  └─ Structured hexahedral
  │     └─ O-grid for cylinders
  │
  ├─ MODERATE
  │  └─ Hybrid mesh
  │     ├─ Prism layers at walls
  │     └─ Hex/tet in core
  │
  └─ COMPLEX (CAD geometry)
     └─ Unstructured
        ├─ Prism layers at walls (always)
        └─ Tet or poly in core

  │
  ├─ Boundary Layer Resolution?
  │
  ├─ WALL FUNCTIONS (y⁺ = 30-300)
  │  ├─ First cell: y⁺ ≈ 50
  │  ├─ Prism layers: 3-5
  │  └─ Growth rate: 1.2-1.3
  │
  └─ NEAR-WALL RESOLUTION (y⁺ < 1)
     ├─ First cell: y⁺ < 1
     ├─ Prism layers: 10-20
     ├─ Growth rate: 1.1-1.2
     └─ At least 10 cells in boundary layer

  │
  └─ Refinement Zones?
     ├─ Wake regions: 2-3× density
     ├─ Shear layers: graded refinement
     ├─ Recirculation: fine mesh
     └─ Free stream: coarse OK

常见问题与解决方案

问题:求解不收敛

诊断:

  • 残差振荡
  • 力系数波动
  • 求解发散

解决方案:

  1. 降低欠松弛因子
  2. 改善网格质量(长宽比、偏斜度)
  3. 初始阶段使用一阶格式
  4. 检查边界条件是否一致
  5. 减小时间步长(非定常流动)
  6. 切换到耦合求解器
问题:结果不符合物理规律

诊断:

  • 绝对压力为负
  • 入口处出现反向流动
  • 质量不平衡 > 1%
  • 分离情况不符合实际

解决方案:

  1. 核实边界条件
  2. 检查材料属性
  3. 确保参考值设置正确
  4. 核实坐标系
  5. 检查网格错误
  6. 检查湍流模型的选择
问题:y⁺ 值过高

诊断:

  • 使用低雷诺数模型时,y⁺ > 5
  • 使用壁面函数时,y⁺ < 30

解决方案:

  1. 重新计算首层网格高度
  2. 调整膨胀参数
  3. 使用增强型壁面处理
  4. 在壁面函数方法和壁面解析方法之间切换

最佳实践总结

  1. 始终从问题的物理规律入手:

    • 计算无量纲数
    • 确定主导现象
    • 选择合适的简化方法
  2. 系统地构建网格:

    • 从粗网格开始,逐步细化
    • 优先保证边界层分辨率
    • 进行网格无关性研究
  3. 从简单开始,逐步增加复杂度:

    • 从稳态 RANS 开始
    • 使用一阶迎风格式以保证稳定性
    • 逐步采用高阶格式
    • 如有需要,加入非定常效应
  4. 监控所有指标:

    • 残差
    • 力系数
    • 质量流量平衡
    • y⁺ 分布
  5. 严格验证:

    • 与实验结果或理论进行比较
    • 检查物理可实现性
    • 进行不确定性量化
    • 记录假设和局限性
  6. 报告不确定性:

    • 网格收敛指数
    • 与验证数据的比较
    • 对边界条件的敏感性
    • 模型形式不确定性

参考资料和资源

基础读物:

  • Anderson 的《Computational Fluid Dynamics》
  • Versteeg 和 Malalasekera 的《An Introduction to Computational Fluid Dynamics》
  • Pope 的《Turbulent Flows》

验证数据库:

  • NASA 湍流建模资源
  • ERCOFTAC 数据库
  • NPARC 联盟验证档案

最佳实践指南:

  • AIAA《CFD 验证与确认指南》
  • ASME V&V 标准
  • ERCOFTAC 最佳实践指南

评论

支持 Markdown