<?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>D06BAF : NAG Library, Mark 22</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="rout" href="../../pdf/D06/d06baf.pdf">D06BAF (PDF version)</a></div><div><a class="chap" href="d06conts.xml">D06 Chapter Contents</a></div><div><a class="chapint" href="d06intro.xml">D06 Chapter Introduction</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Routine Document<br/><br/>D06BAF</h1><div class="paramtext"><div class="header"><b>Note:</b>&#160; before using this routine, please read the Users' Note for your implementation to check the interpretation of <span class="bitalic">bold italicised</span> terms and other implementation-dependent details.</div></div> 
<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="#purpose">1&#160;&#160;<b>Purpose</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#specification">2&#160;&#160;<b>Specification</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#description">3&#160;&#160;<b>Description</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">4&#160;&#160;<b>References</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#parameters">5&#160;&#160;<b>Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#errors">6&#160;&#160;<b>Error Indicators and Warnings</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#accuracy">7&#160;&#160;<b>Accuracy</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#fcomments">8&#160;&#160;<b>Further Comments</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocexample');"><span class="htmltocplus" id="tocexampleplus">+</span><span class="htmltocminus" id="tocexampleminus">&#8722;</span></span>
<a class="htmltoc" href="#example">9&#160;&#160;<b>Example</b></a>
<div class="htmltocitem" id="tocexample">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examtext">9.1&#160;&#160;<b>Program Text</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examdata">9.2&#160;&#160;<b>Program Data</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examresults">9.3&#160;&#160;<b>Program Results</b></a>
</div>
</div>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="purpose" id="purpose"/>1&#160;&#160;Purpose</h2>
<div class="paramtext">D06BAF generates a boundary mesh on a closed connected subdomain <m:math><m:mi>&#937;</m:mi></m:math>&#160;of <m:math><m:msup><m:mi>&#8477;</m:mi><m:mn>2</m:mn></m:msup></m:math>.</div><h2 class="standard"><a class="sec" name="specification" id="specification"/>2&#160;&#160;Specification</h2>
<table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;D06BAF&#160;(</td><td class="tdfspec2"><a class="arg" href="#NLINES">NLINES</a>, <a class="arg" href="#COORCH">COORCH</a>, <a class="arg" href="#LINED">LINED</a>, <a class="arg" href="#FBND">FBND</a>, <a class="arg" href="#CRUS">CRUS</a>, <a class="arg" href="#SDCRUS">SDCRUS</a>, <a class="arg" href="#RATE">RATE</a>, <a class="arg" href="#NCOMP">NCOMP</a>, <a class="arg" href="#NLCOMP">NLCOMP</a>, <a class="arg" href="#LCOMP">LCOMP</a>, <a class="arg" href="#NVMAX">NVMAX</a>, <a class="arg" href="#NEDMX">NEDMX</a>, <a class="arg" href="#NVB">NVB</a>, <a class="arg" href="#COOR">COOR</a>, <a class="arg" href="#NEDGE">NEDGE</a>, <a class="arg" href="#EDGE">EDGE</a>, <a class="arg" href="#ITRACE">ITRACE</a>, <a class="arg" href="#RUSER">RUSER</a>, <a class="arg" href="#IUSER">IUSER</a>, <a class="arg" href="#RWORK">RWORK</a>, <a class="arg" href="#LRWORK">LRWORK</a>, <a class="arg" href="#IWORK">IWORK</a>, <a class="arg" href="#LIWORK">LIWORK</a>, <a class="arg" href="#IFAIL">IFAIL</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">NLINES, LINED(4,NLINES), SDCRUS, NCOMP, NLCOMP(NCOMP), LCOMP(NLINES), NVMAX, NEDMX, NVB, NEDGE, EDGE(3,NEDMX), ITRACE, IUSER(*), LRWORK, IWORK(LIWORK), LIWORK, IFAIL</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">COORCH(2,NLINES), FBND, CRUS(2,SDCRUS), RATE(NLINES), COOR(2,NVMAX), RUSER(*), RWORK(LRWORK)</td></tr><tr><td class="tdfspec1">EXTERNAL</td><td class="tdfspec2">FBND</td></tr></table><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">Given a closed connected subdomain <m:math><m:mi>&#937;</m:mi></m:math>&#160;of <m:math><m:msup><m:mi>&#8477;</m:mi><m:mn>2</m:mn></m:msup></m:math>, whose boundary <m:math><m:mo>&#8706;</m:mo><m:mi>&#937;</m:mi></m:math>&#160;is divided by characteristic points into <m:math><m:mi>m</m:mi></m:math>&#160;distinct line segments, D06BAF generates a boundary mesh on <m:math><m:mo>&#8706;</m:mo><m:mi>&#937;</m:mi></m:math>.  Each line segment may be a straight line, a curve defined by the equation <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>y</m:mi></m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn></m:math>, or a polygonal curve defined by a set of given boundary mesh points.</div><div class="paramtext">This routine is primarily designed for use with either <a class="rout" href="../D06/d06aaf.xml">D06AAF</a> (a simple incremental method) or <a class="rout" href="../D06/d06abf.xml">D06ABF</a> (Delaunay&#8211;Voronoi method) or <a class="rout" href="../D06/d06acf.xml">D06ACF</a> (Advancing Front method) to triangulate the interior of the domain <m:math><m:mi>&#937;</m:mi></m:math>.  For more details about the boundary and interior mesh generation, consult the <a class="chapint" href="../D06/d06intro.xml">D06 Chapter Introduction</a> as well as <a class="ref" href="#ref698">George and Borouchaki (1998)</a>.</div><div class="paramtext">This routine is derived from material in the MODULEF package from INRIA (Institut National de Recherche en Informatique et Automatique).</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#160;&#160;References</h2><div class="paramtext"><a name="ref698" id="ref698"/>George P L and Borouchaki H (1998)  <i>Delaunay Triangulation and Meshing: Application to Finite Elements</i> Editions HERMES, Paris </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="NLINES" id="NLINES"/>1: &#160;&#160;&#8194; NLINES &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: 

