2. 相场法核心方程与数值实现

相场法之所以能同时描述“界面在哪里”和“界面如何移动”,根源在于它把尖锐界面替换为一个连续变化的序参量场,并让这个场的演化由自由能泛函的变分驱动。理解这一节的关键,不是记住两个方程的形式,而是看清它们各自守恒什么、由什么驱动、在数值上如何落地。

一、自由能泛函:相场模型的“能量地形”

设序参量场为 φ(x,t)。对二元体系,φ 常取 +1 与 −1 分别代表两相,界面处 φ 在有限宽度内平滑过渡。系统总自由能写成泛函:

F[φ] = ∫_V [ f(φ) + (κ/2)|∇φ|² ] dV

其中 f(φ) 是均匀自由能密度,κ 是梯度能系数。f(φ) 通常取双阱形式 f = W·φ²(1−φ²) 或 f = (W/4)(φ²−1)²,两个极小值对应两相平衡态;梯度项则惩罚界面处的陡峭变化,使界面具有有限厚度。κ 越大,界面越宽、界面能越高。这一泛函是后续所有变分推导的出发点。

二、变分推导:从能量到演化方程

对 F 求变分导数,得到化学势(变分势):

μ = δF/δφ = f'(φ) − κ∇²φ

非守恒序参量(如有序度、相变中的结构序参量)遵循 Allen-Cahn 方程:

