<TeXmacs|1.0.6.10>

<style|<tuple|article|mystyle>>

<\body>
  <doc-data|<doc-title|Advanced Topics in High-Order Numerical Methods for
  Convection-Dominated Problems>|<doc-author-data|<author-name|Chi-Wang
  Shu>>>

  Syllabus:

  <\enumerate>
    <item>Hamilton-Jacobi

    <\enumerate>
      <item>lectures

      <item>(steady) fast-sweeping

      <item>level-set method
    </enumerate>

    <item>Boltzmann type equations

    <\enumerate>
      <item>lectures

      <item>finite difference

      <item>splitting method (+characteristic/Lagrange type methods)

      <item>spectral methods
    </enumerate>

    <item>Semiconductor Moment Models in semiconductor device simulations

    <\enumerate>
      <item>lectures

      <item>drift-diffusion

      <item>energy transport models

      <item>hydrodynamic models

      <item>quantum {hydrodynamics, drift-diffusion}
    </enumerate>
  </enumerate>

  <\table-of-contents|toc>
    <vspace*|1fn><with|font-series|bold|math-font-series|bold|1<space|2spc>Hamilton-Jacobi
    Equations> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-1><vspace|0.5fn>

    <with|par-left|1.5fn|1.1<space|2spc>Finite-Difference Method
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-3>>

    <with|par-left|1.5fn|1.2<space|2spc>Two-dimensional Extensions
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-4>>

    <with|par-left|3fn|1.2.1<space|2spc>Lax-Friedrichs Hamiltonian
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-5>>

    <with|par-left|3fn|1.2.2<space|2spc>Gudonov Hamiltonian
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-6>>

    <with|par-left|3fn|1.2.3<space|2spc>Osher-Sethian Hamiltonian
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-7>>

    <with|par-left|3fn|1.2.4<space|2spc>Unstructured Grids
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-8>>

    <with|par-left|1.5fn|1.3<space|2spc>High-Order Methods
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-9>>

    <with|par-left|1.5fn|1.4<space|2spc>DG for Hamilton-Jacobi
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-10>>

    <with|par-left|1.5fn|1.5<space|2spc>Proving Error Estimates
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-11>>

    <with|par-left|1.5fn|1.6<space|2spc>Level-Set Methods
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-12>>

    <vspace*|1fn><with|font-series|bold|math-font-series|bold|2<space|2spc>Boltzmann-Type
    Equations> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-13><vspace|0.5fn>

    <vspace*|1fn><with|font-series|bold|math-font-series|bold|3<space|2spc>Semiconductor
    Device Simulation Models> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-14><vspace|0.5fn>

    <with|par-left|1.5fn|3.1<space|2spc>Drift-diffusion model
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-15>>

    <with|par-left|1.5fn|3.2<space|2spc>High field model
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-16>>

    <with|par-left|1.5fn|3.3<space|2spc>Momentum solvers
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-17>>

    <with|par-left|1.5fn|3.4<space|2spc>Energy Transport Models
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-18>>

    <with|par-left|1.5fn|3.5<space|2spc>Hydrodynamic Model
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-19>>

    <with|par-left|1.5fn|3.6<space|2spc>Kinetic Model
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-20>>

    <with|par-left|1.5fn|3.7<space|2spc>Quantum Effects
    <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
    <no-break><pageref|auto-21>>
  </table-of-contents>

  \;

  Typed by Akil Narayan, Andreas Klöckner
  <with|font-family|tt|\<less\>{anaray,kloeckner}@dam.brown.edu\<gtr\>>.

  <section|Hamilton-Jacobi Equations>

  One-dimensional Hamilton-Jacobi equations look like this:

  <\equation>
    <label|eq:hj>\<varphi\><rsub|t>+H(\<varphi\><rsub|x>)=0.
  </equation>

  <with|mode|math|H> is the <em|Hamiltonian> (nonlinear). For comparison,
  hyperbolic <em|conservation laws> look like this:

  <\equation>
    <label|eq:claw>u<rsub|t>+f(u)<rsub|x>=0.
  </equation>

  Note that formally, if the <with|mode|math|H> (or <with|mode|math|f>) is
  linear, there's no difference between the two types of equations. Some
  differences remain however from the choice of function spaces where
  solutions are sought. For Hamilton-Jacobi Equations, our solutions will be
  Lipschitz-continuous.

  <big-table|<tabular|<tformat|<cwith|1|-1|1|-1|cell-lborder|0.5pt>|<cwith|1|-1|1|-1|cell-rborder|0.5pt>|<cwith|1|-1|1|-1|cell-bborder|0.5pt>|<cwith|1|-1|1|-1|cell-tborder|0.5pt>|<table|<row|<cell|Feature>|<cell|Hamilton-Jacobi>|<cell|Conservation
  Laws>>|<row|<cell|Function Space>|<cell|Lipschitz>|<cell|Discontinuous/BV>>|<row|<cell|Generalized
  solution>|<cell|Viscosity solution>|<cell|Entropy solution>>>>>|Comparison
  of Hamilton-Jacobi and Conservation Laws.>

  There's extra horridness waiting for people who have time for high-risk
  research: Equations like

  <\equation*>
    \<varphi\><rsub|t>+H(\<varphi\><rsub|x>)+f(\<varphi\>)<rsub|x>=0
  </equation*>

  also occur in applications.

  If we set <with|mode|math|u=\<varphi\><rsub|x>>, then a Hamilton-Jacobi
  equation (<reference|eq:hj>) becomes <with|mode|math|u<rsub|t>+H(u)<rsub|x>=0>.

  <\definition>
    <with|mode|math|\<varphi\>> is called a <em|viscosity subsolution> of
    (<reference|eq:hj>) if, for any smooth function <with|mode|math|\<psi\>>
    at each local maximum point <with|mode|math|(<wide|x|\<bar\>>,<wide|t|\<bar\>>)>
    of <with|mode|math|\<varphi\>-\<psi\>>, we have

    <\equation*>
      \<psi\><rsub|t>(<wide|x|\<bar\>>,<wide|t|\<bar\>>)+H(\<psi\><rsub|x>(<wide|x|\<bar\>>,<wide|t|\<bar\>>))\<leqslant\>0.
    </equation*>
  </definition>

  \;

  <\definition>
    <with|mode|math|\<varphi\>> is called a <em|viscosity supersolution> of
    (<reference|eq:hj>) if, for any smooth function <with|mode|math|\<psi\>>
    at each local minimum point <with|mode|math|(<wide|x|\<bar\>>,<wide|t|\<bar\>>)>
    of <with|mode|math|\<varphi\>-\<psi\>>, we have

    <\equation*>
      \<psi\><rsub|t>(<wide|x|\<bar\>>,<wide|t|\<bar\>>)+H(\<psi\><rsub|x>(<wide|x|\<bar\>>,<wide|t|\<bar\>>))\<geqslant\>0.
    </equation*>
  </definition>

  <\definition>
    <with|mode|math|\<varphi\>> is called a <em|viscosity solution> if it is
    both a viscosity sub- and supersolution.
  </definition>

  Deeper mathematical insight can be obtained from papers by Crandall, Lions,
  and Souganidis. There is an <with|mode|math|L<rsup|\<infty\>>>-contraction
  result that supplies well-posedness of the sort

  <\equation*>
    <norm|\<varphi\><rsub|1>-\<varphi\><rsub|2>|L<rsup|\<infty\>>|>\<leqslant\><norm|\<varphi\><rsub|1>(\<cdot\>,0)-\<varphi\><rsub|2>(\<cdot\>,0)|L<rsup|\<infty\>>|>.
  </equation*>

  <subsection|Finite-Difference Method>

  Assume we have a few grid points <with|mode|math|\<cdots\>\<less\>x<rsub|0>\<less\>x<rsub|1>\<less\>x<rsub|2>\<less\>\<cdots\>>
  and also assume we approximate <with|mode|math|\<varphi\><rsub|j>\<approx\>\<varphi\>(x<rsub|j>,t)>.
  We briefly recall that a correct discretization of a conservation law
  (<reference|eq:claw>) depended crucially on the knowledge of the present
  ``wind direction''. This would determine the choice between

  <\eqnarray*>
    <tformat|<table|<row|<cell|f(u)<rsub|x>\|<rsub|x=x<rsub|j>>>|<cell|\<approx\>>|<cell|<frac|f(u<rsub|j>)-f(u<rsub|j-1>)|\<Delta\>x><space|2em>f<rprime|'>(u)\<gtr\>0,>>|<row|<cell|f(u)<rsub|x>\|<rsub|x=x<rsub|j>>>|<cell|\<approx\>>|<cell|<frac|f(u<rsub|j+1>)-f(u<rsub|j>)|\<Delta\>x><space|2em>f<rprime|'>(u)\<less\>0.>>>>
  </eqnarray*>

  This led to the introduction of a <em|numerical flux> to cope with the
  possibility of <with|mode|math|f<rprime|'>(u)> changing sign.

  <\equation*>
    f(u)<rsub|x>\|<rsub|x=x<rsub|j>>\<approx\><frac|<wide|f|^>(u<rsub|j>,u<rsub|j+1>)-<wide|f|^>(u<rsub|j-1>,u<rsub|j>)|\<Delta\>x>,
  </equation*>

  with <with|mode|math|<wide|f|^>(u<rsup|->,u<rsup|+>)> satisfying:

  <\itemize>
    <item><with|mode|math|<wide|f|^>(\<cdot\>,\<cdot\>)> is
    Lipschitz-continuous.

    <item>Consistency: <with|mode|math|<wide|f|^>(u,u)=f(u)>.

    <item>Monotonicity: <with|mode|math|<wide|f|^>(\<uparrow\>,\<downarrow\>)>.
  </itemize>

  So for Hamilton-Jacobi we simply set

  <\eqnarray*>
    <tformat|<table|<row|<cell|H(\<varphi\><rsub|x>\|<rsub|x=x<rsub|j>>)>|<cell|\<approx\>>|<cell|H<left|(><frac|\<varphi\><rsub|j>-\<varphi\><rsub|j-1>|\<Delta\>x><right|)><space|2em>H<rprime|'>(u)\<gtr\>0,>>|<row|<cell|H(\<varphi\><rsub|x>\|<rsub|x=x<rsub|j>>)>|<cell|\<approx\>>|<cell|H<left|(><frac|\<varphi\><rsub|j+1>-\<varphi\><rsub|j>|\<Delta\>x><right|)><space|2em>H<rprime|'>(u)\<less\>0.>>>>
  </eqnarray*>

  The generalization to changing signs of <with|mode|math|H<rprime|'>(u)>
  becomes

  <\equation*>
    <wide|H|^><left|(><frac|\<varphi\><rsub|j>-\<varphi\><rsub|j-1>|\<Delta\>x>,<frac|\<varphi\><rsub|j+1>-\<varphi\><rsub|j>|\<Delta\>x><right|)>.
  </equation*>

  The scheme we come up with reads

  <\equation*>
    (\<varphi\><rsub|j>)<rsub|t>+<wide|H|^><left|(><frac|\<varphi\><rsub|j>-\<varphi\><rsub|j-1>|\<Delta\>x>,<frac|\<varphi\><rsub|j+1>-\<varphi\><rsub|j>|\<Delta\>x><right|)>=0,
  </equation*>

  where we again assume that \ <with|mode|math|<wide|H|^>(u<rsup|->,u<rsup|+>)>
  satisfying:

  <\itemize>
    <item><with|mode|math|<wide|H|^>(\<cdot\>,\<cdot\>)> is
    Lipschitz-continuous.

    <item>Consistency: <with|mode|math|<wide|H|^>(u,u)=f(u)>.

    <item>Monotonicity: <with|mode|math|<wide|H|^>(\<uparrow\>,\<downarrow\>)>.
  </itemize>

  <\theorem>
    <dueto|Crandall, Lions>Solutions of monotone schemes converge to the
    viscosity solution.

    <\equation*>
      <norm|\<varphi\>-\<varphi\><rsub|\<Delta\>x>||><rsub|L<rsup|\<infty\>>>\<leqslant\>C<sqrt|\<Delta\>x>.
    </equation*>
  </theorem>

  [Begin Lecture October 3, 2007]

  Recall the scheme

  <\equation>
    (\<phi\><rsub|i>)<rsub|t>+ <wide|H|^><left|(><frac|\<phi\><rsub|i>-\<phi\><rsub|i-1>|\<Delta\>x>,
    <frac|\<phi\><rsub|i+1>-\<phi\><rsub|i>|\<Delta\>x><right|)>=0<label|eq:hj-1dscheme>
  </equation>

  where <math|<wide|H|^>> is a monotone numerical Hamiltonian
  (<em|Monotonian>):

  <\itemize>
    <item><math|<wide|H|^>> is a Lipschitz continuos function with respect to
    both arguments

    <item><math|<wide|H|^>(\<uparrow\>, \<downarrow\>)> (increasing in first
    argument, decreasing in second)

    <item><math|<wide|H|^>(u,u) = H(u)> \ (consistency)
  </itemize>

  Any monotone flux studied in conservation laws can be used for
  <math|<wide|H|^>>, e.g. a Gudonov-type flux:

  <\equation*>
    H(u<rsup|->,u<rsup|+>) = <left|{><tabular|<tformat|<table|<row|<cell|min<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>H(u)>|<cell|if>|<cell|u<rsup|->\<leq\>u<rsup|+>>>|<row|<cell|max<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>H(u)>|<cell|if>|<cell|u<rsup|<rsub|>->\<gtr\>u<rsup|+>>>>>>
  </equation*>

  And we can also use Engquist-Osher, or Lax-Friedrichs:

  <\equation>
    H<rsup|LF>(u<rsup|->,u<rsup|+>) = H<left|(><frac|u<rsup|->+u<rsup|+>|2><right|)>-
    <frac|\<alpha\>|2>(u<rsup|+>-u<rsup|->)
  </equation>

  where <math|\<alpha\>=max<rsub|u>\|H<rprime|'>(u)\|>, or another
  `Lax-Friedrichs' flux:

  <\equation>
    H(u<rsup|->,u<rsup|+>) = <frac|1|2><left|[>H(u<rsup|->) +H(u<rsup|+>) -
    \<alpha\>(u<rsup|+>-u<rsup|->)<right|]>
  </equation>

  \;

  <\theorem>
    <with|mode|math|<label|thm:monotone-convergence>>A monotone scheme is
    convergent to the viscosity solution

    <\equation>
      <norm|\<phi\><rsub|\<Delta\>x>-\<phi\>|L<rsup|\<infty\>>|>\<leq\>C<sqrt|\<Delta\>x>
    </equation>
  </theorem>

  <subsection|Two-dimensional Extensions>

  \;

  The two-dimensional Hamilton-Jacobi equation takes the form

  <\equation>
    \<phi\><rsub|t> + H(\<phi\><rsub|x>,\<phi\><rsub|y>)=0<label|eq:hj2d>
  </equation>

  Note that all of the above has only been developed for equation in one
  space dimension, equation (<reference|eq:hj>). Recall that one dimension is
  special: HJ equations in one dimension are easily recast into 1D hyperbolic
  conservation laws, for which all of the above analysis is already
  well-known. We can attempt to do a similar thing in 2D: from equation
  (<reference|eq:hj2d>), let <math|u=\<phi\><rsub|x>>,
  <math|v=\<phi\><rsub|y>>. Then equation (<reference|eq:hj2d>) yields the
  system

  <\equation>
    <left|{><tabular|<tformat|<table|<row|<cell|u<rsub|t>+H(u,v)<rsub|x>=0>>|<row|<cell|v<rsub|t>+H(u,v)<rsub|y>=0>>>>><label|eq:hj-2dsystem>
  </equation>

  Thus our scalar equation has yielded an undesirable system of equations. We
  can recast (<reference|eq:hj-2dsystem>) as\ 

  <\equation>
    <left|(><tabular|<tformat|<table|<row|<cell|u>>|<row|<cell|v>>>>><right|)><rsub|t>+<left|(><tabular|<tformat|<cwith|2|2|1|1|cell-halign|c>|<table|<row|<cell|H(u,v)>>|<row|<cell|0>>>>><right|)><rsub|x>+<left|(><tabular|<tformat|<cwith|1|1|1|1|cell-halign|c>|<table|<row|<cell|0>>|<row|<cell|H(u,v)>>>>><right|)><rsub|y>
    = 0
  </equation>

  \;

  We can define <math|f(u)> and <math|g(u)> so that the second and third
  terms read <math|f(u)<rsub|x>> and <math|g(u)<rsub|y>>, respectively, and
  write Jacobians as

  <\equation*>
    <tabular|<tformat|<cwith|1|1|1|1|cell-halign|c>|<table|<row|<cell|f<rprime|'>(<wide|u|\<vect\>>)
    = <left|(><tabular|<tformat|<cwith|2|2|1|1|cell-halign|c>|<cwith|2|2|2|2|cell-halign|c>|<table|<row|<cell|H<rsub|u>>|<cell|H<rsub|v>>>|<row|<cell|0>|<cell|0>>>>><right|)>>|<cell|>|<cell|g<rprime|'>(<wide|u|\<vect\>>)
    = <left|(><tabular|<tformat|<cwith|2|2|1|1|cell-halign|c>|<cwith|2|2|2|2|cell-halign|c>|<cwith|1|1|2|2|cell-halign|c>|<cwith|1|1|1|1|cell-halign|c>|<table|<row|<cell|0>|<cell|0>>|<row|<cell|H<rsub|u>>|<cell|H<rsub|v>>>>>><right|)>>>>>>
  </equation*>

  Now the eigenvalues corresponding to these Jacobians are <math|H*u> and 0.
  If <math|H*u\<neq\>0>, then everything is fine, we have a well-posed
  hyperbolic system. However, if <math|H*u=0>, then we have a weakly
  well-posed system, and thus we must now deal with solving a weakly
  well-posed problem, which is undesirable.

  We avoid this and deal directly with our scalar equation in two dimension,
  let us introduce a `monotone Hamiltonian',
  <math|<wide|H|^>(u<rsup|->,u<rsup|+>;v<rsup|->,v<rsup|+>)>, which we ask to
  satisfy

  <\itemize>
    <item><math|<wide|H|^>> is Lipschitz in all arguments

    <item><math|<wide|H|^>(\<uparrow\>,\<downarrow\>;\<uparrow\>,\<downarrow\>)>

    <item><math|<wide|H|^>(u,u;v,v)=H(u,v)>
  </itemize>

  and we introduce the semi-discrete `monotone scheme' for equation
  (<reference|eq:hj2d>)

  <\equation>
    (\<phi\><rsub|i*j>)<rsub|t>+<wide|H|^><left|(><frac|\<phi\><rsub|i*,j>-\<phi\><rsub|i-1,j>|\<Delta\>x>,<frac|\<phi\><rsub|i+1,*j>-\<phi\><rsub|i,j>|\<Delta\>x>;<frac|\<phi\><rsub|i*,j>-\<phi\><rsub|i,j-1>|\<Delta\>x>,<frac|\<phi\><rsub|i*,j+1>-\<phi\><rsub|i,j>|\<Delta\>x><right|)>=0<label|eq:hj-2dscheme>
  </equation>

  then we have the same result for 2D as is stated in theorem
  <reference|thm:monotone-convergence>. Note that the introduction of the
  relatively complex restrictions on our monotone Hamiltonians is necessary:
  because the Hamiltonian is possibly (probably) nonlinear, we cannot simply
  take <math|<wide|H|^>>=<math|<wide|H|^><rsub|1>+<wide|H|^><rsub|2>> where
  <math|<wide|H|^><rsub|1>> and <math|<wide|H|^><rsub|2>> are appropriate
  monotone Hamiltonians for 1D problems.\ 

  <subsubsection|Lax-Friedrichs Hamiltonian>

  So what are the possible monotone Hamiltonians at our disposal? As usual,
  we have a Lax-Friedrichs choice:

  <\equation>
    <wide|H|^><rsup|LF>(u<rsup|->,u<rsup|+>;v<rsup|->,v<rsup|+>) =
    H<left|(><frac|u<rsup|->+u<rsup|+>|2>,
    <frac|v<rsup|->+v<rsup|+>|2><right|)> -
    <frac|1|2>\<alpha\>*<rsup|x>(u<rsup|+>-u<rsup|->) -
    <frac|1|2>\<alpha\><rsup|y>(v<rsup|+>-v<rsup|->)<label|eq:lf-2dflux>
  </equation>

  where <math|><math|\<alpha\><rsup|x>=max<rsub|u,v>\|H<rsub|u>(u,v)\|> and
  <math|\<alpha\><rsup|y> =max<rsub|u,v>\|H<rsub|v>(u,v)\|>. Note that the
  range over which the maximums are taken define whether we have a local or a
  global Lax-Friedrichs flux (cf. 1D hyperbolic conservation laws). If we
  have global numbers such that <math|A\<leq\>u\<leq\>B> and
  <math|C\<leq\>v\<leq\>D> for all space, then taking maximums over this is a
  `global' flux. However, if we consider the ranges in the definitions of
  <math|\<alpha\><rsup|x>> and <math|\<alpha\><rsup|y>> as

  <\equation*>
    \<alpha\><rsup|x>=max<rsub|<tabular|<tformat|<table|<row|<cell|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>>|<row|<cell|v<rsup|->\<leq\>v\<leq\>v<rsup|+>>>>>>>\|H<rsub|u>(u,v)\|
  </equation*>

  and similarly for <math|\<alpha\><rsup|y>>. One can show (cf. Osher and
  Shu) that this flux is not monotone. Can we define a proper local
  Lax-Friedrichs flux? Sort of. If we define\ 

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|\<alpha\><rsup|x>=max<rsub|<tabular|<tformat|<table|<row|<cell|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>>|<row|<cell|C\<leq\>v\<leq\>D>>>>>>\|H<rsub|u>(u,v)\|>|<cell|<hspace|0.3cm>
    <hspace|0.5cm> >|<cell|\<alpha\><rsup|y>=max<rsub|<tabular|<tformat|<table|<row|<cell|A\<leq\>u\<leq\>B>>|<row|<cell|v<rsup|->\<leq\>v\<leq\>v<rsup|+>>>>>>>\|H<rsub|v>(u,v)\|>>>>>
  </equation*>

  where <math|A,B,C, and D> are the appropriate global bounds on <math|u> and
  <math|v>, then this in conjunction with equation (<reference|eq:lf-2dflux>)
  gives a true monotone Hamiltonian.

  <subsubsection|Gudonov Hamiltonian>

  We also have a Gudonov flux for the 2D scheme (<reference|eq:hj-2dscheme>):

  <\equation>
    <wide|H|^><rsup|G>(u<rsup|->,u<rsup|+>;v<rsup|->,v<rsup|+>) =
    ext<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>
    ext<rsub|v<rsup|->\<leq\>v\<leq\>v<rsup|+>>
    H(u,v)<label|eq:gudonov-flux2d>
  </equation>

  where we define the <math|ext> function as\ 

  <\equation>
    ext<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>=<left|{><tabular|<tformat|<table|<row|<cell|min<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>>|<cell|if>|<cell|u<rsup|->\<leq\>u<rsup|+>>>|<row|<cell|max<rsub|u<rsup|+>\<leq\>u\<leq\>u<rsup|->>>|<cell|if>|<cell|u<rsup|->\<gtr\>u<rsup|+>>>>>><label|eq:ext-definition>
  </equation>

  \;

  Note that the Godonov flux definition (<reference|eq:gudonov-flux2d>) is
  <with|font-shape|italic|not> symmetric, and it is not the same if we
  reverse the order in which we apply the <math|ext> functions. I.e.,\ 

  <\equation*>
    min<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>max<rsub|v<rsup|+>\<leq\>v\<leq\>v<rsup|->>H(u,v)
    <tabular|<tformat|<table|<row|<cell|\<geq\>>>|<row|<cell|\<neq\>>>|<row|<cell|\<leq\>>>>>>max<rsub|v<rsup|+>\<leq\>v\<leq\>v<rsup|->>min<rsub|u<rsup|->\<leq\>u\<leq\>u<rsup|+>>H(u,v)
  </equation*>

  However, one can use the Gudonov Hamiltonian as shown in equation
  (<reference|eq:gudonov-flux2d>), or one can switch the direction of the
  application of the <math|ext> operators, and it can be shown that either
  Gudonov flux is a valid monotone Hamiltonian.\ 

  <subsubsection|Osher-Sethian Hamiltonian>

  Another type of monotone Hamiltonian which we may implement is the
  Osher-Sethian Hamiltonian: <with|font-series|bold|If>
  <math|H(u,v)=f(u<rsup|2>,v<rsup|2>)> and <math|f> is monotone with respect
  to each argument, one can use the Hamiltonian

  <\equation>
    <wide|H|^><rsup|OS>(u<rsup|->,u<rsup|+>;v<rsup|->,v<rsup|+>) =
    f(<wide|u|\<bar\>><rsup|2>,<wide|v|\<bar\>><rsup|2>)<label|eq:os-flux2d>
  </equation>

  where\ 

  <\equation>
    <wide|u|\<bar\>><rsup|2>=<left|{><tabular|<tformat|<table|<row|<cell|<left|(>min<left|(><wide|u|\<bar\>>,0<right|)><right|)><rsup|2>+<left|(>max<left|(>u<rsup|+>,0<right|)><right|)><rsup|2>>|<cell|if>|<cell|f(\<downarrow\>,\<cdot\>)>>|<row|<cell|<left|(>min<left|(>u<rsup|+>,0<right|)><right|)><rsup|2>+<left|(>max<left|(><wide|u|\<bar\>>,0<right|)><right|)><rsup|2>>|<cell|if>|<cell|f(\<uparrow\>,\<cdot\>)>>>>><label|eq:ubar-def>
  </equation>

  and <math|<wide|v|\<bar\>>> is defined similarly. The great advantage of
  this monotone Hamiltonian is its ease of implementation and low
  computational cost. However, the restriction on the required form of the
  analytic Hamiltonian limits its applicability. NB this monotone Hamiltonian
  has the flavor of the Engquist-Osher monotone flux for hyperbolic
  conservation laws.\ 

  A typical equation on which can use the Osher-Sethian Hamiltonian is the
  <with|font-shape|italic|Eikonal Equation>:

  <\equation>
    \<phi\><rsub|t> + <sqrt|\<phi\><rsub|x><rsup|2>+\<phi\><rsub|y><rsup|2>>=0<label|eq:eikonal-2d>
  </equation>

  In this equation <math|H(u,v) = <sqrt|u<rsup|2>+v<rsup|2>>>, which
  satisfies the hypotheses of the Osher-Sethian Hamiltonian formulation, so
  one can use (<reference|eq:os-flux2d>) and (<reference|eq:ubar-def>). This
  equation is solved very often in the context of level-set methods.

  <subsubsection|Unstructured Grids>

  The only known monotone flux on unstructured grids is a Lax-Friedrichs flux
  introduced by Abgrall. See Shu's paper for details and picture. The general
  form looks like\ 

  <\equation*>
    <wide|H|^><rsup|LF>=H<left|(><frac|<big|sum><rsub|i>\<theta\><rsub|i>(\<nabla\>\<phi\>)<rsub|i>|2\<pi\>><right|)>
    - <frac|\<alpha\>|\<pi\>><big|sum><rsub|i>\<beta\><rsub|i+1/2><left|(><frac|(\<nabla\>\<phi\>)<rsub|i>+(\<nabla\>\<phi\>)<rsub|i+1>|2><right|)>\<cdot\><wide|n|\<vect\>><rsub|i+1/2>
  </equation*>

  where the sums are taken over all the adjacent faces.\ 

  <subsection|High-Order Methods>

  We have so far described first-order monotone schemes for Hamilton-Jacobi
  equations. We can now handle equations in one space dimension very well,
  and we have methods for solving two-dimensional equations either on
  Cartesian grids, or on unstructured grids. Now we shall attempt to
  formulate some high-order methods to solve equations (<reference|eq:hj>)
  and (<reference|eq:hj2d>).

  We again consider the one-dimensional Hamilton-Jacobi equation
  (<reference|eq:hj>) with the scheme (<reference|eq:hj-1dscheme>) where we
  require monotonicity of the flux: <math|
  <wide|H|^>(\<uparrow\>,\<downarrow\>)>. Recall from the hyperbolic
  conservation law case that when formulating high-order methods, we had many
  options for scheme type (FD vs FV) and there were regularity restrictions
  on the mesh in 1D. However, for H-J equations in 1D, the idea is much
  simpler: we restrict ourselves to

  <\itemize>
    <item>finite-difference schemes

    <item>any mesh
  </itemize>

  We define a high-order scheme as a semi-discrete ODE of the form

  <\equation>
    <tabular|<tformat|<table|<row|<cell|(\<phi\><rsub|j>)<rsub|t>+<wide|H|^>(u<rsup|-><rsub|j>,u<rsup|+><rsub|j>)
    = 0>>|<row|<cell|>>|<row|<cell|u<rsup|\<pm\>><rsub|j>=\<phi\><rsub|x><right|\|><rsub|x=x<rsub|j>>+O(\<Delta\>x<rsup|r>)>>>>>
  </equation>

  We impose the following stencils (cf hyperbolic conservation laws):

  <\itemize>
    <item>The stencil for <math|u<rsup|->> is biased to the left

    <item>The stencil for <math|u<rsup|+>> is biased to the right
  </itemize>

  The modus operandi for this method is very familiar from conservation laws:
  we identify a stencil over which to interpolate a polynomial <math|\<phi\>>
  of degree <math|r>. When then differentiate this polynomial, and evaluate
  the result at <math|x<rsub|j>>, and assign that as the value of
  <math|u<rsup|\<pm\>><rsub|j>>.\ 

  \;

  One main setback for using this method for conservation laws is the
  following: for conservation laws, the underlying function which the
  interpolant represents is discontinuous, so our reconstruction will be
  oscillatory near shocks. However, for H-J equations, the underlying
  function defining the interpolant is continuous. Thus, one may conjecture
  that perhaps our direct interpolant reconstruction will be more
  well-behaved. However, it turns out that even with our increased regularity
  in <math|\<phi\>>, this straightforward method still does not work except
  for rather simple problems. (cf Y. Cheng paper)

  \;

  We can, however, borrow many of the tools we introduced for conservation
  laws (e.g. ENO). However, we shall need a bigger stencil to achieve the
  same order since we are differentiating our interpolant and thus require
  one more degree of freedom.\ 

  \;

  Let us recall the ENO procedure to compute <math|u<rsup|->>:

  <\enumerate>
    <item>Start with the stencil <math|S<rsup|(1)>=<left|{>\<phi\><rsub|j-1>,\<phi\><rsub|j><right|}>>.
    Build the linear function <math|p<rsup|(1)>(x) =
    \<phi\><rsub|j>-<frac|\<phi\><rsub|j>-\<phi\><rsub|j-1>|\<Delta\>x>(x-x<rsub|j>)>

    <item>Add either <math|(x<rsub|j-2>,\<phi\><rsub|j-2>)> or
    <math|(x<rsub|j+1>,\<phi\><rsub|j+1>)> to the stencil depending on the
    magnitude of the updating Newton divided difference, which is a measure
    of the oscillatory nature of the polynomial. E.g. for this step, the
    divided differences to compare are <math|<left|(><frac|\<phi\><rsub|j>-\<phi\><rsub|j-1>|\<Delta\>x<rsub|j-1/2>>-<frac|\<phi\><rsub|j-1>-\<phi\><rsub|j-2>|\<Delta\>x<rsub|j-3/2>><right|)><frac|1|(x<rsub|j>-x<rsub|j-2>)>>
    and <with|mode|math|<left|(><frac|\<phi\><rsub|j+1>-\<phi\><rsub|j>|\<Delta\>x<rsub|j+1/2>>-<frac|\<phi\><rsub|j>-\<phi\><rsub|j-1>|\<Delta\>x<rsub|j-1/2>><right|)><frac|1|(x<rsub|j+1>-x<rsub|j-1>)>>.
    Upon choosing the new stencil, build a new polynomial.

    <item>Continue in this fashion by enlargening the stencil and updating
    the polynomial <math|p<rsup|(r)>> until the desired accuracy is required.
    <math|u<rsup|->=p<rsup|(r)>(x<rsub|j-1>)>
  </enumerate>

  And this is the abridged WENO procedure:

  <\enumerate>
    <item>Start with one stencil

    <item>Consider the all the possible <math|r>th-order stencils to add,
    construct all the possible polynomials, and linearly combine all these
    polynomials into via nonlinear weights of the form:

    <\equation*>
      w<rsub|i>\<sim\><big|int><left|[><left|(>p<rsub|i><rprime|'>(x)<right|)><rsup|2>+c*<left|(>p<rsub|i><rprime|''>(x)<right|)><rsup|2><right|]>\<mathd\>x.
    </equation*>
  </enumerate>

  \;

  To convert this into an approrpiate H-J formulation, we can do the same
  thing, except for WENO, we use nonlinear weights of the form

  <\equation*>
    w<rsub|i>\<sim\><big|int><left|[>c*<left|(>p<rsub|i><rprime|''>(x)<right|)><rsup|2><right|]>\<mathd\>x.
  </equation*>

  We make this modification because the reconstructed interpolant has more
  smoothness than in the conversation law case, and it is now the second
  derivative norm which is a more appropriate measure of regularity. (Cf.
  Jiang & Peng paper, 5th-order, conforming Cartesian meshes)

  If one wishes to do either nonconforming Cartesian meshes or unstructured
  meshes, the above procedure does not work out-of-the-box. Instead, others
  have worked about the WENO procedure for triangular meshes (cf Yongtao
  Zhang thesis).

  <subsection|DG for Hamilton-Jacobi>

  Recall FD WENO (Jiang & Peng):

  For HCL, transforamtion form global to uniform mesh must be
  smooth<with|mode|math|\<Rightarrow\>>nonuniform Cartesian meshes do not
  work. For HJ, said transformation need not be smoot , can do this on
  nonunifrom Cartesian meshes (and smooth meshes). (Thus WENO here is more
  popular for HJ equation sthan for HCL equations.)

  DG for HJ is not quite so popular yet because geometries are regular for
  many applications, because FD WENO is easily <with|mode|math|h>-adaptible
  and because FD is more mature.

  Applying DG:

  <\enumerate>
    <item><em|Convert HJ to HCL>:\ 

    <\equation*>
      \<varphi\><rsub|t>+H(\<varphi\><rsub|x>)=0,
    </equation*>

    then set <with|mode|math|u=\<varphi\><rsub|x>> and get

    <\equation*>
      <big|int><rsub|I<rsub|i>>u<rsub|t>v-<big|int><rsub|I<rsub|i>>H(u)v<rsub|x>\<mathd\>x+(<wide|H|^>v)\|<rsub|i-1/2><rsup|i+1/2>,
    </equation*>

    where <with|mode|math|H<rsub|i+1/2>\<assign\><wide|H|^>(u<rsub|i+1/2><rsup|->,u<rsub|+1/2><rsup|+>)>
    and <with|mode|math|v\|<rsub|i+1/2>=v<rsup|-><rsub|i+1/2>> and
    <with|mode|math|v\|<rsub|i-1/2>=v<rsub|i-1/2><rsup|+>>. Altogether, we
    get

    <\equation*>
      <big|int><rsub|I<rsub|i>>(\<varphi\><rsub|x>)<rsub|t>v-<big|int><rsub|I<rsub|i>>H(\<varphi\><rsub|x>)v<rsub|x>\<mathd\>x+(<wide|H|^>v)<rsub|i-1/2><rsup|i+1/2>,
    </equation*>

    where <with|mode|math|<wide|H<rsub|>|^><rsub|i+1/2>=<wide|H|^>((\<varphi\><rsub|x>)<rsub|i+1/2><rsup|->,(\<varphi\><rsub|x>)<rsub|i+1/2><rsup|+>)>.

    <item><em|Integrate HJ directly>: In 1D:

    <\equation*>
      <big|int><rsub|I<rsub|i>>\<varphi\><rsub|t>+<big|int><rsub|I<rsub|i>>H(\<varphi\><rsub|x>)\<mathd\>x=0.
    </equation*>

    In 2D: <with|mode|math|\<varphi\><rsub|t>+H(\<varphi\><rsub|x>,\<varphi\><rsub|y>)=0>.
    Setting <with|mode|math|u=\<varphi\><rsub|x>>,
    <with|mode|math|v=\<varphi\><rsub|y>> gives the nasty system

    <\equation*>
      <choice|<tformat|<table|<row|<cell|u<rsub|t>+H(u,v)<rsub|x>=0>>|<row|<cell|v<rsub|t>+H(u,v)<rsub|y>=0>>>>>\<rightarrow\><with|mode|text|HCL
      system>.
    </equation*>

    Finte, but the system may be weakly hyperbolic if
    <with|mode|math|(H<rsub|u>=0, H<rsub|v>\<neq\>0)> or
    <with|mode|math|(H<rsub|v>=0,H<rsub|u>\<neq\>0)>.

    Despite the complications, we can still write down a DG scheme:

    <\eqnarray*>
      <tformat|<table|<row|<cell|(\<ast\>)<space|1em><big|int><rsub|K>u<rsub|t>w-<big|int>H<rsub|t>(u,v)w<rsub|x>+<big|sum><rsub|e\<in\>\<partial\>K><big|int><rsub|e><wide|H|^><rsub|1,e,K>w\<mathd\>\<Gamma\>>|<cell|=>|<cell|0,>>|<row|<cell|<big|int><rsub|K>v<rsub|t>z-<big|int>H<rsub|t>(u,v)z<rsub|y>+<big|sum><rsub|e\<in\>\<partial\>K><big|int><rsub|e><wide|H|^><rsub|2,e,K>w\<mathd\>\<Gamma\>>|<cell|=>|<cell|0,>>>>
    </eqnarray*>

    where\ 

    <\equation*>
      <wide|H|^><rsub|i>\<assign\><choice|<tformat|<table|<row|<cell|<frac|\<partial\>H|\<partial\>u>>|<cell|i=1,>>|<row|<cell|<frac|\<partial\>H|\<partial\>v>>|<cell|i=2.>>>>>
    </equation*>

    If we do what we did in 1D and let <with|mode|math|u\<rightarrow\>\<varphi\><rsub|x>>,
    <with|mode|math|v\<rightarrow\>\<varphi\><rsub|y>> and we count equations
    and unknowns, we find an overdetermined system--BUT:\ 

    <\equation*>
      <big|int><rsub|K>f<rsub|t>\<mathd\>x
      \<mathd\>y+<big|int><rsub|K>H(u,v)\<mathd\>x\<mathd\>y=0
    </equation*>

    is OK.

    <\enumerate>
      <item>Start with <with|mode|math|\<varphi\><rsup|n>\<in\>P<rsup|k>>:

      <\equation*>
        u<rsup|n>=\<varphi\><rsub|x><rsup|n>,<space|1em>v<rsup|n>=\<varphi\><rsub|y><rsup|n>.
      </equation*>

      <item>Euler forward of <with|mode|math|(\<ast\>)> to get
      <with|mode|math|u<rsup|n+1>>, <with|mode|math|v<rsup|n+1>>.
    </enumerate>

    We can advance <with|mode|math|(\<ast\>)> using a time stepper for
    <with|mode|math|\<varphi\><rsup|n>\<in\>P<rsup|k>>, there may not exist a
    polynomial of degree <with|mode|math|k> such that
    <with|mode|math|\<varphi\><rsub|x>=u<rsup|n+1>>,
    <with|mode|math|\<varphi\><rsub|y>=v<rsup|n+1>>. ``Do your best'': Find a
    least-squares <with|mode|math|\<varphi\>> solution so that

    <\equation*>
      <norm|\<varphi\><rsub|x><rsup|n+1>-u<rsup|n+1>|L<rsup|2>|2>+<norm|\<varphi\><rsub|y><rsup|n+1>-v<rsup|n+1>|L<rsup|2>|2>=min<rsub|\<psi\>\<in\>P<rsup|k>><norm|\<psi\><rsub|x><rsup|n+1>-u<rsup|n+1>|L<rsup|2>|2>+<norm|\<psi\><rsub|y><rsup|n+1>-u<rsup|n+1>|L<rsup|2>|2>.
    </equation*>

    (This method is from Hu & Shu in SISC '99.)

    The nasty and unmotivated least-squares approach method can however be
    recast in a more beautiful manner: (Li & Shu) Instead of all of
    <with|mode|math|P<rsup|k>\<times\>P<rsup|k>>, we consider only a subspace
    of it, namely a space <with|mode|math|W\<subset\>P<rsup|k>\<times\>P<rsup|k>>
    whose members satisfy the condition

    <\equation*>
      \<varphi\><rsub|x y>-\<varphi\><rsub|y x>=u<rsub|y>-v<rsub|x>=0.
    </equation*>

    It turns out that the two procedures yield the same results, as proven in
    Li & Shu, Appl. Math. Let. 2005.

    <item>Yet another different method: (Yingda Cheng & Shu) Let's start with
    something simple:

    <\equation*>
      \<varphi\><rsub|t>+a(x)\<varphi\><rsub|x>=0
    </equation*>

    or

    <\equation*>
      \<varphi\><rsub|t>+(a(x)\<varphi\>)<rsub|x>=a<rprime|'>(x)\<varphi\>,
    </equation*>

    i.e. a hyperbolic conservation law with a source term. Further, assume
    <with|mode|math|a(x)\<gtr\>0>. Construct a DG method for this

    <\eqnarray*>
      <tformat|<table|<row|<cell|<big|int><rsub|I<rsub|j>>\<varphi\><rsub|t>v\<mathd\>x-<big|int><rsub|I<rsub|j>>a(x)\<varphi\>v<rsub|x>\<mathd\>x+a(x<rsub|j+1/2>)\<varphi\><rsub|j+1/2><rsup|->v<rsub|j+1/2><rsup|->-a(x<rsub|j-1/2>)\<varphi\><rsub|j-1/2><rsup|->v<rsub|j-1/2><rsup|+>>|<cell|=>|<cell|<big|int><rsub|I<rsub|j>>a<rprime|'>(x)\<varphi\>v\<mathd\>x>>|<row|<cell|>|<cell|\<downarrow\>>|<cell|(<with|mode|text|I.
      by parts)>>>|<row|<cell|<big|int><rsub|I<rsub|j>>\<varphi\><rsub|t>v\<mathd\>x+<with|color|orange|<big|int><rsub|I<rsub|j>>(a(x)\<varphi\>)<rsub|x>v\<mathd\>x>-<with|color|blue|a(x<rsub|j+1/2>)\<varphi\><rsub|j+1/2><rsup|->v<rsub|j+1/2><rsup|->>+a(x<rsub|j-1/2>)\<varphi\><rsub|j-1/2><rsup|+>v<rsub|j-1/2><rsup|+>>|<cell|>|<cell|>>|<row|<cell|+<with|color|blue|a(x<rsub|j+1/2>)\<varphi\><rsub|j+1/2><rsup|->v<rsub|j+1/2><rsup|->>-a(x<rsub|j-1/2>)\<varphi\><rsub|j-1/2><rsup|->v<rsub|j-1/2><rsup|+>>|<cell|=>|<cell|<with|color|brown|<big|int><rsub|I<rsub|j>>a<rprime|'>(x)\<varphi\>v\<mathd\>x>>>|<row|<cell|<left|[><with|color|orange|<big|int>(a(x)\<varphi\>)<rsub|x>v>=<with|color|brown|<big|int>a<rprime|'>(x)\<varphi\>v>+<big|int>a(x)\<varphi\><rsub|x>v<right|]>>|<cell|>|<cell|>>|<row|<cell|<big|int><rsub|I<rsub|j>>(\<varphi\><rsub|t>+a(x)\<varphi\><rsub|x>)v\<mathd\>x+a(x<rsub|j-1/2>)[\<varphi\>]<rsub|j-1/2>v<rsup|+><rsub|j-1/2>>|<cell|=>|<cell|0.>>>>
    </eqnarray*>

    We take this as inspiration for the general case
    <with|mode|math|\<varphi\><rsub|t>+H(\<varphi\><rsub|x>)=0>, and from the
    sky falls the following monstrosity (ouch):

    <\eqnarray*>
      <tformat|<table|<row|<cell|<big|int><rsub|I<rsub|j>>(\<varphi\><rsub|t>+H(\<varphi\><rsub|x>))v\<mathd\>x>|<cell|>|<cell|>>|<row|<cell|+<frac|1|2><left|(>min<rsub|x\<in\>I<rsub|j+1/2>>H<rprime|'>(\<varphi\><rsub|x>)-<left|\|>min<rsub|x\<in\>I<rsub|j+1/2>>H<rprime|'>(\<varphi\><rsub|x>)<right|\|><right|)>[\<varphi\>]<rsub|j+1/2>v<rsup|-><rsub|j+1/2>>|<cell|>|<cell|>>|<row|<cell|+<frac|1|2><left|(>max<rsub|x\<in\>I<rsub|j-1/2>>H<rprime|'>(\<varphi\><rsub|x>)-<left|\|>max<rsub|x\<in\>I<rsub|j-1/2>>H<rprime|'>(\<varphi\><rsub|x>)<right|\|><right|)>[\<varphi\>]<rsub|j-1/2>v<rsup|+><rsub|j-1/2>>|<cell|=>|<cell|0.>>>>
    </eqnarray*>

    Yingda came up with this by experimentally figuring out what perturbation
    to the coefficient in the above ``inspiring'' example are possible. This
    scheme is a pure upwinding scheme, effectively of Roe type. This scheme
    work satisfactorily except for cells where
    <with|mode|math|H<rprime|'>(\<varphi\><rsub|x>)=0>, where a quick fix is
    to go back to Hu & Shu.
  </enumerate>

  <subsection|Proving Error Estimates>

  For HCLs, a typical convergence proof goes like this:

  <\itemize>
    <item><with|mode|math|u<rsub|h>> is bounded in some strong (semi-)norm,
    e.g. BV-norm

    <\equation*>
      <norm|u<rsub|h>|TV|>=<big|sum><rsub|j>\|u<rsub|j+1>-u<rsub|j>\|.
    </equation*>

    <with|mode|math|TV(u<rsup|n+1>)\<leqslant\>TV(u<rsup|n>>) or
    <with|mode|math|TV(u<rsup|n>)\<leqslant\>C(n\<Delta\>t)><with|mode|math|\<Rightarrow\>>
    a subsequence of <with|mode|math|u<rsub|h>> converges to <em|something>
    when <with|mode|math|h\<rightarrow\>0>.

    <item>``Something'' is a weak solution if a conservative scheme is used
    (Lax-Wendroff theorem).

    <item>If a discrete entropy condition (cell entropy inequality/wavewise
    entropy inequality) is satisfied, then the ``something'' will be an
    entropy solution. <with|mode|math|(\<ast\>)>

    <item>Use the uniqueness of the entropy solution to conclude that the
    original sequence of the numerical solutions (not just a subequence)
    converges to this unique entropy solution. (Every subsequence has a
    subsequence that converges to something unique.)
  </itemize>

  Also, there is a ``brute-force'' approach estimating
  <with|mode|math|<norm|u-u<rsub|h>|L<rsup|1>|>\<leqslant\>C<sqrt|h>>.

  For HJ equations, things are generally expected to be better, since the
  solutions are smoother. In fact, it is not hard to prove
  <with|mode|math|TV(\<varphi\>)\<leqslant\>C> for the Hu & Shu \ DG scheme.
  However, \ there is no equivalent for the step <with|mode|math|(\<ast\>)>
  in the HJ case for the first approach. There is however some
  ``brute-force'' work done in the literature.

  <strong|[Lecture 10/3/07: Hyongsu Baek: Level Set Methods]>

  <subsection|Level-Set Methods>

  Level set methods can be described as methods to capture the evolution of
  an interface. There are two ways in general to capture an interface:

  <\itemize>
    <item>Lagrangian: mark locations of the interface and evolve the
    locations in time

    <item>Eulerian: define a function over space <math|x> as <math|F(x)> and
    define the level set as <math|<left|{>x:F(x)=0}>.\ 
  </itemize>

  \;

  In the Lagrangian framework, suppose that we have one marker denoted as
  <math|<wide|x|\<vect\>>> which denotes the location of one point on the
  interface. If we can calculate the temporal derivative of the location of
  this point and call it <math|<wide|v|\<vect\>>>, the velocity, then solving\ 

  <\equation>
    <frac|\<mathd\><wide|x|\<vect\>>|\<mathd\>t>=<wide|v|\<vect\>><label|eq:lagrangian-evolution>
  </equation>

  will generate the evolution of one point on the interface. Now suppose
  <math|<wide|x|\<vect\>>\<in\><with|math-font|Bbb*|R><rsup|2>> and we want
  to evolve an interface which is a one-dimensional subset <math|C> of
  <math|<with|math-font|Bbb*|R><rsup|2>>. We parameterize the points on
  <math|C> via e.g. normalized arclength <math|p\<in\>[0,1)> and we can then
  solve for

  <\equation*>
    <wide|x|\<vect\>>(p,t) = (x(p,t), y(p,t))
  </equation*>

  via some evolution method similar to (<reference|eq:lagrangian-evolution>).
  Analogously, if <math|<wide|x|\<vect\>>\<in\><with|math-font|Bbb*|R><rsup|3>>,
  then our unknown is a two-dimensional subspace, and is thus parameterized
  by two variables:

  <\equation*>
    <wide|x|\<vect\>>(p,t) = (x(p,q,t), y(p,q,t), z(p,q,t))
  </equation*>

  \;

  Now consider the Eulerian framework: we consider a function
  <math|\<phi\>:<with|math-font|Bbb*|R><rsup|2>\<times\><with|math-font|Bbb*|R><rsup|+>\<rightarrow\><with|math-font|Bbb*|R>>.
  We let <math|D\<in\><with|math-font|Bbb*|R><rsup|2>> be a subset of
  <math|<with|math-font|Bbb*|R><rsup|2>>. Define\ 

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|\<Omega\><rsup|->=<left|{>(x,y):
    \<phi\>(x,y,t)\<less\>0<right|}>>>|<row|<cell|\<Omega\><rsup|+>=<left|{>(x,y):
    \<phi\>(x,y,t)\<gtr\>0<right|}>>>|<row|<cell|\<partial\>\<Omega\>=<left|{>(x,y):
    \<phi\>(x,y,t)=0<right|}>>>>>>
  </equation*>

  Then <math|\<partial\>\<Omega\>\<subset\><with|math-font|Bbb*|R><rsup|2>>
  is the interface we are looking for, and solving for <math|(x,y)>
  satisfying <math|\<phi\>(x,y,t)=0> defines the interface
  <math|\<partial\>\<Omega\>> as a function of time. Note that this framework
  is easily generalized to higher dimensions.\ 

  \;

  Consider a very special form of <math|\<phi\>> as <math|\<phi\>(x,y,t) =
  <sqrt|x<rsup|2>+y<rsup|2>>-1>. This function represents the signed distance
  function between a point in <math|<with|math-font|Bbb*|R><rsup|2>> and the
  unit circle. I.e.,

  <\equation*>
    \<phi\>=<left|{><tabular|<tformat|<cwith|1|1|1|1|cell-halign|r>|<table|<row|<cell|d(x,S<rsup|1>)>|<cell|>|<cell|x\<in\>\<Omega\><rsup|+>>>|<row|<cell|-d(x,S<rsup|1>)>|<cell|>|<cell|x\<in\>\<Omega\><rsup|->>>>>>
  </equation*>

  where <math|S<rsup|1>> is the unit circle in
  <math|<with|math-font|Bbb*|R><rsup|2>> and <math|d(\<cdot\>,\<cdot\>)> is
  the natural Euclidean function on <math|<with|math-font|Bbb*|R><rsup|2>>.
  It turns out that any function satisfying <math|\|\<nabla\>d\|=1> is a
  distance function.\ 

  \;

  Consider the Lagrangian framework (again). Suppose that our marker
  <math|<wide|x|\<vect\>>> evolves with the law
  (<reference|eq:lagrangian-evolution>). We can decompose the velocity of the
  marker into a portion tangential to the interface
  (<math|<wide|T|\<vect\>>>) and a component normal to the interface
  (<math|<wide|N|\<vect\>>>). The portion of the velocity
  <math|<wide|v|\<vect\>>> in the direction <math|<wide|T|\<vect\>>> does not
  change the shape of the object, it simply rotates the markers around the
  interface. Thus, it does not contribute to the change in shape and we shall
  not consider it in our evolution. With this, our new evolution equation
  simplifies to\ 

  <\equation*>
    <frac|\<mathd\><wide|x|\<vect\>>|\<mathd\>t>=(<wide|v|\<vect\>>\<cdot\><wide|N|\<vect\>>)*<wide|N|\<vect\>>
  </equation*>

  \;

  Now consider the Eulerian framework. We wish to solve for <math|x(t)>,
  <math|y(t)> satisfying <math|\<phi\>(x(t),y(t),t)=0>. Taking a total
  derivative of <math|\<phi\>> yields

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|<frac|\<mathd\>\<phi\>|\<mathd\>t>>|<cell|=>|<cell|<frac|\<partial\>\<phi\>|\<partial\>t>+<frac|\<partial\>\<phi\>|\<partial\>x>*<frac|\<mathd\>x|\<mathd\>t>+<frac|\<partial\>\<phi\>|\<partial\>y>*<frac|\<mathd\>y|\<mathd\>t>>>|<row|<cell|>|<cell|>|<cell|>>|<row|<cell|>|<cell|=>|<cell|<frac|\<partial\>\<phi\>|\<partial\>t>+<left|(><frac|\<mathd\>x|\<mathd\>t>,<frac|\<mathd\>y|\<mathd\>t><right|)>\<cdot\>\<nabla\>\<phi\>>>|<row|<cell|>|<cell|>|<cell|>>|<row|<cell|>|<cell|=>|<cell|<frac|\<partial\>\<phi\>|\<partial\>t>+F*<wide|N|\<vect\>>\<cdot\>\<nabla\>\<phi\>,>>>>>
  </equation*>

  where\ 

  <\equation*>
    <wide|N|\<vect\>>=<frac|\<nabla\>\<phi\>|\|\<nabla\>\<phi\>\|>.
  </equation*>

  Then the evolution equation simplifies to\ 

  <\equation>
    <frac|\<partial\>\<phi\>|\<partial\>t>+F*\|\<nabla\>\<phi\>\|=0.<label|eq:hj-levelset>
  </equation>

  But a distance function satisfies <math|\|\<nabla\>\<phi\>\|=1>, so we
  recover

  <\equation*>
    <frac|\<partial\>\<phi\>|\<partial\>t>+F=0
  </equation*>

  for distance functions <math|\<phi\>>. Equation
  (<reference|eq:hj-levelset>) is the starting point for our mathematical
  discussion.

  <strong|[Lecture 10/10/07: Chi-Wang Shu]>

  <section|Boltzmann-Type Equations>

  The function that we are seeking as a solution of Boltzmann-type equations
  is a density <math|f(x,u,t)> over space (1D to 3D), velocity (1D to 3D),
  and time (1D). Total dimensionality is 6 (+1 for time). The equations that
  we're dealing with read

  <\eqnarray*>
    <tformat|<table|<row|<cell|f<rsub|t>+u*f<rsub|x><wide*|-<frac|e|m>E*f<rsub|u>|\<wide-underbrace\>><rsub|<with|mode|text|outside
    force>>>|<cell|=>|<cell|<frac|1|\<tau\>><left|(>n*M(u)-f<right|)>,>>|<row|<cell|E>|<cell|=>|<cell|-\<varphi\><rsub|x>,>>|<row|<cell|(\<varepsilon\>\<varphi\><rsub|x>)<rsub|x>>|<cell|=>|<cell|e(n-n<rsub|d>),<space|1em>\<varphi\>(0)=0,<space|1em>\<varphi\>(1)=v<rsub|bias>,>>|<row|<cell|n(x,t)>|<cell|\<assign\>>|<cell|<big|int><rsub|-\<infty\>><rsup|\<infty\>>f(x,u,t)\<mathd\>u,>>|<row|<cell|M(u)>|<cell|=>|<cell|<frac|1|<sqrt|2\<pi\>>\<theta\>>e<rsup|-2u<rsup|2>/2\<theta\>>,>>>>
  </eqnarray*>

  where we have given constants <math|e>, <math|m>, <math|\<tau\>>,
  <math|v<rsub|bias>>, and <math|\<varepsilon\>>, <math|n<rsub|d>> are given
  functions of <math|x>. The coordinates observe the bounds:
  <math|0\<less\>x\<less\>1>, <math|-\<infty\>\<less\>u\<less\>\<infty\>>,
  <math|t\<gtr\>0>. This equation has the following features:

  <\description>
    <item*|<math|\<oplus\>>>It's a scalar equation.

    <item*|<math|\<oplus\>>>LHS is a simple convection in conservation form.
    Upwinding is simple to implement.

    <item*|<math|\<oplus\>>>RHS is ``just'' a source term

    <item*|<math|\<ominus\>>>Dimension is too high.

    1D or at most 2D in space.

    1D in space <math|\<Rightarrow\>>1D or 2D in velocity space. (collision
    dependent)

    2D in space <math|\<Rightarrow\>>2D or 3D in velocity space.

    <item*|<math|\<ominus\>>>Often the characteristic speed <math|u>
    convection is unbounded. That, of course, kills explicit timestepping in
    its reliance on CFL-type conditions

    <\equation*>
      max \|u\|<frac|\<Delta\>t|\<Delta\>x>+max<left|(><left|\|>-<frac|e|m>E<right|\|><right|)><frac|\<Delta\>t|\<Delta\>u>\<leqslant\>1.
    </equation*>

    Possible resolutions include:

    <\itemize>
      <item>Just bound it <math|-u<rsub|max>\<leqslant\>u\<leqslant\>u<rsub|max>>.

      <item><math|u> in the Boltzmann equation is replaced by a bounded
      function <math|h(u)>.
    </itemize>

    <item*|<math|\<ominus\>>>More complicated collision models exist:

    <\equation*>
      <big|int>K(x,u,u<rprime|'>)f(u<rprime|'>)\<mathd\>u<rprime|'>.
    </equation*>

    <math|x>, <math|u>: compute a numerical integral in the dimension of
    <math|u>.
  </description>

  Treating the LHS:

  <\itemize>
    <item>spectral methods.

    In space:

    <\itemize>
      <item>Chebyshev

      <item>Legendre (no good FFT)
    </itemize>

    In velocity space: <math|-\<infty\>\<less\>u\<less\>\<infty\>> in
    multiple dimensions

    <\itemize>
      <item>Infinite domains: Hermite and Laguerrre polynomials have been
      tried...

      <item>...with mixed success
    </itemize>

    <item><math|f> can sometimes be pretty nonsmooth

    <item>Lagrange-type methods (follow characteristics)

    <\itemize>
      <item>increase <math|\<Delta\>t> tremendously
    </itemize>

    <item>Usual ``high-resolution'' solvers

    <\itemize>
      <item>treat <math|f<rsub|x>> and <math|f<rsub|u>> by TVD, ENO,
      <strong|WENO>, DG

      <item>drastic restrictions on <math|\<Delta\>t>

      <item>save time by freezing weights in WENO (high-order linear
      approximation)
    </itemize>
  </itemize>

  Treating the RHS:

  <\itemize>
    <item>simple relaxation type collision can be handled explicitly as a
    source term.

    <item>handled explicitly as a source term

    <\itemize>
      <item>difficulty arises when <math|\<tau\>\<ll\>\<Delta\>x> or
      <math|\<Delta\>u>. (``stiff'' source
      term)<math|\<rightarrow\>><math|\<Delta\>t> has to be reduced

      <item>use an implicit solver for the source term

      <item>could choose an implicit solver to overcome this difficulty

      <item>or go really high-tech and use <em|implicit-explicit methods>:

      <\equation*>
        f<rsup|n+1>=f<rsup|n>+\<Delta\>t(C<rsup|n>+S<rsup|n+1>),
      </equation*>

      where <math|C> stands for the convection term and <math|S> stands for
      the source term.
    </itemize>
  </itemize>

  In general, the collision term is a real integral.

  <\itemize>
    <item>Fatemi & Odeh: use linear interpolation to actually evaluate the
    integral.

    <item>Possibly use WENO interpolation to avoid oscillation.

    <item>A. Majorana (2001) et al. use a clever transform to avoid
    interpolation and have the integral evaluation always use values at exact
    grid points.

    <item>Possibly use Fast Multipole Methods to reduce computational cost.

    <item>Or use FFT.
  </itemize>

  \ <strong|[Begin lecture October 17, 2007: Chi-Wang Shu]>

  <section|Semiconductor Device Simulation Models>

  \;

  \;

  [Name-dropping in Shu's circle of friends: Joseph Jerome (Northwestern
  University), Odeh (Bell labs?), and Fatemi (NU as well? Graduated)]

  <subsection|Drift-diffusion model>

  <\equation>
    n<rsub|t>+J<rsub|x>=0,<label|eq:dd-n-evolution>
  </equation>

  where <math|n(x,t)> is the number density of electrons, and <math|J> is the
  current density. Physical properties of the medium include the doping
  density <math|n<rsub|d>>. We can decompose <math|J> into a hyperbolic and a
  viscous factor as follows:

  <\equation>
    J = J<rsub|hyp>+J<rsub|vis>.<label|eq:j-decomposition>
  </equation>

  We define\ 

  <\equation*>
    J<rsub|hyp>=-\<mu\>*n*E,
  </equation*>

  where <math|\<mu\>> is the <with|font-shape|italic|electron mobility>. A
  typical value for <math|\<mu\>> is <math|0.75> <math|[\<mu\>m<rsup|2>/V]>.
  One of the usual functions values for <math|\<mu\>> is\ 

  <\equation*>
    \<mu\>=<left|{><tabular|<tformat|<cwith|2|2|1|1|cell-halign|c>|<table|<row|<cell|0.75>|<cell|where>|<cell|n<rsub|d>=10<rsup|6>
    (\<mu\>m)<rsup|-3>>>|<row|<cell|4.0>|<cell|where>|<cell|n<rsub|d>=2\<times\>10<rsup|3>
    (\<mu\>m)<rsup|-3>>>>>>
  </equation*>

  or we can also make <math|\<mu\>> a function of <math|E> (the electric
  field) as\ 

  <\equation*>
    \<mu\>=\<mu\>(E) = <frac|2\<mu\><rsub|0>|1+<sqrt|(1 +
    4*<left|(><frac|\<mu\><rsub|0>\|E\||v<rsub|d>><right|)><rsup|2>>>,
  </equation*>

  for <math|\<mu\><rsub|0>=4.0>, <math|v<rsub|d>=2.0 [\<mu\>m/ps]>. Recall
  that <math|E > is the electric field given by\ 

  <\equation*>
    E = -\<phi\><rsub|x>,
  </equation*>

  where <math|\<phi\>> is the <with|font-shape|italic|electric potential> and
  is solved for via

  <\equation*>
    <tabular|<tformat|<cwith|1|1|1|1|cell-halign|r>|<cwith|3|3|1|1|cell-halign|r>|<table|<row|<cell|(\<varepsilon\>*\<phi\><rsub|x>)<rsub|x>=e*(n-n<rsub|d>)>>|<row|<cell|>>|<row|<cell|\<phi\>(0)
    = 0, <hspace|0.1cm> \<phi\>(L) = v<rsub|bias>>>>>><right|}>
  </equation*>

  <math|\<varepsilon\>> is the <with|font-shape|italic|electric permittivity>
  and <math|v<rsub|bias>> is some bias potential. Now we can define the
  diffusive term as

  <\equation*>
    J<rsub|vis>=-\<sigma\>*(n*\<theta\>)<rsub|x>,
  </equation*>

  where we have introduced the temperature <math|\<theta\>>

  <\equation*>
    \<theta\>=<frac|k<rsub|b>|m>*T<rsub|b>.
  </equation*>

  Note that in this model, the diffusive term <math|(J<rsub|vis>)<rsub|x>> is
  linear in <math|n>, so this is a relativey `easy' model. However, this
  model is difficult to compute because the doping <math|n<rsub|d>> is very
  often discontinuous, and leads to very sharp gradients (layers) in the
  number density <math|n>.

  A very popular method (e.g. commercial softwares) for solving
  drift-diffusion systems like this one is the
  <with|font-shape|italic|Schurfetter-Gummel> method: suppose we have steady
  state. Then the equation basically reads (<reference|eq:dd-n-evolution>)

  <\equation*>
    (a*n)<rsub|x>-(b*n<rsub|x>)<rsub|x>=0
  </equation*>

  Integrating as\ 

  <\equation*>
    <frac|a|b>n-n<rsub|x>=const.
  </equation*>

  then the solution can be written as\ 

  <\equation*>
    n=c*e<rsup|<frac|a*x|b>>.
  </equation*>

  However, one can still just hit (<reference|eq:dd-n-evolution>) with
  ENO/WENO/DG solvers, and it will work quite well.\ 

  <subsection|High field model>

  (See Cercignani and Gamba and Levermore)

  Idea: use Maxwell's equations as the driving force. Start with same
  equations (<reference|eq:dd-n-evolution>) and
  (<reference|eq:j-decomposition>). But now take

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|J<rsub|hyp>=-\<mu\>*n*E-\<tau\>*\<mu\>*<frac|e|\<varepsilon\>>*n*(-\<mu\>*n*E+\<omega\>)>>|<row|<cell|J<rsub|vis>=-\<tau\>*(n*(\<theta\>+2*\<mu\><rsup|2>*E<rsup|2>))<rsub|x>+\<tau\>*\<mu\>*E*(\<mu\>*n*E)<rsub|x>>>>>>
  </equation*>

  Computationally, is not that much different than drift-diffusion: just add
  some more terms to solver.\ 

  <subsection|Momentum solvers>

  So far we have only conserved `mass', i.e. the mass density <math|n(x,t)>.
  However, it also makes sense to conserve `momentum':

  <\equation*>
    nu=<big|int>f*v*\<mathd\>v,
  </equation*>

  where <math|f> is the phase-space density function (unknown in the
  Boltzmann eqn).\ 

  <subsection|Energy Transport Models>

  Idea: use mass and `energy' conservation:

  <\equation*>
    W=<big|int>f*(v-nu)<rsup|2>*\<mathd\>v
  </equation*>

  Then we model momentum explicity so that we don't have to conserve it. The
  equations are then conservation of mass (<reference|eq:dd-n-evolution>) and
  some conservation law for <math|W>. There are many, many types of energy
  transport models. A particular one is

  <\equation*>
    u<rsub|t>+f(u)<rsub|x>=g(u)<rsub|x*x>+h(u),
  </equation*>

  with\ 

  <\equation*>
    u =<matrix|<tformat|<table|<row|<cell|e*n>>|<row|<cell|<frac|n*E|m>>>>>>,
    <hspace|0.3cm> f(u) = \<phi\><rprime|'>*n*<matrix|<tformat|<table|<row|<cell|e*\<mu\>(E)>>|<row|<cell|\<mu\><rsup|E>(E)+D(E)>>>>>,
    <hspace|0.3cm> g(n) =<matrix|<tformat|<table|<row|<cell|n*D(E)>>|<row|<cell|n*D<rsup|E>(E)>>>>>,
  </equation*>

  and

  <\equation*>
    h(u) = <matrix|<tformat|<table|<row|<cell|0>>|<row|<cell|e*n\<mu\>(E)*(\<phi\><rprime|'>)<rsup|2>+<frac|e|\<varepsilon\>>(n-n<rsub|d>)*n*D(E)-n*<left|langle><frac|\<partial\>E|\<partial\>t><right|\|><rsub|coll><right|rangle>>>>>>
  </equation*>

  Advantage of this model: only two unknowns (as opposed to three for
  momentum conservation).\ 

  <subsection|Hydrodynamic Model>

  <\equation>
    <left|{><tabular|<tformat|<table|<row|<cell|n<rsub|t>+(n*v)<rsub|x>=0>>|<row|<cell|>>|<row|<cell|p<rsub|t>+(p*v+n*k<rsub|b>*T)<rsub|x>=-e*n*E-<frac|p|\<tau\><rsub|p>>>>|<row|<cell|>>|<row|<cell|W<rsub|t>+(n*w+n*v*k<rsub|b>*T)<rsub|x>=-\<sigma\>*n*v*E-<frac|W-W<rsub|0>|\<tau\><rsub|W>>+(\<kappa\>*n*T<rsub|x>)<rsub|x>>>>>><label|eq:hydrodynamic>
  </equation>

  <math|p> is the momentum, <math|T> is temperature, <math|E> is energy. The
  LHS of the system above exactly the Euler equations of gas dynamics. This
  is great: we can just apply the usual hyperbolic conservation law
  techniques. However, it's costly: in 2D, we've got 4 unknowns.\ 

  <subsection|Kinetic Model>

  <\equation*>
    f<rsub|t>+u*f<rsub|x>-<frac|e|m>*E*f<rsub|u>=<frac|n*M-f|\<tau\>>
  </equation*>

  <math|f> is the phase-space density function. <math|M> is the Maxwellian
  (Gaussian) profile in velocity-space. This model is more general than
  drift-diffusion, high field, and (maybe) energy transport. However, one
  cannot derive the hydrodynamic model from this one. One could also replace
  the right-hand side by\ 

  <\equation*>
    Q(f) = <big|int><rsub|<with|math-font|Bbb*|R><rsup|3>><left|[>s(k<rprime|'>,k)*f(t,x,k<rprime|'>)
    - s(k,k<rprime|'>)*f(t,x,k)<right|]>*\<mathd\>k<rprime|'>,
  </equation*>

  where the kernel <math|s> is defined as\ 

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|s(k,k<rprime|'>)>|<cell|=>|<cell|
    k<rsub|0>(k,k<rprime|'>)*\<delta\>*(z(k<rprime|'>)-z(k))+>>|<row|<cell|>|<cell|>|<cell|>>|<row|<cell|>|<cell|>|<cell|k*(k,k<rprime|'>)<left|[>(n<rsub|q>+1)*\<delta\>*(z(k<rprime|'>)-z(k)+\<hbar\>*\<omega\>)+n<rsub|1>*(\<delta\>(z(k<rprime|'>)-z(k)-\<hbar\>\<omega\>)<right|]>,>>>>>
  </equation*>

  where\ 

  <\equation*>
    z(k) = <frac|1|1+<sqrt|1+z*<frac|<wide|\<sigma\>|~>|m>\<hbar\><rsup|2>*\|k\|<rsup|2>>*>*<frac|\<hbar\><rsup|2>|m>*\|k\|<rsup|2>.
  </equation*>

  <subsection|Quantum Effects>

  Earliest attempts at incorporating quantum effects into these models is
  attributed to C. Gardner, who developed a quantum hydrodynamic model.
  Unfortunately, that first model looks like it might have some problems with
  it. Quantum models for simpler models (drift-diffusion) have been done, and
  are relatively well-accepted.\ 

  Nobody has really done anything solid with quantum effects in the kinetic
  model.

  <strong|[Begin Lecture 10/25/07: Alan Schiemenz]>

  <section|Fast Sweeping>

  We'ere solving the 2D Eikonal equation

  <\equation*>
    \|\<nabla\>\<varphi\>(x,y)\|=f(x,y)<space|1em><with|mode|text|for>
    x\<in\>\<Omega\>\<setminus\>\<Gamma\>
  </equation*>

  with the condition <math|\<varphi\>(x)=0> for <math|x> on some given curve
  <math|\<Gamma\>>.

  <subsection|Godunov Hamiltonian>

  Let <math|\<Omega\><rsub|h>={(x<rsub|i>,y<rsub|j>)}<rsub|i,j=1><rsup|I,J>>,
  where <math|h=\<Delta\>x=\<Delta\>y>. \ and then set

  <\equation>
    <wide|H|^>:<left|[><left|(><frac|\<varphi\><rsub|i,j>-\<varphi\><rsub|x,min><rsup|i,j>|h><right|)><rsup|+><right|]><rsup|2>+<left|[><left|(><frac|\<varphi\><rsub|i,j>-\<varphi\><rsub|y,min><rsup|i,j>|h><right|)><rsup|+><right|]><rsup|2>=f<rsub|i,j><rsup|2>,<label|eq:fs-godunov>
  </equation>

  \ where

  <\eqnarray*>
    <tformat|<table|<row|<cell|\<varphi\><rsub|x,min><rsup|i,j>>|<cell|\<assign\>>|<cell|min(\<varphi\><rsub|i-1,j>,\<varphi\><rsub|i+1,j>),>>|<row|<cell|\<varphi\><rsub|y,min><rsup|i,j>>|<cell|\<assign\>>|<cell|min(\<varphi\><rsub|i,j-1>,\<varphi\><rsub|i,j+1>).>>>>
  </eqnarray*>

  Steps in the algorithm:

  <\enumerate>
    <item>Initialize <math|\<varphi\>= \<infty\>>

    <item>Fix <math|\<varphi\>> on <math|\<Gamma\>>, never let it change.

    <item>Until convergence, do

    <\enumerate>
      <item>Pick the next <with|font-family|tt|sweep_order> out of

      <\itemize>
        <item><math|i=1\<ldots\>I>, <math|j=1\<ldots\>J>

        <item><math|i=I\<ldots\>1>, <math|j=1\<ldots\>J>

        <item><math|i=I\<ldots\>1>, <math|j=J\<ldots\>1>

        <item><math|i=1\<ldots\>I>, <math|j=J\<ldots\>1>
      </itemize>

      and for each point in the sweep according to
      <with|font-family|tt|sweep_order>, do:

      <\enumerate>
        <item>solve (<reference|eq:fs-godunov>) for a quantity
        <math|<wide|\<varphi\>|\<bar\>><rsub|i,j>>

        <item>set the new <math|\<varphi\><rsub|i,j>\<assign\>min(<wide|\<varphi\>|\<bar\>><rsub|i,j>,\<varphi\><rsub|i,j><rsup|old>)>
      </enumerate>

      \ in a sweeping motion, moving according to
      <with|font-family|tt|sweep_order>.
    </enumerate>
  </enumerate>

  The solution to (<reference|eq:fs-godunov>) can be written down explicitly:

  <\equation*>
    <wide|\<varphi\>|\<bar\>><rsub|i,j>=<choice|<tformat|<table|<row|<cell|min(a,b)+f<rsub|i,j>h>|<cell|\|a-b\|\<geqslant\>f<rsub|i,j>h,>>|<row|<cell|<frac|a+b+<sqrt|2f<rsub|i,j>h<rsup|2>-(a-b)<rsup|2>>|2>>|<cell|<with|mode|text|else>.>>>>>
  </equation*>

  Remarks:

  <\itemize>
    <item>Easily generalizable to multiple dimensions

    <item>The entire thing is essentially a Gau˙-Seidel update. Since
    Gau˙-Seidel is order-dependent, we try each ordering in turn.

    <item>A 1D problem is done after 2 sweeps.

    <item>In <math|O(1)> sweeps, you can bring down the error to order
    <math|h>.
  </itemize>

  Thinking about the 1D situation is really helpful: Solve
  <math|\|\<partial\><rsub|x>f\|=1>, keeping <math|f(0)=f(1)>. Sweeping right
  just gives <math|f(x)=x>, and sweeping left puts the mandatory kink at
  <math|x=0.5> if starting out to the left with slope 1 from <math|f(1)=0>.

  <subsection|Lax-Friedrichs Hamiltonian>

  Next, we're trying to solve a more horrible, even more nonlinear equation:

  <\equation*>
    \<psi\><rsub|t>+\<gamma\><left|(><frac|\<nabla\>\<psi\>|\|\<nabla\>\<psi\>\|><right|)>\|\<nabla\>\<psi\>\|=0,
  </equation*>

  where again we're given <math|\<psi\>=0> on the curve <math|\<Gamma\>>, and
  <math|\<gamma\>> is sort of a ``normal speed'' or a ``surface tension''.
  Focusing on the zero level set gives us the time-independent equation

  <\equation*>
    <wide*|\<gamma\><left|(><frac|\<nabla\>\<psi\>|\|\<nabla\>\<psi\>\|><right|)>\|\<nabla\>\<psi\>\||\<wide-underbrace\>><rsub|H>=1
  </equation*>

  on all of <math|\<bbb-R\><rsup|d>>. The solution of this problem takes a
  shape called <em|Wulff crystals>.

  To tackle this nonlinearity, we use the Lax-Friedrichs Hamiltonian, which
  in 1D reads

  <\equation*>
    <wide|H|^><rsub|i,j>(\<rho\><rsup|->,\<rho\><rsup|+>)=H<left|(><frac|\<rho\><rsup|+>+\<rho\><rsup|->|2><right|)>-\<sigma\><rsub|x><frac|\<rho\><rsup|+>+\<rho\><rsup|->|2>,
  </equation*>

  where

  <\equation*>
    \<sigma\><rsub|x>\<geqslant\>max<rsub|\<rho\>\<in\>[\<rho\><rsub|->,\<rho\><rsub|+>]><left|\|><frac|\<partial\>H|\<partial\>p><right|\|>.
  </equation*>

  To repeat, our equation reads <math|H(\<nabla\>\<varphi\>)=R(x)>, with
  <math|\<varphi\>=g> on <math|\<Gamma\>> given. Then our L-F update can be
  written as

  <\equation>
    <wide|\<varphi\>|\<bar\>><rsub|i>=<frac|\<Delta\>x|\<sigma\><rsub|x>><left|(>R(x<rsub|i>)-H<left|(><frac|\<varphi\><rsub|i+1>-\<varphi\><rsub|i-1>|2\<Delta\>x><right|)><right|)>+<frac|\<varphi\><rsub|i+1>-\<varphi\><rsub|i-1>|2>,<label|eq:fs-lf-update>
  </equation>

  and again we'll have <math|\<varphi\><rsub|i><rsup|new>=min(\<varphi\><rsub|i><rsup|old>,<wide|\<varphi\>|\<bar\>><rsub|i>)>.

  The computational boundary is handled by means of ghost cells, setting

  <\eqnarray*>
    <tformat|<table|<row|<cell|\<varphi\><rsub|0,j>>|<cell|=>|<cell|\<varphi\><rsub|i,0>,>>|<row|<cell|\<varphi\><rsub|I+1,j>>|<cell|=>|<cell|\<varphi\><rsub|i,J+1>.>>>>
  </eqnarray*>

  Remarks:

  <\itemize>
    <item>We're no longer upwinding--(<reference|eq:fs-lf-update>) takes
    information from <em|both> sides of the point currently being updated.

    <item>The flux is monotone. <math|\<oplus\>>

    <item>It's easier to do in higher dimensions. <math|\<oplus\>>

    <item>No nonlinear inversion necessary. <math|\<oplus\>>

    <item>Takes many more Gau˙-Seidel iterations to converge.
    <math|\<ominus\>>
  </itemize>

  <subsection|High-Order Methods>

  In order to achieve high-order, we will look at a WENO approximation
  <math|\<nabla\>\<varphi\>>. Recall:

  <\eqnarray*>
    <tformat|<table|<row|<cell|(\<varphi\><rsub|x>)<rsub|i,j><rsup|Godunov>>|<cell|=>|<cell|<frac|\<varphi\><rsub|i,j>-\<varphi\><rsub|i,j><rsup|x,min>|\<Delta\>x>,>>|<row|<cell|(\<varphi\><rsub|x>)<rsub|i,j><rsup|LF>>|<cell|=>|<cell|<frac|\<varphi\><rsub|i+1,j>-\<varphi\><rsub|i-1,j>|2\<Delta\>x>.>>>>
  </eqnarray*>

  Now we're going to have

  <\eqnarray*>
    <tformat|<table|<row|<cell|(\<varphi\><rsub|x>)<rsup|-><rsub|i,j>>|<cell|=>|<cell|(1-w<rsub|->)<frac|\<varphi\><rsub|i+1,j>-\<varphi\><rsub|i-1,j>|2h>+w<rsub|-><frac|3\<varphi\><rsub|i,j>-4\<varphi\><rsub|i-1,j>+\<varphi\><rsub|i-2,j>|2h>,>>|<row|<cell|(\<varphi\><rsub|x>)<rsub|i,j><rsup|+>>|<cell|=>|<cell|(1+w<rsub|+>)<frac|\<varphi\><rsub|i+1,j>-\<varphi\><rsub|i-1,j>|2h>+w<rsub|+><frac|-\<varphi\><rsub|i+2,j>+4\<varphi\><rsub|i+1,j>-3\<varphi\><rsub|i,j>|>,>>>>
  </eqnarray*>

  where our weights are

  <\eqnarray*>
    <tformat|<table|<row|<cell|w<rsub|->>|<cell|=>|<cell|<frac|1|1+2\<Gamma\><rsub|-><rsup|2>>,<space|2em>\<Gamma\><rsub|->=<frac|\<varepsilon\>+[\<varphi\><rsub|i,j>-2\<varphi\><rsub|i-1,j>+\<varphi\><rsub|i-2,j>]<rsup|2>|\<varepsilon\>+[\<varphi\><rsub|i+1,j>-2\<varphi\><rsub|i,j>+\<varphi\><rsub|i-1,j>]<rsup|2>>,>>|<row|<cell|w<rsub|+>>|<cell|=>|<cell|<frac|1|1+2\<Gamma\><rsub|+><rsup|2>>,<space|2em>\<Gamma\><rsub|+>=<frac|\<varepsilon\>+[\<varphi\><rsub|i+2,j>-2\<varphi\><rsub|i+1,j>+\<varphi\><rsub|i,j>]<rsup|2>|\<varepsilon\>+[\<varphi\><rsub|i+1,j>-2\<varphi\><rsub|i,j>+\<varphi\><rsub|i-1,j>]<rsup|2>>.>>>>
  </eqnarray*>

  <math|(\<varphi\><rsub|y>)<rsup|\<pm\>>> are analogous. We introduce the
  Godunov Hamiltonian just as above:

  <\equation*>
    <wide|\<varphi\>|\<bar\>><rsub|i,j>=<choice|<tformat|<table|<row|<cell|min(a,b)+f<rsub|i,j>h>|<cell|\|a-b\|\<geqslant\>f<rsub|i,j>h,>>|<row|<cell|<frac|a+b+<sqrt|2f<rsub|i,j>h<rsup|2>-(a-b)<rsup|2>>|2>>|<cell|<with|mode|text|else>.>>>>>
  </equation*>

  But this time, we are going to set

  <\equation*>
    a=u<rsub|x,min>=min<left|[><left|(>\<varphi\><rsub|i,j><rsup|old>-\<Delta\>x(\<varphi\><rsub|x>)<rsup|-><rsub|i,j><right|)>,<left|(>\<varphi\><rsub|i,j><rsup|old>-\<Delta\>x(\<varphi\><rsub|x>)<rsup|+><rsub|i,j><right|)>,
  </equation*>

  and <math|b> likewise.

  using our WENO approximations.

  Remarks:

  <\itemize>
    <item>Neither monotone nor upwinded.

    <item>We do not take <math|\<varphi\><rsub|i,j><rsup|new>=min(\<varphi\><rsub|i,j><rsup|old>,<wide|\<varphi\>|\<bar\>><rsub|i,j>)>,
    because we might accidentally generate values <em|below> the viscosity
    solution, which would kill our nice high-order accuracy.

    Instead, we take <math|\<varphi\><rsup|new><rsub|i,j>=<wide|\<varphi\>|\<bar\>><rsub|i,j>>.
  </itemize>

  WENO may also be introduced for the Lax-Friedrichs Hamiltonian. Recall our
  previous result

  <\equation*>
    <wide|\<varphi\>|\<bar\>><rsub|i,j>=<frac|1|<frac|\<sigma\><rsub|x>|\<Delta\>x>+<frac|\<sigma\><rsub|y>|\<Delta\>y>><left|[>R<rsub|i,j>-H<left|(><frac|\<varphi\><rsub|i+1,j>-\<varphi\><rsub|i-1,j>|2\<Delta\>x>,<frac|\<varphi\><rsub|i,j+1>-\<varphi\><rsub|i,j+1>|2\<Delta\>y><right|)>+\<sigma\><rsub|x><frac|\<varphi\><rsub|i+1,j>-\<varphi\><rsub|i-1,j>|2\<Delta\>x?>+\<sigma\><rsub|y><frac|\<varphi\><rsub|i,j+1>-\<varphi\><rsub|i,j+1>|2\<Delta\>y><right|]>.
  </equation*>

  To introduce WENO into this, we do the following:

  <\enumerate>
    <item>Replace

    <\equation*>
      H(\<cdot\>,\<cdot\>)\<rightarrow\>H<left|(><frac|(\<varphi\><rsub|x>)<rsub|i,j><rsup|->+(\<varphi\><rsub|x>)<rsup|+><rsub|i,j>|2>,<frac|(\<varphi\><rsub|y>)<rsub|i,j><rsup|->+(\<varphi\><rsub|y>)<rsup|+><rsub|i,j>|2><right|)>
    </equation*>

    <item>Replace

    <\equation*>
      <frac|\<varphi\><rsub|i+1,j>+\<varphi\><rsub|i-1,j>|2>\<rightarrow\><frac|2\<varphi\><rsub|i,j><rsup|old>+\<Delta\>x[(\<varphi\><rsub|x>)<rsub|i,j><rsup|+>-(\<varphi\><rsub|x>)<rsub|i,j><rsup|->]|2\<Delta\>x>.
    </equation*>
  </enumerate>

  Remarks:

  <\itemize>
    <item>LF-WENO is more robust than Godunov-WENO.

    <item>The high-order methods require a good starting guess to actually
    converge. One possibility is to have a low-order method to produce a
    starting guess, and then use high-order.
  </itemize>

  <\equation*>
    \;
  </equation*>

  <strong|[Begin Lecture 10/31/07: Ishani Roy]>

  <section|Boltzmann Equations for Semiconductor Devices>

  The Boltzmann equation models the evolution of (multiple) species of
  particles in phase (physical-velocity) space. The collisionless Boltzmann
  equation is called the <with|font-shape|italic|Vlasov Equation>. What kinds
  of collisions can we have? In semiconductor devices, electron-electron and
  electron-hole collisions are negligible (hole = positively charged ion).
  The only external applied field we consider is the electric field.\ 

  \;

  Consider the number density <math|f=f(t,x,v)>. The rate of change due to
  convection is zero (neglecting collision):

  <\equation*>
    <left|(><frac|\<mathd\>f|\<mathd\>t><right|)><rsub|conv>=0
  </equation*>

  It's reasonable to say the rate of change of collision and convection are
  the same:

  <\equation*>
    <left|(><frac|\<mathd\>f|\<mathd\>t><right|)><rsub|conv>=<left|(><frac|\<mathd\>f|\<mathd\>t><right|)><rsub|coll>
  </equation*>

  <subsection|Convection>

  The convection can be carried out by following characteristics:

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|<wide|x|\<dot\>>=u>>|<row|<cell|>>|<row|<cell|<wide|u|\<dot\>>=-<frac|q|m>E(x,t)>>>>>
  </equation*>

  <subsection|Collision>

  The collision term <math|P(t,x,u<rprime|'>\<rightarrow\>u)> is the rate
  that a particle with position <math|x> at time <math|t> changes its
  velocity from <math|u<rprime|'>> to <math|u> due to a scattering
  (collision). Via probabilities and Pauli exclusion principle, the
  scattering term has the form

  \ slide advanced (d'oh!)

  \;

  <subsection|Semiclassical Boltzmann Eqn>

  This formulation employed to incorporate quantum effects in semiconductor
  crystal lattice. Semiclassical Boltzmann eqn:

  <\equation*>
    \<partial\><rsub|t>f+u(k)\<cdot\>\<nabla\><rsub|x>f-<frac|e|\<hbar\>>E\<cdot\>\<nabla\><rsub|k>f=Q(f),
  </equation*>

  where\ 

  <\equation*>
    Q(f) = <big|int><rsub|<with|math-font|Bbb*|(R><rsup|3>)><left|[>s(x,k<rprime|'>,k)*f(t,x,k<rprime|'>)*(1-f(t,x,k))-s(x,k,k<rprime|'>)*f(t,x,k)*(1-f(t,x,k<rprime|'>))<right|]>\<mathd\>k<rprime|'>*
  </equation*>

  \;

  Types of collisions:

  <\itemize>
    <item>conservation of particles

    <\equation*>
      <big|int><rsub|<with|math-font|Bbb*|R><rsup|3>>Q(f)*\<mathd\>k=0
    </equation*>

    <item>Relaxation to thermal equilibrium

    <item>(something else)

    <item>Low-density approximation: quadratic term ignored
  </itemize>

  We will look at relaxation to equilibrium: the Maxwellian (equilibrium
  distribution) is\ 

  <\equation*>
    M(k) = N<rsup|\<asterisk\>>*e<rsup|<left|(>-<frac|\<varepsilon\>(k)|k<rsub|B>*T<rsub|L>><right|)>>
  </equation*>

  where <math|N<rsup|\<asterisk\>>> is a normalizing term.\ 

  We also will look at Polar optical scattering:

  <\equation*>
    Q(f) = <big|int><rsub|<with|math-font|Bbb*|R><rsup|3>><left|[>S(k<rprime|'>,k)*f(t,x,k<rprime|'>)-S(k,k<rprime|'>)*f(t,x,k)<right|]>*\<mathd\>k<rprime|'>,
  </equation*>

  where

  <\equation*>
    S(k,k<rprime|'>) = <big|sum><rsub|i=1><rsup|n>G<rsub|i>(k,k<rprime|'>)*<left|[>(n<rsub|i>+1)*\<delta\>(\<varepsilon\>(k<rprime|'>)-\<varepsilon\>(k)+\<hbar\>\<omega\><rsub|i>)
    + something else<right|]>
  </equation*>

  The <math|\<delta\>((\<varepsilon\>(k<rprime|'>)-\<varepsilon\>(k)+\<hbar\>\<omega\><rsub|i>)>
  function is used as an approximation. Usually <math|\<varepsilon\>(k)> can
  be taken as some simple smooth function to make the calculation of
  <math|Q(f)> easier. We can take

  <\itemize>
    <item><math|\<varepsilon\>(k)=> parabolic

    <item>non-parabolic

    <item>Kane dispersion
  </itemize>

  A common application of this equation is for Gallium-arsenide
  semiconductors. Direct band-gap semiconductors like GaAs can be used for
  LEDs and for semiconductor lasers.\ 

  <subsection|Kinetic model for a GaAs diode>

  <\equation*>
    <frac|\<partial\>f|\<partial\>t>+u*<frac|\<partial\>f|\<partial\>x>-<frac|e|m>E(x,t)
    = blah blah
  </equation*>

  In order to determine the electric field, we need to solve a Poisson
  problem

  <\equation*>
    <tabular|<tformat|<table|<row|<cell|E(x,t) =
    -\<phi\><rsub|x>>>|<row|<cell|>>|<row|<cell|(\<varepsilon\>\<phi\><rsub|x>)<rsub|x>=e(n(x,t)-n<rsub|d>)>>|<row|<cell|>>|<row|<cell|\<phi\>(0,t)
    = 0>>|<row|<cell|>>|<row|<cell|\<phi\>(1,t) = v<rsub|bias>>>>>><right|}>
  </equation*>

  \;

  Usually the collision term is\ 

  <\equation*>
    <frac|n(x,t)M(u)-f(t,x,u)|\<tau\>>
  </equation*>

  All the moments (except the zeroth order one) relax to the equilibrium at
  the same rate, but momentum and energy realistically don't do this, so this
  is a disadvantage of this method.\ 

  \;

  This equation has stuff like\ 

  <\equation*>
    f<rsub|t>+u*f<rsub|x>=0,
  </equation*>

  but <math|u> is technically unbounded. This is bad for CFL conditions. The
  way to get around this is to discretize so that you cut off <math|u> at say
  <math|\|u\|\<leq\>a>, and you increase <math|a> until you see that the
  answer doesn't change. E.g. WENO is used to solve these things.\ 

  <subsection|WENO solver for transients of the Boltzmann-Poisson system>

  <\equation*>
    <frac|\<partial\>f|\<partial\>t>+<frac|1|\<hbar\>><frac|\<partial\>\<varepsilon\>|\<partial\>k>\<cdot\><frac|\<partial\>f|\<partial\>x>-<frac|e|\<hbar\>>E\<cdot\><frac|\<partial\>f|\<partial\>k>=Q(f)
  </equation*>

  is the model we shall use. <math|\<hbar\>> and <math|e> are constants. In
  this case, we take <math|\<varepsilon\>(k)> in <math|Q(f)> as

  <\equation>
    \<varepsilon\>(k) = <frac|1|1 + <sqrt|1+2*<frac|<wide|\<alpha\>|~>|m>\<hbar\><rsup|2>\|k\|<rsup|2>>>*<frac|\<hbar\><rsup|2>|m>*\|k\|<rsup|2>,<label|eq:kane-dispersion>
  </equation>

  where <math|<wide|\<alpha\>|~>> is the non-parabolicity factor (parabolic
  band <math|\<Rightarrow\><wide|\<alpha\>|~>=0>). we use
  <math|<wide|\<alpha\>|~>=0.5>. The collision operator is\ 

  <\equation*>
    Q(f) = <big|int><left|[>S(k<rprime|'>,k)*f(t,x,k<rprime|'>)-S(k,k<rprime|'>)*f(t,x,k)<right|]>\<mathd\>k<rprime|'>,
  </equation*>

  and <math|S> is some horrible function of <math|\<varepsilon\>(k)>. Again
  the <math|E>-field is obtained via a Poisson system.\ 

  <subsubsection|Solving>

  We've got a 6-D in space, 1-D in time for a 3D device. This huge physical
  space with the collision integral is motivation for using DSMC. DSMC is
  simple, and relatively cheap to compute. The disadvantage is that this
  method introduces some noise, so we need lots and lots of particles
  (Monte-Carlo trials) in order to get a reasonable approximation back. This
  is why we need deterministic solvers. However, this is expensive. Ways that
  have been explored to do this are

  <\itemize>
    <item>Use spherical coordinates and energy as an unknown
    <math|\<Rightarrow\>>can get down to 2 dimensions

    <item>Use parabolic approximation, solve HCL with upwinding and a
    predictor-corrector in time. However, there is singularity in the
    transformation, so you've got to do some fancy footwork to get around
    this.\ 

    <item>Mazorana and Pidatella use a new transformation of variables which
    is good even in the non-parabolic case, and changes the BP system into an
    HCL, and this is great.\ 
  </itemize>

  The HCL is linear if we neglect nonlinearities in <math|E>. A good way to
  avoid oscillations inherent with high-order oscillations is WENO. Usually
  these applications are 1D, but they `can be generalized' to as much as 2D
  (5D phase space) problem.\ 

  <subsubsection|Transformation>

  Crazy transformation in <math|k>:

  <\equation*>
    k=<sqrt|2>*<frac|<sqrt|m*k<rsub|B>*T<rsub|L>*w>|h>*<sqrt|w>*<sqrt|1+\<alpha\><rsub|k>*w><left|(><sqrt|1-\<mu\><rsup|2>>*cos\<phi\>,
    <sqrt|1-\<mu\><rsup|2>>*sin\<phi\>,\<mu\><right|)>.
  </equation*>

  In addition we use (<reference|eq:kane-dispersion>). Need to find the
  Jacobian <math|J> also, which can be done. The equation is
  nondimensionalized by introducing appropriate variables for <math|k,t,x>.
  the new unknown is\ 

  <\equation*>
    \<Phi\>(t,z,w,\<mu\>)=s(w)*F(t,z,w,\<mu\>)
  </equation*>

  <\equation*>
    s(w) = <sqrt|w>*<sqrt|1+\<alpha\><rsub|k>*w>*(1+2*\<alpha\><rsub|k>w)
  </equation*>

  where <math|F(t,z,w,\<mu\>)> is the direct transformation of
  <math|f(t,x,v)> at some energy. (<math|z\<sim\>x>, <math|w\<sim\>\|v\|>,
  <math|\<mu\>\<sim\>cos(angle between z and k)>).\ 

  <\equation*>
    f\<cong\><frac|1|2><big|int><big|int><big|int>\<Phi\>*\<mathd\>w*\<mathd\>\<mu\>*\<mathd\>z
  </equation*>

  We now write the collision term as <math|C(\<Phi\>)>, which is a
  one-dimensional integral over <math|\<mu\>>. Now <math|z\<in\>[0,L]>,
  <math|w\<in\>[0,w<rsub|max>]>, <math|\<mu\>\<in\>[-1,1]>. We let
  <math|w<rsub|max>=N*h*w> be the maximum value of the energy. We can also
  introduce some `cut' in the collision kernel so that the number of
  electrons with velocity less than <math|w<rsub|max>> is constant in time.
  The new eqn is\ 

  <\equation*>
    <frac|\<partial\>\<Phi\>|\<partial\>t>+<frac|\<partial\>(a<rsub|1>\<Phi\>)|\<partial\>z>+<frac|\<partial\>(a<rsub|2>\<Phi\>)|\<partial\>w>+<frac|\<partial\>(a<rsub|3>\<Phi\>)|\<partial\>\<mu\>>=s(\<mu\>)*C(\<Phi\>)
  </equation*>

  This is a form for which we can do successive one-dimensional
  differentiations, in contrast to the non-transformed equation, for which we
  must do a three-dimensional differentiation. In addition, <math|C(\<Phi\>)>
  is a one-dimensional integral (as opposed to the original three-dimensional
  integral without the <math|\<delta\>>-function approximation).\ 

  <subsubsection|Numerical Scheme>

  The numerical scheme uses a 5th order FD WENO method with a 3rd order TVD
  RK in time. <math|w<rsub|max>> is chosen to be an integer multiple of
  <math|\<alpha\>>, where <math|\<alpha\>> is some translation in <math|w> in
  evaluating <math|\<Phi\>> needed to compute the collision operator.
  <math|w<rsub|max>> is thus chosen so that
  <math|\<Phi\>(t,z,w\<pm\>\<alpha\>,\<mu\>)> lands exactly on a grid point.
  Thus, <math|\<Delta\>w> is also chosen so that <math|w<rsub|j>+\<alpha\>>
  is an integral multiple of <math|\<Delta\>w>. This saves time so that we
  don't have to do any high-order interpolation to evaluate
  <math|\<Phi\>(t,z,w\<pm\>\<alpha\>,\<mu\>)>. The scheme is to integrate the
  BTE on some <math|w\<times\>\<mu\>> rectangle. We use a tensor-product like
  approximation so that we can do constant-coefficient one-dimensional
  derivative approximations for a multi-dimensional non-constant coefficient
  problem.

  \;

  <\strong>
    [Begin Lecture 11/07/07: Yanlai Chen]
  </strong>

  <section|Adaptive High-Order DG Method w/Error Control for H-J Equations>

  <subsection|Error Indictator Methods>

  (cf. R. Nochetto)

  \;

  The general adaptive method includes the following (looped) steps:

  <\enumerate>
    <item>Solve a problem on a triangulation
    <math|<with|math-font|cal|T><rsub|h>>

    <item>Estimate the error in solving on this mesh

    <item>Mark elements for which the error is too large

    <item>Refine/Coarsen the grid according to the marked elements
  </enumerate>

  \;

  The `estimate' step usually involves estimates of the error <math|e> as
  follows:

  <\itemize>
    <item><math|\<\|\|\>e\<\|\|\>\<leq\>C*<big|sum><rsub|T\<in\><with|math-font|cal|T><rsub|h>>\<eta\>(T)>
    (upper bound)

    <item>Lower bound: <math|C<rprime|'>*<big|sum><rsub|T\<in\><with|math-font|cal|T><rsub|h>>\<eta\>(T)\<leq\>\<\|\|\>e\<\|\|\>>
  </itemize>

  Often times we don't really use the lower bound because we don't do much
  coarsening. The `refine' step usually involves refined meshes
  <math|<wide|<with|math-font|cal|T>|^><rsub|h>> and to determine:

  <\equation*>
    argmin<rsub|<wide|<with|math-font|cal|T>|^><rsub|h>><left|{><big|sum><rsub|T\<in\><wide|<with|math-font|cal|T>|^><rsub|h>>\<eta\>(T)\<geq\>\<theta\>*\<eta\>(\<Omega\>)<right|}>
  </equation*>

  for some <math|\<theta\>\<in\>(0,1)>. If you do this, with the estimation
  loop, then one can prove convergence on loop <math|k>:

  <\equation*>
    \<\|\|\>u-u<rsub|h>\<\|\|\>\<leq\>C*\<beta\><rsup|k>
  </equation*>

  for some <math|\<beta\>\<less\>1>.\ 

  <subsection|Moving Mesh Methods>

  (cf. T. Tang)

  The steps here are\ 

  <\enumerate>
    <item>Evolve <math|n> steps

    <item>Redistribute the mesh

    <item>Update
  </enumerate>

  One keeps the number of elements <math|\|<with|math-font|cal|T><rsub|h>\|>
  the same, but redistributes the vertices (and thus nodes) of the elements
  according to a `monitor function', of which

  <\equation*>
    w=<sqrt|1+\|\<nabla\>u\|<rsup|2>>
  </equation*>

  is an example. Let <math|x(\<xi\>)> be the physical domain (global)
  quantities while <math|\<xi\>> is the computational domain (standard)
  coordinates. One evolves the element vertices as

  <\equation*>
    (w*x<rsub|\<xi\>>)<rsub|\<xi\>>=0 \<Rightarrow\>w*x<rsub|\<xi\>>=0
  </equation*>

  <subsection|Adaptivity with Error Control>

  The procedure here is\ 

  <\enumerate>
    <item>Solve

    <item>Estimate

    <item>Generate a new mesh
  </enumerate>

  Utilitze a computable function <math|\<Phi\>> which satisfies
  <math|\<\|\|\>u-u<rsub|h>\<\|\|\>\<less\>\<Phi\>(u<rsub|h>)>.

  \;

  The equation we're trying to solve is\ 

  <\equation>
    u+H(\<nabla\>u)=f.<label|eq:stationary-hj>
  </equation>

  Why no time-evolution? (Unofficially: can't prove error bound.) However,
  suppose <math|\<phi\>> solves the Eikonal equation, e.g.
  (<reference|eq:eikonal-2d>). Then <math|u=e<rsup|\<phi\>>> satisfies
  (<reference|eq:stationary-hj>).\ 

  \;

  Another way: first obtain <math|\<phi\>=u<rsub|x>>, which solves\ 

  <\equation*>
    \<phi\>+H(\<phi\>)<rsub|x>=f<rsub|x>
  </equation*>

  and compute <math|u> via\ 

  <\equation*>
    u(x) = f(0) - H(\<phi\>(0))+<big|int><rsub|0><rsup|x>\<phi\>(s)\<mathd\>s
  </equation*>

  Note: <math|u> is also a steady-state solution to\ 

  <\equation*>
    w<rsub|t>+w+H(w<rsub|x>)=0.
  </equation*>

  So anothe way for obtaining <math|\<phi\>> is to solve

  <\equation*>
    \<psi\><rsub|t>+\<psi\>+H(\<psi\>)<rsub|x>-f<rsub|x>=0.
  </equation*>

  \;

  Newton's method is used to solve the weak formulation of
  (<reference|eq:stationary-hj>). However, Newton's method only converges for
  sufficiently close initial guesses. So a dual Runge-Kutta-type method is
  used to supplement Newton-Raphson far away from the point of convergence.\ 

  <subsubsection|<with|font-shape|italic|A Posteriori> Error Estimate>

  Several estimates have been attempted:

  <\itemize>
    <item>1995: Cockburn & Gau developed a method for conservation laws
    <math|\<Rightarrow\>> H-J equations. However, the effectivity indicator
    is <math|O(h<rsup|-1>)>.\ 

    <item>Crandall & Lions: Continuous dependence <math|\<Rightarrow\>> error
    estimate, the effectivity index is <math|O(1)> in smooth, monotone
    regions, but <math|O(h<rsup|-1>)> for non-smooth solutions

    <item>Albert, Cockburn, French, & Paterson developed an <math|O(1)>, or
    <math|O(log h)> effectivity index for monotone solutions (in smooth or
    non-smooth regions). However, it's <math|O(h<rsup|-1>)> for high-order DG
    schemes. However, one can postprocess the solution to get an <math|O(1)>
    effectivity index, but only when the mesh is uniform.\ 

    <item>Chen and Cockburn: the effectivity index is <math|O(1),O(log h)>
    for <with|font-shape|italic|any> scheme, but only for one-dimensional
    problems.\ 
  </itemize>

  <subsubsection|Continuous Dependence>

  One can show\ 

  <\equation*>
    <left|{><tabular|<tformat|<table|<row|<cell|u+H(\<nabla\>u)=f>>|<row|<cell|v+H(\<nabla\>v)=g>>>>>\<Rightarrow\>\<\|\|\>u-v\<\|\|\><rsub|L<rsup|\<infty\>>>\<leq\>\<\|\|\>f-g\<\|\|\><rsub|L<rsup|\<infty\>>>
  </equation*>

  Then we can form\ 

  <\equation*>
    <left|{><tabular|<tformat|<table|<row|<cell|u+H(\<nabla\>u)=f>>|<row|<cell|u<rsub|h>+H(\<nabla\>u<rsub|h>)=g>>>>>
  </equation*>

  where we define <math|g> as\ 

  <\equation*>
    g = <left|{><tabular|<tformat|<table|<row|<cell|sup<left|{>u<rsub|h>+H(p):
    p\<in\>D<rsup|+><right|}>>|<cell|if>|<cell|D<rsup|+>\<neq\>
    0>>|<row|<cell|inf<left|{>u<rsub|h>+H(p):
    p\<in\>D<rsup|-><right|}>>|<cell|if>|<cell|D<rsup|->\<neq\>0>>>>>
  </equation*>

  in accordance with the theory of viscosity solutions. If we do this then\ 

  <\equation*>
    \<\|\|\>u-u<rsub|h>\<\|\|\><rsub|L<rsup|\<infty\>>>\<leq\>sup<left|{>\|R(u<rsub|h>)\|<right|}>,
  </equation*>

  where <math|R> is the residual.\ 

  \;

  <\strong>
    [Missed Lecture 11/29/07: Wei Wang and Dan Paulsen]
  </strong>

  \;

  <\strong>
    [Begin Lecture 12/05/07: Chi-Wang Shu]
  </strong>

  \;

  <section|Other Applications>

  <subsection|Hierarchical Size-Structured Model>

  Much of this section is take from A.S. Acnleh, et al,
  <with|font-shape|italic|Applied Math Optimization>, v51 (2005), pp 35-59.\ 

  Notation:

  <\itemize>
    <item><math|x>: size

    <item><math|t>: time

    <item><math|u(x,t)>: density of individuals of size <math|x> at time
    <math|t>
  </itemize>

  We take <math|(x,t)\<in\>(0,L]\<times\>(0,T]>, where <math|L> and <math|T>
  are some upper bounds. The PDE is\ 

  <\equation>
    u<rsub|t>+(g(x,Q(x,t)*u)<rsub|x>+m(x,Q(x,t))*u=0<label|eq:hierarchical-pde>
  </equation>

  We can call this a conservation law with a `source term'. <math|g>
  represents some sort of growth. Boundary conditions can be prescribed as\ 

  <\equation*>
    g(0,Q(0,t))*u(0,t)=C(t)+<big|int><rsub|0><rsup|L>\<beta\>(x,Q(x,t))*u(x,t)*\<mathd\>x,<hspace|0.5cm>
    t\<in\>(0,T].
  </equation*>

  <math|C> can be viewed as some source (e.g. growth from some external
  source). <math|Q(x,t)> is called the `environment'. It is defined as\ 

  <\equation*>
    Q(x,t) = \<alpha\><big|int><rsub|0><rsup|x>w(\<xi\>)*u(\<xi\>,t)*\<mathd\>\<xi\>+<big|int><rsub|x><rsup|L>w(\<xi\>)*u(\<xi\>,t)*\<mathd\>\<xi\>.
  </equation*>

  Thus the `environment' depends globally on the density everywhere.
  <math|0\<leq\>\<alpha\>\<less\>1> is a constant which takes into account
  the notion that individuals with size smaller than <math|x> have limited
  (or reduced) influence on those of size <math|x>. Some physical
  interpretations of certain quantities are\ 

  <\itemize>
    <item><math|g>: growth rate

    <item><math|m>: mortality rate

    <item><math|\<beta\>>: reproduction rate

    <item><math|C(\<theta\>)>: inflow rate of size-zero individuals from some
    external source
  </itemize>

  We assume some hypotheses on properties and regularity of the system:

  <\enumerate>
    <item><math|g(x,Q)\<in\>C<rsup|2>>, <math|g(x,Q)\<gtr\>0> for
    <math|x\<in\>(0,L)>, <math|g(L,Q)=0>, <math|g<rsub|Q>(x,Q)\<leq\>0>

    <item><math|m(x,Q)\<geq\>0>, <math|m\<in\>C<rsup|1>>

    <item><math|\<beta\>(x,Q)\<geq\>0>, <math|\<beta\>\<in\>C<rsup|1>>,
    <math|\<beta\>(x,Q)\<leq\>\<omega\><rsub|1>>

    <item><math|w(x)\<geq\>0>, <math|w\<in\>C<rsup|1>>

    <item><math|C(t)\<geq\>0>, <math|C\<in\>C<rsup|1>>

    <item><math|u(x,0)\<in\>BV(0,L)>, <math|u(x,0)\<geq\>0>
  </enumerate>

  \;

  Acnleh uses a first-order backward-Euler scheme with upwinding:

  <\equation*>
    <frac|u<rsup|n+1><rsub|j>-u<rsup|n><rsub|j>|\<Delta\>t>+<frac|g(x<rsub|j>,Q(x<rsub|j>,t<rsup|n+1>)*u<rsup|n+1><rsub|j>)-g(x<rsub|j-1>,Q(x<rsub|j-1>,t<rsup|n+1>)*u<rsup|n+1><rsub|j-1>)|\<Delta\>x>+m(x<rsub|j>,Q(x<rsub|j>,t<rsup|n+1>)*u<rsup|n+1><rsub|j>=0.
  </equation*>

  The quadrature used to compute the integrals in the definition of <math|Q>
  is Riemann integration using right-hand values. This is to avoid using the
  value <math|u(0,t)>, which depends in a complicated fashion on the global
  values of <math|u>.\ 

  The above scheme is weighed toward theory more than practice: it's hard to
  implement but one can prove existence and uniqueness for solutions to the
  PDE and convergence of the scheme. If one instead uses Euler forward, then
  the implementation becomes much easier (using the right-hand Riemann
  quadrature). However, proving convergence is much harder, but it can be
  done (Jun Shen). However, both schemes are first-order.\ 

  \;

  Suppose we're looking for a second-order TVD scheme. One ingredient would
  be second-order quadrature, which requires <math|u(0,t)>, and this makes
  implementation much harder. But this can also be done.\ 

  [long,long discussion on quadrature]

  One can also do e.g. 5th order WENO to do this stuff.

  \;

  [comments about DG conference]

  <subsection|Error estimate for DG>

  Consider the equation\ 

  <\equation*>
    \<phi\><rsub|t>+a*\<phi\><rsub|x>=b*\<phi\>,
  </equation*>

  with <math|a\<gtr\>0>. We define the discontinuous finite element space

  <\equation*>
    V<rsub|h>=<left|{>v:v<rsub|I<rsub|j>>\<in\>P<rsup|k>(I<rsub|j>)<right|}>.
  </equation*>

  The scheme is: find <math|\<phi\><rsub|h>\<in\>V<rsub|h>> such that\ 

  <\equation*>
    B<rsub|j>(\<phi\><rsub|h>,v<rsub|h>)=<big|int><rsub|I<rsub|j>>(\<phi\><rsub|h>)<rsub|t>*v<rsub|h>*\<mathd\>x-a*<big|int><rsub|I<rsub|j>>\<phi\><rsub|h>(v<rsub|h>)<rsub|x>\<mathd\>x+a*(\<phi\><rsub|h>)<rsup|-><rsub|j+<frac|1|2>>(v<rsub|h>)<rsup|-><rsub|j+<frac|1|2>>-a(\<phi\><rsub|h>)<rsup|-><rsub|j-<frac|1|2>>*(v<rsub|h>)<rsup|+><rsub|j-<frac|1|2>>-<big|int><rsub|I<rsub|j>>b*\<phi\><rsub|h>*v<rsub|h>*\<mathd\>x=0
  </equation*>

  for all <math|v<rsub|h>\<in\>V<rsub|h>>.\ 

  <\proposition>
    (Cell entropy inequality for DG)

    <\equation*>
      <frac|1|2>*<frac|\<mathd\>|\<mathd\>t>*<big|int><rsub|I<rsub|j>>(\<phi\><rsub|h>)<rsup|2>\<mathd\>x+<wide|F|^><rsub|j+<frac|1|2>>-<wide|F|^><rsub|j-<frac|1|2>>\<leq\>b*<big|int><rsub|I<rsub|j>>\<phi\><rsup|2><rsub|h>*\<mathd\>x
    </equation*>

    which implies

    <\equation*>
      <frac|1|2><frac|\<mathd\>|\<mathd\>t><big|int><rsub|0><rsup|1>(\<phi\><rsub|h>)<rsup|2>*\<mathd\>x\<leq\>b*<big|int><rsub|0><rsup|1>(\<phi\><rsub|h>)<rsup|2>*\<mathd\>x
    </equation*>
  </proposition>

  <\proof>
    Take <math|v<rsub|h>=\<phi\><rsub|h>>:

    <\equation*>
      <tabular|<tformat|<table|<row|<cell|0>|<cell|=>|<cell|B<rsub|j>(\<phi\><rsub|h>,\<phi\><rsub|h>)=<big|int><rsub|I<rsub|j>>(\<phi\><rsub|h>)<rsub|t>*\<phi\><rsub|h>*\<mathd\>x-a*<big|int><rsub|I<rsub|j>>\<phi\><rsub|h>(\<phi\><rsub|h>)<rsub|x>\<mathd\>x+a*(\<phi\><rsub|h>)<rsup|-><rsub|j+<frac|1|2>>(\<phi\><rsub|h>)<rsup|-><rsub|j+<frac|1|2>>-a(\<phi\><rsub|h>)<rsup|-><rsub|j-<frac|1|2>>*(\<phi\><rsub|h>)<rsup|+><rsub|j-<frac|1|2>>-<big|int><rsub|I<rsub|j>>b*\<phi\><rsub|h>\<phi\><rsub|h>*\<mathd\>x>>|<row|<cell|>|<cell|>|<cell|>>|<row|<cell|>|<cell|=>|<cell|<frac|\<mathd\>|\<mathd\>t>*<frac|1|2>*<big|int><rsub|I<rsub|j>>(\<phi\><rsub|h>)<rsup|2>*\<mathd\>x-<frac|1|2>*a*(\<phi\><rsub|h><rsup|2>)<rsup|-><rsub|j+<frac|1|2>>+<frac|1|2>*a*(\<phi\><rsup|2><rsub|h>)<rsup|+><rsub|j-<frac|1|2>>+\<ldots\>.>>|<row|<cell|>|<cell|>|<cell|>>|<row|<cell|>|<cell|=>|<cell|<frac|1|2>*<frac|\<mathd\>|\<mathd\>t>*<big|int><rsub|I<rsub|j>>(\<phi\><rsub|h>)<rsup|2>\<mathd\>x+<wide|F|^><rsub|j+<frac|1|2>>-<wide|F|^><rsub|j-<frac|1|2>>+\<Theta\><rsub|j-<frac|1|2>>-b*<big|int><rsub|I<rsub|j>>\<phi\><rsup|2><rsub|h>*\<mathd\>x.>>>>>
    </equation*>

    \;

    where we have defined\ 

    <\equation*>
      <wide|F|^>=-<frac|1|2>*a*(\<phi\><rsub|h><rsup|2>)<rsup|->+a*(\<phi\><rsub|h><rsup|2>)<rsup|->=<frac|1|2>*a*(\<phi\><rsup|2><rsub|h>)<rsup|->,
    </equation*>

    and

    <\equation*>
      \<Theta\>=<frac|1|2>a(\<phi\><rsup|2><rsub|h>)<rsup|->+<frac|1|2>a(\<phi\><rsup|2><rsub|h>)<rsup|+>-a(\<phi\><rsub|h><rsup|->)(\<phi\><rsup|+><rsub|h>)=<frac|1|2>a*(\<phi\><rsup|+><rsub|h>-\<phi\><rsub|h><rsup|-><right|)><rsup|2>\<geq\>0
    </equation*>

    \;
  </proof>

  <\proposition>
    (Error estimate)

    Let <math|\<phi\>> be the exact solution to the PDE. define
    <math|e=\<phi\>-\<phi\><rsub|h>>. Then we have\ 

    <\equation*>
      <big|int><rsub|0><rsup|1>(e)<rsup|2>(x,T)*\<mathd\>x\<leq\>O(h<rsup|2k+2>)
    </equation*>
  </proposition>

  <\proof>
    We have <math|B<rsub|j>(\<phi\>,v<rsub|h>)=0> for all
    <math|v<rsub|h>\<in\>V<rsub|h>>. Thus, we have\ 

    <\equation*>
      B<rsub|j>(e,v<rsub|h>)=0
    </equation*>

    for all <math|v<rsub|h>\<in\>V<rsub|h>>. We can rewrite <math|e> as\ 

    <\equation*>
      e=\<phi\>-\<phi\><rsub|h>=(\<phi\>-<with|math-font|cal|P><rsub|h>\<phi\>)+(<with|math-font|cal|P><rsub|h>\<phi\>-\<phi\><rsub|h>)=\<varepsilon\>+e<rsub|h>
    </equation*>

    where <math|e<rsub|h>\<in\>V<rsub|h>>. Then we have\ 

    <\equation*>
      B<rsub|j>(e,e<rsub|h>)=0
    </equation*>

    which gives us\ 

    <\equation>
      B<rsub|j>(e<rsub|h>,e<rsub|h>)=-B<rsub|j>(\<varepsilon\>,e<rsub|h>)<label|eq:bjequation>
    </equation>

    The first proposition gives us\ 

    <\equation*>
      B<rsub|j>(e<rsub|h>,e<rsub|h>)=<frac|1|2><big|int><rsub|I<rsub|j>>(e<rsub|h>)<rsup|2>*\<mathd\>x+<wide|F|^><rsub|j+<frac|1|2>>-<wide|F|^><rsub|j-<frac|1|2>>+<frac|1|2>*a<left|llbracket>e<rsub|h><right|rrbracket><rsup|2><rsub|j-<frac|1|2>>-
      b*<big|int><rsub|I<rsub|j>>(e<rsub|h>)<rsup|2>*\<mathd\>x.
    </equation*>

    And also\ 

    <\equation*>
      B<rsub|j>(\<varepsilon\>,e<rsub|h>)=<big|int><rsub|I<rsub|j>>\<varepsilon\><rsub|t>*e<rsub|h>*\<mathd\>x-a*<big|int><rsub|I<rsub|j>>*\<varepsilon\>(e<rsub|h>)<rsub|x>*\<mathd\>x+a*\<varepsilon\><rsup|-><rsub|j+<frac|1|2>>(e<rsub|h>)<rsup|-><rsub|j+<frac|1|2>>-a*\<varepsilon\><rsup|-><rsub|j-<frac|1|2>>(e<rsub|h>)<rsup|+><rsub|j-<frac|1|2>>-<big|int><rsub|I<rsub|j>>b*\<varepsilon\>*e<rsub|h>*\<mathd\>x.
    </equation*>

    Now we define the projection <math|<with|math-font|cal|P<rsub|h>>> as

    <\equation*>
      <big|int><rsub|I<rsub|j>>(<with|math-font|cal|P><rsub|h>w-w)*v<rsub|h>*\<mathd\>x=0
      \ \ \ \ \<forall\> \ \ v<rsub|h>\<in\>P<rsup|k-1>(I<rsub|j>)
    </equation*>

    and

    <\equation*>
      (<with|math-font|cal|P><rsub|h>w-w)<rsup|-><rsub|j+<frac|1|2>>=0
      \ \ \ \ \ \<forall\> \ \ j
    </equation*>

    One can check that these two conditions give a unique projection. Then we
    can reduce <math|B<rsub|j>(\<varepsilon\>,e<rsub|h>)> to\ 

    <\equation*>
      B<rsub|j>(\<varepsilon\>,e<rsub|h>)=<big|int><rsub|I<rsub|j>>\<varepsilon\><rsub|t>*e<rsub|h>*\<mathd\>x-<big|int><rsub|I<rsub|j>>b*\<varepsilon\>*e<rsub|h>*\<mathd\>x.
    </equation*>

    We also get\ 

    <\equation*>
      <big|int><rsub|I<rsub|j>>\<varepsilon\><rsup|2><rsub|t>**\<mathd\>x\<sim\>O(h<rsup|2k+2>).
    </equation*>

    We preserve this <math|k+1> order property because the projection leaves
    polynomials of degree <math|k> untouched.

    After summing (<reference|eq:bjequation>) over <math|j> we get\ 

    <\equation*>
      <frac|\<mathd\>|\<mathd\>t><frac|1|2>*<big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x-b*<big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x\<leq\>O(h<rsup|2k+2>)+<frac|1|2>*<big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x+O(h<rsup|2k+2>)+<frac|1|2>*<big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x
    </equation*>

    This implies that\ 

    <\equation*>
      <frac|\<mathd\>|\<mathd\>t><big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x\<leq\>(\|b\|+2)*<big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>*\<mathd\>x
    </equation*>

    Using Gronwall, we obtain

    <\equation*>
      <big|int><rsub|0><rsup|1>(e<rsub|h>)<rsup|2>(x,T)*\<mathd\>x\<leq\>O(h<rsup|2k+2>)
    </equation*>

    and from here can get\ 

    <\equation*>
      <big|int><rsub|0><rsup|1>(e)<rsup|2>(x,T)*\<mathd\>x\<leq\>O(h<rsup|2k+2>)
    </equation*>

    \;
  </proof>
</body>

<\initial>
  <\collection>
    <associate|info-flag|detailed>
    <associate|page-type|letter>
    <associate|par-first|0>
  </collection>
</initial>

<\references>
  <\collection>
    <associate|auto-1|<tuple|e|2>>
    <associate|auto-10|<tuple|1.3|7>>
    <associate|auto-11|<tuple|1.4|9>>
    <associate|auto-12|<tuple|1.5|9>>
    <associate|auto-13|<tuple|1.6|11>>
    <associate|auto-14|<tuple|2|12>>
    <associate|auto-15|<tuple|3|12>>
    <associate|auto-16|<tuple|3.1|13>>
    <associate|auto-17|<tuple|3.2|13>>
    <associate|auto-18|<tuple|3.3|14>>
    <associate|auto-19|<tuple|3.4|14>>
    <associate|auto-2|<tuple|1|2>>
    <associate|auto-20|<tuple|3.5|14>>
    <associate|auto-21|<tuple|3.6|15>>
    <associate|auto-22|<tuple|3.7|15>>
    <associate|auto-23|<tuple|4|15>>
    <associate|auto-24|<tuple|4.1|16>>
    <associate|auto-25|<tuple|4.2|16>>
    <associate|auto-26|<tuple|4.3|?>>
    <associate|auto-27|<tuple|5|?>>
    <associate|auto-28|<tuple|5.1|?>>
    <associate|auto-29|<tuple|5.2|?>>
    <associate|auto-3|<tuple|1|2>>
    <associate|auto-30|<tuple|5.3|?>>
    <associate|auto-31|<tuple|5.4|?>>
    <associate|auto-32|<tuple|5.5|?>>
    <associate|auto-33|<tuple|5.5.1|?>>
    <associate|auto-34|<tuple|5.5.2|?>>
    <associate|auto-35|<tuple|5.5.3|?>>
    <associate|auto-36|<tuple|6|?>>
    <associate|auto-37|<tuple|6.1|?>>
    <associate|auto-38|<tuple|6.2|?>>
    <associate|auto-39|<tuple|6.3|?>>
    <associate|auto-4|<tuple|1.1|4>>
    <associate|auto-40|<tuple|6.3.1|?>>
    <associate|auto-41|<tuple|6.3.2|?>>
    <associate|auto-42|<tuple|7|?>>
    <associate|auto-43|<tuple|7.1|?>>
    <associate|auto-44|<tuple|7.2|?>>
    <associate|auto-5|<tuple|1.2|4>>
    <associate|auto-6|<tuple|1.2.1|5>>
    <associate|auto-7|<tuple|1.2.2|5>>
    <associate|auto-8|<tuple|1.2.3|6>>
    <associate|auto-9|<tuple|1.2.4|6>>
    <associate|eq:bjequation|<tuple|28|?>>
    <associate|eq:claw|<tuple|2|2>>
    <associate|eq:dd-n-evolution|<tuple|20|12>>
    <associate|eq:eikonal-2d|<tuple|16|5>>
    <associate|eq:ext-definition|<tuple|13|5>>
    <associate|eq:fs-godunov|<tuple|23|15>>
    <associate|eq:fs-lf-update|<tuple|24|16>>
    <associate|eq:gudonov-flux2d|<tuple|12|5>>
    <associate|eq:hierarchical-pde|<tuple|27|?>>
    <associate|eq:hj|<tuple|1|2>>
    <associate|eq:hj-1d|<tuple|3|?>>
    <associate|eq:hj-1dscheme|<tuple|3|3>>
    <associate|eq:hj-2d|<tuple|4|?>>
    <associate|eq:hj-2dscheme|<tuple|10|4>>
    <associate|eq:hj-2dsystem|<tuple|8|4>>
    <associate|eq:hj-levelset|<tuple|19|10>>
    <associate|eq:hj2d|<tuple|7|4>>
    <associate|eq:hydrodynamic|<tuple|22|14>>
    <associate|eq:j-decomposition|<tuple|21|12>>
    <associate|eq:kane-dispersion|<tuple|25|?>>
    <associate|eq:lagrangian-evolution|<tuple|18|9>>
    <associate|eq:lf-2dflux|<tuple|11|4>>
    <associate|eq:os-flux2d|<tuple|14|5>>
    <associate|eq:stationary-hj|<tuple|26|?>>
    <associate|eq:ubar-def|<tuple|15|5>>
    <associate|thm:monotone-convergence|<tuple|5|4>>
  </collection>
</references>

<\auxiliary>
  <\collection>
    <\associate|table>
      <tuple|normal|Comparison of Hamilton-Jacobi and Conservation
      Laws.|<pageref|auto-3>>
    </associate>
    <\associate|toc>
      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|Table
      of contents> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-1><vspace|0.5fn>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|1<space|2spc>Hamilton-Jacobi
      Equations> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-2><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|1.1<space|2spc>Finite-Difference Method
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-4>>

      <with|par-left|<quote|1.5fn>|1.2<space|2spc>Two-dimensional Extensions
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-5>>

      <with|par-left|<quote|3fn>|1.2.1<space|2spc>Lax-Friedrichs Hamiltonian
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-6>>

      <with|par-left|<quote|3fn>|1.2.2<space|2spc>Gudonov Hamiltonian
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-7>>

      <with|par-left|<quote|3fn>|1.2.3<space|2spc>Osher-Sethian Hamiltonian
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-8>>

      <with|par-left|<quote|3fn>|1.2.4<space|2spc>Unstructured Grids
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-9>>

      <with|par-left|<quote|1.5fn>|1.3<space|2spc>High-Order Methods
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-10>>

      <with|par-left|<quote|1.5fn>|1.4<space|2spc>DG for Hamilton-Jacobi
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-11>>

      <with|par-left|<quote|1.5fn>|1.5<space|2spc>Proving Error Estimates
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-12>>

      <with|par-left|<quote|1.5fn>|1.6<space|2spc>Level-Set Methods
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-13>>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|2<space|2spc>Boltzmann-Type
      Equations> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-14><vspace|0.5fn>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|3<space|2spc>Semiconductor
      Device Simulation Models> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-15><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|3.1<space|2spc>Drift-diffusion model
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-16>>

      <with|par-left|<quote|1.5fn>|3.2<space|2spc>High field model
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-17>>

      <with|par-left|<quote|1.5fn>|3.3<space|2spc>Momentum solvers
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-18>>

      <with|par-left|<quote|1.5fn>|3.4<space|2spc>Energy Transport Models
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-19>>

      <with|par-left|<quote|1.5fn>|3.5<space|2spc>Hydrodynamic Model
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-20>>

      <with|par-left|<quote|1.5fn>|3.6<space|2spc>Kinetic Model
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-21>>

      <with|par-left|<quote|1.5fn>|3.7<space|2spc>Quantum Effects
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-22>>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|4<space|2spc>Fast
      Sweeping> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-23><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|4.1<space|2spc>Godunov Hamiltonian
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-24>>

      <with|par-left|<quote|1.5fn>|4.2<space|2spc>Lax-Friedrichs Hamiltonian
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-25>>

      <with|par-left|<quote|1.5fn>|4.3<space|2spc>High-Order Methods
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-26>>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|5<space|2spc>Boltzmann
      Equations for Semiconductor Devices>
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-27><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|5.1<space|2spc>Convection
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-28>>

      <with|par-left|<quote|1.5fn>|5.2<space|2spc>Collision
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-29>>

      <with|par-left|<quote|1.5fn>|5.3<space|2spc>Semiclassical Boltzmann Eqn
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-30>>

      <with|par-left|<quote|1.5fn>|5.4<space|2spc>Kinetic model for a GaAs
      diode <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-31>>

      <with|par-left|<quote|1.5fn>|5.5<space|2spc>WENO solver for transients
      of the Boltzmann-Poisson system <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-32>>

      <with|par-left|<quote|3fn>|5.5.1<space|2spc>Solving
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-33>>

      <with|par-left|<quote|3fn>|5.5.2<space|2spc>Transformation
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-34>>

      <with|par-left|<quote|3fn>|5.5.3<space|2spc>Numerical Scheme
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-35>>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|6<space|2spc>Adaptive
      High-Order DG Method w/Error Control for H-J Equations>
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-36><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|6.1<space|2spc>Error Indictator Methods
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-37>>

      <with|par-left|<quote|1.5fn>|6.2<space|2spc>Moving Mesh Methods
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-38>>

      <with|par-left|<quote|1.5fn>|6.3<space|2spc>Adaptivity with Error
      Control <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-39>>

      <with|par-left|<quote|3fn>|6.3.1<space|2spc><with|font-shape|<quote|italic>|A
      Posteriori> Error Estimate <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-40>>

      <with|par-left|<quote|3fn>|6.3.2<space|2spc>Continuous Dependence
      <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-41>>

      <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|7<space|2spc>Other
      Applications> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-42><vspace|0.5fn>

      <with|par-left|<quote|1.5fn>|7.1<space|2spc>Hierarchical
      Size-Structured Model <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
      <no-break><pageref|auto-43>>
    </associate>
  </collection>
</auxiliary>
