Physics Research Learning Lab

物理研究

先选择你的阅读等级,再进入同一节内容。小白模式先讲故事和直觉,高手模式保留完整公式和工程抽象。

1
选择模式,先匹配当前理解水平。
2
进入正文后仍可一键切换,不会丢失进度。
3
小白模式看懂主线后,再回高手模式补公式。

本页主题:PDE 的统一视角,从物理问题走到残差方程。

选择阅读模式

第一次进入先分级。后续也可以从侧边栏回到这里重新选择。

Tiny Physics Learning Lab · Section 01

第一节:PDE 的统一视角

从物理过程、变量场、守恒律,到通用计算核心中的残差方程。

本节核心公式
$$\mathcal{R}(u; p, x, t)=0$$

本节的目标不是让你立刻掌握所有偏微分方程理论,而是建立一个能服务于通用物理场软件架构的主干认识:任何物理场问题最终都要被表达为某种待求变量场满足的方程残差为零

物理现象 热 / 流 / 固 / 渗 / 相场 变量场 u(x,t), p(x,t), T(x,t) 控制方程 守恒律 + 本构 + 假设 残差形式 R(u)=0 离散化 FEM / FVM / SPH / MPM 代数求解 A u=b 或 JΔu=-R
图 1:通用物理场计算的主干流程。核心不是先区分热、流、固,而是先识别变量场和残差方程。

0. 学习目标

学完本节,你应该能把一个物理场问题拆解成软件可处理的几个基本对象。

理论目标

  • 理解“变量场”是物理量在空间和时间上的函数。
  • 理解多数控制方程来自守恒律、本构关系和简化假设。
  • 理解强形式 PDE、初始条件、边界条件的基本结构。
  • 理解为什么可以把物理问题统一写成残差方程。

工程目标

  • 能把一个物理问题映射到 FieldEquationBoundaryCondition
  • 能初步判断一个 PDE 是椭圆型、抛物型还是双曲型。
  • 能为后续 FEM、FVM、SPH、MPM 的学习建立统一入口。
  • 能开始建立项目中的 THEORY_DEBT.md

1. 为什么从 PDE 统一视角开始

通用物理场软件的最大难点,不是某一个算法怎么写,而是如何在多个物理问题之间找到稳定的抽象。热传导、弹性力学、达西渗流、相场、不可压流体,看起来差别很大,但它们在计算流程上经常共享相同的骨架:

统一计算骨架
$$\text{物理假设} \;\longrightarrow\; \text{控制方程} \;\longrightarrow\; \text{残差形式} \;\longrightarrow\; \text{离散系统} \;\longrightarrow\; \text{数值求解}$$

如果你只按“热模块、力学模块、流体模块”堆代码,系统会很快变成物理专用脚本集合。相反,如果你先抓住 PDE 与残差的统一结构,就可以把软件核心抽象成更稳定的层次。

对你当前项目的直接意义:不要急着让 AI 继续增加很多物理模块。每新增一个模块,都应明确它的变量场、控制方程、边界条件、残差表达、离散方式和验证算例。否则代码增长会快于理论控制能力。

2. 变量场:物理量的数学表达

物理场问题首先要回答:我们要求解的未知量是什么?这个未知量通常不是单个数字,而是在空间区域 $\Omega$ 和时间区间 $[0,T]$ 上变化的函数。

标量场、向量场与张量场
$$ \begin{aligned} \text{标量场:}\quad & T = T(x,t) \\ \text{向量场:}\quad & \boldsymbol{u} = \boldsymbol{u}(x,t) \\ \text{张量场:}\quad & \boldsymbol{\sigma}=\boldsymbol{\sigma}(x,t) \end{aligned} $$

温度场

$T(x,t)$ 表示空间点 $x$ 在时间 $t$ 的温度。典型问题是热传导。

位移场

$\boldsymbol{u}(x,t)$ 表示固体材料点的位移。典型问题是弹性力学、塑性力学。

压力场

$p(x,t)$ 表示孔隙流体压力或流体压力。典型问题是达西渗流、不可压流动。

2.1 空间区域与时间区间

记计算区域为 $\Omega \subset \mathbb{R}^d$,其中 $d=1,2,3$ 分别对应一维、二维、三维问题。边界记为 $\Gamma=\partial\Omega$。

变量场定义域
$$u: \Omega \times [0,T] \rightarrow \mathbb{R}^m$$

