I had a question regarding the implementation of the TVB limiter for the RKDG method by Cockburn. I have seen that some implementations of the DG method use normalized Legendre polynomials such that the basis functions take the form

$$ \phi_{i}^{k}(x) = \sqrt{2k + 1}P^{k}(x). $$

With this formulation, we have $$ u_{h}(x) = \bar{u} + \sqrt{3} u_{x} \phi_{i}(x) $$

Therefore we have a limited slope of the form

$$ s_{i}^{m} = \frac{1}{\sqrt{3}} \text{minmod} \left(\sqrt{3} u_{x}, \bar{u}_{i} - \bar{u}_{i-1}, \bar{u}_{i+1} - \bar{u}_{i}\right) $$ However, I am using a non-normalized Legendre modal formulation. As such, should'nt my limited slope just be

$$ s_{i}^{m} = \text{minmod} \left(u_{x}, \bar{u}_{i} - \bar{u}_{i-1}, \bar{u}_{i+1} - \bar{u}_{i}\right)? $$

If I don't have the normalization constants my results are not correct. I am currently validating my 1D solver on the famous Sod-Shock tube. As further details my system of equations with my DG formulation is of the form

$$ \frac{\Delta x}{2m + 1} \frac{d}{d t} c_{i,m}(t) - \int_{\Omega_{i}} f\left( \sum_{m=0}^{k} c_{i,m}(t) \phi_{i,m}(x) \right) \frac{\partial \phi_{i,l}(x)}{\partial x} dx + \left[\hat{f} \left( \sum_{m=0}^{k} c_{i,m}(t) \phi_{i,m}(x)\right) \phi_{i,l}(x)\right]^{x_{i}}_{x_{i-1}} = 0, m = 0, \dots, k $$


The paper of Cockburn and Shu [1] explains this. If the solution is $$ u_h(x) = u_i + u_{xi} \phi(x), \qquad \phi(x) = \frac{x - x_i}{\Delta x/2} $$ Then the limiter is $$ u_{xi} = minmod(u_{xi}, u_i - u_{i-1}, u_{i+1}-u_i) $$ Does your solution representation look as in the first equation above ?

Also, the solution with normalised Legendre basis will look like this $$ u_h(x) = u_i + u_{xi} \sqrt{3} \phi(x), \qquad \phi(x) = \frac{x - x_i}{\Delta x/2} $$ Then the limiter is $$ u_{xi} = \frac{1}{\sqrt{3}} minmod(\sqrt{3}u_{xi}, u_i - u_{i-1}, u_{i+1}-u_i) $$

[1] https://doi.org/10.1006/jcph.1998.5892

| cite | improve this answer | |
  • $\begingroup$ Thank you for your comment. I realized that the reason why I was getting wiggles in my solution was that I was applying the slope limiter to the conservative variables as opposed to applying the limiter to the characteristic variables. I get very good results now. As a side question, is there an advantage to applying the slope limiter to the primitive variables as opposed to the characteristic variables? $\endgroup$ – NumericalKid Feb 1 at 17:54
  • $\begingroup$ You could apply to primitive variables just as you do for characteristic variables. But there is some theoretical basis to limiting characteristic variables; you get TVD property at least in a linear case. The computational cost will be more or less same, so it seems good to limit characteristic variables. $\endgroup$ – cfdlab Feb 2 at 5:40
  • $\begingroup$ Since your question is sort of answered, can you close this question. $\endgroup$ – cfdlab Feb 2 at 5:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.