∂φ/∂t = −L · δF/δφ = −L [ f'(φ) − κ∇²φ ]

它表示 φ 沿自由能下降方向演化,L 为界面迁移率。守恒序参量(如浓度、摩尔分数)则遵循 Cahn-Hilliard 方程:

∂φ/∂t = ∇·( M ∇μ ) = ∇·{ M ∇[ f'(φ) − κ∇²φ ] }

M 为原子迁移率。Cahn-Hilliard 是四阶方程,因为 μ 中已含 ∇²φ,再取一次散度后出现 ∇⁴φ;Allen-Cahn 是二阶方程。两者最本质的区别是:Allen-Cahn 允许 φ 的总量变化,Cahn-Hilliard 则严格保持 ∫φ dV 守恒。

自由能泛函 → 变分 → 两类演化方程 → 离散求解 自由能泛函 F[φ] F = ∫ [ f(φ) + (κ/2)|∇φ|² ] dV f(φ):双阱均匀自由能 κ:梯度能系数,控制界面宽度 变分求化学势 μ μ = δF/δφ = f′(φ) − κ∇²φ f′(φ):局部驱动力 −κ∇²φ:界面曲率/梯度修正 Allen-Cahn(非守恒) ∂φ/∂t = −L·μ 二阶方程,φ 总量可变 适用:有序度、结构相变 Cahn-Hilliard(守恒) ∂φ/∂t = ∇·(M∇μ) 四阶方程,∫φ dV 守恒 适用:浓度场、调幅分解 无量纲化:让方程“干净”且数值稳定 取特征长度 l₀ = √(κ/W),特征时间 t₀ = 1/(L·W) 或 l₀²/(M·W) 则方程化为 ∂φ/∂t̃ = −[φ³−φ − ∇̃²φ] 或 ∂φ/∂t̃ = ∇̃·∇̃[φ³−φ − ∇̃²φ] 离散格式:空间离散 + 时间推进 空间:有限差分/谱方法 ∇²φ → 五点/七点差分 周期边界用 FFT 谱微分 时间:显式/半隐式 显式:Δt ≤ C·Δx⁴(CH 很苛刻) 半隐式:线性项隐式,非线性显式 稳定性与守恒检查 CH:每步检查 ∫φ dV 漂移 AC:检查 φ 是否越出 [−1,1]

三、无量纲化:把物理参数“打包”

直接求解带 W、κ、L、M 的方程,参数跨度大且量纲混杂。标准做法是引入特征长度 l₀ = √(κ/W) 和特征时间 t₀。对 Allen-Cahn,取 t₀ = 1/(L·W);对 Cahn-Hilliard,取 t₀ = l₀²/(M·W)。令 x̃ = x/l₀,t̃ = t/t₀,φ 本身已无量纲,则双阱势化为 f̃ = (1/4)(φ²−1)²,方程简化为:

AC:  ∂φ/∂t̃ = −[ φ³ − φ − ∇̃²φ ]
CH:  ∂φ/∂t̃ = ∇̃·∇̃[ φ³ − φ − ∇̃²φ ]

这样数值实验中只需调节计算域尺寸、界面宽度与时间步,物理结论可通过 l₀、t₀ 反推回真实尺度。例如取 W = 1×10⁴ J/m³、κ = 1×10⁻¹⁰ J/m,则 l₀ ≈ 3.2 nm,说明界面宽度在纳米量级,网格 Δx 必须小于 l₀ 才能分辨界面。

四、离散格式与稳定性

空间离散常用有限差分:一维时 ∇²φ ≈ (φ_{i+1} − 2φ_i + φ_{i−1})/Δx²;二维用五点格式,三维用七点格式。若边界周期,谱方法用 FFT 计算 ∇² 和 ∇⁴ 精度更高。Cahn-Hilliard 含 ∇⁴φ,显式格式稳定条件约为 Δt ≤ C·Δx⁴/(M·κ),网格加密一倍,时间步要缩小十六倍,代价极大。因此工程上多采用半隐式或谱半隐式:把线性高阶项 −Mκ∇⁴φ 隐式处理,非线性项 f′(φ) 显式处理,既放宽 Δt 又保持实现简单。

一个可复现的半隐式一维 Cahn-Hilliard 时间推进可写成:

# 半隐式 Fourier 谱方法(周期边界)
phi_hat = fft(phi)
k2 = k**2
# 线性算子:1 + dt*M*kappa*k2**2
lin = 1.0 + dt*M*kappa*k2**2
# 非线性项显式:f'(phi) = phi**3 - phi
nonlin_hat = fft(phi**3 - phi)
phi_hat_new = (phi_hat - dt*M*k2*nonlin_hat) / lin
phi = real(ifft(phi_hat_new))

这段代码中,k2**2 即 k⁴,对应 ∇⁴ 的谱表示;分母 lin 把四阶线性项隐式吸收,避免显式格式对 Δx⁴ 的严苛限制。每步结束后应检查 ∫φ dV 是否漂移,若漂移超过 10⁻⁶ 量级,需检查离散是否保持守恒形式。

守恒与非守恒的选择依据:若物理量是浓度、摩尔分数、体积分数这类“必须守恒”的量,选 Cahn-Hilliard;若是有序度、晶体结构序参量、相变程度这类“可以局部产生或消失”的量,选 Allen-Cahn。两者也可耦合,例如用 CH 描述浓度、用 AC 描述有序度,通过自由能中的耦合项 f(φ, c) 建立联系。

五、与 CALPHAD 的接口位置

在相场与 CALPHAD 耦合中,f(φ) 不再手写双阱,而是由 CALPHAD 热力学数据库给出各相的 Gibbs 自由能 G_m^α(c)、G_m^β(c),再通过插值函数 h(φ) 构造:

f(φ, c) = h(φ)·G_m^α(c) + [1−h(φ)]·G_m^β(c) + W·g(φ)

其中 h(φ) 常取 h = φ²(3−2φ) 或 h = (1+φ)/2,g(φ) 为双阱势。这样,变分得到的 μ 中 f′(φ) 就携带了 CALPHAD 的浓度依赖信息,相场演化与热力学数据库真正连通。数值实现时,f′(φ) 和 ∂f/∂c 通常由数据库在每步插值计算,因此计算量集中在热力学求值上,而非差分本身。

总结来看,本节的核心链条是:自由能泛函 → 变分得 μ → 按守恒性选 AC 或 CH → 无量纲化简化参数 → 空间离散与半隐式时间推进 → 每步检查守恒与越界。掌握这条链条,后续耦合 CALPHAD 时只需替换 f 的来源,而不必重写数值框架。