Can someone give some references to understand what's the differences between a component-wise and a characteristic-wise ENO scheme?

If I'm right, the characteristic variables come from the diagonalization of flux matrix but I don't see how it comes to play when doing ENO and what's the advantage of it.

  • 2
    $\begingroup$ I admittedly know little about WENO itself but my guess with experience with using limiters is that reconstruction based on characteristic values isolates each field in a way that respects the wave structure of the problem where as component-wise is rather hap-hazard in this respect. Perhaps someone with more (W)ENO experience can respond more fully. $\endgroup$ Dec 16, 2014 at 0:26

1 Answer 1


In both components-wise and characteristic variable methods, the basic ENO formulation remains the same. In this answer, Only finite volume formulation is considered. however, FD is similar in philosophy and can can be studied from the references.

note: $i$ is the cell under consideration. $j$ is the generic index for cells.

Implementation Details [1]

1. Component-wise ENO

This is the most straightforward procedure.

The procedure is similar as that for a scalar 1d equation. We have a vector of conserved variables $\bar u_{n \times 1} = [u_1, u_2, ... ,u_n]^T$ and the flux vector $f_{n \times 1} = f(\bar u)$.

We carry out ENO reconstruction for each component of $\bar u$ (lets call it simply $u$) separately. This is not a true decoupling.

This gives us left and right values for $u$ ($u_l $ and $u_r$) at $x_{i+\frac{1}{2}}$. Doing this for all components gives us $\bar u_l$ and $\bar u_r$ at $x_{i+\frac{1}{2}}$. Then flux $f$ at $x_{i+\frac{1}{2}}$ is found out by solving the Riemann problem at $x_{i+\frac{1}{2}}$. Either exact or approximate Riemann solver can be used for this. Some of the hyperbolic systems, including Euler's equations, have exact Riemann solutions. A low order solution is more sensitive towards choice of Riemann solver. Hence we can use more cost effective approximate solvers at high orders (however, we don't use component method for high orders!).

Once the fluxes are formed, we can advance in time using appropriate time integrator.

Similar approach is taken for WENO.

2. Characteristic-wise ENO

a. Linear system with constant coefficient matrix $f'$:

Consider the same system of equations. Considering it to be a (strictly) hyperbolic system, the Jacobian $f'$ (or coefficient matrix $A$ as in some cases), has $n$ distinct eigenvalues ($\lambda_j(\bar u); j=1,...,n$) and corresponding right ($r_j(\bar u); j=1,...,n$) and left eigenvectors ($l_j(\bar u); j=1,...,n$).

let $R = [r_1, r_2, ... , r_n]$ and $\Lambda = diag(\lambda_1, \lambda_2,...,\lambda_n)$ be constant everywhere. Then we can diagonalize the Jacobian matrix using $R, R^{-1}$ and $\Lambda$.
i.e. we get,

$\bar v_t + \Lambda \bar v_x = 0$

where, $\bar v$ is the characteristic variable vector. Now each component of $\bar v$ is truely decoupled and this is nothing but $n$ separate hyperbolic equations. We can then do the ENO procedure on each one to get $v$ at a particular $x_{i+\frac{1}{2}}$. After all the components are treated in this fashion, we get $\bar v$ at $i+\frac{1}{2}$. After this, we can recover $\bar u$ from $\bar v$ by using $\bar u_{i+\frac{1}{2}} = R \bar v_{i+\frac{1}{2}}$.

b. Non linear system or variable coefficient matrix $f'$:

The main problem with this type is that, $R, R^{-1}$ and $\Lambda$ change with u. So we need to freeze them in space at $x_{j+\frac{1}{2}}$. This is done by taking arithmatic or Roe or $somefancy$ average or $\bar u_j$ and $\bar u_{j+1}$ at $j+\frac{1}{2}$. Then

$R_{j+\frac{1}{2}} = R(\bar u_{j+\frac{1}{2}}) ; \forall j$

We can get characteric variable $v_{j+\frac{1}{2}}$ from $u_{j+\frac{1}{2}}$ using this $R$. In other words, the transformation into the characteristic variable is local. Then perform scalar ENO reconstruction on all $v$ and obtain values at $i+\frac{1}{2}$.

The rest of the procedure remains the same as discussed earlier,

Transform back to $u$ at $i+\frac{1}{2}$.

Solve Riemann problem $\rightarrow$ Find flux.

Time integration.

Why and when to use component method:

Straightforward and Really simple to use.

We need to perform less number of operations. Works well for many problems especially if order of accuracy is small (2 or maybe 3 in some cases). Suitable for simple test cases.

Characteristic method:

More robust.

As Kyle Mandli very rightly pointed out in his comment,
since we are truly decomposing the variables, the upwind fluxes will be more accurate. We are taking into consideration the wave direction and speed. For more demanding test problems and higher accuracies, we should use the characteristic decomposition. Also for highly nonlinear equations, one should use the characteristic decomposition for obtaining a robust solver.

As an example, you can study the FD implementation of WENO to equations of ideal magnetohydrodynamics [2] (because, it is a very good example to demonstrate the use of the characteristic method. Also you will get to see the FD implementation, which is not discussed here).

Along with this, the text on Computational Gasdynamics by Culbert Laney discusses about ENO implementation.


[1] Shu, C. W. (1997). Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes for Hyperbolic Conservation Laws. ICASE Report, (97 - 65)

  • Very detailed explanation. In fact I have repeated here most of what is given in this report. Here is the link for the report.

[2] Jiang, G.-S., & Wu, C. (1999). A High-Order WENO Finite Difference Scheme for the Equations of Ideal Magnetohydrodynamics. Journal of Computational Physics, 150(2), 561–594.

[3] PyWENO can be used for obtaining the coefficients easily.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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