Lesson 1+2 in Numerical methods for Navier-Stokes equations and phase-field models
梯度流
从自由能开始
一个常见的自由能是这样定义的:
\[E(\phi) = \int_{\Omega} \frac{1}{2} \left| \nabla \phi \right|^2 + F(\phi) \, d\Omega \]其中,\(\nabla\)是梯度算子,\(\phi\)是标量或向量,在相场中通常指代相场参量,\(F(\phi)\)是自由能密度函数。一个通常的自由能密度函数是:
\[F(\phi) = \frac{1}{4} \left( \phi^2 - 1 \right)^2 \]这是一个双井势函数。
通常,我们考虑的标准问题是相场的演化,即:
\[\frac{\partial \phi}{\partial t} = - G \frac{\delta E(\phi)}{\delta \phi} \]这个式子的意思就是能量\(E\)下降最快的方向就是\(\phi\)的随时间变化方向。其中,\(\frac{\partial \phi}{\partial t}\) 指的是 \(\phi\)的时间导数,也就是\(\phi\)随时间的变化率。\(\frac{\delta E}{\delta \phi}\)是能量\(E\)对\(\phi\)的变化率。当我们取负数时,就是能量下降最快的方向。\(G\)是一个算子。这会在下面详细讲解。
算子的意思是一个函数,它接受一个函数,然后返回一个函数。更为正式的说法是从函数空间到函数空间的映射。这里,\(G\)的选择是多样的。
- G是一个正定算子(Positive Definite Operator)。当G是正定算子的时候,\(\frac{\partial \phi}{\partial t} = - G \frac{\delta E}{\delta \phi}\) 就是梯度流。常见的正定算子包括:
- 恒等式,例如:\(G = I\),这可以推出Allen-Cahn方程。
- G是反对称算子(Anti-symmetric Operator)。此时,\(\frac{\partial \phi}{\partial t} = - G \frac{\delta E}{\delta \phi}\) 能量守恒。常见的反对称算子包括:
- 负离散Laplace算子:\(-\nabla^2\) 或者 \(-\Delta\),这可以推出Cahn-Hilliard方程。当我们把整个\(-G\)视为一个算子,且取\(G = \Delta\)的时候,这就是一个反对称算子。
反对称算子在数学和物理学中经常出现,特别是在描述旋转和某些类型的对称性时。一个具体的例子是三维空间中的旋转矩阵。在三维空间中,一个旋转可以由一个3x3的矩阵表示,这个矩阵是反对称的。让我们考虑一个简单的例子,其中\(G\)是一个表示旋转的反对称矩阵。在三维空间中,一个反对称矩阵\(G\)可以写成如下形式:
\[ G = \begin{bmatrix} 0 & -g_3 & g_2 \\ g_3 & 0 & -g_1 \\ -g_2 & g_1 & 0 \end{bmatrix} \]这里,\(g_1\),\(g_2\),\(g_3\)是矩阵\(G\)的元素,它们对应于旋转轴的方向余弦。这个矩阵的反对称性质体现在\(G = -G^\top\),即:
\[ G^\top = \begin{bmatrix} 0 & g_3 & -g_2 \\ -g_3 & 0 & g_1 \\ g_2 & -g_1 & 0 \end{bmatrix} \]当\(G\)是反对称算子时,我们有\(G = -G^\top\),这意味着\(G\)的转置等于它的负值。一个矩阵\(G\)是反对称的,当且仅当对于所有向量\(u\)和\(v\),有\(u \cdot (Gv) = - (Gu) \cdot v\)。
要证明当 \(G\) 是反对称算子时,对于所有向量 \(u\) 和 \(v\),有 \(u \cdot (Gv) = - (Gu) \cdot v\),我们可以直接利用反对称矩阵的定义和性质。
首先,我们知道反对称矩阵 \(G\) 满足 \(G = -G^\top\)。这意味着对于任何向量 \(u\) 和 \(v\),我们有:
\[u \cdot (Gv) = u^\top Gv \]由于 \(G = -G^\top\),我们可以将 \(G\) 替换为 \(-G^\top\):
\[u^\top Gv = u^\top (-G^\top) v = - (u^\top G^\top v)\]现在,注意到 \(u^\top G^\top v\) 实际上是 \((Gu)^\top v\),因为 \(u^\top G^\top v = (Gu)^\top v\)。因此,我们有:
\[(u^\top G^\top v) = - (Gu)^\top v = - (Gu) \cdot v \]这证明了对于所有向量 \(u\) 和 \(v\),有 \(u \cdot (Gv) = - (Gu) \cdot v\)。这个等式表明了反对称矩阵的一个重要性质,即它在对向量进行线性变换时保持了某种对称性(在这个情况下是反对称性)。
当我们取他们的共性在于,当我们对\(\frac{\partial \phi}{\partial t} = - G \frac{\delta E}{\delta \phi}\)的两边做内积,也就是:
\[\frac{\partial \phi}{\partial t} \cdot \frac{\delta E(\phi)}{\delta \phi} = - G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi} \]受到链式法则启发:
\[\frac{\partial E(\phi)}{\partial t} = - G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi} \]这样的方程在物理意义上,实际表达了能量随时间的变化率。随着算子\(G\)的不同,我们可以看出不同的效果。
- 当G是正定算子,此时,\(- G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi} < 0\),也就是\(\frac{\partial E(\phi)}{\partial t} < 0\),能量随着时间是耗散/下降的。
- 当G是反对称算子,此时,\(- G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi} = \frac{\delta E(\phi)}{\delta \phi} \cdot G \frac{\delta E(\phi)}{\delta \phi} = 0\),也就是\(\frac{\partial E(\phi)}{\partial t} = 0\),能量随着时间的变化不变,也就是说能量是守恒的。
现在,让我们看一下表达式\(- G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi}\):
- 首先,由于\(G\)是反对称的,我们有\(G = -G^\top\)。
- 然后我们来看点乘(内积):
根据反对称性质:
\[\left( G \frac{\delta E(\phi)}{\delta \phi} \right) \cdot \frac{\delta E(\phi)}{\delta \phi} = - \left( \frac{\delta E(\phi)}{\delta \phi} \right) \cdot \left( G \frac{\delta E(\phi)}{\delta \phi} \right) \]- 因此,我们得到:
因为内积是交换的,所以:
\[\left( \frac{\delta E(\phi)}{\delta \phi} \right) \cdot \left( G \frac{\delta E(\phi)}{\delta \phi} \right) = - \left( G \frac{\delta E(\phi)}{\delta \phi} \right) \cdot \frac{\delta E(\phi)}{\delta \phi}\]这表明:
\[\left( \frac{\delta E(\phi)}{\delta \phi} \right) \cdot \left( G \frac{\delta E(\phi)}{\delta \phi} \right) = 0\]所以:
\[G \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{\delta E(\phi)}{\delta \phi} = 0 \]再结合时间上的导数,假设系统的能量\(E(\phi)\)是一个时间不变的量,系统中的某个量的时间导数可以通过梯度流的变化来表示:
\[\frac{\partial E(\phi)}{\partial t} = \frac{\delta E(\phi)}{\delta \phi} \cdot \frac{d \phi}{dt} \]由于\(\frac{d \phi}{dt} = - G \frac{\delta E(\phi)}{\delta \phi}\),我们有:
\[\frac{\partial E(\phi)}{\partial t} = \frac{\delta E(\phi)}{\delta \phi} \cdot \left(- G \frac{\delta E(\phi)}{\delta \phi}\right) = 0 \]因此,能量\(E(\phi)\)在时间上是不变的,这意味着能量是守恒的。
变分导数的定义
变分导数是一个函数的导数,它是一个函数对于另一个函数的变化率。通过引入一个微扰函数...
以下部分不太会
使用有限差分方法求解偏微分方程
样例:
\[\frac{\partial \phi}{\partial t} + A \phi + \mu(\phi) = 0 \]其中 \(A\) 是一个椭圆算子,\(\mu(\phi)\) 是一个非线性算子。
常见的椭圆算子包括:
- Laplace 算子:\(\nabla^2\)
空间离散
\[\frac{\partial_k \phi}{\partial t} + A \phi_k + \mu(\phi_1, \phi_2 ... \phi_n) = 0 \]其中 \(k\) 是空间离散的索引。
时间离散
\[\frac{\phi^{n+1} - \phi^n}{\Delta t} + A \phi^{n+1} + \mu(\phi^{n}) = 0 \]其中对线性算子使用隐式(Implicit)格式,对非线性算子使用显式(Explicit)格式。这么做的原因是简化运算。
常见的边界条件
- Dirichlet 边界条件:\(\phi = 0\)
- Neumann 边界条件:\(\frac{\partial \phi}{\partial n} = 0\)
- 周期性边界条件:\(\phi_0 = \phi_n\)
傅里叶谱方法
......略
好的离散数值计算方法
- 满足连续方程的性质
- 快速
- 准确
- 有效