freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pooma-dev] Re: [PATCH] Correct some docs


From: Jeffrey D. Oldham
Subject: Re: [pooma-dev] Re: [PATCH] Correct some docs
Date: Fri, 20 Aug 2004 12:37:52 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5

Richard Guenther wrote:

On Thu, 19 Aug 2004, Jeffrey D. Oldham wrote:

Richard Guenther wrote:

This patch corrects hyperrefs of the html documents inside docs/ and
does some minor improvements (just as I came along).

Ok?

Richard.


2004Aug19  Richard Guenther <address@hidden>

   * docs/introduction.html: fix references to POOMA homepage
   and mailinglist.
   docs/legal.html: likewise.
   docs/reading.html: remove defunct links.
   docs/tut-02.html: minor corrections.
   docs/tut-04.html: likewise.



Yes, please commit this good improvements.  After you commit these
changes, we should probably use the W3C link checker and HTML validity
checker.

Hum.  The documents seem to be not in a good shape wrt conformance.  But I
can easily run them through HTML Tidy - manually fixing them will take
too much time.

Would this be ok?

I modified the HTML documents in the docs/ subdirectory to achieve HTML 4.0 validity and to also check the links. I used http://validator.w3.org/ and http://validator.w3.org/checklink for this work. No major changes were made except four tables are no longer shifted left. All documents now pass except for links to known missing illustrations (these illustrations have been missing for several years) and incorrect use of <sub>...</sub> in background.html. I do not know how to revise this <pre><blockquote> section to support <sub> and maintain HTML 4.0 validity.

I learned that HTML should be created by tools to ensure validity.

Are these OK to commit to the Pooma CVS repository?

(If you want to use tidy on these after we resolve these proposed changes, that's fine, but it's not essential. I'd rather ensure all outstanding patches are resolved and the code works correctly.)

--
Jeffrey D. Oldham
address@hidden

2004-Aug-20  Jeffrey D. Oldham  <address@hidden>

        * Layout.html: Update to HTML 4.0 compliance.  Also update all
        links, e.g., from http://www.acl.lanl.gov/pooma/ to
        http://www.pooma.com/.
        * background.html: Likewise.
        * index.html: Likewise.
        * introduction.html: Likewise.
        * legal.html: Likewise.
        * parallelism.html: Likewise.
        * reading.html: Likewise.
        * self-test.html: Likewise.
        * threading.html: Likewise.
        * tut-01.html: Likewise.
        * tut-02.html: Likewise.
        * tut-03.html: Likewise.
        * tut-04.html: Likewise.
        * tut-05.html: Likewise.
        * tut-06.html: Likewise.
        * tut-07.html: Likewise.
        * tut-08.html: Likewise.
        * tut-09.html: Likewise.
        * tut-10.html: Likewise.
        * tut-11.html: Likewise.
        * tut-12.html: Likewise.
        * tut-13.html: Likewise.
Index: Layout.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/Layout.html,v
retrieving revision 1.2
diff -c -p -r1.2 Layout.html
*** Layout.html 3 Dec 2001 19:38:33 -0000       1.2
--- Layout.html 20 Aug 2004 19:25:45 -0000
***************
*** 1,4 ****
! <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
--- 1,4 ----
! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
***************
*** 11,38 ****
  Layouts and related classes:</h1>
  
  <ul>
! <li>
! <a href="#Introduction">Introduction</a></li>
  
! <li>
! <a href="#GuardLayers">GuardLayers</a></li>
  
! <li>
! <a href="#Layouts">Layouts</a></li>
  
! <ul>
! <li>
! &nbsp; <a href="#Ltags">Layout tags</a></li>
! </ul>
! 
! <li>
! <a href="#Partitioners">Partitioners</a></li>
  
! <li>
! <a href="#ContextMapper">ContextMapper and derived classes</a></li>
  
! <li>
! <a href="#Restrictions">Restrictions</a> on combinations of Layouts, 
Partitioners
  and ContextMappers</li>
  </ul>
  
--- 11,27 ----
  Layouts and related classes:</h1>
  
  <ul>
! <li><a href="#Introduction">Introduction</a></li>
  
! <li><a href="#GuardLayers">GuardLayers</a></li>
  
! <li><a href="#Layouts">Layouts</a> and <a href="#Ltags">Layout tags</a></li>
  
! <li><a href="#Partitioners">Partitioners</a></li>
  
! <li><a href="#ContextMapper">ContextMapper and derived classes</a></li>
  
! <li><a href="#Restrictions">Restrictions</a> on combinations of Layouts, 
Partitioners
  and ContextMappers</li>
  </ul>
  
*************** Array using a GridLayout.
*** 52,58 ****
  <br>&nbsp; GridLayout&lt;1> mayout2(dom, martition, ReplicatedTag() );
  <br>&nbsp; Array&lt;1, double, MultiPatch&lt;GridTag, Brick> > aa(mayout2);
  <br>&nbsp;
! <p><a NAME="GuardLayers"></a><b><font size=+2>GuardLayers</font></b>
  <p>The GuardLayers&lt;Dim> class is used to specify both internal and external
  guard layers. Each dimension has a pair of integers to allow for asymmetric
  guard layer thicknesses. External guard layer specifications override those
--- 41,48 ----
  <br>&nbsp; GridLayout&lt;1> mayout2(dom, martition, ReplicatedTag() );
  <br>&nbsp; Array&lt;1, double, MultiPatch&lt;GridTag, Brick> > aa(mayout2);
  <br>&nbsp;
! <p>
! <h1><a NAME="GuardLayers"></a>GuardLayers</h1>
  <p>The GuardLayers&lt;Dim> class is used to specify both internal and external
  guard layers. Each dimension has a pair of integers to allow for asymmetric
  guard layer thicknesses. External guard layer specifications override those
*************** of the domain, the internal guard layer 
*** 91,97 ****
  size of the patches.
  <br>&nbsp;
  <br>&nbsp;
! <p><img SRC="bordergraph.gif" >
  <br>&nbsp;
  <p>The following graphic illustrates the internal and external guard cell
  regions for a UniformGridLayout with asymmetric guard cell specifications:
--- 81,88 ----
  size of the patches.
  <br>&nbsp;
  <br>&nbsp;
! <p><img SRC="bordergraph.gif" ALT="illustration of internal and
! external guard cells">
  <br>&nbsp;
  <p>The following graphic illustrates the internal and external guard cell
  regions for a UniformGridLayout with asymmetric guard cell specifications:
*************** regions for a UniformGridLayout with asy
*** 102,108 ****
  <br>UniformGridPartition&lt;2>&nbsp; asypart(Loc&lt;2>(3,2),igl,egl);
  <br>Array&lt;2,double,MultiPatchEngine&lt;UniformTag,CompressibleBrick>
  >&nbsp;&nbsp;&nbsp;&nbsp; 
Array(UniformGridLayout&lt;2>(dom,asypart,ReplicatedTag());</blockquote>
! <img SRC="/users/luchini/bgraph/bordergraphrevision.gif" ALT="2x3 patch 
asymetric guard cell" NOSAVE height=398 width=550>
  <br>&nbsp;
  <h1>
  <a NAME="Layouts"></a>Layouts</h1>
--- 93,99 ----
  <br>UniformGridPartition&lt;2>&nbsp; asypart(Loc&lt;2>(3,2),igl,egl);
  <br>Array&lt;2,double,MultiPatchEngine&lt;UniformTag,CompressibleBrick>
  >&nbsp;&nbsp;&nbsp;&nbsp; 
Array(UniformGridLayout&lt;2>(dom,asypart,ReplicatedTag());</blockquote>
! <img SRC="/users/luchini/bgraph/bordergraphrevision.gif" ALT="2x3 patch 
asymetric guard cell" height=398 width=550>
  <br>&nbsp;
  <h1>
  <a NAME="Layouts"></a>Layouts</h1>
*************** The currently existent Layouts are:
*** 110,121 ****
  <p><b>UniformGridLayout&lt;Dim></b>
  <br>Divides the data space into regions defined by dividing each axis into
  an integral number of equally size segments.
! <br><img SRC="grid.2ugl.gif" >
  <br>&nbsp;
  <br>&nbsp;
  <p><b>GridLayout&lt;Dim></b>
  <br>Divides the data space into regions by segmenting each axis arbitrarily.
! <p><img SRC="grid.2gl.gif" >
  <br>&nbsp;
  <p><b>SparseTileLayout&lt;Dim></b>
  <br>Tiles the domain (called the BoundingBox for this Layout) with 
non-overlapping
--- 101,112 ----
  <p><b>UniformGridLayout&lt;Dim></b>
  <br>Divides the data space into regions defined by dividing each axis into
  an integral number of equally size segments.
! <br><img SRC="grid.2ugl.gif" ALT="UniformGridLayout<2>">
  <br>&nbsp;
  <br>&nbsp;
  <p><b>GridLayout&lt;Dim></b>
  <br>Divides the data space into regions by segmenting each axis arbitrarily.
! <p><img SRC="grid.2gl.gif" ALT="GridLayout<2>">
  <br>&nbsp;
  <p><b>SparseTileLayout&lt;Dim></b>
  <br>Tiles the domain (called the BoundingBox for this Layout) with 
non-overlapping
*************** and external guard layer regions, as wel
*** 127,143 ****
  or overlap onto the data space of patches defined within the layout.
  <br>&nbsp;
  <br>&nbsp;
! <p><img SRC="grid.2stl.gif" >
  <p><b>DynamicLayout</b>
  <br>An inherently 1-dimensional Layout, that allows the patches to be resized.
! <p><img SRC="grid.2D.gif" >
  <br>&nbsp;
  <p><b>DomainLayout&lt;Dim></b>
  <br>A single patch domain defined by a single Interval.
  <br>&nbsp;
! <h2><a NAME="Ltags"></a>UniformGridLayout, GridLayout and 
SparseTileLayout</b></h2>The UniformGridLayout, GridLayout, and 
SparseTileLayout all have a trailing tag argument on most of their constructors 
that specifies how the data is ContextMapper<it>ed</it>. These tags are 
ReplicatedTag and DistributedTag. If ReplicatedTag is specified, then 
LocalMapper is used, while if DistributedTag is specified, then the 
DistributedMapper is used. All of the aforementioned layouts have the default 
constructor that doesn't require the use of the ReplicatedTag or 
DistributedTag.  A constructor having the form (Domain,Partitioner, 
ContextMapper) doesn't require the use of the trailing tags since it explicitly 
specifies a ContextMapper.<br>
  
! <h2><a NAME=" Partitioners"></a><b>Partitioners:</b></h2>
  
  <p><br>Layouts have Partitioners that are invoked to generate the
  patch-subdomains, taking into account internal and external GuardLayers.
--- 118,145 ----
  or overlap onto the data space of patches defined within the layout.
  <br>&nbsp;
  <br>&nbsp;
! <p><img SRC="grid.2stl.gif" ALT="SparseTileLayout<2>">
  <p><b>DynamicLayout</b>
  <br>An inherently 1-dimensional Layout, that allows the patches to be resized.
! <p><img SRC="grid.2D.gif" ALT="DynamicLayout<2>">
  <br>&nbsp;
  <p><b>DomainLayout&lt;Dim></b>
  <br>A single patch domain defined by a single Interval.
  <br>&nbsp;
! <h2><a NAME="Ltags"></a>UniformGridLayout, GridLayout and
! SparseTileLayout</h2>The UniformGridLayout, GridLayout, and
! SparseTileLayout all have a trailing tag argument on most of their
! constructors that specifies how the data is
! ContextMapper<i>ed</i>. These tags are ReplicatedTag and
! DistributedTag. If ReplicatedTag is specified, then LocalMapper is
! used, while if DistributedTag is specified, then the DistributedMapper
! is used. All of the aforementioned layouts have the default
! constructor that doesn't require the use of the ReplicatedTag or
! DistributedTag.  A constructor having the form (Domain,Partitioner,
! ContextMapper) doesn't require the use of the trailing tags since it
! explicitly specifies a ContextMapper.<br>
  
! <h2><a NAME="Partitioners"></a><b>Partitioners:</b></h2>
  
  <p><br>Layouts have Partitioners that are invoked to generate the
  patch-subdomains, taking into account internal and external GuardLayers.
*************** over multiple contexts.
*** 172,184 ****
  <p><b>UniformMapper</b>
  <br>This is a mapper specialized to Dim == 1, and evenly divides the patch
  list sequence into the number of contexts.
! <p><img SRC="grid.2uniform.gif" >
  <br>&nbsp;
  <br>&nbsp;
  <p><b>BisectionMapper&lt;Dim></b>
  <br>Uses Recursive bisection of the largest group of patches to produce
  contexts with an approximately minimum surface to volume ratio. See figure.
! <p><img SRC="grid.2bisection.gif" >
  <br>&nbsp;
  <br>&nbsp;
  <p><b>ContiguousMapper</b>
--- 174,186 ----
  <p><b>UniformMapper</b>
  <br>This is a mapper specialized to Dim == 1, and evenly divides the patch
  list sequence into the number of contexts.
! <p><img SRC="grid.2uniform.gif" ALT="UniformMapper<2>">
  <br>&nbsp;
  <br>&nbsp;
  <p><b>BisectionMapper&lt;Dim></b>
  <br>Uses Recursive bisection of the largest group of patches to produce
  contexts with an approximately minimum surface to volume ratio. See figure.
! <p><img SRC="grid.2bisection.gif" ALT="BisectionMapper<2>">
  <br>&nbsp;
  <br>&nbsp;
  <p><b>ContiguousMapper</b>
*************** contexts with an approximately minimum s
*** 186,192 ****
  the index gets to an boundary, the lowest axis index decrements, rather
  than going from LowIndex = IndexMax to LowIndex = 0; see the figure for
  an illustration of this mapper.
! <p><img SRC="/am/mother/u0/luchini/cmapper/grid.2cmapper.gif" ALT="contiguous 
mapper" NOSAVE >
  <br>&nbsp;
  <br>&nbsp;
  <h2>
--- 188,194 ----
  the index gets to an boundary, the lowest axis index decrements, rather
  than going from LowIndex = IndexMax to LowIndex = 0; see the figure for
  an illustration of this mapper.
! <p><img SRC="/am/mother/u0/luchini/cmapper/grid.2cmapper.gif" ALT="contiguous 
mapper">
  <br>&nbsp;
  <br>&nbsp;
  <h2>
Index: background.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/background.html,v
retrieving revision 1.2
diff -c -p -r1.2 background.html
*** background.html     26 Mar 2001 23:49:59 -0000      1.2
--- background.html     20 Aug 2004 19:25:45 -0000
***************
*** 1,14 ****
  <!-- background.html : preparatory material for POOMA tutorials -->
  <!-- $Id: background.html,v 1.2 2001/03/26 23:49:59 oldham Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials: Background and Terminology</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorials<br>Background and Terminology</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- background.html : preparatory material for POOMA tutorials -->
  <!-- $Id: background.html,v 1.2 2001/03/26 23:49:59 oldham Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials: Background and Terminology</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorials<br>Background and Terminology</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 21,28 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#stl">The Standard Template Library</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#expression-templates">Expression 
Templates</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>Object-oriented programming languages like C++ make development
  easier, but performance tuning harder.  The same abstractions that
--- 23,30 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#stl">The Standard Template Library</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#expression-templates">Expression 
Templates</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>Object-oriented programming languages like C++ make development
  easier, but performance tuning harder.  The same abstractions that
*************** how compilers <a href="#optimize">optimi
*** 159,166 ****
  href="#templates">templates</a> can and cannot do.  The sections below
  discuss each of these topics in turn.
  
! <!---------------------------------------------------------------------->
! <a name="architecture"><h2>Modern Architectures</h2></a>
  
  <p>One of the keys to making modern RISC processors go fast is
  extensive use of caching.  A computer uses a cache to exploit the
--- 161,168 ----
  href="#templates">templates</a> can and cannot do.  The sections below
  discuss each of these topics in turn.
  
! <!-- -->
! <h2><a name="architecture">Modern Architectures</a></h2>
  
  <p>One of the keys to making modern RISC processors go fast is
  extensive use of caching.  A computer uses a cache to exploit the
*************** programmers concentrate on algorithmic i
*** 258,265 ****
  having to learn the quirks of the architectures they want to run their
  programs on.
  
! <!---------------------------------------------------------------------->
! <a name="parallel"><h2>POOMA's Parallel Execution Model</h2></a>
  
  <p>In order to be able to cope with the variations in machine
  architecture noted above, POOMA's parallel execution model is defined
--- 260,267 ----
  having to learn the quirks of the architectures they want to run their
  programs on.
  
! <!-- -->
! <h2><a name="parallel">POOMA's Parallel Execution Model</a></h2>
  
  <p>In order to be able to cope with the variations in machine
  architecture noted above, POOMA's parallel execution model is defined
*************** context for each application, but can us
*** 278,285 ****
  context on supported platforms.  Support for multiple contexts will be
  added in an upcoming release.
  
! <!---------------------------------------------------------------------->
! <a name="optimize"><h2>Optimization</h2></a>
  
  <p>Along with interpreting the footnotes in various language
  standards, inventing automatic ways to optimize programs is a major
--- 280,287 ----
  context on supported platforms.  Support for multiple contexts will be
  added in an upcoming release.
  
! <!-- -->
! <h2><a name="optimize">Optimization</a></h2>
  
  <p>Along with interpreting the footnotes in various language
  standards, inventing automatic ways to optimize programs is a major
*************** POOMA programs, the compiler is automati
*** 381,388 ****
  information it needs to discriminate between cases like these, and
  thereby deliver better performance.
  
! <!---------------------------------------------------------------------->
! <a name="templates"><h2>Templates</h2></a>
  
  <p>So what exactly is a C++ template?  One way to look at them is as
  an improvement over macros.  Suppose, for example, that you wanted to
--- 383,390 ----
  information it needs to discriminate between cases like these, and
  thereby deliver better performance.
  
! <!-- -->
! <h2><a name="templates">Templates</a></h2>
  
  <p>So what exactly is a C++ template?  One way to look at them is as
  an improvement over macros.  Suppose, for example, that you wanted to
*************** e.foo(5);                               
*** 618,625 ****
  e.foo(box);                             // <em>instantiate for Shape</em>
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="stl"><h2>The Standard Template Library</h2></a>
  
  <p>The best-known use of templates to date has been the Standard
  Template Library, or STL.  The STL uses templates to separate
--- 620,627 ----
  e.foo(box);                             // <em>instantiate for Shape</em>
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="stl">The Standard Template Library</a></h2>
  
  <p>The best-known use of templates to date has been the Standard
  Template Library, or STL.  The STL uses templates to separate
*************** itself.  This allows programmers to swit
*** 698,705 ****
  or centralized and distributed, array storage, with only minor,
  localized changes to the text of their programs.
  
! <!---------------------------------------------------------------------->
! <a name="expression-templates"><h2>Expression Templates</h2></a>
  
  <p>Parse trees are commonly used by compilers to store the essential
  features of the source of a program.  The leaf nodes of a parse tree
--- 700,707 ----
  or centralized and distributed, array storage, with only minor,
  localized changes to the text of their programs.
  
! <!-- -->
! <h2><a name="expression-templates">Expression Templates</a></h2>
  
  <p>Parse trees are commonly used by compilers to store the essential
  features of the source of a program.  The leaf nodes of a parse tree
*************** ways of combining those values, such as 
*** 710,716 ****
  <tt>-B+2*C</tt> could be represented by the
  parse tree:
  
! <p align="center"><img src="parseTree.gif">
  
  <p>Parse trees are often represented textually using prefix notation,
  in which the non-terminal combiner and its arguments are strung
--- 712,718 ----
  <tt>-B+2*C</tt> could be represented by the
  parse tree:
  
! <p align="center"><IMG SRC="parseTree.gif" ALT="parse tree">
  
  <p>Parse trees are often represented textually using prefix notation,
  in which the non-terminal combiner and its arguments are strung
*************** sacrificing performance.
*** 928,934 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 930,936 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: index.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/index.html,v
retrieving revision 1.2
diff -c -p -r1.2 index.html
*** index.html  30 Jul 2002 17:06:16 -0000      1.2
--- index.html  20 Aug 2004 19:25:45 -0000
***************
*** 1,14 ****
  <!-- index.html : entry point for POOMA tutorials -->
  <!-- $Id: index.html,v 1.2 2002/07/30 17:06:16 oldham Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <p>Welcome to the POOMA Tutorials.  We are in the process of expanding
  and updating the tutorials.  Some of the old sections are now out of date.
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- index.html : entry point for POOMA tutorials -->
  <!-- $Id: index.html,v 1.2 2002/07/30 17:06:16 oldham Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <p>Welcome to the POOMA Tutorials.  We are in the process of expanding
  and updating the tutorials.  Some of the old sections are now out of date.
*************** the new material, as well as the origina
*** 33,92 ****
  
  <blockquote>
  
! <a href="introduction.html">
!   <h4>Introduction</h4>
!   </a><a href="background.html">
!   <h4>Background and Terminology</h4>
!   </a><a href="tut-01.html">
!   <h4>A Laplace Solver Using Simple Jacobi Iteration</h4>
!   </a><a href="tut-02.html">
!   <h4>Red/Black Update</h4>
!   </a><a href="tut-03.html">
!   <h4>Calculating Residuals</h4>
!   </a><a href="tut-04.html">
!   <h4>Further Topics</h4>
!   </a><a href="tut-05.html">
!   <h4>Pointwise Operations</h4>
!   </a><a href="tut-06.html">
!   <h4>Indirect Addressing</h4>
!   </a><a href="tut-07.html">
!   <h4>Meshes, Centerings, Geometries, and Fields</h4>
!   </a><a href="tut-08.html">
!   <h4>More on Meshes, Centerings, Geometries, and Fields</h4>
!   </a><a href="tut-09.html">
!   <h4>Particles (out of date)</h4>
!   </a><a href="tut-10.html">
!   <h4>Particles and Fields (out of date)</h4>
!   </a><a href="tut-11.html">
!   <h4>Text Input and Output</h4>
!   </a><a href="tut-12.html">
!   <h4>Object Input and Output</h4>
!   </a><a href="tut-13.html">
!   <h4>Compiling, Running, and Debugging POOMA Programs</h4>
!   </a>
  
    <h4>Appendices</h4>
  
        
    <blockquote>
  
!       <a href="self-test.html">
!     <h5>A Quick Self-Test</h5>
!     </a><a href="threading.html">
!     <h5>Managing Threads Explicitly</h5>
!     </a><a href="reading.html">
!     <h5>Recommended Reading</h5>
!     </a><a href="legal.html">
!     <h5>Legal Notice</h5>
!     </a>
  
!         </blockquote>
  
  </blockquote>
  
  <center>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 35,73 ----
  
  <blockquote>
  
!   <h4><a href="introduction.html">Introduction</a></h4>
!   <h4><a href="background.html">Background and Terminology</a></h4>
!   <h4><a href="tut-01.html">A Laplace Solver Using Simple Jacobi 
Iteration</a></h4>
!   <h4><a href="tut-02.html">Red/Black Update</a></h4>
!   <h4><a href="tut-03.html">Calculating Residuals</a></h4>
!   <h4><a href="tut-04.html">Further Topics</a></h4>
!   <h4><a href="tut-05.html">Pointwise Operations</a></h4>
!   <h4><a href="tut-06.html">Indirect Addressing</a></h4>
!   <h4><a href="tut-07.html">Meshes, Centerings, Geometries, and 
Fields</a></h4>
!   <h4><a href="tut-08.html">More on Meshes, Centerings, Geometries, and 
Fields</a></h4>
!   <h4><a href="tut-09.html">Particles (out of date)</a></h4>
!   <h4><a href="tut-10.html">Particles and Fields (out of date)</a></h4>
!   <h4><a href="tut-11.html">Text Input and Output</a></h4>
!   <h4><a href="tut-12.html">Object Input and Output</a></h4>
!   <h4><a href="tut-13.html">Compiling, Running, and Debugging POOMA 
Programs</a></h4>
  
    <h4>Appendices</h4>
  
        
    <blockquote>
  
!   <h5><a href="self-test.html">A Quick Self-Test</a></h5>
!   <h5><a href="threading.html">Managing Threads Explicitly</a></h5>
!   <h5><a href="reading.html">Recommended Reading</a></h5>
!   <h5><a href="legal.html">Legal Notice</a></h5>
  
!   </blockquote>
  
  </blockquote>
  
  <center>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: introduction.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/introduction.html,v
retrieving revision 1.2
diff -c -p -r1.2 introduction.html
*** introduction.html   20 Aug 2004 15:26:52 -0000      1.2
--- introduction.html   20 Aug 2004 19:25:45 -0000
***************
*** 1,5 ****
--- 1,7 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>POOMA Tutorials: Introduction</title>
  <!-- introduction.html : introduction to POOMA tutorials -->
  <!-- $Id: introduction.html,v 1.2 2004/08/20 15:26:52 pooma Exp $ -->
***************
*** 8,14 ****
  
  <center>
  <h1>
! <img SRC="banner.gif" X-SAS-UseImageWidth X-SAS-UseImageHeight height=100 
width=550 align=BOTTOM></h1></center>
  
  <center><h1>POOMA Tutorials<br>Introduction</h1></center>
  
--- 10,16 ----
  
  <center>
  <h1>
! <img SRC="banner.gif" ALT="POOMA banner" height=100 width=550 
align=BOTTOM></h1></center>
  
  <center><h1>POOMA Tutorials<br>Introduction</h1></center>
  
*************** current application, at no cost. For mor
*** 114,120 ****
  
  <p>Of course, nothing is perfect. At the time of this release, some
  C++ compilers still do not support the full ANSI/ISO C++
! standard. Please refer to the <a href="compilers.html">appendix</a>
  for a list of those that do.
  
  <p>A second compiler-related problem is that most compilers produce
--- 116,122 ----
  
  <p>Of course, nothing is perfect. At the time of this release, some
  C++ compilers still do not support the full ANSI/ISO C++
! standard. Please refer to the <a 
href="tut-13.html#compilerrequirements">appendix</a>
  for a list of those that do.
  
  <p>A second compiler-related problem is that most compilers produce
*************** while expanding templated functions and 
*** 123,129 ****
  functions and classes are nested. Since POOMA uses templates
  extensively, it is not uncommon for a single error to result in
  several pages of complaints from a compiler. The appendix on <a
! href="errors.html">error messages</a> discusses some strategies that
  can be used to find the root cause of such errors.  Programs that use
  templates extensively are also still sometimes slower to compile than
  programs that do not, and the executables produced by some compilers
--- 125,131 ----
  functions and classes are nested. Since POOMA uses templates
  extensively, it is not uncommon for a single error to result in
  several pages of complaints from a compiler. The appendix on <a
! href="tut-13.html#decipher">error messages</a> discusses some strategies that
  can be used to find the root cause of such errors.  Programs that use
  templates extensively are also still sometimes slower to compile than
  programs that do not, and the executables produced by some compilers
*************** href="mailto:address@hidden
*** 170,176 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 172,178 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: legal.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/legal.html,v
retrieving revision 1.3
diff -c -p -r1.3 legal.html
*** legal.html  20 Aug 2004 15:26:52 -0000      1.3
--- legal.html  20 Aug 2004 19:25:45 -0000
***************
*** 1,14 ****
  <!-- legal.html -->
  <!-- $Id: legal.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials: Legal Notice</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorials<br>Legal Notice</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- legal.html -->
  <!-- $Id: legal.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials: Legal Notice</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorials<br>Legal Notice</h1></center>
  
*************** or visit the POOMA web page at
*** 46,52 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 48,54 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: parallelism.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/parallelism.html,v
retrieving revision 1.2
diff -c -p -r1.2 parallelism.html
*** parallelism.html    13 Jan 2004 19:28:21 -0000      1.2
--- parallelism.html    20 Aug 2004 19:25:45 -0000
***************
*** 1,4 ****
! <h1>POOMA post-2.4 parallel model</h1>
  
  <p>CONTEXT: In discussing the parallelism models that
  POOMA supports, the word `context' has a particular
--- 1,16 ----
! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
! 
! <html>
! <head>
!    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
! <title>POOMA post-2.4 parallel model</title>
! </head>
! <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
! 
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
! 
! <center><h1>POOMA post-2.4 parallel model</h1></center>
  
  <p>CONTEXT: In discussing the parallelism models that
  POOMA supports, the word `context' has a particular
*************** useful for clusters of SMP workstations.
*** 50,56 ****
  be specified by the --mpi and --openmp configure switches.
  
  
! <h3>CHEETAH overview:</h2>
  
  <p>The Advance Computing Laboratory CHEETAH library is 
  a messaging that supports a set of asynchronous
--- 62,68 ----
  be specified by the --mpi and --openmp configure switches.
  
  
! <h3>CHEETAH overview:</h3>
  
  <p>The Advance Computing Laboratory CHEETAH library is 
  a messaging that supports a set of asynchronous
Index: reading.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/reading.html,v
retrieving revision 1.2
diff -c -p -r1.2 reading.html
*** reading.html        20 Aug 2004 15:26:52 -0000      1.2
--- reading.html        20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- reading.html : tail end of POOMA tutorials -->
  <!-- $Id: reading.html,v 1.2 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials: Recommended Reading</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorials<br>Recommended Reading</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- reading.html : tail end of POOMA tutorials -->
  <!-- $Id: reading.html,v 1.2 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials: Recommended Reading</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorials<br>Recommended Reading</h1></center>
  
*************** ideas, Austern also provides a complete 
*** 67,105 ****
  
  <h2>Bibliography</h2>
  
! <p>John Lakos: <a name="bib-large-scale-c++"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0201633620";><cite>Large-Scale
! C++ Software Design</cite></a></a>.  Addison-Wesley, 1997, ISBN
  0201633620.
  
! <p>Ira Pohl: <a name="bib-c++-for-fortran"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0201924838";><cite>C++ for
! Fortran Programmers</cite></a></a>.  Addison-Wesley, 1997, ISBN
  0201924838.
  
! <p>Scott Meyers: <a name="bib-effective-c++"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0201924889";><cite>
! Effective C++ (2nd ed.)</cite></a></a>.  Addison-Wesley, 1997,
  ISBN 0201924889.
  
! <p>Scott Meyers: <a name="bib-more-effective-c++"><a
  href="http://www.amazon.com/exec/obidos/ASIN/020163371X";><cite>
! More Effective C++</cite></a></a>.  Addison-Wesley, 1995, ISBN 020163371X.
  
! <p>David R. Musser and Atul Saini: <a name="bib-stl"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0201633981";><cite>STL
! Tutorial and Reference Guide</cite></a></a>.  Addison-Wesley, 
  1996, ISBN 0201633981.
  
! <p>Matthew H. Austern: <a name="bib-generic-prog-stl"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0201309564";><cite>Generic 
  Programming and the STL: Using and Extending the C++ Standard Template
! Library</cite></a></a>.  Addison-Wesley, 
  1998, ISBN 0201309564.
  
! <p>Mark Weiss: <a name="bib-data-structures-c++"><a
  href="http://www.amazon.com/exec/obidos/ASIN/0805316663";><cite>Algorithms,
! Data Structures, and Problem Solving C++</cite></a></a>.
  Addison-Wesley, 1996, ISBN 0805316663.
  
  <br>
--- 69,107 ----
  
  <h2>Bibliography</h2>
  
! <p>John Lakos: <a name="bib-large-scale-c++"
  href="http://www.amazon.com/exec/obidos/ASIN/0201633620";><cite>Large-Scale
! C++ Software Design</cite></a>.  Addison-Wesley, 1997, ISBN
  0201633620.
  
! <p>Ira Pohl: <a name="bib-c++-for-fortran"
  href="http://www.amazon.com/exec/obidos/ASIN/0201924838";><cite>C++ for
! Fortran Programmers</cite></a>.  Addison-Wesley, 1997, ISBN
  0201924838.
  
! <p>Scott Meyers: <a name="bib-effective-c++"
  href="http://www.amazon.com/exec/obidos/ASIN/0201924889";><cite>
! Effective C++ (2nd ed.)</cite></a>.  Addison-Wesley, 1997,
  ISBN 0201924889.
  
! <p>Scott Meyers: <a name="bib-more-effective-c++"
  href="http://www.amazon.com/exec/obidos/ASIN/020163371X";><cite>
! More Effective C++</cite></a>.  Addison-Wesley, 1995, ISBN 020163371X.
  
! <p>David R. Musser and Atul Saini: <a name="bib-stl"
  href="http://www.amazon.com/exec/obidos/ASIN/0201633981";><cite>STL
! Tutorial and Reference Guide</cite></a>.  Addison-Wesley, 
  1996, ISBN 0201633981.
  
! <p>Matthew H. Austern: <a name="bib-generic-prog-stl"
  href="http://www.amazon.com/exec/obidos/ASIN/0201309564";><cite>Generic 
  Programming and the STL: Using and Extending the C++ Standard Template
! Library</cite></a>.  Addison-Wesley, 
  1998, ISBN 0201309564.
  
! <p>Mark Weiss: <a name="bib-data-structures-c++"
  href="http://www.amazon.com/exec/obidos/ASIN/0805316663";><cite>Algorithms,
! Data Structures, and Problem Solving C++</cite></a>.
  Addison-Wesley, 1996, ISBN 0805316663.
  
  <br>
*************** Addison-Wesley, 1996, ISBN 0805316663.
*** 113,119 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 115,121 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: self-test.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/self-test.html,v
retrieving revision 1.1
diff -c -p -r1.1 self-test.html
*** self-test.html      19 Mar 2001 16:11:13 -0000      1.1
--- self-test.html      20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- self-.html : tail end of POOMA tutorials -->
  <!-- $Id: self-test.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials: A Quick Self-Test</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorials<br>A Quick Self-Test</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- self-.html : tail end of POOMA tutorials -->
  <!-- $Id: self-test.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials: A Quick Self-Test</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorials<br>A Quick Self-Test</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 25,32 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#a-trait">Trait 
Classes</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#a-val">Values, 
References, and Constant References</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>The implementation of POOMA uses many advanced or obscure
  features of the ANSI/ISO C++ standard.  Its interface is less
--- 27,34 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#a-trait">Trait 
Classes</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#a-val">Values, 
References, and Constant References</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>The implementation of POOMA uses many advanced or obscure
  features of the ANSI/ISO C++ standard.  Its interface is less
*************** and their answers difficult, you may wis
*** 38,48 ****
  in the <a href="reading.html">recommended reading</a> before trying to
  use this library.
  
! <!---------------------------------------------------------------------->
! <a name="questions"><h2>Questions</h2></a>
  
! <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="q-create"><h3>Object Creation</h3></a>
  
  Assume that a default constructor, a copy constructor, and an
  overloaded assignment operator have been defined for the class
--- 40,50 ----
  in the <a href="reading.html">recommended reading</a> before trying to
  use this library.
  
! <!-- -->
! <h2><a name="questions">Questions</a></h2>
  
! <!-- -->
! <h3><a name="q-create">Object Creation</a></h3>
  
  Assume that a default constructor, a copy constructor, and an
  overloaded assignment operator have been defined for the class
*************** int main()
*** 69,75 ****
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="q-virtual"><h3>Virtual Methods and Inheritance</h3></a>
  
  <p>What does the following program print out?
  
--- 71,77 ----
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <h3><a name="q-virtual">Virtual Methods and Inheritance</a></h3>
  
  <p>What does the following program print out?
  
*************** int main()
*** 125,131 ****
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="q-trait"><h3>Trait Classes</h3></a>
  
  <p>What does the following program print out?
  
--- 127,133 ----
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <h3><a name="q-trait">Trait Classes</a></h3>
  
  <p>What does the following program print out?
  
*************** int main()
*** 163,169 ****
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="q-val"><h3>Values, References, and Constant References</h3></a>
  
  <p>Which of the calls to <tt>value()</tt>, <tt>reference</tt>, and
  <tt>const_reference</tt> below produce errors during compilation?
--- 165,171 ----
  </pre></blockquote>
  
  <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <h3><a name="q-val">Values, References, and Constant References</a></h3>
  
  <p>Which of the calls to <tt>value()</tt>, <tt>reference</tt>, and
  <tt>const_reference</tt> below produce errors during compilation?
*************** int main()
*** 202,212 ****
  }
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="answers"><h2>Answers</h2></a>
  
! <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="a-create"><h3>Object Creation</h3></a>
  
  <p>The listing below shows where constructor calls and assignments
  occur:
--- 204,214 ----
  }
  </pre></blockquote>
  
! <!-- answers -->
! <h2><a name="answers">Answers</a></h2>
  
! <!-- object creation -->
! <h3><a name="a-create">Object Creation</a></h3>
  
  <p>The listing below shows where constructor calls and assignments
  occur:
*************** int main()
*** 239,246 ****
  }
  </pre></blockquote>
  
