> <\body> |>>> Semester I 2006, Brown. Send corrections to . Any mistakes or omissions in these notes are certainly due to my typing. <\table-of-contents|toc> |.>>>>|> Theory of One-Dimensional Scalar Conservation Laws> |.>>>>|> Numerics> |.>>>>|> Examples of conservative schemes |.>>>>|> > The Godunov Scheme |.>>>>|> > The Lax-Friedrichs Scheme |.>>>>|> > The local Lax-Friedrichs Scheme |.>>>>|> > Roe Scheme |.>>>>|> > Engquist-Osher Scheme |.>>>>|> > Lax-Wendroff Scheme |.>>>>|> > MacCormack Scheme |.>>>>|> > Higher-order TVD Schemes |.>>>>|> > General Framework of a Conservative Finite-Volume Scheme |.>>>>|> > Generalized MUSCL Scheme |.>>>>|> > Essentially Non-Oscillatory Schemes |.>>>>|> > Weighted ENO Schemes |.>>>>|> > Finite Difference Methods |.>>>>|> > Accuracy |.>>>>|> > Stability |.>>>>|> > Two Space Dimensions> |.>>>>|> FV methods in 2D |.>>>>|> > The Linear Case |.>>>>|> > The Nonlinear Case |.>>>>|> > Finite Difference Methods |.>>>>|> > Systems of Conservation Laws> |.>>>>|> A First Attempt: Generalize Methods from AM255 |.>>>>|> > How to Generalize Scalar Higher-Order Schemes to Systems |.>>>>|> > The Nonlinear Case |.>>>>|> > Discontinuous Galerkin method> |.>>>>|> Some Theoretical Properties of the Scheme |.>>>>|> > <\equation> u+f=0, where is a function of and . <\equation*> |\t>u\x+f|)>-f|)>=0, is the integral form of (). <\equation> +f=0,>>|=u.>>>>> Characteristics: Define a function > by <\equation*> x|\t>=f,t|)>|)>,>>|=x.>>>>> Then <\equation*> u,t|)>|\t>=ux+u=uf(u,t|)>+u =f+u=0. So ,t|)>=u,0|)>=u|)>>. All that holds under the assumption that we have a smooth solution. Which we don't. :( Consider : <\equation> +|2>|)>=0,>>|=sin.>>>>> Consider the characteristics at /2> and /2>.>They intersect and propagate different values, so the above theory breaks down.>There is no global (in and ) solution to (). The concept of \Pweak solution\Q helps us out now. Reconsider the integral form: <\equation> |\t>u\x=f|)>-f|)> For > solutions, ()>(). Attempts at defining weak solutions: <\itemize> If satisfies () for almost all > then in is called a weak solution to (). (physically meaningful, correct) If for any \C|)>>, <\equation*> ->>>+f\|)>\x*\t->>u\\x=0, then in is called a weak solution to (). (more meaningful mathematically\Umotivated by multiplication by test function and integration by parts.) It turns out the two are equivalent. (Not proven here.) Now, assume a solution that has two > segments separated by a curve on which no regularity is demanded of . Then <\eqnarray*> |||\t>u\x+f|)>-f|)>>>||||\t>>u\x+>u\x|]>+f|)>-f|)>>>||||)>,t|)>x+>u\x-u|)>,t|)>x+>u+f|)>-f|)>>>||||)>,t|)>x->f\x-u|)>,t|)>x+>f\x+f|)>-f|)>>>||||)>,t|)>x-f|)>,t|)>|)>+f|)>-u|)>,t|)>x-f|)>-f|)>,t|)>|)>+f|)>-f|)>>>||||)>,t|)>x-f(u|)>,t|)>-u|)>,t|)>x+f(u|)>,t|)>.>>>> Now use the shorthand <\eqnarray*> >|>||)>,t|)>>>|>|>||)>,t|)>>>>> and \ write <\equation*> 0=f|)>-f|)>-x-u|)>. Now distinguish two cases: <\itemize> =u>: This is fine. \u>: We get the : <\equation*> x=|)>-f|)>|u-u> If is piecewise > and is discontinuous only along isoated curves, and if satisfies the PDE when it is >, and the Rankine-Hugoniot (RH) condition along all discontinuous cruves, then is a weak solution of (). <\example> Consider the following : <\equation*> +|2>|)>=0>>|=|0,>>||0.>>>>>>>>>> The IC is just propagated in time to form a weak solution. (a ) <\example> Now flip the initial conditions: <\equation*> +|2>|)>=0>>|=|0,>>||0.>>>>>>>>>> The propagated ICs also form a weak solution. But consider <\equation*> u=|-t,>>||x\t,>>||t.>>>>> This is also a weak solution. (a ) Oops. So, we need a third category of solutions, called , where neither uniqueness nor existence poses a big problem. Consider adding an artificial viscosity: <\equation*> u>+f>|)>=\u> with a very small \\1>. Then we would wish to define an entropy solution as <\equation*> lim\0>u>=u in some norm. In fact, this is entropy solution. Pick a function > called the if \0>, i.e. if it is convex. Then multiply the conservation law with viscosity by >|)>>: <\eqnarray*> >|)>>+f>|)>|)>>||U>|)>u>>>|>|)>+F>|)>>||>|)>u>|)>-U>|)>>|)>|]>>>|>|)>+F>|)>>|>|>|)>u>|)>>>>> where <\equation*> F=U|)>f|)>\\\F=Uf. To support our argument as \0>, once again take a test function \C\\|)>>, \0>. <\eqnarray*> >>>>|)>+F>|)>|)>\*\x*\t>|>|>>>>|)>u>|)>*\\x*\t>>|>>>U>|)>\+F>|)>\*\x*\t>|>|>>>U>|)>u>\\x*\t>>|||>>>U>|)>\\x*\t>>>> DCT allows taking the limit. We get the <\equation*> >>>U\+F\*\x*\t\0. <\itemize> On a domain |]>>, with periodic BCs, consider <\equation*> +|2>|)>=0>>|=+sin x>>>>> Find the maximum >> such that \C> for T>>. Write a code to solve for when T>>. (Hint: Look for equation implicitly defining , maybe use Newton's method). Test the code for >, >, ,0.09|)>>. <\definition> A conservation law is called iff \0>. If \0>, it is called , if \0> it is called . Shocks must appear for genuinely nonlinear conservation laws under periodic or compactly supported initial conditions. Consider a box containing the support of a test function \C>\\|)>> and let > be piecewise > with one discontinuity along |)>>. |gr-frame|>|gr-geometry||gr-dash-style|10|arrow-length|10ln|arrow-height|6ln|||>>|||>>||||>||||>||>>||>>||>>||>>||>||>||>||>||>||>|>|>|>|>|=|)>>|>>>|> Then consider <\eqnarray*> |>|\+F\|)>\x\t>>|||>\+F\|)>|\>\\\>\x\t->\+F\|)>\x\t>>|||>+F|)>|\>\ \x \t-\>\,F|)>\\ \s-\>\,F|)>\\ \s>>|||>\U|)>-F|)>||)>>> \s->\U|)>-F|)>|>> \s>>|||>|>>|)>-U|)>|)>-|)>-F|)>|)>|]>\s.>>>> We obtain <\equation*> x|)>-U|)>|)>-|)>-F|)>|)>\0. If we introduce the notation \f|)>-f|)>>, then this condition becomes <\equation*> x\. For all between > and >, we need to have <\equation*> -f|)>|u-u>\|\>\-f|)>|u-u>, where is the shock speed, known from the Rankine-Hugoniot condition. <\equation*> f|)>\s\f|)>. |gr-frame|>|gr-geometry||arrow-length|10ln|arrow-height|6ln|||>>|||>>|||>||>|||>|>|>|>|>||>||>|>|>>>|Illustration of Lax's entropy condition. Characteristics are going \Pinto\Q shocks.> It is easy to see that the Oleinik condition implies Lax's condition. Unfortunately, the converse does not hold. Lax's entropy condition does not guarantee uniqueness\Ubut it is a necessary condition. However, if \0> uniformly (i.e. the conservation law is genuinely nonlinear), Lax's entropy condition is sufficient for to be the entropy solution. For \0>, Lax's condition becomes even simpler. Consider <\equation*> f|)>\s=>|>\f|)> and note that > is monotonically increasing, such that the middle part is automatically satisfied. Thus, Lax's condition becomes <\equation*> f|)>\f|)>. I.e. looking towards the right, we can only jump down. <\theorem> The solutions to <\equation*> >+f>|)>=\u>,>>|>=u>>>>> are >-contractive. I.e. let >> be the solution of <\equation*> >+f>|)>=\v>,>>|>=v.>>>>> Then <\equation*> >,t|)>-v>,t|)>|L|>\-v|L|>. <\proof> We need to show <\equation*> 0\|\t>>>>-v>|\|>\x. |gr-frame|>|gr-geometry||gr-color|default|arrow-length|10ln|arrow-height|6ln|||>>|||>>|||>|||>||||>|||>>|||>>|||>>|||||||>|>-v>>|>|>|>|>|>|>|>>>|> Let > be the sign of >-v>> on > and consider, using Leibniz's rule, the following: <\eqnarray*> |||\t>>>>-v>|\|>\x>>||||\t>>>>-v>|\|>\x>>|||s>,t|)>-v>,t|)>|\>|]>x>>|||>,t|)>-v>,t|)>|\>|]>x>>|||>>*|\>>-v>|)>\x>>|||>>s>-v>|)>\x>>|||>>s>-v>|)>\x>>|||>>s>|)>+\u>+f>|)>-\v>|]>\x>>|||s>,t|)>|)>+f>,t|)>|)>+f>,t|)>|)>-f>,t|)>|)>|\>+\>,t|)>>->,t|)>>->,t|)>>+>,t|)>>|]>|}>>>||>|>>> To see why the orange and blue parts together each are 0>, just look at what's happening at the 1/2>>. The entropy solution has a non-increasing total variation. <\equation*> TV\sup-u|h>|\|>\x. <\equation*> TV\,t))\TV|)>, because ...? Consider <\equation*> +|)>=0>>|=|0,>>||0.>>>>>>>>>> The entropy solution is <\equation*> u=|t,>>||t.>>>>> Note also that the analytic solution satisfies a , i.e. <\equation*> minu\u,t|)>\maxu. Remember for +a*u=0>, we wrote down an : <\equation*> u=u-a\t|\x>-u|)>. Let's write a direct generalization, for the (equivalent...?) PDE +u*u=0>: <\equation*> u=u-t|\x>u-u|)>. But for 0>, -u=0>, and for , =0>. Altogether, <\equation*> u=u. Bad. <\definition> A scheme to solve conservation laws is called iff it can be written as <\equation*> u=u-t|\x>-|]>, where > is <\enumerate-numeric> Lipschitz continuous, ,u|)>=f> . <\theorem> If the solution |}>> to a conservative scheme converges (as t,\x\0>) boundedly a.e. to a function >, then is a weak solution of the conservation law. <\proof> Let =\,t|)>> for \C>. Then <\eqnarray*> ||-u|\t>+-|\x>|)>\\x\t>>|||-\|\t>u+-\|\x>|)>\x\t>>|||DCT,>>|>>>u+\f|)>\x \t=0.>>>> \; <\remark> Above, we used partial summation: <\equation*> >>a-b|)>=->>-a|)>b-a>b+a>b>. The Godunov scheme for the conservation law <\equation*> +f=0,>>|=u>>>>> was derived from the fact that the Riemann problem <\equation*> +f=0,>>|=>|0,>>|>|0>>>>>>>>>> can be solved exactly. (see above) For Burgers' Equation, we get <\equation*> u=>|s*t,>>|>|s*t,>>>>>>|\u,>>|>|ut,>>||t\x\ut,>>|>|ut,>>>>>>|\u,>>>>> where <\equation*> s=|)>-f|)>|u-u>=-u|]>|u-u>=+u|)>. The same technique would work for all convex (\0>) or concave conservation laws. (Also cf. book by Toro\U500 pages of Riemann solutions.) Note that conservation laws have finite propagation speed. Suppose we choose a scheme where we consider the solution constant in each cell (Conceptually, imagine that this value >> is the cell average of cell >\Uthis is also how you arrive at >>.) If we choose x> and t> such that <\equation*> max|\|>\t\\x, then in a sequence of cells >, then the solution in cell in the next timestep is not influenced at all by the solution in cells and . Thus we only need to solve a Riemann problem at each cell interface and we're done. Then <\eqnarray*> >>>>+f|)>\x*\t>||>|x>>>u*\x-x>>>u*\x+t>>>f|)>*\x-x>>>f|)>\x>||>>> Now consider that for the Riemann solution > is a function of only one variable =x/t>. In fact, the substitution <\eqnarray*> >>||>|>>||>>> leaves the PDE and the Riemann ICs invariant. (This is also called .) Thus is constant along 1/2>>, making the last two integrals trivial. The Godunov scheme can then be written as <\equation*> >=>-t|\x>|)>-f|)>|)>. This is a conservative scheme because the flux ,u|)>> depends on the right values (and Lipschitz continuity holds as well, but is a bit tricky to prove.) The numerical flux of the Godunov scheme can be written as <\equation*> =\u\u> f>|\u,>>|\u\u> f>|\u.>>>>> The numerical flux here is <\equation*> =|)>+f|)>-\-u|)>|]>, where =max|\|>>. The numerical flux here is <\equation*> =|)>+f|)>-\-u|)>|]>, where =max,u|)>>|\|>> (where we note that ,u|)>> is meant as a non-empty interval no matter which end of the interval is greater). The numerical flux here is <\equation*> =|)>>|\0,>>||)>>|\0,>>>>> where <\equation*> a=|)>-f|)>|u-u> is the speed of the solution as given by the RHC. The numerical flux here is <\equation*> =f|)>+f|)>, where <\eqnarray*> >||max,0|)>\u+f,>>|>||min,0|)>\u.>>>> <\subsubsection> Lax-Wendroff Scheme Consider <\eqnarray*> >||>>|>||=-|)>=-u|)>=f|)>.>>>> The general idea is: <\itemize> Repeatedly replace time by space derivatives by using the PDE, Discretize space derivatives by (2nd order central) FD formulae. Derivation: <\eqnarray*> >||+\t*u+t|2>u>>|||-\t*f|)>+t|2>f|)>>>|>||-\t|)>-f|)>|2\x>+t|2>|)>|)>-f|)>|\x>-f|)>-f|)>|\x>|]>\x,>>>> where <\equation*> u=+u|2>. The numerical flux becomes <\equation*> =|)>+f|)>-\f|)>|)>-f|)>|)>|]>, where <\equation*> \=t|\x>. The idea behind MacCormack is of the \Ppredictor-corrector\Q sort. <\eqnarray*> >||-\|)>-f|)>|)>,>>|>||u+u+\|)>-f|)>|]>.>>>> The numerical flux is a bit ugly: <\equation*> =|)>+f-\|)>-f|)>|)>|)>|]>. <\enumerate> Code the Godunov and Lax-Friedrichs scheme for solving a Riemann problem of Burgers' Equation. Test the code with <\enumerate-alpha> =1>, =-0.5>. =-0.5>, =1> using points equally spaced. Show the solution graphically along with the exact solution. Find the formula for the entropy solution of <\equation*> +f=0,>>|=>|0,>>|>|0>>>>>>>>>> where \0>. Show that the Godunov flux and the Roe flux are both Lipschitz-continuous. <\definition> A scheme <\eqnarray*> >||-\,\,u|)>-,\,u|)>|)>>>||>|,\,u|)>>>>> is called a if is a monotonically nondecreasing function ,\,\,\|)>> of each argument. In the special case of 3-point schemes <\equation*> ,u|)> the scheme is a monotone if ,\|)>> plus a restriction on >: <\equation*> G,u,u|)>=u-\,u|)>-,u|)>|]>. Clearly, if ,\|)>>, then ,?,\|)>>. To clean up the second argument, consider <\equation*> G|\u>=1-\-|\>0>|]>\0. If -|)>\1>, then ,\,\|)>>. Examples: The Lax-Friedrichs flux is monotone: <\eqnarray*> ,u|)>>|||)>+f|)>-\-u|)>|]>\=max|\|>,>>|>|||)>+\|]>\0,>>|>|||)>+\|]>\0.>>>> <\theorem> Good properties of monotone schemes: <\enumerate-numeric> \v> for all (``v>'') implies \G> for all . <\equation*> minj>u\G\maxj>u. >-contraction: (this was already obtained for the PDE) <\equation*> -G|L|>\. This immediately implies the otal ariation iminishing (TVD) property: <\equation*> |BV|>\. <\proof> 1 is just the definition. 2. Fix . Take <\equation*> v=stencil arond i>u>|i\j,>>|>|.>>>>> Then clearly \v> for all , so that\ <\equation*> G\G=v=maxj>u. Other way around runs in an analogous fashion. 3. Define <\equation*> a\b=max,a\b=min,a=a\0,a=a\0. Then let <\equation*> w\u\v=v+-v|)>>.(\) We have <\equation*> G\G\G\j by property 1. Then <\equation*> G-G\|j,>>||)>-G|)>>|j.>>>>> Thus <\equation*> G-G\-G|)>. Therefore <\eqnarray*> -G|)>|)>>|>|-G|)>\)>w-v)>-v|)>.>>>> because we are treating a law, meaning <\equation*> u=u,(\\) which holds for . (Why?) Also consider <\eqnarray*> -G|\|>>||-G|)>+-G|)>>>||>|-v|)>+-u|)>>>|||-v|\|>.>>>> (This is also called the .) 4: Take =u> in 3. <\theorem> Solutions to monotone schemes satisfy entropy conditions. <\proof> We'll prove a particular case, namely <\equation*> U= for any \>. Then <\equation*> U=|c,>>||c>>>>> and =2\\0>. <\quote-env> (Recall that entropy conditions were of the form, ``pick an entropy function \0>, then +F=0>'', where is the entropy flux <\equation*> F=Uf\u satisfying =Uf>.) Here we let <\equation*> F=sign-f|)>. We claim that the is true, i.e. <\equation*> |)>-U|)>|\t>+-|\x>\0, where <\equation*> =u|)>-u|)>. Observe that we've abused notation a bit, i.e. <\equation*> |)>\,\,\,\|)>. First step: Try to show <\eqnarray*> -c|\|>-\-|)>>||u|)>-Gu|)>.>>>> Now consider: <\eqnarray*> |Gu|)>>||u|)>-\u|)>|)>-u|)>)>>|Gu|)>>||u|)>-\u|)>|)>-u|)>)>>|-:0\Gu|)>-Gu|)>>||-c|\|>-\-|)>.>>>> Next, note that <\eqnarray*> |>>|,c|)>\Gu|)>,>>|>|||)>\Gu|)>,>>|c\u>|>|u|)>,>>>> where the step \P>\Q is true because if the arguments of are constant, then only the > term comes into play, just yielding back the argument. Also <\equation*> -c\u\-Gu|)>. Then <\eqnarray*> |)>>||-c|\|>\Gu|)>-Gu|)>>>|||-c|\|>|\>|)>>-\-|)>.>>>> <\theorem> Monotone schemes are at most first-order accurate. After this depressing result, we will have to look for different classes of schemes. For example, in order of decreasing strength: <\itemize> Monotone: see above. TVD: A scheme is TVD if <\equation*> TV|)>\TV|)>. Monotonicity-preserving: A scheme is monotonicity-perserving if <\equation*> \u \j|}>\\u \j|}>. Let's prove that the above is actually in order of decreasing strength, i.e. <\theorem> A TVD scheme is monotonicity-preserving. <\proof> Assume \u> for all . If there exists a > such that +1>\u>>. Modify to be constant outside the stencil used to compute >> and +1>>. But the reversal of the order of these two values means that the TVD property is violated. Later in this class, a theorem by Godunov will show that all the above properties are actually the same, and thus first-order, and thus useless. :-/ <\definition> A scheme is called a \P\Q if it is linear when applied to a linear PDE: <\equation*> u+a*u=0, where is a constant. A linear scheme for <\equation> u+u=0 \ can be written as <\equation*> u=c|)>u, where |)>> are constants which may depend on =\t/\x>. A linear scheme for () is monotone iff <\equation*> c|)>\0\l. This is why they are also called \P\Q. <\theorem> For linear schemes, monotonicity-preserving>monotone. <\corollary> For linear schemes, monotonicity-preserving and TVD schemes are at most first order accurate. <\proof> (of Theorem ) If the above linear scheme is monotonicity-perserving, then consider <\equation*> u=|-\,>>||-\.>>>>> This is a monotone function. Then <\eqnarray*> u>||c|)>u>>|u>||c|)>u>>|-:\u>||c|)>\u>>>> where we note that u>=1> if >, and zero otherwise. <\equation*> \u=c|)>\u=c>|)>\0, due to the requirement of monotonicty-preserving-ness, meaning all >|)>\0>, such that the scheme is monotone. So, we have <\equation*> |\>\\MP where the implication \P>\Q only holds for linear schemes. For a scheme to be consistent, =0> if is a constant solution (where > is the local truncation error). For a scheme to be at least first order accurate, =0> if is a linear solution of the PDE. Consider a linear scheme <\equation*> u=cu. Plug a constant in there, and we obtain <\equation*> 1=c. Plug a linear term in there, and obtain <\eqnarray*> x-\t>||c\x-n\t|)>>>|t>||x(-l)c>>|l*c>||>>>> For a quadratic term, we would get <\equation*> lc=\. So, now try to derive a contradiction between any two of the above to refute second-order. To that end, define <\equation*> \=>|)>,\=>|)> and now use Cauchy-Schwarz: <\equation*> \=\\|\|>|\>lc|)>c|)>=\, where equality in \P>\Q holds only if > and > are linearly dependent, i.e. <\equation*> l>=\>, where > is just some constant independent of . <\theorem> A linear monotone (TVD) scheme is at most first-order accurate. Consider <\equation*> u+f=0, where we will worry about the computation of the spatial derivative now and about the time derivative later. Then we can use backward differences <\equation*> |)>-f|)>|\x> for first-order accuracy or <\equation*> |)>-f|)>|2\x> for second-order accuracy or <\equation*> f|)>-2f|)>+f|)>|\x> for third-order. \; Consider our conventional notation of =,x|]>>, where x=x-x>. Now integrate the PDE: <\equation*> |\t>>>u*\x+f|)>|)>-f|)>|)>=0 Denote <\equation*> >=x>>>u*\x. Then <\equation*> |\t>>+x>[f,t|)>|)>-f,t|)>|)>. A finite volume scheme is of the form <\equation*> |\t>>+x>-|]>, where > is the numerical flux. We want <\equation*> \f,t|)>|)>. For the time being, let's assume \0> and =f>|)>>, which is the numerical flux for Godunov, Roe, Engquist-Osher. See below for the case of unknown sign. <\equation*> =>,>|)>, where ,\|)>>. So, we can try to compute > using the information >,>|}>> as <\eqnarray*> >>||>+>|)>,>>|>>||>->,>>>> so that <\eqnarray*> >>||>|)>=f>+>|)>|)>,>>|>>||>|)>=f>->|)>|)>.>>>> The above fluxes are 2nd order accurate, and are called the 2nd order central and upwind flux, respectively. (>> is gained from the line connecting the cell centers at \ the cell averages of > and >. >> is the same for > and >.) The step from >|}>\|}>> is called . <\eqnarray*> >>||>+>->|)>|\>>>|)>,>>|>>||>+>->|)>|\>>>|)>.>>>> >> measures the distance from the cell average >> to >>. Now define <\equation*> minmod\|\,a*b\0,>>||\,a*b\0,>>||0>>>>> and set <\equation*> \minmod>,>|)>. Then consider <\equation*> >=f>+|)>. <\lemma> If a scheme can be written as <\equation*> >=>+\\>-D\>|)> with \0>, \0>, +D|)>\0> and =\t/\x>, then it is TVD. As a matter of notation, we have <\eqnarray*> u>||-u,>>|u>||-u.>>>> <\proof> Write <\eqnarray*> >>||>+\\>-D\>-C\>+D\>|)>>>|||+D|)>|]>\>+\C\>+\D\>.>>>> Thus <\eqnarray*> >|\|>>|>|+D|)>|]>>|\|>+\+>|\|>|\>+1/2>>>|\|>>+\>|\|>|\>+1/2>>>|\|>>.>>|>|\|>>|>|+D|)>+\C+\D|]>>|\|>>>|>|)>>|>||)>,>>>> which proves the claim. Next, prove that the scheme we designed above is TVD using Harten's Lemma. Rewrite <\eqnarray*> >>||>-\>+|)>-f>+|)>|]>=>-\\>|]>,>>>> with <\eqnarray*> >||>+|)>-f>+|)>|>->>=f|)>>->+-|>->>>>||||)>|>->>|\>\\>-|>->>|\>\\>|]>\0>>>> Thus our scheme is TVD.> We also get a condition for the CFL number. <\equation*> D\3/2f|)>\max|)>|\|>, which comes from <\equation*> 1-\D\1-\*max|)>|\|>\0\||||*max|)>|\|>\.>>>>> If we use a 2nd order Runge-Kutta method like <\eqnarray*> >>>||>|)>,>>|>>||>+L>>|)>|)>,>>>> then <\eqnarray*> >>|)>>|>|>|)>>>|>|)>>|>|TV>|)>+TV>>|)>|)>>>||>|TV>|)>+TV>>|)>>>||>|TV>|)>+TV>|)>>>|||>|)>.>>>> The scheme treated here is called (\Pmonotone upstream scheme for conservation laws\Q). <\enumerate-numeric> Prove: Conservative montone schemes are at most first order accurate. Prove: For every convex entropy <\equation*> U\0 and a conservative monotone scheme, there exists a consistent (,u|)>=>) entropy flux > such that the following cell entropy inequality holds <\equation*> |)>-U|)>|\t>+-|\x>\0, where <\equation*> u=u-\-|)>=H|\>,\,|\>|)>. (We proved this for =>.) Code: <\equation*> +|2>|)>=0>>|=1+sin>>>>> on x\2\> to (i) and (ii) . Use a uniform grid with . Use <\enumerate-roman> First order Godunov (upwinding) 2nd order central (>>) 2nd order upwind (>>) MUSCL () For (i): tables of > errors and orders. For (ii): Figures for . We are still considering <\equation*> u+f=0, with a scheme of the form <\equation*> >=>-\,u|)>-,u|)>|]>, where ,\|)>> is a monotone flux. Before we can seriously start considering the above scheme, we need to specify the reconstruction step, which achieves the mapping <\equation*> >|}>\>>|}>. Procedure: <\quote-env> From >|}>>, we obtain the reconstructed functions > defined on =,x|)>> and then take =P|)>>, =P|)>>. Conditions on >: <\itemize> x>>P\x=>>, x>>P\x=>> for some set of 0>. (accuracy) 3rd order reconstruction formulas: <\eqnarray*> >>||>->+>,>>|>>||>+>->.>>|>>||>+>->.>>>> We could then choose <\equation*> u=u>,u=u> and once more obtain a linear scheme, which is third order accurate and, by Godunov's theorem, should be oscillatory. Now define <\eqnarray*> >||->,>>||~>>||+>,>>>> or equivalently <\eqnarray*> >||>+,>>|>||>-|~>.>>>> Then, remember our previous modification of the reconstruction and do something analogous: <\eqnarray*> >||,>->,>->|)>,>>||~>>|||~>,>->,>->|)>>>>> and with that <\eqnarray*> >||>+>>|>||>-|~>.>>>> To show that this modification does not destroy much accuracy and is in fact TVD, consider <\equation*> >=>-\,u|)>-,u|)>|\>>+,u|)>-,u|)>|\>>|]>, where these terms correspond to the marked terms in the assumption of Harten's lemma: <\equation*> >=>+\\>|\>>-\>|\>>|)>. Now consider <\eqnarray*> >||,u|)>-,u|)>|>->>>>|||,u|)>*>+->-|>->>>>|||,u|)>|\>0 >*\|>->>|\>\\1>-|>->>|\>\\1>|]>|\>\\2>.>>||>|>>> Claim: <\quote-env> In smooth and monotone regions the scheme maintains its original high order accuracy. Consider the following Taylor expansions: <\eqnarray*> >|||)>+Ox|)>,r\2>>||||)>+u|)>x|2>+Ox|)>.>>|>>||x>>u\x>>|||x>>|)>+u|)>+u|)>|2>+Ox|)>|]>\x>>||||)>+Ox|)>.>>|>||->>>||||)>>x|>+Ox|)>.>>|>->>|||)>-u|)>+Ox|)>>>||||)>>\x+Ox|)>>>|>->>|||)>>\x+Ox|)>.>>>> Observe that the second and third arguments of the minmod function\Uit is about half as big as the first one. The monotonicity assumption above has the consequence that we may neglect the second-order terms in favor of the first-order one. <\theorem> TVD schemes are at most first-order accurate near smooth extrema. A simple argument by Harten shows something similar. Why are we restricted near smooth extrema? Suppose we are considering +u=0>. |gr-frame|>|gr-geometry||gr-dash-style|default|arrow-length|10ln|arrow-height|6ln|gr-arrow-end|\|||>>|||>>|||||>|||||||||>||>||>|x>|>|>|||>>|||>>|t>|>|>|||>>|>|>>>|Why TVD schemes don't do so well near smooth extrema.> What routes can we take out of this dilemma? Relax TVD: Only demand TVB. <\equation*> TV>|)>\t|)>TV>|)> or <\equation*> TV>|)>\TV>|)>+C\t. Both have the consequence that <\equation*> TV>|)>\\ for t\T>. TVD/TVB is also an important theoretical property: The space of all TVB functions is precompact, which has important consequences for convergence results. This leads us to using a modified minmod function (min-mod-mod? min-mod>? :-) Replace <\equation*> minmod,>->,>->|)> by <\equation*> >,>->,>->|)> with <\equation*> >\|\M\x>>|>|.>>>>> We get the following properties: <\itemize> The scheme TVB: <\equation*> TV>|)>\TV>|)>+C*M*\x*N\TV>|)>+C\t where is the total number of cells. The scheme maintains its high-order accuracy in smooth regions including at local extrema. <\equation*> =u|)>x|2>+Ox|)>=Ox|)> near smooth extrema. The choice of represents a tradeoff between oscillation and accuracy. One analysis of DG was carried out using |\|>> at extrema. Here's how to show the CEI in the semidiscrete case. Let ,\|)>> and \0>, and <\equation*> F=Uf\u>Uf-Uf. <\eqnarray*> u|\t>+x>,u|)>-,u|)>|]>>||>>> Then <\eqnarray*> U|)>|\t>+x>U|)>,u|)>-,u|)>|]>>||>>> Define <\equation*> =U|)>,u|)>->Uf\u. Then <\equation*> U|)>|\t>+x>-|]>+x>\|\>>=0. Then <\eqnarray*> >||>Uf\u-U|)>,u|)>+U|)>,u|)>->Uf\u>>|||>>Uf\u-(U|)>-U|)>,u|)>>>|||>>Uf\u->>U\u,u|)>>>|||>>U-,u|)>|]>\u\0.>>>> Then <\enumerate> \u>. \u> <\eqnarray*> -,u|)>=-,u|)>\>||>>> (End of HW discussion) This scheme goes back to the idea of the MUSCL scheme, <\equation*> u\>+minmod>->|\>>,>->|\>>|)>. Recap: Newton interpolation. Suppose we have points > with values >. Look for polynomial of degree \ such that |)>=y>. First review Lagrange polynomials and Lagrange interpolation (=\|)>>. (omitted) Next up, Newton interpolation: <\eqnarray*> |]>>||>>|,x|]>>|||]>-y|]>|x-x>>>|,x,x|]>>||,x|]>-y,x|]>|x-x>>>||>|>>> Then <\equation*> p=y|]>+y,x|]>|)>+y,x,x|]>|)>|)>+y,x,x,x|]>|)>|)>|)>. But we are doing , not interpolation. How can we convert reconstruction to interpolation? Consider that we're looking for a > such that <\equation*> x>>>p=> j=1,2,\m. Then define <\equation*> P=>p|)>\\ and observe <\equation*> P|)>=>+1/2>p|)>\\=>>\x>j=0,\,m. So how do we implement this? (Aargh, Fortran.) This algorithm works only for a uniform mesh: <\enumerate> Given the cell averages >>, >>, >>, > as Compute the un-divided differences of |\>>. <\with|font-family|tt> do i=1,n u(i,0)=ub(1) enddo do l=1,m do i =1,n-l u(i,l)=u(i+1,l-1)-u(i,l-1) enddo enddo At each location , to compute >, do <\enumerate> Find the origin of the ENO stencil <\with|font-family|tt> is(j)=j do l=1,m if (abs( u(is(j)-1,l) ) .lt. abs( u(is(j),l) ) ) is(j) = is(j)-1 enddo <\equation*> >|\>>=>>>>> (consider that ,>|}>>). Aside: Why is an interpolation polynomial monotone in the cell containing the discontinuity of a jump function? Suppose we're using 6 points, with the discontinuity in the middle cell. Then the polynomial is of degree five. The mean value theorem tells us that the derivative has zeros in the cells away from the discontinuity, of which there are four. But the derivative is of degree four, so it can at most have four zeros: Nice! There isn't one in the middle cell! (End aside) Idea: Don't stencils like ENO, use a weighted sum. Do it like this: <\eqnarray*> >||u>+wu>+wu>+\,>>>> where +w+w+\=1> and >> are the higher-order linear reconstructions above. The goal is to choose the weights such that a higher order than just with >> is achieved, if the desired smoothness is available. Choose > such that the linear combination of smaller stencils adds up to a high-order stencil. <\itemize> =\+Ox|)>> in smooth regions If the stencil > contains a discontinuity, then we would like to have =Ox|)>>. We define a \Psmoothness indicator\Q, > to measure the smoothness of the function in stencil >. <\eqnarray*> >|||+\|)>>i=1,2,3\,\=10,>>|>|||++>.>>>> Shu's graduate student Jiang derived these smoothness indicators: <\equation*> \=\x>[+\x|)>|]>\x. <\itemize> Code for Burgers': <\equation*> +|)>=0>>|=1+sin>>>>> Give same output as before <\itemize> 3rd order linear using > <\eqnarray*> >||>,>,>,>>|>||>,>,>.>>>> 3rd order TVD 3rd order TVB () 3rd order ENO 5th order ENO 5th order WENO Use 3rd order Runge-Kutta. (Might need to reduce t> to see the 5th order accuracy.) (Remember to initialize with and compare to cell averages of IC and exact solution!) We are still considering <\equation*> u+f=0, which we hope to approximate by <\equation*> u|\t>+x>-|)>=0 using <\equation*> =,\,u|)>. Our requirements are Accuracy means <\equation*> -|)>=f\|>+Ox|)>. <\lemma> (ENO paper by Shu, Osher) If there is a function > (which depends on x>) s.t. <\equation*> f|)>=x>x/2>x/2>h|)>\\, then <\equation*> f=x>x|2>|)>-hx|2>|)>|]>. All that's needed to obtain a higher-order scheme is now to approximate the function to a certain degree of \ accuracy. <\equation*> |}> \|)>|}> \>|}> |we want>|reconstruction>|}>, Then <\equation*> f|)>=f|)>|)>=x>-\x/2>+\x/2>h|)>\\=>. For the moment, assume \0>. <\enumerate> TVD Schemes: <\enumerate> Use an upwind-biased stencil to compute >, e.g. <\equation*> |)>,f|)>,f|)>|}>\. limit -f|)>=\f>. <\equation*> \f>=minmodf,f|)>-f|)>,f|)>-f|)>|)>. Then <\equation*> >=f|)>+\f>. Then use Harten's Lemma to prove TVD'ness. We only have the term > since we have a unique wind direction by assumption, in <\equation*> u=u-\(-C-u|)>+D-u|)>). By brute force, we have <\eqnarray*> >|||)>+\f>-f|)>-\f>|u-u>>>||||)>-f|)>+\f>-\f>|u-u>>>||||)>-f|)>|u-u>|\>|)>>f>|f|)>-f|)>>|\>\\1>-f>|f|)>-f|)>>|\>\\1>|]>>>>> with <\equation*> 0\D\2max|\|>. In order to lift the condition on the wind direction (\0>), we need to consider only a of montone fluxes, namely those characterized by : <\equation*> ,u|)>=f|)>+f|)>, where\ <\itemize> =f+f> f|\u>\0,f|\u>\0.>> One such example is Lax-Friedrichs: >=\\u|)>>, where =max|\|>>. <\itemize> Then use the previous (single-wind-direction) procedure w/ > instead of >. The mirror-symetric (w.r.t. ) procedure with > instead of >. Thus we obtain >. Summary of FV versus FD: |||>|>=x>>>u>>|=u,t|)>>>>|>|}>\1/2>|}>>>|>|)>|}>\>|}>>>>|,u|)>>>|=+>>>|,\|)>>>| monotone flux ,u|)>=f|)>+f|)>>>>|x> arbitrary (meshing unrestricted)>|x> uniform or smoothly mappable to uniform>>||>>>> Now consider <\equation*> u+f+g=0. The good news are: <\itemize> Theoretical properties of weak solutions, entropy solutions etc. are the same as in 1D. All properties of monotone schmes (TVD, entropy condition, >-contraction, ...) are still valid in 2D. <\theorem> In 2D, TVD schemes are at most first order accurate. <\proof> (Very rough idea) Many things can happen in 2D: |gr-frame|>|gr-geometry|||>|||||||||||||||||||||>|>|>|>|>|>|>>> \; \PTVD\Q Schemes in the literature for D means schemes which are TVD in 1D and are generalized to 2D in a dimension by dimension fashion, like this: <\eqnarray*> u|\t>+x>-|)>>||>| \|)>,f|)>,f|)>|}>>||>>> becomes <\eqnarray*> u|\t>+x>-|)>+y>-|)>>||>| \|)>,f|)>,f|)>|}>.>||>>> They really are TVD in more than one dimension. One good property we have in more than one dimension is a : Given a scheme in Harten form, i.e. <\eqnarray*> >|>|-u|)>+D-u|)>|]>>>|||-u|)>+D-u|)>|]>>>>> with <\eqnarray*> ,D,1-\+D|]>>|>|>|,D,1-\+D|]>>|>|>>> we can proceed as follows: <\eqnarray*> >||C\\D-\C-\D|]>|\>0>u>>||||\>0>u+\|\>0>u>>||||\>0>u+\|\>0>u.>>>> Thus <\equation*> min\u\max because it is a convex combination of the values in the stencil. Next, let's consider FV methods in 2D. Let <\equation*> >|~>=x\y>>>>>u\x*\y, where we note that <\eqnarray*> |~>>|>|y,>>||\>>|>|x.>>>> Next, <\eqnarray*> ||x\y>>>>>f\x*\y>>|||x\y>>>f*,y,t|)>|)>-f,y,t|)>|)>\y.>>>> Thus <\eqnarray*> |\t>>|~>+x>y>>>f*,y,t|)>|)>\y>-y>>>f*,y,t|)>|)>\y|]>>||>|y>x>>>f*,t|)>|)>\x>-x>>>f*,t|)>|)>\x|]>>||>>> The equality )> below is what breaks when we switch to a nonlinear equation. FV Scheme: <\equation*> |\t>>|~>+x>>-|]>+y>>-|]>=0. Let's consider a simple case to start: <\equation*> u+a*u+b*u=0\f=a*u,g=b*u. In this case, we only have to perform , so that <\eqnarray*> |\t>>|~>+x>y>>>f*,y,t|)>|)>\y|\>=a*)>f|)>>>-y>>>f*,y,t|)>|)>\y|]>>||>|y>x>>>f*,t|)>|)>\x|\>>>>-x>>>f*,t|)>|)>\x|]>>||>>> In general, if > and > are nonlinear, then we have to perform one reconstructions for each point of the stencil, i.e. many times along one cut line through the stencil. <\eqnarray*> |||}>|>>|}>\>|)>|}>|>|}>>>|||>>|>|>|~>|}>>||>|||>>|>|||>|}>|>,j+1/2>|}>\,j+1/2>|)>|}>|>|}>>>>> <\remark> These considerations only matter if we are interested in order of accuracy three or greater. If we are concerned with only second order accuracy, then <\equation*> >|~>=u,y|)>+Ox,\y|)> is all we need. We are still considering <\equation*> u+f+g=0, but we switch the focus of our approximation to : <\equation*> u=u,y,t|)> to get the discretized conservation law <\equation*> u|\t>+x>-|]>+y>-|]>. We need <\equation*> x>-|]>=f\|,y=y>+Ox,\y|)> for accuracy. This is identical to the 1D routine with fixed . <\equation*> \+\|)>=\ > is a vector, and so is >. For the moment, is still only 1-dimensional. <\example> Compressible flow: <\equation*> \=>>|v>>|>>>>,\|)>=v>>|v+p>>|>>>>>, where > is density, is velocity, is total energy and is pressure. For a >-law gas>, for example, we could have the constitutive relationship <\equation*> E=-1>+\v. E.g. for air =14>. (Now, drop the bold-for-vector notation.) <\example> If =A*u>, then we have the equation <\equation> u+A*u=0 If has only real eigenvalues and a complete set of eigenvectors, then () is called . Consider <\equation*> A*r=\r, so that <\equation*> A*R=R*,\,\|)>|\>>, where has the vectors > in its columns. Then we obtain <\equation*> RA*R=\. The rows > of > are called the of , with A=\l> with r=\>. Now, perform a change of variables, namely u>, so that <\equation> v+\v=0. The goal for the nonlinear case is to take the lessons from the linear case, but rewrite the scheme () so that it only acts on . If all the , then we can rewrite the upwind scheme (now reinstating bold-face-for-vector, with index for location) <\eqnarray*> \|\t>+x>\-\|]>>||>>|\|\t>+x>R\R|\>>-R\|]>>||>>|\|\t>+x>A-\|]>>||.>>>> If we do not have the above eigenvalue condition, then we need a good way to write the resulting system concisely. Why not start with some notation... <\equation*> a\|0,>>||,>>>>>a\|>>||0>>>>>. Thus =a-a> and +a>. This notation has natural generalizations to matrices and vectors. We obtain the following scheme in >: <\eqnarray*> \|\t>+x>-\|]>+\-\|]>|}>>||>>|\|\t>+x>R|\>\>-\|]>+R|\>\>-\|]>|}>>||.>>>> Note the slightly ambiguous notation here\U> is not the positive part of in the above sense, even though +A> still holds. We are still considering <\equation*> u+A*u=0. <\enumerate> Find the eigenvalues of , hence > Also find the eigenvectors of , hence and >. At each point that we need to compute a flux or a reconstruction, say at >, do the following <\enumerate> =R\> (j+q>) Use the scalar subroutine to each component of > to obtain a reconstruction >. =R\>. Now, why should we do this transformation instead of just applying the scalar subroutine to >? Consider this example: <\eqnarray*> |)>+|)>>||>||)>+|)>>||>>> Any combination of is bound to develop , travelling at different speeds. If however we calculate , then we retain the two nicely separated shocks. To drive home the point, ENO always counts on the fact that it can find a stencil near a shock where the function is smooth. For a point \P\Q between two shocks, this assumption is violated, and we will lose something. Also note that this procedure only makes sense if you are doing something nonlinear in step 2b. Next, note that if our discussion is targetted at generalizing to nonlinear conservation laws. Consequently, it is really pointless to actually carry out steps 2a and 2c each time unless the matrix is actually changing as it will be. <\note> All results about stability and convergence carry over to the case of if the numerical schemes use the above the \Pcharacteristic\Q procedure. If we consider the equation <\equation*> \+\|)>=\, then <\itemize> There is essentially no theory. The numerical procedure is essentially identical to that for the linear system case performed in (local) characteristic fields. (This+HW4 due Nov 29) <\enumerate> Add third order finite difference version to HW4. courtesy of Ishani Roy.]> <\equation*> u+f=0. To begin a FV discretization, we rewrite this as <\equation*> t>>>+f|)>\x=0, which results in: <\equation*> >|\t>+x>|)>-f|)>|)>=0 FV in its full glory is <\equation*> >|\t>+x>,u|)>-,u|)>|)>, where, to make this a scheme, we need a monotone flux ,u|)>>, which needs to satisfy the following criteria: <\itemize> ,\|)>>, =u>, Lipschitz continuous. For DG, we do something different. We multiply the PDE by a \Ptest function\Q , then integrate the result over the interval ,x|)>> <\equation*> >>+f|)>v*\x=0. Now consider and both from a finite-dimensional function space >, where ,x|)>>. The space is then given by <\equation*> V=>\\|)>}, where =,x|)>> and |)>> is a collection of polynomials of degreek> on cell >. We observe =N\>. Then perform integration by parts and write <\equation*> >>uv->>fv*\x+f|)>v-f|)>v=0. <\equation*> \; To make this into a scheme: find V> such that <\equation*> >uv*\x->fv\x+|)>v-f|)>v|\>=0 is true for any test function V>. But the term marked \P?\Q is meaningless, since the functions are double-valued at the spots in question. To motivate a meaning for the term, consider the following: If we take the test function <\equation*> v=|I,>>||,>>>>> we recover <\eqnarray*> >u*\x+f|)>|\>>-f|)>|\>>>||>|>u*\x+f|)>-f|)>>||>>> which is exactly reminiscent of the FV scheme, motivating the equality <\equation*> f|)>-f|)>=,u|)>-,u|)> and thus the scheme <\equation*> >uv*\x->fv\x+,u|)>v-,u|)>v=0. Pick a basis for >: <\equation*> V=>:1\j\N,0\l\k|}>. For example, we could take <\eqnarray*> >>||>,>>|>>|||)>\>,>>|>>|||)>\>,>>||>|>>> then <\equation*> u=u>\>,x\I. Now take >>, ,l> and put that into our scheme <\eqnarray*> >>u>\>|)>\>\x>||>|>>fu>\>|)>|\x>\>\x>||>|u>\>|)>,u>\>|)>|)>\>|)>>||>|u>\>|)>,u>\>|)>|)>\>|)>>||>>> <\equation*> \; Working with that yields <\eqnarray*> |\t>u>>>\>\>\x|\>\>>||>|,\,\|)>>||>>> where <\equation*> \=>>>|>>|>>>>>>. If the matrix above (also called the ) is, we can rewrite the scheme as <\equation*> |\t>\+|~>,\,\|)>=0, which, if |~>> is locally Lipschitz (which it is), gives a well-defined scheme. If we have a linear PDE =A*u>, where >, then the scheme becomes <\equation*> \|\t>+\+C\+D\|]>=0, where the three matrices >, >, > (each of size \>) do not depend on >. This scheme satisfies the cell entropy inequality for the square entropy =u/2>. Recall the general entropy inequality, where for an entropy satisfying \0> and a matching flux <\equation*> F=Uf\u, we have <\equation*> U+F\0 in some weak sense. <\proof> Take in the scheme: <\eqnarray*> >uu*\x->u*|\>>\x+u-u>||>||\t>|2>*\x|)>-g|)>+g|)>+u-u>||>||\t>|2>*\x|)>+-+|)>+u+g|)>-u|]>|\>>>||>>> where we have taken <\equation*> g=f\u,g=f and <\equation*> =-g|)>+u, where we observe that > is consistent, i.e. <\eqnarray*> >||+fu>>||>|u*f*\u>>||>|u\f=u*f-f\u|\>>.>>|>||+fu+f=fu.>>>> We would like to show \0> to prove the cell entropy inequality, i.e. the term above0>. <\eqnarray*> >|||)>+,u|)>u+g|)>-,u|)>u>>||||)>-g|)>-,u|)>-u|)>>>||||)>|)>-u|)>-,u|)>-u|)>>>|||-u|)>|)>-,u|)>|)>>>|||-u|)>,\|)>-,u|)>|)>.>>>> After a simple case distinction on \\\u> and using ,\|)>>, we find \0>. <\initial> <\collection> <\references> <\collection> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > <\auxiliary> <\collection> <\associate|figure> > > > > <\associate|toc> |math-font-series||1Theory of One-Dimensional Scalar Conservation Laws> |.>>>>|> |math-font-series||2Numerics> |.>>>>|> |2.1Examples of conservative schemes |.>>>>|> > |2.1.1The Godunov Scheme |.>>>>|> > |2.1.2The Lax-Friedrichs Scheme |.>>>>|> > |2.1.3The local Lax-Friedrichs Scheme |.>>>>|> > |2.1.4Roe Scheme |.>>>>|> > |2.1.5Engquist-Osher Scheme |.>>>>|> > |2.1.6Lax-Wendroff Scheme |.>>>>|> > |2.1.7MacCormack Scheme |.>>>>|> > |2.2Higher-order TVD Schemes |.>>>>|> > |2.2.1General Framework of a Conservative Finite-Volume Scheme |.>>>>|> > |2.2.2Generalized MUSCL Scheme |.>>>>|> > |2.3Essentially Non-Oscillatory Schemes |.>>>>|> > |2.4Weighted ENO Schemes |.>>>>|> > |2.5Finite Difference Methods |.>>>>|> > |2.5.1Accuracy |.>>>>|> > |2.5.2Stability |.>>>>|> > |math-font-series||3Two Space Dimensions> |.>>>>|> |3.1FV methods in 2D |.>>>>|> > |3.1.1The Linear Case |.>>>>|> > |3.1.2The Nonlinear Case |.>>>>|> > |3.2Finite Difference Methods |.>>>>|> > |math-font-series||4Systems of Conservation Laws> |.>>>>|> |4.1A First Attempt: Generalize Methods from AM255 |.>>>>|> > |4.2How to Generalize Scalar Higher-Order Schemes to Systems |.>>>>|> > |4.3The Nonlinear Case |.>>>>|> > |math-font-series||5The Discontinuous Galerkin Method> |.>>>>|> |5.1Some Theoretical Properties of the Scheme |.>>>>|> >