From: Matthias Maier Date: Wed, 4 Dec 2013 11:12:46 +0000 (+0000) Subject: Documentation: Provide tutorial page within doxygen, cleanup X-Git-Tag: v8.1.0~107 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4a54de80beb228029df8b619e453edd7181c70e;p=dealii.git Documentation: Provide tutorial page within doxygen, cleanup TODO: * Reformat the page * Automatically generate the list and the group git-svn-id: https://svn.dealii.org/trunk@31870 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/documentation.html b/deal.II/doc/documentation.html index 564bf7288b..0a40acc0ae 100644 --- a/deal.II/doc/documentation.html +++ b/deal.II/doc/documentation.html @@ -29,7 +29,7 @@ installation instructions
  • CMake documentation
  • CMake in user projects
  • -
  • Tutorial
  • +
  • Tutorial
  • Manual
  • Wolfgang's lectures
  • Technical reports
  • diff --git a/deal.II/doc/doxygen/CMakeLists.txt b/deal.II/doc/doxygen/CMakeLists.txt index e2070dedd6..17fd2d2b1f 100644 --- a/deal.II/doc/doxygen/CMakeLists.txt +++ b/deal.II/doc/doxygen/CMakeLists.txt @@ -88,8 +88,10 @@ file(GLOB _doxygen_input ${CMAKE_SOURCE_DIR}/contrib/parameter_gui/main.cpp ${CMAKE_SOURCE_DIR}/doc/news/*.h ${CMAKE_SOURCE_DIR}/include/deal.II/**/*.h - + ) +LIST(APPEND _doxygen_input ${CMAKE_BINARY_DIR}/include/deal.II/base/config.h + ${CMAKE_CURRENT_BINARY_DIR}/tutorial/tutorial.h ) FOREACH(_step ${DEAL_II_STEPS}) GET_FILENAME_COMPONENT(_step "${_step}" NAME) @@ -139,7 +141,6 @@ ADD_CUSTOM_TARGET(doxygen ALL DEPENDS ${CMAKE_BINARY_DIR}/doxygen.log ) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/deal.tag ${CMAKE_CURRENT_SOURCE_DIR}/stylesheet.css diff --git a/deal.II/doc/doxygen/headers/main.h b/deal.II/doc/doxygen/headers/main.h index dd728dd433..b859bd40c5 100644 --- a/deal.II/doc/doxygen/headers/main.h +++ b/deal.II/doc/doxygen/headers/main.h @@ -19,10 +19,9 @@ * @mainpage * * This is the main starting page for the deal.II class and function - * documentation. Documentation on other aspects, such as the build system, - * can be found elsewhere. In addition, there are tutorial programs on the use of this - * library. + * documentation. Documentation on other aspects, such as the build + * system, can be found elsewhere. In addition, there are + * Tutorial programs on the use of the library. * * Many of the classes in the deal.II library can be grouped into modules (see * the Modules page or the corresponding entry in diff --git a/deal.II/doc/doxygen/headers/tutorial.h b/deal.II/doc/doxygen/headers/tutorial.h deleted file mode 100644 index 0cb94932d6..0000000000 --- a/deal.II/doc/doxygen/headers/tutorial.h +++ /dev/null @@ -1,28 +0,0 @@ -// --------------------------------------------------------------------- -// $Id$ -// -// Copyright (C) 2005 - 2013 by the deal.II authors -// -// This file is part of the deal.II library. -// -// The deal.II library is free software; you can use it, redistribute -// it, and/or modify it under the terms of the GNU Lesser General -// Public License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// The full text of the license can be found in the file LICENSE at -// the top level of the deal.II distribution. -// -// --------------------------------------------------------------------- - - -/** - * @page Tutorial Tutorial programs - * - * The tutorial is a separate part of the documentation for deal.II. It - * consists of a collection of small programs, each more or less built atop - * previous ones. They demonstrate various aspects of the library. A more - * detailed overview can be found on this - * page that also includes short summaries of what each of the tutorial - * programs are supposed to demonstrate, as well as a list of the programs - * sorted by topic. - */ diff --git a/deal.II/doc/doxygen/scripts/make_toc.pl b/deal.II/doc/doxygen/scripts/make_toc.pl deleted file mode 100644 index 1b1fbfe84c..0000000000 --- a/deal.II/doc/doxygen/scripts/make_toc.pl +++ /dev/null @@ -1,32 +0,0 @@ -## --------------------------------------------------------------------- -## $Id$ -## -## Copyright (C) 2006 - 2013 by the deal.II authors -## -## This file is part of the deal.II library. -## -## The deal.II library is free software; you can use it, redistribute -## it, and/or modify it under the terms of the GNU Lesser General -## Public License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## The full text of the license can be found in the file LICENSE at -## the top level of the deal.II distribution. -## -## --------------------------------------------------------------------- - -$/ = undef; - -# Read source for web page -open TOC, "; -close TOC; - -# Read generated map file -open MAP, "; -close MAP; - -# Insert contents of map file for @@MAP@@ -$toc =~ s/\@\@MAP\@\@/$map/; - -print $toc; diff --git a/deal.II/doc/doxygen/scripts/mod_footer.pl.in b/deal.II/doc/doxygen/scripts/mod_footer.pl.in index 149545d707..ab562cbd71 100644 --- a/deal.II/doc/doxygen/scripts/mod_footer.pl.in +++ b/deal.II/doc/doxygen/scripts/mod_footer.pl.in @@ -3,7 +3,7 @@ use Sys::Hostname; my $host = hostname; my $hosting = << 'EOT' -   Hosting provided by +  Hosting provided by  IWR Universität Heidelberg EOT diff --git a/deal.II/doc/doxygen/scripts/steps.pl b/deal.II/doc/doxygen/scripts/steps.pl index 7384b1e7f2..72e0e50a28 100644 --- a/deal.II/doc/doxygen/scripts/steps.pl +++ b/deal.II/doc/doxygen/scripts/steps.pl @@ -16,6 +16,16 @@ use strict; +my $tutorial_file = shift; +open TUTORIAL, "<$tutorial_file"; + +# Print the first part of tutorial.h.in +while (my $line = ) +{ + last if($line =~ m/\@\@MAP\@\@/); + print $line; +} + # List of additional node attributes to highlight purpose and state of the example my %style = ( "basic" => ',height=.8,width=.8,shape="octagon",fillcolor="green"', @@ -26,9 +36,7 @@ my %style = ( "unfinished" => ',height=.25,width=.25,style="dashed"' ); - # Print a preamble setting common attributes - print << 'EOT' digraph StepsMap { @@ -65,7 +73,7 @@ foreach $step (@ARGV) close TF; chop $tooltip; - printf "Step$number [label=\"$number\", URL=\"../deal.II/step_$number.html\", tooltip=\"$tooltip\""; + printf "Step$number [label=\"$number\", URL=\"\\ref step_$number\", tooltip=\"$tooltip\""; # read first line of 'kind' file @@ -106,3 +114,9 @@ foreach $step (@ARGV) print "}\n"; +# Print the rest of tutorial.h.in +while (my $line = ) +{ + print $line; +} +close TUTORIAL; diff --git a/deal.II/doc/doxygen/tutorial/CMakeLists.txt b/deal.II/doc/doxygen/tutorial/CMakeLists.txt index acb617e981..6af4da8c98 100644 --- a/deal.II/doc/doxygen/tutorial/CMakeLists.txt +++ b/deal.II/doc/doxygen/tutorial/CMakeLists.txt @@ -16,69 +16,34 @@ # -# Prepare steps.png and steps.cmapx: +# Prepare tutorial.h: # + ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/steps.dot + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tutorial.h COMMAND ${PERL_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/doc/doxygen/scripts/steps.pl + ${CMAKE_CURRENT_SOURCE_DIR}/tutorial.h.in ${DEAL_II_STEPS} - > ${CMAKE_CURRENT_BINARY_DIR}/steps.dot - ) -ADD_CUSTOM_COMMAND( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/steps.png - ${CMAKE_CURRENT_BINARY_DIR}/steps.cmapx - COMMAND ${DOXYGEN_DOT_EXECUTABLE} - ARGS - -Tpng -o ${CMAKE_CURRENT_BINARY_DIR}/steps.png - -Tcmapx -o ${CMAKE_CURRENT_BINARY_DIR}/steps.cmapx - ${CMAKE_CURRENT_BINARY_DIR}/steps.dot + > ${CMAKE_CURRENT_BINARY_DIR}/tutorial.h DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/steps.dot + ${DEAL_II_STEPS} + ${CMAKE_CURRENT_SOURCE_DIR}/tutorial.h.in ) - -# -# Prepare toc.html: -# -CONFIGURE_FILE( - ${CMAKE_CURRENT_SOURCE_DIR}/toc.html.in - ${CMAKE_CURRENT_BINARY_DIR}/toc.html.in - COPYONLY - ) -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/toc.html - COMMAND ${PERL_EXECUTABLE} - ARGS - ${CMAKE_SOURCE_DIR}/doc/doxygen/scripts/make_toc.pl - > ${CMAKE_CURRENT_BINARY_DIR}/toc.html - WORKING_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/toc.html.in - ${CMAKE_CURRENT_BINARY_DIR}/steps.cmapx - ) - - -# -# TODO: -# Are toc-list.html and toc-topics.html really generated by hand? -# - - # # A target for the preparation of all the stuff happening in here... # + ADD_CUSTOM_TARGET(tutorial - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/toc.html + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tutorial.h ) # # Prepare the steps for documentation generation # + FOREACH(_step ${DEAL_II_STEPS}) GET_FILENAME_COMPONENT(_step "${_step}" NAME) @@ -118,20 +83,3 @@ FOREACH(_step ${DEAL_II_STEPS}) ) ADD_DEPENDENCIES(tutorial tutorial_${_step}) ENDFOREACH() - -# -# Install all bits: -# - -INSTALL(FILES - index.html - navbar.html - title.html - toc-list.html - toc-topics.html - ${CMAKE_CURRENT_BINARY_DIR}/steps.png - ${CMAKE_CURRENT_BINARY_DIR}/toc.html - DESTINATION ${DEAL_II_DOCHTML_RELDIR}/doxygen/tutorial - COMPONENT documentation - ) - diff --git a/deal.II/doc/doxygen/tutorial/index.html b/deal.II/doc/doxygen/tutorial/index.html deleted file mode 100644 index a6c308ae7b..0000000000 --- a/deal.II/doc/doxygen/tutorial/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - -Step-by-Step Examples - - - - - - - - - - - -<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>. - - - - - - - - diff --git a/deal.II/doc/doxygen/tutorial/navbar.html b/deal.II/doc/doxygen/tutorial/navbar.html deleted file mode 100644 index b88c2c9818..0000000000 --- a/deal.II/doc/doxygen/tutorial/navbar.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -Step-by-Step Examples - - - - - - - - - -

    - Overview -

    -

    - Connections between programs -

    -

    - Programs by number -

    -

    - Programs by topic -

    - -
    - -

    - Programs by number: -

    - -

    - 1  - 2  - 3
    - - 4  - 5  - 6
    - - 7  - 8  - 9
    - - 10  - 11  - 12
    - - 13  - 14  - 15
    - - 16  - 17  - 18
    - - 19  - 20  - 21
    - - 22  - 23  - 24
    - - 25  - 27  - 28
    - - 29  - 30  - 31
    - - 32  - 33  - 34
    - - 35  - 36  - 37
    - - 38  - 39  - 40
    - - 41  - 42  - 43
    - - 44  - 45  - 46
    - - 48  - 49  - 51 -

    - -
    - -

    - Back to the deal.II homepage -

    - - -
    - -

    - Comments on the tutorial -

    - - - - - - - - - - diff --git a/deal.II/doc/doxygen/tutorial/title.html b/deal.II/doc/doxygen/tutorial/title.html deleted file mode 100644 index d5cfc51d59..0000000000 --- a/deal.II/doc/doxygen/tutorial/title.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -Step-by-Step Examples - - - - - - - - - - -
    -

    The deal.II tutorial - Step-by-step examples

    -
    - - - - - - - - diff --git a/deal.II/doc/doxygen/tutorial/toc-list.html b/deal.II/doc/doxygen/tutorial/toc-list.html deleted file mode 100644 index c93510dfdf..0000000000 --- a/deal.II/doc/doxygen/tutorial/toc-list.html +++ /dev/null @@ -1,330 +0,0 @@ - - - -Step-by-Step - - - - - - - - - -

    Tutorial programs listed by number

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Step-1 Creating a grid. A simple way to write it to a file. -
    Step-2 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. -
    Step-3 Actually solve Laplace's - problem. Object-orientation. Assembling matrices and - vectors. Boundary values. -
    Step-4 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. -
    Step-5 Computations on successively - refined grids. Reading a grid from disk. Some optimizations. - Using assertions. Non-constant coefficient in - the elliptic operator (yielding the extended Poisson - equation). Preconditioning the CG solver for the - linear system of equations. -
    Step-6 Adaptive local - refinement. Handling of hanging nodes. Higher order elements. - Catching exceptions in the “main” function. -
    Step-7 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. -
    Step-8 The elasticity 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. -
    Step-9 Linear advection equation, assembling - the system of equations in parallel using multi-threading, - implementing a refinement criterion based on a finite difference - approximation of the gradient. - -
    Step-10 Higher order mappings. Do not - solve equations, but rather compute the value of pi to high - accuracy. -
    Step-11 Solving a Laplace problem with - higher order mappings. Using strange constraints and - intermediate representations of sparsity patterns. -
    Step-12 Discontinuous Galerkin methods for linear advection problems. -
    Step-13 Software design questions and - how to write a modular, extensible finite element program. -
    Step-14 Duality based error estimators, - more strategies to write a modular, extensible finite element - program. -
    Step-15 A nonlinear elliptic problem: The minimal surface equation. - Newton's method. Transferring a solution across mesh refinement. -
    Step-16 Multigrid preconditioning of the Laplace equation on adaptive - meshes. -
    Step-17 Using PETSc for linear algebra; running - in parallel on clusters of computers linked together by MPI. -
    Step-18 A time dependent problem; using a much - simplified version of implementing elasticity; moving meshes; handling - large scale output of parallel programs. -
    Step-19 Input parameter file handling. Merging - output of a parallel program. -
    Step-20 Mixed finite elements. Using block - matrices and block vectors to define more complicated solvers and - preconditioners working on the Schur complement. -
    Step-21 The time dependent two-phase flow in - porous media. Extensions of mixed Laplace discretizations. More - complicated block solvers. Simple time stepping. -
    Step-22 Solving the Stokes equations of slow fluid flow on adaptive - meshes. More on Schur complement solvers. Advanced use of the - ConstraintMatrix class. -
    Step-23 Finally a "real" time dependent problem, the wave equation. -
    Step-24 A variant of step-23 with absorbing - boundary conditions, and extracting practically useful data. -
    Step-25 The sine-Gordon - soliton equation, which is a nonlinear variant of the time - dependent wave equation covered in step-23 and step-24. -
    Step-27 hp finite element methods
    Step-28 Multiple grids for solving a multigroup diffusion equation - in nuclear physics simulating a nuclear reactor core
    Step-29 Solving a complex-valued Helmholtz equation. Sparse direct - solvers. Dealing with parameter files.
    Step-30 Anisotropic refinement for DG finite element methods. -
    Step-31 Time-dependent Stokes flow driven by temperature - differences in a fluid. Adaptive meshes that change between time - steps. -
    Step-32 A massively parallel solver for time-dependent Stokes flow driven - by temperature differences in a fluid. Adapting methods for real-world - equations. -
    Step-33 A nonlinear hyperbolic conservation law: The Euler equations of - compressible gas dynamics. -
    Step-34 Boundary element methods (BEM) of low order: Exterior irrotational - flow. The ParsedFunction class. -
    Step-35 A projection solver for the Navier–Stokes equations. -
    Step-36 Using SLEPc for linear algebra; solving an eigenspectrum - problem. The Schrödinger wave equation. -
    Step-37 Solving a Poisson problem with a multilevel preconditioner without - explicitly storing the matrix (a matrix-free method). -
    Step-38Solving the Laplace-Beltrami equation on curved manifolds embedded - in higher dimensional spaces. -
    Step-39 Solving Poisson's equation once more, this time with the - interior penalty method, one of the discontinous Galerkin - methods developed for this problem. Error estimator, adaptive - meshes, and multigrid preconditioner, all using the MeshWorker - framework. -
    Step-40 Techniques for the massively parallel solution of the Laplace - equation (up to 10,000s of processors). -
    Step-41 Solving the obstacle problem, a variational inequality. -
    Step-42 A solver for an elasto-plastic contact problem, running on - parallel machines. -
    Step-43 Advanced techniques for the simulation of porous media flow. -
    Step-44 Finite strain hyperelasticity based on a three-field formulation. -
    Step-45 Periodic boundary conditions. -
    Step-46 Coupling different kinds of equations in different parts of the domain. -
    Step-48 Explicit time stepping for the Sine–Gordon equation based on - a diagonal mass matrix. Efficient implementation of (nonlinear) finite - element operators. -
    Step-49 Advanced mesh creation and manipulation techniques. -
    Step-51 Solving the convection-diffusion equation with a hyrbidizable - discontinuous Galerkin method using face elements. -
    - - - -
    -
    -The deal.II group
    - - diff --git a/deal.II/doc/doxygen/tutorial/toc-topics.html b/deal.II/doc/doxygen/tutorial/toc-topics.html deleted file mode 100644 index 54e69bbb93..0000000000 --- a/deal.II/doc/doxygen/tutorial/toc-topics.html +++ /dev/null @@ -1,640 +0,0 @@ - - - -Step-by-Step - - - - - - - - - - -

    Tutorial programs grouped by topics

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Basic techniquesStep-1 Creating a grid. A simple way to write it to a file -
    Step-2 Degrees of freedom -
    Step-3 Solve the Laplace equation -
    Step-4 Dimension independent programming, non-zero data -
    Step-5 Computing on uniformly refined meshes -
    Step-6 Adaptivity -
    Step-7 Evaluating errors -
    Step-15 Nonlinear problems, Newton's method -

    Advanced techniques - Step-9, - Step-28, - Step-32, - Step-44, - Step-48, - Step-51 - Multithreading -
    - Step-20, - Step-21, - Step-22, - Step-31, - Step-32, - Step-43, - Step-44 - Block solvers and preconditioners -
    - Step-31, - Step-32, - Step-33, - Step-41, - Step-42, - Step-43 - Using Trilinos -
    - Step-17, - Step-18, - Step-19, - Step-40 - Parallelization via PETSc and MPI -
    - Step-32, - Step-42 - Parallelization via Trilinos and MPI -
    - Step-32, - Step-40, - Step-42 - Parallelization on very large numbers of processors -
    - Step-19, - Step-28, - Step-29, - Step-32, - Step-33, - Step-34, - Step-35, - Step-36, - Step-42, - Step-44 - Input parameter handling -
    - Step-10, - Step-11, - Step-32 - Higher order mappings -
    - Step-6, - Step-9, - Step-14, - Step-39 - Error indicators and estimators -
    - Step-15, - Step-28, - Step-31, - Step-32, - Step-33, - Step-40, - Step-42, - Step-43 - Transferring solutions across mesh refinement -
    - Step-12, - Step-21, - Step-39, - Step-46, - Step-51 - Discontinuous Galerkin methods -
    - Step-27, - Step-46 - hp finite elements -
    Step-30 Anisotropic refinement for DG finite element methods -
    - Step-16, - Step-31, - Step-32, - Step-39, - Step-41, - Step-42, - Step-43 - Multilevel preconditioners -
    Step-33 Computing Jacobians from residuals, automatic differentiation -
    - Step-32, - Step-34, - Step-38 - Boundary element methods, curved manifolds -
    - Step-45 - Periodic boundary conditions -
    - Step-37, - Step-48 - Matrix-free methods -
    - Step-49 - Advanced meshes -

    Linear solver issuesStep-3 Conjugate Gradient solver -
    Step-5 Preconditioned CG solver -
    Step-9 BiCGStab -
    - Step-16, - Step-31, - Step-32, - Step-37, - Step-39, - Step-41, - Step-42, - Step-43 - Multilevel preconditioners -
    - Step-17, - Step-18, - Step-32, - Step-40, - Step-42 - Parallel solvers -
    - Step-20, - Step-21, - Step-22, - Step-31, - Step-32, - Step-43 - Block and Schur complement solvers -
    Step-35 Decoupled projection solvers -
    - Step-33, - Step-41, - Step-42, - Step-44 - Linear Newton systems from nonlinear equations -
    Step-36 Eigenvalue solvers -

    Other equations - Step-7, - Step-29 - Helmholtz equation -
    - Step-8, - Step-42, - Step-46 - Elasticity and elasto-plasticity equations -
    - Step-15 - Minimal surface equation -
    - Step-18, - Step-44 - Quasi-static elasticity equations -
    Step-9, - Step-21, - Step-31, - Step-32, - Step-43, - Step-51 - Transport (advection) equations -
    Step-33 The nonlinear hyperbolic Euler system of compressible gas dynamics -
    - Step-20, - Step-21, - Step-43 - Mixed Laplace, Darcy, Porous media -
    - Step-22, - Step-31, - Step-32, - Step-35, - Step-46 - Stokes and incompressible Navier-Stokes flow -
    - Step-23, - Step-24, - Step-25, - Step-48 - The wave equation, in linear and nonlinear variants -
    Step-28 A multigroup diffusion problem in neutron transport -
    Step-34 Irrotational flow -
    Step-36 An eigenspectrum problem -
    - Step-41, - Step-42 - The obstacle problem, a variational inequality -
    Step-46 Coupling different equations in different parts of the domain -

    Vector problems - Step-8, - Step-42 - Elasticity and elasto-plasticity equations -
    Step-20 Mixed Laplace -
    Step-21, - Step-43 - Mixed Laplace plus an advection equation -
    Step-22, - Step-31, - Step-32, - Step-35 Incompressible Stokes and Navier-Stokes flow -
    Step-29 A complex-valued Helmholtz problem -
    Step-33 The Euler equations of compressible gas dynamics -
    Step-46 Coupling different equations in different parts of the domain -
    Time-dependent problems - Step-18, - Step-44 - Quasi-static elasticity -
    Step-21, - Step-43 - Porous media flow -
    Step-23, - Step-24, - Step-25, - Step-48 - The wave equation, in linear and nonlinear variants -
    Step-31, - Step-32 - Time dependent Stokes flow driven by buoyancy -
    Step-33 The Euler equations of compressible gas dynamics -
    - - -
    -
    -The deal.II group
    - - diff --git a/deal.II/doc/doxygen/tutorial/toc.html.in b/deal.II/doc/doxygen/tutorial/toc.html.in deleted file mode 100644 index 279556c734..0000000000 --- a/deal.II/doc/doxygen/tutorial/toc.html.in +++ /dev/null @@ -1,94 +0,0 @@ - - - -Step-by-Step - - - - - - - - - - -

    Overview

    - -

    New to deal.II? You might want to start with tutorial Step-1 and work your way up to Step-5. -At that point you can explore what features you are interested in and look at the large collection -of programs listed below. -

    - -

    -The deal.II tutorial contains a collection of -programs, each more -or less built atop of previous ones, which demonstrate various -aspects of the library. Each such example has the following structure: -

      -
    1. Introduction: What the program does, including - the mathematical model, and - what programming techniques are new. -
    2. The commented program: An extensively documented listing of the - source code. -
    3. Results: The output of the program, with comments and - interpretation. -
    4. The plain program: The source code stripped of - all comments. -
    -

    - -

    -You can browse the available tutorial programs -

      -
    1. as a graph (see below) that shows how tutorial programs build upon each other. -
    2. as a list that provides a short - synopsis of each program. -
    3. or grouped by topic. -
    -Some of the programs also jointly form -the geodynamics - demonstration suite. -

    - -

    -The programs are in the examples/ directory of your local deal.II -installation. After compiling the library itself, if you go into one of the -tutorial directories, you can compile -the program by typing make, and run it -using make run. 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 this section. -

    - - - -

    Connections between tutorial programs

    - -The following graph shows the connections between tutorial programs and -how they build on each other. -Click on any of the boxes to go to one of the programs. If you hover -your mouse pointer over a box, a brief description of the program -should appear. - -

    - -@@MAP@@ -

    - -

    -Legend: -Green octagons: programs that show basic techniques; -Orange boxes: advanced techniques; -Yellow: applications in fluid dynamics; -Light blue: applications in solid mechanics; -Dark blue boxes: time dependent problems. -

    - - -
    -
    -The deal.II group
    - - diff --git a/deal.II/doc/doxygen/tutorial/tutorial.h.in b/deal.II/doc/doxygen/tutorial/tutorial.h.in new file mode 100644 index 0000000000..db6ab4abaa --- /dev/null +++ b/deal.II/doc/doxygen/tutorial/tutorial.h.in @@ -0,0 +1,1003 @@ +// --------------------------------------------------------------------- +// $Id$ +// +// Copyright (C) 2005 - 2013 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +/** + * @page Tutorial Tutorial programs + * + * New to deal.II? You might want to start with tutorial Step-1 and work + * your way up to Step-5. At that point you can explore what features you + * are interested in and look at the large collection of programs listed + * below. + * + * The deal.II tutorial contains a collection of programs, each more or + * less built atop of previous ones, which demonstrate various aspects of + * the library. Each such example has the following structure: + *
      + *
    1. Introduction: What the program does, including + * the mathematical model, and + * what programming techniques are new. + *
    2. The commented program: An extensively documented listing of the + * source code. + *
    3. Results: The output of the program, with comments and + * interpretation. + *
    4. The plain program: The source code stripped of + * all comments. + *
    + * You can browse the available tutorial programs + *
      + *
    1. as a graph that shows how tutorial programs build upon each other. + *
    2. as a list that provides a short + * synopsis of each program. + *
    3. or grouped by topic. + *
    + * Some of the programs also jointly form + * the geodynamics + * demonstration suite. + * + * The programs are in the examples/ directory of your local + * deal.II installation. After compiling the library itself, if you go into + * one of the tutorial directories, you can configure the program by typing + * cmake ., build it via make and run it using + * make run. The latter command also compiles the program if + * that has not already been done. The CMakefiles.txt files in the + * different directories are based on the small program Makefile template + * described in this + * section. + * + * + *

    Connections between tutorial programs

    + * + * The following graph shows the connections between tutorial programs and + * how they build on each other. + * Click on any of the boxes to go to one of the programs. If you hover + * your mouse pointer over a box, a brief description of the program + * should appear. + * @dot +@@MAP@@ + * @enddot + * + * Legend:
    + * Green octagons: programs that show basic techniques;
    + * Orange boxes: advanced techniques;
    + * Yellow: applications in fluid dynamics;
    + * Light blue: applications in solid mechanics;
    + * Dark blue boxes: time dependent problems. + * + * + *

    Tutorial programs listed by number

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    Step-1 Creating a grid. A simple way to write it to a file. + *
    Step-2 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. + *
    Step-3 Actually solve Laplace's + * problem. Object-orientation. Assembling matrices and + * vectors. Boundary values. + *
    Step-4 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. + *
    Step-5 Computations on successively + * refined grids. Reading a grid from disk. Some optimizations. + * Using assertions. Non-constant coefficient in + * the elliptic operator (yielding the extended Poisson + * equation). Preconditioning the CG solver for the + * linear system of equations. + *
    Step-6 Adaptive local + * refinement. Handling of hanging nodes. Higher order elements. + * Catching exceptions in the “main” function. + *
    Step-7 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. + *
    Step-8 The elasticity 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. + *
    Step-9 Linear advection equation, assembling + * the system of equations in parallel using multi-threading, + * implementing a refinement criterion based on a finite difference + * approximation of the gradient. + * + *
    Step-10 Higher order mappings. Do not + * solve equations, but rather compute the value of pi to high + * accuracy. + *
    Step-11 Solving a Laplace problem with + * higher order mappings. Using strange constraints and + * intermediate representations of sparsity patterns. + *
    Step-12 Discontinuous Galerkin methods for linear advection problems. + *
    Step-13 Software design questions and + * how to write a modular, extensible finite element program. + *
    Step-14 Duality based error estimators, + * more strategies to write a modular, extensible finite element + * program. + *
    Step-15 A nonlinear elliptic problem: The minimal surface equation. + * Newton's method. Transferring a solution across mesh refinement. + *
    Step-16 Multigrid preconditioning of the Laplace equation on adaptive + * meshes. + *
    Step-17 Using PETSc for linear algebra; running + * in parallel on clusters of computers linked together by MPI. + *
    Step-18 A time dependent problem; using a much + * simplified version of implementing elasticity; moving meshes; handling + * large scale output of parallel programs. + *
    Step-19 Input parameter file handling. Merging + * output of a parallel program. + *
    Step-20 Mixed finite elements. Using block + * matrices and block vectors to define more complicated solvers and + * preconditioners working on the Schur complement. + *
    Step-21 The time dependent two-phase flow in + * porous media. Extensions of mixed Laplace discretizations. More + * complicated block solvers. Simple time stepping. + *
    Step-22 Solving the Stokes equations of slow fluid flow on adaptive + * meshes. More on Schur complement solvers. Advanced use of the + * ConstraintMatrix class. + *
    Step-23 Finally a "real" time dependent problem, the wave equation. + *
    Step-24 A variant of step-23 with absorbing + * boundary conditions, and extracting practically useful data. + *
    Step-25 The sine-Gordon + * soliton equation, which is a nonlinear variant of the time + * dependent wave equation covered in step-23 and step-24. + *
    Step-27 hp finite element methods
    Step-28 Multiple grids for solving a multigroup diffusion equation + * in nuclear physics simulating a nuclear reactor core
    Step-29 Solving a complex-valued Helmholtz equation. Sparse direct + * solvers. Dealing with parameter files.
    Step-30 Anisotropic refinement for DG finite element methods. + *
    Step-31 Time-dependent Stokes flow driven by temperature + * differences in a fluid. Adaptive meshes that change between time + * steps. + *
    Step-32 A massively parallel solver for time-dependent Stokes flow driven + * by temperature differences in a fluid. Adapting methods for real-world + * equations. + *
    Step-33 A nonlinear hyperbolic conservation law: The Euler equations of + * compressible gas dynamics. + *
    Step-34 Boundary element methods (BEM) of low order: Exterior irrotational + * flow. The ParsedFunction class. + *
    Step-35 A projection solver for the Navier–Stokes equations. + *
    Step-36 Using SLEPc for linear algebra; solving an eigenspectrum + * problem. The Schrödinger wave equation. + *
    Step-37 Solving a Poisson problem with a multilevel preconditioner without + * explicitly storing the matrix (a matrix-free method). + *
    Step-38Solving the Laplace-Beltrami equation on curved manifolds embedded + * in higher dimensional spaces. + *
    Step-39 Solving Poisson's equation once more, this time with the + * interior penalty method, one of the discontinous Galerkin + * methods developed for this problem. Error estimator, adaptive + * meshes, and multigrid preconditioner, all using the MeshWorker + * framework. + *
    Step-40 Techniques for the massively parallel solution of the Laplace + * equation (up to 10,000s of processors). + *
    Step-41 Solving the obstacle problem, a variational inequality. + *
    Step-42 A solver for an elasto-plastic contact problem, running on + * parallel machines. + *
    Step-43 Advanced techniques for the simulation of porous media flow. + *
    Step-44 Finite strain hyperelasticity based on a three-field formulation. + *
    Step-45 Periodic boundary conditions. + *
    Step-46 Coupling different kinds of equations in different parts of the domain. + *
    Step-48 Explicit time stepping for the Sine–Gordon equation based on + * a diagonal mass matrix. Efficient implementation of (nonlinear) finite + * element operators. + *
    Step-49 Advanced mesh creation and manipulation techniques. + *
    Step-51 Solving the convection-diffusion equation with a hyrbidizable + * discontinuous Galerkin method using face elements. + *
    + * + * + *

    Tutorial programs grouped by topics

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    Basic techniquesStep-1 Creating a grid. A simple way to write it to a file + *
    Step-2 Degrees of freedom + *
    Step-3 Solve the Laplace equation + *
    Step-4 Dimension independent programming, non-zero data + *
    Step-5 Computing on uniformly refined meshes + *
    Step-6 Adaptivity + *
    Step-7 Evaluating errors + *
    Step-15 Nonlinear problems, Newton's method + *

    Advanced techniques + * Step-9, + * Step-28, + * Step-32, + * Step-44, + * Step-48, + * Step-51 + * Multithreading + *
    + * Step-20, + * Step-21, + * Step-22, + * Step-31, + * Step-32, + * Step-43, + * Step-44 + * Block solvers and preconditioners + *
    + * Step-31, + * Step-32, + * Step-33, + * Step-41, + * Step-42, + * Step-43 + * Using Trilinos + *
    + * Step-17, + * Step-18, + * Step-19, + * Step-40 + * Parallelization via PETSc and MPI + *
    + * Step-32, + * Step-42 + * Parallelization via Trilinos and MPI + *
    + * Step-32, + * Step-40, + * Step-42 + * Parallelization on very large numbers of processors + *
    + * Step-19, + * Step-28, + * Step-29, + * Step-32, + * Step-33, + * Step-34, + * Step-35, + * Step-36, + * Step-42, + * Step-44 + * Input parameter handling + *
    + * Step-10, + * Step-11, + * Step-32 + * Higher order mappings + *
    + * Step-6, + * Step-9, + * Step-14, + * Step-39 + * Error indicators and estimators + *
    + * Step-15, + * Step-28, + * Step-31, + * Step-32, + * Step-33, + * Step-40, + * Step-42, + * Step-43 + * Transferring solutions across mesh refinement + *
    + * Step-12, + * Step-21, + * Step-39, + * Step-46, + * Step-51 + * Discontinuous Galerkin methods + *
    + * Step-27, + * Step-46 + * hp finite elements + *
    Step-30 Anisotropic refinement for DG finite element methods + *
    + * Step-16, + * Step-31, + * Step-32, + * Step-39, + * Step-41, + * Step-42, + * Step-43 + * Multilevel preconditioners + *
    Step-33 Computing Jacobians from residuals, automatic differentiation + *
    + * Step-32, + * Step-34, + * Step-38 + * Boundary element methods, curved manifolds + *
    + * Step-45 + * Periodic boundary conditions + *
    + * Step-37, + * Step-48 + * Matrix-free methods + *
    + * Step-49 + * Advanced meshes + *

    Linear solver issuesStep-3 Conjugate Gradient solver + *
    Step-5 Preconditioned CG solver + *
    Step-9 BiCGStab + *
    + * Step-16, + * Step-31, + * Step-32, + * Step-37, + * Step-39, + * Step-41, + * Step-42, + * Step-43 + * Multilevel preconditioners + *
    + * Step-17, + * Step-18, + * Step-32, + * Step-40, + * Step-42 + * Parallel solvers + *
    + * Step-20, + * Step-21, + * Step-22, + * Step-31, + * Step-32, + * Step-43 + * Block and Schur complement solvers + *
    Step-35 Decoupled projection solvers + *
    + * Step-33, + * Step-41, + * Step-42, + * Step-44 + * Linear Newton systems from nonlinear equations + *
    Step-36 Eigenvalue solvers + *

    Other equations + * Step-7, + * Step-29 + * Helmholtz equation + *
    + * Step-8, + * Step-42, + * Step-46 + * Elasticity and elasto-plasticity equations + *
    + * Step-15 + * Minimal surface equation + *
    + * Step-18, + * Step-44 + * Quasi-static elasticity equations + *
    Step-9, + * Step-21, + * Step-31, + * Step-32, + * Step-43, + * Step-51 + * Transport (advection) equations + *
    Step-33 The nonlinear hyperbolic Euler system of compressible gas dynamics + *
    + * Step-20, + * Step-21, + * Step-43 + * Mixed Laplace, Darcy, Porous media + *
    + * Step-22, + * Step-31, + * Step-32, + * Step-35, + * Step-46 + * Stokes and incompressible Navier-Stokes flow + *
    + * Step-23, + * Step-24, + * Step-25, + * Step-48 + * The wave equation, in linear and nonlinear variants + *
    Step-28 A multigroup diffusion problem in neutron transport + *
    Step-34 Irrotational flow + *
    Step-36 An eigenspectrum problem + *
    + * Step-41, + * Step-42 + * The obstacle problem, a variational inequality + *
    Step-46 Coupling different equations in different parts of the domain + *

    Vector problems + * Step-8, + * Step-42 + * Elasticity and elasto-plasticity equations + *
    Step-20 Mixed Laplace + *
    Step-21, + * Step-43 + * Mixed Laplace plus an advection equation + *
    Step-22, + * Step-31, + * Step-32, + * Step-35 Incompressible Stokes and Navier-Stokes flow + *
    Step-29 A complex-valued Helmholtz problem + *
    Step-33 The Euler equations of compressible gas dynamics + *
    Step-46 Coupling different equations in different parts of the domain + *
    Time-dependent problems + * Step-18, + * Step-44 + * Quasi-static elasticity + *
    Step-21, + * Step-43 + * Porous media flow + *
    Step-23, + * Step-24, + * Step-25, + * Step-48 + * The wave equation, in linear and nonlinear variants + *
    Step-31, + * Step-32 + * Time dependent Stokes flow driven by buoyancy + *
    Step-33 The Euler equations of compressible gas dynamics + *
    + */ diff --git a/deal.II/doc/navbar.html b/deal.II/doc/navbar.html index 9fe716955d..af84e94087 100644 --- a/deal.II/doc/navbar.html +++ b/deal.II/doc/navbar.html @@ -27,7 +27,7 @@ Doxygen and Lectures

    - Tutorial
    + Tutorial
    Manual
    Wolfgang's lectures
    diff --git a/deal.II/doc/readme.html b/deal.II/doc/readme.html index 5ea8cc3d06..f4c41181f3 100644 --- a/deal.II/doc/readme.html +++ b/deal.II/doc/readme.html @@ -318,7 +318,7 @@ At this point, you have generated everything necessary to write programs based on deal.II. If you are new to deal.II, you may want to continue with the - tutorial. + tutorial.

    @@ -349,7 +349,7 @@ install both this readme, other installation instructions, as well as the manual that documents all functions and classes as well as - the tutorial + the tutorial of well-documented example programs (the "steps").

    diff --git a/deal.II/doc/users/navbar.html b/deal.II/doc/users/navbar.html index 8b55b4c263..411bf6cf72 100644 --- a/deal.II/doc/users/navbar.html +++ b/deal.II/doc/users/navbar.html @@ -40,7 +40,7 @@ Doxygen

    - Tutorial
    + Tutorial
    Manual
    Wolfgang's lectures
    diff --git a/deal.II/doc/users/toc.html b/deal.II/doc/users/toc.html index 417b838e03..1d43275fab 100644 --- a/deal.II/doc/users/toc.html +++ b/deal.II/doc/users/toc.html @@ -63,7 +63,7 @@ available:

    Tutorials

    - The tutorial is for new users of the library. It explains the basic elements of finite element programs based on the library, and provides small example diff --git a/deal.II/examples/step-25/doc/intro.dox b/deal.II/examples/step-25/doc/intro.dox index 41a133cc8c..e06d36fc27 100644 --- a/deal.II/examples/step-25/doc/intro.dox +++ b/deal.II/examples/step-25/doc/intro.dox @@ -11,7 +11,7 @@ extensively. Rather facetiously, the sine-Gordon equation's moniker is a pun on the so-called Klein-Gordon equation, which is a relativistic version of -the Schrödinger equation for particles with non-zero mass. The resemblance is not just +the Schrödinger equation for particles with non-zero mass. The resemblance is not just superficial, the sine-Gordon equation has been shown to model some unified-field phenomena such as interaction of subatomic particles (see, e.g., Perring & Skyrme in Nuclear Physics 31) and the diff --git a/deal.II/examples/step-36/doc/intro.dox b/deal.II/examples/step-36/doc/intro.dox index c5e4aecf00..f0eb3867cb 100644 --- a/deal.II/examples/step-36/doc/intro.dox +++ b/deal.II/examples/step-36/doc/intro.dox @@ -53,7 +53,7 @@ for linear algebra contents.

    Introduction

    The basic equation of stationary quantum mechanics is the -Schrödinger equation which models the motion of particles in an +Schrödinger equation which models the motion of particles in an external potential $V(\mathbf x)$. The particle is described by a wave function $\Psi(\mathbf x)$ that satisfies a relation of the (nondimensionalized) form diff --git a/deal.II/examples/step-36/doc/tooltip b/deal.II/examples/step-36/doc/tooltip index 3a5f92e61a..1e1a5da68b 100644 --- a/deal.II/examples/step-36/doc/tooltip +++ b/deal.II/examples/step-36/doc/tooltip @@ -1 +1 @@ -Finding eigenvalues of the Schrödinger equation. +Finding eigenvalues of the Schrödinger equation. diff --git a/deal.II/examples/step-41/doc/intro.dox b/deal.II/examples/step-41/doc/intro.dox index 84afbba1f6..62e8876b0b 100644 --- a/deal.II/examples/step-41/doc/intro.dox +++ b/deal.II/examples/step-41/doc/intro.dox @@ -1,6 +1,6 @@
    -This program was contributed by Jörg Frohne (University of Siegen, +This program was contributed by Jörg Frohne (University of Siegen, Germany) while on a long-term visit to Texas A&M University.
    This material is based upon work partly supported by ThyssenKrupp Steel Europe. diff --git a/deal.II/examples/step-42/doc/intro.dox b/deal.II/examples/step-42/doc/intro.dox index e9dbabb604..27ce612c59 100644 --- a/deal.II/examples/step-42/doc/intro.dox +++ b/deal.II/examples/step-42/doc/intro.dox @@ -1,6 +1,6 @@
    -This program was contributed by Jörg Frohne (University of Siegen, +This program was contributed by Jörg Frohne (University of Siegen, Germany) while on a long-term visit to Texas A&M University, with significant contributions by Timo Heister and Wolfgang Bangerth.
    diff --git a/deal.II/examples/step-42/doc/results.dox b/deal.II/examples/step-42/doc/results.dox index 59158fd480..73911f11fe 100644 --- a/deal.II/examples/step-42/doc/results.dox +++ b/deal.II/examples/step-42/doc/results.dox @@ -199,7 +199,7 @@ situations are concerned:
    • Extend the program from a static to a quasi-static situation, perhaps by choosing a backward-Euler-scheme for the time discretization. Some theoretical -results can be found in the PhD thesis by Jörg Frohne, FEM-Simulation +results can be found in the PhD thesis by Jörg Frohne, FEM-Simulation der Umformtechnik metallischer Oberflächen im Mikrokosmos, University of Siegen, Germany, 2011.