! <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="a-virtual"><h3>Virtual Methods and Inheritance</h3></a>
  
  <p>The program prints the following:
  
--- 241,248 ----
  }
  </pre></blockquote>
  
! <!-- virtual methods and inheritance -->
! <h3><a name="a-virtual">Virtual Methods and Inheritance</a></h3>
  
  <p>The program prints the following:
  
*************** B left                                  
*** 265,272 ****
  A right                                 // <em>right() is not virtual</em>
  </pre></blockquote>
  
! <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="a-trait"><h3>Trait Classes</h3></a>
  
  <p>The key here is that <tt>Green</tt> always defines its own
  <tt>Val</tt>, while <tt>Red</tt> defines its <tt>Val</tt> in
--- 267,274 ----
  A right                                 // <em>right() is not virtual</em>
  </pre></blockquote>
  
! <!-- trait classes -->
! <h3><a name="a-trait">Trait Classes</a></h3>
  
  <p>The key here is that <tt>Green</tt> always defines its own
  <tt>Val</tt>, while <tt>Red</tt> defines its <tt>Val</tt> in
*************** int main()
*** 285,292 ****
  }
  </pre></blockquote>
  
! <! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
! <a name="a-val"><h3>Values, References, and Constant References</h3></a>
  
  <p>The only outright errors occur when a constant value (such as a
  literal or the result of an arithmetic expression) is passed where a
--- 287,294 ----
  }
  </pre></blockquote>
  
! <!-- values, references, and constant references -->
! <h3><a name="a-val">Values, References, and Constant References</a></h3>
  
  <p>The only outright errors occur when a constant value (such as a
  literal or the result of an arithmetic expression) is passed where a
*************** int main()
*** 329,335 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 331,337 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: threading.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/threading.html,v
retrieving revision 1.1
diff -c -p -r1.1 threading.html
*** threading.html      19 Mar 2001 16:11:13 -0000      1.1
--- threading.html      20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- threading.html : example of threading in POOMA -->
  <!-- $Id: threading.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorials: Managing Threads Explicitly</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorials<br>Managing Threads Explicitly</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- threading.html : example of threading in POOMA -->
  <!-- $Id: threading.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorials: Managing Threads Explicitly</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorials<br>Managing Threads Explicitly</h1></center>
  
*************** being summed over on the heap instead of
*** 341,347 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 343,349 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-01.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-01.html,v
retrieving revision 1.1
diff -c -p -r1.1 tut-01.html
*** tut-01.html 19 Mar 2001 16:11:13 -0000      1.1
--- tut-01.html 20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- tut-01.html : first POOMA tutorial -->
  <!-- $Id: tut-01.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 1: A Laplace Solver Using Simple Jacobi 
Iteration</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 1<br>A Laplace Solver Using Simple Jacobi 
Iteration</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-01.html : first POOMA tutorial -->
  <!-- $Id: tut-01.html,v 1.1 2001/03/19 16:11:13 mitchell Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 1: A Laplace Solver Using Simple Jacobi 
Iteration</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 1<br>A Laplace Solver Using Simple Jacobi 
Iteration</h1></center>
  
*************** assignment and elementwise addition; and
*** 35,41 ****
  </ul>
  
  <!---------------------------------------------------------------------->