<m:math><m:mi>m</m:mi></m:math>, the number of lines that define the boundary of the closed connected subdomain (this equals the number of characteristic points which separate the entire boundary <m:math><m:mo>&#8706;</m:mo><m:mi>&#937;</m:mi></m:math>&#160;into lines).</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="COORCH" id="COORCH"/>2: &#160;&#160;&#8194; COORCH(<m:math><m:mn>2</m:mn></m:math>,<a class="arg" href="#NLINES">NLINES</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;contains the <m:math><m:mi>x</m:mi></m:math>&#160;co-ordinate of the <m:math><m:mi>i</m:mi></m:math>th characteristic point, for <m:math><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>; while <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;contains the corresponding <m:math><m:mi>y</m:mi></m:math>&#160;co-ordinate.</div></dd><dt class="paramhead"><a name="LINED" id="LINED"/>3: &#160;&#160;&#8194; LINED(<m:math><m:mn>4</m:mn></m:math>,<a class="arg" href="#NLINES">NLINES</a>) &#8211; INTEGER array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the description of the lines that define the boundary domain. The line <m:math><m:mi>i</m:mi></m:math>, for <m:math><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>m</m:mi></m:math>, is defined as follows: 

<dl>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math></dt>
<dd>The number of points on the line, including two end points.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math></dt>
<dd>The first end point of the line.  If <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>j</m:mi></m:math>, then the co-ordinates of the first end point are those stored in <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math></dt>
<dd>The second end point of the line.  If <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mi>k</m:mi></m:math>, then the co-ordinates of the second end point are those stored in <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mi>k</m:mi></m:mfenced></m:mrow></m:math>.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math></dt>
<dd>This defines the type of line segment connecting the end points.  Additional information is conveyed by the numerical value of <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;as follows: 
<table class="standard-90"><tr>
<td style="width:2.1em;" valign="baseline">(i)</td>
<td valign="top"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>, the line is described in <a class="arg" href="#FBND">FBND</a> with <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;as the index. In this case, the line must be described in the trigonometric (anticlockwise) direction;</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(ii)</td>
<td valign="top"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mn>0</m:mn></m:math>, the line is a straight line;</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(iii)</td>
<td valign="top">if <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>, say 
(<m:math><m:mrow><m:mo>-</m:mo><m:mi>p</m:mi></m:mrow></m:math>),

then the line is a polygonal arc joining the end points and interior points specified in <a class="arg" href="#CRUS">CRUS</a>.  In this case the line contains the points whose co-ordinates are stored in 
<m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mi>j</m:mi></m:mfenced></m:mrow>
 <m:mo>,</m:mo><m:mtext/>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#CRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">CRUS</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mi>p</m:mi></m:mfenced></m:mrow>
 <m:mo>,</m:mo><m:mtext/>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#CRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">CRUS</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mrow><m:mi>p</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:mfenced></m:mrow>
 <m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#CRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">CRUS</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mrow><m:mi>p</m:mi><m:mo>+</m:mo><m:mi>r</m:mi><m:mo>-</m:mo><m:mn>3</m:mn></m:mrow></m:mfenced></m:mrow>
 <m:mo>,</m:mo><m:mtext/>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mo>:</m:mo><m:mi>k</m:mi></m:mfenced></m:mrow></m:math>, where 
<m:math><m:mi>r</m:mi><m:mo>=</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>, 
<m:math><m:mi>j</m:mi><m:mo>=</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;and 
<m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>.</td>
</tr></table></dd></dl>
</div><div class="paramtext"><i>Constraints</i>:
   <div class="paramtext"/><ul class="listcons">
<li class="listcons"><m:math><m:mn>2</m:mn><m:mo>&#8804;</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>;</li>
<li class="listcons"><m:math><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</li>
<li class="listcons"><m:math><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</li>
<li class="listcons"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow><m:mo>&#8800;</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow></m:math>,  for <m:math><m:mi mathvariant="italic">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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>.</li>
</ul><div class="paramtext">For each line described by <a class="arg" href="#FBND">FBND</a> (lines with <m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>&gt;</m:mo>
 <m:mn>0</m:mn>
</m:math>, for <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>) the two end points (<m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
</m:math>&#160;and <m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
</m:math>) lie on the curve defined by index <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;in <a class="arg" href="#FBND">FBND</a>, i.e.,
</div><div class="paramtext">
<m:math>
 <m:maction actiontype="link" dsi:type="simple" dsi:href="#FBND"><m:mi mathcolor="#EE0000" mathvariant="bold">FBND</m:mi></m:maction>
 <m:mfenced separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced></m:mrow><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#RUSER"><m:mi mathcolor="#EE0000" mathvariant="bold">RUSER</m:mi></m:maction><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IUSER"><m:mi mathcolor="#EE0000" mathvariant="bold">IUSER</m:mi></m:maction></m:mfenced>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
</m:math>;</div><div class="paramtext"><m:math>
 <m:maction actiontype="link" dsi:type="simple" dsi:href="#FBND"><m:mi mathcolor="#EE0000" mathvariant="bold">FBND</m:mi></m:maction>
 <m:mfenced separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced></m:mrow><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COORCH"><m:mi mathcolor="#EE0000" mathvariant="bold">COORCH</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced></m:mrow><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#RUSER"><m:mi mathcolor="#EE0000" mathvariant="bold">RUSER</m:mi></m:maction><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IUSER"><m:mi mathcolor="#EE0000" mathvariant="bold">IUSER</m:mi></m:maction></m:mfenced>
 <m:mo>=</m:mo>
 <m:mn>0</m:mn>
</m:math>, for <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>.</div><div class="paramtext">For all lines described as polygonal arcs (lines with <m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>&lt;</m:mo>
 <m:mn>0</m:mn>
</m:math>, for <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>) the sets of intermediate points (i.e., <m:math>
 <m:mfenced separators="" open="[" close="]"><m:mrow><m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
  </m:mrow><m:mo>:</m:mo><m:mrow>
   <m:mrow>
    <m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
   </m:mrow>
   <m:mo>+</m:mo>
   <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
   <m:mo>-</m:mo>
   <m:mn>3</m:mn>
  </m:mrow></m:mfenced>
</m:math>&#160;for all <m:math><m:mi>i</m:mi></m:math>&#160;such that <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>) are not overlapping. This can be expressed as:

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>+</m:mo>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>-</m:mo>
 <m:mn>3</m:mn>
 <m:mo>=</m:mo>
 <m:munder>
  <m:mo>&#8721;</m:mo>
  <m:mfenced separators="" open="{" close="}"><m:mi>i</m:mi><m:mo>,</m:mo><m:mrow><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:mrow></m:mfenced>
 </m:munder><m:mspace width="0.25em"/>
 <m:mfenced open="{" close="}" separators="">
  <m:mrow>
   <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
   <m:mo>-</m:mo>
   <m:mn>2</m:mn>
  </m:mrow>
 </m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

or

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>+</m:mo>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow>
 <m:mo>-</m:mo> 
 <m:mn>2</m:mn>
 <m:mo>=</m:mo>
 <m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

for a <m:math><m:mi>j</m:mi></m:math>&#160;such that <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>, <m:math><m:mi>j</m:mi><m:mo>&#8800;</m:mo><m:mi>i</m:mi></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>.</div></div></dd><dt class="paramhead"><a name="FBND" id="FBND"/>4: &#160;&#160;&#8194; FBND &#8211; <span class="bitalic">double precision</span> FUNCTION, supplied by the user.<span class="pclass">External Procedure</span></dt><dd><div class="paramtext"><a class="arg" href="#FBND">FBND</a> must be supplied to calculate the value of the function which describes the curve <m:math> <m:mfenced open="{" close="}" separators=""> <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:msup><m:mi>&#8477;</m:mi><m:mn>2</m:mn></m:msup><m:mtext>; such that &#8203;</m:mtext><m:mi>f</m:mi> <m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>y</m:mi></m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn></m:mfenced> </m:math>&#160;on segments of the boundary for which <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>. If there are no boundaries for which <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;<a class="arg" href="#FBND">FBND</a> will never be referenced by D06BAF and <a class="arg" href="#FBND">FBND</a> may be the dummy function D06BAD. (D06BAD is included in the NAG Library.)  </div><div class="subprog">
<div class="paramtext">The specification of <a class="arg" href="#FBND">FBND</a> is:</div><table class="fspec"><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b>&#160;FUNCTION&#160;FBND&#160;(</td><td class="tdfspec2"><a class="arg" href="../D06/d06baf.xml#FBND_I">I</a>, <a class="arg" href="../D06/d06baf.xml#FBND_X">X</a>, <a class="arg" href="../D06/d06baf.xml#FBND_Y">Y</a>, <a class="arg" href="../D06/d06baf.xml#FBND_RUSER">RUSER</a>, <a class="arg" href="../D06/d06baf.xml#FBND_IUSER">IUSER</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">I, IUSER(*)</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">X, Y, RUSER(*)</td></tr></table>
<dl><dt class="paramhead"><a name="FBND_I" id="FBND_I"/>1: &#160;&#160;&#8194; I &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>, the reference index of the line (portion of the contour) <m:math><m:mi>i</m:mi></m:math>&#160;described.</div></dd><dt class="paramhead"><a name="FBND_X" id="FBND_X"/>2: &#160;&#160;&#8194; X &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dt class="multi-paramhead"><a name="FBND_Y" id="FBND_Y"/>3: &#160;&#160;&#8194; Y &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the values of <m:math><m:mi>x</m:mi></m:math>&#160;and <m:math><m:mi>y</m:mi></m:math>&#160;at which <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>x</m:mi><m:mo>,</m:mo><m:mi>y</m:mi></m:mfenced></m:math>&#160;is to be evaluated.</div></dd><dt class="paramhead"><a name="FBND_RUSER" id="FBND_RUSER"/>4: &#160;&#160;&#8194; RUSER(<m:math><m:mo>*</m:mo></m:math>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">User Workspace</span></dt><dt class="multi-paramhead"><a name="FBND_IUSER" id="FBND_IUSER"/>5: &#160;&#160;&#8194; IUSER(<m:math><m:mo>*</m:mo></m:math>) &#8211; INTEGER array<span class="pclass">User Workspace</span></dt><dd><div class="paramtext">You are free to use these arrays to supply information to this function from the calling subroutine.</div></dd></dl>
</div>
<div class="paramtext"><a class="arg" href="#FBND">FBND</a> must be declared as EXTERNAL in the (sub)program from which D06BAF is called. Parameters denoted as <span class="italic">Input</span>  must <b>not</b>  be changed by this procedure.</div>
</dd><dt class="paramhead"><a name="CRUS" id="CRUS"/>5: &#160;&#160;&#8194; CRUS(<m:math><m:mn>2</m:mn></m:math>,<a class="arg" href="#SDCRUS">SDCRUS</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the co-ordinates of the intermediate points for polygonal arc lines. For a line <m:math><m:mi>i</m:mi></m:math>&#160;defined as a polygonal arc (i.e., <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>), if <m:math><m:mi>p</m:mi><m:mo>=</m:mo><m:mo>-</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>, then <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#CRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">CRUS</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>k</m:mi></m:mfenced></m:mrow></m:math>, for <m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mi>p</m:mi><m:mo>,</m:mo><m:mi>p</m:mi><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>p</m:mi><m:mo>+</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>-</m:mo><m:mn>3</m:mn></m:math>, must contain the <m:math><m:mi>x</m:mi></m:math>&#160;co-ordinate of the consecutive intermediate points for this line. Similarly <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#CRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">CRUS</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>k</m:mi></m:mfenced></m:mrow></m:math>, for <m:math><m:mi>k</m:mi><m:mo>=</m:mo><m:mi>p</m:mi><m:mo>,</m:mo><m:mi>p</m:mi><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:mi>p</m:mi><m:mo>+</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>-</m:mo><m:mn>3</m:mn></m:math>, must contain the corresponding <m:math><m:mi>y</m:mi></m:math>&#160;co-ordinate.</div></dd><dt class="paramhead"><a name="SDCRUS" id="SDCRUS"/>6: &#160;&#160;&#8194; SDCRUS &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the second dimension of the array <a class="arg" href="#CRUS">CRUS</a> as declared in the (sub)program from which D06BAF is called.
</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mstyle displaystyle="true"><m:munder><m:mo>&#8721;</m:mo><m:mfenced separators="" open="{" close="}"><m:mi>i</m:mi><m:mo>,</m:mo><m:mrow><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:mrow></m:mfenced></m:munder></m:mstyle><m:mspace width="0.25em"/><m:mfenced separators="" open="{" close="}"><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>-</m:mo><m:mn>2</m:mn></m:mfenced></m:math>.
</div></dd><dt class="paramhead"><a name="RATE" id="RATE"/>7: &#160;&#160;&#8194; RATE(<a class="arg" href="#NLINES">NLINES</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#RATE"><m:mi mathcolor="#EE0000" mathvariant="bold">RATE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;is the geometric progression ratio between the points to be generated on the line <m:math><m:mi>i</m:mi></m:math>, for <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>m</m:mi></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>. 
<div class="paramtext">If <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#RATE"><m:mi mathcolor="#EE0000" mathvariant="bold">RATE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;is not referenced.</div>
</div><div class="paramtext"><i>Constraint</i>:
  
if <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#RATE"><m:mi mathcolor="#EE0000" mathvariant="bold">RATE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi mathvariant="italic">i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>,  for <m:math><m:mi mathvariant="italic">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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>.</div></dd><dt class="paramhead"><a name="NCOMP" id="NCOMP"/>8: &#160;&#160;&#8194; NCOMP &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: 

<m:math><m:mi>n</m:mi></m:math>, the number of separately connected components of the boundary.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NCOMP</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="NLCOMP" id="NLCOMP"/>9: &#160;&#160;&#8194; NLCOMP(<a class="arg" href="#NCOMP">NCOMP</a>) &#8211; INTEGER array<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: <m:math><m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>&#160;is the number of line segments in component <m:math><m:mi>k</m:mi></m:math>&#160;of the contour. The line <m:math><m:mi>i</m:mi></m:math>&#160;of component <m:math><m:mi>k</m:mi></m:math>&#160;runs in the direction <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;if <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>, and in the opposite direction otherwise; for <m:math><m:mi>k</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>.</div><div class="paramtext"><i>Constraints</i>:
   <div class="paramtext"/><ul class="listcons">
<li class="listcons"><m:math><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi mathvariant="italic">k</m:mi></m:mfenced></m:mrow></m:mfenced><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>,  for <m:math><m:mi mathvariant="italic">k</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:maction actiontype="link" dsi:type="simple" dsi:href="#NCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NCOMP</m:mi></m:maction></m:math>;</li>
<li class="listcons"><m:math> <m:mstyle displaystyle="true"><m:munderover> <m:mo>&#8721;</m:mo> <m:mrow> <m:mi>k</m:mi> <m:mo>=</m:mo><m:mn>1</m:mn> </m:mrow> <m:mi>n</m:mi> </m:munderover></m:mstyle> <m:mfenced open="|" close="|" separators=""> <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow> </m:mfenced> <m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction> </m:math>.</li>
</ul></div></dd><dt class="paramhead"><a name="LCOMP" id="LCOMP"/>10: &#8194; LCOMP(<a class="arg" href="#NLINES">NLINES</a>) &#8211; INTEGER array<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: <m:math>
 <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">LCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mrow><m:mrow><m:mi>l</m:mi><m:mn>1</m:mn></m:mrow><m:mo>:</m:mo><m:mrow><m:mi>l</m:mi><m:mn>2</m:mn></m:mrow></m:mrow></m:mfenced></m:mrow></m:math>, where <m:math>
  <m:mrow><m:mi>l</m:mi><m:mn>2</m:mn></m:mrow>
  <m:mo>=</m:mo>
  <m:mstyle displaystyle="true"><m:munderover>
   <m:mo>&#8721;</m:mo>
   <m:mrow><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow>
   <m:mi>k</m:mi>
  </m:munderover></m:mstyle>
  <m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced>
</m:math>&#160;and <m:math><m:mrow><m:mi>l</m:mi><m:mn>1</m:mn></m:mrow><m:mo>=</m:mo><m:mrow><m:mi>l</m:mi><m:mn>2</m:mn></m:mrow><m:mo>+</m:mo><m:mn>1</m:mn><m:mo>-</m:mo><m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>&#160;is the list of line numbers for the <m:math><m:mi>k</m:mi></m:math>th components of the boundary, for <m:math><m:mi>k</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:maction actiontype="link" dsi:type="simple" dsi:href="#NCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NCOMP</m:mi></m:maction></m:math>.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">LCOMP</m:mi></m:maction></m:math>&#160;must hold a valid permutation of the integers <m:math><m:mfenced separators="" open="[" close="]"><m:mn>1</m:mn><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:mfenced></m:math></div></dd><dt class="paramhead"><a name="NVMAX" id="NVMAX"/>11: &#8194; NVMAX &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: 

the maximum number of the boundary mesh vertices to be generated.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NVMAX"><m:mi mathcolor="#EE0000" mathvariant="bold">NVMAX</m:mi></m:maction><m:mo>&#8805;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>.
</div></dd><dt class="paramhead"><a name="NEDMX" id="NEDMX"/>12: &#8194; NEDMX &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: 

the maximum number of boundary edges in the boundary mesh to be generated.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NEDMX"><m:mi mathcolor="#EE0000" mathvariant="bold">NEDMX</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>1</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="NVB" id="NVB"/>13: &#8194; NVB &#8211; INTEGER<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the total number of boundary mesh vertices generated.</div></dd><dt class="paramhead"><a name="COOR" id="COOR"/>14: &#8194; COOR(<m:math><m:mn>2</m:mn></m:math>,<a class="arg" href="#NVMAX">NVMAX</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COOR"><m:mi mathcolor="#EE0000" mathvariant="bold">COOR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;will contain the <m:math><m:mi>x</m:mi></m:math>&#160;co-ordinate of the <m:math><m:mi>i</m:mi></m:math>th boundary mesh vertex generated, for <m:math><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn><m:mo>,</m:mo><m:mo>&#8230;</m:mo><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NVB"><m:mi mathcolor="#EE0000" mathvariant="bold">NVB</m:mi></m:maction></m:math>; while <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#COOR"><m:mi mathcolor="#EE0000" mathvariant="bold">COOR</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;will contain the corresponding <m:math><m:mi>y</m:mi></m:math>&#160;co-ordinate.</div></dd><dt class="paramhead"><a name="NEDGE" id="NEDGE"/>15: &#8194; NEDGE &#8211; INTEGER<span class="pclass">Output</span></dt><dd><div class="paramtext"><i>On exit</i>: the total number of boundary edges in the boundary mesh.</div></dd><dt class="paramhead"><a name="EDGE" id="EDGE"/>16: &#8194; EDGE(<m:math><m:mn>3</m:mn></m:math>,<a class="arg" href="#NEDMX">NEDMX</a>) &#8211; INTEGER array<span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the specification of the boundary edges. <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#EDGE"><m:mi mathcolor="#EE0000" mathvariant="bold">EDGE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#EDGE"><m:mi mathcolor="#EE0000" mathvariant="bold">EDGE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;will contain the vertex numbers of the two end points of the <m:math><m:mi>j</m:mi></m:math>th boundary edge. <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#EDGE"><m:mi mathcolor="#EE0000" mathvariant="bold">EDGE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow></m:math>&#160;is a reference number for the <m:math><m:mi>j</m:mi></m:math>th boundary edge and <ul class="listind"><li class="listind"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#EDGE"><m:mi mathcolor="#EE0000" mathvariant="bold">EDGE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>, where <m:math><m:mi>i</m:mi></m:math>&#160;and <m:math><m:mi>j</m:mi></m:math>&#160;are such that the <m:math><m:mi>j</m:mi></m:math>th edges is part of the <m:math><m:mi>i</m:mi></m:math>th line of the boundary and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>;</li><li class="listind"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#EDGE"><m:mi mathcolor="#EE0000" mathvariant="bold">EDGE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>j</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mn>100</m:mn><m:mo>+</m:mo><m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced></m:math>, where <m:math><m:mi>i</m:mi></m:math>&#160;and <m:math><m:mi>j</m:mi></m:math>&#160;are such that the <m:math><m:mi>j</m:mi></m:math>th edges is part of the <m:math><m:mi>i</m:mi></m:math>th line of the boundary and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>.</li></ul>
 </div></dd><dt class="paramhead"><a name="ITRACE" id="ITRACE"/>17: &#8194; ITRACE &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the level of trace information required from D06BAF.

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>&lt;</m:mo><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:math></dt>
<dd>No output is generated.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>Output from the boundary mesh generator is printed on the current advisory message unit (see <a class="rout" href="../X04/x04abf.xml">X04ABF</a>). This output contains the input information of each line and each connected component of the boundary.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>=</m:mo><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:math></dt>
<dd>An analysis of the output boundary mesh is printed on the current advisory message unit. This analysis includes the orientation (clockwise or anticlockwise) of each connected component of the boundary. This information could be of interest to you, especially if an interior meshing is carried out using the output of this routine, calling either <a class="rout" href="../D06/d06aaf.xml">D06AAF</a>, <a class="rout" href="../D06/d06abf.xml">D06ABF</a> or <a class="rout" href="../D06/d06acf.xml">D06ACF</a>.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>The output is similar to that produced when <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math>, but the co-ordinates of the generated vertices on the boundary are also output.</dd></dl>
<div class="paramtext">You are advised to set <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>=</m:mo><m:mn>0</m:mn></m:math>, unless you are experienced with finite element mesh generation.</div>
</div></dd><dt class="paramhead"><a name="RUSER" id="RUSER"/>18: &#8194; RUSER(<m:math><m:mo>*</m:mo></m:math>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">User Workspace</span></dt><dt class="multi-paramhead"><a name="IUSER" id="IUSER"/>19: &#8194; IUSER(<m:math><m:mo>*</m:mo></m:math>) &#8211; INTEGER array<span class="pclass">User Workspace</span></dt><dd><div class="paramtext"><b>Note:</b> the dimension of the arrays <a class="arg" href="#RUSER">RUSER</a> and <a class="arg" href="#IUSER">IUSER</a>
must be at least
<m:math><m:mn>1</m:mn></m:math>.</div><div class="paramtext">You are free to use these arrays to supply information to this function from the calling subroutine.</div></dd><dt class="paramhead"><a name="RWORK" id="RWORK"/>20: &#8194; RWORK(<a class="arg" href="#LRWORK">LRWORK</a>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Workspace</span></dt><dt class="multi-paramhead"><a name="LRWORK" id="LRWORK"/>21: &#8194; LRWORK &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the dimension of the array <a class="arg" href="#RWORK">RWORK</a> as declared in the (sub)program from which D06BAF is called.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LRWORK"><m:mi mathcolor="#EE0000" mathvariant="bold">LRWORK</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>2</m:mn><m:mo>&#215;</m:mo><m:mfenced separators=""><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction><m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction></m:mfenced><m:mo>+</m:mo><m:mn>2</m:mn><m:mo>&#215;</m:mo><m:msub><m:mi mathvariant="normal">max</m:mi><m:mrow><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>m</m:mi></m:mrow></m:msub><m:mfenced open="{" close="}" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>.
</div></dd><dt class="paramhead"><a name="IWORK" id="IWORK"/>22: &#8194; IWORK(<a class="arg" href="#LIWORK">LIWORK</a>) &#8211; INTEGER array<span class="pclass">Workspace</span></dt><dt class="multi-paramhead"><a name="LIWORK" id="LIWORK"/>23: &#8194; LIWORK &#8211; INTEGER<span class="pclass">Input</span></dt><dd><div class="paramtext"><i>On entry</i>: the dimension of the array <a class="arg" href="#IWORK">IWORK</a> as declared in the (sub)program from which D06BAF is called.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LIWORK"><m:mi mathcolor="#EE0000" mathvariant="bold">LIWORK</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mtext/><m:mstyle displaystyle="true"><m:munder><m:mo>&#8721;</m:mo><m:mfenced open="{" close="}" separators=""><m:mi>i</m:mi><m:mo>,</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:mfenced></m:munder></m:mstyle><m:mspace width="0.25em"/><m:mfenced open="{" close="}" separators=""> <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>-</m:mo><m:mn>2</m:mn></m:mfenced><m:mo>+</m:mo><m:mn>8</m:mn><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction><m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NVMAX"><m:mi mathcolor="#EE0000" mathvariant="bold">NVMAX</m:mi></m:maction><m:mo>+</m:mo><m:mn>3</m:mn><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NEDMX"><m:mi mathcolor="#EE0000" mathvariant="bold">NEDMX</m:mi></m:maction><m:mo>+</m:mo><m:mn>2</m:mn><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction></m:math>.
</div></dd><dt class="paramhead"><a name="IFAIL" id="IFAIL"/>24: &#8194; IFAIL &#8211; INTEGER<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <a class="arg" href="#IFAIL">IFAIL</a> must be set to <m:math><m:mn>0</m:mn></m:math>, <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>. If you are unfamiliar with this parameter you should refer to <a class="sec" href="../GENINT/essint.xml#library3">Section 3.3</a> in  the Essential Introduction for details.</div>
<div class="paramtext"><i>On exit</i>: <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;unless the routine detects an error (see <a class="sec" href="#errors">Section 6</a>). <div class="paramtext">For environments where it might be inappropriate to halt program execution when an error is detected, the value <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>&#160;is recommended.  If the output of error messages is undesirable, then the value <m:math><m:mn>1</m:mn></m:math>&#160;is recommended.  Otherwise, if you are not familiar with this parameter, the recommended value is <m:math><m:mn>0</m:mn></m:math>.  <b>When the value <m:math><m:mrow><m:mo>-</m:mo><m:mn mathvariant="bold">1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn mathvariant="bold">1</m:mn></m:math>&#160;is used it is essential to test the value of <a class="arg" href="#IFAIL">IFAIL</a> on exit.</b></div></div></dd></dl><h2 class="standard"><a class="sec" name="errors" id="errors"/>6&#160;&#160;Error Indicators and Warnings</h2>
<div class="paramtext">If on entry <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">-1</m:mn></m:maction></m:math>, explanatory error messages are output on the current error message unit (as defined by <a class="rout" href="../X04/x04aaf.xml">X04AAF</a>).</div><div class="paramtext">Errors or warnings detected by the routine:</div>
<dl class="ifail">
<dt class="errorhead"><a name="IFeq1" id="IFeq1"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NVMAX"><m:mi mathcolor="#EE0000" mathvariant="bold">NVMAX</m:mi></m:maction><m:mo>&lt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NEDMX"><m:mi mathcolor="#EE0000" mathvariant="bold">NEDMX</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#NCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NCOMP</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#LRWORK"><m:mi mathcolor="#EE0000" mathvariant="bold">LRWORK</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>2</m:mn><m:mo>&#215;</m:mo><m:mfenced separators=""><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction><m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction></m:mfenced><m:mo>+</m:mo><m:mn>2</m:mn><m:mo>&#215;</m:mo><m:msub><m:mi mathvariant="normal">max</m:mi><m:mrow><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>m</m:mi></m:mrow></m:msub><m:mfenced open="{" close="}" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:mfenced><m:mo>&#215;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90">
  <m:math>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#LIWORK"><m:mi mathcolor="#EE0000" mathvariant="bold">LIWORK</m:mi></m:maction>
   <m:mo>&lt;</m:mo>
   <m:mrow>
    <m:mstyle displaystyle="true"><m:munder>
     <m:mo>&#8721;</m:mo>
     <m:mfenced separators="" open="{" close="}"><m:mi>i</m:mi><m:mo>,</m:mo><m:mrow>
       <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn>
	 <m:mi>i</m:mi>
	</m:mfenced></m:mrow>
       <m:mo>&lt;</m:mo>
       <m:mn>0</m:mn>
      </m:mrow></m:mfenced>
    </m:munder></m:mstyle><m:mspace width="0.25em"/>
    <m:mfenced open="{" close="}" separators="">
    <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn>
     <m:mi>i</m:mi>
    </m:mfenced></m:mrow>
    <m:mo>-</m:mo><m:mn>2</m:mn>
    </m:mfenced>
   </m:mrow>
   <m:mo>+</m:mo><m:mn>8</m:mn>
   <m:mo>&#215;</m:mo>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction>
   <m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NVMAX"><m:mi mathcolor="#EE0000" mathvariant="bold">NVMAX</m:mi></m:maction>
   <m:mo>+</m:mo><m:mn>3</m:mn>
   <m:mo>&#215;</m:mo>
<m:mtext/>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#NEDMX"><m:mi mathcolor="#EE0000" mathvariant="bold">NEDMX</m:mi></m:maction>
   <m:mo>+</m:mo><m:mn>2</m:mn>
   <m:mo>&#215;</m:mo>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction>
  </m:math>;
 </td></tr><tr><td class="ifail1">or</td><td class="ifail2-90">
  <m:math>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#SDCRUS"><m:mi mathcolor="#EE0000" mathvariant="bold">SDCRUS</m:mi></m:maction>
   <m:mo>&lt;</m:mo>
   <m:mrow>
    <m:mstyle displaystyle="true"><m:munder>
     <m:mo>&#8721;</m:mo>
     <m:mfenced separators="" open="{" close="}"><m:mi>i</m:mi><m:mo>,</m:mo><m:mrow>
       <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn>
	 <m:mi>i</m:mi>
	</m:mfenced></m:mrow>
       <m:mo>&lt;</m:mo>
       <m:mn>0</m:mn>
      </m:mrow></m:mfenced>
    </m:munder></m:mstyle><m:mspace width="0.25em"/>
    <m:mfenced open="{" close="}" separators="">
     <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn>
       <m:mi>i</m:mi>
      </m:mfenced></m:mrow>
     <m:mo>-</m:mo><m:mn>2</m:mn>
    </m:mfenced>
   </m:mrow>
  </m:math>;
 </td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#RATE"><m:mi mathcolor="#EE0000" mathvariant="bold">RATE</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0.0</m:mn></m:math>&#160;for some <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>&#160;with <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>2</m:mn></m:math>&#160;for some <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>&#160;or <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>&#160;for some <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>1</m:mn></m:math>&#160;or <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>&#160;for some <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow></m:math>&#160;for some <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow><m:mo>=</m:mo><m:mn>0</m:mn></m:math>, or <m:math><m:mfenced open="|" close="|" separators=""><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>k</m:mi></m:mfenced></m:mrow></m:mfenced><m:mo>&gt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>&#160;for a <m:math><m:mi>k</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:maction actiontype="link" dsi:type="simple" dsi:href="#NCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NCOMP</m:mi></m:maction></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90">
  <m:math>
   <m:mstyle displaystyle="true"><m:munderover>
    <m:mo>&#8721;</m:mo>
    <m:mrow>
     <m:mi>k</m:mi>
     <m:mo>=</m:mo><m:mn>1</m:mn>
    </m:mrow>
    <m:mi>n</m:mi>
   </m:munderover></m:mstyle>
   <m:mfenced open="|" close="|" separators="">
    <m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLCOMP"><m:mi mathcolor="#EE0000" mathvariant="bold">NLCOMP</m:mi></m:maction><m:mfenced separators="," open="(" close=")">
      <m:mi>k</m:mi>
     </m:mfenced></m:mrow>
   </m:mfenced>
   <m:mo>&#8800;</m:mo>
   <m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction>
  </m:math>;
 </td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><a class="arg" href="#LCOMP">LCOMP</a> does not represent a valid permutation of the integers in <m:math><m:mfenced separators="" open="[" close="]"><m:mn>1</m:mn><m:mo>,</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:mfenced></m:math>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90">one of the end points for a line <m:math><m:mi>i</m:mi></m:math>&#160;described by the user-supplied function (lines with <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>, for <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>) does not belong to the corresponding curve in <a class="arg" href="#FBND">FBND</a>;</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90">the intermediate points for the lines described as polygonal arcs (lines with <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#LINED"><m:mi mathcolor="#EE0000" mathvariant="bold">LINED</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mi>i</m:mi></m:mfenced></m:mrow><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>, for <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:maction actiontype="link" dsi:type="simple" dsi:href="#NLINES"><m:mi mathcolor="#EE0000" mathvariant="bold">NLINES</m:mi></m:maction></m:math>) are overlapping.</td></tr></table>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq2" id="IFeq2"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>2</m:mn></m:math></dt>
<dd>
<div class="paramtext">An error has occurred during the generation of the boundary mesh.  It appears that <a class="arg" href="#NEDMX">NEDMX</a> is not large enough, so you are advised to increase the value of <a class="arg" href="#NEDMX">NEDMX</a>.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq3" id="IFeq3"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>3</m:mn></m:math></dt>
<dd>
<div class="paramtext">An error has occurred during the generation of the boundary mesh.  It appears that <a class="arg" href="#NVMAX">NVMAX</a> is not large enough, so you are advised to increase the value of <a class="arg" href="#NVMAX">NVMAX</a>.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq4" id="IFeq4"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>4</m:mn></m:math></dt>
<dd>
<div class="paramtext">An error has occurred during the generation of the boundary mesh.  Check the definition of each line (the parameter <a class="arg" href="#LINED">LINED</a>) and each connected component of the boundary (the arguments <a class="arg" href="#NLCOMP">NLCOMP</a>, and <a class="arg" href="#LCOMP">LCOMP</a>, as well as the co-ordinates of the characteristic points.  Setting <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ITRACE"><m:mi mathcolor="#EE0000" mathvariant="bold">ITRACE</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>0</m:mn></m:math>&#160;may provide more details.</div>
</dd>
</dl><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">Not applicable.</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">The boundary mesh generation technique in this routine has a &#8216;tree&#8217; structure.  The boundary should be partitioned into geometrically simple segments (straight lines or curves) delimited by characteristic points.  Then, the lines should be assembled into connected components of the boundary domain.</div><div class="paramtext">Using this strategy, the inputs to that routine can be built up, following the requirements stated in <a class="sec" href="#parameters">Section 5</a>:
<ul class="listind"><li class="listind">the characteristic and the user-supplied intermediate points:
 <ul class="listind"><li class="listind"><a class="arg" href="#NLINES">NLINES</a>, <a class="arg" href="#SDCRUS">SDCRUS</a>, <a class="arg" href="#COORCH">COORCH</a> and <a class="arg" href="#CRUS">CRUS</a>;</li></ul></li><li class="listind">the characteristic lines:
 <ul class="listind"><li class="listind"><a class="arg" href="#LINED">LINED</a>, <a class="arg" href="#FBND">FBND</a>, <a class="arg" href="#RATE">RATE</a>;</li></ul></li><li class="listind">finally the assembly of lines into the connected components of the boundary:
 <ul class="listind"><li class="listind"><a class="arg" href="#NCOMP">NCOMP</a>, and</li><li class="listind"><a class="arg" href="#NLCOMP">NLCOMP</a>, <a class="arg" href="#LCOMP">LCOMP</a>.</li></ul></li></ul>
</div><div class="paramtext">The example below details the use of this strategy.</div><h2 class="standard"><a class="sec" name="example" id="example"/>9&#160;&#160;Example</h2>
<div class="paramtext">The NAG logo is taken as an example of a geometry with holes.  The boundary has been partitioned in <m:math><m:mn>40</m:mn></m:math>&#160;lines characteristic points; including <m:math><m:mn>4</m:mn></m:math>&#160;for the exterior boundary and <m:math><m:mn>36</m:mn></m:math>&#160;for the logo itself.  All line geometry specifications have been considered, see the description of <a class="arg" href="#LINED">LINED</a>, including <m:math><m:mn>4</m:mn></m:math>&#160;lines defined as polygonal arc, <m:math><m:mn>4</m:mn></m:math>&#160;defined by <a class="arg" href="#FBND">FBND</a> and all the others are straight lines.</div><h3 class="standard"><a class="sec" name="examtext" id="examtext"/>9.1&#160;&#160;Program Text</h3>
<p><a class="verbatimref" href="../../examples/source/d06bafe.f">Program Text (d06bafe.f)</a></p><h3 class="standard"><a class="sec" name="examdata" id="examdata"/>9.2&#160;&#160;Program Data</h3>
<p><a class="verbatimref" href="../../examples/data/d06bafe.d">Program&#160;Data (d06bafe.d)</a></p><h3 class="standard"><a class="sec" name="examresults" id="examresults"/>9.3&#160;&#160;Program Results</h3>
<p><a class="verbatimref" href="../../examples/baseresults/d06bafe.r">Program Results (d06bafe.r)</a></p><div class="figure"><a name="d06baf1-plot" id="d06baf1-plot"/><img src="../figures/d06baf1-plot.png" alt="Example Program Plot for d06baf1-plot"/></div><div class="figure"><a name="d06baf2-plot" id="d06baf2-plot"/><img src="../figures/d06baf2-plot.png" alt="Example Program Plot for d06baf2-plot"/></div><div class="figure"><a name="d06baf3-plot" id="d06baf3-plot"/><img src="../figures/d06baf3-plot.png" alt="Example Program Plot for d06baf3-plot"/></div>
<hr/><div><a class="rout" href="../../pdf/D06/d06baf.pdf">D06BAF (PDF version)</a></div><div><a class="chap" href="d06conts.xml">D06 Chapter Contents</a></div><div><a class="chapint" href="d06intro.xml">D06 Chapter Introduction</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. 2009</a></div></body></html>
