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 守恒。
三、无量纲化:把物理参数“打包”
直接求解带 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⁻⁶ 量级,需检查离散是否保持守恒形式。
五、与 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 的来源,而不必重写数值框架。