<?xml-stylesheet type="text/xsl" href="../styles/pmathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dsi="http://www.w3.org/1999/xlink" xml:space="preserve"><head>
<!-- saved from url=(0014)about:internet -->
<title>
    NAG C Library Manual, Mark 8 : 
   d03 Chapter Introduction</title><link rel="stylesheet" href="../styles/libdoc.css" type="text/css"/><script type="text/javascript">
   function showLevel(_levelId){
    var thisLevel = document.getElementById(_levelId);
    var thisplus = document.getElementById( _levelId.concat('plus'));
    var thisminus = document.getElementById( _levelId.concat('minus'));
    if(thisLevel.style.display != "block"){
     thisLevel.style.display = "block";
     thisplus.style.display = "none";
     thisminus.style.display = "inline";
     }
    else{
     thisLevel.style.display = "none";
     thisminus.style.display = "none";
     thisplus.style.display = "inline";
     }
    }
  </script></head><body><hr/><div><a href="../../pdf/D03/d03_intro.pdf">d03 Chapter Introduction (pdf version)</a></div><div><a href="d03_conts.xml">Chapter Contents</a></div>
<div><a href="../mark8.xml">NAG C Library Manual</a></div><hr/><h1 class="libdoc">NAG C Library  Chapter Introduction<br/><br/>d03 &#8212; Partial Differential Equations</h1>
<div class="toc"><h3>Contents</h3>
<h2 class="toc"><a class="rtnref" href="#scope">1&#160;&#160;Scope of the Chapter</a></h2>
<h2 class="toc"><a class="rtnref" href="#background">2&#160;&#160;Background to the Problems</a></h2>
<h2 class="toc"><a class="rtnref" href="#available">3&#160;&#160;Recommendations on Choice and Use of Available Functions</a></h2>
<h3 class="toc"><a class="rtnref" href="#intrecomm_2">3.1&#160;&#160;Hyperbolic Equations</a></h3>
<h3 class="toc"><a class="rtnref" href="#intrecomm_3">3.2&#160;&#160;Parabolic Equations</a></h3>
<h3 class="toc"><a class="rtnref" href="#Black-Scholes">3.3&#160;&#160;Black&#8211;Scholes Equations</a></h3>
<h3 class="toc"><a class="rtnref" href="#intrecomm_4">3.4&#160;&#160;First-order Systems in One Space Dimension</a></h3>
<h3 class="toc"><a class="rtnref" href="#intrecomm_5">3.5&#160;&#160;Convection-diffusion Systems</a></h3>
<h3 class="toc"><a class="rtnref" href="#intrecomm_6">3.6&#160;&#160;Automatic Mesh Generation</a></h3>
<h3 class="toc"><a class="rtnref" href="#intrecomm_7">3.7&#160;&#160;Utility Functions</a></h3>
<h2 class="toc"><a class="rtnref" href="#dtree">4&#160;&#160;Decision Trees</a></h2>
<h2 class="toc"><a class="rtnref" href="#index">5&#160;&#160;Index</a></h2>
<h2 class="toc"><a class="rtnref" href="#withdrawn">6&#160;&#160;Functions Withdrawn or Scheduled for Withdrawal</a></h2>
<h2 class="toc"><a class="rtnref" href="#references">7&#160;&#160;References</a></h2></div><h2><a name="scope" id="scope"/>1&#160;&#160;Scope of the Chapter</h2><div class="paramtext">This chapter is concerned with the numerical solution of partial differential equations.
Currently only solvers for parabolic and hyperbolic equations are included.
</div><h2><a name="background" id="background"/>2&#160;&#160;Background to the Problems</h2><div class="paramtext">The definition of a partial differential equation problem includes not only the equation itself but also the domain of interest and appropriate subsidiary conditions.  Indeed, partial differential equations are usually classified as elliptic, hyperbolic or parabolic according to the form of the equation <b>and</b> the form of the subsidiary conditions which must be assigned to produce a well-posed problem.  The functions in this chapter will often call upon functions from other chapters, such as Chapter <a class="secref" href="../F04/f04_conts.xml">f04</a> (Simultaneous Linear Equations) and Chapter <a class="secref" href="../D02/d02_conts.xml">d02</a> (Ordinary Differential Equations).  Other chapters also contain relevant functions, in particular Chapter <a class="secref" href="../D06/d06_conts.xml">d06</a> (Mesh Generation) and Chapter <a class="secref" href="../F11/f11_conts.xml">f11</a> (Large Scale Linear Systems).</div>
<div class="paramtext">The classification of partial differential equations is easily described in the case of <b>linear</b> equations of the <b>second order</b>  in two independent variables, i.e., equations of the form
</div>
<div class="formula-eqn"><a name="eqn1" id="eqn1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:mi>a</m:mi><m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>x</m:mi></m:mrow></m:msub><m:mo>+</m:mo><m:mn>2</m:mn><m:mi>b</m:mi><m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>y</m:mi></m:mrow></m:msub><m:mo>+</m:mo><m:mi>c</m:mi><m:msub><m:mi>u</m:mi><m:mrow><m:mi>y</m:mi><m:mi>y</m:mi></m:mrow></m:msub><m:mo>+</m:mo><m:mi>d</m:mi><m:msub><m:mi>u</m:mi><m:mi>x</m:mi></m:msub><m:mo>+</m:mo><m:mi>e</m:mi><m:msub><m:mi>u</m:mi><m:mi>y</m:mi></m:msub><m:mo>+</m:mo><m:mi>f</m:mi><m:mi>u</m:mi><m:mo>+</m:mo><m:mi>g</m:mi><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (1)
     </td></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>a</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>b</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>c</m:mi></m:math>,  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>d</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>e</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>g</m:mi></m:math>&#160; are functions of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>x</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>y</m:mi></m:math>&#160;only.  Equation  (<a class="eqnref" href="#eqn1">1</a>) is called elliptic, hyperbolic or parabolic according to whether <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>a</m:mi><m:mi>c</m:mi><m:mo>-</m:mo><m:msup><m:mi>b</m:mi><m:mn>2</m:mn></m:msup></m:math>&#160;is positive, negative or zero, respectively.  Useful definitions of the concepts of elliptic,  hyperbolic and parabolic character can also be given for differential equations in more than two independent variables, for systems and for nonlinear differential equations.</div>