! <a name="laplace"><h2>Laplace's Equation</h2></a>
  
  <p>Our first POOMA program solves Laplace's equation on a
  regular grid using simple Jacobi iteration.  Laplace's equation in two
--- 37,43 ----
  </ul>
  
  <!---------------------------------------------------------------------->
! <h2><a name="laplace">Laplace's Equation</a></h2>
  
  <p>Our first POOMA program solves Laplace's equation on a
  regular grid using simple Jacobi iteration.  Laplace's equation in two
*************** Jacobi iteration; the update equation is
*** 87,94 ****
  V(i, j)<sub>new</sub> = (V(i+1, j) + V(i, j+1) + V(i-1, j) + V(i, j-1) - 
&szlig;(i, j))/4
  </em></center>
  
! <!---------------------------------------------------------------------->
! <a name="sequential"><h2>A Sequential Solution</h2></a>
  
  <p>Our first version of Jacobi iteration models a flat plate with a
  unit charge in its center using a 20&times;20 array.  It uses POOMA's
--- 89,96 ----
  V(i, j)<sub>new</sub> = (V(i+1, j) + V(i, j+1) + V(i-1, j) + V(i, j-1) - 
&szlig;(i, j))/4
  </em></center>
  
! <!-- -->
! <h2><a name="sequential">A Sequential Solution</a></h2>
  
  <p>Our first version of Jacobi iteration models a flat plate with a
  unit charge in its center using a 20&times;20 array.  It uses POOMA's
*************** main(
*** 160,167 ****
  }
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="pooma"><h2>Using Intervals</h2></a>
  
  <p>The program shown above is not much of an advance over its C
  equivalent.  The programmer is still required to loop over data
--- 162,169 ----
  }
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="pooma">Using Intervals</a></h2>
  
  <p>The program shown above is not much of an advance over its C
  equivalent.  The programmer is still required to loop over data
*************** a separate line.  Finally, line&nbsp;38 
*** 336,343 ****
  <tt>Pooma:initialize()</tt> on line&nbsp;14, and returns 0 to indicate
  successful completion.
  
! <!---------------------------------------------------------------------->
! <a name="refinements"><h2>Some Refinements</h2></a>
  
  <p>One thing that isn't shown in the program above is the precision of
  the calculations.  To find out what this is, we can inspect the
--- 338,345 ----
  <tt>Pooma:initialize()</tt> on line&nbsp;14, and returns 0 to indicate
  successful completion.
  
! <!-- -->
! <h2><a name="refinements">Some Refinements</a></h2>
  
  <p>One thing that isn't shown in the program above is the precision of
  the calculations.  To find out what this is, we can inspect the
*************** the trouble of typing:
*** 534,541 ****
  Array&lt;2&gt; w(5, 7, ModelElement&lt;double&gt;(3.14));
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="affinity"><h2>A Note on Affinity</h2></a>
  
  <p>In some shared-memory machines, such as SGI Origins, every
  processor can access memory everywhere in the machine, but there is
--- 536,543 ----
  Array&lt;2&gt; w(5, 7, ModelElement&lt;double&gt;(3.14));
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="affinity">A Note on Affinity</a></h2>
  
  <p>In some shared-memory machines, such as SGI Origins, every
  processor can access memory everywhere in the machine, but there is
*************** the memory is mapped where the program a
*** 572,583 ****
  optimization is not in this release of POOMA, but will be
  considered for future releases.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>This tutorial has shown that POOMA's <tt>Array</tt>
  class can be indexed sequentially, like a normal C or C++ array.  It
! can also be indexed using <t>Interval</t> objects, each of
  which specifies a contiguous range of indices.  When an
  <tt>Array</tt> is indexed using an <tt>Interval</tt>,
  the result itself acts like an array.  Overloaded operators can be
--- 574,585 ----
  optimization is not in this release of POOMA, but will be
  considered for future releases.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>This tutorial has shown that POOMA's <tt>Array</tt>
  class can be indexed sequentially, like a normal C or C++ array.  It
! can also be indexed using <tt>Interval</tt> objects, each of
  which specifies a contiguous range of indices.  When an
  <tt>Array</tt> is indexed using an <tt>Interval</tt>,
  the result itself acts like an array.  Overloaded operators can be
*************** type definition.
*** 599,605 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 601,607 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-02.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-02.html,v
retrieving revision 1.3
diff -c -p -r1.3 tut-02.html
*** tut-02.html 20 Aug 2004 15:26:52 -0000      1.3
--- tut-02.html 20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- tut-02.html : second POOMA tutorial -->
  <!-- $Id: tut-02.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 2: Red/Black Update</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 2<br>Red/Black Update</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-02.html : second POOMA tutorial -->
  <!-- $Id: tut-02.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 2: Red/Black Update</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 2<br>Red/Black Update</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 25,32 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#operations">Operations and Their 
Results</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>This tutorial shows how <tt>Range</tt> objects can be used
  to specify more general multi-valued array indices.  It also
--- 27,34 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#operations">Operations and Their 
Results</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>This tutorial shows how <tt>Range</tt> objects can be used
  to specify more general multi-valued array indices.  It also
*************** introduces the <tt>ConstArray</tt> class
*** 34,41 ****
  more deeply into the similarities between POOMA's arrays and
  the Standard Template Library's iterators.
  
! <!---------------------------------------------------------------------->
! <a name="redblack"><h2>Red-Black Update</h2></a>
  
  <p>Jacobi iteration is a good general-purpose relaxation method, but
  there are several ways to speed up its convergence rate.  One of
--- 36,43 ----
  more deeply into the similarities between POOMA's arrays and
  the Standard Template Library's iterators.
  
! <!-- -->
! <h2><a name="redblack">Red-Black Update</a></h2>
  
  <p>Jacobi iteration is a good general-purpose relaxation method, but
  there are several ways to speed up its convergence rate.  One of
*************** turn.
*** 117,124 ****
  56  }
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="ranges"><h2>Ranges</h2></a>
  
  <p>Our first requirement is a simple, efficient way to specify
  non-adjacent array elements.  POOMA borrows the terminology of
--- 119,126 ----
  56  }
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="ranges">Ranges</a></h2>
  
  <p>Our first requirement is a simple, efficient way to specify
  non-adjacent array elements.  POOMA borrows the terminology of
*************** and <tt>Range</tt> different classes is 
*** 166,173 ****
  <tt>Array</tt> dimensions, but <tt>Range</tt>s cannot,
  since <tt>Array</tt>s must always have unit stride.
  
! <!---------------------------------------------------------------------->
! <a name="engines"><h2>Engines</h2></a>
  
  <p>The previous tutorial said that the use of a non-scalar index as an
  array subscript selected a section from that array.  The way this is
--- 168,175 ----
  <tt>Array</tt> dimensions, but <tt>Range</tt>s cannot,
  since <tt>Array</tt>s must always have unit stride.
  
! <!-- -->
! <h2><a name="engines">Engines</a></h2>
  
  <p>The previous tutorial said that the use of a non-scalar index as an
  array subscript selected a section from that array.  The way this is
*************** values are calculated on the fly as simp
*** 208,215 ****
  are discussed in <a 
href="tut-04.html#component-forwarding">Tutorial&nbsp;4</a>
  and <a href="tut-06.html#example">Tutorial&nbsp;6</a>.
  
! <!---------------------------------------------------------------------->
! <a name="functions"><h2>Passing Arrays to Functions</h2></a>
  
  <p>Lines 9-17 of this program define a function that applies Jacobi
  relaxation to a specified subset of the elements of an array.  The
--- 210,217 ----
  are discussed in <a 
href="tut-04.html#component-forwarding">Tutorial&nbsp;4</a>
  and <a href="tut-06.html#example">Tutorial&nbsp;6</a>.
  
! <!-- -->
! <h2><a name="functions">Passing Arrays to Functions</a></h2>
  
  <p>Lines 9-17 of this program define a function that applies Jacobi
  relaxation to a specified subset of the elements of an array.  The
*************** like an STL iterator: a <tt>const</tt> i
*** 345,352 ****
  itself. If you want to ensure that the array itself can't be changed,
  use <tt>ConstArray</tt>.
  
! <!---------------------------------------------------------------------->
! <a name="calls"><h2>Calling the Function</h2></a>
  
  <p>Lines 43-47 bring all of this together by passing the arrays
  <tt>V</tt> and <tt>b</tt> by value to <tt>ApplyJacobi()</tt>.  The
--- 347,354 ----
  itself. If you want to ensure that the array itself can't be changed,
  use <tt>ConstArray</tt>.
  
! <!-- -->
! <h2><a name="calls">Calling the Function</a></h2>
  
  <p>Lines 43-47 bring all of this together by passing the arrays
  <tt>V</tt> and <tt>b</tt> by value to <tt>ApplyJacobi()</tt>.  The
*************** that in this case, both arrays are bound
*** 373,380 ****
  have data storage areas of their own, so creating and destroying
  <tt>ApplyJacobi()</tt>'s arguments is very fast.
  
! <!---------------------------------------------------------------------->
! <a name="expressions"><h2>A Note on Expressions</h2></a>
  
  <p>As you may have guessed from the preceding discussion,
  POOMA expressions are first-class non-writable <tt>Array</tt>s
--- 375,382 ----
  have data storage areas of their own, so creating and destroying
  <tt>ApplyJacobi()</tt>'s arguments is very fast.
  
! <!-- -->
! <h2><a name="expressions">A Note on Expressions</a></h2>
  
  <p>As you may have guessed from the preceding discussion,
  POOMA expressions are first-class non-writable <tt>Array</tt>s
