<?xml-stylesheet type="text/xsl" href="../styles/pmathml.xsl"?>
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dsi="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xml:space="preserve"><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><title>D03 Chapter Introduction : NAG Library, Mark 23</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 class="chap" href="d03conts.xml">D03 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/D03/d03intro.pdf">D03 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Chapter Introduction<br/><br/>D03 &#8211; Partial Differential Equations</h1><div class="htmltoc">
<h2 class="htmltoc"><span class="htmltochead" onclick="showLevel('htmltoc');"><span class="htmltocplus" id="htmltocplus">+</span><span class="htmltocminus" id="htmltocminus">&#8722;</span></span>&#160;Contents</h2>
<div class="htmltocitem" id="htmltoc">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#scope">1&#160;&#160;<b>Scope of the Chapter</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#background">2&#160;&#160;<b>Background to the Problems</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocavailable');"><span class="htmltocplus" id="tocavailableplus">+</span><span class="htmltocminus" id="tocavailableminus">&#8722;</span></span>
<a class="htmltoc" href="#available">3&#160;&#160;<b>Recommendations on Choice and Use of Available Routines</b></a>
<div class="htmltocitem" id="tocavailable">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#threadsafety">3.1&#160;&#160;<b>Thread Safe Routines</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_1">3.2&#160;&#160;<b>Elliptic Equations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_2">3.3&#160;&#160;<b>Hyperbolic Equations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_3">3.4&#160;&#160;<b>Parabolic Equations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#Black-Scholes">3.5&#160;&#160;<b>Black&#8211;Scholes Equations</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_4">3.6&#160;&#160;<b>First-order Systems in One Space Dimension</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_5a">3.7&#160;&#160;<b>Second-order Systems in Two Space Dimensions</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_5">3.8&#160;&#160;<b>Convection-diffusion Systems</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_6">3.9&#160;&#160;<b>Automatic Mesh Generation</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#intrecomm_7">3.10&#160;&#160;<b>Utility Routines</b></a>
</div>
</div>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#dtree">4&#160;&#160;<b>Decision Trees</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#index">5&#160;&#160;<b>Functionality Index</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#auxindex">6&#160;&#160;<b>Auxiliary Routines Associated with Library Routine Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#withdrawn">7&#160;&#160;<b>Routines Withdrawn or Scheduled for Withdrawal</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">8&#160;&#160;<b>References</b></a>
</div>
</div>
</div><h2 class="standard"><a class="sec" 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.

</div><h2 class="standard"><a class="sec" 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 routines in this chapter will often call upon routines from other chapters, such as <a class="chap" href="../F04/f04conts.xml">Chapter F04</a> (Simultaneous Linear Equations) and <a class="chap" href="../D02/d02conts.xml">Chapter D02</a> (Ordinary Differential Equations).  Other chapters also contain relevant routines, in particular <a class="chap" href="../D06/d06conts.xml">Chapter D06</a> (Mesh Generation) and <a class="chap" href="../F11/f11conts.xml">Chapter 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 class="formula-eqn"><a name="eqn1" id="eqn1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

where <m:math><m:mi>a</m:mi></m:math>, <m:math><m:mi>b</m:mi></m:math>, <m:math><m:mi>c</m:mi></m:math>,  <m:math><m:mi>d</m:mi></m:math>, <m:math><m:mi>e</m:mi></m:math>, <m:math><m:mi>f</m:mi></m:math>&#160;and <m:math><m:mi>g</m:mi></m:math>&#160;are functions of <m:math><m:mi>x</m:mi></m:math>&#160;and <m:math><m:mi>y</m:mi></m:math>&#160;only.  Equation  <a class="eqn" href="#eqn1">(1)</a> is called elliptic, hyperbolic or parabolic according to whether <m:math><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 class="formula-eqn"><a name="eqn2" id="eqn2"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

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="eqn" href="#eqn2">(2)</a> holds in a plane domain <m:math><m:mi>D</m:mi></m:math>&#160;bounded by a contour <m:math><m:mi>C</m:mi></m:math>,  a solution <m:math><m:mi>u</m:mi></m:math>&#160;may be sought subject to the condition

<div class="formula-eqn"><a name="eqn3" id="eqn3"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

where <m:math><m:mi>f</m:mi></m:math>&#160;is a given function.  The condition  <a class="eqn" href="#eqn3">(3)</a> is known as a Dirichlet boundary condition.  Equally common is the Neumann boundary condition

<div class="formula-eqn"><a name="eqn4" id="eqn4"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

which is one form of a more general condition

<div class="formula-eqn"><a name="eqn5" id="eqn5"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

where <m:math><m:msup><m:mi>u</m:mi><m:mo>&#8242;</m:mo></m:msup></m:math>&#160;denotes the derivative of <m:math><m:mi>u</m:mi></m:math>&#160;normal to the contour <m:math><m:mi>C</m:mi></m:math>, and <m:math><m:mi>f</m:mi></m:math>&#160;and <m:math><m:mi>g</m:mi></m:math>&#160;are given functions.  Provided that <m:math><m:mi>f</m:mi></m:math>&#160;and <m:math><m:mi>g</m:mi></m:math>&#160;satisfy certain restrictions, condition <a class="eqn" 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><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 class="formula-eqn"><a name="eqn6" id="eqn6"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

is the simplest example of second order.  It is equivalent to a first-order system

