I successfully used HLvL scheme (https://epubs.siam.org/doi/10.1137/1025002) to numerically solve set of equations of this type:

$\frac{\partial u}{\partial t} + \frac{\partial f(u)}{\partial x} = 0$

where $u$ and $f(u)$ are column vectors. The solution was in very good agreement with the exact solution. However, when I tried to solve

$\frac{\partial u}{\partial t} + \frac{\partial f(u)}{\partial x} = w$

where $w$ is a non-zero column vector, I did not get good results. I could not find any mistake in my calculations or my code, so I am starting to ponder whether this scheme is able to solve it.

In the original Harten's etc. article they discussed only the first set of equations and I did not find any article where people would use it like I am trying to.

So, is HLvL scheme able to solve this set of equations?

  • $\begingroup$ $w$ is $(0, Cu_1)$ (I have only two equations). And I calculated only eigenvalues of $A = \partial F/ \partial u$, do I need to calculate $\partial w/ \partial u$ too? I don't see why it's needed, conservative form should be just $\partial u/ \partial t + A \partial u/ \partial x = w$ or not? And source term is solved together with fluxes and it is explicit. $\endgroup$ – Andrej Nov 8 '18 at 17:29
  • 1
    $\begingroup$ The eigenvalues of the source term tell you the stiffness and whether it acts as a source (positive real part of eigenvalues) or a sink (negative real part of eigenvalues). If it is stiff, then there are numerical issues in integration. If it is a sink term, then explicit time stepping requires very small time steps for accuracy and implicit time stepping for the term is preferred. If it is a source term, explicit time stepping is preferred and only limited by the desired accuracy, while implicit stepping can be unstable. $\endgroup$ – tpg2114 Nov 8 '18 at 17:32
  • $\begingroup$ Zero eigenvalues makes things more complicated: math.stackexchange.com/q/1853382 $\endgroup$ – tpg2114 Nov 8 '18 at 17:54
  • 1
    $\begingroup$ Consider to spell out acronyms. $\endgroup$ – Qmechanic Nov 8 '18 at 18:30

The short answer is yes, the HLL scheme and its variants to eliminate oscillations and/or enforce the proper entropy solution can be used to solve systems with source terms on the right hand side. However, the devil is in the details and there are several places where the solutions can go off the rails.

So the long answer is that how you discretize the source term in time will impact the quality of the solution. If the source terms are stiff, in other words if the ratio of the largest to smallest magnitude eigenvalues is large, then the limiting factor in choosing the time step may not be the eigenvalues of the flux jacobian like it is for the problem without the source term.

Stiffness is not the only factor though. If the real part of the eigenvalues of the source term jacobian are positive, then the source term is a source. If the real part is negative, then the source term is a sink. If you have multiple equations, it is possible that you have both sources and sinks depending on the equation.

For sink terms, explicit temporal integration is usually a bad idea because it requires small time steps for stability. Too large of a time step and it can over-shoot the zero point and give you negative quantities, which is generally an unrealizable solution. Therefore, implicit integration is preferred, which will always give a realizable solution and permits larger time steps (although if stiff, smaller time steps will be desired for accuracy).

For source terms, the opposite is true. Implicit time integration is not desirable, while explicit time integration is unconditionally stable. But you may want to take smaller time steps still to preserve accuracy.

For mixed problems, you can try to split the terms into sources and sinks and do a mixed integration (IMEX temporal scheme). Or just bite the bullet and run implicit for everything, or explicit with small time steps.

This is all independent of whether the spatial terms are explicit or implicit in time. In fact, it is independent of how you discretize the spatial terms entirely -- this is why HLL should work fine, along with any other spatial discretization scheme.

And you can choose to use a fractional step, or operator splitting, method to treat the temporal integrations differently. This will introduce a steady-state splitting error proportional to the eigenvalues of the product of the operators, unless the spatial and source operators commute (not likely for real problems). The splitting errors can be corrected if needed, but it takes more work.

All of these issues are rather complex and subtle. Many papers and theses have been written about how to do it correctly, including from me. What is best for your problem may not be what is best for another problem. Hopefully this has enough answer to give you a jumping off point for further reading about methods to solve your particular problem. If you need help with the analysis or algorithmic aspects, the questions will be better suited for SciComp.

  • $\begingroup$ Hello, could you please give me a link to any of those articles you mentioned? For example yours? I have dwelled into the topic again :) $\endgroup$ – Andrej Apr 19 at 9:41
  • 1
    $\begingroup$ @Andrej Sure -- I did this in the context of chemical source terms and dual-time schemes. The introduction has discussions and references for the things I talked about in this answer, including the classic references for things like Strang splitting and newer ones studying the impact of splitting errors. $\endgroup$ – tpg2114 Apr 19 at 10:25

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.