<div class="paramtext">For <b>elliptic</b> equations, of which Laplace's equation
</div>
<div class="formula-eqn"><a name="eqn2" id="eqn2"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>x</m:mi></m:mrow></m:msub><m:mo>+</m:mo><m:msub><m:mi>u</m:mi><m:mrow><m:mi>y</m:mi><m:mi>y</m:mi></m:mrow></m:msub><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula-eqn2">
      (2)
     </td></tr></table></div>
<div class="paramtext">
is the simplest example of second order, the subsidiary conditions take the form of <b>boundary</b> conditions, i.e., conditions which provide information about the solution at all points of a <b>closed</b>  boundary.  For example, if equation (<a class="eqnref" href="#eqn2">2</a>) holds in a plane domain <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>D</m:mi></m:math>&#160;bounded by a contour <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>C</m:mi></m:math>,  a solution <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>u</m:mi></m:math>&#160;may be sought subject to the condition
</div>
<div class="formula-eqn"><a name="eqn3" id="eqn3"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:mi>u</m:mi><m:mo>=</m:mo><m:mi>f</m:mi><m:mtext>&#8195; on &#8195;</m:mtext><m:mi>C</m:mi><m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (3)
     </td></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;is a given function.  The condition  (<a class="eqnref" href="#eqn3">3</a>) is known as a Dirichlet boundary condition.  Equally common is the Neumann boundary condition
</div>
<div class="formula-eqn"><a name="eqn4" id="eqn4"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msup><m:mi>u</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mo>=</m:mo><m:mi>g</m:mi><m:mtext>&#8195; on &#8195;</m:mtext><m:mi>C</m:mi><m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (4)
     </td></tr></table></div>
<div class="paramtext">
which is one form of a more general condition
</div>
<div class="formula-eqn"><a name="eqn5" id="eqn5"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msup><m:mi>u</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mo>+</m:mo><m:mi>f</m:mi><m:mi>u</m:mi><m:mo>=</m:mo><m:mi>g</m:mi><m:mtext>&#8195; on &#8195;</m:mtext><m:mi>C</m:mi><m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (5)
     </td></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:msup><m:mi>u</m:mi><m:mo>&#8242;</m:mo></m:msup></m:math>&#160;denotes the derivative of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>u</m:mi></m:math>&#160;normal to the contour <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>C</m:mi></m:math>, and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>g</m:mi></m:math>&#160; are given functions.  Provided that <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>g</m:mi></m:math>&#160; satisfy certain restrictions, condition (<a class="eqnref" href="#eqn5">5</a>) yields a well-posed <b>boundary-value problem</b> for Laplace's equation.  In the case of the Neumann problem, one further piece of information,  e.g., the value of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>u</m:mi></m:math>&#160;at a particular point, is necessary for uniqueness of the solution.  Boundary conditions similar to the above are applicable to more general second-order elliptic equations, whilst two such conditions are required for equations of fourth order.</div>
<div class="paramtext">For <b>hyperbolic</b> equations, the wave equation
</div>
<div class="formula-eqn"><a name="eqn6" id="eqn6"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msub><m:mi>u</m:mi><m:mrow><m:mi>t</m:mi><m:mi>t</m:mi></m:mrow></m:msub><m:mo>-</m:mo><m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>x</m:mi></m:mrow></m:msub><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula-eqn2">
      (6)
     </td></tr></table></div>
<div class="paramtext">
is the simplest example of second order.  It is equivalent to a first-order system
</div>
<div class="formula-eqn"><a name="eqn7" id="eqn7"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msub><m:mi>u</m:mi><m:mi>t</m:mi></m:msub><m:mo>-</m:mo><m:msub><m:mi>v</m:mi><m:mi>x</m:mi></m:msub><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>, &#8195;</m:mtext><m:msub><m:mi>v</m:mi><m:mi>t</m:mi></m:msub><m:mo>-</m:mo><m:msub><m:mi>u</m:mi><m:mi>x</m:mi></m:msub><m:mo>=</m:mo><m:mn>0</m:mn><m:mtext>.</m:mtext>
</m:math></td><td class="formula-eqn2">
      (7)
     </td></tr></table></div>
<div class="paramtext">
The subsidiary conditions may take the form of <b>initial</b>  conditions, i.e., conditions which provide information about the solution at points on a suitable <b>open</b> boundary.  For example, if equation (<a class="eqnref" href="#eqn6">6</a>) is satisfied for <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>t</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>,  a solution <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>u</m:mi></m:math>&#160;may be sought such that
</div>
<div class="formula-eqn"><a name="eqn8" id="eqn8"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
 <m:mrow>
  <m:mi>u</m:mi>
  <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mn>0</m:mn></m:mfenced>
 </m:mrow>
 <m:mo>=</m:mo>
 <m:mrow>
  <m:mi>f</m:mi>
  <m:mfenced separators="">
   <m:mi>x</m:mi>
  </m:mfenced>
 </m:mrow>
 <m:mo>,</m:mo>
 <m:mtext>&#8195;</m:mtext>
 <m:mrow>
  <m:msub>
   <m:mi>u</m:mi>
   <m:mi>t</m:mi>
  </m:msub>
  <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mn>0</m:mn></m:mfenced>
 </m:mrow>
 <m:mo>=</m:mo>
 <m:mrow>
  <m:mi>g</m:mi>
  <m:mfenced separators="">
   <m:mi>x</m:mi>
  </m:mfenced>
 </m:mrow>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (8)
     </td></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>g</m:mi></m:math>&#160;are given functions.  This is an example of an <b>initial value problem</b>, sometimes known as Cauchy's problem.</div>
<div class="paramtext">For <b>parabolic</b> equations, of which the heat conduction equation
</div>
<div class="formula-eqn"><a name="eqn9" id="eqn9"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msub><m:mi>u</m:mi><m:mi>t</m:mi></m:msub><m:mo>-</m:mo><m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>x</m:mi></m:mrow></m:msub><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula-eqn2">
      (9)
     </td></tr></table></div>
