From 15971114992e852037774dee9f02642cd057aef2 Mon Sep 17 00:00:00 2001
From: bangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Date: Fri, 7 May 2010 12:58:08 +0000
Subject: [PATCH] Add Markus Buerg's step-45.

git-svn-id: https://svn.dealii.org/trunk@21092 0785d39b-7218-0410-832d-ea1e28bc413d
---
 deal.II/examples/step-45/Makefile             | 154 ++++++++++
 deal.II/examples/step-45/doc/intro.dox        |  63 ++++
 deal.II/examples/step-45/doc/results.dox      |  20 ++
 .../step-45/doc/step-45.periodic_cells.png    | Bin 0 -> 3855 bytes
 .../examples/step-45/doc/step-45.solution.png | Bin 0 -> 36656 bytes
 deal.II/examples/step-45/step-45.cc           | 275 ++++++++++++++++++
 6 files changed, 512 insertions(+)
 create mode 100644 deal.II/examples/step-45/Makefile
 create mode 100644 deal.II/examples/step-45/doc/intro.dox
 create mode 100644 deal.II/examples/step-45/doc/results.dox
 create mode 100644 deal.II/examples/step-45/doc/step-45.periodic_cells.png
 create mode 100644 deal.II/examples/step-45/doc/step-45.solution.png
 create mode 100644 deal.II/examples/step-45/step-45.cc