这里 $m$ 是变量分量数。温度是 $m=1$ 的标量场;三维位移是 $m=3$ 的向量场;应力通常是二阶张量场。

关键理解:物理场软件中的 Field 不应该只是一个数组,而应该至少隐含这些信息:变量名称、分量数、所在区域、时间层、自由度布局、单位和物理含义。

3. 守恒律:PDE 的来源

很多 PDE 并不是凭空写出来的,而是来自“某种量在一个小体积内的积累、流入流出和源项之间的平衡”。这就是守恒律。

通用局部守恒形式
$$\frac{\partial q}{\partial t}+\nabla\cdot\boldsymbol{F}=s$$

其中:

符号含义例子
$q$被守恒或演化的量热量、质量、动量、相场变量
$\boldsymbol{F}$通量,表示该量如何穿过边界流动热通量、质量通量、动量通量
$s$源项或汇项内热源、注入源、体力、反应项
控制体 dΩ 内部积累:∂q/∂t s 流入通量 流出通量 源项 / 汇项 积累 = 流入 − 流出 + 源项
图 2:局部守恒律。把控制体无限缩小,就得到微分形式 PDE。

3.1 例子:热传导方程

以温度场 $T(x,t)$ 为例,热量积累、热通量和内热源满足:

热传导的守恒形式
$$\rho c\frac{\partial T}{\partial t}+\nabla\cdot\boldsymbol{q}=Q$$

再引入傅里叶热传导定律:

傅里叶定律
$$\boldsymbol{q}=-k\nabla T$$

代入后得到经典热传导方程:

热传导 PDE
$$\rho c\frac{\partial T}{\partial t}-\nabla\cdot(k\nabla T)=Q$$
学习任务:以后看到任何一个新物理模块,先问三个问题:被积累的量是什么?通量是什么?源项是什么?这比直接问“代码怎么写”更重要。

4. PDE 类型与计算含义

PDE 类型不是纯数学分类,它会直接影响离散方法、时间推进和求解器选择。工程上常见的三类是椭圆型、抛物型和双曲型。

椭圆型 Elliptic

典型形式:

$$-\nabla\cdot(k\nabla u)=f$$

描述稳态平衡。扰动通常会影响整个区域。

抛物型 Parabolic

典型形式:

$$\frac{\partial u}{\partial t}-\alpha\nabla^2u=f$$

描述扩散型时间演化,常见于热传导和扩散。

双曲型 Hyperbolic

典型形式:

$$\frac{\partial u}{\partial t}+c\frac{\partial u}{\partial x}=0$$

描述波传播或对流传播,存在特征方向和 CFL 限制。

类型物理含义常见例子对计算的影响
椭圆型空间平衡稳态热传导、静力弹性、稳态渗流通常形成大型稀疏线性或非线性方程组
抛物型扩散演化瞬态热传导、浓度扩散、某些相场方程显式格式受时间步限制,隐式格式需解方程组
双曲型波动或输运弹性波、浅水方程、对流方程需要关注数值耗散、激波、CFL 条件
注意:真实多物理问题经常是混合型的。例如 Navier-Stokes 方程同时含有对流、扩散、压力约束;多孔介质两相流也可能同时含有抛物型和双曲型特征。因此分类是理解入口,不是绝对标签。

5. 初始条件与边界条件

一个 PDE 只有控制方程还不够。为了得到唯一可计算的解,必须指定初始条件和边界条件。

问题结构
$$ \begin{cases} \mathcal{L}(u)=f, & x\in\Omega,\; t>0,\\ u(x,0)=u_0(x), & x\in\Omega,\\ \mathcal{B}(u)=g, & x\in\Gamma. \end{cases} $$
Ω 计算区域 Γ_D: 指定位移/温度/压力 Γ_N: 指定通量/力 外法向通量 初始条件 u₀
图 3:区域 $\Omega$、边界 $\Gamma$ 与两类常见边界条件。Dirichlet 边界指定变量值,Neumann 边界指定通量或力。

5.1 Dirichlet 边界条件

Dirichlet 条件直接指定未知量的值:

本质边界条件
$$u = \bar{u} \quad \text{on } \Gamma_D$$

例如:固定端位移为零、边界温度为常数、孔压边界给定压力值。

5.2 Neumann 边界条件

Neumann 条件指定导数、通量或力:

自然边界条件
$$-k\nabla u\cdot\boldsymbol{n}=\bar{q} \quad \text{on } \Gamma_N$$

例如:给定热流密度、给定表面力、给定渗流通量。

