# generic targets
-default: autogen-doc tutorial
+default: autogen-doc tutorial development
all: default autogen-doc-all
tutorial:
cd tutorial ; $(MAKE)
+development:
+ cd development ; $(MAKE)
clean:
cd auto ; $(MAKE) clean
cd tutorial ; $(MAKE) clean
+ cd development ; $(MAKE) clean
-.PHONY: default all autogen-doc autogen-doc-all tutorial clean
+.PHONY: default all autogen-doc autogen-doc-all tutorial clean development
--- /dev/null
+makefiles.html
--- /dev/null
+D = ../..
+include $D/common/Make.global_options
+
+
+default: makefiles.html makefile.small.html makefile.large.html
+
+
+makefiles.html: Makefile makefiles.1.html $D/common/Make.global_options makefiles.2.html
+ @cat makefiles.1.html > $@
+ @echo '<li><code>CXX=$(CXX)</code>' >> $@
+ @echo '<li><code>CC=$(CC)</code>' >> $@
+ @echo '<li><code>PERL=$(PERL)</code>' >> $@
+ @echo '<li><code>lib-path-base=$(lib-path-base)</code>' >> $@
+ @echo '<li><code>lib-path-lac=$(lib-path-lac)</code>' >> $@
+ @echo '<li><code>lib-path-deal2=$(lib-path-deal2)</code>' >> $@
+ @echo '<li><code>LIBPATH=$(LIBPATH)</code>' >> $@
+ @echo '<li><code>lib-base.o=$(lib-base.o)</code>' >> $@
+ @echo '<li><code>lib-base.g=$(lib-base.g)</code>' >> $@
+ @echo '<li><code>lib-lac.o=$(lib-lac.o)</code>' >> $@
+ @echo '<li><code>lib-lac.g=$(lib-lac.g)</code>' >> $@
+ @echo '<li><code>lib-deal2-1d.o=$(lib-deal2-1d.o)</code>' >> $@
+ @echo '<li><code>lib-deal2-1d.g=$(lib-deal2-1d.g)</code>' >> $@
+ @echo '<li><code>lib-deal2-2d.o=$(lib-deal2-2d.o)</code>' >> $@
+ @echo '<li><code>lib-deal2-2d.g=$(lib-deal2-2d.g)</code>' >> $@
+ @echo '<li><code>lib-deal2-3d.o=$(lib-deal2-3d.o)</code>' >> $@
+ @echo '<li><code>lib-deal2-3d.g=$(lib-deal2-3d.g)</code>' >> $@
+ @echo '<li><code>include-path-base=$(include-path-base)</code>' >> $@
+ @echo '<li><code>include-path-lac=$(include-path-lac)</code>' >> $@
+ @echo '<li><code>include-path-deal2=$(include-path-deal2)</code>' >> $@
+ @echo '<li><code>INCLUDE=$(INCLUDE)</code>' >> $@
+ @echo '<li><code>CXXFLAGS.g=$(CXXFLAGS.g)</code>' >> $@
+ @echo '<li><code>CXXFLAGS.o=$(CXXFLAGS.o)</code>' >> $@
+ @echo '<li><code>ACE_ROOT=$(ACE_ROOT)</code>' >> $@
+ @echo '<li><code>lib-ACE=$(lib-ACE)</code>' >> $@
+ @echo '<li><code>with-multithreading=$(with-multithreading)</code>' >> $@
+ @cat makefiles.2.html >> $@
+
+
+makefile.small.html: Makefile.small
+ @$(PERL) makefile2html < $< > $@
+
+makefile.large.html: Makefile.large
+ @$(PERL) makefile2html < $< > $@
+
+
+clean:
+ -rm -f makefiles.html makefile.small.html makefile.large.html
+
+.PHONY: default clean
--- /dev/null
+# $Id$
+
+# The large projects Makefile looks much like the one for small
+# projects. Basically, only the following six parameters need to be
+# set by you:
+
+# The first denotes the dimension for which the program is to be
+# compiled:
+deal_II_dimension = 2
+
+# The second tells us the name of the executable. It is prefixed by
+# `lib/' to designate its destination directory. Note that the program
+# name depends on the dimension, so you can keep copies for the
+# different dimensions around:
+target = lib/application-name-$(deal_II_dimension)d
+
+# The `debug-mode' variable works as in the small projects Makefile:
+debug-mode = off
+
+# And so does the following variable. You will have to set it to
+# something more reasonable, of course.
+clean-up-files = ...
+
+# Finally, here is a variable which tells the `run' rule which
+# parameters to pass to the executable. Usually, this will be the name
+# of an input file.
+run-parameters = parameter-file.prm
+
+# Now, this is the last variable you need to set, namely the path to
+# the deal.II toplevel directory:
+D = ../../deal.II
+
+
+
+#
+#
+# Usually, you will not need to change something beyond this point.
+#
+#
+# This tells `make' where to find the global settings and rules:
+include $D/common/Make.global_options
+
+
+# First get a list of files belonging to the project. Include files
+# are expected in `include/', while implementation files are expected
+# in `source/'. Object files are placed into `lib/[123]d', using the
+# same base name as the `.cc' file.
+cc-files = $(shell echo source/*.cc)
+o-files = $(cc-files:source/%.cc=lib/$(deal_II_dimension)d/%.o)
+go-files = $(cc-files:source/%.cc=lib/$(deal_II_dimension)d/%.go)
+h-files = $(wildcard include/*.h)
+lib-h-files = $(shell echo $(include-path-base)/*.h \
+ $(include-path-lac)/*.h \
+ $(include-path-deal2)/*/*.h)
+
+# As before, define a list of libraries. This, of course depends on
+# the dimension in which we are working:
+libs.g = $(lib-deal2-$(deal_II_dimension)d.g) \
+ $(lib-lac.g) \
+ $(lib-base.g)
+libs.o = $(lib-deal2-$(deal_II_dimension)d.o) \
+ $(lib-lac.o) \
+ $(lib-base.o)
+
+
+
+# Define a nifty string to indicate in the output of the compile
+# commands whether the program is compiled in multithread mode or not:
+ifneq ($(with-multithreading),no)
+ MT = MT
+else
+ MT = ==
+endif
+
+
+
+
+# Now use the information from above to define the set of libraries to
+# link with and the flags to be passed to the compiler:
+ifeq ($(debug-mode),on)
+ libraries = $(go-files) $(libs.g)
+ flags = $(CXXFLAGS.g)
+else
+ libraries = $(o-files) $(libs.o)
+ flags = $(CXXFLAGS.o)
+endif
+
+
+# Then augment the compiler flags by a specification of the dimension
+# for which the program shall be compiled:
+flags += -Ddeal_II_dimension=$(deal_II_dimension)
+
+
+# If in multithread mode, add the ACE library to the libraries which
+# we need to link with:
+ifneq ($(with-multithreading),no)
+ libraries += $(lib-ACE)
+endif
+
+
+# The following two rules define how to compile C++ files into object
+# files:
+lib/$(deal_II_dimension)d/%.go :
+ @echo =====waves=======$(deal_II_dimension)d====debug=====$(MT)== $(<F)
+ @$(CXX) $(flags) -c $< -o $@
+lib/$(deal_II_dimension)d/%.o :
+ @echo =====waves=======$(deal_II_dimension)d====optimized=$(MT)== $(<F)
+ @$(CXX) $(flags) -c $< -o $@
+
+
+
+# Next define how to link the executable
+$(target) : $(libraries) Makefile
+ @echo =====waves=======$(deal_II_dimension)d==============$(MT)== Linking $(@F)
+ @$(CXX) $(flags) -o $(target) $(libraries) $(user-libs)
+
+
+
+# Rule how to run the program
+run: $(target)
+ ./$(target) $(run-parameters)
+
+
+# Rule how to clean up. This is split into several different rules to
+# allow for parallel execution of commands:
+clean: clean-lib clean-data
+ -rm -f *~ */*~ */*/*~ lib/Makefile.dep
+
+clean-lib:
+ -rm -f lib/?d/*.o lib/?d/*.go lib/$(target) lib/TAGS
+
+clean-data:
+ -rm -f $(clean-up-files)
+
+
+# Again tell `make' which rules are not meant to produce files:
+.PHONY: clean clean-data clean-lib run
+
+
+
+# Finally produce the list of dependencies. Note that this time, the
+# object files end up in directories of their own, so we have to
+# modify the output a bit. The file with the dependencies is put into
+# `lib/'.
+lib/Makefile.dep: $(cc-files) $(h-files) $(lib-h-files) Makefile
+ @echo =====waves=======$(deal_II_dimension)d================== Remaking Makefile
+ @perl $D/common/scripts/make_dependencies.pl $(INCLUDE) $(cc-files) \
+ | perl -p -e 's!^lib/g?o/(.*):!lib/$(deal_II_dimension)d/$$1:!g;' \
+ > lib/Makefile.dep
+
+include lib/Makefile.dep
+
--- /dev/null
+# $Id$
+
+
+# For the small projects Makefile, you basically need to fill in only
+# four fields.
+#
+# The first is the name of the application. It is assumed that the
+# application name is the same as the base file name of the single C++
+# file from which the application is generated.
+target = application-name
+
+# The second field determines whether you want to run your program in
+# debug or optimized mode. The latter is significantly faster, but no
+# run-time checking of parameters and internal states is performed, so
+# you should set this value to `on' while you develop your program,
+# and to `off' when running production computations.
+debug-mode = on
+
+
+# As third field, we need to give the path to the top-level deal.II
+# directory. You need to adjust this to your needs. Since this path is
+# probably the most often needed one in the Makefile internals, it is
+# designated by a single-character variable, since that can be
+# reference using $D only, i.e. without the parentheses that are
+# required for most other parameters, as e.g. in $(target).
+D = ../../deal.II
+
+
+# The last field specifies the names of data and other files that
+# shall be deleted when calling `make clean'. Object and backup files,
+# executables and the like are removed anyway. Here, we give a list of
+# files in the various output formats that deal.II supports.
+clean-up-files = *gmv *gnuplot *gpl *eps *pov
+
+
+
+
+#
+#
+# Usually, you will not need to change something beyond this point.
+#
+#
+# The next statement tell the `make' program where to find the
+# deal.II top level directory and to include the file with the global
+# settings
+include $D/common/Make.global_options
+
+
+# Since the whole project consists of only one file, we need not
+# consider difficult dependencies. We only have to declare the
+# libraries which we want to link to the object file, and there need
+# to be two sets of libraries: one for the debug mode version of the
+# application and one for the optimized mode. Here we have selected
+# the versions for 2d. Note that the order in which the libraries are
+# given here is important and that your applications won't link
+# properly if they are given in another order.
+#
+# You may need to augment the lists of libraries when compiling your
+# program for other dimensions, or when using third party libraries
+libs.g = $(lib-deal2-2d.g) \
+ $(lib-lac.g) \
+ $(lib-base.g)
+libs.o = $(lib-deal2-2d.o) \
+ $(lib-lac.o) \
+ $(lib-base.o)
+
+
+# We now use the variable defined above which switch between debug and
+# optimized mode to select the correct compiler flags and the set of
+# libraries to link with. Included in the list of libraries is the
+# name of the object file which we will produce from the single C++
+# file. Note that by default we use the extension .go for object files
+# compiled in debug mode and .o for object files in optimized mode.
+ifeq ($(debug-mode),on)
+ libraries = $(target).go $(libs.g)
+ flags = $(CXXFLAGS.g)
+else
+ libraries = $(target).go $(libs.o)
+ flags = $(CXXFLAGS.o)
+endif
+
+
+# If in multithread mode, add the ACE library to the libraries which
+# we need to link with:
+ifneq ($(with-multithreading),no)
+ libraries += $(lib-ACE)
+endif
+
+
+
+# Now comes the first production rule: how to link the single object
+# file produced from the single C++ file into the executable. Since
+# this is the first rule in the Makefile, it is the one `make' selects
+# if you call it without arguments.
+$(target) : $(libraries)
+ @echo ============================ Linking $@
+ @$(CXX) $(flags) -o $@ $^
+
+
+# To make running the application somewhat independent of the actual
+# program name, we usually declare a rule `run' which simply runs the
+# program. You can then run it by typing `make run'. This is also
+# useful if you want to call the executable with arguments which do
+# not change frequently. You may then want to add them to the
+# following rule:
+run: $(target)
+ @echo ============================ Running $<
+ @./$(target)
+
+
+# As a last rule to the `make' program, we define what to do when
+# cleaning up a directory. This usually involves deleting object files
+# and other automatically created files such as the executable itself,
+# backup files, and data files. Since the latter are not usually quite
+# diverse, you needed to declare them at the top of this file.
+clean:
+ -rm -f *.o *.go *~ Makefile.dep $(target) $(clean-up-files)
+
+
+# Since we have not yet stated how to make an object file from a C++
+# file, we should do so now. Since the many flags passed to the
+# compiler are usually not of much interest, we suppress the actual
+# command line using the `at' sign in the first column of the rules
+# and write the string indicating what we do instead.
+%.go : %.cc
+ @echo ==============debug========= $(<F)
+ @$(CXX) $(CXXFLAGS.g) -c $< -o $@
+%.o : %.cc
+ @echo ==============optimized===== $(<F)
+ @$(CXX) $(CXXFLAGS) -c $< -o $@
+
+
+# The following statement tells make that the rules `run' and `clean'
+# are not expected to produce files of the same name as Makefile rules
+# usually do.
+.PHONY: run clean
+
+
+# Finally there is a rule which you normally need not care much about:
+# since the executable depends on some include files from the library,
+# besides the C++ application file of course, it is necessary to
+# re-generate the executable when one of the files it depends on has
+# changed. The following rule to created a dependency file
+# `Makefile.dep', which `make' uses to determine when to regenerate
+# the executable. This file is automagically remade whenever needed,
+# i.e. whenever one of the cc-/h-files changed. Make detects whether
+# to remake this file upon inclusion at the bottom of this file.
+#
+# The dependency file is created using a perl script. Since the
+# script prefixes the output names by `lib/o' or `lib/go' (it was
+# written for the sublibraries' Makefile), we have to strip that again
+# since object files are placed in the present directory for this
+# application. All these things are made in the next rule:
+Makefile.dep: $(target).cc Makefile \
+ $(shell echo $(include-path-base)/*.h \
+ $(include-path-lac)/*.h \
+ $(include-path-deal2)/*/*.h)
+ @echo ============================ Remaking Makefile
+ @perl $D/common/scripts/make_dependencies.pl $(INCLUDE) $(target).cc \
+ | perl -pi -e 's!lib/g?o/!!g;' \
+ > Makefile.dep
+
+# To make the dependencies known to `make', we finally have to include
+# them:
+include Makefile.dep
+
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<title>deal.II Homepage</title>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II">
+</head>
+
+<frameset rows="60,*" border=0>
+
+ <frameset cols="150,*" border=0>
+ <frame name="logo" src="logo.html">
+ <frame name="title" src="title.html">
+ </frameset>
+ <frameset cols="150,*" border=0>
+ <frame name="navbar" src="navbar.html" border=0 frameborder="no">
+ <frame name="body" src="toc.html" border=0 frameborder="no">
+ </frameset>
+
+</frameset>
+
+<noframes>
+<h1>The deal.II Homepage</h1>
+Your browser does not seem to understand frames. A version of this
+page that does not use frames can be found at
+<a href="toc.html">toc.html</a>.
+</noframes>
+
+</html>
+
+
+
+
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+ Jan Schrage and others <deal@iwr.uni-heidelberg.de> 1999
+-->
+
+<title>deal.II tutorial: Logo</title>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <meta name="author" content="Jan Schrage and others <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II">
+</head>
+
+<!-- Page Body -->
+<body lang="en">
+
+<!-- Title Frame -->
+
+<img src="../pictures/deal10.gif" alt="DEAL Logo" align="center" hspace=20 class="chapter_title">
+
+</body>
+</html>
+
+
+
+
+
+
+
+
--- /dev/null
+# Copyright (C) 1999, 2000 by Wolfgang Bangerth, Univerisity of Heidelberg.de
+
+
+# ignore the first few lines
+$_ = <>;
+while ( m!^#\*\s*\$Id$!) {
+ $_ = <>;
+}
+
+# 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";
+
+while (<>) {
+ # ignore cvs tag
+ next if m!^#\*\s*\$Id:!;
+
+ # substitute special characters
+ s/&/&/g;
+ s/</</g;
+ s/>/>/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)
+ {
+ m!\s*#\s*(.*)!;
+ print $1, "\n";
+ print "</p>\n\n<p>" if $1 =~ m!^\s*$!;
+ }
+ else
+ {
+ print " $_";
+ }
+}
+
+if ($state == $program_mode) {
+ print "</code></pre>\n";
+}
+
+
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+ <head>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <title>The deal.II Homepage - Makefiles</title>
+ <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II"></head>
+ <body>
+
+
+ <h2>Makefiles for <acronym>deal.II</acronym> projects</h2>
+
+ <p>
+ The file <code>common/Make.global_options</code> exports several
+ make variables to other Makefiles which
+ include it. You will want to include this file into the Makefiles of
+ your project to use the same compiler flags and to access the pathes
+ to libraries. This page documents <a href="#flags">available
+ flags</a>, documents the <a href="#values">values which are used
+ in your local installation</a>, and shows two
+ <a href="#generic">generic Makefiles</a> which you may want to use
+ in your own projects.
+ </p>
+
+ <a name="flags">
+ <h3>Available flags</h3>
+
+ <p>
+ Following is a list of all available flags which are exported to
+ other Makefiles, sorted into different categories:
+ </p>
+
+ <ul>
+ <li><h4>General</h4></h4>
+
+ <dl>
+ <dt> <code>CXX</code> </dt>
+ <dd> <p>
+ Executable name of the C++ compiler
+ </p>
+ </dd>
+
+
+ <dt> <code>CC</code> </dt>
+ <dd> <p>
+ Executable name of the C compiler, which
+ is used to generate shared libraries
+ </p>
+ </dd>
+
+
+ <dt> <code>PERL</code> </dt>
+ <dd> <p>
+ Executable name of the `perl' program
+ </p>
+ </dd>
+ </dl>
+
+
+
+ <li><h4>Paths to libraries</h4>
+
+ <dl>
+ <dt> <code>lib-path-base</code> </dt>
+ <dd> <p>
+ Path to the library files of the /base library
+ </p>
+ </dd>
+
+
+ <dt> <code>lib-path-lac</code> </dt>
+ <dd> <p>
+ Same for the /lac library
+ </p>
+ </dd>
+
+
+ <dt> <code>lib-path-deal2</code> </dt>
+ <dd> <p>
+ Same for the /deal.II library
+ </p>
+ </dd>
+
+
+ <dt> <code>LIBPATH</code> </dt>
+ <dd> <p>
+ All the library pathes prefixed by -L, i.e. the
+ flags needed by the compiler to find the libraries
+ when they are linked in using -lbase -llac -ldeal_II_2d
+ (for example). These -L paths are appended to what
+ was in $(LIBPATH) before.
+ </p>
+ </dd>
+ </dl>
+
+
+
+ <li><h4>Paths and filenames of libraries</h4>
+
+ <dl>
+ <dt> <code>lib-base.o</code> </dt>
+ <dd> <p>
+ Path and filename of the base library in optimized
+ mode. depending on whether shared libraries were
+ or were not enabled, the suffix of the value of this
+ variable is either .so or .a
+ </p>
+ </dd>
+
+
+ <dt> <code>lib-base.g</code> </dt>
+ <dd> <p>
+ Same, for the library in debug mode
+ </p>
+ </dd>
+
+
+ <dt> <code>lib-lac.o lib-lac.g</code> </dt>
+ <dd> <p>
+ Same for the lac libraries
+ </p>
+ </dd>
+
+ <dt> <code>lib-deal2-1d.o lib-deal2-1d.g
+ lib-deal2-2d.o lib-deal2-2d.g
+ lib-deal2-3d.o lib-deal2-3d.g</code> </dt>
+ <dd> <p>
+ Same for the deal.II libraries in the various dimensions
+ </p>
+ </dd>
+ </dl>
+
+
+
+ <li><h4>Pathes to include files</h4>
+
+ <dl>
+ <dt> <code>include-path-base</code> </dt>
+ <dd> <p>
+ Same as for lib-path-base, but contains the paths
+ to the include files of the /base library
+ </p>
+ </dd>
+
+
+ <dt> <code>include-path-lac</code> </dt>
+ <dd> <p>
+ Same for the /lac library
+ </p>
+ </dd>
+
+
+ <dt> <code>include-path-deal2</code> </dt>
+ <dd> <p>
+ Same for the /deal.II library
+ </p>
+ </dd>
+
+
+ <dt> <code>INCLUDE</code> </dt>
+ <dd> <p>
+ All the include pathes prefixed by -I
+ </p>
+ </dd>
+ </dl>
+
+
+ <li><h4>Compiler flags</h4>
+
+ <dl>
+ <dt> <code>CXXFLAGS.g</code> </dt>
+ <dd> <p>
+ Compiler flags for debug mode
+ </p>
+ </dd>
+
+
+ <dt> <code>CXXFLAGS.o</code> </dt>
+ <dd> <p>
+ Compiler flags for optimized mode
+ </p>
+ </dd>
+ </dl>
+
+
+
+ <li><h4>Variables in multithreading mode</h4>
+
+ <p>
+ If --with-multithreading was given to ./configure, $(INCLUDE) and
+ $(LIBPATH) are augmented by the ACE include and library paths, and
+ the following symbols are meaningful:
+
+ <dl>
+ <dt> <code>ACE_ROOT</code> </dt>
+ <dd> <p>
+ Path to the ACE library as given to ./configure
+ </p>
+ </dd>
+
+
+ <dt> <code>lib-ACE</code> </dt>
+ <dd> <p>
+ Path and name of the ACE library
+ </p>
+ </dd>
+
+
+ <dt> <code>with-multithreading</code> </dt>
+ <dd> <p>
+ This symbol is 'no' if the flag was not given
+ to ./configure and not 'no' (it actually equals
+ $(ACE_ROOT)) if -with-multithreading=... was
+ given
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ Note that in multithread mode, the compiler flags are augmented by
+ the definition of the preprocessor variable
+ <code>DEAL_II_USE_MT</code>, which you can use to find out whether
+ your program shall use multithreading or not.
+ </p>
+
+ </ul>
+
+
+
+ <a name="values">
+ <h3>Values of available flags</h3>
+
+ In the copy of the library (your local one, or the one on the
+ <acronym>deal.II</acronym> homepage) to which the file which you
+ are presently viewing belongs, the flags documented above have the
+ following values:
+
+ <ul>
+
--- /dev/null
+ </ul>
+
+ <a name="generic">
+ <h3>Generic Makefiles</h3>
+
+ <p>
+ In this section, we provide templates for Makefiles for
+ applications based on the <acronym>deal.II</acronym>
+ libraries. They show how to use the information provided by the
+ variables explained above.
+ </p>
+
+ <p>
+ At present, we have two Makefiles, one for
+ <a href="makefile.small.html" target="body">small projects</a>
+ consisting of only one C++ file, and one for
+ <a href="makefile.large.html" target="body">large projects</a>.
+ Both Makefiles need slight modifications before they will work in
+ your project. The places for modifications are marked.
+
+ <ul>
+ <li> <p>
+ <a href="makefile.small.html" target="body">Small
+ projects</a>: This Makefile is targeted at applications which
+ are written to simply try something, or prove an
+ assumption. Such applications are the
+ <a href="../tutorial/chapter-2.step-by-step/index.html" target="_top">step-by-step
+ examples</a>. These small problems are probably not the
+ usual case in real life, but you may want to take a look at
+ this file in order to get an idea on how it works, or you
+ go directly to the large projects file.
+ </p>
+
+ <p>
+ You can find this Makefile
+ <a href="Makefile.small" target="_top">here</a>.
+ </p>
+
+ <li> <p>
+ <a href="makefile.large.html" target="body">Large
+ projects</a>: This file is targeted at larger projects, and
+ for this file to work, we already assume a certain
+ subdirectory structure of your project. In particular, it
+ assumes that in your project directory the following
+ subdirectories exist (where <code>project</code> is the
+ directory in which the whole project is located):
+ <ul>
+ <li> <code>project/source</code>
+ <li> <code>project/include</code>
+ <li> <code>project/lib</code>
+ <ul>
+ <li> <code>project/lib/1d</code>
+ <li> <code>project/lib/2d</code>
+ <li> <code>project/lib/3d</code>
+ </ul>
+ </ul>
+ Include files need to be placed into
+ <code>project/include</code>, while implementation files
+ are to be in <code>project/source</code>. The executable
+ will be in <code>project/lib</code> and the compiled object
+ files will be in <code>project/lib/?d</code>, depending on
+ the dimension for which the project is compiled. Using this
+ directory structure, it is possible to quickly switch
+ between dimensions in which a program shall run in,
+ enabling us to develop applications which run in 1d, 2d, or
+ 3d without long compilation times. Furthermore, placing
+ object files in different directories prevents cluttering
+ directories with unnecessarily many files.
+ </p>
+
+ <p>
+ The dimension for which the project shall be compiled is
+ not stated in the source code, as in the small projects
+ Makefile, but is determined by a flag which is given in the
+ Makefile. To determine the dimension for which a project is
+ compiled in your source file, use the preprocessor constant
+ `deal_II_dimension' which is set by the Makefile and passed
+ through the compiler.
+ </p>
+
+ <p>
+ You can find this Makefile
+ <a href="Makefile.large" target="_top">here</a>.
+ </p>
+ </ul>
+
+ <hr>
+
+ <address>
+ <a href="mailto:deal@hermes.iwr.uni-heidelberg.de">The deal.II group</a></address>
+
+ </body>
+</html>
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<title>deal.II Homepage</title>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <meta name="author" content="Jan Schrage and others <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II">
+</head>
+<body lang="en">
+
+<p>
+<strong>Table of contents</strong>
+</p>
+ <ol>
+ <li>
+ <p>
+ <a href="toc.html" target="body">Long table of contents</a>
+ </p>
+ </li>
+
+ <li>
+ <p>
+ <a href="makefiles.html" target="body">Makefiles</a>
+ </p>
+ </li>
+
+ <li>
+ <p>
+ <a href="recent-changes.html" target="body">
+ Information about recent changes to the library
+ </a>
+ </p>
+ </li>
+ </ol>
+
+ <p>
+ <a href="../index.html" target="_top">
+ Back to the <acronym>deal.II</acronym> homepage
+ </a>
+ </p>
+ <hr>
+ <p>
+ <a href="mailto:deal@hermes.iwr.uni-heidelberg.de">Comments on deal.II</a>
+ </p>
+
+<!-- Last modified: $Date$ -->
+
+</body>
+</html>
+
+
+
+
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+ <head>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <title>The deal.II Homepage</title>
+ <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II"></head>
+ <body>
+
+
+ <h2>Information on recent changes</h2>
+
+ <p>
+ In case you want to stay informed about what has happened recently
+ to the library, we have some information for you. Note, however,
+ that this information is not available with the local version of
+ your library, but rather at the home server of the deal.II
+ repository.
+ </p>
+
+ <p>
+ At present, the following information is available:
+ <p>
+
+ <ul>
+ <li>
+ <p>
+ If you want to stay informed what file have been changed lately,
+ we keep lists which are updated each time a file is
+ commited. Each commit it categorized into the different parts of
+ the library. The files storing these files are (for the
+ different years):
+ </p>
+
+ <p>
+ <dl>
+ <dt><em> Changes to the /base library: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/base-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/base-1999.html" target="_top">
+ 1999
+ </a>
+ </dd>
+
+ <dt><em> Changes to the /lac library: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/lac-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/lac-1999.html" target="_top">
+ 1999
+ </a>
+ </dd>
+
+ <dt><em> Changes to the main /deal.II library: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/deal-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/deal-1999.html" target="_top">
+ 1999
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/deal-1998.html" target="_top">
+ 1998
+ </a>
+ </dd>
+
+ <dt><em> Changes to the documentation: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/doc-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/doc-1999.html" target="_top">
+ 1999
+ </a>
+ </dd>
+
+ <dt><em> Changes to the regression tests: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/tests-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/tests-1999.html" target="_top">
+ 1999
+ </a>
+ </dd>
+
+ <dt><em> Changes to the reports directory: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/reports-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/reports-1999.html" target="_top">
+ 1999
+ </a>
+ </dd>
+
+ <dt><em> All other changes: </em></dt>
+ <dd>
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/default-2000.html" target="_top">
+ 2000
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/default-1999.html" target="_top">
+ 1999
+ </a>
+ |
+ <a href="http://gaia.iwr.uni-heidelberg.de/~cvs/deal/LOG/default-1998.html" target="_top">
+ 1998
+ </a>
+ </dd>
+
+ </dl>
+ </p>
+
+ <li>
+ <p>
+ A <a href="auto/cvs-backlog/newdeal.html" target="_top"> backlog
+ of changes</a> made to the CVS archive in the last 100 days.
+ </p>
+
+ <p>
+ This information is generated directly from the global CVS
+ archive and can be used to track what changes have been made to
+ individual files, since it shows the diffs between the different
+ versions. We generate this information using the
+ <a href="http://www.sslug.dk/cvs2html/" target="_top">cvs2html</a>
+ script.
+ </p>
+ </ul>
+
+ <p>
+ All this information is updated automatically each night.
+ </p>
+
+ </body>
+</html>
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<!-- deal.II tutorial template
+ Wolfgang Bangerth and others <deal@iwr.uni-heidelberg.de> 1999
+-->
+
+<title>deal.II Homepage</title>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <meta name="author" content="Jan Schrage and others <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II">
+</head>
+
+<!-- Page Body -->
+<body style="background-image:url(../pictures/background-grid.jpg);" lang="en">
+
+<!-- Title Frame -->
+
+<h1 class="chapter_title">
+Development with <acronym>deal.II</acronym>
+</h1>
+
+</body>
+</html>
+
+
+
+
+
+
+
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+ <head>
+ <link href="screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <link href="audio.css" rel="StyleSheet" title="deal.II Homepage" media="aural">
+ <title>The deal.II Homepage</title>
+ <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
+ <meta name="keywords" content="deal.II"></head>
+ <body>
+
+
+ <h2>Information on development with <acronym>deal.II</acronym></h2>
+
+ <p>
+ Apart from the online API references and the tutorial, which ic
+ covered elsewhere, this page gathers some information that might
+ be of interest if you want to develop programs based on
+ <acronym>deal.II</acronym> yourself.
+ </p>
+
+ <p>
+ At present, we have the following resources available:
+ </p>
+
+ <ul>
+ <li> <p><a href="makefiles.html" target="body">Makefiles</a>:
+ The library has a file which exports several make variables
+ to Makefiles which include it. This information may be used
+ to make writing Makefiles more portable and simple. The
+ exported variables are explained in this page and we show two
+ generic Makefiles, one for small and one for larger projects.
+ </p>
+
+ <li> <p><a href="recent-changes.html" target="body">Recent changes to
+ the library</a>: If you want to stay informed about what is
+ going on with the library itself, your may want to take a
+ look at the page where we have some information about
+ recent changes to the library.
+ </p>
+ </ul>
+
+ <hr>
+
+ <address>
+ <a href="mailto:deal@hermes.iwr.uni-heidelberg.de">The deal.II group</a></address>
+
+ </body>
+</html>
+
</frameset>
<noframes>
-<h1>The deal.II Tutorial</h1>
+<h1>The deal.II Homepage</h1>
Your browser does not seem to understand frames. A version of this
page that does not use frames can be found at
<a href="toc.html">toc.html</a>.
<li>
<p>
<a href="readme.html" target="body">
- The README file for <acronym>deal.II</acronym>.
+ The README file for <acronym>deal.II</acronym>
</a>
</p>
</li>
<li>
<p>
- <a href="developers-page.html" target="body">
+ <a href="development/index.html" target="_top">
Development information</a>
</p>
</li>
The most important result of <code>./configure</code> is the
creation of the file <code>common/Make.global_options</code>. This
file contains compiler options, paths, etc which you may want to
- use in the Makefiles of your own projects. It is definitely a good
+ use in the <a href="development/index.html">Makefiles of your own
+ projects</a>. It is definitely a good
idea to include it into your Makefile, to allow using the same
flags for compilation between library files and the files of your
project, and to access the paths of the library files. To find
your application runs stably and are used in production mode.
</ul>
+
<a name="options">
<h3>Configuration options</h3>
experimental.
</ul>
+ <p>
+
+ Please note that running ./configure stores the paths to some
+ programs, such as the compilers or the Perl interpreter. The
+ compiler which will be used when compiling the library (or your
+ own application) is therefore selected at the time of
+ configuration and independent of the present setting of your $PATH
+ environment value. The reason for this is that presently there are
+ still too many incompatibilities between different versions of
+ compilers and that compiling different parts of programs with
+ different compilers often leads to hard-to-find problems. By
+ storing the absolute paths of compilers, we can at least catch
+ those problems where different compiler revisions are located in
+ different directories.
+
+ <p>
+
+ If you want to use a new compiler version, you will therefore have
+ to re-run ./configure with the new compiler being in the $PATH
+ environment variable.
+
+ <p>
+
+ It is in general a good idea to run `cd common ; make clean'
+ before re-configuring.
+
+
<a name="compiler">
<h2>Compiler flags</h2>
<li> <p>The <a href="readme.html" target="body">README</a>
file of the library: this file explains installation,
required programs and some other topics.</p>
+
<li> <p>The <a href="tutorial/index.html" target="_top">tutorial</a>:
we have a tutorial for new users of the library which
explains the basic elements of finite element programs based
on the library, and provides some small example programs.</p>
+
+ <li> <p> In case you want to develop your own applications using
+ <acronym>deal.II</acronym>, it might be worth to take a look
+ at <a href="development/index.html">this page</a> which has
+ some information regarding that subject.
+ </p>
+
<li> <p>Programming interface documentation: the classes and methods
in the library are extensively documented (presently
approximately 1250 pages if printed). We write this
</ul>
</p>
- <li> <p> For developers, we have a
- <a href="developers-page.html" target="body">little page with
- up-to-date information</a> about the development process.
- </p>
-
</ul>
<acronym>deal.II</acronym> was originally designed and written by
<a href="http://gaia.iwr.uni-heidelberg.de/~wolf/" target="_top">Wolfgang
Bangerth</a>, starting in early 1998; he is still maintaining and
- managing the library and contributing code. However, over time
+ managing the library, contributing code, and writing
+ documentation. However, over time
other people have contributed as well, most notably
<a href="http://gaia.iwr.uni-heidelberg.de/~kanschat/" target="_top">Guido
Kanschat</a>, who wrote much of the code linking several finite elements
+# Copyright (C) 1999, 2000 by Wolfgang Bangerth, Univerisity of Heidelberg.de
+
print "<a name=\"CommProg\"></a>\n";
print "<h1> The commented program</h1>\n";
# ignore the first few lines
$_ = <>;
-while ( m!/\*\s*\$Id$!) {
+while ( m!^//\*\s*\$Id$!) {
$_ = <>;
}
while (<>) {
# ignore cvs tag
- next if m!/\*\s*\$Id:!;
+ next if m!^//\*\s*\$Id:!;
# substitute special characters
s/&/&/g;
+# Copyright (C) 1999, 2000 by Wolfgang Bangerth, Univerisity of Heidelberg.de
+
# ignore the first few lines
$_ = <>;
-while ( m!/\*\s*\$Id$!) {
+while ( m!^//\*\s*\$Id$!) {
$_ = <>;
}
while (<>) {
# ignore cvs tag
- next if m!/\*\s*\$Id:!;
+ next if m!^//\*\s*\$Id:!;
# ignore comment lines
next if m!^\s*//!;
the beginning of the last section of each example. You can compile
them by typing ``make'' in the respective directory, and run them
using ``make run''. The latter command also compiles the program if
-that has not already been done.
+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>
<a href="toc.html" target="body">Long table of contents</a>
</p>
</li>
+
<li>
<p>
<a href="chapter-1.elements/index.html" target="_top">