HPC wiki project
打算写一下各个 HPC 应用领域所试图解决的科学侧问题,涉及的科学方法,以及将该问题映射到计算机所使用的算法。
通用方法相关
Level set function
定义一个函数 $\phi(x, t)$, 其中 $x$ 是空间坐标,$t$ 是时间。
interface 定义为 $\Gamma(t) = \{ x:\phi(x, t)=0 \}$
$\phi(x, t)> 0 $ 和 $\phi(x, t)< 0 $ 分别表示在 interface 的内部和外部。
梯度算子 ($\nabla$, nabla)
Gradient $\nabla f$ :
$\nabla f = (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z})$
作用于标量场 $f$,得到向量场 $\nabla f$,指向标量场增加最快的方向
divergence $\nabla \cdot \mathbf{F}$ :
$\nabla \cdot \mathbf{F} = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z}$
作用于向量场 $\mathbf{F}$,得到标量场 $\nabla \cdot \mathbf{F}$,表示标量场流出一点的流量。正数表示该点是 source,负数表示该点是 sink。
curl $\nabla \mathbf{F}$ :
$ \nabla \times \mathbf{F} = \left( \frac{\partial F_z}{\partial y} - \frac{\partial F_y}{\partial z}, \frac{\partial F_x}{\partial z} - \frac{\partial F_z}{\partial x}, \frac{\partial F_y}{\partial x} - \frac{\partial F_x}{\partial y} \right) $
行列式表示 $\nabla \times \mathbf{F} =\begin{vmatrix}\hat{i} & \hat{j} & \hat{k} \\ \frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z} \\ F_x & F_y & F_z \end{vmatrix}$
作用于向量场 $\mathbf{F}$ 得到向量场 $\nabla \times \mathbf{F}$,表示一点旋转的程度和方向
拉普拉斯算子 Laplacian $\nabla^2 f$ :
$\nabla^2 f = \nabla \cdot (\nabla f) = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} + \frac{\partial^2 f}{\partial z^2}$
分子 / 粒子 模拟
分子动力学 (molecular dynamics, MD)
以牛顿力学模拟分子/粒子的运动情况,将时间划分为小的时间片,认为每个时间片内粒子的运动是离散的