*************** Iota&lt;2&gt;::Index_t J(iota(n1,n2).com
*** 430,437 ****
  a = sin(I*0.2) + J*5;
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="2d"><h2>Using Two-Dimensional Ranges</h2></a>
  
  <p>As a general rule, whenever a set of objects are always used
  together, they should be combined into a single larger structure.  If
--- 432,439 ----
  a = sin(I*0.2) + J*5;
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="2d">Using Two-Dimensional Ranges</a></h2>
  
  <p>As a general rule, whenever a set of objects are always used
  together, they should be combined into a single larger structure.  If
*************** domain.  While the memory this saves is 
*** 614,621 ****
  20&times;20 case, the savings grow quickly as the size and dimension
  of the problems being tackled increase.
  
! <!---------------------------------------------------------------------->
! <a name="periodic"><h2>Periodic Boundary Conditions</h2></a>
  
  <p>Our last look at red/black updating replaces the zero boundary
  condition of the previous examples with periodic boundaries in both
--- 616,623 ----
  20&times;20 case, the savings grow quickly as the size and dimension
  of the problems being tackled increase.
  
! <!-- -->
! <h2><a name="periodic">Periodic Boundary Conditions</a></h2>
  
  <p>Our last look at red/black updating replaces the zero boundary
  condition of the previous examples with periodic boundaries in both
*************** href="tut-03.html#loopreduce">next tutor
*** 744,751 ****
  32  V(I,         J.last())  = V(I,           J.first()+1);
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="operations"><h2>Operations and Their Results</h2></a>
  
  <P>One of the primary features of the POOMA array concept is the
  notion that "everything is an <tt>Array</tt>".  For example,
--- 746,753 ----
  32  V(I,         J.last())  = V(I,           J.first()+1);
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="operations">Operations and Their Results</a></h2>
  
  <P>One of the primary features of the POOMA array concept is the
  notion that "everything is an <tt>Array</tt>".  For example,
*************** element type, and, in the case of a slic
*** 914,921 ****
  dimensionality. <tt>ConstArray</tt>s result when the operation is
  read-only.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>This tutorial has shown that POOMA arrays can be
  subscripted using objects that represent index sequences with regular
--- 916,923 ----
  dimensionality. <tt>ConstArray</tt>s result when the operation is
  read-only.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>This tutorial has shown that POOMA arrays can be
  subscripted using objects that represent index sequences with regular
*************** they yield results of differing dimensio
*** 941,947 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 943,949 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-03.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-03.html,v
retrieving revision 1.1
diff -c -p -r1.1 tut-03.html
*** tut-03.html 19 Mar 2001 16:11:14 -0000      1.1
--- tut-03.html 20 Aug 2004 19:25:46 -0000
***************
*** 1,14 ****
  <!-- tut-03.html : third POOMA tutorial -->
  <!-- $Id: tut-03.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 3: Calculating Residuals</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 3<br>Calculating Residuals</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-03.html : third POOMA tutorial -->
  <!-- $Id: tut-03.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 3: Calculating Residuals</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 3<br>Calculating Residuals</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 21,28 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ownreduce">A Look Under the Hood</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>It is easy to assign a scalar to an array in POOMA.
  Assigning an array to a scalar is a bit more complicated, since the
--- 23,30 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ownreduce">A Look Under the Hood</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>It is easy to assign a scalar to an array in POOMA.
  Assigning an array to a scalar is a bit more complicated, since the
*************** include addition, maximum, and logical O
*** 34,41 ****
  their shape and size.  Functions that do this are much more flexible
  than functions that rely on hard-coded dimensions and extents.
  
! <!---------------------------------------------------------------------->
! <a name="loopreduce"><h2>Implementing Reduction Using Loops</h2></a>
  
  <p>The programs shown so far have performed a fixed number of
  relaxation steps, with no regard for the actual rate at which the
--- 36,43 ----
  their shape and size.  Functions that do this are much more flexible
  than functions that rely on hard-coded dimensions and extents.
  
! <!-- -->
! <h2><a name="loopreduce">Implementing Reduction Using Loops</a></h2>
  
  <p>The programs shown so far have performed a fixed number of
  relaxation steps, with no regard for the actual rate at which the
*************** beginning on line&nbsp;30 traverse the a
*** 208,215 ****
  assignment on line&nbsp;34 reads a value from the array, while that on
  line&nbsp;35 accumulates the square of each value in <tt>sum</tt>.
  
! <!---------------------------------------------------------------------->
! <a name="alldomain"><h2>More on Domains</h2></a>
  
  <p>POOMA provides a few useful shortcuts for working with
  domains, which can be used to generalize routines that manipulate
--- 210,217 ----
  assignment on line&nbsp;34 reads a value from the array, while that on
  line&nbsp;35 accumulates the square of each value in <tt>sum</tt>.
  
! <!-- -->
! <h2><a name="alldomain">More on Domains</a></h2>
  
  <p>POOMA provides a few useful shortcuts for working with
  domains, which can be used to generalize routines that manipulate
*************** for (int i = 0; i &lt; 5; i++)
*** 297,304 ****
    a()(i) = b()(i);
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="subtleties"><h2>Some Subtleties</h2></a>
  
  <p>Returning to the implementation of reductions once again, the most
  interesting thing about the <tt>sum_sqr()</tt> function is not its
--- 299,306 ----
    a()(i) = b()(i);
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="subtleties">Some Subtleties</a></h2>
  
  <p>Returning to the implementation of reductions once again, the most
  interesting thing about the <tt>sum_sqr()</tt> function is not its
*************** high-precision type like <tt>double</tt>
*** 496,503 ****
  the arguments to the function or method, and hope that it will be
  sufficiently precise.
  
! <!---------------------------------------------------------------------->
! <a name="funcreduce"><h2>Using Built-In Reduction Functions</h2></a>
  
  <p>The <tt>sum_sqr()</tt> function on lines 20-39 above uses
  object-oriented techniques to achieve generality, but still has the
--- 498,505 ----
  the arguments to the function or method, and hope that it will be
  sufficiently precise.
  
! <!-- -->
! <h2><a name="funcreduce">Using Built-In Reduction Functions</a></h2>
  
  <p>The <tt>sum_sqr()</tt> function on lines 20-39 above uses
  object-oriented techniques to achieve generality, but still has the
*************** array exactly.  By the time the residual
*** 592,599 ****
  expanded, its type definition is several thousand characters long; the
  complexity of the types of longer expressions grows very, very quickly.
  
! <!---------------------------------------------------------------------->
! <a name="ownreduce"><h2>A Look Under the Hood</h2></a>
  
  <p>By now, you may be curious about how POOMA does what it
  does.  This section therefore takes a look at the implementation of
--- 594,601 ----
  expanded, its type definition is several thousand characters long; the
  complexity of the types of longer expressions grows very, very quickly.
  
! <!-- -->
! <h2><a name="ownreduce">A Look Under the Hood</a></h2>
  
  <p>By now, you may be curious about how POOMA does what it
  does.  This section therefore takes a look at the implementation of
*************** be an identity element for the operation
*** 772,779 ****
  cases, some operations (such as logical and bitwise OR) must use other
  values.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>POOMA achieves high performance using expression engines,
  which are constructed automatically during compilation, and which
--- 774,781 ----
  cases, some operations (such as logical and bitwise OR) must use other
  values.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>POOMA achieves high performance using expression engines,
  which are constructed automatically during compilation, and which
*************** users.
*** 799,805 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 801,807 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-04.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-04.html,v
retrieving revision 1.3
diff -c -p -r1.3 tut-04.html
*** tut-04.html 20 Aug 2004 15:26:52 -0000      1.3
--- tut-04.html 20 Aug 2004 19:25:47 -0000
***************
*** 1,14 ****
  <!-- tut-04.html : fourth POOMA tutorial -->
  <!-- $Id: tut-04.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 4: Further Topics</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 4<br>Further Topics</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-04.html : fourth POOMA tutorial -->
  <!-- $Id: tut-04.html,v 1.3 2004/08/20 15:26:52 pooma Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 4: Further Topics</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 4<br>Further Topics</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 23,30 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#componentviews">Component Views</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>One of POOMA's most attractive features is its high
  performance on both single-processor and shared-memory multiprocessor
--- 25,32 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#componentviews">Component Views</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>One of POOMA's most attractive features is its high
  performance on both single-processor and shared-memory multiprocessor
*************** execute efficiently regardless of how ar
*** 56,63 ****
  and the use of traits classes to provide programs with information
  about POOMA objects.
  
! <!---------------------------------------------------------------------->
! <a name="blockevaluate"><h2>Block And Evaluate</h2></a>
  
  <p>POOMA tries to resolve the tension between how programmers
  want to express their ideas, and what runs most efficiently on modern
--- 58,65 ----
  and the use of traits classes to provide programs with information
  about POOMA objects.
  
! <!-- -->
! <h2><a name="blockevaluate">Block And Evaluate</a></h2>
  
  <p>POOMA tries to resolve the tension between how programmers
  want to express their ideas, and what runs most efficiently on modern
*************** queue when and as they become available.
*** 107,119 ****
  independently; the difference between the two modes is that one is
  synchronous and blocks after evaluating each data-parallel statement,
  while the other is asynchronous and permits out-of-order execution.
! The table <a href="#operation-mode-table">below</a> summarizes these
  four modes, along with the <a
  href="tut-13.html#configure-arguments">configuration arguments</a>
  used to produce each.
  
! <a name="operation-mode-table">
! <p><center><table border=2>
  
  <tr>  <td valign=top>
                <table>
--- 109,120 ----
  independently; the difference between the two modes is that one is
  synchronous and blocks after evaluating each data-parallel statement,
  while the other is asynchronous and permits out-of-order execution.
! The table <a href="#operation-mode-table" 
name="operation-mode-table">below</a> summarizes these
  four modes, along with the <a
  href="tut-13.html#configure-arguments">configuration arguments</a>
  used to produce each.
  
! <center><table border=2>
  
  <tr>  <td valign=top>
                <table>
*************** used to produce each.
*** 146,152 ****
        </tr>
  
  </table></center>
- </a>
  
  <p>A very important function in POOMA's work allocation system
  is <tt>Pooma::blockAndEvaluate()</tt>.  It is one of only two
--- 147,152 ----
*************** temporarily. This is accomplished by cal
*** 210,217 ****
  block and then calling <tt>Pooma::blockingExpressions(false)</tt> at
  the end.
  
! <!---------------------------------------------------------------------->
! <a name="tiny"><h2>Small Vectors and Tensors</h2></a>
  
  <p>POOMA includes two "tiny" classes that are optimized to
  represent small vectors and tensors.  Not surprisingly, these are
--- 210,217 ----
  block and then calling <tt>Pooma::blockingExpressions(false)</tt> at
  the end.
  
! <!-- -->
! <h2><a name="tiny">Small Vectors and Tensors</a></h2>
  
  <p>POOMA includes two "tiny" classes that are optimized to
  represent small vectors and tensors.  Not surprisingly, these are
*************** Vector&lt;3&gt; v;         // <em>3-comp
*** 235,241 ****
  Vector&lt;2, int&gt; vi;   // <em>2-component vector of ints.</em>
  
  Tensor&lt;2, int&gt; t;    // <em>2&times;2 tensor of ints.</em>
! </blockquote></pre>
  
  <p>Note that these classes use engine abstractions, just like their grown-up
  <tt>Array</tt> counterpart.  The only engine class available for
--- 235,241 ----
  Vector&lt;2, int&gt; vi;   // <em>2-component vector of ints.</em>
  
  Tensor&lt;2, int&gt; t;    // <em>2&times;2 tensor of ints.</em>
! </pre></blockquote>
  
  <p>Note that these classes use engine abstractions, just like their grown-up
  <tt>Array</tt> counterpart.  The only engine class available for
*************** non-<tt>Full</tt> <tt>Tensor</tt> object
*** 337,343 ****
  |               x_m[2] |</PRE>
        </TD>
      </TR>
!   </TABLE></P>
  
  
  <p>The code below (included in the release as <tt>examples/Tiny</tt>) is a
--- 337,343 ----
  |               x_m[2] |</PRE>
        </TD>
      </TR>
!   </TABLE>
  
  
  <p>The code below (included in the release as <tt>examples/Tiny</tt>) is a
*************** Tensor&lt;2,double,Full&gt; t(1.0, 2.0, 
*** 520,531 ****
  Tensor&lt;2,double,Antisymmetric&gt; at = symmetrize&lt;Antisymmetric&gt;(t);
  std::cout &lt;&lt; " t = " &lt;&lt; t &lt;&lt; std::endl;
  std::cout &lt;&lt; "at = " &lt;&lt; at &lt;&lt; std::endl;
! </blockquote></pre>
  produces the output:
  <blockquote><pre>
   t = ( ( 1 3 )( 2 4 ) )
   a = ( ( 0 0.5 )( -0.5 0 ) )
! </blockquote></pre>
  
  <p><dt> <tt>dot(Vector&amp;, Tensor&amp;)</tt>: 
  <dd>Returns a <tt>Vector</tt>
--- 520,531 ----
  Tensor&lt;2,double,Antisymmetric&gt; at = symmetrize&lt;Antisymmetric&gt;(t);
  std::cout &lt;&lt; " t = " &lt;&lt; t &lt;&lt; std::endl;
  std::cout &lt;&lt; "at = " &lt;&lt; at &lt;&lt; std::endl;
! </pre>
  produces the output:
  <blockquote><pre>
   t = ( ( 1 3 )( 2 4 ) )
   a = ( ( 0 0.5 )( -0.5 0 ) )
! </pre></blockquote>
  
  <p><dt> <tt>dot(Vector&amp;, Tensor&amp;)</tt>: 
  <dd>Returns a <tt>Vector</tt>
*************** considered for future releases.
*** 562,569 ****
  <p>Finally, as line&nbsp;45 shows, arrays of vectors can be output
  like arrays of any other type.
  
! <!---------------------------------------------------------------------->
! <a name="tensoraccum"><h3>A Note on Tensor Accumulators</h3></a>
  
  <P>Accumulation operators such as <tt>operator*=()</tt> acting on
  <tt>Tensor&lt;D,T,EngineTag&gt;</tt> may result in a <tt>Tensor</tt> having
--- 562,569 ----
  <p>Finally, as line&nbsp;45 shows, arrays of vectors can be output
  like arrays of any other type.
  
! <!-- -->
! <h3><a name="tensoraccum">A Note on Tensor Accumulators</a></h3>
  
  <P>Accumulation operators such as <tt>operator*=()</tt> acting on
  <tt>Tensor&lt;D,T,EngineTag&gt;</tt> may result in a <tt>Tensor</tt> having
*************** different symmetry (different <tt>Engine
*** 572,578 ****
  Tensor&lt;2,double,Antisymmetric&gt; t1, t2;
  // ... assign values
  t1 *= t2;
! </blockquote></pre>
  is incorrect, because the result of multiplying the two antisymmetric tensors
  would be a <em>symmetric</em> tensor, whose value is impossible to store in
  the left-hand-side object <tt>t1</tt>, which is an antisymmetric tensor.
--- 572,578 ----
  Tensor&lt;2,double,Antisymmetric&gt; t1, t2;
  // ... assign values
  t1 *= t2;
! </pre></blockquote>
  is incorrect, because the result of multiplying the two antisymmetric tensors
  would be a <em>symmetric</em> tensor, whose value is impossible to store in
  the left-hand-side object <tt>t1</tt>, which is an antisymmetric tensor.
*************** which do not change the symmetry. A cons
*** 583,590 ****
  reduction operator acting on <tt>Array</tt>s of <tt>Tensor</tt> elements which
  works is the <tt>sum()</tt> reduction.
  
! <!---------------------------------------------------------------------->
! <a name="multipatch"><h2>Using Multiple Patches</h2></a>
  
  <p>Our next Laplace equation solver uses the class
  <tt>MultiPatch</tt> to help POOMA take advantage
--- 583,590 ----
  reduction operator acting on <tt>Array</tt>s of <tt>Tensor</tt> elements which
  works is the <tt>sum()</tt> reduction.
  
! <!-- -->
! <h2><a name="multipatch">Using Multiple Patches</a></h2>
  
  <p>Our next Laplace equation solver uses the class
  <tt>MultiPatch</tt> to help POOMA take advantage
*************** presented in <a href="threading.html">th
*** 739,746 ****
  is more complex than the one above, but also has tighter control over
  what happens and when it happens.
  
! <!---------------------------------------------------------------------->
! <a name="guards"><h2>Guard Layers</h2></a>
  
  <p>Multipatch arrays do present a complication to the evaluation of
  expressions. Evaluation of stencils such as those involved in the
--- 739,746 ----
  is more complex than the one above, but also has tighter control over
  what happens and when it happens.
  
! <!-- -->
! <h2><a name="guards">Guard Layers</a></h2>
  
  <p>Multipatch arrays do present a complication to the evaluation of
  expressions. Evaluation of stencils such as those involved in the
*************** GuardLayers&lt;3&gt; internal(lower, upp
*** 804,811 ****
  guard layer on the lower side of the first dimension, and one on each
  the upper and lower sides of the third dimension.
  
! <!---------------------------------------------------------------------->
! <a name="layout"><h2>Taking Layout Into Account</h2></a>
  
  <p>We now examine how to construct a loop-based reduction engine that
  takes into account some of the different ways POOMA arrays can be laid
--- 804,811 ----
  guard layer on the lower side of the first dimension, and one on each
  the upper and lower sides of the third dimension.
  
! <!-- -->
! <h2><a name="layout">Taking Layout Into Account</a></h2>
  
  <p>We now examine how to construct a loop-based reduction engine that
  takes into account some of the different ways POOMA arrays can be laid
*************** results of profiling.
*** 981,988 ****
  <p>For an example of a program that uses ideas like these, but manages
  threads explicitly, see <a href="threading.html">the appendix</a>.
  
! <!---------------------------------------------------------------------->
! <a name="componentviews"><h2>Component Views</h2></a>
  
  <p>It is often useful to create an array of a structured type, such as
  a <tt>Vector&lt;3&gt;</tt>, and then select a view consisting of
--- 981,988 ----
  <p>For an example of a program that uses ideas like these, but manages
  threads explicitly, see <a href="threading.html">the appendix</a>.
  
! <!-- -->
! <h2><a name="componentviews">Component Views</a></h2>
  
  <p>It is often useful to create an array of a structured type, such as
  a <tt>Vector&lt;3&gt;</tt>, and then select a view consisting of
*************** typename ComponentView&lt;Loc&lt;1&gt;, 
*** 1028,1035 ****
  Up to 7 indices are supported, since programs can make
  <tt>Array</tt>s with <tt>Array</tt> elements.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>POOMA does its best to insulate programmers from the details of
  parallelism and modern memory hierarchies, but eventually these issues
--- 1028,1035 ----
  Up to 7 indices are supported, since programs can make
  <tt>Array</tt>s with <tt>Array</tt> elements.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>POOMA does its best to insulate programmers from the details of
  parallelism and modern memory hierarchies, but eventually these issues
*************** classes) which are used to implement the
*** 1050,1056 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 1050,1056 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-05.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-05.html,v
retrieving revision 1.1
diff -c -p -r1.1 tut-05.html
*** tut-05.html 19 Mar 2001 16:11:14 -0000      1.1
--- tut-05.html 20 Aug 2004 19:25:47 -0000
***************
*** 1,14 ****
  <!-- tut-05.html : fifth POOMA tutorial -->
  <!-- $Id: tut-05.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 5: Pointwise Operations</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 5<br>Pointwise Operations</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-05.html : fifth POOMA tutorial -->
  <!-- $Id: tut-05.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 5: Pointwise Operations</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 5<br>Pointwise Operations</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 16,27 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#pointwise">Pointwise Functions</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#stencils">Stencils</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bdry">Managing Boundaries by Hand</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bdry">Managing Boundaries 
Automatically</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>One of the major goals of POOMA is to support stencil-based
  computation on large arrays.  A <em>stencil</em> is a pattern of
--- 18,29 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#pointwise">Pointwise Functions</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#stencils">Stencils</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bdryh">Managing Boundaries by Hand</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bdrya">Managing Boundaries 
Automatically</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>One of the major goals of POOMA is to support stencil-based
  computation on large arrays.  A <em>stencil</em> is a pattern of
*************** implement functions that are to be appli
*** 37,44 ****
  of an array in turn.  More general stencils, which combine the values
  in regular or irregular neighborhoods, are then described.
  
! <!---------------------------------------------------------------------->
! <a name="pointwise"><h2>Pointwise Functions</h2></a>
  
  <p>The program below (included in the release as
  <tt>examples/UserFunction/CosTimes</tt>) shows how to create a
--- 39,46 ----
  of an array in turn.  More general stencils, which combine the values
  in regular or irregular neighborhoods, are then described.
  
! <!-- -->
! <h2><a name="pointwise">Pointwise Functions</a></h2>
  
  <p>The program below (included in the release as
  <tt>examples/UserFunction/CosTimes</tt>) shows how to create a
*************** input value:
*** 58,65 ****
  05  public:
  06    CosTimes(double x) : x_m(x) {}
  07    double operator()(double y) const { return cos(x_m*y); }
! 08    double &constant() { return x_m; }
! 09    const double &constant() const { return x_m; }
  10  private:
  11    double x_m;
  12  };
--- 60,67 ----
  05  public:
  06    CosTimes(double x) : x_m(x) {}
  07    double operator()(double y) const { return cos(x_m*y); }
! 08    double &amp;constant() { return x_m; }
! 09    const double &amp;constant() const { return x_m; }
  10  private:
  11    double x_m;
  12  };
*************** constructor argument to <tt>UserFunction
*** 144,151 ****
  templated constructor defined on lines 4-6 of the abbreviated class
  definition above.
  
! <!---------------------------------------------------------------------->
! <a name="stencils"><h2>Stencils</h2></a>
  
  <p>The <a href="tut-01.html">first tutorial</a> introduced Laplace's
  Equation in two dimensions, and described the way in which repeated
--- 146,153 ----
  templated constructor defined on lines 4-6 of the abbreviated class
  definition above.
  
! <!-- -->
! <h2><a name="stencils">Stencils</a></h2>
  
  <p>The <a href="tut-01.html">first tutorial</a> introduced Laplace's
  Equation in two dimensions, and described the way in which repeated
*************** element to the maximum value seen so far
*** 203,209 ****
  up, but almost certain to produce incorrect results when executed by
  multiple threads, or on distributed-memory platforms.
  
! <p><a name="extents">Classes used as arguments to <tt>Stencil</tt>
  must also implement two methods called <tt>lowerExtent()</tt> and
  <tt>upperExtent()</tt>.  These methods tell the framework the extent
  of the border that the stencil requires.  In the case of
--- 205,211 ----
  up, but almost certain to produce incorrect results when executed by
  multiple threads, or on distributed-memory platforms.
  
! <p><a name="extents">Classes</a> used as arguments to <tt>Stencil</tt>
  must also implement two methods called <tt>lowerExtent()</tt> and
  <tt>upperExtent()</tt>.  These methods tell the framework the extent
  of the border that the stencil requires.  In the case of
*************** direction along each axis the stencil re
*** 229,241 ****
  <tt>Loc</tt> returned by <tt>upperExtent()</tt> specifies the
  corresponding requirement in the positive direction.
  
! <p>Once this class has been created, the stencil can be applied to an
! array with the correct number of dimensions simply by calling it like
! a function (since the generic class <tt>Stencil</tt> overloads
! the parentheses operator).  The code that does this is included in the
! release in <tt>examples/Stencil/Laplace/Laplace.cpp</tt>, and is:
  
! <a name="stenciluse"><blockquote><pre>
  01  int main(int argc, char* argv[])
  02  {
  03    Pooma::initialize(argc,argv);
--- 231,244 ----
  <tt>Loc</tt> returned by <tt>upperExtent()</tt> specifies the
  corresponding requirement in the positive direction.
  
! <p>Once this class has been created, the <a
! name="stenciluse">stencil</a> can be applied to an array with the
! correct number of dimensions simply by calling it like a function
! (since the generic class <tt>Stencil</tt> overloads the parentheses
! operator).  The code that does this is included in the release in
! <tt>examples/Stencil/Laplace/Laplace.cpp</tt>, and is:
  
! <blockquote><pre>
  01  int main(int argc, char* argv[])
  02  {
  03    Pooma::initialize(argc,argv);
*************** for each stencil instance to use the sam
*** 346,353 ****
  having it be <tt>static</tt> to the class or by having each instance
  contain a pointer to the table.
  
! <!---------------------------------------------------------------------->
! <a name="bdry"><h2>Managing Boundaries by Hand</h2></a>
  
  <p>Managing a stencil's boundary conditions is often the most
  difficult part of creating a stencil-based application.  Part of the
--- 349,356 ----
  having it be <tt>static</tt> to the class or by having each instance
  contain a pointer to the table.
  
! <!-- -->
! <h2><a name="bdryh">Managing Boundaries by Hand</a></h2>
  
  <p>Managing a stencil's boundary conditions is often the most
  difficult part of creating a stencil-based application.  Part of the
*************** same result.  However, if the following 
*** 468,475 ****
  would be trying to read from non-existent array elements with indices
  such as <em>(-1,-1)</em>.
  
! <!---------------------------------------------------------------------->
! <a name="bdry"><h2>Managing Boundaries Automatically</h2></a>
  
  <p>Keeping track of the intervals that stencils read and write is
  tedious and error-prone.  As the <a href="tut-07.html">tutorial on
--- 471,478 ----
  would be trying to read from non-existent array elements with indices
  such as <em>(-1,-1)</em>.
  
! <!-- -->
! <h2><a name="bdrya">Managing Boundaries Automatically</a></h2>
  
  <p>Keeping track of the intervals that stencils read and write is
  tedious and error-prone.  As the <a href="tut-07.html">tutorial on
*************** read from an interval even larger than t
*** 540,547 ****
  and then try to assign the result to the smaller interval specified by
  <tt>interior</tt>.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>Many important and useful computations can be expressed as updates
  to individual elements of arrays, which may or may not involve
--- 543,550 ----
  and then try to assign the result to the smaller interval specified by
  <tt>interior</tt>.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>Many important and useful computations can be expressed as updates
  to individual elements of arrays, which may or may not involve
*************** multi-element stencils in an arbitrary n
*** 559,565 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 562,568 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-06.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-06.html,v
retrieving revision 1.2
diff -c -p -r1.2 tut-06.html
*** tut-06.html 26 Mar 2001 23:49:59 -0000      1.2
--- tut-06.html 20 Aug 2004 19:25:47 -0000
***************
*** 1,14 ****
  <!-- tut-06.html : sixth POOMA tutorial -->
  <!-- $Id: tut-06.html,v 1.2 2001/03/26 23:49:59 oldham Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 6: Indirect Addressing</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 6<br>Indirect Addressing</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-06.html : sixth POOMA tutorial -->
  <!-- $Id: tut-06.html,v 1.2 2001/03/26 23:49:59 oldham Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 6: Indirect Addressing</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 6<br>Indirect Addressing</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 18,25 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#example">Example</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>Indirect addressing is a fundamental operation in many numerical
  and scientific algorithms.  Instead of accessing array elements with
--- 20,27 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#example">Example</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>Indirect addressing is a fundamental operation in many numerical
  and scientific algorithms.  Instead of accessing array elements with
*************** vector).
*** 34,41 ****
  POOMA, and discusses some of the subtleties and complexities
  that arise when indirection and multithreading are combined.
  
! <!---------------------------------------------------------------------->
! <a name="Notation"><h2>Notation</h2></a>
  
  <p>Suppose that the array <tt>X</tt> contains the following values:
  
--- 36,43 ----
  POOMA, and discusses some of the subtleties and complexities
  that arise when indirection and multithreading are combined.
  
! <!-- -->
! <h2><a name="notation">Notation</a></h2>
  
  <p>Suppose that the array <tt>X</tt> contains the following values:
  
*************** domain of <tt>b</tt>.  In expressions li
*** 140,147 ****
  <tt>a(b)&nbsp;=&nbsp;c</tt>, the domains of <tt>c</tt> and <tt>b</tt>
  have to match, but the domain of <tt>a</tt> can be arbitrary.
  
! <!---------------------------------------------------------------------->
! <a name="example"><h2>Example</h2></a>
  
  <p>The example for this tutorial is a 1-dimensional Fast Fourier
  Transform (FFT) that shuffles data using indirect addressing.  This
--- 142,149 ----
  <tt>a(b)&nbsp;=&nbsp;c</tt>, the domains of <tt>c</tt> and <tt>b</tt>
  have to match, but the domain of <tt>a</tt> can be arbitrary.
  
! <!-- -->
! <h2><a name="example">Example</a></h2>
  
  <p>The example for this tutorial is a 1-dimensional Fast Fourier
  Transform (FFT) that shuffles data using indirect addressing.  This
*************** on demand.
*** 349,356 ****
  077  };
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>Efficient support for indirect addressing---the use of the values
  in one array to change the way another array's elements are
--- 351,358 ----
  077  };
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>Efficient support for indirect addressing---the use of the values
  in one array to change the way another array's elements are
*************** index operations.
*** 370,376 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 372,378 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-07.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-07.html,v
retrieving revision 1.3
diff -c -p -r1.3 tut-07.html
*** tut-07.html 29 May 2001 18:49:08 -0000      1.3
--- tut-07.html 20 Aug 2004 19:25:47 -0000
***************
*** 1,14 ****
  <!-- tut-07.html : seventh POOMA tutorial -->
  <!-- $Id: tut-07.html,v 1.3 2001/05/29 18:49:08 oldham Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 7: Meshes, Centerings, Geometries, and Fields</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 7<br>Meshes, Centerings, Geometries, and 
Fields</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-07.html : seventh POOMA tutorial -->
  <!-- $Id: tut-07.html,v 1.3 2001/05/29 18:49:08 oldham Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 7: Meshes, Centerings, Geometries, and Fields</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 7<br>Meshes, Centerings, Geometries, and 
Fields</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 26,35 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#example-nd">Example: N-Dimensional 
Scalar Advection</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
! <P>As mentioned in an <A HREF="../tut-05.html">earlier tutorial</A>,
  POOMA provides classes that know enough about their own spatial
  structure to manage stencil operations and the like automatically.
  The most important of these classes, <TT>Field</TT>, is the main
--- 28,37 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#example-nd">Example: N-Dimensional 
Scalar Advection</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
! <P>As mentioned in an <A HREF="tut-05.html">earlier tutorial</A>,
  POOMA provides classes that know enough about their own spatial
  structure to manage stencil operations and the like automatically.
  The most important of these classes, <TT>Field</TT>, is the main