5.3 Robin 边界条件

Robin 条件是变量值和通量的组合:

混合边界条件
$$a u + b\nabla u\cdot\boldsymbol{n}=c \quad \text{on } \Gamma_R$$

例如对流换热边界:

$$-k\nabla T\cdot\boldsymbol{n}=h(T-T_\infty)$$
软件设计提示:BoundaryCondition 不应该只是一个函数句柄。它至少要知道作用在哪个边界集合、作用于哪个变量、条件类型、数值表达式、是否随时间变化,以及如何进入离散系统。

6. 残差形式:通用计算核心入口

对通用物理场软件来说,最有价值的统一形式是残差形式。所谓残差,就是“当前猜测解代入控制方程后还差多少”。真正的解应该让残差为零。

通用残差形式
$$\mathcal{R}(u; p, x, t)=0$$

其中 $u$ 是未知变量场,$p$ 是材料参数、几何参数、边界参数等。残差可以来自强形式、弱形式、有限体积通量平衡,也可以来自粒子方法中的离散动量方程。

6.1 从微分方程到残差

例如一维稳态 Poisson 方程:

$$-\frac{d}{dx}\left(k\frac{du}{dx}\right)=f$$

可以写成:

$$\mathcal{R}(u)= -\frac{d}{dx}\left(k\frac{du}{dx}\right)-f=0$$

当 $u$ 不是精确解时,$\mathcal{R}(u)$ 不为零。数值方法的任务就是构造一个有限维近似 $u_h$,使离散残差尽可能为零。

6.2 离散残差

离散化之后,未知函数变成有限个自由度组成的向量:

$$u(x,t) \quad \longrightarrow \quad \boldsymbol{U}(t)=\begin{bmatrix}U_1(t)&U_2(t)&\cdots&U_N(t)\end{bmatrix}^T$$

连续残差变成代数残差:

离散残差方程
$$\boldsymbol{R}(\boldsymbol{U})=\boldsymbol{0}$$

如果问题是线性的,常常得到:

$$\boldsymbol{K}\boldsymbol{U}=\boldsymbol{F}$$

也可以写成残差形式:

$$\boldsymbol{R}(\boldsymbol{U})=\boldsymbol{K}\boldsymbol{U}-\boldsymbol{F}=\boldsymbol{0}$$

6.3 非线性问题与 Newton 迭代

对于非线性问题,残差依赖于当前解。Newton 方法的基本形式是:

Newton 迭代
$$\boldsymbol{J}(\boldsymbol{U}^k)\Delta\boldsymbol{U}=-\boldsymbol{R}(\boldsymbol{U}^k),\qquad \boldsymbol{U}^{k+1}=\boldsymbol{U}^k+\Delta\boldsymbol{U}$$

其中:

$$\boldsymbol{J}=\frac{\partial \boldsymbol{R}}{\partial \boldsymbol{U}}$$
猜测解 Uᵏ 当前自由度 计算残差 R(Uᵏ) 线性化 JΔU = -R 更新解 Uᵏ⁺¹=Uᵏ+ΔU 若 ||R|| 未满足收敛条件,则继续迭代
图 4:残差驱动的非线性求解流程。通用物理场软件常常围绕 Residual、Jacobian、Solver 组织核心。
本节最重要的一句话:通用计算核心不应该只会“求解某个方程”,而应该能接受某类残差表达,并通过离散、组装和求解器使残差趋近于零。

7. 软件抽象映射

把理论概念映射到软件对象,是你开发通用物理场基座时最应该持续训练的能力。

理论概念软件对象职责
计算区域 $\Omega$Domain / Mesh描述几何、网格、区域标记、边界标记。
变量场 $u(x,t)$Field管理变量名、分量数、自由度、当前值、历史值。
材料参数 $p$MaterialModel提供本构参数、状态变量、通量或应力响应。
控制方程Equation定义强形式、弱形式或离散残差。
边界条件BoundaryCondition指定变量值、通量、力、换热、接触等条件。
残差 $R(U)$ResidualEvaluator在当前状态下计算系统不平衡量。
Jacobian $J$JacobianAssembler构造或近似残差对未知量的导数。
线性/非线性求解Solver求解线性系统、非线性系统或时间步。
时间演化TimeStepper管理时间步长、历史变量、显式/隐式更新。

7.1 一个抽象接口草图

// Conceptual pseudo-code, not tied to a specific language
Problem
  Domain domain
  Field[] fields
  MaterialModel[] materials
  Equation[] equations
  BoundaryCondition[] boundaryConditions
  TimeStepper timeStepper
  Solver solver

