aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authordiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2002-11-20 13:37:17 +0000
committerdiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2002-11-20 13:37:17 +0000
commitc47d11d6df7140bf51bf171b9405aab1b8aea54b (patch)
tree07874de01f19139999d1f9c4fbbfcabab07ca849 /doc
parent61be49f6e259e075d57e51ec49f591887ccbae8a (diff)
Filled in the remaining sections in the documentation. Now users can make
suggestions to changes. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/EHFinder/trunk@70 2a26948c-0e4f-0410-aee8-f1d3e353619c
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation.tex243
-rw-r--r--doc/excision.eps610
-rw-r--r--doc/excision.fig513
-rw-r--r--doc/upwind.eps168
-rw-r--r--doc/upwind.fig30
5 files changed, 1525 insertions, 39 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
index 697e670..95c214a 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -81,7 +81,7 @@
\author{Original code and documentation by Peter Diener}
% The title of the document (not necessarily the name of the Thorn)
-\title{Thorn Guide for the {\bf EHFinder} Thorn}
+\title{Thorn Guide for the {\tt EHFinder} Thorn}
% the date your document was last changed, if your document is in CVS,
% please us:
@@ -120,16 +120,16 @@ by evolving a null surface backwards in time. The null surface is described at
each time step as the 0-level iso-surface of a 3D scalar function $f$. This
level set description of the surface allows, trivially, changes of the topology
of the surface so it is possible to follow the merger of two (or more) black
-holes into a final black hole.
+holes into a final black hole.
\end{abstract}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}
-This thorn attempts to locate the Event Horizon (EH) in an analytic or
+This thorn attempts to locate the Event Horizon (EH) in an analytic or
numerical spacetime by evolving a null surface backwards in time. This
-method depends on the fact that, except in cases where the coordinate are
+method depends on the fact that, except in cases where the coordinates are
adapted to outgoing null geodesics, an outgoing null surface started close
to the EH, when evolved forward in time, is diverging exponentially from the
EH. Reversing the time evolutions then means that an outgoing null surface
@@ -140,22 +140,22 @@ evolved according to
g^{tt}g^{ij}\partial_{i}f\partial_{j}f}}{g^{tt}}.
\label{AEIDevelopment_EHFinder_evolve}
\end{equation}
-For more details on the theory and implementation
-see~\cite{AEIDevelopment_EHFinder_Diener02}.
+For more details on the theory and implementation
+see~\cite{AEIDevelopment_EHFinder_Diener02}.
This thorn uses a level set description of the null surface, \ie the surface
-is the 0-level isosurface of a 3D scalar function, $f$, that is negative
-inside and positive outside the surface. With this choice of surface
+is the 0-level isosurface of a 3D scalar function, $f$, that is negative
+inside and positive outside the surface. With this choice of surface
description one level-set function can describe multiple surfaces at the
same time, simply by having several, disconnected regions with negative
values. The biggest advantage, however, is that any change of topology of
-the surface is handled naturally and simply by the level-set function
-changing sign. Therefore this EHFinder can follow the EH during the
+the surface is handled naturally and simply by the level-set function
+changing sign. Therefore this {\tt EHFinder} can follow the EH during the
merger of two (or more) black holes into one black hole.
To find the EH in a numerical spacetime several points have to be taken into
consideration. Since the null surface has to be evolved backwards in time, the
-EHFinder has to be seen as a pre-processing analysis thorn. Therefore it
+{\tt EHFinder} has to be seen as a pre-processing analysis thorn. Therefore it
is necessary to evolve the initial data forward in time while outputting
enough 3D data, that the full 4-metric can be recovered at each timestep.
The 3D data is then read back in, in reverse order, while the level-set
@@ -183,13 +183,13 @@ the surface develops a narrow neck just before a topology change. For
that reason, there is an option to detect when this is about to happen and
undo the re-parametrization.
-There is also another approximate way of performing the re-parametrization,
+There is also another approximate way of performing the re-parametrization,
however, even though it is faster, it is not recommended for use, since it
seems to cause some instabilities and may cause larger movements of the $f=0$
surface. This method is called {\tt approx}.
The two methods can be mixed, but it is not clear how well this works before
-some more experiments have been done.
+some more experiments have been done.
\section{The initial shape of the surface}
\label{AEIDevelopment_EHFinder_initial}
@@ -222,9 +222,92 @@ There are no translation or rotations implemented for the ovaloid of Cassini.
\section{Excision}
\label{AEIDevelopment_EHFinder_excise}
-
+Even though the level set function, $f$, in principle can be defined
+everywhere it is often advantageous to only evolve it in a certain region
+around the surface $f=0$. Since $f$ is re-parametrized regularly to become
+a distance function, $f$ itself can be used as a measure of the distance
+from a certain grid point to the surface $f=0$. The parameter
+{\tt ehfinder::shell\_width} specifies the size of the active region
+around $f=0$. However the interior and exterior excision is handled
+differently. The interior excision is most simply, since here all grid points
+with $f<-{\mbox{\tt ehfinder::shell\_width}}$ are marked as inactive. This
+should work in all cases when the excised region is everywhere concave, since
+then all points on the boundary of the excised region will have enough
+neighbouring active points to be able to calculate second order accurate one
+sided derivatives. If the interior excised region happens to have a convex
+region, this might fail. To avoid a similiar problem at the outer excised
+boundary, this boundary is shaped as a rectangular box. The box is chosen
+so that all points with $f<{\mbox{\tt ehfinder::shell\_width}}$ are in the
+active region. This is illustrated in
+Figure~\ref{AEIDevelopment_EHFinder_excisefig}, for the case
+\begin{figure}[ht]
+ \begin{center}
+ \includegraphics[width=8cm]{excision.eps}
+ \end{center}
+ \caption{Illustration of the excision regions used internally by
+ {\tt EHFinder}. The hashed regions are excised.}
+ \label{AEIDevelopment_EHFinder_excisefig}
+\end{figure}
+{\tt ehfinder::shell\_width = 4}, where the excised regions are hashed.
+
+Changes to the excision regions are only done after re-parametrization,
+since it is only at this time that $f$ is a distance function. The excision
+regions can move across the grid, following the surface $f=0$.
+
+At present there is no support for using the {\tt SpaceMask} excision
+mask, but this should be straightforward to implement and will be done
+soon.
\section{Upwinding}
\label{AEIDevelopment_EHFinder_upwind}
+All finite differences used in the evolution of the null surface are second
+order one sided differences. For that reason a {\tt ghost\_size} larger or
+equal to 2 should always be used. It is possible to choose between different
+upwinding schemes depending on whether the shift is non zero or not. This is
+done by setting the parameter {\tt ehfinder::upwind\_type} to either
+{\tt intrinsic} (for no shift) or {\tt shift} (for non zero shift).
+
+The {\tt intrinsic} scheme, looks at the values of $f$ itself, to determine
+the direction of the stencil. This is basically to be able to handle
+situations like the one illustrated in 1D in
+Figure~\ref{AEIDevelopment_EHFinder_upwindfig}.
+\begin{figure}[ht]
+ \begin{center}
+ \includegraphics[width=8cm]{upwind.eps}
+ \end{center}
+ \caption{An illustration of how to choose the upwinding stencil when $f$
+ is not differntiable everywhere}
+ \label{AEIDevelopment_EHFinder_upwindfig}
+\end{figure}
+If the stencil for calculating derivatives in the point labeled 1 is taken
+to consist of the points 1, 2 and 3', the non differentiablility of $f$ will
+cause problems. The algoithm detects this and instead uses the points 1, 2, 3
+as the stencil. This ensures that a non differentiable feature can be
+maintained in the evolution.
+
+When there is a shift present, it can happen that the direction chosen
+by the {\tt intrinsic} scheme is inconsistent with the shift direction,
+causing instabilities. Since re-parametrization is done, these
+instabilities are normally not allowed to develop fully, but they can
+still cause distortions of the surface $f=0$ and are therefore still
+damaging. For this reason it is possible to choose the upwinding direction
+based solely on the shift (since $f$ is evolved backwards in time, it is
+necessary to perform the upwinding in the opposite direction of the shift).
+
+It might happen that the upwinding direction based on the shift results
+the stencil to consist of the points 1, 2, 3' in
+Figure~\ref{AEIDevelopment_EHFinder_upwindfig}. This might be fixed
+by increasing the frequency of re-parametrizations or by excising a
+larger region inside the surface. However if these workarounds doesn't
+work, it might be necessary to implement a hybrid upwinding scheme using
+the shift, except at points with this problem.
+
+For the re-parametrization the default is to use the {\tt intrinsic}
+second order scheme (the re-parametrization doesn't depend on the shift,
+so {\tt shift} upwinding is not applicable. It is possible to use a
+first order {\tt intrinsic} scheme, but this is, in my experience, not
+accurate enough. A centered differencing scheme is also available, but
+is only there for testing purposes and should never be used. These
+alternative schemes will probably be removed in the future.
\section{The most important parameters}
Here the most important parameters are described.
@@ -235,29 +318,29 @@ Here the most important parameters are described.
default is {\tt normal} and should normally not be changed. This parameter
may be removed in the future.
\item {\tt ehfinder::eh\_metric\_type} \\
- The metric type can either be set to {\tt numerical} or {\tt analytic}. If
- it is set to {\tt numerical} the EHFinder will attempt to read in the
+ The metric type can either be set to {\tt numerical} or {\tt analytic}. If
+ it is set to {\tt numerical} the {\tt EHFinder} will attempt to read in the
metric from files in the directory specified by the {\tt io::recover\_dir}
parameter. At present all the timesteps has to be saved in the same file.
- Note that if the numerical data was produced with
+ Note that if the numerical data was produced with
{\tt admbase::metric\_type = "static conformal"} this parameter has to be
- specified again. In this case the EHFinder will attempt to also read in the
- conformal factor from a file.
+ specified again. In this case the {\tt EHFinder} will attempt to also read
+ in the conformal factor from a file.
If metric type is set to {\tt analytic} another thorn needs to set up the
metric. It is possible to only set the metric on the initial slice, but it
- is also possible to have a thorn (like thorn {\tt Exact}) set the metric at
+ is also possible to have a thorn (like thorn {\tt Exact}) set the metric at
{\tt CCTK\_PRESTEP} if the analytic metric is time dependent.
The default is at present {\tt analytic}. This should probably be changed.
\item {\tt ehfinder::eh\_lapse\_type} \\
- The same for the lapse.
+ The same for the lapse.
\item {\tt ehfinder::eh\_shift\_type} \\
- The same for the shift.
+ The same for the shift.
\item {\tt initial\_f} \\
- The initial shape of the null surface can currently be chosen from
- {\tt sphere}, {\tt ellipsoid} and {\tt cassini} as described in
+ The initial shape of the null surface can currently be chosen from
+ {\tt sphere}, {\tt ellipsoid} and {\tt cassini} as described in
section~\ref{AEIDevelopment_EHFinder_initial}. The default is {\tt sphere}.
\item {\tt initial\_rad} \\
- The radius of the initial sphere ($r_{0}$ in
+ The radius of the initial sphere ($r_{0}$ in
equation~\ref{AEIDevelopment_EHFinder_sphere}). The deafault is 1.
\item {\tt translate\_x} \\
How much to translate the initial surface in the $x$-direction ($x_{0}$ in
@@ -287,23 +370,23 @@ Here the most important parameters are described.
Rotation angle $\gamma$ for the ellipsoid around the $x$-axis. The default
is 0.
\item {\tt shell\_width} \\
- The width of the active evolution region. Grid points more than
+ The width of the active evolution region. Grid points more than
{\tt shell\_width} gridspacings away from the $f=0$ surface are marked
- as inactive and are not evolved as described in
+ as inactive and are not evolved as described in
section~\ref{AEIDevelopment_EHFinder_excise}. The default is $7$
gridspacings.
\item {\tt upwind\_type} \\
The type of upwinding to be used (either {\tt intrinsic} or {\tt shift}). See
- the detailed description of the upwinding types in
+ the detailed description of the upwinding types in
section~\ref{AEIDevelopment_EHFinder_upwind}. The default is {\tt intrinsic}.
\item {\tt reparam\_undo} \\
- Should the re-parametrization be undone just before pinch-off or not as
+ Should the re-parametrization be undone just before pinch-off or not as
described in section~\ref{AEIDevelopment_EHFinder_reparam}. The
default is {\tt "no"}.
\item {\tt re\_param\_method} \\
Choose the re-parametrization method. The choices are {\tt approx},
- {\tt pde} or {\tt mixed}. As described in
- section~\ref{AEIDevelopment_EHFinder_reparam} the recommended method is
+ {\tt pde} or {\tt mixed}. As described in
+ section~\ref{AEIDevelopment_EHFinder_reparam} the recommended method is
{\tt pde}. Only use {\tt approx} if you really know what you are doing. The
default is {\tt pde}.
\item {\tt re\_param\_int\_method} \\
@@ -317,7 +400,7 @@ Here the most important parameters are described.
before giving up. Unless you are working at high resolution the default
should be enough. The default is 800.
\item {\tt pde\_differences} \\
- Choose the type of finite differencing used in the {\tt pde}
+ Choose the type of finite differencing used in the {\tt pde}
re-parametrization. Don't ever use anything else than second order
uwinding ({\tt upwind2}). The other choices ({\tt centered} and {\tt upwind})
are there only for testing purposes and might be removed.
@@ -328,32 +411,114 @@ Here the most important parameters are described.
what works best. The default (too high) is 100.
\item {\tt reparametrize\_every\_approx} \\
How often to re-parametrize using the {\tt approx} re-parametrization.
- Again it depends on the problem. Can be used together with
+ Again it depends on the problem. Can be used together with
{\tt reparametrize\_every\_pde} if {\tt re\_param\_method} is set to
{\tt mixed}. The default is 10.
\item {\tt last\_iteration\_number} The last iteration number of the numerical
simulation that produced the metric data. Active when {\tt eh\_metric\_type}
is equal to {\tt numerical}. This is used in the code to figure out which
- data set iteration number to read in from file
+ data set iteration number to read in from file
({\tt last\_iteration\_number-cctk\_iteration}).
\end{itemize}
-EHFinder also extends the following parameter from {\tt admbase} in order
+{\tt EHFinder} also extends the following parameter from {\tt admbase} in order
to be able to read in initial data.
\begin{itemize}
\item {\tt admbase::initial\_data} is extended with {\tt "read from file"}.
\item {\tt admbase::initial\_lapse} is extended with {\tt "read from file"}.
\item {\tt admbase::initial\_shift} is extended with {\tt "read from file"}.
\end{itemize}
-\section{How to use with numerical data}
+\section{How to use {\tt EHFinder} with numerical data}
\label{AEIDevelopment_EHFinder_UseThorn}
-
+In this section I will try to describe in little more detail how {\tt EHFinder}
+can be used to find the EH in a numerical spacetime.
+
+\subsection{Outputting numerical data}
+The first thing to make sure, is that enough data is output during the
+numerical run, to be able to reconstruct the full 4-metric. The
+required output therefore consists of the {\tt ADMBase::metric},
+{\tt ADMBase::lapse} and {\tt ADMBase::shift}. However if the evolution was
+done with zero shift and/or lapse equal to one, it is not necessary to output
+these grid functions, as long as storage is turned on and they are set to the
+correct value initially when {\tt EHFinder} is run. If the evolution was done
+with a conformal factor then {\tt StaticConformal::psi} has to be output as
+well, since it is necessary in order to reconstruct the 4-metric. It is not
+necessary to output the derivatives of the conformal factor.
+
+At present it is necessary to output all timesteps into the same file (use
+{\tt IO::out\_timesteps\_per\_file = -1}, which is the default). In principle
+both {\tt FLEXIO} and {\tt HDF5} output should be supported, but only
+HDF5 output has been tested. Since {\tt EHFinder} can be run on a lot less
+processors compared to the spacetime evolution, it is often advantageous to
+either do unchuncked output or to recombine the output files, since it is then
+possible to read the data onto a smaller number of processors (use
+{\tt IO::out\_unchunked = "yes"}). If the numerical
+run is larger than the EH containing region (hopefully that is the case;
+otherwise the boundaries are definitely to close in), it is possible to
+use hyperslabbing to just output the EH containing region (see for example
+{\tt CactusPUGHIO/IOHDF5} for details on this). If hyperslabbing is used it
+is definitely necessary to do the output unchunked. An example parameter
+file can be seen in the {\tt par/Misner\_2.2\_80\_3D.par}.
+
+In principle {\tt EHFinder} should also work for downsampled (in both space
+and time) data, but no experiments have been done so far to estimate the loss
+of accuracy (I have always used the full resolution and done output at
+every timestep).
+
+If hyperslabbing and/or downsampling is used, it is the users responsibility
+(by specifying the right parameters in the parameter file) to ensure that
+{\tt EHFinder} is run with the correct grid spacing and time step.
+
+\subsection{Tips for parameter choices}
+
+{\tt EHFinder} is still under development and testing and can as yet {\em not}
+be used as a black box. But still I can give some guidelines and advice on
+how to proceed.
+
+The first concern is to setup the initial guess for the surface. Ideally one
+would like to make at least two runs with {\tt EHFinder}. One run with an
+initial guess for the surface completely inside the EH and one run with an
+initial guess completely outside the EH. The easiest way to get an initial
+surface inside the EH, is to set up the initial guess to be completely inside
+the
+apparent horizon (AH). To get an initial guess that is outside of the EH
+is not as easy. One way is to choose a surface, that starts to contract
+everywhere when evolved according to
+equation~(\ref{AEIDevelopment_EHFinder_evolve}. This of course means to do
+it by trial and error. Set up some initial guess evolve it for a little while,
+look at 3D output to determine if the surface is contracting everywhere and
+change the initial surface if necessary.
+
+Then comes the question of how often to do the re-parametrization and how
+much to excise. These parameters depend on the numerical data. In principle,
+since the re-parametrization can move the surface, one wants to do it as
+rarely as possible. On the other hand, re-parametrization is necessary
+in order to keep the evolution nicely controlled (by avoiding large gradients),
+so a compromise has to be found. This might require some experimentation.
+Because movements of the surface during re-parametrization, usually only
+occurs close to moments of topology change, it might be necessary to evolve
+all the way beyond the change of topology and look at 3D output to see if
+any problems occured. How often to do the re-parametrization also depends
+of the width of the active region. If the active region around the surface
+is narrow, it might be necessary to re-parametrize more often, since in this
+case the boundaries of the active region is closer to the surface. At the
+boundaries the stencil direction is dictated by the geometry and not
+$f$ itself or the shift, which might cause instabilities if it is not
+re-parametrized. Good initial guesses for
+{\tt ehfinder::reparametrize\_every\_pde} seems to in the range 5--10, however
+I have seen cases where less were required and others where more were
+possible. For {\tt ehfinder::shell\_width} I normally use at least 7.
+
+This documentation will be updated, as input comes in from users.
+
+Happy event horizon finding.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{thebibliography}{9}
\bibitem{AEIDevelopment_EHFinder_Diener02}
- {P. Diener, {\em AEI preprint}, (2002),
- 1--16. {\tt http://www.nowhere.com/}}
+ {P. Diener, {\em In preparation}, (2002)}
+% ,
+% 1--16. {\tt http://www.nowhere.com/}}
\end{thebibliography}
% Do not delete next line
diff --git a/doc/excision.eps b/doc/excision.eps
new file mode 100644
index 0000000..0c1ff2b
--- /dev/null
+++ b/doc/excision.eps
@@ -0,0 +1,610 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: excision.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Thu Nov 14 14:55:01 2002
+%%For: diener@nbdell11 (Peter Diener)
+%%BoundingBox: 0 0 457 457
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 457 moveto 0 0 lineto 457 0 lineto 457 457 lineto closepath clip newpath
+-27.0 483.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 1350 1575 m
+ 2475 450 l gs col0 s gr
+% Polyline
+n 1575 1575 m
+ 2700 450 l gs col0 s gr
+% Polyline
+n 1800 1575 m
+ 2925 450 l gs col0 s gr
+% Polyline
+n 2025 1575 m
+ 3150 450 l gs col0 s gr
+% Polyline
+n 2250 1575 m
+ 3375 450 l gs col0 s gr
+% Polyline
+n 2475 1575 m
+ 3600 450 l gs col0 s gr
+% Polyline
+n 2700 1575 m
+ 3825 450 l gs col0 s gr
+% Polyline
+n 2925 1575 m
+ 4050 450 l gs col0 s gr
+% Polyline
+n 3150 1575 m
+ 4275 450 l gs col0 s gr
+% Polyline
+n 3375 1575 m
+ 4500 450 l gs col0 s gr
+% Polyline
+n 3600 1575 m
+ 4725 450 l gs col0 s gr
+% Polyline
+n 3825 1575 m
+ 4950 450 l gs col0 s gr
+% Polyline
+n 4050 1575 m
+ 5175 450 l gs col0 s gr
+% Polyline
+n 4275 1575 m
+ 5400 450 l gs col0 s gr
+% Polyline
+n 4500 1575 m
+ 5625 450 l gs col0 s gr
+% Polyline
+n 4725 1575 m
+ 5850 450 l gs col0 s gr
+% Polyline
+n 4950 1575 m
+ 6075 450 l gs col0 s gr
+% Polyline
+n 5175 1575 m
+ 6300 450 l gs col0 s gr
+% Polyline
+n 5400 1575 m
+ 6525 450 l gs col0 s gr
+% Polyline
+n 5625 1575 m
+ 6750 450 l gs col0 s gr
+% Polyline
+n 5850 1575 m
+ 6975 450 l gs col0 s gr
+% Polyline
+n 6075 1575 m
+ 7200 450 l gs col0 s gr
+% Polyline
+n 6300 1575 m
+ 7425 450 l gs col0 s gr
+% Polyline
+n 6525 1575 m
+ 7650 450 l gs col0 s gr
+% Polyline
+n 450 7650 m
+ 1575 6525 l gs col0 s gr
+% Polyline
+n 675 7650 m
+ 1800 6525 l gs col0 s gr
+% Polyline
+n 900 7650 m
+ 2025 6525 l gs col0 s gr
+% Polyline
+n 1125 7650 m
+ 2250 6525 l gs col0 s gr
+% Polyline
+n 1350 7650 m
+ 2475 6525 l gs col0 s gr
+% Polyline
+n 1575 7650 m
+ 2700 6525 l gs col0 s gr
+% Polyline
+n 1800 7650 m
+ 2925 6525 l gs col0 s gr
+% Polyline
+n 2025 7650 m
+ 3150 6525 l gs col0 s gr
+% Polyline
+n 2250 7650 m
+ 3375 6525 l gs col0 s gr
+% Polyline
+n 2475 7650 m
+ 3600 6525 l gs col0 s gr
+% Polyline
+n 2700 7650 m
+ 3825 6525 l gs col0 s gr
+% Polyline
+n 2925 7650 m
+ 4050 6525 l gs col0 s gr
+% Polyline
+n 3150 7650 m
+ 4275 6525 l gs col0 s gr
+% Polyline
+n 3375 7650 m
+ 4500 6525 l gs col0 s gr
+% Polyline
+n 3600 7650 m
+ 4725 6525 l gs col0 s gr
+% Polyline
+n 3825 7650 m
+ 4950 6525 l gs col0 s gr
+% Polyline
+n 4050 7650 m
+ 5175 6525 l gs col0 s gr
+% Polyline
+n 4275 7650 m
+ 5400 6525 l gs col0 s gr
+% Polyline
+n 4500 7650 m
+ 5625 6525 l gs col0 s gr
+% Polyline
+n 4725 7650 m
+ 5850 6525 l gs col0 s gr
+% Polyline
+n 4950 7650 m
+ 6075 6525 l gs col0 s gr
+% Polyline
+n 5175 7650 m
+ 6300 6525 l gs col0 s gr
+% Polyline
+n 5400 7650 m
+ 6525 6525 l gs col0 s gr
+% Polyline
+n 5625 7650 m
+ 6750 6525 l gs col0 s gr
+% Polyline
+n 450 2250 m
+ 1125 1575 l gs col0 s gr
+% Polyline
+n 450 2475 m
+ 1125 1800 l gs col0 s gr
+% Polyline
+n 450 2700 m
+ 1125 2025 l gs col0 s gr
+% Polyline
+n 450 2925 m
+ 1125 2250 l gs col0 s gr
+% Polyline
+n 450 3150 m
+ 1125 2475 l gs col0 s gr
+% Polyline
+n 450 3375 m
+ 1125 2700 l gs col0 s gr
+% Polyline
+n 450 3600 m
+ 1125 2925 l gs col0 s gr
+% Polyline
+n 450 3825 m
+ 1125 3150 l gs col0 s gr
+% Polyline
+n 450 4050 m
+ 1125 3375 l gs col0 s gr
+% Polyline
+n 450 4275 m
+ 1125 3600 l gs col0 s gr
+% Polyline
+n 450 4500 m
+ 1125 3825 l gs col0 s gr
+% Polyline
+n 450 4725 m
+ 1125 4050 l gs col0 s gr
+% Polyline
+n 450 4950 m
+ 1125 4275 l gs col0 s gr
+% Polyline
+n 450 5175 m
+ 1125 4500 l gs col0 s gr
+% Polyline
+n 450 5400 m
+ 1125 4725 l gs col0 s gr
+% Polyline
+n 450 5625 m
+ 1125 4950 l gs col0 s gr
+% Polyline
+n 450 5850 m
+ 1125 5175 l gs col0 s gr
+% Polyline
+n 450 6075 m
+ 1125 5400 l gs col0 s gr
+% Polyline
+n 450 6300 m
+ 1125 5625 l gs col0 s gr
+% Polyline
+n 450 6525 m
+ 1125 5850 l gs col0 s gr
+% Polyline
+n 450 6750 m
+ 1125 6075 l gs col0 s gr
+% Polyline
+n 450 6975 m
+ 1125 6300 l gs col0 s gr
+% Polyline
+n 450 7200 m
+ 1125 6525 l gs col0 s gr
+% Polyline
+n 450 7425 m
+ 1125 6750 l gs col0 s gr
+% Polyline
+n 6975 1350 m
+ 7650 675 l gs col0 s gr
+% Polyline
+n 6975 1575 m
+ 7650 900 l gs col0 s gr
+% Polyline
+n 6975 1800 m
+ 7650 1125 l gs col0 s gr
+% Polyline
+n 6975 2025 m
+ 7650 1350 l gs col0 s gr
+% Polyline
+n 6975 2250 m
+ 7650 1575 l gs col0 s gr
+% Polyline
+n 6975 2475 m
+ 7650 1800 l gs col0 s gr
+% Polyline
+n 6975 2700 m
+ 7650 2025 l gs col0 s gr
+% Polyline
+n 6975 2925 m
+ 7650 2250 l gs col0 s gr
+% Polyline
+n 6975 3150 m
+ 7650 2475 l gs col0 s gr
+% Polyline
+n 6975 3375 m
+ 7650 2700 l gs col0 s gr
+% Polyline
+n 6975 3600 m
+ 7650 2925 l gs col0 s gr
+% Polyline
+n 6975 3825 m
+ 7650 3150 l gs col0 s gr
+% Polyline
+n 6975 4050 m
+ 7650 3375 l gs col0 s gr
+% Polyline
+n 6975 4275 m
+ 7650 3600 l gs col0 s gr
+% Polyline
+n 6975 4500 m
+ 7650 3825 l gs col0 s gr
+% Polyline
+n 6975 4725 m
+ 7650 4050 l gs col0 s gr
+% Polyline
+n 6975 4950 m
+ 7650 4275 l gs col0 s gr
+% Polyline
+n 6975 5175 m
+ 7650 4500 l gs col0 s gr
+% Polyline
+n 6975 5400 m
+ 7650 4725 l gs col0 s gr
+% Polyline
+n 6975 5625 m
+ 7650 4950 l gs col0 s gr
+% Polyline
+n 6975 5850 m
+ 7650 5175 l gs col0 s gr
+% Polyline
+n 6975 6075 m
+ 7650 5400 l gs col0 s gr
+% Polyline
+n 6975 6300 m
+ 7650 5625 l gs col0 s gr
+% Polyline
+n 6975 6525 m
+ 7650 5850 l gs col0 s gr
+15.000 slw
+% Ellipse
+n 4050 4050 2025 1575 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+7.500 slw
+n 900 450 m 1350 450 l 1350 7650 l 900 7650 l
+ cp gs col0 s gr
+% Polyline
+n 1800 450 m 2250 450 l 2250 7650 l 1800 7650 l
+ cp gs col0 s gr
+% Polyline
+n 3600 450 m 4050 450 l 4050 7650 l 3600 7650 l
+ cp gs col0 s gr
+% Polyline
+n 4500 450 m 4950 450 l 4950 7650 l 4500 7650 l
+ cp gs col0 s gr
+% Polyline
+n 5400 450 m 5850 450 l 5850 7650 l 5400 7650 l
+ cp gs col0 s gr
+% Polyline
+n 450 900 m 7650 900 l 7650 1350 l 450 1350 l
+ cp gs col0 s gr
+% Polyline
+n 450 1800 m 7650 1800 l 7650 2250 l 450 2250 l
+ cp gs col0 s gr
+% Polyline
+n 450 2700 m 7650 2700 l 7650 3150 l 450 3150 l
+ cp gs col0 s gr
+% Polyline
+n 450 3600 m 7650 3600 l 7650 4050 l 450 4050 l
+ cp gs col0 s gr
+% Polyline
+n 450 4500 m 7650 4500 l 7650 4950 l 450 4950 l
+ cp gs col0 s gr
+% Polyline
+n 450 5400 m 7650 5400 l 7650 5850 l 450 5850 l
+ cp gs col0 s gr
+% Polyline
+n 450 6300 m 7650 6300 l 7650 6750 l 450 6750 l
+ cp gs col0 s gr
+% Polyline
+n 450 7200 m
+ 7650 7200 l gs col0 s gr
+% Polyline
+n 7200 450 m
+ 7200 7650 l gs col0 s gr
+% Polyline
+n 675 450 m 1125 450 l 1125 7650 l 675 7650 l
+ cp gs col0 s gr
+% Polyline
+n 1575 450 m 2025 450 l 2025 7650 l 1575 7650 l
+ cp gs col0 s gr
+% Polyline
+n 3375 450 m 3825 450 l 3825 7650 l 3375 7650 l
+ cp gs col0 s gr
+% Polyline
+n 4275 450 m 4725 450 l 4725 7650 l 4275 7650 l
+ cp gs col0 s gr
+% Polyline
+n 5175 450 m 5625 450 l 5625 7650 l 5175 7650 l
+ cp gs col0 s gr
+% Polyline
+n 6075 450 m 6525 450 l 6525 7650 l 6075 7650 l
+ cp gs col0 s gr
+% Polyline
+n 6975 450 m 7425 450 l 7425 7650 l 6975 7650 l
+ cp gs col0 s gr
+% Polyline
+n 450 675 m 7650 675 l 7650 1125 l 450 1125 l
+ cp gs col0 s gr
+% Polyline
+n 450 3375 m 7650 3375 l 7650 3825 l 450 3825 l
+ cp gs col0 s gr
+% Polyline
+n 450 4275 m 7650 4275 l 7650 4725 l 450 4725 l
+ cp gs col0 s gr
+% Polyline
+n 450 5175 m 7650 5175 l 7650 5625 l 450 5625 l
+ cp gs col0 s gr
+% Polyline
+n 450 6075 m 7650 6075 l 7650 6525 l 450 6525 l
+ cp gs col0 s gr
+% Polyline
+n 450 6975 m 7650 6975 l 7650 7425 l 450 7425 l
+ cp gs col0 s gr
+% Polyline
+15.000 slw
+n 2925 4050 m 2925 3825 l 2925 3600 l 3150 3600 l 3150 3375 l 3375 3375 l
+ 4950 3375 l 4950 3600 l 5175 3600 l 5175 4050 l 5175 4500 l
+ 4950 4500 l 4950 4725 l 3150 4725 l 3150 4500 l 2925 4500 l
+ 2925 4275 l
+ 2925 4025 l gs col0 s gr
+% Polyline
+7.500 slw
+n 450 675 m
+ 675 450 l gs col0 s gr
+% Polyline
+n 450 900 m
+ 900 450 l gs col0 s gr
+% Polyline
+n 450 1125 m
+ 1125 450 l gs col0 s gr
+% Polyline
+n 450 1350 m
+ 1350 450 l gs col0 s gr
+% Polyline
+n 450 1800 m
+ 1800 450 l gs col0 s gr
+% Polyline
+n 450 1575 m
+ 1575 450 l gs col0 s gr
+% Polyline
+n 450 2025 m
+ 2025 450 l gs col0 s gr
+% Polyline
+n 6300 450 m 6750 450 l 6750 7650 l 6300 7650 l
+ cp gs col0 s gr
+% Polyline
+n 450 2250 m
+ 2250 450 l gs col0 s gr
+% Polyline
+15.000 slw
+n 450 450 m 7650 450 l 7650 7650 l 450 7650 l
+ cp gs col0 s gr
+% Polyline
+7.500 slw
+n 2475 450 m 2925 450 l 2925 7650 l 2475 7650 l
+ cp gs col0 s gr
+% Polyline
+n 2700 450 m 3150 450 l 3150 7650 l 2700 7650 l
+ cp gs col0 s gr
+% Polyline
+n 450 1575 m 7650 1575 l 7650 2025 l 450 2025 l
+ cp gs col0 s gr
+% Polyline
+15.000 slw
+n 1125 1575 m 6975 1575 l 6975 6525 l 1125 6525 l
+ cp gs col0 s gr
+% Polyline
+7.500 slw
+n 6750 1575 m
+ 6975 1350 l gs col0 s gr
+% Polyline
+n 1125 6750 m
+ 1350 6525 l gs col0 s gr
+% Polyline
+n 5850 7650 m
+ 6975 6525 l gs col0 s gr
+% Polyline
+n 6075 7650 m
+ 7650 6075 l gs col0 s gr
+% Polyline
+n 6300 7650 m
+ 7650 6300 l gs col0 s gr
+% Polyline
+n 6525 7650 m
+ 7650 6525 l gs col0 s gr
+% Polyline
+n 6750 7650 m
+ 7650 6750 l gs col0 s gr
+% Polyline
+n 6975 7650 m
+ 7650 6975 l gs col0 s gr
+% Polyline
+n 7200 7650 m
+ 7650 7200 l gs col0 s gr
+% Polyline
+n 7425 7650 m
+ 7650 7425 l gs col0 s gr
+% Polyline
+n 2925 4275 m
+ 3375 4725 l gs col0 s gr
+% Polyline
+n 2925 4050 m
+ 3600 4725 l gs col0 s gr
+% Polyline
+n 2925 3825 m
+ 3825 4725 l gs col0 s gr
+% Polyline
+n 2925 3600 m
+ 4050 4725 l gs col0 s gr
+% Polyline
+n 3150 3600 m
+ 4275 4725 l gs col0 s gr
+% Polyline
+n 3150 3375 m
+ 4500 4725 l gs col0 s gr
+% Polyline
+n 3375 3375 m
+ 4725 4725 l gs col0 s gr
+% Polyline
+n 3600 3375 m
+ 4950 4725 l gs col0 s gr
+% Polyline
+n 3825 3375 m
+ 4950 4500 l gs col0 s gr
+% Polyline
+n 4050 3375 m
+ 5175 4500 l gs col0 s gr
+% Polyline
+n 4275 3375 m
+ 5175 4275 l gs col0 s gr
+% Polyline
+n 4500 3375 m
+ 5175 4050 l gs col0 s gr
+% Polyline
+n 5175 3825 m
+ 4725 3375 l gs col0 s gr
+% Polyline
+n 450 2475 m 7650 2475 l 7650 2925 l 450 2925 l
+ cp gs col0 s gr
+/Times-Roman ff 480.00 scf sf
+1935 2835 m
+gs 1 -1 sc (f=0) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/excision.fig b/doc/excision.fig
new file mode 100644
index 0000000..166e671
--- /dev/null
+++ b/doc/excision.fig
@@ -0,0 +1,513 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 1350 450 7650 1575
+6 1350 450 4050 1575
+6 1350 450 3150 1575
+6 1350 450 2700 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1350 1575 2475 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1575 1575 2700 450
+-6
+6 1800 450 3150 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1800 1575 2925 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2025 1575 3150 450
+-6
+-6
+6 2250 450 4050 1575
+6 2250 450 3600 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2250 1575 3375 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2475 1575 3600 450
+-6
+6 2700 450 4050 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1575 3825 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 1575 4050 450
+-6
+-6
+-6
+6 3150 450 5850 1575
+6 3150 450 4950 1575
+6 3150 450 4500 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3150 1575 4275 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3375 1575 4500 450
+-6
+6 3600 450 4950 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3600 1575 4725 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3825 1575 4950 450
+-6
+-6
+6 4050 450 5850 1575
+6 4050 450 5400 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4050 1575 5175 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4275 1575 5400 450
+-6
+6 4500 450 5850 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4500 1575 5625 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 1575 5850 450
+-6
+-6
+-6
+6 4950 450 7650 1575
+6 4950 450 6750 1575
+6 4950 450 6300 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4950 1575 6075 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5175 1575 6300 450
+-6
+6 5400 450 6750 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5400 1575 6525 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5625 1575 6750 450
+-6
+-6
+6 5850 450 7650 1575
+6 5850 450 7200 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5850 1575 6975 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6075 1575 7200 450
+-6
+6 6300 450 7650 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6300 1575 7425 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6525 1575 7650 450
+-6
+-6
+-6
+-6
+6 450 6525 6750 7650
+6 450 6525 3150 7650
+6 450 6525 2250 7650
+6 450 6525 1800 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 7650 1575 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 675 7650 1800 6525
+-6
+6 900 6525 2250 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 900 7650 2025 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 7650 2250 6525
+-6
+-6
+6 1350 6525 3150 7650
+6 1350 6525 2700 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1350 7650 2475 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1575 7650 2700 6525
+-6
+6 1800 6525 3150 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1800 7650 2925 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2025 7650 3150 6525
+-6
+-6
+-6
+6 2250 6525 4950 7650
+6 2250 6525 4050 7650
+6 2250 6525 3600 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2250 7650 3375 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2475 7650 3600 6525
+-6
+6 2700 6525 4050 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2700 7650 3825 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 7650 4050 6525
+-6
+-6
+6 3150 6525 4950 7650
+6 3150 6525 4500 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3150 7650 4275 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3375 7650 4500 6525
+-6
+6 3600 6525 4950 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3600 7650 4725 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3825 7650 4950 6525
+-6
+-6
+-6
+6 4050 6525 6750 7650
+6 4050 6525 5850 7650
+6 4050 6525 5400 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4050 7650 5175 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4275 7650 5400 6525
+-6
+6 4500 6525 5850 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4500 7650 5625 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 7650 5850 6525
+-6
+-6
+6 4950 6525 6750 7650
+6 4950 6525 6300 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4950 7650 6075 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5175 7650 6300 6525
+-6
+6 5400 6525 6750 7650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5400 7650 6525 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5625 7650 6750 6525
+-6
+-6
+-6
+-6
+6 450 1575 1125 7425
+6 450 1575 1125 3825
+6 450 1575 1125 2925
+6 450 1575 1125 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2250 1125 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2475 1125 1800
+-6
+6 450 2025 1125 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2700 1125 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2925 1125 2250
+-6
+-6
+6 450 2475 1125 3825
+6 450 2475 1125 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 3150 1125 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 3375 1125 2700
+-6
+6 450 2925 1125 3825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 3600 1125 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 3825 1125 3150
+-6
+-6
+-6
+6 450 3375 1125 5625
+6 450 3375 1125 4725
+6 450 3375 1125 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 4050 1125 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 4275 1125 3600
+-6
+6 450 3825 1125 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 4500 1125 3825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 4725 1125 4050
+-6
+-6
+6 450 4275 1125 5625
+6 450 4275 1125 5175
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 4950 1125 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 5175 1125 4500
+-6
+6 450 4725 1125 5625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 5400 1125 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 5625 1125 4950
+-6
+-6
+-6
+6 450 5175 1125 7425
+6 450 5175 1125 6525
+6 450 5175 1125 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 5850 1125 5175
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 6075 1125 5400
+-6
+6 450 5625 1125 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 6300 1125 5625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 6525 1125 5850
+-6
+-6
+6 450 6075 1125 7425
+6 450 6075 1125 6975
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 6750 1125 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 6975 1125 6300
+-6
+6 450 6525 1125 7425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 7200 1125 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 7425 1125 6750
+-6
+-6
+-6
+-6
+6 6975 675 7650 6525
+6 6975 675 7650 2925
+6 6975 675 7650 2025
+6 6975 675 7650 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 1350 7650 675
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 1575 7650 900
+-6
+6 6975 1125 7650 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 1800 7650 1125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 2025 7650 1350
+-6
+-6
+6 6975 1575 7650 2925
+6 6975 1575 7650 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 2250 7650 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 2475 7650 1800
+-6
+6 6975 2025 7650 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 2700 7650 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 2925 7650 2250
+-6
+-6
+-6
+6 6975 2475 7650 4725
+6 6975 2475 7650 3825
+6 6975 2475 7650 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 3150 7650 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 3375 7650 2700
+-6
+6 6975 2925 7650 3825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 3600 7650 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 3825 7650 3150
+-6
+-6
+6 6975 3375 7650 4725
+6 6975 3375 7650 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 4050 7650 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 4275 7650 3600
+-6
+6 6975 3825 7650 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 4500 7650 3825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 4725 7650 4050
+-6
+-6
+-6
+6 6975 4275 7650 6525
+6 6975 4275 7650 5625
+6 6975 4275 7650 5175
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 4950 7650 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 5175 7650 4500
+-6
+6 6975 4725 7650 5625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 5400 7650 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 5625 7650 4950
+-6
+-6
+6 6975 5175 7650 6525
+6 6975 5175 7650 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 5850 7650 5175
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 6075 7650 5400
+-6
+6 6975 5625 7650 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 6300 7650 5625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 6525 7650 5850
+-6
+-6
+-6
+-6
+1 1 0 2 0 7 50 0 -1 0.000 1 0.0000 4050 4050 2025 1575 4050 4050 6075 4050
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 900 450 1350 450 1350 7650 900 7650 900 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 1800 450 2250 450 2250 7650 1800 7650 1800 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 3600 450 4050 450 4050 7650 3600 7650 3600 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 4500 450 4950 450 4950 7650 4500 7650 4500 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 5400 450 5850 450 5850 7650 5400 7650 5400 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 900 7650 900 7650 1350 450 1350 450 900
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 1800 7650 1800 7650 2250 450 2250 450 1800
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 2700 7650 2700 7650 3150 450 3150 450 2700
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 3600 7650 3600 7650 4050 450 4050 450 3600
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 4500 7650 4500 7650 4950 450 4950 450 4500
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 5400 7650 5400 7650 5850 450 5850 450 5400
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 6300 7650 6300 7650 6750 450 6750 450 6300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 7200 7650 7200
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7200 450 7200 7650
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 675 450 1125 450 1125 7650 675 7650 675 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 1575 450 2025 450 2025 7650 1575 7650 1575 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 3375 450 3825 450 3825 7650 3375 7650 3375 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 4275 450 4725 450 4725 7650 4275 7650 4275 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 5175 450 5625 450 5625 7650 5175 7650 5175 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 6075 450 6525 450 6525 7650 6075 7650 6075 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 6975 450 7425 450 7425 7650 6975 7650 6975 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 675 7650 675 7650 1125 450 1125 450 675
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 3375 7650 3375 7650 3825 450 3825 450 3375
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 4275 7650 4275 7650 4725 450 4725 450 4275
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 5175 7650 5175 7650 5625 450 5625 450 5175
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 6075 7650 6075 7650 6525 450 6525 450 6075
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 6975 7650 6975 7650 7425 450 7425 450 6975
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 18
+ 2925 4050 2925 3825 2925 3600 3150 3600 3150 3375 3375 3375
+ 4950 3375 4950 3600 5175 3600 5175 4050 5175 4500 4950 4500
+ 4950 4725 3150 4725 3150 4500 2925 4500 2925 4275 2925 4025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 675 675 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 900 900 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 1125 1125 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 1350 1350 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 1800 1800 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 1575 1575 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2025 2025 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 6300 450 6750 450 6750 7650 6300 7650 6300 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 450 2250 2250 450
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 450 7650 450 7650 7650 450 7650 450 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 2475 450 2925 450 2925 7650 2475 7650 2475 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 2700 450 3150 450 3150 7650 2700 7650 2700 450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 1575 7650 1575 7650 2025 450 2025 450 1575
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 1125 1575 6975 1575 6975 6525 1125 6525 1125 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6750 1575 6975 1350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 6750 1350 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5850 7650 6975 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6075 7650 7650 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6300 7650 7650 6300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6525 7650 7650 6525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6750 7650 7650 6750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 6975 7650 7650 6975
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7200 7650 7650 7200
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7425 7650 7650 7425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 4275 3375 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 4050 3600 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 3825 3825 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2925 3600 4050 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3150 3600 4275 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3150 3375 4500 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3375 3375 4725 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3600 3375 4950 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3825 3375 4950 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4050 3375 5175 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4275 3375 5175 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4500 3375 5175 4050
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5175 3825 4725 3375
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 450 2475 7650 2475 7650 2925 450 2925 450 2475
+4 0 0 50 0 0 32 0.0000 4 315 675 1935 2835 f=0\001
diff --git a/doc/upwind.eps b/doc/upwind.eps
new file mode 100644
index 0000000..dcc0d2d
--- /dev/null
+++ b/doc/upwind.eps
@@ -0,0 +1,168 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: upwind.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Thu Nov 14 15:20:16 2002
+%%For: diener@nbdell11 (Peter Diener)
+%%BoundingBox: 0 0 460 457
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 457 moveto 0 0 lineto 460 0 lineto 460 457 lineto closepath clip newpath
+-27.0 483.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 4500 5400 90 90 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5400 4500 90 90 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3600 5400 90 90 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6300 3600 90 90 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Polyline
+15.000 slw
+gs clippath
+7665 4110 m 7665 3990 l 7310 3990 l 7610 4050 l 7310 4110 l cp
+eoclip
+n 450 4050 m
+ 7650 4050 l gs col0 s gr gr
+
+% arrowhead
+n 7310 4110 m 7610 4050 l 7310 3990 l 7370 4050 l 7310 4110 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+4110 435 m 3990 435 l 3990 790 l 4050 490 l 4110 790 l cp
+eoclip
+n 4050 7650 m
+ 4050 450 l gs col0 s gr gr
+
+% arrowhead
+n 4110 790 m 4050 490 l 3990 790 l 4050 730 l 4110 790 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+7.500 slw
+n 4050 5850 m
+ 7650 2250 l gs col0 s gr
+% Polyline
+n 4050 5850 m
+ 450 2250 l gs col0 s gr
+/Times-Roman ff 480.00 scf sf
+7470 4455 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+3690 720 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+6435 3825 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+5535 4725 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+4590 5625 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+3105 5670 m
+gs 1 -1 sc (3') col0 sh gr
+/Times-Roman ff 480.00 scf sf
+7200 2430 m
+gs 1 -1 sc (f) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/upwind.fig b/doc/upwind.fig
new file mode 100644
index 0000000..63a476b
--- /dev/null
+++ b/doc/upwind.fig
@@ -0,0 +1,30 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 4500 5400 90 90 4500 5400 4590 5400
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5400 4500 90 90 5400 4500 5490 4500
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 3600 5400 90 90 3600 5400 3690 5400
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6300 3600 90 90 6300 3600 6390 3600
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 450 4050 7650 4050
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 4050 7650 4050 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4050 5850 7650 2250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4050 5850 450 2250
+4 0 0 50 0 0 32 0.0000 4 210 240 7470 4455 x\001
+4 0 0 50 0 0 32 0.0000 4 315 240 3690 720 y\001
+4 0 0 50 0 0 32 0.0000 4 315 240 6435 3825 3\001
+4 0 0 50 0 0 32 0.0000 4 315 240 5535 4725 2\001
+4 0 0 50 0 0 32 0.0000 4 315 240 4590 5625 1\001
+4 0 0 50 0 0 32 0.0000 4 315 330 3105 5670 3'\001
+4 0 0 50 0 0 32 0.0000 4 315 165 7200 2430 f\001