*************** POOMA's mesh abstraction, then its repre
*** 42,49 ****
  its geometry abstraction, and finally how the two are tied together by
  <TT>Field</TT>.
  
! <!---------------------------------------------------------------------->
! <a name="overview"><h2>Overview</h2></a>
  
  <p>An array is a multi-element data structure, each of whose elements
  is specified by one or more indices.  An array's indices don't mean
--- 44,51 ----
  its geometry abstraction, and finally how the two are tied together by
  <TT>Field</TT>.
  
! <!-- -->
! <h2><a name="overview">Overview</a></h2>
  
  <p>An array is a multi-element data structure, each of whose elements
  is specified by one or more indices.  An array's indices don't mean
*************** locations of their values, and of their 
*** 99,106 ****
  example, the spatial locations of a <TT>Field</TT>'s elements can be
  accessed using the member function <TT>Field::x()</TT>.
  
! <!---------------------------------------------------------------------->
! <a name="mesh"><h2>Mesh</h2></a>
  
  <p>A <em>mesh</em> is a discrete domain (i.e. a discrete set of points
  in coordinate space) and some kind of connectivity rule.  This rule
--- 101,108 ----
  example, the spatial locations of a <TT>Field</TT>'s elements can be
  accessed using the member function <TT>Field::x()</TT>.
  
! <!-- -->
! <h2><a name="mesh">Mesh</a></h2>
  
  <p>A <em>mesh</em> is a discrete domain (i.e. a discrete set of points
  in coordinate space) and some kind of connectivity rule.  This rule
*************** respectively. All these methods return r
*** 286,293 ****
  data members, which can then be used like any other (read-only)
  <tt>Array</tt>.
  
! <!---------------------------------------------------------------------->
! <a name="centering"><h2>Centering</h2></a>
  
  <p>A mesh does not fully specify the geometry of a discrete field
  until it is combined with a centering.  Centerings are defined
--- 288,295 ----
  data members, which can then be used like any other (read-only)
  <tt>Array</tt>.
  
! <!-- -->
! <h2><a name="centering">Centering</a></h2>
  
  <p>A mesh does not fully specify the geometry of a discrete field
  until it is combined with a centering.  Centerings are defined
*************** example mesh zone in one, two, and three
*** 299,304 ****
--- 301,307 ----
  <center><table>
  
  <tr><td align="center"><a name="figure-1"><IMG SRC="centFigure1.gif"
+ ALT="centering examples"
  WIDTH="536" HEIGHT="210"></a></tr>
  
  <tr><td width="536"><em>Figure&nbsp;1: Sample rectilinear mesh zones.
*************** to a single zone in these cases.
*** 395,401 ****
  <center><table>
  
  <tr><td align="center"><a name="figure-2"><IMG SRC="centFigure2.gif"
! WIDTH="536" HEIGHT="210"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;2: Centering
  positions of <tt>FaceRCTag&lt;0&gt;</tt> in 1, 2, and 3
--- 398,404 ----
  <center><table>
  
  <tr><td align="center"><a name="figure-2"><IMG SRC="centFigure2.gif"
! ALT="face centering examples" WIDTH="536" HEIGHT="210"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;2: Centering
  positions of <tt>FaceRCTag&lt;0&gt;</tt> in 1, 2, and 3
*************** vectors indexable on this physical index
*** 418,424 ****
  <center><table>
  
  <tr><td align="center"><a name="figure-3"><IMG SRC="centFigure3.gif"
! WIDTH="451"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;3: Two-dimensional
  mesh with complete set of centering points.</em></tr>
--- 421,427 ----
  <center><table>
  
  <tr><td align="center"><a name="figure-3"><IMG SRC="centFigure3.gif"
! ALT="two-dimensional mesh centering example" WIDTH="451"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;3: Two-dimensional
  mesh with complete set of centering points.</em></tr>
*************** perpendicular components for these value
*** 444,450 ****
  <center><table>
  
  <tr><td align="center"><a name="figure-4"><IMG SRC="centFigure4.gif"
! WIDTH="451"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;4: Example of
        componentwise centering, showing
--- 447,453 ----
  <center><table>
  
  <tr><td align="center"><a name="figure-4"><IMG SRC="centFigure4.gif"
! ALT="VectorFace rectilinear centering" WIDTH="451"></a></tr>
  
  <tr><td align="center" width="536"><em>Figure&nbsp;4: Example of
        componentwise centering, showing
*************** WIDTH="451"></a></tr>
*** 453,460 ****
  
  </table></center>
  
! <!---------------------------------------------------------------------->
! <a name="centeringalloc"><h3>A Note on Allocation</h3></a>
  
  <P>For componentwise rectilinear centerings such as
  <tt>RectilinearCentering&lt;2,VectorFace&lt;2&gt; &gt;</tt>, POOMA
--- 456,463 ----
  
  </table></center>
  
! <!-- -->
! <h3><a name="centeringalloc">A Note on Allocation</a></h3>
  
  <P>For componentwise rectilinear centerings such as
  <tt>RectilinearCentering&lt;2,VectorFace&lt;2&gt; &gt;</tt>, POOMA
*************** in the associated <tt>DiscreteGeometry</
*** 464,471 ****
  <tt>Vector</tt> with both components at these extremal locations is
  allocated, but only the valid component is legally accessible.
  
! <!---------------------------------------------------------------------->
! <a name="geometry"><h2>Geometry</h2></a>
  
  <P>The next layer of support in POOMA for fields is its geometry
  abstraction. A geometry is a set of points in a coordinate space. This
--- 467,474 ----
  <tt>Vector</tt> with both components at these extremal locations is
  allocated, but only the valid component is legally accessible.
  
! <!-- -->
! <h2><a name="geometry">Geometry</a></h2>
  
  <P>The next layer of support in POOMA for fields is its geometry
  abstraction. A geometry is a set of points in a coordinate space. This
*************** methods listed below.
*** 673,680 ****
  
  </dl>
  
! <!---------------------------------------------------------------------->
! <a name="geomposition"><h3>A Note on Positions</h3></a>
  
  <P>The class used as the <tt>Geometry</tt> template parameter for
  <tt>Field</tt> must provide methods for returning the spatial
--- 676,683 ----
  
  </dl>
  
! <!-- -->
! <h3><a name="geomposition">A Note on Positions</a></h3>
  
  <P>The class used as the <tt>Geometry</tt> template parameter for
  <tt>Field</tt> must provide methods for returning the spatial
*************** geometry class which used a <tt>UniformR
*** 692,699 ****
  centers from the geometric centers to implement special types of <A
  HREF="tut-08.html#diffops">differential operators</A>.
  
! <!---------------------------------------------------------------------->
! <a name="field"><h2>Field</h2></a>
  
  <P>As stated above, the class <tt>Field</tt> represents both a region
  of space, and a set of values defined on and around that region---a
--- 695,702 ----
  centers from the geometric centers to implement special types of <A
  HREF="tut-08.html#diffops">differential operators</A>.
  
! <!-- -->
! <h2><a name="field">Field</a></h2>
  
  <P>As stated above, the class <tt>Field</tt> represents both a region
  of space, and a set of values defined on and around that region---a
*************** implied the possible existence of layers
*** 755,761 ****
  around discrete fields. These elements are used to implement boundary
  conditions, so that discrete operators can treat the "interesting"
  (i.e. interior) elements of <tt>Field</tt>s uniformly.  <a
! name="automatic-bc-update">A <tt>Field</tt> can automatically update
  parts of its domain using boundary condition objects stored in a
  list. Before being accessed, these boundary condition objects can be
  queried as to whether the domain they manage needs updating, and then
--- 758,764 ----
  around discrete fields. These elements are used to implement boundary
  conditions, so that discrete operators can treat the "interesting"
  (i.e. interior) elements of <tt>Field</tt>s uniformly.  <a
! name="automatic-bc-update">A <tt>Field</tt> can automatically update</a>
  parts of its domain using boundary condition objects stored in a
  list. Before being accessed, these boundary condition objects can be
  queried as to whether the domain they manage needs updating, and then
*************** defined in the <tt>RectilinearMesh</tt> 
*** 818,825 ****
  <tt>UniformRectilinearMesh</tt> object used to construct the
  <tt>DiscreteGeometry</tt>.
  
! <!---------------------------------------------------------------------->
! <a name="fieldalloc"><h3>A Note on Allocation</h3></a>
  
  <p>What's going on under the hood when an application makes a
  <tt>DiscreteGeometry</tt> object with this <tt>VectorFace</tt> type of
--- 821,828 ----
  <tt>UniformRectilinearMesh</tt> object used to construct the
  <tt>DiscreteGeometry</tt>.
  
! <!-- -->
! <h3><a name="fieldalloc">A Note on Allocation</a></h3>
  
  <p>What's going on under the hood when an application makes a
  <tt>DiscreteGeometry</tt> object with this <tt>VectorFace</tt> type of
*************** uses this geometry (whose <tt>Field::x()
*** 845,852 ****
  <tt>Field::geometry()::x()</tt>) will therefore automatically have its
  domain aligned with that of the geometry.
  
! <!---------------------------------------------------------------------->
! <a name="example-1d"><h2>Example: One-Dimensional Scalar Advection</h2></a>
  
  <p>The example program in <tt>examples/Field/ScalarAdvection1D</tt>
  illustrates the features of fields introduced so far by simulating
--- 848,855 ----
  <tt>Field::geometry()::x()</tt>) will therefore automatically have its
  domain aligned with that of the geometry.
  
! <!-- -->
! <h2><a name="example-1d">Example: One-Dimensional Scalar Advection</a></h2>
  
  <p>The example program in <tt>examples/Field/ScalarAdvection1D</tt>
  illustrates the features of fields introduced so far by simulating
*************** u(x,t) = u0(x - vt)
*** 872,878 ****
  <p>The figure below shows that the numerical solution approximates
  this well.
  
! <p align="center"><a name="advection-image"><img align="center" 
src="advection1d.gif"></a>
  
  <p>This equation is a special 1-dimensional version of the general
  flux-conservative equation:
--- 875,882 ----
  <p>The figure below shows that the numerical solution approximates
  this well.
  
! <center><a name="advection-image"><img
! SRC="advection1d.gif" ALT="1-dimensional scalar advection"></a></center>
  
  <p>This equation is a special 1-dimensional version of the general
  flux-conservative equation:
*************** flux-conservative equation:
*** 881,887 ****
  du(x,y,z,t)/dt = - div(F)
  </em></center>
  
! <p,>where <em>F</em> is a vector function:
  
  <p><center><em>
  F = (F<sub>x</sub>(x,y,z,t), F<sub>y</sub>(x,y,z,t), F<sub>z</sub>(x,y,z,t))
--- 885,891 ----
  du(x,y,z,t)/dt = - div(F)
  </em></center>
  
! <p>where <em>F</em> is a vector function:
  
  <p><center><em>
  F = (F<sub>x</sub>(x,y,z,t), F<sub>y</sub>(x,y,z,t), F<sub>z</sub>(x,y,z,t))
*************** This helps keep the code correct as it e
*** 1070,1077 ****
  important step toward generalizing codes such as this to handle an
  arbitrary number of dimensions.
  
! <!---------------------------------------------------------------------->
! <a name="example-nd"><h2>Example: N-Dimensional Scalar Advection</h2></a>
  
  <P>The differential equation solved in the preceding example is a
  special 1-dimensional version of the general flux-conservative
--- 1074,1081 ----
  important step toward generalizing codes such as this to handle an
  arbitrary number of dimensions.
  
! <!-- -->
! <h2><a name="example-nd">Example: N-Dimensional Scalar Advection</a></h2>
  
  <P>The differential equation solved in the preceding example is a
  special 1-dimensional version of the general flux-conservative
*************** line 13 in the following source code:
*** 1240,1246 ****
  088    Pooma::finalize();  
  089    return 0;
  090  }
! </blockquote></pre>
  
  <P>The key lines are 13-15, which define the dimensionality of the
  simulation, and the size of the domain on which the simulation will be
--- 1244,1250 ----
  088    Pooma::finalize();  
  089    return 0;
  090  }
! </pre></blockquote>
  
  <P>The key lines are 13-15, which define the dimensionality of the
  simulation, and the size of the domain on which the simulation will be
*************** is created on lines 51-55.  The result i
*** 1260,1267 ****
  lines longer than its one-dimensional equivalent, but capable of
  changing dimension with ease.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>One of the principal motivations behind POOMA is to provide C++
  classes which directly address numerical science problems using the
--- 1264,1271 ----
  lines longer than its one-dimensional equivalent, but capable of
  changing dimension with ease.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>One of the principal motivations behind POOMA is to provide C++
  classes which directly address numerical science problems using the
*************** to be calculated.
*** 1283,1289 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 1287,1293 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-08.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-08.html,v
retrieving revision 1.3
diff -c -p -r1.3 tut-08.html
*** tut-08.html 29 May 2001 18:49:08 -0000      1.3
--- tut-08.html 20 Aug 2004 19:25:48 -0000
***************
*** 1,19 ****
! <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  <html>
  <head>
  <title>POOMA Tutorial 8: More on Meshes, Centerings, Geometries, and 
Fields</title>
  <!-- tut-08.html : seventh POOMA tutorial -->
  <!-- $Id: tut-08.html,v 1.3 2001/05/29 18:49:08 oldham Exp $ -->
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <center>
! <h1>
! <img SRC="banner.gif" X-SAS-UseImageWidth X-SAS-UseImageHeight height=100 
width=550 align=BOTTOM></h1></center>
  
  <center><h1>POOMA Tutorial 8<br>More on Meshes, Centerings, Geometries, and 
Fields</h1></center>
  
! <b><font size=+1>Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#diffops">Div, Grad, and Averaging</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mesh">More on Meshes</a>
--- 1,19 ----
! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 8: More on Meshes, Centerings, Geometries, and 
Fields</title>
  <!-- tut-08.html : seventh POOMA tutorial -->
  <!-- $Id: tut-08.html,v 1.3 2001/05/29 18:49:08 oldham Exp $ -->
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 8<br>More on Meshes, Centerings, Geometries, and 
Fields</h1></center>
  
! <b><font size="+1">Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#diffops">Div, Grad, and Averaging</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mesh">More on Meshes</a>
***************
*** 28,35 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#bdryop">Associating Boundary Conditions with Operators</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a NAME="intro"><h2>Introduction</h2></a>
  
  <p>The <a href="tut-07.html">previous tutorial</a> introduced the
  basic features of POOMA's <tt>Field</tt> classes, and the supporting
--- 28,35 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#bdryop">Associating Boundary Conditions with Operators</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a NAME="intro">Introduction</a></h2>
  
  <p>The <a href="tut-07.html">previous tutorial</a> introduced the
  basic features of POOMA's <tt>Field</tt> classes, and the supporting
*************** mesh and geometry classes. This tutorial
*** 37,44 ****
  advanced features of these classes, including centering, differential
  operators, views, and stencils.
  
! <!---------------------------------------------------------------------->
! <a NAME="diffops"><h2>Div, Grad, and Averaging</h2></a>
  
  <p> One way to implement discrete spatial differencing operators is to
  write data-parallel expressions using indexing objects and offsets, as
--- 37,44 ----
  advanced features of these classes, including centering, differential
  operators, views, and stencils.
  
! <!-- -->
! <h2><a NAME="diffops">Div, Grad, and Averaging</a></h2>
  
  <p> One way to implement discrete spatial differencing operators is to
  write data-parallel expressions using indexing objects and offsets, as
