PINNs在计算流体力学中的应用

物理信息神经网络(PINNs)在计算流体力学(CFD)领域展现了独特的优势:无需生成大规模训练数据集,仅通过物理方程作为约束即可进行流场求解。本章详细介绍PINNs在流体模拟中的理论基础、方法论和实践技巧。

1. Navier-Stokes方程的PINNs formulation

1.1 不可压缩Navier-Stokes方程

对于二维不可压缩流动,Navier-Stokes方程为:

其中 是速度场, 是压力, 是密度, 是运动粘度, 是外力。

PINNs通过神经网络逼近解:

1.2 损失函数构造

总损失函数由多部分组成:

NS残差损失

其中 是动量方程残差, 是不可压缩性约束(散度损失)。

初始条件损失

边界条件损失

1.3 压力场处理技巧

压力没有时间导数项,梯度的反向传播可能不稳定。常用方法:

  1. 直接预测压力:将压力作为额外输出
  2. Poisson方程求解:从速度场导出压力
  3. 压力投影法:与传统的Projection方法结合
class PINN_CFD(nn.Module):
    def __init__(self, layers, nu):
        super().__init__()
        self.nu = nu
        # 速度网络
        self.u_net = NeuralNetwork(layers[:-1] + [1])
        self.v_net = NeuralNetwork(layers[:-1] + [1])
        # 压力网络
        self.p_net = NeuralNetwork(layers[:-1] + [1])
    
    def forward(self, t, x, y):
        # 预测速度场
        u = self.u_net(torch.cat([t, x, y], dim=1))
        v = self.v_net(torch.cat([t, x, y], dim=1))
        p = self.p_net(torch.cat([t, x, y], dim=1))
        return u, v, p
    
    def compute_residuals(self, t, x, y):
        u, v, p = self.forward(t, x, y)
        
        # 自动微分计算
        u_t = torch.autograd.grad(u, t, grad_outputs=torch.ones_like(u))[0]
        u_x = torch.autograd.grad(u, x, grad_outputs=torch.ones_like(u))[0]
        # ... 其他偏导数
        
        # NS方程残差
        r_u = u_t + u*u_x + v*u_y + p_x - self.nu*(u_xx + u_yy)
        r_v = v_t + u*v_x + v*v_y + p_y - self.nu*(v_xx + v_yy)
        r_div = u_x + v_y
        
        return r_u, r_v, r_div

2. 边界条件处理

2.1 无滑移边界条件

固体壁面处速度为零:

实现方式:在边界点强制约束损失

def boundary_enforcement(x, y, boundary_type):
    """边界条件强制"""
    if boundary_type == "no_slip":
        # 无滑移:速度为零
        return 0.0, 0.0
    elif boundary_type == "slip":
        # 滑移:法向速度为零
        normal = compute_normal(x, y)
        return torch.dot(velocity, normal), tangential_velocity
    elif boundary_type == "periodic":
        # 周期性边界
        return None  # 需要特殊处理

2.2 周期性边界条件

周期性边界在通道流中常见。关键技巧:

  1. 网络架构不变:不引入周期性假设到网络中
  2. 训练数据覆盖完整周期1
  3. 损失函数无额外项:边界点处的损失自然满足

2.3 入口/出口边界条件

对于开放边界,常见处理方法:

  • 速度入口:指定速度分布(如Poiseuille流)
  • 压力出口:自由流出条件
  • 无反射边界:减少人为反射

3. 湍流建模与PINNs

3.1 湍流的挑战

直接数值模拟(DNS)计算量极大,大涡模拟(LES)也需要精细网格。PINNs提供了一种数据高效的方法。

3.2 RANS-PINNs

将雷诺平均N-S方程(RANS)与PINNs结合:

湍流应力 通过神经网络建模:

其中 是可学习的湍流修正项。2

3.3 LES-PINNs

大涡模拟只过滤大尺度涡,小尺度涡通过亚网格模型建模:

亚网格应力模型:

PINNs可学习 空间分布。

4. 多尺度问题与时间依赖

4.1 时间多尺度

流体问题通常涉及多个时间尺度:

  1. 对流时间尺度
  2. 扩散时间尺度
  3. 湍流时间尺度

自适应时间采样策略

def adaptive_time_sampling(t_range, difficulty):
    """自适应时间采样"""
    if difficulty == "multi_scale":
        # 多尺度问题:密集采样多个时间点
        t1 = torch.linspace(0, 0.1, 50)   # 早期
        t2 = torch.linspace(0.1, 1.0, 30)  # 中期
        t3 = torch.linspace(1.0, t_range, 20)  # 稳态
        return torch.cat([t1, t2, t3])
    else:
        return torch.linspace(0, t_range, 100)

4.2 空间多尺度

复杂几何流动涉及边界层、剪切层等不同空间尺度:

  1. 局部增强:在高梯度区域增加采样点
  2. 自适应网络:使用自适应激活函数或网络架构
  3. 多网络方法:不同尺度使用不同网络

4.3 重整化群方法

将湍流的多尺度特性编码到PINNs中:

损失函数包含多尺度约束:

5. 典型应用案例

5.1 圆柱绕流

二维圆柱绕流是经典CFD benchmark:

  • Reynolds数范围:Re = 100 ~ 10000
  • 现象:层流分离、卡门涡街、过渡湍流
  • PINNs优势:无需网格生成,处理复杂几何

5.2 顶盖驱动腔流

方腔内流体的顶盖驱动运动:

  • 几何:2D方形腔体
  • 边界条件:顶部边界速度给定的Dirichlet条件
  • 验证数据:Gelfgat benchmark

5.3 通道流

周期性管道/通道流动:

  • 精确解:Poiseuille流
  • 应用:验证PINNs框架
  • 可扩展:加入粗糙壁面、弯曲等复杂因素

6. 挑战与前沿方向

6.1 高Reynolds数问题

高Re流动的边界层极薄,对PINNs精度要求高:

  1. 区域分解:边界层内使用高分辨率
  2. 渐近增强:引入边界层渐近解
  3. 对齐坐标:使用边界层坐标变换

6.2 数值稳定性

长时间积分的数值发散问题:

  1. 软约束vs硬约束:硬边界条件更稳定
  2. 学习率调度:adaptive learning rate
  3. 残差缩放:避免损失函数的数值级差异

6.3 前沿进展

  • Physics-informed Transformer:处理更大规模问题
  • Neural Navier-Stokes Solver:端到端流场预测
  • Adaptive PINNs:自动识别物理困难区域3

参考文献

Footnotes

  1. Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2019). Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. Journal of Computational Physics.

  2. Duraisamy, K., Iacca, G., & Mendez, M. A. (2019). Perspectives on machine learning-augmented Reynolds-averaged and large eddy simulation models of turbulence. arXiv preprint.

  3. Jagtap, A. D., Kawaguchi, K., & Karniadakis, G. E. (2020). Adaptive activation functions accelerate convergence in deep and physics-informed neural networks. Journal of Computational Physics.