]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Move the tutorial subdirectory into the doxygen/ directory, since that is where the...
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 24 Jul 2006 15:20:09 +0000 (15:20 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 24 Jul 2006 15:20:09 +0000 (15:20 +0000)
git-svn-id: https://svn.dealii.org/trunk@13426 0785d39b-7218-0410-832d-ea1e28bc413d

15 files changed:
deal.II/doc/Makefile.in
deal.II/doc/doxygen/Makefile.in
deal.II/doc/doxygen/deal.dox
deal.II/doc/doxygen/tutorial/Makefile [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/foot.html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/head.html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/index.html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/navbar.html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/program2doxygen [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/program2doxyplain [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/program2html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/program2plain [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/program2toc [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/title.html [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/toc.html [new file with mode: 0644]

index 2eb549906450d9ab0623cf994344543eb1519c91..28b8f290d832541c766caacd86eebbbf66f20e71 100644 (file)
@@ -10,19 +10,16 @@ include $D/common/Make.global_options
 # default target. make sure validate-xrefs is only run after
 # everything else (can't appear in the list of dependencies since
 # would be run at the same time for parallel makes)
-default: doxygen tutorial development
+default: doxygen development
        @$(MAKE) validate-xrefs
 
 all: default
 
 
 # specific targets
-doxygen: tutorial
+doxygen:
        cd doxygen ; rm -f *.tag ; $(MAKE)
 
-tutorial:
-       cd tutorial ; $(MAKE)
-
 development:
        cd development ; $(MAKE)
 
@@ -34,7 +31,6 @@ validate-xrefs:
        @echo "Validating cross-references in HTML files."
        $(PERL) $D/common/scripts/validate-xrefs.pl *html
        cd doxygen ; $(MAKE) validate-xrefs
-       cd tutorial ; $(MAKE) validate-xrefs
        cd development ; $(MAKE) validate-xrefs
        cd publications ; $(MAKE) validate-xrefs
        cd news ; $(MAKE) validate-xrefs
@@ -42,10 +38,9 @@ validate-xrefs:
 
 
 clean:
-       cd tutorial ; $(MAKE) clean
        cd doxygen ; $(MAKE) clean
        cd development ; $(MAKE) clean
        cd glossary ; $(MAKE) clean
 
 
-.PHONY: default doxygen all autogen-doc autogen-doc-all tutorial clean development validate-xrefs glossary
+.PHONY: default doxygen all autogen-doc autogen-doc-all clean development validate-xrefs glossary
index bd47cd3e95264222f0b73a611c44ef0563c2fba9..21320bf4c200d99c12d9da28f36bef0bd7dc404f 100644 (file)
@@ -20,17 +20,22 @@ private:
 # generate documentation. write the output to a file so as not to hide the
 # important message to impatient observers that this process can take quite
 # a while
-deal.tag: deal.dox \
+deal.II deal.tag: tutorial \
+          deal.dox \
          $D/base/include/*/*.h \
          $D/lac/include/*/*.h \
          $D/deal.II/include/*/*.h \
          headers/*.h \
-         ../tutorial/chapter-2.step-by-step/doxygen/*.h
+         tutorial/doxygen/*.h
        @echo "=== Generating reference documentation. " \
               "This can take several minutes..."
        @DOXYGEN@ deal.dox > doxygen.log
 
-deal.II: deal.tag
+
+tutorial:
+       @cd tutorial ; $(MAKE)
+
+
 
 # validate cross references. there are so many html files in these
 # directories that we can just call
@@ -49,6 +54,8 @@ validate-xrefs:
 clean:
        -for i in deal.II/* ; do rm $$i ; done
        -rm *.tag
+       @cd tutorial ; $(MAKE) clean
+
 
-.PHONY: html private deal.II \
+.PHONY: html tutorial private deal.II \
        validate-xrefs clean
index 3eb9ec97cc939c07efc0fb8c708a5e050bd5bbf4..a99c3aa33bf29e8c73004059651522423e90733d 100644 (file)
@@ -10,7 +10,7 @@ INPUT    = headers/ \
        ../../deal.II/include/grid \
        ../../deal.II/include/multigrid \
        ../../deal.II/include/numerics \
-       ../tutorial/chapter-2.step-by-step/doxygen
+       tutorial/doxygen
 
 HTML_OUTPUT      = deal.II
 LATEX_OUTPUT     = LaTeX/deal.II
diff --git a/deal.II/doc/doxygen/tutorial/Makefile b/deal.II/doc/doxygen/tutorial/Makefile
new file mode 100644 (file)
index 0000000..3bae031
--- /dev/null
@@ -0,0 +1,140 @@
+# $Id$
+# Create proper HTML output from the different example programs
+
+# include paths and global variables
+include ../../../common/Make.global_options
+
+
+# plain names of those files that we shall treat
+example-names = $(notdir $(shell echo $D/examples/step-? \
+                                      $D/examples/step-??))
+
+# prefix names for generated intermediate files
+gen-example-names = $(addprefix generated/, $(example-names))
+
+# names of commented program files, plain files, and tocs for the commented
+# and commented and plain versions of the program as well as a combined one
+example-toc-prog   = $(addsuffix _toc.prog,$(gen-example-names))
+example-toc-plain  = $(addsuffix _toc.plain,$(gen-example-names))
+example-toc        = $(addsuffix _toc.combined,$(gen-example-names))
+
+# same for intermediate files for doxygen output
+example-dox-prog   = $(addsuffix _prog.dox,$(gen-example-names))
+example-dox-plain  = $(addsuffix _plain.dox,$(gen-example-names))
+
+
+# finally a target for combined Doxygen files
+example-doxygen     = $(addprefix doxygen/,$(addsuffix .h,$(example-names)))
+
+
+
+
+
+# a makefile command that extracts the base name of a program
+get_basename = $(shell echo $(1) | $(PERL) -pi -e 's/(generated|doxygen).//g; s/\..*//g; s/_(prog|plain|toc.*)//g;')
+
+
+
+all: $(example-doxygen)
+
+
+$(example-toc-prog):
+       @echo ================== Making $@
+       @cat $D/examples/$(call get_basename, $@)/*.cc \
+         | $(PERL) program2toc \
+         > $@
+
+
+$(example-toc-plain):
+       @echo ================== Making $@
+       @cat generated/$(call get_basename, $@)_toc.prog \
+         | $(PERL) -pi -e 's/href=\"\#/href=\"\#plain-/g;' \
+         > $@
+
+
+$(example-toc):
+       @echo ================== Making $@
+       @echo "<table class=\"tutorial\">  <tr>    <td>" > $@
+       @echo "<ol>" >> $@
+       @echo "  <li> <a href=\"#Intro\" class=bold>Introduction</a>" >> $@
+       @echo "  <li> <a href=\"#CommProg\" class=bold>The commented program</a>" >> $@
+       @cat generated/$(call get_basename, $@)_toc.prog >> $@
+       @echo "  <li> <a href=\"#Results\" class=bold>Results</a>" >> $@
+       @echo "  <li> <a href=\"#PlainProg\" class=bold>The plain program</a>" >> $@
+       @cat generated/$(call get_basename, $@)_toc.plain >> $@
+       @echo "</ol> </td> </tr> </table>" >> $@
+
+
+
+$(example-dox-prog):
+       @echo ================== Making $@
+       @cat $D/examples/$(call get_basename, $@)/*.cc \
+         | $(PERL) program2doxygen \
+         > $@
+
+
+$(example-dox-plain):
+       @echo ================== Making $@
+       @echo " * <a name=\"PlainProg\"></a>" > $@
+       @echo " * <h1> The plain program</h1>" >> $@
+       @echo " * " >> $@
+       @echo " * (If you are looking at a locally installed deal.II version, then the" >> $@
+       @echo " * program can be found at <i>" >> $@
+       @echo " * " $D/examples/$(call get_basename,$@)/*.cc | $(PERL) -pi -e 's!/! /!g;' >> $@
+       @echo " * </i>. Otherwise, this is only" >> $@
+       @echo " * the path on some remote server.)" >> $@
+       @echo " @code" >> $@
+       @cat $D/examples/$(call get_basename, $@)/*.cc | $(PERL) program2doxyplain >> $@
+       @echo " @endcode" >> $@
+
+
+$(example-doxygen):
+       @echo ================== Assembling $@
+       @echo "/**" > $@
+       @echo " * @page $(shell echo $(call get_basename,$@) | $(PERL) -pi -e 's/-/_/g;') \
+                       The $(call get_basename,$@) tutorial program" >> $@
+       @echo "@htmlonly" >> $@
+       @cat generated/$(call get_basename, $@)_toc.combined >> $@
+       @echo "@endhtmlonly" >> $@
+       @cat $D/examples/$(call get_basename, $@)/doc/intro.dox >> $@
+       @cat generated/$(call get_basename, $@)_prog.dox >> $@
+       @cat $D/examples/$(call get_basename, $@)/doc/results.dox >> $@
+       @cat generated/$(call get_basename, $@)_plain.dox >> $@
+       @echo " */" >> $@
+
+
+validate-xrefs:
+       @$(PERL) $D/common/scripts/validate-xrefs.pl \
+                $(filter-out head.html foot.html, \
+                             $(shell echo *.html))
+
+
+clean:
+       -rm -f $(example-toc) \
+               $(example-toc-prog)  $(example-toc-plain) \
+               $(example-dox-prog) $(example-dox-plain) $(example-doxygen)
+       -rm -f Makefile.dep
+
+
+.PHONY: validate-xrefs clean
+
+
+Makefile.dep: $(shell echo $D/examples/*/*.cc) Makefile
+       @echo ================== Generating $@
+       @for i in $(example-names) ; do \
+               echo generated/$${i}_prog.html generated/$${i}_plain.html \
+                    generated/$${i}_toc.prog \
+                    generated/$${i}_prog.dox generated/$${i}_plain.dox : \
+                       `echo $D/examples/$${i}/*.cc` ; \
+               echo generated/$${i}_toc.plain : generated/$${i}_toc.prog ; \
+               echo generated/$${i}_toc.combined : \
+                       generated/$${i}_toc.prog generated/$${i}_toc.plain ; \
+               echo doxygen/$$i.h : generated/$${i}_prog.dox generated/$${i}_plain.dox \
+                               generated/$${i}_toc.combined \
+                               $D/examples/$$i/doc/intro.dox \
+                               $D/examples/$$i/doc/results.dox \
+ ; \
+        done \
+       > $@
+
+include Makefile.dep
diff --git a/deal.II/doc/doxygen/tutorial/foot.html b/deal.II/doc/doxygen/tutorial/foot.html
new file mode 100644 (file)
index 0000000..752a473
--- /dev/null
@@ -0,0 +1,12 @@
+<!-- Page Foot -->
+<hr>
+<table class="navbar">      
+<tr>
+  <td>
+    <a href="index.html" target="_top">Back to the step-by-step index</a>
+  </td>
+</tr>
+</table>
+<hr>
+</body>
+</html>
diff --git a/deal.II/doc/doxygen/tutorial/head.html b/deal.II/doc/doxygen/tutorial/head.html
new file mode 100644 (file)
index 0000000..29f961c
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+     Wolfgang Bangerth <deal@iwr.uni-heidelberg.de> 1999 
+-->
+
+<title>Step-by-Step</title>
+    <link href="../../screen.css" rel="StyleSheet" title="deal.II Tutorial" media="screen">
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="keywords" content="deal.II,deal.II tutorial,deal II">
+</head>
+
+<!-- Page Body -->
+<body lang="en">
+
diff --git a/deal.II/doc/doxygen/tutorial/index.html b/deal.II/doc/doxygen/tutorial/index.html
new file mode 100644 (file)
index 0000000..9f5ca82
--- /dev/null
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
+   "http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+     Wolfgang Bangerth <deal@iwr.uni-heidelberg.de> 1999 
+-->
+
+<title>Step-by-Step Examples</title>
+    <link href="../../screen.css" rel="StyleSheet" title="deal.II Tutorial" media="screen">
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="keywords" content="deal.II,deal.II tutorial,deal II">
+</head>
+
+<frameset rows="70,*" border=0>
+
+      <frame name="title" src="title.html" frameborder="1">
+      <frameset cols="120,*" border=0>
+       <frame name="navbar" src="navbar.html" frameborder="0">
+       <frame name="body" src="toc.html" frameborder="0">
+      </frameset>
+
+</frameset>
+
+<noframes>
+<h1>The deal.II Tutorial</h1>
+Your browser does not seem to understand frames. A version of this
+tutorial that does not use frames can be found 
+<a href="toc.html">here</a>.
+</noframes>
+
+</html>
+
+
+
+
+
diff --git a/deal.II/doc/doxygen/tutorial/navbar.html b/deal.II/doc/doxygen/tutorial/navbar.html
new file mode 100644 (file)
index 0000000..c97ce51
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
+   "http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+     Wolfgang Bangerth <deal@iwr.uni-heidelberg.de> 1999 
+-->
+
+<title>Step-by-Step Examples</title>
+    <link href="../../screen.css" rel="StyleSheet" title="deal.II Tutorial" media="screen">
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="keywords" content="deal.II,deal.II tutorial,deal II">
+</head>
+<body style="background-image:url(../../pictures/deal.II-text.jpg);" lang="en">
+
+
+       <p>
+         <a href="toc.html" target="body">Overview</a>
+       </p>
+
+       <hr>
+       
+       <p>
+         <a href="../../doxygen/deal.II/step_1.html" target="body">Step 1</a><br />
+         <a href="../../doxygen/deal.II/step_2.html" target="body">Step 2</a><br />
+         <a href="../../doxygen/deal.II/step_3.html" target="body">Step 3</a><br />
+         <a href="../../doxygen/deal.II/step_4.html" target="body">Step 4</a><br />
+         <a href="../../doxygen/deal.II/step_5.html" target="body">Step 5</a><br />
+         <a href="../../doxygen/deal.II/step_6.html" target="body">Step 6</a><br />
+         <a href="../../doxygen/deal.II/step_7.html" target="body">Step 7</a><br />
+         <a href="../../doxygen/deal.II/step_8.html" target="body">Step 8</a><br />
+         <a href="../../doxygen/deal.II/step_9.html" target="body">Step 9</a><br />
+         <a href="../../doxygen/deal.II/step_10.html" target="body">Step 10</a><br />
+         <a href="../../doxygen/deal.II/step_11.html" target="body">Step 11</a><br />
+         <a href="../../doxygen/deal.II/step_12.html" target="body">Step 12</a><br />
+         <a href="../../doxygen/deal.II/step_13.html" target="body">Step 13</a><br />
+         <a href="../../doxygen/deal.II/step_14.html" target="body">Step 14</a><br />
+         <a href="../../doxygen/deal.II/step_15.html" target="body">Step 15</a><br />
+         <a href="../../doxygen/deal.II/step_16.html" target="body">Step 16</a><br />
+         <a href="../../doxygen/deal.II/step_17.html" target="body">Step 17</a><br />
+         <a href="../../doxygen/deal.II/step_18.html" target="body">Step 18</a><br />
+         <a href="../../doxygen/deal.II/step_19.html" target="body">Step 19</a><br />
+         <a href="../../doxygen/deal.II/step_20.html" target="body">Step 20</a>
+       </p>
+
+       <hr>
+
+    <p>
+      <a href="../../index.html" target="_top">Back to the deal.II homepage</a>
+    </p>
+
+
+    <hr>
+
+    <p>
+      <a href="../../mail.html" target="body">Comments on the tutorial</a>
+    </p>
+
+<!-- Last modified: $Date$ -->
+
+</body>
+</html>
+
+
+
+
+
diff --git a/deal.II/doc/doxygen/tutorial/program2doxygen b/deal.II/doc/doxygen/tutorial/program2doxygen
new file mode 100644 (file)
index 0000000..b2ffbe3
--- /dev/null
@@ -0,0 +1,82 @@
+# Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006 by Wolfgang Bangerth, University of Heidelberg
+
+
+print " * <a name=\"CommProg\"></a>\n";
+print " * <h1> The commented program</h1>\n";
+
+# ignore comments at the start of the program. this includes subversion
+# tags and copyright notices.
+$_ = <>;
+while ( m!^/[/\*]!  ||  m!\s*\*! || m/^$/ ) {
+    $_ = <>;
+}
+
+# have two states, in which the program can be:
+# comment-mode and program-mode
+$comment_mode = 0;
+$program_mode = 1;
+$state =  $comment_mode;
+
+print " * \n";
+
+do {
+    # substitute tabs. also make sure that we don't output comment end
+    # markers that might confuse doxygen
+    s!/\*!/ \*!g;
+    s!\*/!\* /!g;
+
+    s/\t/        /g;
+
+    if (($state == $program_mode) && m!^\s*//!)
+    {     
+       $state = $comment_mode;
+       print " * \@endcode\n";
+       print " * \n";
+    }
+    # if in comment mode and no comment line: toggle state.
+    # don't do so, if only a blank line
+    elsif (($state == $comment_mode) && !m!^\s*//! && !m!^\s*$!)
+    {     
+       $state = $program_mode;
+       print " * \n";
+       print " * \@code\n";
+    }
+    
+    if ($state == $comment_mode) 
+    {
+       # in comment mode: first skip leading whitespace and
+       # comment // signs
+       s!\s*//\s*(.*)\n!$1!;
+
+       # second, replace section headers, and generate addressable
+       # anchor
+       if ( /\@sect/ ) {
+          s!\@sect(\d)\{(.*)\}\s*$!<h$1>$2</h$1>!g;
+          $sect_name = $2;
+
+          # for the anchor, use the name of the section but discard
+          # everything except for letters, numbers, and underscores
+          $sect_name =~ s/[^a-zA-Z0-9_]//g;
+
+          $_ = "\n * <a name=\"$sect_name\"></a> \n * $_";
+       }
+
+       # then replace references to other example programs automatically:
+       s!step-(\d+)!\@ref step_\1 \"step-\1\"!g;
+
+       # finally print this line
+       print " * $_\n";
+
+       # if empty line, introduce paragraph break
+       print " * \n" if  $_ =~ m!^\s*$!;
+    }
+    else
+    {
+       print " * $_";
+    }
+} while (<>);
+
+if ($state == $program_mode) {
+   print " * \@endcode\n";
+}
+
diff --git a/deal.II/doc/doxygen/tutorial/program2doxyplain b/deal.II/doc/doxygen/tutorial/program2doxyplain
new file mode 100644 (file)
index 0000000..2968d78
--- /dev/null
@@ -0,0 +1,31 @@
+# Copyright (C) 2006 by Wolfgang Bangerth, Texas A&M University
+
+print "\n";
+
+
+while (<>) {
+    # simply print non-comment lines and let doxygen do all the work.
+    # the only thing we have to make sure is that if we copy /*...*/
+    # comments that doxygen doesn't get confused; do so by simply
+    # adding a space
+    if ( ! m!^\s*//! ) {
+        s!/\*!/ \*!g;
+        s!\*/!\* /!g;
+       print " * $_";
+    } else {
+       # for comments, all we do is replace section headers, and
+       # generate addressable anchors
+       if ( /\@sect/ ) {
+          m!\@sect(\d)\{(.*)\}\s*$!;
+          $sect_name = $2;
+
+          # for the anchor, use the name of the section but discard
+          # everything except for letters, numbers, and underscores
+          $sect_name =~ s/[^a-zA-Z0-9_]//g;
+
+          print "\@endcode\n";
+          print " <a name=\"plain-$sect_name\"></a>\n";
+          print "\@code\n";
+       }
+    }  
+}
diff --git a/deal.II/doc/doxygen/tutorial/program2html b/deal.II/doc/doxygen/tutorial/program2html
new file mode 100644 (file)
index 0000000..49a6013
--- /dev/null
@@ -0,0 +1,89 @@
+# Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006 by Wolfgang Bangerth, University of Heidelberg
+
+print "<a name=\"CommProg\"></a>\n";
+print "<h1> The commented program</h1>\n";
+
+# ignore comments at the start of the program. this includes subversion
+# tags and copyright notices.
+$_ = <>;
+while ( m!^/[/\*]!  ||  m!\s*\*! || m/^$/ ) {
+    $_ = <>;
+}
+
+# have two states, in which the program can be:
+# comment-mode and program-mode
+$comment_mode = 0;
+$program_mode = 1;
+$state =  $comment_mode;
+
+print "<p>\n";
+
+do {
+    # substitute special characters
+    s/&/&amp;/g;
+    s/</&lt;/g;
+    s/>/&gt;/g;
+    s/\t/        /g;
+
+    if (($state == $program_mode) && m!^\s*//!)
+    {     
+       $state = $comment_mode;
+       print "</code></pre>\n";
+       print "\n";
+       print "<p>\n";
+    }
+    # if in comment mode and no comment line: toggle state.
+    # don't do so, if only a blank line
+    elsif (($state == $comment_mode) && !m!^\s*//! && !m!^\s*$!)
+    {     
+       $state = $program_mode;
+       print "</p>\n";
+       print "\n";
+       print "<pre><code>\n";
+    }
+    
+    if ($state == $comment_mode) 
+    {
+       # in comment mode: first skip leading whitespace and
+       # comment // signs
+       s!\s*//\s*(.*)\n!$1!;
+
+       # second, replace section headers, and generate addressable
+       # anchor
+       if ( /\@sect/ ) {
+          s!\@sect(\d)\{(.*)\}\s*$!<h$1>$2</h$1>!g;
+          $sect_name = $2;
+
+          # for the anchor, use the name of the section but discard
+          # everything except for letters, numbers, and underscores
+          $sect_name =~ s/[^a-zA-Z0-9_]//g;
+
+          $_ = "\n<a name=\"$sect_name\"></a>" . $_;
+       }
+
+       # replace quotation marks by the appropriate HTML quotation marks
+       s!``!&#8220;!g;
+       s!''!&#8221;!g;
+
+        # replace double dashes in comments by &mdash;
+       s!--!&mdash;!g;
+
+       # then replace references to other example programs automatically:
+       s!(step-\d+)!<a href="\1.html" target="body">\1</a>!g;
+
+       # finally print this line
+       print $_, "\n";
+
+       # if empty line, introduce paragraph break
+       print "</p>\n\n<p>" if  $_ =~ m!^\s*$!;
+    }
+    else
+    {
+       print "        $_";
+    }
+} while (<>);
+
+if ($state == $program_mode) {
+   print "</code></pre>\n";
+}
+
diff --git a/deal.II/doc/doxygen/tutorial/program2plain b/deal.II/doc/doxygen/tutorial/program2plain
new file mode 100644 (file)
index 0000000..0a1a059
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 1999, 2000, 2001, 2002, 2006 by Wolfgang Bangerth, University of Heidelberg
+
+print "<p>\n";
+print "<pre><code>\n";
+
+
+while (<>) {
+    # ignore comment lines
+    if ( ! m!^\s*//! ) {
+       # substitute special characters
+       s/&/&amp;/g; 
+       s/</&lt;/g;      
+       s/>/&gt;/g;
+       s/\t/        /g;
+
+       print "  $_";
+    } else {
+       # second, replace section headers, and generate addressable
+       # anchor
+       if ( /\@sect/ ) {
+          m!\@sect(\d)\{(.*)\}\s*$!;
+          $sect_name = $2;
+
+          # for the anchor, use the name of the section but discard
+          # everything except for letters, numbers, and underscores
+          $sect_name =~ s/[^a-zA-Z0-9_]//g;
+
+          print "\n<a name=\"plain-$sect_name\"></a>\n";
+       }
+    }  
+}
+
+print "</code></pre>\n</p>\n\n";
diff --git a/deal.II/doc/doxygen/tutorial/program2toc b/deal.II/doc/doxygen/tutorial/program2toc
new file mode 100644 (file)
index 0000000..935ab8d
--- /dev/null
@@ -0,0 +1,48 @@
+print "    <ul>\n";
+
+$level = 3;
+while (<>) {
+    if ( /\@sect(.)\{(.*)\}/ ) {
+       $newlevel = $1;
+       $text = $2;
+       
+       # only allow header levels 3 through 6, since higher ones are
+       # reserved for top-level document headers
+       if (! ($newlevel =~ /[3456]/)) {
+           print STDERR "Only header levels 3 through 6 are allowed.\n";
+           print STDERR "You had $newlevel.\n";
+           die;
+       }
+
+       if ($newlevel > $level) {
+           for ($i=$level; $i<$newlevel; ++$i) {
+               print "      <ul>\n";
+            }
+       } elsif ($newlevel < $level) {
+           for ($i=$newlevel; $i<$level; ++$i) {
+               print "      </ul>\n";
+            }
+       }
+
+       $reftext = $text;
+
+       # for the anchor, use the name of the section but discard
+       # everything except for letters, numbers, and underscores
+       $reftext =~ s/[^a-zA-Z0-9_]//g;
+
+       # replace quotation marks by the appropriate HTML quotation marks
+       $text =~ s!``!&#8220;!g;
+       $text =~ s!''!&#8221;!g;
+
+        # replace double dashes in comments by &mdash;
+       $text =~ s!--!&mdash;!g;
+
+       print "        <li><a href=\"#$reftext\">$text</a>\n";
+
+       $level = $newlevel;
+    } 
+}
+
+for (; $level>=3; --$level) {
+    print "      </ul>\n";
+}
diff --git a/deal.II/doc/doxygen/tutorial/title.html b/deal.II/doc/doxygen/tutorial/title.html
new file mode 100644 (file)
index 0000000..06b49e2
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
+   "http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+     Wolfgang Bangerth <deal@iwr.uni-heidelberg.de> 1999 
+-->
+
+<title>Step-by-Step Examples</title>
+    <link href="../../screen.css" rel="StyleSheet" title="deal.II Tutorial" media="screen">
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="keywords" content="deal.II,deal.II tutorial,deal II">
+</head>
+
+
+<body class="title">
+  <div class="fixedhead">
+    <h1 class="head"> The deal.II tutorial - Step-by-step examples</h1>
+  </div>
+</body>
+</html>
+
+
+
+
+
+
diff --git a/deal.II/doc/doxygen/tutorial/toc.html b/deal.II/doc/doxygen/tutorial/toc.html
new file mode 100644 (file)
index 0000000..d3dc697
--- /dev/null
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
+   "http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+     Wolfgang Bangerth <deal@iwr.uni-heidelberg.de> 1999 
+-->
+
+<title>Step-by-Step</title>
+    <link href="../../screen.css" rel="StyleSheet" title="deal.II Tutorial" media="screen">
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="keywords" content="deal.II,deal.II tutorial,deal II">
+</head>
+
+<!-- Page Body -->
+<body lang="en">
+
+<h1>Step-by-Step Examples</h1>
+
+<p>
+This tutorial contains a collection of small programs, each more
+or less built atop of the previous ones, which demonstrate various
+aspects of the library. The general layout of each such example is as
+follows:
+<ol>
+  <li> A brief description of what the program does and what is new
+       compared to the previous programs.
+  <li> The program, in commented form.
+  <li> The output of the program, with some comments.
+  <li> Since the program itself usually is a little bit unreadable
+       with all the comments intertwingled, we present the program again,
+       with all comments stripped off, to allow getting an overview of it.
+</ol>
+</p>
+
+<p>
+The programs themselves can be found at a path which is indicated at
+the beginning of the last section of each example. You can compile
+them by typing <strong>make</strong> in the respective directory, and run them
+using <strong>make run</strong>. The latter command also compiles the program if
+that has not already been done. The Makefiles in the different
+directories are based on the small program Makefile template described
+in <a href="../../development/index.html" target="_top">in this section</a>.
+</p>
+
+
+<p>
+At present, the following programs exist:
+</p>
+
+<dl>
+      <dt><a href="../../doxygen/deal.II/step_1.html">Step 1</a></dt> 
+      <dd><strong>What's new:</strong> Everything. We create a grid
+      and show a simple way to write it to a file.
+      </dd>
+    
+      <dt><a href="../../doxygen/deal.II/step_2.html">Step 2</a></dt> 
+      <dd><strong>What's new:</strong> Associate degrees of freedom to
+      each vertex and compute the resulting sparsity pattern of
+      matrices. Show that renumbering reduces the bandwidth of
+      matrices significantly, i.e. clusters nonzero entries around the
+      diagonal.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_3.html">Step 3</a></dt> 
+      <dd><strong>What's new:</strong> Actually solve Laplace's
+      problem. Object-orientation. Assembling matrices and
+      vectors. Boundary values.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_4.html">Step 4</a></dt> 
+      <dd><strong>What's new:</strong> This example is programmed in a
+      way that it is independent of the dimension for which we want to
+      solve Laplace's equation; we will solve the equation in 2D and
+      3D, although the program is exactly the same. Non-constant right
+      hand side function. Non-homogeneous boundary values.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_5.html">Step 5</a></dt> 
+      <dd><strong>What's new:</strong> Computations on successively
+      refined grids. Reading a grid from disk. Some optimizations.  
+      Using assertions. Non-constant coefficient in
+      the elliptic operator. Preconditioning the CG solver for the
+      linear system of equations.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_6.html">Step 6</a></dt> 
+      <dd><strong>What's new:</strong> Adaptive local
+      refinement. Handling of hanging nodes. Higher order elements.
+      Catching exceptions in the &#8220;main&#8221; function.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_7.html">Step 7</a></dt> 
+      <dd><strong>What's new:</strong> Helmholtz
+      equation. Non-homogeneous Neumann boundary conditions and
+      boundary integrals. Verification of correctness of computed
+      solutions. Computing the error between exact and numerical
+      solution and output of the data in tables. Using counted pointers.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_8.html">Step 8</a></dt> 
+      <dd><strong>What's new:</strong> The elastic equations will be
+      solved instead of Laplace's equation. The solution is
+      vector-valued and the equations form a system with as many
+      equations as the dimension of the space in which it is posed.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_9.html">Step 9</a></dt> 
+      <dd><strong>What's new:</strong> Transport equation, assembling 
+      the system of equations in parallel using multi-threading, 
+      implementing a refinement criterion based on a finite difference
+      approximation of the gradient.
+
+      <dt><a href="../../doxygen/deal.II/step_10.html">Step 10</a></dt> 
+      <dd><strong>What's new:</strong> Higher order mappings. Do not
+      solve equations, but rather compute the value of pi to high
+      accuracy.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_11.html">Step 11</a></dt> 
+      <dd><strong>What's new:</strong> Solving a Laplace problem with
+      higher order mappings. Using strange constraints and
+      intermediate representations of sparsity patterns.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_12.html">Step 12</a></dt>
+      <dd><strong>What's new:</strong> General framework for
+      discontinuous Galerkin methods. Use of Timer class.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_13.html">Step 13</a></dt>
+      <dd><strong>What's new:</strong> Software design questions and
+      how to write a modular, extensible finite element program.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_14.html">Step 14</a></dt>
+      <dd><strong>What's new:</strong> Duality based error estimators,
+      more strategies to write a modular, extensible finite element
+      program.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_15.html">Step 15</a></dt>
+      <dd><strong>What's new:</strong> 1d problems, nonlinear solvers,
+      transfering a solution across mesh refinement.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_16.html">Step 16</a></dt>
+      <dd><strong>What's new:</strong> Based on step 5, a multilevel
+      preconditioner is implemented.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_17.html">Step 17</a></dt>
+      <dd><strong>What's new:</strong> Using PETSc for linear algebra; running
+      in parallel on clusters of computers linked together by MPI.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_18.html">Step 18</a></dt>
+      <dd><strong>What's new:</strong> A time dependent problem; using a much
+      simplified version of implementing elasticity; moving meshes; handling
+      large scale output of parallel programs.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_19.html">Step 19</a></dt>
+      <dd><strong>What's new:</strong> Input parameter file handling. Merging
+      output of a parallel program.
+      </dd>
+
+      <dt><a href="../../doxygen/deal.II/step_20.html">Step 20</a></dt>
+      <dd><strong>What's new:</strong> Mixed finite elements. Using block
+      matrices and block vectors to define more complicated solvers and
+      preconditioners working on the Schur complement.
+      </dd>
+</dl>
+
+<!-- Page Foot -->
+<hr>
+<address>
+<a href="../../mail.html">The deal.II group</a></address>
+</body>
+</html>

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.