*************** template&lt;class OutputCentering, class
*** 96,102 ****
  typename 
    View1&lt;FieldStencil&lt;Div&lt;OutputCentering, Geometry, T&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! div(const ConstField&lt;Geometry, T, EngineTag&gt; &f)
  {
    typedef FieldStencil&lt;Div&lt;OutputCentering, Geometry, T&gt; &gt; 
Functor_t;
    typedef ConstField&lt;Geometry, T, EngineTag&gt; Expression_t;
--- 96,102 ----
  typename 
    View1&lt;FieldStencil&lt;Div&lt;OutputCentering, Geometry, T&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! div(const ConstField&lt;Geometry, T, EngineTag&gt; &amp;f)
  {
    typedef FieldStencil&lt;Div&lt;OutputCentering, Geometry, T&gt; &gt; 
Functor_t;
    typedef ConstField&lt;Geometry, T, EngineTag&gt; Expression_t;
*************** template&lt;class OutputCentering, class
*** 119,125 ****
  typename 
    View1&lt;FieldStencil&lt;Grad&lt;OutputCentering, Geometry, T&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! grad(const ConstField&lt;Geometry, T, EngineTag&gt; &f)
  {
    typedef FieldStencil&lt;Grad&lt;OutputCentering, Geometry, T&gt; &gt; 
Functor_t;
    typedef ConstField&lt;Geometry, T, EngineTag&gt; Expression_t;
--- 119,125 ----
  typename 
    View1&lt;FieldStencil&lt;Grad&lt;OutputCentering, Geometry, T&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! grad(const ConstField&lt;Geometry, T, EngineTag&gt; &amp;f)
  {
    typedef FieldStencil&lt;Grad&lt;OutputCentering, Geometry, T&gt; &gt; 
Functor_t;
    typedef ConstField&lt;Geometry, T, EngineTag&gt; Expression_t;
*************** typename 
*** 200,206 ****
    View1&lt;FieldStencil&lt;Average&lt;OutputCentering, Geometry, T, 
      MeshTraits&lt;typename Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; 
&gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! average(const ConstField&lt;Geometry, T, EngineTag&gt; &f)
  {
    typedef FieldStencil&lt;Average&lt;OutputCentering, Geometry, T, 
      MeshTraits&lt;typename Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; 
&gt;
--- 200,206 ----
    View1&lt;FieldStencil&lt;Average&lt;OutputCentering, Geometry, T, 
      MeshTraits&lt;typename Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; 
&gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt; &gt;::Type_t 
! average(const ConstField&lt;Geometry, T, EngineTag&gt; &amp;f)
  {
    typedef FieldStencil&lt;Average&lt;OutputCentering, Geometry, T, 
      MeshTraits&lt;typename Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; 
&gt;
*************** typename 
*** 221,228 ****
      TW, MeshTraits&lt;typename 
Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt;,
      ConstField&lt;Geometry, TW, EngineTagW&gt; &gt;::Type_t 
! average(const ConstField&lt;Geometry, T, EngineTag&gt; &f, 
!       const ConstField&lt;Geometry, TW, EngineTagW&gt; &weight)
  {
    typedef WeightedFieldStencil&lt;WeightedAverage&lt;OutputCentering, 
Geometry, T, 
      TW, MeshTraits&lt;typename 
Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; &gt;
--- 221,228 ----
      TW, MeshTraits&lt;typename 
Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; &gt;, 
      ConstField&lt;Geometry, T, EngineTag&gt;,
      ConstField&lt;Geometry, TW, EngineTagW&gt; &gt;::Type_t 
! average(const ConstField&lt;Geometry, T, EngineTag&gt; &amp;f, 
!       const ConstField&lt;Geometry, TW, EngineTagW&gt; &amp;weight)
  {
    typedef WeightedFieldStencil&lt;WeightedAverage&lt;OutputCentering, 
Geometry, T, 
      TW, MeshTraits&lt;typename 
Geometry::Mesh_t&gt;::isLogicallyRectilinear&gt; &gt;
*************** multiplies the set of values of the <tt>
*** 240,247 ****
  produce an output value.  The sum of these weighted values are
  normalized by dividing by the sum of the weight values.
  
! <!---------------------------------------------------------------------->
! <a NAME="mesh"><h2>More on Meshes</h2></a>
  
  <p> POOMA's <tt>UniformRectilinearMesh</tt> and
  <tt>RectilinearMesh</tt> also expose some data arrays that provide
--- 240,247 ----
  produce an output value.  The sum of these weighted values are
  normalized by dividing by the sum of the weight values.
  
! <!-- -->
! <h2><a NAME="mesh">More on Meshes</a></h2>
  
  <p> POOMA's <tt>UniformRectilinearMesh</tt> and
  <tt>RectilinearMesh</tt> also expose some data arrays that provide
*************** RectilinearMesh&lt;Dim&gt;::PointType_t 
*** 471,478 ****
  Loc&lt;Dim&gt; whereItsAt = mesh.cellContaining(point);
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a NAME="views"><h2>Views and the Loss of Geometry Information</h2></a>
  
  <p> <tt>Field</tt> and <tt>ConstField</tt> support the same sort of
  view operations as the corresponding array classes:
--- 471,478 ----
  Loc&lt;Dim&gt; whereItsAt = mesh.cellContaining(point);
  </pre></blockquote>
  
! <!-- -->
! <h2><a NAME="views">Views and the Loss of Geometry Information</a></h2>
  
  <p> <tt>Field</tt> and <tt>ConstField</tt> support the same sort of
  view operations as the corresponding array classes:
*************** can find themselves at the leaf of a PET
*** 594,601 ****
  <tt>Field</tt>s of some sort. Also, as a general rule, POOMA attempts
  to preserve as much information as possible when applying views.
  
! <!---------------------------------------------------------------------->
! <a NAME="operations"><h2>Operations and Their Results</h2></a>
  
  <p>The rules governing the results of operations on <tt>Field</tt>s
  are more complex than those for <tt>Array</tt>s because
--- 594,601 ----
  <tt>Field</tt>s of some sort. Also, as a general rule, POOMA attempts
  to preserve as much information as possible when applying views.
  
! <!-- -->
! <h2><a NAME="operations">Operations and Their Results</a></h2>
  
  <p>The rules governing the results of operations on <tt>Field</tt>s
  are more complex than those for <tt>Array</tt>s because
*************** otherwise noted):
*** 641,647 ****
  <p>It may be useful to compare this table to the one given in the <a
  href="tut-02.html#array-operations-table">second tutorial</a>.
  
! <p><a NAME="field-operations-table">
  <table border="1" cellspacing="1" cellpadding="0">
  
  <tr>  <td WIDTH="32%"><b>Operation</b>
--- 641,647 ----
  <p>It may be useful to compare this table to the one given in the <a
  href="tut-02.html#array-operations-table">second tutorial</a>.
  
! <p>
  <table border="1" cellspacing="1" cellpadding="0">
  
  <tr>  <td WIDTH="32%"><b>Operation</b>
*************** with a geometry of type <tt>NoGeometry&l
*** 788,795 ****
  is dimensionality.  The reason for this, and the difficulties that can
  ensue, were discussed <a href="#nogeometry">earlier</a>.
  
! <!---------------------------------------------------------------------->
! <a NAME="stencils"><h2>Field Stencils</h2></a>
  
  <p> The <a href="tut-05.html">tutorial on pointwise functions</a>
  introduced the <tt>Stencil</tt> class that is used to implement
--- 788,795 ----
  is dimensionality.  The reason for this, and the difficulties that can
  ensue, were discussed <a href="#nogeometry">earlier</a>.
  
! <!-- -->
! <h2><a NAME="stencils">Field Stencils</a></h2>
  
  <p> The <a href="tut-05.html">tutorial on pointwise functions</a>
  introduced the <tt>Stencil</tt> class that is used to implement
*************** single value of the argument <tt>d</tt>.
*** 941,947 ****
  <center><table>
  
  <tr>
! <td ALIGN=CENTER><a NAME="figure-1"></a><img SRC="extents.gif" height=190 
width=644>
  </tr>
  
  <tr>
--- 941,948 ----
  <center><table>
  
  <tr>
! <td ALIGN=CENTER><a NAME="figure-1"></a><img SRC="extents.gif"
! ALT="vertex and cell indices" height=190 width=644>
  </tr>
  
  <tr>
*************** appropriate <tt>FieldStencil&lt;class&nb
*** 1001,1008 ****
  the <tt>div()</tt> function described <a
  href="#divfunction">above</a>.
  
! <!---------------------------------------------------------------------->
! <a NAME="bdry"><h2>More on Boundary Conditions</h2></a>
  
  <p>Whenever POOMA encounters a data-parallel expression involving
  fields, boundary conditions may be applied. However, POOMA tries to
--- 1002,1009 ----
  the <tt>div()</tt> function described <a
  href="#divfunction">above</a>.
  
! <!-- -->
! <h2><a NAME="bdry">More on Boundary Conditions</a></h2>
  
  <p>Whenever POOMA encounters a data-parallel expression involving
  fields, boundary conditions may be applied. However, POOMA tries to
*************** before a field is printed. Applications 
*** 1040,1046 ****
  <tt>applyBoundaryConditions()</tt> before output statements to ensure
  that the boundary values displayed are up to date.
  
! <a name="bdryprebuilt"><h3>Using Pre-Built Boundary Conditions</h3></a>
  
  <p>POOMA includes a number of pre-built boundary conditions for use
  with fields and the supplied rectilinear meshes. For example, the
--- 1041,1047 ----
  <tt>applyBoundaryConditions()</tt> before output statements to ensure
  that the boundary values displayed are up to date.
  
! <h3><a name="bdryprebuilt">Using Pre-Built Boundary Conditions</a></h3>
  
  <p>POOMA includes a number of pre-built boundary conditions for use
  with fields and the supplied rectilinear meshes. For example, the
*************** bool isHigh   = (face &amp; 1);
*** 1071,1079 ****
  <p>The high face in the Y direction therefore has a face index of 3
  (second axis, second face).
  
! <p>The pre-built boundary conditions supported by POOMA are:
! 
! <ul><a name="builtinbc">
        <li><tt>ConstantFaceBC&lt;T&gt;(int face, T constant, bool 
enforceConstantBoundary = false);</tt>
        <li><tt>LinearExtrapolateFaceBC(int face);</tt>
        <li><tt>NegReflectFaceBC(int face, bool enforceZeroBoundary = 
false);</tt>
--- 1072,1079 ----
  <p>The high face in the Y direction therefore has a face index of 3
  (second axis, second face).
  
! <p>The <a name="builtinbc">pre-built boundary conditions</a> supported by 
POOMA are:
! <ul>
        <li><tt>ConstantFaceBC&lt;T&gt;(int face, T constant, bool 
enforceConstantBoundary = false);</tt>
        <li><tt>LinearExtrapolateFaceBC(int face);</tt>
        <li><tt>NegReflectFaceBC(int face, bool enforceZeroBoundary = 
false);</tt>
*************** that the mesh-boundary value is zero. Th
*** 1124,1130 ****
  vertex-centered field values/components because the boundary is
  defined to be the last vertex.
  
! <a name="bdrycomponent"><h3>Setting Boundary Conditions on Components</h3></a>
  
  <p>Applications often need to apply different boundary conditions to
  different components of a <tt>Vector</tt> or <tt>Tensor</tt> field.
--- 1124,1130 ----
  vertex-centered field values/components because the boundary is
  defined to be the last vertex.
  
! <h3><a name="bdrycomponent">Setting Boundary Conditions on Components</a></h3>
  
  <p>Applications often need to apply different boundary conditions to
  different components of a <tt>Vector</tt> or <tt>Tensor</tt> field.
*************** templated on the number of indices (1 fo
*** 1167,1173 ****
  indices specifying the components followed by the constructor
  arguments for the boundary condition.
  
! <a name="bdryfunctor"><h3>Boundary Condition Initialization Functors</h3></a>
  
  <p>It is often easiest for an application to set all of a field's
  boundary conditions at once. POOMA supports this by allowing boundary
--- 1167,1173 ----
  indices specifying the components followed by the constructor
  arguments for the boundary condition.
  
! <h3><a name="bdryfunctor">Boundary Condition Initialization Functors</a></h3>
  
  <p>It is often easiest for an application to set all of a field's
  boundary conditions at once. POOMA supports this by allowing boundary
*************** conditions given in the <a href="#builti
*** 1220,1226 ****
        <li><tt>AllZeroFaceBC(bool enforceZeroBoundary = false);</tt>
  </ul>
  
! <a name="bdrywrite"><h3>Writing Boundary Conditions</h3></a>
  
  <p>In order to add a new type of boundary condition for POOMA, an
  application must define two classes: a boundary condition category,
--- 1220,1226 ----
        <li><tt>AllZeroFaceBC(bool enforceZeroBoundary = false);</tt>
  </ul>
  
! <h3><a name="bdrywrite">Writing Boundary Conditions</a></h3>
  
  <p>In order to add a new type of boundary condition for POOMA, an
  application must define two classes: a boundary condition category,
*************** above uses straightforward data-parallel
*** 1368,1374 ****
  conditions. More sophisticated examples are included in the 
<tt>src/BConds</tt>
  directory in the release.
  
! <a name="bdryop"><h3>Associating Boundary Conditions with Operators</h3></a>
  
  <p>By default, POOMA associates boundary conditions with fields. This was done
  to allow automatic computation of boundary conditions and for compatibility
--- 1368,1374 ----
  conditions. More sophisticated examples are included in the 
<tt>src/BConds</tt>
  directory in the release.
  
! <h3><a name="bdryop">Associating Boundary Conditions with Operators</a></h3>
  
  <p>By default, POOMA associates boundary conditions with fields. This was done
  to allow automatic computation of boundary conditions and for compatibility
*************** applies them.</p>
*** 1570,1577 ****
  <p>Future versions of POOMA will better support this paradigm of associating 
boundary 
  conditions with operators.</p>
  
! <!---------------------------------------------------------------------->
! <a NAME="summary"><h2>Summary</h2></a>
  
  <p> Fields are among the most important structures in physics, and
  POOMA's <tt>Field</tt> classes are one of the things that make it more
--- 1570,1577 ----
  <p>Future versions of POOMA will better support this paradigm of associating 
boundary 
  conditions with operators.</p>
  
! <!-- -->
! <h2><a NAME="summary">Summary</a></h2>
  
  <p> Fields are among the most important structures in physics, and
  POOMA's <tt>Field</tt> classes are one of the things that make it more
*************** power and high performance.
*** 1591,1597 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 1591,1597 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-09.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-09.html,v
retrieving revision 1.2
diff -c -p -r1.2 tut-09.html
*** tut-09.html 26 Mar 2001 21:41:12 -0000      1.2
--- tut-09.html 20 Aug 2004 19:25:48 -0000
***************
*** 1,14 ****
  <!-- tut-09.html : ninth POOMA tutorial -->
  <!-- $Id: tut-09.html,v 1.2 2001/03/26 21:41:12 oldham Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 9: Particles</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 9<br>Particles</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-09.html : ninth POOMA tutorial -->
  <!-- $Id: tut-09.html,v 1.2 2001/03/26 21:41:12 oldham Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 9: Particles</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 9<br>Particles</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 24,31 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bounce">Example: Elastic Collision</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p> Particles are primarily used in one of two ways in large
  scientific applications.  The first is to track sample particles using
--- 26,33 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#bounce">Example: Elastic Collision</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p> Particles are primarily used in one of two ways in large
  scientific applications.  The first is to track sample particles using
*************** the walls of a closed three-dimensional 
*** 50,57 ****
  href="tut-10.html">next tutorial</a> then shows how particles and
  fields can be combined to create complete simulation applications.
  
! <!---------------------------------------------------------------------->
! <a name="overview"><h2>Overview</h2></a>
  
  <p> POOMA's <tt>Particles</tt> class is a container for a
  heterogeneous collection of particle attributes.  The class uses
--- 52,59 ----
  href="tut-10.html">next tutorial</a> then shows how particles and
  fields can be combined to create complete simulation applications.
  
! <!-- -->
! <h2><a name="overview">Overview</a></h2>
  
  <p> POOMA's <tt>Particles</tt> class is a container for a
  heterogeneous collection of particle attributes.  The class uses
*************** spatial position.  This strategy is usef
*** 94,101 ****
  particles need to interact with field data or with particles nearby to
  them.
  
! <!---------------------------------------------------------------------->
! <a name="attributes"><h2>Attributes</h2></a>
  
  <p> Each particle attribute is implemented as a <tt>DynamicArray</tt>,
  a class derived from the one-dimensional specialization of POOMA's
--- 96,103 ----
  particles need to interact with field data or with particles nearby to
  them.
  
! <!-- -->
! <h2><a name="attributes">Attributes</a></h2>
  
  <p> Each particle attribute is implemented as a <tt>DynamicArray</tt>,
  a class derived from the one-dimensional specialization of POOMA's
*************** for (int i=0; i&lt;n; ++i)
*** 134,141 ****
  
  <p> run more quickly, as it makes much better use of the cache.
  
! <!---------------------------------------------------------------------->
! <a name="layout"><h2>Layout</h2></a>
  
  <p> As mentioned above, each <tt>Particles</tt> object uses a layout
  object to determine in which patch a particle's data should be stored.
--- 136,143 ----
  
  <p> run more quickly, as it makes much better use of the cache.
  
! <!-- -->
! <h2><a name="layout">Layout</a></h2>
  
  <p> As mentioned above, each <tt>Particles</tt> object uses a layout
  object to determine in which patch a particle's data should be stored.
*************** move their data as needed.  All of this 
*** 151,158 ****
  <tt>Particles::sync()</tt>, which in turn calls
  <tt>Particles::swap()</tt> to actually move particle data around.
  
! <!---------------------------------------------------------------------->
! <a name="derive"><h2>Derivation</h2></a>
  
  <p>In general, creating a new <tt>Particles</tt> class is a three-step
  process.  The first step is to declare a traits class whose
--- 153,160 ----
  <tt>Particles::sync()</tt>, which in turn calls
  <tt>Particles::swap()</tt> to actually move particle data around.
  
! <!-- -->
! <h2><a name="derive">Derivation</a></h2>
  
  <p>In general, creating a new <tt>Particles</tt> class is a three-step
  process.  The first step is to declare a traits class whose
*************** also makes it easier to specify the same
*** 293,300 ****
  layout) for two or more interacting <tt>Particles</tt>-derived
  classes.
  
! <!---------------------------------------------------------------------->
! <a name="synch"><h2>Synchronization and Related Issues</h2></a>
  
  <p>For efficiency reasons, <tt>Particles</tt> does not automatically
  move particle data between patches after every operation, but instead
--- 295,302 ----
  layout) for two or more interacting <tt>Particles</tt>-derived
  classes.
  
! <!-- -->
! <h2><a name="synch">Synchronization and Related Issues</a></h2>
  
  <p>For efficiency reasons, <tt>Particles</tt> does not automatically
  move particle data between patches after every operation, but instead
*************** If the global domain is not up to date, 
*** 408,415 ****
  access the <em>i<sup>th</sup></em> particle's data or evaluate a
  data-parallel expression.
  
! <!---------------------------------------------------------------------->
! <a name="oscillation"><h2>Example: Simple Harmonic Oscillator</h2></a>
  
  <p>The example for this tutorial simulates the motion of particles
  under the influence of a simple one-dimensional harmonic oscillator
--- 410,417 ----
  access the <em>i<sup>th</sup></em> particle's data or evaluate a
  data-parallel expression.
  
! <!-- -->
! <h2><a name="oscillation">Example: Simple Harmonic Oscillator</a></h2>
  
  <p>The example for this tutorial simulates the motion of particles
  under the influence of a simple one-dimensional harmonic oscillator
*************** variables, rather than hard-wired consta
*** 578,584 ****
  
  <p>After the POOMA library is initialized (line&nbsp;71), an
  <tt>Inform</tt> object is created to manage output.  (See the <a
! href="io.html">appendix on I/O</a> for a description of this class.)
  An actual layout is then created (line&nbsp;76), and used to create an
  actual set of particles (line&nbsp;80).  The particles themselves are
  created by the call to <tt>Particles::create()</tt> on line&nbsp;83.
--- 580,586 ----
  
  <p>After the POOMA library is initialized (line&nbsp;71), an
  <tt>Inform</tt> object is created to manage output.  (See the <a
! href="tut-11.html">appendix on I/O</a> for a description of this class.)
  An actual layout is then created (line&nbsp;76), and used to create an
  actual set of particles (line&nbsp;80).  The particles themselves are
  created by the call to <tt>Particles::create()</tt> on line&nbsp;83.
*************** oscillator force, and then printed out. 
*** 601,608 ****
  timesteps has been executed, the library is shut down (line&nbsp;136)
  and the application exits.
  
! <!---------------------------------------------------------------------->
! <a name="bdry"><h2>Boundary Conditions</h2></a>
  
  <p> In addition to an <tt>AttributeList</tt>, each <tt>Particles</tt>
  object also stores a <tt>ParticleBCList</tt> of boundary conditions to
--- 603,610 ----
  timesteps has been executed, the library is shut down (line&nbsp;136)
  and the application exits.
  
! <!-- -->
! <h2><a name="bdry">Boundary Conditions</a></h2>
  
  <p> In addition to an <tt>AttributeList</tt>, each <tt>Particles</tt>
  object also stores a <tt>ParticleBCList</tt> of boundary conditions to
*************** in the table below.
*** 684,691 ****
  
  </table>
  
! <!---------------------------------------------------------------------->
! <a name="bounce"><h2>Example: Elastic Collision</h2></a>
  
  <p>As an example of how particle boundary conditions are used,
  consider a set of particles bouncing around in a box in three
--- 686,693 ----
  
  </table>
  
! <!-- -->
! <h2><a name="bounce">Example: Elastic Collision</a></h2>
  
  <p>As an example of how particle boundary conditions are used,
  consider a set of particles bouncing around in a box in three
*************** loop now consists of nothing more than a
*** 878,885 ****
  time step, and calling <tt>applyBoundaryCondition()</tt> to enforce the 
boundary
  conditions.
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>Particles are a fundamental construct in physical calculations.
  POOMA's <tt>Particles</tt> class, and the classes that support it,
--- 880,887 ----
  time step, and calling <tt>applyBoundaryCondition()</tt> to enforce the 
boundary
  conditions.
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>Particles are a fundamental construct in physical calculations.
  POOMA's <tt>Particles</tt> class, and the classes that support it,
*************** index 0 refers to the first particle in 
*** 985,991 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 987,993 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-10.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-10.html,v
retrieving revision 1.1
diff -c -p -r1.1 tut-10.html
*** tut-10.html 19 Mar 2001 16:11:14 -0000      1.1
--- tut-10.html 20 Aug 2004 19:25:48 -0000
***************
*** 1,14 ****
  <!-- tut-10.html : tenth POOMA tutorial -->
  <!-- $Id: tut-10.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 10: Particles and Fields</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center><h1>POOMA Tutorial 10<br>Particles and Fields</h1></center>
  
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- tut-10.html : tenth POOMA tutorial -->
  <!-- $Id: tut-10.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 10: Particles and Fields</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 10<br>Particles and Fields</h1></center>
  
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 19,26 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#pic2d">Example: Particle-in-Cell 
Simulation</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!---------------------------------------------------------------------->
! <a name="intro"><h2>Introduction</h2></a>
  
  <p>The previous tutorials have described how POOMA represents <a
  href="tut-07.html">fields</a> and <a href="tut-09.html">particles</a>.
--- 21,28 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#pic2d">Example: Particle-in-Cell 
Simulation</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#summary">Summary</a>
  
! <!-- -->
! <h2><a name="intro">Introduction</a></h2>
  
  <p>The previous tutorials have described how POOMA represents <a
  href="tut-07.html">fields</a> and <a href="tut-09.html">particles</a>.
*************** particle data.  This is followed by a lo
*** 31,38 ****
  layout, and a medium-sized example that illustrates how these ideas
  fit together.
  
! <!---------------------------------------------------------------------->
! <a name="gatherscatter"><h2>Particle/Field Interpolation</h2></a>
  
  <p> POOMA's <tt>Particles</tt> class is designed to be used in
  conjunction with its <tt>Field</tt>s.  <em>Interpolators</em> are the
--- 33,40 ----
  layout, and a medium-sized example that illustrates how these ideas
  fit together.
  
! <!-- -->
! <h2><a name="gatherscatter">Particle/Field Interpolation</a></h2>
  
  <p> POOMA's <tt>Particles</tt> class is designed to be used in
  conjunction with its <tt>Field</tt>s.  <em>Interpolators</em> are the
*************** manner.
*** 66,72 ****
  
  <center><table>
  
! <tr><td align="center"><a name="figure-1"><IMG SRC="interpFigure.gif" 
width="613" height="230"></a></tr>
  
  <tr><td width="613" align="center"><em>Figure&nbsp;1: Interpolation
  strategies.  Black dots show particle positions, and open circles are
--- 68,75 ----
  
  <center><table>
  
! <tr><td align="center"><a name="figure-1"><IMG SRC="interpFigure.gif"
! ALT="three interpolation strategies" width="613" height="230"></a></tr>
  
  <tr><td width="613" align="center"><em>Figure&nbsp;1: Interpolation
  strategies.  Black dots show particle positions, and open circles are
*************** considerably, but it is important to not
*** 147,154 ****
  do this safely when the particle positions are guaranteed not to have
  changed since the last interpolation.
  
! <!---------------------------------------------------------------------->
! <a name="layoutmatch"><h2>Laying Out Particles and Fields</h2></a>
  
  <p> The use of particles and fields together in a single application
  brings up some issues regarding layout that do not arise when either
--- 150,157 ----
  do this safely when the particle positions are guaranteed not to have
  changed since the last interpolation.
  
! <!-- -->
! <h2><a name="layoutmatch">Laying Out Particles and Fields</a></h2>
  
  <p> The use of particles and fields together in a single application
  brings up some issues regarding layout that do not arise when either
*************** long as the <tt>MultiPatch</tt> engine u
*** 228,235 ****
  case, <tt>UniformLayout</tt>).  This commonly arises during the
  prototyping (i.e., pre-parallel) stages of application development.
  
! <!---------------------------------------------------------------------->
! <a name="pic2d"><h2>Example: Particle-in-Cell Simulation</h2></a>
  
  <p>Our third and final example of this important class is a
  particle-in-cell program, which simulates the motion of charged
--- 231,238 ----
  case, <tt>UniformLayout</tt>).  This commonly arises during the
  prototyping (i.e., pre-parallel) stages of application development.
  
! <!-- -->
! <h2><a name="pic2d">Example: Particle-in-Cell Simulation</a></h2>
  
  <p>Our third and final example of this important class is a
  particle-in-cell program, which simulates the motion of charged
*************** printed out, and the simulation is close
*** 598,605 ****
  227    return 0;
  </pre></blockquote>
  
! <!---------------------------------------------------------------------->
! <a name="summary"><h2>Summary</h2></a>
  
  <p>This tutorial has shown how POOMA's <tt>Field</tt> and
  <tt>Particles</tt> classes can be combined to create complete physical
--- 601,608 ----
  227    return 0;
  </pre></blockquote>
  
! <!-- -->
! <h2><a name="summary">Summary</a></h2>
  
  <p>This tutorial has shown how POOMA's <tt>Field</tt> and
  <tt>Particles</tt> classes can be combined to create complete physical
*************** and easier to maintain.
*** 617,623 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 620,626 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
Index: tut-11.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-11.html,v
retrieving revision 1.2
diff -c -p -r1.2 tut-11.html
*** tut-11.html 26 Mar 2001 23:25:27 -0000      1.2
--- tut-11.html 20 Aug 2004 19:25:48 -0000
***************
*** 1,4 ****
! <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
--- 1,4 ----
! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
***************
*** 9,21 ****
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <center>
! <h1>
! <img SRC="banner.gif" X-SAS-UseImageWidth X-SAS-UseImageHeight height=100 
width=550 align=BOTTOM></h1></center>
  
  <center><h1>POOMA Tutorial 11<br>Text Input and Outupt</h1></center>
  
! <b><font size=+1>Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Inform">The <tt>Inform</tt> Class</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FormattedASCII">Formatted ASCII 
Output</a>
--- 9,20 ----
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center><h1>POOMA Tutorial 11<br>Text Input and Outupt</h1></center>
  
! <b><font size="+1">Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#intro">Introduction</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Inform">The <tt>Inform</tt> Class</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FormattedASCII">Formatted ASCII 
Output</a>
*************** Pooma::blockAndEvaluate();
*** 160,173 ****
  pout &lt;&lt; &quot;a(23,42) = &quot; &lt;&lt; a(23,42) &lt;&lt; std::endl;
  </pre></blockquote>
  
! By default, a newly-created <tt>Inform</tt> will only print out messages sent
! to it on context 0, rather than on all contexts. Programs may change this
! behavior by calling the method <tt>printContext()</tt>, with the ID of the
! context on which output is to appear as its argument. If the argument to this
! method is the constant <tt>Inform::allContexts</tt>, then subsequent messages
! will be printed on all contexts being used by the program, rather than just
! one. (Note: currently, POOMA is limited to one context, so this does not yet
! actually do anything.)</p>
  
  <p><tt>Inform</tt>s can be constructed in three different ways. The first, and
  simplest, prints messages to <tt>cout</tt>. By default, output is displayed on
--- 159,173 ----
  pout &lt;&lt; &quot;a(23,42) = &quot; &lt;&lt; a(23,42) &lt;&lt; std::endl;
  </pre></blockquote>
  
! <p>By default, a newly-created <tt>Inform</tt> will only print out
! messages sent to it on context 0, rather than on all
! contexts. Programs may change this behavior by calling the method
! <tt>printContext()</tt>, with the ID of the context on which output is
! to appear as its argument. If the argument to this method is the
! constant <tt>Inform::allContexts</tt>, then subsequent messages will
! be printed on all contexts being used by the program, rather than just
! one. (Note: currently, POOMA is limited to one context, so this does
! not yet actually do anything.)</p>
  
  <p><tt>Inform</tt>s can be constructed in three different ways. The first, and
  simplest, prints messages to <tt>cout</tt>. By default, output is displayed on
*************** is to be appended:
*** 190,203 ****
             Context_t context = 0);
  </pre></blockquote>
  
! Other methods are provided to get and set the prefix to be displayed in front
! of messages, the <tt>Inform</tt>'s context, the current level of interest of
! messages, and the threshold for displaying messages. An overloaded set of
! <tt>open()</tt> methods are also provided to open more output streams within
! the <tt>Inform</tt>. These methods return an ID which can be used to select
! particular streams when setting such things as the level of interest.
! Finally, most of the standard <tt>ostream</tt> manipulators and
! <tt>operator&lt;&lt;()</tt>s are provided.</p>
  
  <h2><a NAME="FormattedASCII"></a>Formatted ASCII Output</h2>
  
--- 190,204 ----
             Context_t context = 0);
  </pre></blockquote>
  
! <p>Other methods are provided to get and set the prefix to be
! displayed in front of messages, the <tt>Inform</tt>'s context, the
! current level of interest of messages, and the threshold for
! displaying messages. An overloaded set of <tt>open()</tt> methods are
! also provided to open more output streams within the
! <tt>Inform</tt>. These methods return an ID which can be used to
! select particular streams when setting such things as the level of
! interest.  Finally, most of the standard <tt>ostream</tt> manipulators
! and <tt>operator&lt;&lt;()</tt>s are provided.</p>
  
  <h2><a NAME="FormattedASCII"></a>Formatted ASCII Output</h2>
  
*************** whole object.</dd>
*** 282,288 ****
  <dt>
  </dt>
  </dl>
- </p>
  
  <p><a NAME="PrintArrayPrint"></a>The <tt>print()</tt> methods of
  <tt>PrintArray</tt> are member templates:
--- 283,288 ----
*************** template&lt;class S, class A, class Doma
*** 295,301 ****
  void print(S &amp;s, const A &amp;a, const DomainType &amp;d) const;
  </pre></blockquote>
  
! These take an output stream, a container object, and an optional domain object
  for explicitly subsetting the container. They work with POOMA <tt>Field</tt>,
  <tt>Array</tt>, and <tt>DynamicArray</tt> container objects (including
  attributes from <tt>Particles</tt>), but are not restricted to these. The only
--- 295,301 ----
  void print(S &amp;s, const A &amp;a, const DomainType &amp;d) const;
  </pre></blockquote>
  
! <p>These take an output stream, a container object, and an optional domain 
object
  for explicitly subsetting the container. They work with POOMA <tt>Field</tt>,
  <tt>Array</tt>, and <tt>DynamicArray</tt> container objects (including
  attributes from <tt>Particles</tt>), but are not restricted to these. The only
*************** prints
*** 382,388 ****
  (002:010:002,002,002) =        2.5        4.5        6.5        8.5       10.5
  (002:010:002,003,002) =        2.5        4.5        6.5        8.5       10.5
  </pre></blockquote>
- </p>
  
  <h3><a NAME="dbprint"></a><tt>dbprint()</tt> and Related Functions</h3>
  
--- 382,387 ----
*************** template&lt;class Container&gt;
*** 416,431 ****
  void dbprint(const Container &amp;c, const int &amp;i0, ..., const int 
&amp;i20);
  </pre></blockquote>
  
! The first two prototypes map directly to the <tt>PrintArray::print()</tt>
! functions described in the <a href="#PrintArrayPrint">previous section</a>.
! The remaining prototypes are for printing single container elements with
! scalar indexing, and for printing views using sets of integers for base,
! bound, and stride values in the various dimensions. Prototypes for 1 through
! 21 integer arguments, skipping {11,13,17,19,20}, allow for
! &quot;sensible&quot; interpretation of lists of integers as single-element or
! multi-element views of containers having dimensionality 1 through 7:</p>
  
! <center><table BORDER WIDTH="75%" name="Numbers of int arguments, and 
meanings for containers of dimensionalities" >
  <tr BGCOLOR="#FFFFCC">
  <td>
  <center>dimensions</center>
--- 415,432 ----
  void dbprint(const Container &amp;c, const int &amp;i0, ..., const int 
&amp;i20);
  </pre></blockquote>
  
! <p>The first two prototypes map directly to the
! <tt>PrintArray::print()</tt> functions described in the <a
! href="#PrintArrayPrint">previous section</a>.  The remaining
! prototypes are for printing single container elements with scalar
! indexing, and for printing views using sets of integers for base,
! bound, and stride values in the various dimensions. Prototypes for 1
! through 21 integer arguments, skipping {11,13,17,19,20}, allow for
! &quot;sensible&quot; interpretation of lists of integers as
! single-element or multi-element views of containers having
! dimensionality 1 through 7:</p>
  
! <center><table BORDER WIDTH="75%" summary="Numbers of int arguments, and 
meanings for containers of dimensionalities" >
  <tr BGCOLOR="#FFFFCC">
  <td>
  <center>dimensions</center>
*************** multi-element views of containers having
*** 608,616 ****
  </table></center>
  
  <center>
! <p><i>Interpretation of various <font color="#FF0000">numbers of 
</font></i><font color="#FF0000"><tt>int&amp;</tt><i>
  arguments</i></font><i> for different dimensionilities.</i></center>
- </p>
  
  <p>You may call any of these functions from your source code, of course, and
  the compiler will instantiate the appropriate template instances and
--- 609,616 ----
  </table></center>
  
  <center>
! <i>Interpretation of various <font color="#FF0000">numbers of 
</font></i><font color="#FF0000"><tt>int&amp;</tt><i>
  arguments</i></font><i> for different dimensionilities.</i></center>
  
  <p>You may call any of these functions from your source code, of course, and
  the compiler will instantiate the appropriate template instances and
*************** are compiled into your executable. The f
*** 624,630 ****
  const unsigned D = 2;
  typedef UniformRectilinearMesh&lt;d&gt; Mesh_t;
  typedef Field&lt;DiscreteGeometry&lt;Cell, Mesh_t&gt;, double&gt; 
ScalarField_t;
! typedef Field<discretegeometry>&lt;DiscreteGeometry&lt;Cell, Mesh_t&gt;, 
Vector&lt;D&gt; &gt;<d> VectorField_t;
  typedef Array&lt;D, double, CompressibleBrick&gt; ScalarArray_t;
  typedef Array&lt;D, Vector&lt;D&gt;, CompressibleBrick&gt; VectorArray_t;
  
--- 624,630 ----
  const unsigned D = 2;
  typedef UniformRectilinearMesh&lt;d&gt; Mesh_t;
  typedef Field&lt;DiscreteGeometry&lt;Cell, Mesh_t&gt;, double&gt; 
ScalarField_t;
! typedef Field&lt;DiscreteGeometry&lt;Cell, Mesh_t&gt;, Vector&lt;D&gt; 
&gt;VectorField_t;
  typedef Array&lt;D, double, CompressibleBrick&gt; ScalarArray_t;
  typedef Array&lt;D, Vector&lt;D&gt;, CompressibleBrick&gt; VectorArray_t;
  
*************** int main(int argc, char* argv[])
*** 678,684 ****
    <i>// ...Stop the debugger somewhere down here...</i>
  </pre></blockquote>
  
! Note that you must define a separately-named non-template function for each
  different fully-specified data type you want to examine interactively from the
  debugger (specified values for all template parameters of <tt>Array</tt> or
  <tt>Field</tt>, for example). This is a bit cumbersome, but can be worth the
--- 678,684 ----
    <i>// ...Stop the debugger somewhere down here...</i>
  </pre></blockquote>
  
! <p>Note that you must define a separately-named non-template function for each
  different fully-specified data type you want to examine interactively from the
  debugger (specified values for all template parameters of <tt>Array</tt> or
  <tt>Field</tt>, for example). This is a bit cumbersome, but can be worth the
*************** SGI IRIX 6.5. It is stopped at a breakpo
*** 732,738 ****
  (dbx)
  </pre></blockquote>
  
! Note that the first function call, to print the entire <tt>Fields</tt>,
  includes the global guard layers. Calling <tt>dbprint()</tt> (or
  <tt>sfdbprint()</tt>) from your source code, you could pass in <tt>s()</tt>,
  or <tt>s(s.physicalDomain())</tt>, to exclude the global guard layers; this is
--- 732,738 ----
  (dbx)
  </pre></blockquote>
  
! <p>Note that the first function call, to print the entire <tt>Fields</tt>,
  includes the global guard layers. Calling <tt>dbprint()</tt> (or
  <tt>sfdbprint()</tt>) from your source code, you could pass in <tt>s()</tt>,
  or <tt>s(s.physicalDomain())</tt>, to exclude the global guard layers; this is
*************** switch back and forth between the two <t
*** 782,788 ****
  <dt>
  </dt>
  </dl>
- </p>
  
  <center><table>
  <tr>
--- 782,787 ----
*************** switch back and forth between the two <t
*** 793,799 ****
  <td><a href="tut-12.html">[Next]</a></td>
  </tr>
  </table>
! <em><a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos
  National Laboratory 1998-2000</a></em></center>
  </body>
  </html>
--- 792,798 ----
  <td><a href="tut-12.html">[Next]</a></td>
  </tr>
  </table>
! <em><a href="http://www.pooma.com/";>Copyright &copy; Los Alamos
  National Laboratory 1998-2000</a></em></center>
  </body>
  </html>
Index: tut-12.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-12.html,v
retrieving revision 1.2
diff -c -p -r1.2 tut-12.html
*** tut-12.html 26 Mar 2001 23:25:27 -0000      1.2
--- tut-12.html 20 Aug 2004 19:25:49 -0000
***************
*** 1,4 ****
! <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
--- 1,4 ----
! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
***************
*** 9,23 ****
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <center>
! <h1>
! <img SRC="banner.gif" X-SAS-UseImageWidth X-SAS-UseImageHeight height=100 
width=550 align=BOTTOM></h1></center>
  
  <center>
  <h1>
  POOMA Tutorial 12<br>
  Object I/O</h1></center>
! <b><font size=+1>Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp; <a href="#overview">Overview</a>
  <br>&nbsp;&nbsp;&nbsp; <a href="#object persistence">Object Serialization
  and Object Persistence Models</a>
--- 9,22 ----
  </head>
  <body link="#505062" vlink="#BE7C18" alink="#505062" background="back.gif">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center>
  <h1>
  POOMA Tutorial 12<br>
  Object I/O</h1></center>
! <b><font size="+1">Contents:</font></b>
  <br>&nbsp;&nbsp;&nbsp; <a href="#overview">Overview</a>
  <br>&nbsp;&nbsp;&nbsp; <a href="#object persistence">Object Serialization
  and Object Persistence Models</a>
*************** on <i>ObjectSet</i></a>
*** 41,49 ****
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#doof2d 
example"><i>Doof2d</i>
  Example Modified for POOMA I/O</a>
  <br>&nbsp;
! 
<p><!----------------------------------------------------------------------><a 
NAME="overview"></a>
! <h2>
! Overview</h2>
  The POOMA framework has been engineered to support rapid development of
  scientific and engineering applications. POOMA provides its user's with
  a high-level C++ language interface for creating numerical applications
--- 40,48 ----
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#doof2d 
example"><i>Doof2d</i>
  Example Modified for POOMA I/O</a>
  <br>&nbsp;
! <p>
! <!-- -->
! <h2><a NAME="overview">Overview</a></h2>
  The POOMA framework has been engineered to support rapid development of
  scientific and engineering applications. POOMA provides its user's with
  a high-level C++ language interface for creating numerical applications
*************** abstractions that make the POOMA framewo
*** 56,64 ****
  the classes that embody them persistent. As with the rest of POOMA, the
  I/O system is both flexible and extensible by users as well as by developers.
  <br>&nbsp;
! 
<p><!----------------------------------------------------------------------><a 
NAME="object persistence"></a>
! <h2>
! Object Serialization and Object Persistence Models</h2>
  There are two broad categories of data management appropriate to 
object-oriented
  applications. The first is object serialization, and the second is object
  persistence.
--- 55,63 ----
  the classes that embody them persistent. As with the rest of POOMA, the
  I/O system is both flexible and extensible by users as well as by developers.
  <br>&nbsp;
! <p>
! <!-- -->
! <h2><a NAME="object persistence">Object Serialization and Object Persistence 
Models</a></h2>
  There are two broad categories of data management appropriate to 
object-oriented
  applications. The first is object serialization, and the second is object
  persistence.
*************** data management. After all, the principa
*** 97,105 ****
  object-oriented languages is so that they can create and exploit new data
  types. Object storage systems provide a way to store and retrieve user-defined
  types as easily as intrinsic types.
! 
<p><!----------------------------------------------------------------------><a 
NAME="design"></a>
! <h2>
! Design of POOMA I/O</h2>
  The goal of POOMA I/O is to provide object serialization and object
  database persistence models, both of which have been shown to be extremely
  useful in object-oriented frameworks. The challenge is to make both of
--- 96,104 ----
  object-oriented languages is so that they can create and exploit new data
  types. Object storage systems provide a way to store and retrieve user-defined
  types as easily as intrinsic types.
! <p>
! <!-- -->
! <h2><a NAME="design">Design of POOMA I/O</a></h2>
  The goal of POOMA I/O is to provide object serialization and object
  database persistence models, both of which have been shown to be extremely
  useful in object-oriented frameworks. The challenge is to make both of
*************** gauge the performance implications of an
*** 158,166 ****
  storage abstractions. The separation of basic I/O from object management
  permits performance to be optimized without requiring modifications in
  any portion of the object management layer.
! 
<p><!----------------------------------------------------------------------><a 
NAME="version 2.2"></a>
! <h2>
! What's in POOMA Version 2.2</h2>
  I/O for Version 2.2 of POOMA is experimental. As such it does not support
  the full scope of capabilities described above, nor the full complement
  of POOMA framework objects. The reason for including it in this release
--- 157,166 ----
  storage abstractions. The separation of basic I/O from object management
  permits performance to be optimized without requiring modifications in
  any portion of the object management layer.
! <p>
! <!-- -->
! <h2><a NAME="version 2.2">
! What's in POOMA Version 2.2</a></h2>
  I/O for Version 2.2 of POOMA is experimental. As such it does not support
  the full scope of capabilities described above, nor the full complement
  of POOMA framework objects. The reason for including it in this release
*************** full coverage of all POOMA objects is in
*** 180,189 ****
  of the software.
  <p>This release supports standard native binary I/O. Future releases may
  support storage using the HDF5 format.
! <p><!---------------------------------------------------------------------->
! <a NAME="using pooma i/o"></a>
! <h2>
! Using POOMA I/O</h2>
  This section describes the basic process of storing and retrieving objects
  in POOMA. The essential mechanism is very simple. Each supported type may
  be stored in a collection of objects called an <i>object set</i>. An object
--- 180,188 ----
  of the software.
  <p>This release supports standard native binary I/O. Future releases may
  support storage using the HDF5 format.
! <p>
! <!-- -->
! <h2><a NAME="using pooma i/o">Using POOMA I/O</a></h2>
  This section describes the basic process of storing and retrieving objects
  in POOMA. The essential mechanism is very simple. Each supported type may
  be stored in a collection of objects called an <i>object set</i>. An object
*************** an object by name, the object set restor
*** 256,273 ****
  matches the name.
  <p>The following section provides details of the object set interface.
  <br>&nbsp;
! 
<p><!----------------------------------------------------------------------><a 
NAME="objectset interface"></a>
! <h2>
! The ObjectSet Interface</h2>
  The object set interface is the main interface to object storage. To store
  and retrieve objects, an instance of an object set must exist in the user's
  application with an access mode appropriate to the intended storage 
operations.
  <br>&nbsp;
! <h3>
! <!----------------------------------------------------------------------><a 
NAME="objectset constructors"></a></h3>
! 
! <h3>
! ObjectSet Constructors</h3>
  The following constructors create instances of object sets:
  <br>&nbsp;
  <blockquote><b>ObjectSet()</b>&nbsp;&nbsp;&nbsp; This is the default 
constructor.
--- 255,269 ----
  matches the name.
  <p>The following section provides details of the object set interface.
  <br>&nbsp;
! <p>
! <!-- -->
! <h2><a NAME="objectset interface">The ObjectSet Interface</a></h2>
  The object set interface is the main interface to object storage. To store
  and retrieve objects, an instance of an object set must exist in the user's
  application with an access mode appropriate to the intended storage 
operations.
  <br>&nbsp;
! <!-- -->
! <h3><a NAME="objectset constructors">ObjectSet Constructors</a></h3>
  The following constructors create instances of object sets:
  <br>&nbsp;
  <blockquote><b>ObjectSet()</b>&nbsp;&nbsp;&nbsp; This is the default 
constructor.
*************** Creates an object set <i>obset</i> as a 
*** 338,348 ****
  The file is opened for read-write, but if a file by that name already exists,
  all exisiting data will be destroyed (i.e., the file will be 
truncated).</blockquote>
  
! <h3>
! <!----------------------------------------------------------------------><a 
NAME="objectset::open"></a></h3>
  
- <h3>
- ObjectSet::open()</h3>
  The <i>open()</i> operation assumes the existence of an object set and
  assumes that it has either been default constructed, or that it has been
  previously closed. There are two variants. They are:
--- 334,342 ----
  The file is opened for read-write, but if a file by that name already exists,
  all exisiting data will be destroyed (i.e., the file will be 
truncated).</blockquote>
  
! <!-- -->
! <h3><a NAME="objectset::open">ObjectSet::open()</a></h3>
  
  The <i>open()</i> operation assumes the existence of an object set and
  assumes that it has either been default constructed, or that it has been
  previously closed. There are two variants. They are:
*************** assert(status==0);
*** 372,391 ****
  resource of a different type (standard binary in this case)&nbsp; for output,
  destroying any pre-existing version.</blockquote>
  
! <h3>
! <!----------------------------------------------------------------------><a 
NAME="objectset::close"></a></h3>
! 
! <h3>
! ObjectSet::flush() and ObjectSet::close()</h3>
  These functions respectively flush and close the object set. They take
  no arguments. The <i>flush()</i> function ensures that all objects are
  persistent, and <i>close()</i> closes the file or resource. <i>close()</i>
  invokes <i>flush()</i> before closing the resource.
- <h3>
- <!----------------------------------------------------------------------><a 
NAME="objectset::store"></a></h3>
  
! <h3>
! ObjectSet::store() and ObjectSet::retrieve()</h3>
  These functions perform the main storage operations. There are two versions
  of <i>retrieve()</i> depending on whether one wants to retrieve an object
  by name or by ID.
--- 366,381 ----
  resource of a different type (standard binary in this case)&nbsp; for output,
  destroying any pre-existing version.</blockquote>
  
! <!-- -->
! <h3><a NAME="objectset::close">ObjectSet::flush() and 
ObjectSet::close()</a></h3>
  These functions respectively flush and close the object set. They take
  no arguments. The <i>flush()</i> function ensures that all objects are
  persistent, and <i>close()</i> closes the file or resource. <i>close()</i>
  invokes <i>flush()</i> before closing the resource.
  
! <!-- -->
! <h3><a NAME="objectset::store">ObjectSet::store() and 
ObjectSet::retrieve()</a></h3>
! 
  These functions perform the main storage operations. There are two versions
  of <i>retrieve()</i> depending on whether one wants to retrieve an object
  by name or by ID.
*************** one could use:
*** 433,445 ****
  status= obset.retrieve(nSteps,"Number of Time Steps");
  assert(status==0);
  </pre>
- 
- <h3>
- <!----------------------------------------------------------------------><a 
NAME="queries"></a></h3>
  </blockquote>
  
! <h3>
! Queries on ObjectSet</h3>
  The following functions allow applications to query the status of an object
  set:
  <blockquote><b>const std::string&amp; name() const</b>&nbsp;&nbsp;&nbsp;
--- 423,433 ----
  status= obset.retrieve(nSteps,"Number of Time Steps");
  assert(status==0);
  </pre>
  </blockquote>
  
! <!-- -->
! <h3><a NAME="queries">Queries on ObjectSet</a></h3>
! 
  The following functions allow applications to query the status of an object
  set:
  <blockquote><b>const std::string&amp; name() const</b>&nbsp;&nbsp;&nbsp;
*************** version, not only with the range of type
*** 539,547 ****
  serialization as well as pesistence will be supported. There will also
  be tools to facilitate inclusion of new types by users or developers. For
  now, the following are supported entities:
! <ul><b>Intrinsic or atomic data types:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 527,536 ----
  serialization as well as pesistence will be supported. There will also
  be tools to facilitate inclusion of new types by users or developers. For
  now, the following are supported entities:
! <br><br>
! <b>Intrinsic or atomic data types:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** now, the following are supported entitie
*** 582,591 ****
  <td>Native <i>double</i></td>
  </tr>
  </table>
! </ul>
  <b>Complex number instances:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 571,580 ----
  <td>Native <i>double</i></td>
  </tr>
  </table>
! <br><br>
  <b>Complex number instances:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** now, the following are supported entitie
*** 603,614 ****
  or <i>double</i>.</td>
  </tr>
  </table>
- </ul>
- </ul>
  
! <ul><b>Standard library strings:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 592,602 ----
  or <i>double</i>.</td>
  </tr>
  </table>
  
! <br><br>
! <b>Standard library strings:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** or <i>double</i>.</td>
*** 625,635 ****
  <td>Standard string of arbitrary length.</td>
  </tr>
  </table>
- </ul>
  
! <p><br><b>Pooma Vector instances:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 613,623 ----
  <td>Standard string of arbitrary length.</td>
  </tr>
  </table>
  
! <br><br>
! <b>Pooma Vector instances:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** may be any size, and <i>T</i> is <i>int<
*** 651,661 ****
  or <i>std::complex&lt;T></i>.</td>
  </tr>
  </table>
- </ul>
  
! <p><br><b>Pooma Brick and Compressible Brick Arrays:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 639,649 ----
  or <i>std::complex&lt;T></i>.</td>
  </tr>
  </table>
  
! <br><br>
! <b>Pooma Brick and Compressible Brick Arrays:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** engine types. <i>T</i> may be <i>int</i>
*** 677,687 ****
  in this release.</td>
  </tr>
  </table>
- </ul>
  
! <p><br><b>Pooma Intervals:</b>
! <ul>&nbsp;
! <table BORDER COLS=3 WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
--- 665,675 ----
  in this release.</td>
  </tr>
  </table>
  
! <br><br>
! <b>Pooma Intervals:</b>
! <br><br>
! <table BORDER WIDTH="50%" >
  <tr>
  <td><b>Type</b></td>
  
*************** in this release.</td>
*** 698,718 ****
  <td>Pooma Interval of dimension <i>Dim=1,... 7.</i></td>
  </tr>
  </table>
! </ul>
! </ul>
! <!----------------------------------------------------------------------><a 
NAME="use case"></a>
! <h2>
! Use Case</h2>
  The following use case demonstrates how object persistence in POOMA Version
  2.2 would be used in an application. This is a modification of the 
<i>Doof2d</i>
  example (simple diffusion calculation) given in another tutorial. The 
additional
  I/O instructions are highlighted in italics.
  <br>&nbsp;
! <h3>
! <!----------------------------------------------------------------------><a 
NAME="doof2d example"></a></h3>
! 
! <h3>
! Doof2d Example Modified for POOMA I/O</h3>
  
  <blockquote>
  <pre>// create arrays
--- 686,701 ----
  <td>Pooma Interval of dimension <i>Dim=1,... 7.</i></td>
  </tr>
  </table>
! 
! <!-- -->
! <h2><a NAME="use case">Use Case</a></h2>
  The following use case demonstrates how object persistence in POOMA Version
  2.2 would be used in an application. This is a modification of the 
<i>Doof2d</i>
  example (simple diffusion calculation) given in another tutorial. The 
additional
  I/O instructions are highlighted in italics.
  <br>&nbsp;
! <!-- -->
! <h3><a NAME="doof2d example">Doof2d Example Modified for POOMA I/O</a></h3>
  
  <blockquote>
  <pre>// create arrays
*************** less familiarity with the application, a
*** 845,851 ****
  to learn more. More sophisticated queries are needed in order to do a good
  job of acquiring data when nothing <i>a priori</i> is known about the contents
  of a dataset. Such queries are planned for the next version of POOMA.
! <br><!---------------------------------------------------------------------->
  <br>&nbsp;
  <center><table>
  <tr>
--- 828,834 ----
  to learn more. More sophisticated queries are needed in order to do a good
  job of acquiring data when nothing <i>a priori</i> is known about the contents
  of a dataset. Such queries are planned for the next version of POOMA.
! <br><!-- -->
  <br>&nbsp;
  <center><table>
  <tr>
*************** of a dataset. Such queries are planned f
*** 856,862 ****
  <td><a href="tut-13.html">[Next]</a></td>
  </tr>
  </table>
! <em><a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos
! National Laboratory 1998-2000</a></wm></center>
  </body>
  </html>
--- 839,845 ----
  <td><a href="tut-13.html">[Next]</a></td>
  </tr>
  </table>
! <em><a href="http://www.pooma.com/";>Copyright &copy; Los Alamos
! National Laboratory 1998-2000</a></em></center>
  </body>
  </html>
Index: tut-13.html
===================================================================
RCS file: /home/pooma/Repository/r2/docs/tut-13.html,v
retrieving revision 1.1
diff -c -p -r1.1 tut-13.html
*** tut-13.html 19 Mar 2001 16:11:14 -0000      1.1
--- tut-13.html 20 Aug 2004 19:25:49 -0000
***************
*** 1,14 ****
  <!-- compilers.html : tail end of POOMA tutorials -->
  <!-- $Id: tut-13.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
  <title>POOMA Tutorial 13: Compiling, Running, and Debugging POOMA 
Programs</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <H1><CENTER><IMG SRC="banner.gif" WIDTH=550 HEIGHT=100
! X-SAS-UseImageWidth X-SAS-UseImageHeight ALIGN=bottom></CENTER></H1>
  
  <center>
    <h1>POOMA Tutorial 13<br>
--- 1,16 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <!-- compilers.html : tail end of POOMA tutorials -->
  <!-- $Id: tut-13.html,v 1.1 2001/03/19 16:11:14 mitchell Exp $ -->
  
  <html>
  <head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>POOMA Tutorial 13: Compiling, Running, and Debugging POOMA 
Programs</title>
  </head>
  <body background="back.gif" LINK="#505062" ALINK="#505062" VLINK="#be7c18">
  
! <CENTER><IMG SRC="banner.gif" ALT="POOMA banner" WIDTH=550 HEIGHT=100
! ALIGN=bottom></CENTER>
  
  <center>
    <h1>POOMA Tutorial 13<br>
*************** X-SAS-UseImageWidth X-SAS-UseImageHeight
*** 16,42 ****
      POOMA Programs</h1>
  </center>
  
! <b><font size=+1>Contents:</font></b>
! 
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Introduction">Introduction</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Compiling">Compiling</a> 
! <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#CompilerRequirements">Compiler Requirements</a> 
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#install-configure">Installing and Configuring POOMA</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#decipher">How 
to Decipher Compiler Error Messages</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;</a><a href="#Running">Running</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#flags">POOMA 
Runtime Arguments</a> 
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#pooma-options">Object-Based Initialization</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Debugging">Debugging</a> 
  
! <h2><a name="Introduction">Introduction</a></h2>
  
  <p>This tutorial includes information on configuring and building the POOMA 
library, and application programs using POOMA. It also discusses some topics 
about running POOMA programs, and gives some anecdotal information about 
debuggers and debugging.</p>
  
  <p>
! <h2><a name="Compiling">Compiling</a></h2>
  <p>
  <p>
! <h3><tt><a name="CompilerRequirements"></a></tt>Compiler Requirements</h3>
  <p></p>
  <p>POOMA has been extensively tested with the following C++
  compilers:
--- 18,43 ----
      POOMA Programs</h1>
  </center>
  
! <p><b><font size="+1">Contents:</font></b>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#compiling">Compiling</a> 
! <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#compilerrequirements">Compiler Requirements</a> 
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#install-configure">Installing and Configuring POOMA</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#decipher">How 
to Decipher Compiler Error Messages</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#running">Running</a>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#flags">POOMA 
Runtime Arguments</a> 
  <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a 
href="#pooma-options">Object-Based Initialization</a>
! <br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#debugging">Debugging</a> 
  
! <h2><a name="introduction">Introduction</a></h2>
  
  <p>This tutorial includes information on configuring and building the POOMA 
library, and application programs using POOMA. It also discusses some topics 
about running POOMA programs, and gives some anecdotal information about 
debuggers and debugging.</p>
  
  <p>
! <h2><a name="compiling">Compiling</a></h2>
  <p>
  <p>
! <h3><tt><a name="compilerrequirements"></a></tt>Compiler Requirements</h3>
  <p></p>
  <p>POOMA has been extensively tested with the following C++
  compilers:
*************** compilers:
*** 57,63 ****
  
  <li>Intel C++ (part of VTune 4.0)
        <br>Intel
!           (<a 
href="http://support.intel.com/support/performancetools/vtune";>http://support.intel.com/support/performancetools/vtune</a>)
        <br>Windows 95/98/NT
  </ul>
  
--- 58,64 ----
  
  <li>Intel C++ (part of VTune 4.0)
        <br>Intel
!           (<a 
href="http://support.intel.com/support/performancetools/vtune/";>http://support.intel.com/support/performancetools/vtune</a>)
        <br>Windows 95/98/NT
  </ul>
  
*************** with the process.
*** 355,361 ****
  04  {
  05      Pooma::initialize();
  06
! 07      int p, *pp = &p;    
  08      Array<1> z(6);
  09      for (p = 0; p < 6; p++)
  10          z(PP) = p;
--- 356,362 ----
  04  {
  05      Pooma::initialize();
  06
! 07      int p, *pp = &amp;p;    
  08      Array<1> z(6);
  09      for (p = 0; p < 6; p++)
  10          z(PP) = p;
*************** messages (please be patient while this s
*** 518,524 ****
                        incl&gt;::combine(RT &, const UT &, const CT &) [with
                        RT=NewDomain1&lt;int *&gt;::SliceType_t, 
UT=Interval&lt;1&gt;,
                        CT=int *, DS=0, SliceDS=0, incl=false]&quot; at line 766
!             instantiation of &quot;RT &NewDomain1&lt;T1&gt;::fillSlice(RT &, 
const UT &,
                        const T1 &) [with T1=int *, RT=NewDomain1&lt;int
                        *&gt;::SliceType_t, UT=Interval&lt;1&gt;]&quot; at line 
754
              instantiation of &quot;NewDomain1&lt;T1&gt;::SliceType_t
--- 519,525 ----
                        incl&gt;::combine(RT &, const UT &, const CT &) [with
                        RT=NewDomain1&lt;int *&gt;::SliceType_t, 
UT=Interval&lt;1&gt;,
                        CT=int *, DS=0, SliceDS=0, incl=false]&quot; at line 766
!             instantiation of &quot;RT NewDomain1&lt;T1&gt;::fillSlice(RT &, 
const UT &,
                        const T1 &) [with T1=int *, RT=NewDomain1&lt;int
                        *&gt;::SliceType_t, UT=Interval&lt;1&gt;]&quot; at line 
754
              instantiation of &quot;NewDomain1&lt;T1&gt;::SliceType_t
*************** chain, which makes diagnosing template p
*** 612,620 ****
  difficult. Metrowerks knows about this problem and is fixing
  it. However, until then, we can only suggest compiling your code with
  EGCS or KCC as a means to diagnose difficult problems.
! <h2><a name="#Running"></a>Running
!   </h2>
! <h3><a name="#flags"></a>POOMA Runtime Arguments</h3>
  <p>The following run-time flags can be used to control various aspects
  of the behavior of a POOMA-based application:
  
--- 613,621 ----
  difficult. Metrowerks knows about this problem and is fixing
  it. However, until then, we can only suggest compiling your code with
  EGCS or KCC as a means to diagnose difficult problems.
! 
! <h2><a name="running">Running</a></h2>
! <h3><a name="flags">POOMA Runtime Arguments</a></h3>
  <p>The following run-time flags can be used to control various aspects
  of the behavior of a POOMA-based application:
  
*************** Pooma::initialize(opts);                
*** 730,736 ****
  <p>For more information on the configuration options available to POOMA
  programs, please see the POOMA documentation.</p>
  
! <h2><a name="Debugging">Debugging</a></h2>
  <p>Debugging the templated classes and functions in POOMA codes is 
challenging. Many debuggers have difficulty with finding and stopping in the 
particular template instance you're interested in. Few, if any, debuggers allow 
invocation of member functions from objects, whether they are instances of 
template or nontemplate classes.</p>
  <p>Future revisions of this tutorial may include more information on 
debugging. For now, we include some anecdotal information that may be 
helpful:</p>
  <p>The Metrowerks CodeWarrior Professional 5.2 debugger does a good job of 
understanding template code, and correctly demangling symbol names. The Windows 
version is much less successful than the Macintosh version in maintaining 
proper state when you trace into template functions and template or nontemplate 
members of template classes. On Windows, it often fails to recognize any local 
variables.</p>
--- 731,737 ----
  <p>For more information on the configuration options available to POOMA
  programs, please see the POOMA documentation.</p>
  
! <h2><a name="debugging">Debugging</a></h2>
  <p>Debugging the templated classes and functions in POOMA codes is 
challenging. Many debuggers have difficulty with finding and stopping in the 
particular template instance you're interested in. Few, if any, debuggers allow 
invocation of member functions from objects, whether they are instances of 
template or nontemplate classes.</p>
  <p>Future revisions of this tutorial may include more information on 
debugging. For now, we include some anecdotal information that may be 
helpful:</p>
  <p>The Metrowerks CodeWarrior Professional 5.2 debugger does a good job of 
understanding template code, and correctly demangling symbol names. The Windows 
version is much less successful than the Macintosh version in maintaining 
proper state when you trace into template functions and template or nontemplate 
members of template classes. On Windows, it often fails to recognize any local 
variables.</p>
*************** programs, please see the POOMA documenta
*** 803,809 ****
        </tr>
  </table>
  <em>
! <a href="http://www.acl.lanl.gov/pooma/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  
--- 804,810 ----
        </tr>
  </table>
  <em>
! <a href="http://www.pooma.com/";>Copyright &copy; Los Alamos National 
Laboratory 1998-2000</a>
  </em>
  </center>
  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]