<div class="paramtext">
is the simplest example, the subsidiary conditions always include some of  <b>initial</b> type and may also include some of <b>boundary</b>  type.  For example, if equation (<a class="eqnref" href="#eqn9">9</a>) is satisfied for  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>t</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mn>0</m:mn><m:mo>&lt;</m:mo><m:mi>x</m:mi><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>, a solution <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>u</m:mi></m:math>&#160; may be sought such that
</div>
<div class="formula-eqn"><a name="eqn10" id="eqn10"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
 <m:mrow>
  <m:mi>u</m:mi>
  <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mn>0</m:mn></m:mfenced>
 </m:mrow>
 <m:mo>=</m:mo>
 <m:mrow>
  <m:mi>f</m:mi>
  <m:mfenced separators="">
   <m:mi>x</m:mi>
  </m:mfenced>
 </m:mrow>
 <m:mo>,</m:mo>
 <m:mtext>&#8195;</m:mtext>
 <m:mrow>
  <m:mn>0</m:mn>
  <m:mo>&lt;</m:mo>
  <m:mi>x</m:mi>
  <m:mo>&lt;</m:mo>
  <m:mn>1</m:mn>
 </m:mrow>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula-eqn2">
      (10)
     </td></tr></table></div>
<div class="paramtext">
and
</div>
<div class="formula-eqn"><a name="eqn11" id="eqn11"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
 <m:mrow>
  <m:mi>u</m:mi>
  <m:mfenced separators=""><m:mn>0</m:mn><m:mo>,</m:mo><m:mi>t</m:mi></m:mfenced>
 </m:mrow>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
 <m:mo>,</m:mo>
 <m:mtext>&#8195;</m:mtext>
 <m:mrow>
  <m:mi>u</m:mi>
  <m:mfenced separators=""><m:mn>1</m:mn><m:mo>,</m:mo><m:mi>t</m:mi></m:mfenced>
 </m:mrow>
<m:mo>=</m:mo>
 <m:mn>1</m:mn>
 <m:mo>,</m:mo>
 <m:mtext>&#8195;</m:mtext>
 <m:mrow>
  <m:mi>t</m:mi>
  <m:mo>&gt;</m:mo>
  <m:mn>0</m:mn>
 </m:mrow>
 <m:mtext>.</m:mtext>
</m:math></td><td class="formula-eqn2">
      (11)
     </td></tr></table></div>
