zoukankan      html  css  js  c++  java
  • 一维斜率限制器测试算例

    Limiter Scheme

    (Qiu and Shu, 2005; Zhu et al., 2013)

    If the approximation of solution is

    [egin{equation} u_h(x, t) = sum_{l = 0}^{k} u_i^{l}(t) v_l^{i}(x) = sum_{l = 0}^{k} hat{u}_i^{l}(t) l_l^{i}(x) end{equation}]

    where the ({v_l^{i}(x), l=0,1,cdots,k}) is the orthogonal basis, such as the the scaled Legendre polynomials, and the ({l_l^{i}(x), l=0,1,cdots,k}) is the nodal basis, such as the Lagrangian interpolation polynomials, (u_i^{l}) and (hat{u}_i^{l}(t)) are coefficients of two basis respectively.

    1. minmod (MD)

    Reduce the order of polynomial as linear polynomial

    [egin{equation} u_h = sum_{l = 0}^{1} u_i^{l}(t) v_l^{i}(x) = u_i^{0}(t) v_0^{i}(x) + u_i^{1}(t) v_1^{i}(x) end{equation}]

    and the boundary value is written as

    [egin{equation} u^{-}_{i+1/2} = u_i^{0} + ilde{u}_i, quad u^{+}_{i-1/2} = u_i^{0} - ilde{ ilde{u}}_i end{equation}]

    These are modified by the standard minmod limiter

    [egin{equation} ilde{u}_i^{(mod)} = mleft( ilde{u}_i, Delta_+u^0_i, Delta_-u^0_i ight), quad ilde{ ilde{u}}_i^{(mod)} = mleft( ilde{ ilde{u}}_i, Delta_+u^0_i, Delta_-u^0_i ight) end{equation}]

    where the minmod function m is giving by

    [egin{equation} mleft( a_1, a_2, cdots, a_n ight) = left{ egin{matrix} s cdot min_{1 le j le n} left| a_j ight| cr 0 end{matrix} ight. quad egin{matrix} if quad sign(a_1)=sign(a_2)=cdots = sign(a_n)=s cr otherwise end{matrix} end{equation}]

    or by the TVB-modified minmod function

    [egin{equation} ilde{m}left( a_1, a_2, cdots, a_n ight) = left{egin{matrix} a_1 cr mleft( a_1, a_2, cdots, a_n ight) end{matrix} ight. quad egin{matrix} if quad |a_1|< Mh^2 cr otherwise end{matrix} end{equation}]

    2. modification of minmod limiter (MMD)

    The disadvantage of minmod limiter is that it will reduce the result to linear polynomial. The modification method is to make the limit situation less strict.

    Firstly, get the modified boundary values with the minmod function.

    [egin{equation} u^{-}_{i+1/2} - u_i^{0} = ilde{u}_i, quad ilde{ ilde{u}}_i = u_i^{0} - u^{+}_{i-1/2} end{equation}]

    [egin{equation} {u}_{i+1/2}^{(mod)} = u_i^{0} + mleft( ilde{u}_i, Delta_+u^0_i, Delta_-u^0_i ight), quad ilde{ ilde{u}}_{i-1/2}^{(mod)} = u_i^{0} - mleft( ilde{ ilde{u}}_i, Delta_+u^0_i, Delta_-u^0_i ight) end{equation}]

    If the modified boundary values is not equales the original value, then the element is reduced to the linear polynomial by minmod limiter.

    [egin{equation} ext{if} quad {u}_{i+1/2}^{(mod)}=u_h(x_{i+1/2}) quad ext{or} quad {u}_{i-1/2}^{(mod)}=u_h(x_{i-1/2}) end{equation}]

    Otherwise, the element keep its high order approximation.

    [egin{equation} u_h(x, t) = sum_{l = 0}^{k} u_i^{l}(t) v_l^{i}(x) end{equation}]

    3. moment limiter of Biswas (BDF)

    The moment-based limiter in is given by

    [egin{equation} u_i^{(l),mod} = frac{1}{2l-1}mleft( left(2l-1 ight)u_i^{(l)}, u_{i+1}^{(l-1)} - u_{i}^{(l-1)}, u_{i}^{(l-1)} - u_{i-1}^{(l-1)} ight) end{equation}]

    where m is again the minmod function

    First, the highest-order moment (u_i^k) is limited. Then the limiter is applied to successively lower-order moments when the next higher-order moment on the interval has been changed by the limiting.

    Warnning: error exits with BDF limiter source code

    4. modification of moment limiter by Burbeau

    5. modification of the MP limiter (MMP)

    As a troubled-cell indicator, the MMP limiter can be described as follows:

    [egin{equation} varphi = minleft(1,Deltaar{u}^{min}/Delta_{min} u ight) end{equation}]

    where

    [egin{equation} Deltaar{u}^{min} = u_i^0- minleft( u_{i-1}^0, u_{i}^0,u_{i+1}^0 ight) quad Delta_{min} u = u_i^0 - min(u_{i-1/2}^+, u_{i+1/2}^-) end{equation}]

    When (varphi e 1), the limiter, such as minmod limiter, acts on the cell.

    6. Krivodonova's shock detector

    Warnning: question exits with Krivodonova indector method

    Source Code

    Test case(^{[3]})

    For the test case, please refered to Davidovits (2012)[3] for more details.

    The computational grid is [0, 1], and subdivided into 200 element, which is of second order accuracy.

    The initial condition consists of two parts: a continuous function and a step function.

    [egin{eqnarray} egin{aligned} & f_1 = expleft( -frac{(x - x_0)^2}{D_x} ight) quad D_x = frac{(x_2 - x_1)^2}{200} cr & f_2 = left{ egin{matrix} 1 cr 0 end{matrix} ight. quad egin{matrix} 0.625 le x le 0.875 cr otherwise end{matrix} end{aligned} end{eqnarray}]

    The limiter function is applied on the scalar field (N) times ((N) is the iteration number), then get the final results. This situation equivalent to the advection problem with no-flow situation.

    Results

    method L1 L2
    minmod 0.750000 0.063141
    modified minmod 0.750000 0.063111
    BDF 0.833333 0.072763
    MMP 0.750000 0.063141

    Reference

    1. QIU J, SHU C W,. A Comparison of Troubled-Cell Indicators for Runge--Kutta Discontinuous Galerkin Methods Using Weighted Essentially Nonoscillatory Limiters[J]. SIAM Journal on Scientific Computing, 2005.
    2. Zhu H, Cheng Y, Qiu J. A comparison of the performance of limiters for Runge-Kutta discontinuous Galerkin methods[J]. Advances in Applied Mathematics and Mechanics, 2013, 5(03): 365-390.
    3. Davidovits S, Hakim A, Hammett G. Tests of Limiters for Discontinuous Galerkin Advection Algorithms[J]. Bulletin of the American Physical Society, 2012, 57.
  • 相关阅读:
    vscode的go环境配置
    百度过的问题
    javascript判定两个对象是否相等
    chattr
    kubernetes ingress example
    docker 免 sudo
    build local kubernetes env
    go channel
    rpm install and uninstall
    fluentd v0.12 gem install fluent-plugin-webhdfs error
  • 原文地址:https://www.cnblogs.com/li12242/p/5296998.html
Copyright © 2011-2022 走看看