diff --git a/deal.II/examples/step-45/Makefile b/deal.II/examples/step-45/Makefile
new file mode 100644
index 0000000000..a2f3f96ca5
--- /dev/null
+++ b/deal.II/examples/step-45/Makefile
@@ -0,0 +1,154 @@
+# $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 = $(basename $(shell echo step-*.cc))
+
+# 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 = ../../
+
+
+# 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 *vtk
+
+
+
+
+#
+#
+# Usually, you will not need to change anything 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 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 .g.o for object files compiled in debug mode and .o for
+# object files in optimized mode (or whatever the local default on your
+# system is instead of .o).
+ifeq ($(debug-mode),on)
+  libraries = $(target).g.$(OBJEXT) $(libs.g)
+else
+  libraries = $(target).$(OBJEXT) $(libs.o)
+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) -o $@$(EXEEXT) $^ $(LIBS) $(LDFLAGS)
+
+
+# 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)$(EXEEXT)
+
+
+# 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 *.$(OBJEXT) *~ Makefile.dep $(target)$(EXEEXT) $(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.
+./%.g.$(OBJEXT) :
+	@echo ==============debug========= $(<F)
+	@$(CXX) $(CXXFLAGS.g) -c $< -o $@
+./%.$(OBJEXT) :
+	@echo ==============optimized===== $(<F)
+	@$(CXX) $(CXXFLAGS.o) -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.
+#
+# If the creation of Makefile.dep fails, blow it away and fail
+Makefile.dep: $(target).cc Makefile \
+              $(shell echo $D/*/include/*/*.h)
+	@echo ============================ Remaking $@
+	@$D/common/scripts/make_dependencies  $(INCLUDE) -B. $(target).cc \
+		> $@ \
+	  || (rm -f $@ ; false)
+	@if test -s $@ ; then : else rm $@ ; fi
+
+
+# To make the dependencies known to `make', we finally have to include
+# them:
+include Makefile.dep
+
+
diff --git a/deal.II/examples/step-45/doc/intro.dox b/deal.II/examples/step-45/doc/intro.dox
new file mode 100644
index 0000000000..a799344358
--- /dev/null
+++ b/deal.II/examples/step-45/doc/intro.dox
@@ -0,0 +1,63 @@
+<br>
+
+<i>This program was contributed by Markus B&uuml;rg.</i>
+<br>
+
+<a name="Intro"></a>
+<h1>Introduction</h1>
+
+In this example we consider how to use periodic boundary conditions in
+deal.II. Periodic boundary conditions often occur in computations of photonic
+crystals, because they have a lattice-like structure and, thus, it often
+suffices to do the actual computation on only one cell. To be able to proceed
+this way one has to assume that the computation can be periodically extended
+to the other cells. This requires the solution to be periodic w.r.t. the
+cells. Hence the solution has to obtain the same values on the parts of the
+boundary, which are facing each other. In the figure below we show this
+concept in two space-dimensions. There, all faces with the same color should
+have the same boundary values:
+
+@image html step-45.periodic_cells.png
+
+To keep things simple, in this tutorial we will consider an academic problem,
+which is a little bit easier: We solve the Poisson problem on a domain, where
+the left and right parts of the boundary are identified. Let $\Omega=(0,1)^2$
+and consider the problem 
+@f{align*}
+   -\Delta u &=
+   \pi^2\sin(\pi x)\sin(\pi y)  \qquad &\text{in }\Omega
+  \\ 
+   u(0,y) &= 0 \qquad &\text{for }y\in(0,1)
+  \\
+   u(1,y) &= 0 \qquad &\text{for }y\in(0,1)
+  \\
+   u(x,0) &= u(x,1) \qquad &\text{for }x\in(0,1) 
+@f}
+
+The way one has to see these periodic boundary conditions $u(x,0) = u(x,1)$ is
+as follows: Assume for a moment (as we do in this program) that we have a
+uniformly refined mesh. Then, after discretization there are a number of nodes
+(degrees of freedom) with indices $i \in {\cal I}_b$ on the bottom boundary of
+the domain, and  a second set of nodes at the top boundary $j \in {\cal
+I}_t$. Since we have assumed that the mesh is uniformly refined, there is
+exactly one node $j \in {\cal I}_t$ for each $i \in {\cal I}_b$ so that
+${\mathrm x}_j = {\mathrm x}_i + (0,1)^T$, i.e. the two of them match with
+respect to the periodicity. We will then write that $j=\text{periodic}(i)$
+(and, if you want, $i=\text{periodic}(j)$).
+If now $U_k, k=0,\ldots,N-1$ are the unknowns of our discretized problem, then
+the periodic boundary condition boils down to the following set of
+constraints:
+@f{align*}
+  U_{\text{periodic}(i)} = U_i, \qquad \forall i \in {\cal I}_b. 
+@f}
+Now, this is exactly the sort of constraint that the ConstraintMatrix class
+handles and can enforce in linear system. Consequently, the main point of this
+program is how we fill the ConstraintMatrix object that stores these
+constraints, and how this is applied to the resulting linear system.
+
+The code for solving this problem is simple and based on step-3 since we want
+to focus on the implementation of the periodic boundary conditions. The code
+could be much more sophisticated, of course. For example, we could want to
+enforce periodic boundary conditions for adaptively refined meshes in which
+there is no longer a one-to-one relationship between degrees of freedom. We
+will discuss this at the end of the results section of this program.
diff --git a/deal.II/examples/step-45/doc/results.dox b/deal.II/examples/step-45/doc/results.dox
new file mode 100644
index 0000000000..63961a384d
--- /dev/null
+++ b/deal.II/examples/step-45/doc/results.dox
@@ -0,0 +1,20 @@
+<h1>Results</h1>
+
+The textual output the program generates is not very surprising. It just
+prints out the usual information on degrees of freedom, active cells and
+iteration steps of the solver: 
+
+@code
+============================ Running step-45
+Number of active cells: 1024
+Degrees of freedom: 1089
+DEAL:cg::Starting value 0.153970
+DEAL:cg::Convergence step 54 value 7.73356e-16
+@endcode
+
+The plot of the solution can be found in the figure below. We can see that the
+solution is constantly zero on the upper and the lower part of the boundary as
+required by the homogeneous Dirichlet boundary conditions. On the left and
+right parts the values coincide with each other, just as we wanted:
+
+@image html step-45.solution.png
diff --git a/deal.II/examples/step-45/doc/step-45.periodic_cells.png b/deal.II/examples/step-45/doc/step-45.periodic_cells.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e19509c8720cf56489f37c36ff9eb2c82f7b062
GIT binary patch
literal 3855
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
V(D3t|&hIU*nX!dY`6ZWo{{ji+0bl?C

literal 0
HcmV?d00001

diff --git a/deal.II/examples/step-45/doc/step-45.solution.png b/deal.II/examples/step-45/doc/step-45.solution.png
new file mode 100644
index 0000000000000000000000000000000000000000..20dae47f303fa73db0a399249f6f3924747d0f63
GIT binary patch
literal 36656
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
QdjJ3c07*qoM6N<$f-nnA{r~^~

literal 0
HcmV?d00001

diff --git a/deal.II/examples/step-45/step-45.cc b/deal.II/examples/step-45/step-45.cc
new file mode 100644
index 0000000000..962fb7d18c
--- /dev/null
+++ b/deal.II/examples/step-45/step-45.cc
@@ -0,0 +1,275 @@
+/* $Id$ */
+/* Author: Markus Buerg, University of Karlsruhe, 2010 */
+
+/*    $Id$       */
+/*                                                                */
+/*    Copyright (C) 2010 by the deal.II authors */
+/*                                                                */
+/*    This file is subject to QPL and may not be  distributed     */
+/*    without copyright and license information. Please refer     */
+/*    to the file deal.II/doc/license.html for the  text  and     */
+/*    further information on this license.                        */
+
+				 // The include files are already known.
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <dofs/dof_accessor.h>
+#include <dofs/dof_handler.h>
+#include <dofs/dof_tools.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <grid/grid_generator.h>
+#include <grid/tria.h>
+#include <lac/constraint_matrix.h>
+#include <lac/precondition.h>
+#include <lac/solver_cg.h>
+#include <lac/solver_control.h>
+#include <lac/sparse_matrix.h>
+#include <lac/sparsity_pattern.h>
+#include <numerics/data_out.h>
+#include <numerics/vectors.h>
+
+using namespace dealii;
+				 // The RightHandSide class is a function
+				 // object representing the right-hand side of
+				 // the problem.
+class RightHandSide: public Function<2> {
+  public:
+    RightHandSide ();
+    virtual double value (const Point<2>& p, const unsigned int component = 0) const;
+};
+
+				 // This function returns the value of the
+				 // right-hand side at a given point
+				 // <code>p</code>.
+double RightHandSide::value (const Point<2>&p, const unsigned int) const {
+  return numbers::PI * numbers::PI * std::sin (numbers::PI * p (0)) * std::sin (numbers::PI * p (1));
+}
+
+				 // Here comes the constructor of the class
+				 // <code>RightHandSide</code>.
+RightHandSide::RightHandSide (): Function<2> () {
+}
+
+				 // The class <code>LaplaceProblem</code> is
+				 // the main class, which solves the problem.
+class LaplaceProblem {
+  private:
+    ConstraintMatrix constraints;
+    const RightHandSide right_hand_side;
+    Triangulation<2> triangulation;
+    DoFHandler<2> dof_handler;
+    FE_Q<2> fe;
+    SparseMatrix<double> A;
+    SparsityPattern sparsity_pattern;
+    Vector<double> b;
+    Vector<double> u;
+    void assemble_system ();
+    void output_results ();
+    void setup_system ();
+    void solve ();
+   
+  public:
+    LaplaceProblem ();
+    void run ();
+};
+
+				 // The constructor of the class, where the
+				 // <code>DoFHandler</code> and the finite
+				 // element object are initialized.
+LaplaceProblem::LaplaceProblem (): dof_handler (triangulation), fe (1) {
+}
+
+				 //Assembling the system matrix and the
+				 //right-hand side vector is done as in other
+				 //tutorials before.
+void LaplaceProblem::assemble_system () {
+  const unsigned int dofs_per_cell = fe.dofs_per_cell;
+  QGauss<2> quadrature (2);
+  const unsigned int n_quadrature_points = quadrature.size ();
+  double JxW;
+  FEValues<2> fe_values (fe, quadrature, update_gradients | update_JxW_values | update_quadrature_points | update_values);
+  FullMatrix<double> cell_matrix (dofs_per_cell, dofs_per_cell);
+  std::vector<Point<2> > quadrature_points;
+  std::vector<unsigned int> cell_dof_indices (dofs_per_cell);
+  Vector<double> cell_rhs (dofs_per_cell);
+   
+  for (DoFHandler<2>::active_cell_iterator cell = dof_handler.begin_active (); cell != dof_handler.end (); ++cell) {
+    cell_rhs = 0;
+    fe_values.reinit (cell);
+    quadrature_points = fe_values.get_quadrature_points ();
+      
+    for (unsigned int i = 0; i < dofs_per_cell; ++i)
+      for (unsigned int q_point = 0; q_point < n_quadrature_points; ++q_point) {
+	JxW = fe_values.JxW (q_point);
+	cell_rhs (i) += JxW * fe_values.shape_value (i, q_point) * right_hand_side.value (quadrature_points[q_point]);
+            
+	for (unsigned int j = 0; j < dofs_per_cell; ++j)
+	  cell_matrix (i, j) += JxW * fe_values.shape_grad (i, q_point) * fe_values.shape_grad (j, q_point);
+      }
+      
+    cell->get_dof_indices (cell_dof_indices);
+    constraints.distribute_local_to_global (cell_matrix, cell_rhs, cell_dof_indices, A, b);
+  }
+}
+
+void LaplaceProblem::setup_system () {
+  GridGenerator::hyper_cube (triangulation);
+				   // We change the boundary indicator on the
+				   // parts of the boundary, where we have
+				   // Dirichlet boundary conditions, to one
+				   // such that we can distinguish between the
+				   // parts of the boundary, where periodic
+				   // and where Dirichlet boundary conditions
+				   // hold.
+  Triangulation<2>::active_cell_iterator cell = triangulation.begin_active ();
+   
+  cell->face (2)->set_boundary_indicator (1);
+  cell->face (3)->set_boundary_indicator (1);   
+  triangulation.refine_global (5);
+				   // Here the degrees of freedom are
+				   // distributed.
+  dof_handler.distribute_dofs (fe);
+  std::cout << "Number of active cells: " << triangulation.n_active_cells () << std::endl << "Degrees of freedom: " << dof_handler.n_dofs () << std::endl;
+				   // Now it is the time for the constraint
+				   // matrix. The first constraints we put in
+				   // are the periodic boundary
+				   // conditions. For this let us consider the
+				   // constraints we have to take care of in
+				   // more detail first: We want to identify
+				   // all degrees of freedom located on the
+				   // right part of the boundary with the ones
+				   // located on the left part. Thus, first we
+				   // select a degree of freedom on the right
+				   // part of the boundary. Then we look for
+				   // the corresponding one the left-hand side
+				   // and identify these two. Since we are
+				   // using finite elements of order 1 here,
+				   // finding the corresponding degree of
+				   // freedom on the other side is quite easy:
+				   // All degrees of freedom are located on
+				   // vertices and thus we simply can take the
+				   // degree of freedom on the other side,
+				   // which is located on the vertex with the
+				   // same y-component.  Here starts the
+				   // implementation: First we declare a
+				   // vector, which stores the global index of
+				   // the boundary degree of freedom together
+				   // with the y-component of the vertex on
+				   // which it is located.
+  constraints.clear ();
+   
+  std::vector<std::pair<unsigned int, double> > dof_locations;
+   
+  dof_locations.reserve (dof_handler.n_boundary_dofs ());
+   
+  unsigned int dofs_per_face = fe.dofs_per_face;
+				   // Then we loop over all active cells and
+				   // check, whether the cell is located at
+				   // the boundary. If this is the case, we
+				   // check, if it is located on the right
+				   // part of the boundary, hence, if face 1
+				   // is at the boundary.
+  for (DoFHandler<2>::active_cell_iterator cell = dof_handler.begin_active (); cell != dof_handler.end (); ++cell)
+    if (cell->at_boundary () && cell->face (1)->at_boundary ()) {
+				       // Since each degree of freedom of the
+				       // face is located on one vertex, we
+				       // can access them directly and store
+				       // the global index of the degree of
+				       // freedom togehter with the
+				       // y-component of the vertex on which
+				       // it is located.
+      dof_locations.push_back (std::pair<unsigned int, double> (cell->vertex_dof_index (1, 0), cell->vertex (1) (1)));
+      dof_locations.push_back (std::pair<unsigned int, double> (cell->vertex_dof_index (3, 0), cell->vertex (3) (1)));
+    }
+				   // Now we have to find the corresponding
+				   // degrees of freedom on the left part of
+				   // the boundary. Therefore we loop over all
+				   // cells again and choose the ones, where
+				   // face 0 is at the boundary.
+  for (DoFHandler<2>::active_cell_iterator cell = dof_handler.begin_active (); cell != dof_handler.end (); ++cell)
+    if (cell->at_boundary () && cell->face (0)->at_boundary ()) {
+				       // For every degree of freedom on this
+				       // face we add a new line to the
+				       // constraint matrix. Then we identify
+				       // it with the corresponding degree of
+				       // freedom on the right part of the
+				       // boundary.
+      constraints.add_line (cell->vertex_dof_index (0, 0));
+         
+      for (unsigned int i = 0; i < dof_locations.size (); ++i)
+	if (dof_locations[i].second == cell->vertex (0) (1)) {
+	  constraints.add_entry (cell->vertex_dof_index (0, 0), dof_locations[i].first, 1.0);
+	  break;
+	}
+         
+      constraints.add_line (cell->vertex_dof_index (2, 0));
+         
+      for (unsigned int i = 0; i < dof_locations.size (); ++i)
+	if (dof_locations[i].second == cell->vertex (2) (1)) {
+	  constraints.add_entry (cell->vertex_dof_index (2, 0), dof_locations[i].first, 1.0);
+	  break;
+	}
+    }
+				   // Finally we have to set the homogeneous
+				   // Dirichlet boundary conditions on the
+				   // upper and lower parts of the boundary
+				   // and close the
+				   // <code>ConstraintMatrix</code> object.
+  VectorTools::interpolate_boundary_values (dof_handler, 1, ZeroFunction<2> (), constraints);
+  constraints.close ();
+				   // Then we create the sparsity pattern and
+				   // the system matrix and initialize the
+				   // solution and right-hand side vectors.
+  const unsigned int n_dofs = dof_handler.n_dofs ();
+   
+  sparsity_pattern.reinit (n_dofs, n_dofs, dof_handler.max_couplings_between_dofs ());
+  DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern, constraints, false);
+  sparsity_pattern.compress ();
+  A.reinit (sparsity_pattern);
+  b.reinit (n_dofs);
+  u.reinit (n_dofs);
+}
+				 // To solve the linear system of equations
+				 // $Au=b$ we use the CG solver with an
+				 // SSOR-preconditioner.
+void LaplaceProblem::solve () {
+  SolverControl solver_control (dof_handler.n_dofs (), 1e-15);
+  PreconditionSSOR<SparseMatrix<double> > precondition;
+   
+  precondition.initialize (A);
+   
+  SolverCG<> cg (solver_control);
+   
+  cg.solve (A, u, b, precondition);
+  constraints.distribute (u);
+}
+
+void LaplaceProblem::output_results () {
+				   // As graphical output we create vtk-file
+				   // of the computed solution.
+  DataOut<2> data_out;
+   
+  data_out.attach_dof_handler (dof_handler);
+  data_out.add_data_vector (u, "u");
+  data_out.build_patches ();
+   
+  std::ofstream output ("solution.vtk");
+   
+  data_out.write_vtk (output);
+}
+				 // This function manages the solving process
+				 // of the problem.
+void LaplaceProblem::run () {
+  setup_system ();
+  assemble_system ();
+  solve ();
+  output_results ();
+}
+				 // And at the end we have the main function
+				 // as usual.
+int main () {
+  LaplaceProblem laplace_problem;
+   
+  laplace_problem.run ();
+}
-- 
2.39.5