<div class="paramtext">
This is an example of a mixed <b>initial/boundary-value problem</b>.</div>
<div class="paramtext">For all types of partial differential equations, finite difference methods  (see <a class="litref" href="#ref216">Mitchell  and Griffiths (1980)</a>) and finite element methods  (see <a class="litref" href="#ref219">Wait  and Mitchell (1985)</a>) are the most common means of solution and such methods obviously feature prominently either in this chapter or in the companion NAG Finite Element Library.  Some of the utility functions in this chapter are concerned with the solution of the large sparse systems of equations which arise from finite difference and finite element methods.  Further functions for this purpose are provided in Chapter <a class="secref" href="../F11/f11_conts.xml">f11</a>.</div>
<div class="paramtext">Alternative methods of solution are often suitable for special classes of problems.  For example, the method of characteristics is the most common for hyperbolic equations involving time and one space dimension (see <a class="litref" href="#ref218">Smith (1985)</a>).  The method of lines (see <a class="litref" href="#ref215">Mikhlin  and Smolitsky (1967)</a>) may be used to reduce a parabolic equation to a  (stiff) system of ordinary differential equations, which may be solved by means of functions from Chapter <a class="secref" href="../D02/d02_conts.xml">d02</a> (Ordinary Differential Equations).  Similarly, integral equation or boundary element methods (see <a class="litref" href="#ref214">Jaswon  and Symm (1977)</a>) are frequently used for elliptic equations.  Typically, in the latter case, the solution of a boundary-value problem is represented in terms of certain boundary functions by an integral expression which satisfies the differential equation throughout the relevant domain.  The boundary functions are obtained by applying the given boundary conditions to this representation.  Implementation of this method necessitates discretization of only the boundary of the domain, the dimensionality of the problem thus being effectively reduced by one.  The boundary conditions yield a full system of simultaneous equations, as opposed to the sparse systems yielded by finite difference and finite element methods, but the full system is usually of much lower order.  Solution of this system yields the boundary functions, from which the solution of the problem may be obtained, by quadrature, as and where required.</div><h2><a name="available" id="available"/>3&#160;&#160;Recommendations on Choice and Use of Available Functions</h2><h3><a name="intrecomm_2" id="intrecomm_2"/>3.1&#160;&#160;Hyperbolic Equations</h3><div class="paramtext">See Section <a class="secref" href="#intrecomm_5">3.5</a>.</div><h3><a name="intrecomm_3" id="intrecomm_3"/>3.2&#160;&#160;Parabolic Equations</h3><div class="paramtext">There are five functions available for solving general parabolic equations in one space dimension:
</div><ul class="listind"><li class="listind"><a class="rtnref" href="../D03/d03pcc.xml">nag_pde_parab_1d_fd (d03pcc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03pdc.xml">nag_pde_parab_1d_coll (d03pdc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03phc.xml">nag_pde_parab_1d_fd_ode (d03phc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03pjc.xml">nag_pde_parab_1d_coll_ode (d03pjc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03ppc.xml">nag_pde_parab_1d_fd_ode_remesh (d03ppc)</a>.</li></ul><div class="paramtext">
Equations may include nonlinear terms but the true derivative <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:msub><m:mi>u</m:mi><m:mi>t</m:mi></m:msub></m:math>&#160;should occur linearly and equations should usually contain a second-order space derivative  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:msub><m:mi>u</m:mi><m:mrow><m:mi>x</m:mi><m:mi>x</m:mi></m:mrow></m:msub></m:math>.  There are certain restrictions on the coefficients to try to ensure that the problems posed can be solved by the above functions.</div>
<div class="paramtext">The method of solution is to discretize the space derivatives using finite differences or collocation, and to solve the resulting system of ordinary differential equations using a &#8216;stiff&#8217; solver.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03pcc.xml">nag_pde_parab_1d_fd (d03pcc)</a> and <a class="rtnref" href="../D03/d03pdc.xml">nag_pde_parab_1d_coll (d03pdc)</a> can solve a system of parabolic equations of the form
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:munderover>
  <m:mo>&#8721;</m:mo>
  <m:mrow>
   <m:mi>j</m:mi>
   <m:mo>=</m:mo>
   <m:mn>1</m:mn>
  </m:mrow>
  <m:mi>n</m:mi>
 </m:munderover>
 <m:msub>
  <m:mi>P</m:mi>
  <m:mrow>
   <m:mi>i</m:mi>
   <m:mi>j</m:mi>
  </m:mrow>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
   <m:mi>U</m:mi>
   <m:mi>x</m:mi>
  </m:msub></m:mfenced>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo>
   <m:msub>
    <m:mi>U</m:mi>
    <m:mi>j</m:mi>
   </m:msub>
  </m:mrow>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>t</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mo>+</m:mo>
 <m:msub>
  <m:mi>Q</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
   <m:mi>U</m:mi>
   <m:mi>x</m:mi>
  </m:msub></m:mfenced>
 <m:mo>=</m:mo>
 <m:msup>
  <m:mi>x</m:mi>
  <m:mrow>
   <m:mo>-</m:mo>
   <m:mi>m</m:mi>
  </m:mrow>
 </m:msup>
 <m:mfrac other="display">
 <m:mo>&#8706;</m:mo>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>x</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mfenced separators="">
  <m:msup>
   <m:mi>x</m:mi>
   <m:mi>m</m:mi>
  </m:msup>
  <m:msub>
   <m:mi>R</m:mi>
   <m:mi>i</m:mi>
  </m:msub>
  <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
    <m:mi>U</m:mi>
    <m:mi>x</m:mi>
   </m:msub></m:mfenced>
 </m:mfenced>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>a</m:mi><m:mo>&#8804;</m:mo><m:mi>x</m:mi><m:mo>&#8804;</m:mo><m:mi>b</m:mi></m:math>,  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>t</m:mi><m:mo>&#8805;</m:mo><m:msub><m:mi>t</m:mi><m:mn>0</m:mn></m:msub></m:math>.</div>
<div class="paramtext">The  argument <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>m</m:mi></m:math>&#160;allows the function to handle different co-ordinate systems easily (Cartesian, cylindrical polars and spherical polars).  <a class="rtnref" href="../D03/d03pcc.xml">nag_pde_parab_1d_fd (d03pcc)</a> uses a finite differences spatial discretization and <a class="rtnref" href="../D03/d03pdc.xml">nag_pde_parab_1d_coll (d03pdc)</a> uses a collocation spatial discretization.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03phc.xml">nag_pde_parab_1d_fd_ode (d03phc)</a> and <a class="rtnref" href="../D03/d03pjc.xml">nag_pde_parab_1d_coll_ode (d03pjc)</a> are similar to  <a class="rtnref" href="../D03/d03pcc.xml">nag_pde_parab_1d_fd (d03pcc)</a> and <a class="rtnref" href="../D03/d03pdc.xml">nag_pde_parab_1d_coll (d03pdc)</a> respectively, except that they provide scope for coupled differential-algebraic systems.  This extended functionality allows for the solution of more complex and more general problems, e.g., periodic boundary conditions and integro-differential equations.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03ppc.xml">nag_pde_parab_1d_fd_ode_remesh (d03ppc)</a> is similar to <a class="rtnref" href="../D03/d03phc.xml">nag_pde_parab_1d_fd_ode (d03phc)</a> but allows remeshing to take place in the spatial direction.  This facility can be very useful when the nature of the solution in the spatial direction varies considerably over time.</div><h3><a name="Black-Scholes" id="Black-Scholes"/>3.3&#160;&#160;Black&#8211;Scholes Equations</h3><div class="paramtext"><a class="rtnref" href="../D03/d03ncc.xml">nag_pde_bs_1d (d03ncc)</a> solves the Black&#8211;Scholes equation
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:mfrac other="display">
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>f</m:mi></m:mrow>
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>t</m:mi></m:mrow>
 </m:mfrac><m:mo>+</m:mo><m:mfenced separators=""><m:mi>r</m:mi><m:mo>-</m:mo><m:mi>q</m:mi></m:mfenced><m:mi>S</m:mi><m:mfrac other="display">
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>f</m:mi></m:mrow>
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>S</m:mi></m:mrow>
 </m:mfrac><m:mo>+</m:mo><m:mfrac><m:mrow><m:msup><m:mi>&#963;</m:mi><m:mn>2</m:mn></m:msup><m:msup><m:mi>S</m:mi><m:mn>2</m:mn></m:msup></m:mrow><m:mn>2</m:mn></m:mfrac>
 <m:mfrac other="display">
  <m:mrow><m:msup><m:mo>&#8706;</m:mo><m:mn>2</m:mn></m:msup><m:mi>f</m:mi></m:mrow>
  <m:mrow><m:mo>&#8706;</m:mo><m:msup><m:mi>S</m:mi><m:mn>2</m:mn></m:msup></m:mrow>
 </m:mfrac><m:mo>=</m:mo><m:mi>r</m:mi><m:mi>f</m:mi>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:msub><m:mi>S</m:mi><m:mi mathvariant="normal">min</m:mi></m:msub><m:mo>&lt;</m:mo><m:mi>S</m:mi><m:mo>&lt;</m:mo><m:msub><m:mi>S</m:mi><m:mi mathvariant="normal">max</m:mi></m:msub><m:mtext>, &#8195;</m:mtext> <m:msub><m:mi>t</m:mi><m:mi mathvariant="normal">min</m:mi></m:msub><m:mo>&lt;</m:mo><m:mi>t</m:mi><m:mo>&lt;</m:mo><m:msub><m:mi>t</m:mi><m:mi mathvariant="normal">max</m:mi></m:msub><m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
for the value <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>f</m:mi></m:math>&#160;of a European or American, put or call stock option.  The  arguments <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>r</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>q</m:mi></m:math>&#160;and <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>&#963;</m:mi></m:math>&#160;may each be either constant or time-dependent.  The values of the Greeks are also returned.</div>
<div class="paramtext">In certain cases an analytic solution of the Black&#8211;Scholes equation is available.  In these cases the solution may be computed by <a class="rtnref" href="../D03/d03ndc.xml">nag_pde_bs_1d_analytic (d03ndc)</a>.</div><h3><a name="intrecomm_4" id="intrecomm_4"/>3.4&#160;&#160;First-order Systems in One Space Dimension</h3><div class="paramtext">There are three functions available for solving systems of first-order partial differential equations:
</div><ul class="listind"><li class="listind"><a class="rtnref" href="../D03/d03pec.xml">nag_pde_parab_1d_keller (d03pec)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03pkc.xml">nag_pde_parab_1d_keller_ode (d03pkc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03prc.xml">nag_pde_parab_1d_keller_ode_remesh (d03prc)</a>.</li></ul><div class="paramtext">
Equations may include nonlinear terms but the time derivative should occur linearly.  There are certain restrictions on the coefficients to ensure that the problems posed can be solved by the above  functions.</div>
<div class="paramtext">The method of solution is to discretize the space derivatives using the  Keller box scheme and to solve the resulting system of ordinary differential equations using a &#8216;stiff&#8217; solver.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03pec.xml">nag_pde_parab_1d_keller (d03pec)</a> is designed to solve a system of the form
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:munderover>
  <m:mo>&#8721;</m:mo>
  <m:mrow>
   <m:mi>j</m:mi>
   <m:mo>=</m:mo>
   <m:mn>1</m:mn>
  </m:mrow>
  <m:mi>n</m:mi>
 </m:munderover>
 <m:msub>
  <m:mi>P</m:mi>
  <m:mrow>
   <m:mi>i</m:mi>
   <m:mi>j</m:mi>
  </m:mrow>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
   <m:mi>U</m:mi>
   <m:mi>x</m:mi>
  </m:msub></m:mfenced>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo>
   <m:msub>
    <m:mi>U</m:mi>
    <m:mi>j</m:mi>
   </m:msub>
  </m:mrow>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>t</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mo>+</m:mo>
 <m:msub>
  <m:mi>Q</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
   <m:mi>U</m:mi>
   <m:mi>x</m:mi>
  </m:msub></m:mfenced>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>a</m:mi><m:mo>&#8804;</m:mo><m:mi>x</m:mi><m:mo>&#8804;</m:mo><m:mi>b</m:mi></m:math>,  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>t</m:mi><m:mo>&#8805;</m:mo><m:msub><m:mi>t</m:mi><m:mn>0</m:mn></m:msub></m:math>.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03pkc.xml">nag_pde_parab_1d_keller_ode (d03pkc)</a> is similar to <a class="rtnref" href="../D03/d03pec.xml">nag_pde_parab_1d_keller (d03pec)</a> except that it provides scope for coupled differential algebraic systems.  This extended functionality allows for the solution of more complex problems.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03prc.xml">nag_pde_parab_1d_keller_ode_remesh (d03prc)</a> is similar to <a class="rtnref" href="../D03/d03pkc.xml">nag_pde_parab_1d_keller_ode (d03pkc)</a> but allows remeshing to take place in the spatial direction.  This facility can be very useful when the nature of the solution in the spatial direction varies considerably over time.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03pec.xml">nag_pde_parab_1d_keller (d03pec)</a>, <a class="rtnref" href="../D03/d03pkc.xml">nag_pde_parab_1d_keller_ode (d03pkc)</a> or <a class="rtnref" href="../D03/d03prc.xml">nag_pde_parab_1d_keller_ode_remesh (d03prc)</a> may also be used to solve systems of higher or mixed order partial differential equations which have been reduced to first-order.  Note that in general these functions are unsuitable for hyperbolic first-order equations, for which an appropriate upwind discretization scheme should be used  (see Section <a class="secref" href="#intrecomm_5">3.5</a> for example).</div><h3><a name="intrecomm_5" id="intrecomm_5"/>3.5&#160;&#160;Convection-diffusion Systems</h3><div class="paramtext">There are three functions available for solving systems of convection-diffusion equations with optional source terms:
</div><ul class="listind"><li class="listind"><a class="rtnref" href="../D03/d03pfc.xml">nag_pde_parab_1d_cd (d03pfc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03plc.xml">nag_pde_parab_1d_cd_ode (d03plc)</a>,</li><li class="listind"><a class="rtnref" href="../D03/d03psc.xml">nag_pde_parab_1d_cd_ode_remesh (d03psc)</a>.</li></ul><div class="paramtext">
Equations may include nonlinear terms but the time derivative should occur linearly.  There are certain restrictions on the coefficients to ensure that the problems posed can be solved by the above functions, in particular the system must be posed in conservative form (see below).  The functions may also be used to solve hyperbolic convection-only systems.</div>
<div class="paramtext">Convection terms are discretized using an upwind scheme involving a numerical flux function based on the solution of a Riemann problem at each mesh point (see <a class="litref" href="#ref542">LeVeque (1990)</a>); and diffusion and source terms are discretized using central differences.  The resulting system of ordinary differential equations is solved using a &#8216;stiff&#8217; solver.  In the case of Euler equations for a perfect gas various approximate and exact Riemann solvers are provided in <a class="rtnref" href="../D03/d03puc.xml">nag_pde_parab_1d_euler_roe (d03puc)</a>, <a class="rtnref" href="../D03/d03pvc.xml">nag_pde_parab_1d_euler_osher (d03pvc)</a>, <a class="rtnref" href="../D03/d03pwc.xml">nag_pde_parab_1d_euler_hll (d03pwc)</a> and <a class="rtnref" href="../D03/d03pxc.xml">nag_pde_parab_1d_euler_exact (d03pxc)</a>.  These functions may be used in conjunction with <a class="rtnref" href="../D03/d03pfc.xml">nag_pde_parab_1d_cd (d03pfc)</a>, <a class="rtnref" href="../D03/d03plc.xml">nag_pde_parab_1d_cd_ode (d03plc)</a> and <a class="rtnref" href="../D03/d03psc.xml">nag_pde_parab_1d_cd_ode_remesh (d03psc)</a>.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03pfc.xml">nag_pde_parab_1d_cd (d03pfc)</a> is designed to solve systems of the form</div>
<div class="paramtext">
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:munderover>
  <m:mo>&#8721;</m:mo>
  <m:mrow>
   <m:mi>j</m:mi>
   <m:mo>=</m:mo>
   <m:mn>1</m:mn>
  </m:mrow>
  <m:mi>n</m:mi>
 </m:munderover>
 <m:msub>
  <m:mi>P</m:mi>
  <m:mrow>
   <m:mi>i</m:mi>
   <m:mi>j</m:mi>
  </m:mrow>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo>
   <m:msub>
    <m:mi>U</m:mi>
    <m:mi>j</m:mi>
   </m:msub>
  </m:mrow>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>t</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mo>+</m:mo>
 <m:mfrac other="display">
 <m:mo>&#8706;</m:mo>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>x</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:msub>
  <m:mi>F</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
 <m:mo>=</m:mo>
 <m:msub>
  <m:mi>C</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
 <m:mfrac other="display">
 <m:mo>&#8706;</m:mo>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>x</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:msub>
  <m:mi>D</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi><m:mo>,</m:mo><m:msub>
   <m:mi>U</m:mi>
   <m:mi>x</m:mi>
  </m:msub></m:mfenced>
 <m:mo>+</m:mo>
 <m:msub>
  <m:mi>S</m:mi>
  <m:mi>i</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
or hyperbolic convection-only systems of the form
</div>
<div class="formula"><table class="formula"><tr><td class="formula"><m:math xmlns:m="http://www.w3.org/1998/Math/MathML" display="block">
<m:munderover>
  <m:mo>&#8721;</m:mo>
  <m:mrow>
   <m:mi>j</m:mi>
   <m:mo>=</m:mo>
   <m:mn>1</m:mn>
  </m:mrow>
  <m:mi>n</m:mi>
 </m:munderover>
 <m:msub>
  <m:mi>P</m:mi>
  <m:mrow>
   <m:mi>i</m:mi>
   <m:mi>j</m:mi>
  </m:mrow>
 </m:msub>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo>
   <m:msub>
    <m:mi>U</m:mi>
    <m:mi>j</m:mi>
   </m:msub>
  </m:mrow>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>t</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mo>+</m:mo>
 <m:mfrac other="display">
 <m:mrow><m:mo>&#8706;</m:mo>
   <m:msub>
    <m:mi>F</m:mi>
    <m:mi>i</m:mi>
   </m:msub>
   <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>U</m:mi></m:mfenced>
  </m:mrow>
  <m:mrow>
   <m:mo>&#8706;</m:mo>
   <m:mi>x</m:mi>
  </m:mrow>
 </m:mfrac>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>
<div class="paramtext">
where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mn>2</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>n</m:mi></m:math>,  <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>a</m:mi><m:mo>&#8804;</m:mo><m:mi>x</m:mi><m:mo>&#8804;</m:mo><m:mi>b</m:mi></m:math>, <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>t</m:mi><m:mo>&#8805;</m:mo><m:msub><m:mi>t</m:mi><m:mn>0</m:mn></m:msub></m:math>.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03plc.xml">nag_pde_parab_1d_cd_ode (d03plc)</a> is similar to <a class="rtnref" href="../D03/d03pfc.xml">nag_pde_parab_1d_cd (d03pfc)</a> except that it provides scope for coupled differential algebraic systems.  This extended functionality allows for the solution of more complex problems.</div>
<div class="paramtext"><a class="rtnref" href="../D03/d03psc.xml">nag_pde_parab_1d_cd_ode_remesh (d03psc)</a> is similar to <a class="rtnref" href="../D03/d03plc.xml">nag_pde_parab_1d_cd_ode (d03plc)</a> but allows remeshing to take place in the spatial direction.  This facility can be very useful when the nature of the solution in the spatial direction varies considerably over time.</div><h3><a name="intrecomm_6" id="intrecomm_6"/>3.6&#160;&#160;Automatic Mesh Generation</h3><div class="paramtext">A range of mesh generation functions are available in Chapter <a class="secref" href="../D06/d06_conts.xml">d06</a>.</div><h3><a name="intrecomm_7" id="intrecomm_7"/>3.7&#160;&#160;Utility Functions</h3><div class="paramtext">Functions are available in the Linear Algebra Chapters for the direct and iterative solution of linear equations.  Here we point to some of the functions that may be of use in solving the linear systems that arise from finite difference or finite element approximations to partial differential equation solutions.  Chapters <a class="secref" href="../F01/f01_conts.xml">f01</a>, <a class="secref" href="../F04/f04_conts.xml">f04</a> and <a class="secref" href="../F11/f11_conts.xml">f11</a> should be consulted for further information and for the appropriate function documents.  Decision trees for the solution of linear systems are given in Section <a class="secref" href="../F04/f04_intro.xml#dtree">4</a> in the f04 Chapter Introduction.</div>
<div class="paramtext">The following functions allow the direct solution of symmetric positive-definite systems:
</div><table style="width:90%;"><tr>
<td style="width:12em;" valign="top">Band</td>
<td valign="top"><a class="rtnref" href="../F07/f07hdc.xml">nag_dpbtrf (f07hdc)</a> and <a class="rtnref" href="../F07/f07hec.xml">nag_dpbtrs (f07hec)</a></td>
</tr><tr>
<td style="width:12em;" valign="top">Variable band (skyline)</td>
<td valign="top"><a class="rtnref" href="../F01/f01mcc.xml">nag_real_cholesky_skyline (f01mcc)</a> and <a class="rtnref" href="../F04/f04mcc.xml">nag_real_cholesky_skyline_solve (f04mcc)</a></td>
</tr></table><div class="paramtext">

and the following functions allow the iterative solution of symmetric positive-definite and symmetric-indefinite systems:
</div><table style="width:90%;"><tr>
<td style="width:12em;" valign="top">Sparse</td>
<td valign="top">
<a class="rtnref" href="../F11/f11jac.xml">nag_sparse_sym_chol_fac (f11jac)</a>, <a class="rtnref" href="../F11/f11jcc.xml">nag_sparse_sym_chol_sol (f11jcc)</a> and <a class="rtnref" href="../F11/f11jec.xml">nag_sparse_sym_sol (f11jec)</a></td>
</tr></table><div class="paramtext">
The latter two functions above are black box functions which include Incomplete Cholesky, SSOR or Jacobi preconditioning.</div>
<div class="paramtext">The following functions allow the direct solution of non-symmetric systems:
</div><table style="width:90%;"><tr>
<td style="width:12em;" valign="top">Band</td>
<td valign="top"><a class="rtnref" href="../F07/f07bdc.xml">nag_dgbtrf (f07bdc)</a> and <a class="rtnref" href="../F07/f07bec.xml">nag_dgbtrs (f07bec)</a></td>
</tr></table><div class="paramtext">
and the following functions allow the iterative solution of non-symmetric systems:
</div><table style="width:90%;"><tr>
<td style="width:12em;" valign="top">Sparse</td>
<td valign="top">
<a class="rtnref" href="../F11/f11dac.xml">nag_sparse_nsym_fac (f11dac)</a>, <a class="rtnref" href="../F11/f11dcc.xml">nag_sparse_nsym_fac_sol (f11dcc)</a> and <a class="rtnref" href="../F11/f11dec.xml">nag_sparse_nsym_sol (f11dec)</a></td>
</tr></table><div class="paramtext">
The latter two functions above are black box functions which include incomplete <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"><m:mi>L</m:mi><m:mi>U</m:mi></m:math>, SSOR and Jacobi preconditioning.</div>
<div class="paramtext">The functions <a class="rtnref" href="../D03/d03pzc.xml">nag_pde_interp_1d_fd (d03pzc)</a> and <a class="rtnref" href="../D03/d03pyc.xml">nag_pde_interp_1d_coll (d03pyc)</a> use linear interpolation to compute the solution to a parabolic problem and its first derivative at the user-specified points.  <a class="rtnref" href="../D03/d03pzc.xml">nag_pde_interp_1d_fd (d03pzc)</a> may be used in conjunction with <a class="rtnref" href="../D03/d03pcc.xml">nag_pde_parab_1d_fd (d03pcc)</a>, <a class="rtnref" href="../D03/d03pec.xml">nag_pde_parab_1d_keller (d03pec)</a>, <a class="rtnref" href="../D03/d03phc.xml">nag_pde_parab_1d_fd_ode (d03phc)</a>, <a class="rtnref" href="../D03/d03pkc.xml">nag_pde_parab_1d_keller_ode (d03pkc)</a>, <a class="rtnref" href="../D03/d03ppc.xml">nag_pde_parab_1d_fd_ode_remesh (d03ppc)</a> and <a class="rtnref" href="../D03/d03prc.xml">nag_pde_parab_1d_keller_ode_remesh (d03prc)</a>.  <a class="rtnref" href="../D03/d03pyc.xml">nag_pde_interp_1d_coll (d03pyc)</a> may be used in conjunction with <a class="rtnref" href="../D03/d03pdc.xml">nag_pde_parab_1d_coll (d03pdc)</a> and <a class="rtnref" href="../D03/d03pjc.xml">nag_pde_parab_1d_coll_ode (d03pjc)</a>.</div><h2><a name="dtree" id="dtree"/>4&#160;&#160;Decision Trees</h2><h4><a name="tree1" id="tree1"/>Tree 1</h4>
<table class="dtree">
<tr>
<td class="dtentry">Does PDE have a time derivative?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have 2nd derivatives?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">see Tree <a class="dtreeref" href="#tree4a">3</a>: Parabolic branch
</td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is PDE hyperbolic?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">see Tree <a class="dtreeref" href="#tree3">2</a>: Hyperbolic branch
</td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">1 space dimension?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have coupled ODEs?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is a remeshing process required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03prc.xml">d03prc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pkc.xml">d03pkc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pec.xml">d03pec</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">N/A</td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">No elliptic solvers currently available.</td></tr></table><h4><a name="tree3" id="tree3"/>Tree 2: Hyperbolic branch
</h4>
<table class="dtree">
<tr>
<td class="dtentry">1 space dimension?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have coupled ODEs?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is a remeshing process required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03psc.xml">d03psc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03plc.xml">d03plc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pfc.xml">d03pfc</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">N/A</td></tr></table><h4><a name="tree4a" id="tree4a"/>Tree 3: Parabolic branch
</h4>
<table class="dtree">
<tr>
<td class="dtentry">1 space dimension?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is PDE the Black&#8211;Scholes equations?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03ncc.xml">d03ncc</a> or <a class="rtnref" href="../D03/d03ndc.xml">d03ndc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">Is PDE in conservative form?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have coupled ODEs?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is a remeshing process required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03psc.xml">d03psc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03plc.xml">d03plc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pfc.xml">d03pfc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry">see Tree <a class="dtreeref" href="#tree4b">4</a>: Branch for parabolic PDE in non-conservative form
</td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">N/A</td></tr></table><h4><a name="tree4b" id="tree4b"/>Tree 4: Branch for parabolic PDE in non-conservative form
</h4>
<table class="dtree">
<tr>
<td class="dtentry">Do you want to use finite differences?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have coupled ODEs?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is a remeshing process required?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03ppc.xml">d03ppc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03phc.xml">d03phc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pcc.xml">d03pcc</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">Do you want to use Chebyshev collocation?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Does PDE have coupled ODEs?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rtnref" href="../D03/d03pjc.xml">d03pjc</a></td></tr>
<tr>
<td class="dtnobar">|</td>
<td/>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr><td class="dtnobar">|</td>
<td/>
<td class="dtentry"><a class="rtnref" href="../D03/d03pdc.xml">d03pdc</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">N/A</td></tr></table><h2><a name="index" id="index"/>5&#160;&#160;Index</h2><table>
   <tr><td class="index1">Black&#8211;Scholes equation,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
   
      <tr><td class="index1">&#160;&#160;&#160;&#160;analytic</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03ndc.xml">d03ndc</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;finite difference</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03ncc.xml">d03ncc</a></td></tr>
   
   <tr><td class="index1">Convection-diffusion system(s),</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
   
      <tr><td class="index1">&#160;&#160;&#160;&#160;nonlinear,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
      
         <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;one space dimension,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
         
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using upwind difference scheme based on Riemann solvers</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pfc.xml">d03pfc</a></td></tr>
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using upwind difference scheme based on Riemann solvers,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
            
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with coupled differential algebraic system</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03plc.xml">d03plc</a></td></tr>
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with remeshing</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03psc.xml">d03psc</a></td></tr>
            
         
      
   
   <tr><td class="index1">First-order system(s),</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
   
      <tr><td class="index1">&#160;&#160;&#160;&#160;nonlinear,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
      
         <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;one space dimension,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
         
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using Keller box scheme</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pec.xml">d03pec</a></td></tr>
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using Keller box scheme,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
            
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with coupled differential algebraic system</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pkc.xml">d03pkc</a></td></tr>
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with remeshing</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03prc.xml">d03prc</a></td></tr>
            
         
      
   
   <tr><td class="index1">Partial differential equations (PDEs), elliptic:</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
   
      <tr><td class="index1">&#160;&#160;&#160;&#160;PDEs, general system, one space variable, method of lines:</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
      
         <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;parabolic:</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
         
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;collocation spatial discretization:</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
            
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled DAEs, comprehensive</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pjc.xml">d03pjc</a></td></tr>
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;easy-to-use</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pdc.xml">d03pdc</a></td></tr>
            
            <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;finite differences spatial discretization:</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
            
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled DAEs, comprehensive</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03phc.xml">d03phc</a></td></tr>
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled DAEs, remeshing, comprehensive</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03ppc.xml">d03ppc</a></td></tr>
               <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;easy-to-use</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pcc.xml">d03pcc</a></td></tr>
            
         
      
   
   <tr><td class="index1">Utility function,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
   
      <tr><td class="index1">&#160;&#160;&#160;&#160;average values for <a class="rtnref" href="../D03/d03ndc.xml">nag_pde_bs_1d_analytic (d03ndc)</a>
      </td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03nec.xml">d03nec</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;exact Riemann solver for Euler equations</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pxc.xml">d03pxc</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;HLL Riemann solver for Euler equations</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pwc.xml">d03pwc</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;interpolation function for collocation scheme</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pyc.xml">d03pyc</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;interpolation function for finite difference,</td><td class="index2">
  &#160;&#160;&#160;</td></tr>
      
         <tr><td class="index1">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Keller box and upwind scheme</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pzc.xml">d03pzc</a></td></tr>
      
      <tr><td class="index1">&#160;&#160;&#160;&#160;Osher's Riemann solver for Euler equations</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03pvc.xml">d03pvc</a></td></tr>
      <tr><td class="index1">&#160;&#160;&#160;&#160;Roe's Riemann solver for Euler equations</td><td class="index2">
  &#160;&#160;&#160;<a class="rtnref" href="../D03/d03puc.xml">d03puc</a></td></tr>
   
</table><h2><a name="withdrawn" id="withdrawn"/>6&#160;&#160;Functions Withdrawn or Scheduled for Withdrawal</h2>
  <div class="paramtext">None.</div><h2><a name="references" id="references"/>7&#160;&#160;References</h2><div class="paramtext">
<p><a name="ref212" id="ref212"/>Ames W F (1977) <i>Nonlinear Partial Differential Equations in Engineering</i> (2nd Edition) Academic Press </p>
<p><a name="ref213" id="ref213"/>Berzins M (1990) Developments in the NAG Library software for parabolic equations <i>Scientific Software Systems</i> (ed J C Mason and M G Cox) 59&#8211;72 Chapman and Hall </p>
<p><a name="ref214" id="ref214"/>Jaswon M A and Symm G T (1977) <i>Integral Equation Methods in Potential Theory and Elastostatics</i> Academic Press </p>
<p><a name="ref542" id="ref542"/>LeVeque R J (1990) <i>Numerical Methods for Conservation Laws</i> Birkh&#246;user Verlag </p>
<p><a name="ref215" id="ref215"/>Mikhlin S G and Smolitsky K L (1967) <i>Approximate Methods for the Solution of Differential and Integral Equations</i> Elsevier </p>
<p><a name="ref216" id="ref216"/>Mitchell A R and Griffiths D F (1980) <i>The Finite Difference Method in Partial Differential Equations</i> Wiley </p>
<p><a name="ref541" id="ref541"/>Pennington S V and Berzins M (1994) New NAG Library software for first-order partial differential equations <i>ACM Trans. Math. Softw.</i> <b>20</b> 63&#8211;99 </p>
<p><a name="ref217" id="ref217"/>Richtmyer R D and Morton K W (1967) <i>Difference Methods for Initial-value Problems</i> (2nd Edition) Interscience </p>
<p><a name="ref218" id="ref218"/>Smith G D (1985) <i>Numerical Solution of Partial Differential Equations: Finite Difference Methods</i> (3rd Edition) Oxford University Press </p>
<p><a name="ref038" id="ref038"/>Swarztrauber P N and Sweet R A (1979) Efficient Fortran subprograms for the solution of separable elliptic partial differential equations <i>ACM Trans. Math. Software</i> <b>5</b> 352&#8211;364 </p>
<p><a name="ref219" id="ref219"/>Wait R and Mitchell A R (1985) <i>Finite Element Analysis and Application</i> Wiley </p>
</div><hr/><div><a href="../../pdf/D03/d03_intro.pdf">d03 Chapter Introduction (pdf version)</a></div><div><a href="d03_conts.xml">Chapter Contents</a></div>
<div><a href="../mark8.xml">NAG C Library Manual</a></div>
<div><hr/>
  &#169; The Numerical Algorithms Group Ltd, Oxford, UK. 2005
  </div></body></html>