Equation
  defineUnknownFields()
  evaluateResidual(state)
  evaluateJacobian(state)   // optional or approximate

Solver
  solve(R(U) = 0)
  checkConvergence(norm(R), norm(dU))
架构判断标准:如果一个新物理模块不能说明自己的 FieldEquationResidualBoundaryCondition,就暂时不应该进入正式核心,而应该先进入 LearningLab 做最小算例。

8. 最小例子:一维瞬态热传导

现在用一个最小问题把本节概念串起来。考虑长度为 $L$ 的一维杆,温度为 $T(x,t)$,材料密度 $\rho$、比热 $c$、导热系数 $k$。

8.1 变量场

$$T: [0,L]\times[0,t_f]\rightarrow\mathbb{R}$$

未知量是温度场 $T(x,t)$。

8.2 控制方程

$$\rho c\frac{\partial T}{\partial t}-\frac{\partial}{\partial x}\left(k\frac{\partial T}{\partial x}\right)=Q(x,t)$$

8.3 初始条件

$$T(x,0)=T_0(x)$$

8.4 边界条件

例如左端给定温度,右端绝热:

$$T(0,t)=T_L,\qquad -k\frac{\partial T}{\partial x}(L,t)=0$$

8.5 残差形式

$$\mathcal{R}(T)=\rho c\frac{\partial T}{\partial t}-\frac{\partial}{\partial x}\left(k\frac{\partial T}{\partial x}\right)-Q=0$$

8.6 软件对象映射

对象本例内容
Domain一维区间 $[0,L]$
Field温度场 T,标量,自由度位于节点或单元中心
MaterialModel$\rho, c, k$
Equation热传导方程
BoundaryCondition左端 Dirichlet,右端 Neumann
ResidualEvaluator计算热不平衡残差
TimeStepper显式 Euler、隐式 Euler 或 Crank-Nicolson
Solver显式更新或隐式线性系统求解
建议的第一组学习算例:不要马上做复杂二维三维问题。先手写一维热传导的有限差分或有限元离散,并验证常温边界下温度逐渐趋于稳态。这个算例是你后续所有物理模块的“理论校准器”。

9. 练习与验收

9.1 概念练习

  1. 对于稳态渗流方程 $-\nabla\cdot(K\nabla h)=q$,指出变量场、材料参数、源项和残差表达。
  2. 对于静力弹性方程 $\nabla\cdot\boldsymbol{\sigma}+\boldsymbol{b}=0$,指出未知场是什么,边界条件通常有哪些。
  3. 解释 Dirichlet 条件和 Neumann 条件在热传导、弹性力学、渗流中的对应物理意义。
  4. 判断下列问题更接近椭圆型、抛物型还是双曲型:稳态热传导、瞬态扩散、弹性波传播。

9.2 工程练习

在你的项目中新增一个理论债务条目:

# THEORY_DEBT.md

## TD-001: Unified PDE residual form

- Related module: core equation/residual abstraction
- Current understanding: need to connect physical PDEs to residual evaluators
- Need to learn:
  - field definition
  - conservation law
  - boundary condition types
  - residual form R(U)=0
- Verification task:
  - implement 1D heat equation minimal solver
  - compare with an analytical or reference solution
- Priority: High

9.3 本节验收清单

  • 看到一个物理问题时,能先找未知变量场,而不是先写代码。
  • 能把守恒律写成“积累项 + 通量散度 = 源项”。
  • 能区分 Dirichlet、Neumann、Robin 边界条件。
  • 能把强形式 PDE 改写成残差形式。
  • 能解释为什么 $\boldsymbol{R}(\boldsymbol{U})=0$ 是通用数值求解入口。
  • 能说出理论概念在软件对象中的对应关系。

本节总结

本节建立了通用物理场软件最重要的第一层认识:物理问题不是直接进入代码,而是先表达为变量场满足的控制方程,再被转化为残差方程,最后通过离散和求解器使残差趋近于零。

你需要长期记住的主线
$$\boxed{\text{Field} \rightarrow \text{Equation} \rightarrow \text{Residual} \rightarrow \text{Discretization} \rightarrow \text{Solver}}$$

下一节建议进入:弱形式与有限元基本思想。它会解释为什么要乘测试函数、为什么要分部积分、自然边界条件如何自动进入方程,以及刚度矩阵从哪里来。