<div class="formula-eqn"><a name="eqn7" id="eqn7"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

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="eqn" href="#eqn6">(6)</a> is satisfied for <m:math><m:mi>t</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>,  a solution <m:math><m:mi>u</m:mi></m:math>&#160;may be sought such that

<div class="formula-eqn"><a name="eqn8" id="eqn8"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

where <m:math><m:mi>f</m:mi></m:math>&#160;and <m:math><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 class="formula-eqn"><a name="eqn9" id="eqn9"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

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="eqn" href="#eqn9">(9)</a> is satisfied for  <m:math><m:mi>t</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;and <m:math><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><m:mi>u</m:mi></m:math>&#160;may be sought such that

<div class="formula-eqn"><a name="eqn10" id="eqn10"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

and

<div class="formula-eqn"><a name="eqn11" id="eqn11"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math 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>

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="ref" href="#ref216">Mitchell and Griffiths (1980)</a>) and finite element methods  (see <a class="ref" 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 routines 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 routines for this purpose are provided in <a class="chap" href="../F11/f11conts.xml">Chapter 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="ref" href="#ref218">Smith (1985)</a>).  The method of lines (see <a class="ref" 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 routines from <a class="chap" href="../D02/d02conts.xml">Chapter D02</a> (Ordinary Differential Equations).  Similarly, integral equation or boundary element methods (see <a class="ref" 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 class="standard"><a class="sec" name="available" id="available"/>3&#160;&#160;Recommendations on Choice and Use of Available Routines</h2>
<div class="paramtext">The choice of routine will depend first of all upon the type of partial differential equation to be solved.  At present no special allowances are made for problems with boundary singularities such as may arise at corners of domains or at points where boundary conditions change.  For such problems results should be treated with caution.  The choice of routine may also depend on whether or not it is to be used in a multithreaded environment.</div><div class="paramtext">You may wish to construct your own partial differential equation solution software for problems not solvable by the routines described in <a class="sec" href="#intrecomm_1">Section 3.2</a> to  <a class="sec" href="#intrecomm_5">Section 3.8</a> below.  In such cases you can employ appropriate routines from the Linear  Algebra Chapters to solve the resulting linear systems; see  <a class="sec" href="#intrecomm_7">Section 3.10</a> for further details.</div><h3 class="standard"><a class="sec" name="threadsafety" id="threadsafety"/>3.1&#160;&#160;Thread Safe Routines</h3>
<div class="paramtext">Some of the routines in this chapter come in pairs, with each routine in the pair having exactly the same functionality, except that one of them has additional parameters in order to make it safe for use in multithreaded applications.  The routine that is safe for use in multithreaded applicatons has an &#8216;A&#8217; as the last character in the name, in place of the usual &#8216;F&#8217;. An example of such a pair is <a class="rout" href="../D03/d03pcf.xml">D03PCA</a> and <a class="rout" href="../D03/d03pcf.xml">D03PCF</a>.</div><div class="paramtext">All &#8216;F&#8217; routines not scheduled for withdrawal from the Library and where there is no &#8216;A&#8217; version of that routine are threadsafe provided that the implementation as a whole is considered threadsafe (refer to the Users' Note for your implementation).</div><h3 class="standard"><a class="sec" name="intrecomm_1" id="intrecomm_1"/>3.2&#160;&#160;Elliptic Equations</h3>
<div class="paramtext">The routine <a class="rout" href="../D03/d03eaf.xml">D03EAF</a> solves Laplace's equation in two dimensions, equation <a class="eqn" href="#eqn2">(2)</a>, by an integral equation method.  This routine is applicable to an arbitrary domain bounded internally or externally by one or more closed contours, when the value of either the unknown function <m:math><m:mi>u</m:mi></m:math>&#160;or its normal derivative <m:math><m:msup><m:mi>u</m:mi><m:mo>&#8242;</m:mo></m:msup></m:math>&#160;is given at each point of the boundary.</div><div class="paramtext">The routines <a class="rout" href="../D03/d03ebf.xml">D03EBF</a> and <a class="rout" href="../D03/d03ecf.xml">D03ECF</a> solve a system of simultaneous algebraic equations of five-point and seven-point molecule form (see <a class="ref" href="#ref215">Mikhlin and Smolitsky (1967)</a>) on two-dimensional and three-dimensional topologically-rectangular meshes respectively, using Stone's Strongly Implicit Procedure (SIP).  These  routines, which make repeated calls of the utility routines  <a class="rout" href="../D03/d03uaf.xml">D03UAF</a> and <a class="rout" href="../D03/d03ubf.xml">D03UBF</a> respectively,  may be used to solve any boundary value problem whose finite difference representation takes the appropriate form.</div><div class="paramtext">The routine <a class="rout" href="../D03/d03edf.xml">D03EDF</a> solves a system of seven-point difference equations in a rectangular grid (in two dimensions), using the multigrid iterative method.  The equations are supplied by you, and the seven-point form allows cross-derivative terms to be represented (see <a class="ref" href="#ref216">Mitchell and Griffiths (1980)</a>).  The method is particularly efficient for large systems of equations with diagonal dominance and should be preferred to <a class="rout" href="../D03/d03ebf.xml">D03EBF</a> whenever it is appropriate for the solution of the problem.</div><div class="paramtext">The routine <a class="rout" href="../D03/d03eef.xml">D03EEF</a> discretizes a second-order equation on a two-dimensional rectangular region using finite differences and a seven-point molecule.  The routine allows for cross-derivative terms, Dirichlet, Neumann or mixed boundary conditions, and either central or upwind differences.  The resulting seven-diagonal difference equations are in a form suitable for passing directly to the multigrid routine <a class="rout" href="../D03/d03edf.xml">D03EDF</a>, although other solution methods could just as easily be used.</div><div class="paramtext">The routine <a class="rout" href="../D03/d03faf.xml">D03FAF</a>, based on the routine HW3CRT from FISHPACK (see <a class="ref" href="#ref038">Swarztrauber and Sweet (1979)</a>), solves the Helmholtz equation in a three-dimensional cuboidal region, with any combination of  Dirichlet, Neumann or periodic boundary conditions.  The method used is based on the fast Fourier transform algorithm, and is likely to be particularly efficient on vector-processing machines.</div><h3 class="standard"><a class="sec" name="intrecomm_2" id="intrecomm_2"/>3.3&#160;&#160;Hyperbolic Equations</h3>
<div class="paramtext">See <a class="sec" href="#intrecomm_5">Section 3.8</a>.</div><h3 class="standard"><a class="sec" name="intrecomm_3" id="intrecomm_3"/>3.4&#160;&#160;Parabolic Equations</h3>
<div class="paramtext">There are five routines available for solving general parabolic equations in one space dimension:
<ul class="listind"><li class="listind"><a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a>,</li><li class="listind"><a class="rout" href="../D03/d03pdf.xml">D03PDF/D03PDA</a>,</li><li class="listind"><a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</a>,</li><li class="listind"><a class="rout" href="../D03/d03pjf.xml">D03PJF/D03PJA</a>,</li><li class="listind"><a class="rout" href="../D03/d03ppf.xml">D03PPF/D03PPA</a>.</li></ul>
</div><div class="paramtext">Equations may include nonlinear terms but the true derivative <m:math><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><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 routines.</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="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a> and <a class="rout" href="../D03/d03pdf.xml">D03PDF/D03PDA</a> can solve a system of parabolic equations of the form

<div class="formula"><table class="formula"><tr><td class="formula"><m:math 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>

where <m:math><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><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><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 parameter <m:math><m:mi>m</m:mi></m:math>&#160;allows the routine to handle different coordinate systems easily (Cartesian, cylindrical polars and spherical polars).  <a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a> uses a finite differences spatial discretization and <a class="rout" href="../D03/d03pdf.xml">D03PDF/D03PDA</a> uses a collocation spatial discretization.</div><div class="paramtext"><a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</a> and <a class="rout" href="../D03/d03pjf.xml">D03PJF/D03PJA</a> are similar to  <a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a> and <a class="rout" href="../D03/d03pdf.xml">D03PDF/D03PDA</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="rout" href="../D03/d03ppf.xml">D03PPF/D03PPA</a> is similar to <a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</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">For parabolic systems in two space dimensions see <a class="sec" href="#intrecomm_5a">Section 3.7</a>.</div><h3 class="standard"><a class="sec" name="Black-Scholes" id="Black-Scholes"/>3.5&#160;&#160;Black&#8211;Scholes Equations</h3>
<div class="paramtext"><a class="rout" href="../D03/d03ncf.xml">D03NCF</a> solves the Black&#8211;Scholes equation

<div class="formula"><table class="formula"><tr><td class="formula"><m:math 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="formula"><table class="formula"><tr><td class="formula"><m:math 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>

for the value <m:math><m:mi>f</m:mi></m:math>&#160;of a European or American, put or call stock option.  The parameters <m:math><m:mi>r</m:mi></m:math>, <m:math><m:mi>q</m:mi></m:math>&#160;and <m:math><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="rout" href="../D03/d03ndf.xml">D03NDF</a>. More generally, <a class="chap" href="../S/sconts.xml">Chapter S</a> contains a set of option pricing routines that evaluate the closed form solutions or approximations to the equations that define mathematical models for the prices of selected financial option contracts, including the Black&#8211;Scholes equation (<a class="rout" href="../S/s30aaf.xml">S30AAF</a>).</div><h3 class="standard"><a class="sec" name="intrecomm_4" id="intrecomm_4"/>3.6&#160;&#160;First-order Systems in One Space Dimension</h3>
<div class="paramtext">There are three routines available for solving systems of first-order partial differential equations:
<ul class="listind"><li class="listind"><a class="rout" href="../D03/d03pef.xml">D03PEF</a>,</li><li class="listind"><a class="rout" href="../D03/d03pkf.xml">D03PKF</a>,</li><li class="listind"><a class="rout" href="../D03/d03prf.xml">D03PRF</a>.</li></ul>
</div><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  routines.</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="rout" href="../D03/d03pef.xml">D03PEF</a> is designed to solve a system of the form

<div class="formula"><table class="formula"><tr><td class="formula"><m:math 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>

where <m:math><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><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><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="rout" href="../D03/d03pkf.xml">D03PKF</a> is similar to <a class="rout" href="../D03/d03pef.xml">D03PEF</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="rout" href="../D03/d03prf.xml">D03PRF</a> is similar to <a class="rout" href="../D03/d03pkf.xml">D03PKF</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="rout" href="../D03/d03pef.xml">D03PEF</a>, <a class="rout" href="../D03/d03pkf.xml">D03PKF</a> or <a class="rout" href="../D03/d03prf.xml">D03PRF</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 routines are unsuitable for hyperbolic first-order equations, for which an appropriate upwind discretization scheme should be used  (see <a class="sec" href="#intrecomm_5">Section 3.8</a> for example).</div><h3 class="standard"><a class="sec" name="intrecomm_5a" id="intrecomm_5a"/>3.7&#160;&#160;Second-order Systems in Two Space Dimensions</h3>
<div class="paramtext">There are two routines available for solving nonlinear second-order time-dependent systems in two space dimensions:
<ul class="listind"><li class="listind"><a class="rout" href="../D03/d03raf.xml">D03RAF</a>,</li><li class="listind"><a class="rout" href="../D03/d03rbf.xml">D03RBF</a>.</li></ul>
</div><div class="paramtext">These routines are formally applicable to the general nonlinear system

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub>
  <m:mi>F</m:mi>
  <m:mi>j</m:mi>
 </m:msub>
 <m:mfenced separators=""><m:mi>t</m:mi><m:mo>,</m:mo><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>y</m:mi><m:mo>,</m:mo><m:mi>u</m:mi><m:mo>,</m:mo><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:mi>x</m:mi>
  </m:msub><m:mo>,</m:mo><m:msub>
   <m:mi>u</m:mi>
   <m:mi>y</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: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:msub>
   <m:mi>u</m:mi>
   <m:mrow>
    <m:mi>y</m:mi>
    <m:mi>y</m:mi>
   </m:mrow>
  </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>

where <m:math><m:mi>j</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 mathvariant="bold">NPDE</m:mi></m:math>,  <m:math><m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>y</m:mi></m:mfenced><m:mo>&#8712;</m:mo><m:mi>&#937;</m:mi></m:math>,  <m:math><m:msub><m:mi>t</m:mi><m:mn>0</m:mn></m:msub><m:mo>&#8804;</m:mo><m:mi>t</m:mi><m:mo>&#8804;</m:mo><m:msub><m:mi>t</m:mi><m:mi mathvariant="normal">out</m:mi></m:msub></m:math>.  However, they should not be used to solve purely hyperbolic systems, or time-independent problems.</div><div class="paramtext"><a class="rout" href="../D03/d03raf.xml">D03RAF</a> solves the nonlinear system in a rectangular domain, while <a class="rout" href="../D03/d03rbf.xml">D03RBF</a> solves in a rectilinear region, i.e., a domain bounded by perpendicular straight lines.</div><div class="paramtext">Both routines use the method of lines and solve the resulting system of ordinary differential equations using a backward differentiation formula (BDF) method, modified Newton method, and BiCGSTAB iterative linear solver.  Local uniform grid refinement is used to improve accuracy.</div><div class="paramtext">Utility routines <a class="rout" href="../D03/d03ryf.xml">D03RYF</a> and <a class="rout" href="../D03/d03rzf.xml">D03RZF</a>  may be used in conjunction with <a class="rout" href="../D03/d03rbf.xml">D03RBF</a> to check the user-supplied initial mesh, and extract mesh coordinate data.</div><h3 class="standard"><a class="sec" name="intrecomm_5" id="intrecomm_5"/>3.8&#160;&#160;Convection-diffusion Systems</h3>
<div class="paramtext">There are three routines available for solving systems of convection-diffusion equations with optional source terms:
<ul class="listind"><li class="listind"><a class="rout" href="../D03/d03pff.xml">D03PFF</a>,</li><li class="listind"><a class="rout" href="../D03/d03plf.xml">D03PLF</a>,</li><li class="listind"><a class="rout" href="../D03/d03psf.xml">D03PSF</a>.</li></ul>
</div><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 routines, in particular the system must be posed in conservative form (see below).  The routines 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="ref" 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="rout" href="../D03/d03puf.xml">D03PUF</a>, <a class="rout" href="../D03/d03pvf.xml">D03PVF</a>, <a class="rout" href="../D03/d03pwf.xml">D03PWF</a> and <a class="rout" href="../D03/d03pxf.xml">D03PXF</a>.  These routines may be used in conjunction with <a class="rout" href="../D03/d03pff.xml">D03PFF</a>, <a class="rout" href="../D03/d03plf.xml">D03PLF</a> and <a class="rout" href="../D03/d03psf.xml">D03PSF</a>.</div><div class="paramtext"><a class="rout" href="../D03/d03pff.xml">D03PFF</a> is designed to solve systems of the form</div><div class="paramtext"><div class="formula"><table class="formula"><tr><td class="formula"><m:math 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>

or hyperbolic convection-only systems of the form

<div class="formula"><table class="formula"><tr><td class="formula"><m:math 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>

where <m:math><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><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><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="rout" href="../D03/d03plf.xml">D03PLF</a> is similar to <a class="rout" href="../D03/d03pff.xml">D03PFF</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="rout" href="../D03/d03psf.xml">D03PSF</a> is similar to <a class="rout" href="../D03/d03plf.xml">D03PLF</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 class="standard"><a class="sec" name="intrecomm_6" id="intrecomm_6"/>3.9&#160;&#160;Automatic Mesh Generation</h3>
<div class="paramtext">The routine <a class="rout" href="../D03/d03maf.xml">D03MAF</a> places a triangular mesh over a given two-dimensional region.  The region may have any shape and may include holes.  It may also be used in conjunction with routines from the NAG Finite Element Library.  A wider range of mesh generation routines are available in <a class="chap" href="../D06/d06conts.xml">Chapter D06</a>.</div><h3 class="standard"><a class="sec" name="intrecomm_7" id="intrecomm_7"/>3.10&#160;&#160;Utility Routines</h3>
<div class="paramtext"><a class="rout" href="../D03/d03uaf.xml">D03UAF</a> (<a class="rout" href="../D03/d03ubf.xml">D03UBF</a>) calculates, by the Strongly Implicit  Procedure, an approximate correction to a current estimate of the solution of a system of simultaneous algebraic equations for which the iterative update matrix is of five (seven) point molecule form on a two-   (three-) dimensional topologically-rectangular mesh.</div><div class="paramtext">Routines are available in the Linear Algebra Chapters for the direct and iterative solution of linear equations.  Here we point to some of the routines that may be of use in solving the linear systems that arise from finite difference or finite element approximations to partial differential equation solutions.  <a class="chap" href="../F01/f01conts.xml">Chapters F01</a>, <a class="chap" href="../F04/f04conts.xml">F04</a> and <a class="chap" href="../F11/f11conts.xml">F11</a> should be consulted for further information and for the appropriate routine documents.  Decision trees for the solution of linear systems are given in <a class="sec" href="../F04/f04intro.xml#dtree">Section 4</a> in  the F04 Chapter Introduction.</div><div class="paramtext">The following routines allow the direct solution of symmetric positive definite systems:
<table class="standard-100"><tr>
<td style="width:12.0em;" valign="baseline">Band</td>
<td valign="top"><a class="rout" href="../F07/f07hdf.xml">F07HDF (DPBTRF)</a> and <a class="rout" href="../F07/f07hef.xml">F07HEF (DPBTRS)</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Variable band (skyline)</td>
<td valign="top"><a class="rout" href="../F01/f01mcf.xml">F01MCF</a> and <a class="rout" href="../F04/f04mcf.xml">F04MCF</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Tridiagonal</td>
<td valign="top"><a class="rout" href="../F07/f07jaf.xml">F07JAF (DPTSV)</a>, <a class="rout" href="../F07/f07jdf.xml">F07JDF (DPTTRF)</a> and <a class="rout" href="../F07/f07jef.xml">F07JEF (DPTTRS)</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Sparse</td>
<td valign="top"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="../F11/f11jaf.xml#F11JAF"><m:mi mathcolor="#5555FF" mathvariant="bold">F11JAF</m:mi></m:maction><m:msup><m:mrow/><m:mo>*</m:mo></m:msup></m:math>&#160;and <a class="rout" href="../F11/f11jbf.xml">F11JBF</a></td>
</tr></table>
(<m:math><m:msup><m:mrow/><m:mo>*</m:mo></m:msup></m:math>&#160;the description of <a class="rout" href="../F11/f11jbf.xml">F11JBF</a> explains how <a class="rout" href="../F11/f11jaf.xml">F11JAF</a> should be called to obtain a direct method)
and the following routines allow the iterative solution of symmetric positive definite and symmetric-indefinite systems:
<table class="standard-100"><tr>
<td style="width:12.0em;" valign="baseline">Sparse</td>
<td valign="top"><a class="rout" href="../F11/f11gdf.xml">F11GDF</a>, <a class="rout" href="../F11/f11gef.xml">F11GEF</a>, <a class="rout" href="../F11/f11gff.xml">F11GFF</a>, <a class="rout" href="../F11/f11jaf.xml">F11JAF</a>, <a class="rout" href="../F11/f11jcf.xml">F11JCF</a> and <a class="rout" href="../F11/f11jef.xml">F11JEF</a>.</td>
</tr></table>
</div><div class="paramtext">The latter two routines above are black box routines which include Incomplete Cholesky, SSOR or Jacobi preconditioning.</div><div class="paramtext">The following routines allow the direct solution of nonsymmetric systems:
<table class="standard-100"><tr>
<td style="width:12.0em;" valign="baseline">Band</td>
<td valign="top"><a class="rout" href="../F07/f07bdf.xml">F07BDF (DGBTRF)</a> and <a class="rout" href="../F07/f07bef.xml">F07BEF (DGBTRS)</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Almost block-diagonal</td>
<td valign="top"><a class="rout" href="../F01/f01lhf.xml">F01LHF</a> and <a class="rout" href="../F04/f04lhf.xml">F04LHF</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Tridiagonal</td>
<td valign="top"><a class="rout" href="../F01/f01lef.xml">F01LEF</a>, <a class="rout" href="../F04/f04lef.xml">F04LEF</a> or <a class="rout" href="../F07/f07caf.xml">F07CAF (DGTSV)</a></td>
</tr><tr>
<td style="width:12.0em;" valign="baseline">Sparse</td>
<td valign="top"><a class="rout" href="../F01/f01brf.xml">F01BRF</a> (and <a class="rout" href="../F01/f01bsf.xml">F01BSF</a>) and <a class="rout" href="../F04/f04axf.xml">F04AXF</a></td>
</tr></table>
and the following routines allow the iterative solution of nonsymmetric systems:
<table class="standard-100"><tr>
<td style="width:12.0em;" valign="baseline">Sparse</td>
<td valign="top">
  <a class="rout" href="../F11/f11bdf.xml">F11BDF</a>, <a class="rout" href="../F11/f11bef.xml">F11BEF</a>, <a class="rout" href="../F11/f11bff.xml">F11BFF</a>, <a class="rout" href="../F11/f11daf.xml">F11DAF</a>, <a class="rout" href="../F11/f11dcf.xml">F11DCF</a> and <a class="rout" href="../F11/f11def.xml">F11DEF</a>.</td>
</tr></table>
</div><div class="paramtext">The latter two routines above are black box routines which include incomplete <m:math><m:mi>L</m:mi><m:mi>U</m:mi></m:math>, SSOR and Jacobi preconditioning.</div><div class="paramtext">The routines <a class="rout" href="../D03/d03pyf.xml">D03PYF</a> and <a class="rout" href="../D03/d03pzf.xml">D03PZF</a> use linear interpolation to compute the solution to a parabolic problem and its first derivative at the user-specified points.  <a class="rout" href="../D03/d03pzf.xml">D03PZF</a> may be used in conjunction with <a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a>, <a class="rout" href="../D03/d03pef.xml">D03PEF</a>, <a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</a>, <a class="rout" href="../D03/d03pkf.xml">D03PKF</a>, <a class="rout" href="../D03/d03ppf.xml">D03PPF/D03PPA</a> and <a class="rout" href="../D03/d03prf.xml">D03PRF</a>.  <a class="rout" href="../D03/d03pyf.xml">D03PYF</a> may be used in conjunction with <a class="rout" href="../D03/d03pdf.xml">D03PDF/D03PDA</a> and <a class="rout" href="../D03/d03pjf.xml">D03PJF/D03PJA</a>.</div><div class="paramtext"><a class="rout" href="../D03/d03ryf.xml">D03RYF</a> and <a class="rout" href="../D03/d03rzf.xml">D03RZF</a> are utility routines for use in conjunction with <a class="rout" href="../D03/d03rbf.xml">D03RBF</a>.  They can be called to check the user-specified initial mesh and to extract mesh coordinate data.</div><h2 class="standard"><a class="sec" name="dtree" id="dtree"/>4&#160;&#160;Decision Trees</h2>
<h3 class="sec"><a name="tree1" id="tree1"/>Tree 1</h3>
<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 second derivatives?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">see <a class="dtree" href="#tree4a">Tree 4 Parabolic branch
</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 hyperbolic?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">see <a class="dtree" href="#tree3">Tree 3 Hyperbolic branch
</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">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="rout" href="../D03/d03prf.xml">D03PRF</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="rout" href="../D03/d03pkf.xml">D03PKF</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="rout" href="../D03/d03pef.xml">D03PEF</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">see <a class="dtree" href="#tree2">Tree 2 Elliptic branch
</a></td></tr></table><h3 class="sec"><a name="tree2" id="tree2"/>Tree 2: Elliptic branch
</h3>
<table class="dtree">
<tr>
<td class="dtentry">2 space dimensions?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is the domain arbitrary?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../D03/d03eaf.xml">D03EAF</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 the domain topologically rectangular?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Do you want to use a multigrid scheme?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../D03/d03edf.xml">D03EDF</a> with <a class="rout" href="../D03/d03eef.xml">D03EEF</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="rout" href="../D03/d03ebf.xml">D03EBF</a> or <a class="rout" href="../D03/d03uaf.xml">D03UAF</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="rout" href="../D03/d03eaf.xml">D03EAF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">3 space dimensions?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is the domain topologically equivalent to a brick?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is the PDE the Helmholtz equation?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../D03/d03faf.xml">D03FAF</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="rout" href="../D03/d03ecf.xml">D03ECF</a> or <a class="rout" href="../D03/d03ubf.xml">D03UBF</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">N/A</td></tr></table><h3 class="sec"><a name="tree3" id="tree3"/>Tree 3: Hyperbolic branch
</h3>
<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="rout" href="../D03/d03psf.xml">D03PSF</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="rout" href="../D03/d03plf.xml">D03PLF</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="rout" href="../D03/d03pff.xml">D03PFF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">N/A</td></tr></table><h3 class="sec"><a name="tree4a" id="tree4a"/>Tree 4: Parabolic branch
</h3>
<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="rout" href="../D03/d03ncf.xml">D03NCF</a> or <a class="rout" href="../D03/d03ndf.xml">D03NDF</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="rout" href="../D03/d03psf.xml">D03PSF</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="rout" href="../D03/d03plf.xml">D03PLF</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="rout" href="../D03/d03pff.xml">D03PFF</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 <a class="dtree" href="#tree4b">Tree 5 Branch for parabolic PDE in non-conservative form
</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">2 space dimensions?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry">Is the domain rectangular?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../D03/d03raf.xml">D03RAF</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 the domain rectilinear?</td>
<td class="dtnobar">_<br/>yes</td>
<td class="dtentry"><a class="rout" href="../D03/d03rbf.xml">D03RBF</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">N/A</td></tr></table><h3 class="sec"><a name="tree4b" id="tree4b"/>Tree 5: Branch for parabolic PDE in non-conservative form
</h3>
<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="rout" href="../D03/d03ppf.xml">D03PPF</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="rout" href="../D03/d03phf.xml">D03PHF</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="rout" href="../D03/d03pcf.xml">D03PCF</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="rout" href="../D03/d03pjf.xml">D03PJF</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="rout" href="../D03/d03pdf.xml">D03PDF</a></td></tr>
<tr>
<td class="dtnobar">no<br/>|</td>
<td/></tr>
<tr>
<td class="dtentry">N/A</td></tr></table><h2 class="standard"><a class="sec" name="index" id="index"/>5&#160;&#160;Functionality Index</h2>
<div>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Automatic&#160;mesh&#160;generation,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;triangles&#160;over&#160;a&#160;plane&#160;domain</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03maf.xml">D03MAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Black&#8211;Scholes&#160;equation,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;analytic</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ndf.xml">D03NDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;finite&#160;difference</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ncf.xml">D03NCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Convection-diffusion&#160;system(s),</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;nonlinear,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;one&#160;space&#160;dimension,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;upwind&#160;difference&#160;scheme&#160;based&#160;on&#160;Riemann&#160;solvers</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pff.xml">D03PFF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;upwind&#160;difference&#160;scheme&#160;based&#160;on&#160;Riemann&#160;solvers,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with&#160;coupled&#160;differential&#160;algebraic&#160;system</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03plf.xml">D03PLF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with&#160;remeshing</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03psf.xml">D03PSF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Elliptic&#160;equations,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;discretization&#160;on&#160;rectangular&#160;grid&#160;(seven-point&#160;two-dimensional&#160;molecule)</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03eef.xml">D03EEF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;equations&#160;on&#160;rectangular&#160;grid&#160;(seven-point&#160;two-dimensional&#160;molecule)</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03edf.xml">D03EDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;finite&#160;difference&#160;equations&#160;(five-point&#160;two-dimensional&#160;molecule)</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ebf.xml">D03EBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;finite&#160;difference&#160;equations&#160;(seven-point&#160;three-dimensional&#160;molecule)</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ecf.xml">D03ECF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Helmholtz's&#160;equation&#160;in&#160;three&#160;dimensions</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03faf.xml">D03FAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Laplace's&#160;equation&#160;in&#160;two&#160;dimensions</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03eaf.xml">D03EAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>First-order&#160;system(s),</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;nonlinear,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;one&#160;space&#160;dimension,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;Keller&#160;box&#160;scheme</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pef.xml">D03PEF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;Keller&#160;box&#160;scheme,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with&#160;coupled&#160;differential&#160;algebraic&#160;system</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pkf.xml">D03PKF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with&#160;remeshing</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03prf.xml">D03PRF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Partial&#160;differential&#160;equations&#160;(PDEs),&#160;elliptic:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;PDEs,&#160;general&#160;system,&#160;one&#160;space&#160;variable,&#160;method&#160;of&#160;lines:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;parabolic:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;collocation&#160;spatial&#160;discretization:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled&#160;DAEs,&#160;comprehensive</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pjf.xml">D03PJF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;easy-to-use</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pdf.xml">D03PDF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;finite&#160;differences&#160;spatial&#160;discretization:</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled&#160;DAEs,&#160;comprehensive</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03phf.xml">D03PHF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;coupled&#160;DAEs,&#160;remeshing,&#160;comprehensive</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ppf.xml">D03PPF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;easy-to-use</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pcf.xml">D03PCF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Second&#160;order&#160;system(s),</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;nonlinear,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;two&#160;space&#160;dimensions,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;in&#160;rectangular&#160;domain</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03raf.xml">D03RAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;in&#160;rectilinear&#160;domain</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03rbf.xml">D03RBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>Utility&#160;routine,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;average&#160;values&#160;for&#160;<a class="rout" href="../D03/d03ndf.xml">D03NDF</a></nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03nef.xml">D03NEF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;basic&#160;SIP&#160;for&#160;five-point&#160;two-dimensional&#160;molecule</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03uaf.xml">D03UAF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;basic&#160;SIP&#160;for&#160;seven-point&#160;three-dimensional&#160;molecule</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ubf.xml">D03UBF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;check&#160;initial&#160;grid&#160;data&#160;for&#160;<a class="rout" href="../D03/d03rbf.xml">D03RBF</a></nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03ryf.xml">D03RYF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;exact&#160;Riemann&#160;solver&#160;for&#160;Euler&#160;equations</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pxf.xml">D03PXF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;HLL&#160;Riemann&#160;solver&#160;for&#160;Euler&#160;equations</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pwf.xml">D03PWF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;interpolation&#160;routine&#160;for&#160;collocation&#160;scheme</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pyf.xml">D03PYF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;interpolation&#160;routine&#160;for&#160;finite&#160;difference,</nobr></td><td>&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr/></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Keller&#160;box&#160;and&#160;upwind&#160;scheme</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pzf.xml">D03PZF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Osher's&#160;Riemann&#160;solver&#160;for&#160;Euler&#160;equations</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03pvf.xml">D03PVF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;return&#160;coordinates&#160;of&#160;grid&#160;points&#160;for&#160;<a class="rout" href="../D03/d03rbf.xml">D03RBF</a></nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03rzf.xml">D03RZF</a></nobr></td></tr></table>
<table style="width:95%"><tr><td style="width:1pt; white-space: no-wrap;"><nobr>&#160;&#160;&#160;&#160;Roe's&#160;Riemann&#160;solver&#160;for&#160;Euler&#160;equations</nobr></td><td style="border-bottom: 0.1em dotted black;">&#160;</td><td style="width: 1pt; white-space: no-wrap;"><nobr><a class="rout" href="../D03/d03puf.xml">D03PUF</a></nobr></td></tr></table></div><h2 class="standard"><a class="sec" name="auxindex" id="auxindex"/>6&#160;&#160;Auxiliary Routines Associated with Library Routine Parameters</h2>
<div class="tablediv"><table class="wdrn"><tbody><tr><td class="libdoc" valign="top" align="left">D53PCK</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_remesh_fd_dummy_odedef<br/>See the description of the argument 
      ODEDEF in <a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</a>, <a class="rout" href="../D03/d03pjf.xml">D03PJF/D03PJA</a> and <a class="rout" href="../D03/d03ppf.xml">D03PPF/D03PPA</a>.</td></tr><tr><td class="libdoc" valign="top" align="left">D03PCK</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_remesh_fd_dummy_odedef_old<br/>See the description of the argument 
      ODEDEF in <a class="rout" href="../D03/d03phf.xml">D03PHF/D03PHA</a>, <a class="rout" href="../D03/d03pjf.xml">D03PJF/D03PJA</a> and <a class="rout" href="../D03/d03ppf.xml">D03PPF/D03PPA</a>.</td></tr>
<tr><td class="libdoc" valign="top" align="left">D53PCL</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_remesh_fd_dummy_monitf<br/>See the description of the argument MONITF in <a class="rout" href="../D03/d03ppf.xml">D03PPA</a>.</td></tr><tr><td class="libdoc" valign="top" align="left">D03PCL</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_remesh_fd_dummy_monitf_old<br/>See the description of the argument MONITF in <a class="rout" href="../D03/d03ppf.xml">D03PPF</a>.</td></tr>
<tr><td class="libdoc" valign="top" align="left">D03PEK</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_dae_keller_remesh_fd_dummy_odedef<br/>See the description of the argument 
  ODEDEF in <a class="rout" href="../D03/d03pkf.xml">D03PKF</a>, <a class="rout" href="../D03/d03plf.xml">D03PLF</a>, <a class="rout" href="../D03/d03prf.xml">D03PRF</a> and <a class="rout" href="../D03/d03psf.xml">D03PSF</a>.</td></tr>
<tr><td class="libdoc" valign="top" align="left">D03PEL</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_dae_keller_remesh_fd_dummy_monitf<br/>See the description of the argument 
      MONITF in <a class="rout" href="../D03/d03prf.xml">D03PRF</a> and <a class="rout" href="../D03/d03psf.xml">D03PSF</a>.</td></tr>
<tr><td class="libdoc" valign="top" align="left">D03PFP</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_convdiff_sample_pdedef<br/>See the description of the argument 
  PDEDEF in <a class="rout" href="../D03/d03pff.xml">D03PFF</a>.</td></tr>
<tr><td class="libdoc" valign="top" align="left">D03PLP</td><td class="libdoc" valign="top" align="left">nagf_pde_1d_parab_convdiff_dae_sample_pdedef<br/>See the description of the argument 
      PDEDEF in <a class="rout" href="../D03/d03plf.xml">D03PLF</a> and <a class="rout" href="../D03/d03psf.xml">D03PSF</a>.</td></tr></tbody></table></div><h2 class="standard"><a class="sec" name="withdrawn" id="withdrawn"/>7&#160;&#160;Routines Withdrawn or Scheduled for Withdrawal</h2>
<div class="left-tablediv"><table class="wdrn"><tbody>
<tr><td class="libdoc" valign="top"><b>Withdrawn<br/>Routine</b></td><td class="libdoc" valign="top" align="center"><b>Mark of<br/>Withdrawal</b></td><td class="libdoc" valign="top"><br/><b>Replacement Routine(s)</b></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#D03PAF">D03PAF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#D03PBF">D03PBF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a></td></tr>
<tr><td class="libdoc" valign="top"><a class="wdrn" href="../GENINT/replace.xml#D03PGF">D03PGF</a></td><td class="libdoc" valign="top" align="center">17</td><td class="libdoc" valign="top"><a class="rout" href="../D03/d03pcf.xml">D03PCF/D03PCA</a></td></tr></tbody></table></div><h2 class="standard"><a class="sec" name="references" id="references"/>8&#160;&#160;References</h2><div class="paramtext"><a name="ref212" id="ref212"/>Ames W F (1977)  <i>Nonlinear Partial Differential Equations in Engineering</i> (2nd Edition) Academic Press </div>
<div class="paramtext"><a name="ref213" id="ref213"/>Berzins M (1990)  Developments in the NAG Library software for parabolic equations <i>Scientific Software Systems</i> (eds J C Mason and M G Cox) 59&#8211;72 Chapman and Hall </div>
<div class="paramtext"><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 </div>
<div class="paramtext"><a name="ref542" id="ref542"/>LeVeque R J (1990)  <i>Numerical Methods for Conservation Laws</i> Birkh&#228;user Verlag </div>
<div class="paramtext"><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 </div>
<div class="paramtext"><a name="ref216" id="ref216"/>Mitchell A R and Griffiths D F (1980)  <i>The Finite Difference Method in Partial Differential Equations</i> Wiley </div>
<div class="paramtext"><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 </div>
<div class="paramtext"><a name="ref217" id="ref217"/>Richtmyer R D and Morton K W (1967)  <i>Difference Methods for Initial-value Problems</i> (2nd Edition) Interscience </div>
<div class="paramtext"><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 </div>
<div class="paramtext"><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 </div>
<div class="paramtext"><a name="ref219" id="ref219"/>Wait R and Mitchell A R (1985)  <i>Finite Element Analysis and Application</i> Wiley </div><hr/><div><a class="chap" href="d03conts.xml">D03 Chapter Contents</a></div><div><a class="chapint" href="../../pdf/D03/d03intro.pdf">D03 Chapter Introduction (PDF version)</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div>
<div><hr/><a class="genint" href="../FRONTMATTER/copyright.xml">&#169; The Numerical Algorithms Group Ltd, Oxford, UK. 2011</a></div></body></html>