SVM

Spectral Volume Method (SVM)

Spectral Volume Method (SVM) 是一种高阶数值计算方法,主要用于求解偏微分方程(PDEs),例如流体力学中的守恒律方程. SVM 是一种基于有限体积法(Finite Volume Method, FVM)的高精度方法,同时结合了谱方法的思想.

核心思想

SVM 将计算域划分为多个控制体积(control volumes),每个控制体积再进一步划分为多个子单元(subcells). 在每个控制体积内,解函数以一组高阶多项式表示,其系数通过光谱逼近的方式进行确定。这种局部高阶近似可以显著提高计算精度.

工作原理

1. 域划分

  • 将计算区域分割为多个不重叠的光谱体积(Spectral Volumes, SVs)
    • 它可以是规则的形状(如正方形或三角形),也可以是不规则形状,取决于计算域的划分
  • 每个光谱体积进一步划分为若干个子单元(subcells)
    • 子单元用于采样解的值,以构建光谱逼近的高阶多项式

2. 局部多项式逼近

  • 在每个光谱体积内,用一个高阶多项式来表示解函数. 这种多项式能够捕捉局部解的变化
  • 多项式的系数通过拟合子单元上的解值来确定,从而保证局部的高阶逼近
  • 构造的多项式 P(x) 是解函数 u(x) 在光谱体积内的高阶逼近

a. 多项式表示

  • 假设解函数 u(x) 在光谱体积 Ω 内可以用一个高阶多项式 P(x) 来表示
\[u(x) \approx P(x) = \sum_{i=0}^{M} a_i \phi_i(x),\]
  • $\phi_i(x)$是一组基函数(通常选择正交多项式,如 Legendre 多项式或 Chebyshev 多项式)
  • $a_i$ 是待确定的多项式系数
  • M 是多项式的阶数,与子单元数 N 相关

b. 子单元上的解值采样

在每个子单元 $\Omega_j$,定义某种方式采样解值

  • 直接使用子单元中心或其他特定点的解值 $u_j$
  • 或者在子单元内计算解的加权平均值 $\bar{u}_j$
\[\bar{u}_j = \frac{1}{|\Omega_j|} \int_{\Omega_j} u(x) \, dx\]
其中 $ \Omega_j $ 是子单元 $\Omega_j$ 的体积

c. 拟合高阶多项式

利用子单元上的解值,构造多项式 P(x) 的系数 $a_i$

  • 通过 插值法
    • 确保多项式 P(x) 在子单元采样点上与解值 uj 一致,即满足以下方程组:
    \[P(x_j) = u_j, \quad j = 1, 2, \dots, N.\]
    • 根据采样点的数量和多项式阶数,利用线性代数方法(如 Lagrange 插值或 Vandermonde 矩阵)求解 $a_i$
  • 通过 最小二乘拟合法
    • 如果采样点数量超过多项式阶数,可以使用最小二乘方法拟合多项式系数:
    \[\min_{a_i} \sum_{j=1}^{N} \left( u_j - P(x_j) \right)^2\]
  • 通过 积分法(正交点拟合)
    • 使用数值积分方法(如 Gaussian Quadrature)在子单元内计算积分
    \[\int_{\Omega} u(x) \phi_k(x) \, dx = \int_{\Omega} P(x) \phi_k(x) \, dx, \quad k = 0, 1, \dots, M\]

通过这一方式得到 $a_i$ 系数

3. 守恒律的离散化 / 数值通量计算

  • 在每个子单元上计算守恒量的通量,并利用数值通量函数(例如 Roe 通量或 Lax-Friedrichs 通量)处理相邻体积间的交界面
  • 在光谱体积的边界上计算数值通量,用于与相邻体积进行信息交换
  • 光谱体积之间的通量计算确保了整体解的守恒性
  • 时间推进可以使用显式或隐式方法,如 Runge-Kutta 方法



    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • Terminal Command
  • Computer Environment
  • NeRF
  • 3DGS
  • SDS