From 48c2798843f91aed31a115610e8f278ed175944c Mon Sep 17 00:00:00 2001
From: wolf
Date: Wed, 22 Dec 1999 21:28:11 +0000
Subject: [PATCH] Add step-4.
git-svn-id: https://svn.dealii.org/trunk@2112 0785d39b-7218-0410-832d-ea1e28bc413d
---
.../examples/step-by-step/step-4/Makefile | 120 ++++
.../examples/step-by-step/step-4/step-4.cc | 546 ++++++++++++++++++
.../chapter-2.step-by-step/navbar.html | 6 +
.../step-4.data/grid-3d.jpg | Bin 0 -> 37140 bytes
.../step-4.data/solution-3d.jpg | Bin 0 -> 34352 bytes
.../chapter-2.step-by-step/step-4.intro | 3 +
.../chapter-2.step-by-step/step-4.results | 23 +
.../tutorial/chapter-2.step-by-step/toc.html | 8 +
deal.II/examples/step-4/Makefile | 120 ++++
deal.II/examples/step-4/step-4.cc | 546 ++++++++++++++++++
10 files changed, 1372 insertions(+)
create mode 100644 deal.II/deal.II/Attic/examples/step-by-step/step-4/Makefile
create mode 100644 deal.II/deal.II/Attic/examples/step-by-step/step-4/step-4.cc
create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/grid-3d.jpg
create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/solution-3d.jpg
create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-4.intro
create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-4.results
create mode 100644 deal.II/examples/step-4/Makefile
create mode 100644 deal.II/examples/step-4/step-4.cc
diff --git a/deal.II/deal.II/Attic/examples/step-by-step/step-4/Makefile b/deal.II/deal.II/Attic/examples/step-by-step/step-4/Makefile
new file mode 100644
index 0000000000..9212069420
--- /dev/null
+++ b/deal.II/deal.II/Attic/examples/step-by-step/step-4/Makefile
@@ -0,0 +1,120 @@
+# $Id$
+# Copyright W. Bangerth, University of Heidelberg, 1998
+
+# Template for makefiles for the examples subdirectory. In principle,
+# everything should be done automatically if you set the target file
+# here correctly:
+target = step-4
+
+# All dependencies between files should be updated by the included
+# file Makefile.dep if necessary. Object files are compiled into
+# the archives ./Obj.a and ./Obj.g.a. By default, the debug version
+# is used to link. It you don't like that, change the following
+# variable to "off"
+debug-mode = on
+
+# If you want your program to be linked with extra object or library
+# files, specify them here:
+user-libs =
+
+# To run the program, use "make run"; to give parameters to the program,
+# give the parameters to the following variable:
+run-parameters =
+
+# To execute additional action apart from running the program, fill
+# in this list:
+additional-run-action =
+
+# To specify which files are to be deleted by "make clean" (apart from
+# the usual ones: object files, executables, backups, etc), fill in the
+# following list
+delete-files = *gpl *inp *history
+
+
+
+
+###############################################################################
+# Internals
+
+#deal include base path
+D = ../../../..
+
+include $D/common/Make.global_options
+
+# get lists of files we need
+cc-files = $(filter-out *%, $(shell echo *.cc))
+o-files = $(cc-files:.cc=.o)
+go-files = $(cc-files:.cc=.go)
+h-files = $(filter-out *%, $(shell echo *.h))
+lib-h-files = $(filter-out *%, $(shell echo ../../include/*/*.h))
+
+# list of libraries needed to link with
+libs = ./Obj.a -ldeal_II_2d -llac -lbase
+libs.g = ./Obj.g.a -ldeal_II_3d.g -llac.g -lbase.g
+
+
+# check whether we use debug mode or not
+ifeq ($(debug-mode),on)
+libraries = $(libs.g)
+flags = $(CXXFLAGS.g)
+endif
+
+ifeq ($(debug-mode),off)
+libraries = $(libs)
+flags = $(CXXFLAGS)
+endif
+
+
+
+# make rule for the target
+$(target) : $(libraries)
+ @echo ============================ Linking $@
+ @$(CXX) $(flags) -o $@ $^ $(user-libs)
+
+# rule how to run the program
+run: $(target)
+ $(target) $(run-parameters)
+ $(additional-run-action)
+
+
+# rule to make object files
+%.go : %.cc
+ @echo ============================ Compiling with debugging information: $<
+ @echo $(CXX) ... -c $< -o $@
+ @$(CXX) $(CXXFLAGS.g) -c $< -o $@
+%.o : %.cc
+ @echo ============================ Compiling with optimization: $<
+ @echo $(CXX) ... -c $< -o $@
+ @$(CXX) $(CXXFLAGS) -c $< -o $@
+
+
+# rules which files the libraries depend upon
+Obj.a: ./Obj.a($(o-files))
+Obj.g.a: ./Obj.g.a($(go-files))
+
+
+clean:
+ -rm -f *.o *.go *~ Makefile.dep Obj.a Obj.g.a $(target) $(delete-files)
+
+
+
+.PHONY: clean
+
+
+#Rule to generate the dependency file. 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.
+#
+#use perl to generate rules for the .go files as well
+#as to make rules not for tria.o and the like, but
+#rather for libnumerics.a(tria.o)
+Makefile.dep: $(cc-files) $(h-files) $(lib-h-files)
+ @echo ============================ Remaking Makefile
+ @perl $D/common/scripts/Make_dep.pl ./Obj $(INCLUDE) $(cc-files) \
+ > Makefile.dep
+
+
+include Makefile.dep
+
diff --git a/deal.II/deal.II/Attic/examples/step-by-step/step-4/step-4.cc b/deal.II/deal.II/Attic/examples/step-by-step/step-4/step-4.cc
new file mode 100644
index 0000000000..901bfa6e10
--- /dev/null
+++ b/deal.II/deal.II/Attic/examples/step-by-step/step-4/step-4.cc
@@ -0,0 +1,546 @@
+/* $Id$ */
+
+ // The first few (many?) include
+ // files have already been used in
+ // the previous example, so we will
+ // not explain their meaning here
+ // again.
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+ // This is new, however: in the
+ // previous example we got some
+ // unwanted output from the linear
+ // solvers. If we want to suppress
+ // it, we have to include this file
+ // and add a line somewhere to the
+ // program; in this program, it was
+ // added to the main function.
+#include
+
+
+
+
+
+
+
+
+
+template
+class LaplaceProblem
+{
+ public:
+ LaplaceProblem ();
+ void run ();
+
+ private:
+ void make_grid_and_dofs ();
+ void assemble_system ();
+ void solve ();
+ void output_results ();
+
+ Triangulation triangulation;
+ FEQ1 fe;
+ DoFHandler dof_handler;
+
+ SparseMatrixStruct sparsity_pattern;
+ SparseMatrix system_matrix;
+
+ Vector solution;
+ Vector system_rhs;
+};
+
+
+ // In the following, we declare two
+ // more classes, which will represent
+ // the functions of the
+ // dim-dimensional space denoting the
+ // right hand side and the
+ // non-homogeneous Dirichlet boundary
+ // values.
+ //
+ // Each of these classes is derived
+ // from a common, abstract base class
+ // Function, which declares the
+ // common interface which all
+ // functions have to follow. In
+ // particular, concrete classes have
+ // to overload the `value' function,
+ // which takes a point in
+ // dim-dimensional space as
+ // parameters and shall return the
+ // value at that point as a `double'
+ // variable.
+template
+class RightHandSide : public Function
+{
+ public:
+ virtual double value (const Point &p,
+ const unsigned int component) const;
+};
+
+
+
+template
+class BoundaryValues : public Function
+{
+ public:
+ virtual double value (const Point &p,
+ const unsigned int component) const;
+};
+
+
+
+
+ // We wanted the right hand side
+ // function to be 4*(x**4+y**4) in
+ // 2D, or 4*(x**4+y**4+z**4) in
+ // 3D. Unfortunately, this is not as
+ // elegantly feasible dimension
+ // independently as much of the rest
+ // of this program, so we have to do
+ // it using a small
+ // loop. Fortunately, the compiler
+ // knows the size of the loop at
+ // compile time, i.e. the number of
+ // times the body will be executed,
+ // so it can optimize away the
+ // overhead needed for the loop and
+ // the result will be as fast as if
+ // we had used the formulas above
+ // right away.
+ //
+ // Note that the different
+ // coordinates of the point are
+ // accessed using the () operator.
+template
+double RightHandSide::value (const Point &p,
+ const unsigned int) const
+{
+ double return_value = 0;
+ for (unsigned int i=0; i
+double BoundaryValues::value (const Point &p,
+ const unsigned int) const
+{
+ return p.square();
+};
+
+
+
+
+ // This is the constructor of the
+ // LaplaceProblem class. It
+ // associates the DoFHandler to the
+ // triangulation just as in the
+ // previous example.
+template
+LaplaceProblem::LaplaceProblem () :
+ dof_handler (triangulation)
+{};
+
+
+
+ // Grid creation is something
+ // inherently dimension
+ // dependent. However, as long as the
+ // domains are sufficiently similar
+ // in 2D or 3D, the library can
+ // abstract for you. In our case, we
+ // would like to again solve on the
+ // square [-1,1]x[-1,1] in 2D, or on
+ // the cube [-1,1]x[-1,1]x[-1,1] in
+ // 3D; both can be termed
+ // ``hyper_cube'', so we may use the
+ // same function in whatever
+ // dimension we are. Of course, the
+ // functions that create a hypercube
+ // in two and three dimensions are
+ // very much different, but that is
+ // something you need not care
+ // about. Let the library handle the
+ // difficult things.
+ //
+ // Likewise, associating a degree of
+ // freedom with each vertex is
+ // something which certainly looks
+ // different in 2D and 3D, but that
+ // does not need to bother you. This
+ // function therefore looks exactly
+ // like in the previous example,
+ // although it performs actions that
+ // in their details are quite
+ // different. The only significant
+ // difference is the number of cells
+ // resulting, which is much higher in
+ // three than in two space
+ // dimensions!
+template
+void LaplaceProblem::make_grid_and_dofs ()
+{
+ GridGenerator::hyper_cube (triangulation, -1, 1);
+ triangulation.refine_global (4);
+
+ cout << " Number of active cells: "
+ << triangulation.n_active_cells()
+ << endl
+ << " Total number of cells: "
+ << triangulation.n_cells()
+ << endl;
+
+ dof_handler.distribute_dofs (fe);
+
+ cout << " Number of degrees of freedom: "
+ << dof_handler.n_dofs()
+ << endl;
+
+ sparsity_pattern.reinit (dof_handler.n_dofs(),
+ dof_handler.n_dofs(),
+ dof_handler.max_couplings_between_dofs());
+ DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
+ sparsity_pattern.compress();
+
+ system_matrix.reinit (sparsity_pattern);
+
+ solution.reinit (dof_handler.n_dofs());
+ system_rhs.reinit (dof_handler.n_dofs());
+};
+
+
+
+ // Unlike in the previous example, we
+ // would now like to use a
+ // non-constant right hand side
+ // function and non-zero boundary
+ // values. Both are tasks that are
+ // readily achieved with a only a few
+ // new lines of code in the
+ // assemblage of the matrix and right
+ // hand side.
+ //
+ // More interesting, though, is they
+ // way we assemble matrix and right
+ // hand side vector dimension
+ // independently: there is simply no
+ // difference to the pure
+ // two-dimensional case. Since the
+ // important objects used in this
+ // function (quadrature formula,
+ // FEValues) depend on the dimension
+ // by way of a template parameter as
+ // well, they can take care of
+ // setting up properly everything for
+ // the dimension for which this
+ // function is compiled. By declaring
+ // all classes which might depend on
+ // the dimension using a template
+ // parameter, the library can make
+ // nearly all work for you and you
+ // don't have to care about most
+ // things.
+template
+void LaplaceProblem::assemble_system ()
+{
+ QGauss3 quadrature_formula;
+
+ // We wanted to have a non-constant
+ // right hand side, so we use an
+ // object of the class declared
+ // above to generate the necessary
+ // data. Since this right hand side
+ // object is only used in this
+ // function, we only declare it
+ // here, rather than as a member
+ // variable of the LaplaceProblem
+ // class, or somewhere else.
+ const RightHandSide right_hand_side;
+
+ // Compared to the previous
+ // example, in order to evaluate
+ // the non-constant right hand side
+ // function we now also need the
+ // quadrature points on the cell we
+ // are presently on (previously,
+ // they were only needed on the
+ // unit cell, in order to compute
+ // the values and gradients of the
+ // shape function, which are
+ // defined on the unit cell
+ // however). We can tell the
+ // FEValues object to do for us by
+ // giving it the update_q_points
+ // flag:
+ FEValues fe_values (fe, quadrature_formula,
+ UpdateFlags(update_values |
+ update_gradients |
+ update_q_points |
+ update_JxW_values));
+
+ // Note that the following numbers
+ // depend on the dimension which we
+ // are presently using. However,
+ // the FE and Quadrature classes do
+ // all the necessary work for you
+ // and you don't have to care about
+ // the dimension dependent parts:
+ const unsigned int dofs_per_cell = fe.dofs_per_cell;
+ const unsigned int n_q_points = quadrature_formula.n_quadrature_points;
+
+ FullMatrix cell_matrix (dofs_per_cell, dofs_per_cell);
+ Vector cell_rhs (dofs_per_cell);
+
+ vector local_dof_indices (dofs_per_cell);
+
+ // Note here, that a cell is a
+ // quadrilateral in two space
+ // dimensions, but a hexahedron in
+ // 3D. In fact, the
+ // active_cell_iterator data type
+ // is something different,
+ // depending on the dimension we
+ // are in, but to the outside world
+ // they look alike and you will
+ // probably never see a difference
+ // although they are totally
+ // unrelated.
+ DoFHandler::active_cell_iterator cell = dof_handler.begin_active(),
+ endc = dof_handler.end();
+ for (; cell!=endc; ++cell)
+ {
+ fe_values.reinit (cell);
+ cell_matrix.clear ();
+ cell_rhs.clear ();
+
+ // Now we have to assemble the
+ // local matrix and right hand
+ // side. This is done exactly
+ // like in the previous
+ // example, but now we revert
+ // the order of the loops
+ // (which we can safely do
+ // since they are independent
+ // of each other) and merge the
+ // loops for the local matrix
+ // and the local vector as far
+ // as possible; this makes
+ // things a bit faster.
+ for (unsigned int q_point=0; q_pointget_dof_indices (local_dof_indices);
+ for (unsigned int i=0; i boundary_values;
+ VectorTools::interpolate_boundary_values (dof_handler,
+ 0,
+ BoundaryValues(),
+ boundary_values);
+ MatrixTools::apply_boundary_values (boundary_values,
+ system_matrix,
+ solution,
+ system_rhs);
+};
+
+
+ // Solving the linear system of
+ // equation is something that looks
+ // almost identical in most
+ // programs. In particular, it is
+ // dimension independent, so this
+ // function is mostly copied from the
+ // previous example.
+template
+void LaplaceProblem::solve ()
+{
+ SolverControl solver_control (1000, 1e-12);
+ PrimitiveVectorMemory<> vector_memory;
+ SolverCG<> cg (solver_control, vector_memory);
+ cg.solve (system_matrix, solution, system_rhs,
+ PreconditionIdentity());
+
+ // We have made one addition,
+ // though: since we suppress output
+ // from the linear solvers, we have
+ // to print the number of
+ // iterations by hand.
+ cout << " " << solver_control.last_step()
+ << " CG iterations needed to obtain convergence."
+ << endl;
+};
+
+
+
+ // This function also does what the
+ // respective one did in the previous
+ // example. No changes here for
+ // dimension independentce either.
+template
+void LaplaceProblem::output_results ()
+{
+ DataOut data_out;
+
+ data_out.attach_dof_handler (dof_handler);
+ data_out.add_data_vector (solution, "solution");
+
+ data_out.build_patches ();
+
+ // Only difference to the previous
+ // example: write output in GMV
+ // format, rather than for gnuplot.
+ ofstream output ("solution.gmv");
+ data_out.write_gmv (output);
+};
+
+
+
+ // This is the function which has the
+ // top-level control over
+ // everything. Apart from one line of
+ // additional output, it is the same
+ // as for the previous example.
+template
+void LaplaceProblem::run ()
+{
+ cout << "Solving problem in " << dim << " space dimensions." << endl;
+
+ make_grid_and_dofs();
+ assemble_system ();
+ solve ();
+ output_results ();
+};
+
+
+
+ // And this is the main function. It
+ // also looks mostly like in the
+ // previous example:
+int main ()
+{
+ // In the previous example, we had
+ // the output from the linear
+ // solvers about the starting
+ // residual and the number of the
+ // iteration where convergence was
+ // detected. This can be suppressed
+ // like this:
+ deallog.depth_console (0);
+ // The rationale here is the
+ // following: the deallog
+ // (i.e. deal-log, not de-allog)
+ // variable represents a stream to
+ // which some parts of the library
+ // write output. It redirects this
+ // output to the console and if
+ // required to a file. The output
+ // is nested in a way that each
+ // function can use a prefix string
+ // (separated by colons) for each
+ // line of output; if it calls
+ // another function, that may also
+ // use its prefix which is then
+ // printed after the one of the
+ // calling function. Since output
+ // from functions which are nested
+ // deep below is usually not as
+ // important as top-level output,
+ // you can give the deallog
+ // variable a maximal depth of
+ // nested output for output to
+ // console and file. The depth zero
+ // which we gave here means that no
+ // output is written.
+
+ // After having done this
+ // administrative stuff, we can go
+ // on just as before: define one of
+ // these top-level objects and
+ // transfer control to it:
+// LaplaceProblem<2> laplace_problem_2d;
+// laplace_problem_2d.run ();
+
+ LaplaceProblem<3> laplace_problem_3d;
+ laplace_problem_3d.run ();
+ return 0;
+};
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/navbar.html b/deal.II/doc/tutorial/chapter-2.step-by-step/navbar.html
index 7307d29ed0..fbb14abf65 100644
--- a/deal.II/doc/tutorial/chapter-2.step-by-step/navbar.html
+++ b/deal.II/doc/tutorial/chapter-2.step-by-step/navbar.html
@@ -42,6 +42,12 @@
Step 3
+
+
+
+ Step 4
+
+
Back to the tutorial index
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/grid-3d.jpg b/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/grid-3d.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..da8b54fe383db661d42b9715fe561105a2aa484a
GIT binary patch
literal 37140
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