From: bangerth Date: Sat, 5 Jan 2013 04:07:33 +0000 (+0000) Subject: Merge from mainline. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=412650c1f54bd22d102420a4280d0019ec58e618;p=dealii-svn.git Merge from mainline. git-svn-id: https://svn.dealii.org/branches/branch_cmake@27928 0785d39b-7218-0410-832d-ea1e28bc413d --- 412650c1f54bd22d102420a4280d0019ec58e618 diff --cc deal.II/Makefile index 94aa101fa8,529023d904..090d415e21 --- a/deal.II/Makefile +++ b/deal.II/Makefile @@@ -1,5 -1,158 +1,159 @@@ -# $Id$ -# -# Makefile for the whole library +default: ++<<<<<<< .working ++======= + SHELL=/bin/bash + + help: + @echo "========================================================================" + @echo "= Global Makefile for the deal.II libraries =" + @echo "========================================================================" + @echo "= =" + @echo "= The following targets exist: =" + @echo "= all : debug and optimized libraries =" + @echo "= debug : the debug version of the deal.II library =" + @echo "= optimized : the optimized version of the deal.II library =" + @echo "= =" + @echo "= contrib : additional libraries in contrib, if there are any =" + @echo "= =" + @echo "= online-doc : generate the documentation in HTML format =" + @echo "= TODO : create a \"TODO\" file from the source files =" + @echo "= TAGS : create a TAGS file from include and source files =" + @echo "= =" + @echo "= clean : removes all object files in subdirs =" + @echo "= distclean : removes all object files, libraries, etc in subdirs =" + @echo "========================================================================" + + config.log: configure common/template-arguments.in common/dealiitemplates.pm.in + $(error Error: configuration not up to date. Please run ./configure or ./reconfigure) + + deps: config.log + @cd common/scripts && $(MAKE) $(MAKEOPTIONS) + @cd source && if $(MAKE) $(MAKEOPTIONS) Makefile.dep;\ + then : ;\ + else rm Makefile.dep && $(MAKE) $(MAKEOPTIONS) Makefile.dep; fi + @cd lib && $(MAKE) $(MAKEOPTIONS) external-links + @if test ! -d lib/debug ; then mkdir -p lib/debug && echo "Created lib/debug" ; fi + @if test ! -d lib/optimized ; then mkdir -p lib/optimized && echo "Created lib/optimized" ; fi + + + + all: debug optimized + + debug: deps contrib + @cd source && $(MAKE) debug + + optimized: deps contrib + @cd source && $(MAKE) optimized + + contrib: + @cd contrib && $(MAKE) + + online-doc doc: + cd doc && $(MAKE) + @echo + @echo + @echo ======================================================= + @echo "The online documentation can now be accessed through" + @echo " doc/index.html" + @echo ======================================================= + @echo + @echo + + TAGS: + @cd common ; etags --language=c++ \ + ../include/deal.II/*/*.h ../source/*/*.cc \ + ../examples/*/*.cc ; \ + perl -pi -e 's/ \* .*//g; s&[\t]*/\*.*&&g; s&[\t]*\*/.*&&g;' TAGS + + + clean: clean-contrib clean-source \ + clean-doc clean-examples clean-lib clean-tests + -rm -f TODO common/TAGS + + clean-contrib: + @cd contrib && $(MAKE) clean + + clean-source: + @cd source && $(MAKE) CLEAN=yes clean + + clean-doc: + @cd doc && $(MAKE) CLEAN=yes clean + + clean-examples: + @cd examples && $(MAKE) CLEAN=yes clean + + clean-lib: + @cd lib && $(MAKE) CLEAN=yes clean + + # if that directory exists, go into 'tests' and clean up there as well + clean-tests: + @-cd tests && $(MAKE) clean + + clean-common-scripts: + @cd common/scripts && $(MAKE) clean + + distclean: clean + @cd lib && $(MAKE) distclean + @-cd tests && $(MAKE) distclean + @-rm source/*/*.inst + @$(MAKE) clean-common-scripts + + + + # ############################################################################# + # targets for build tests. these targets are supposed to be called for regular + # build tests that send their results back home to our build test server. note + # that this target is supposed to be called right after checking out a version + # from our CVS server, so at this time, common/Make.global_options doesn't + # exist yet (and isn't included at the top of this file, due to a + # conditional), and we first have to set up all this stuff. + # + # the way this target works is that it first generates a bunch of lines for + # the output file that will ultimately be sent home. it then calls ./configure + # and stashes away both the output and the return value. if ./configure + # succeeds, we extract a little more information concluding the + # header. irrespective of this, we then append the output of ./configure to + # the log file. if the call to ./configure failed, we send the result back + # home and exit. + # + # if ./configure succeeded, we then go on to the build-test-do target, which + # actually compiles something, and when we come back from there we send the + # whole thing over to the server + build-test: + echo AUTOMATED DEAL.II BUILD TEST | tee build-test-log + -(./configure $(BUILDTESTFLAGS) 2>&1) > build-test-config + echo BEGIN HEADER `date -u '+%Y-%m-%d %T'` | tee -a build-test-log + (cd common ; $(MAKE) BUILDTEST=yes -f Make.global_options print-summary) | tee -a build-test-log + echo END HEADER `date -u '+%Y-%m-%d %T'` | tee -a build-test-log + echo | tee -a build-test-log + echo BEGIN CONFIGURE OUTPUT `date -u '+%Y-%m-%d %T'` | tee -a build-test-log + cat build-test-config | tee -a build-test-log + echo END CONFIGURE OUTPUT `date -u '+%Y-%m-%d %T'` | tee -a build-test-log + echo | tee -a build-test-log + -$(MAKE) BUILDTEST= build-test-do 2>&1 | tee -a build-test-log + + # target to do the actual compilation tests for an automated build test. build + # the library, the example programs, and the doxygen example programs. if the + # testsuite has been checked out, run that, too, and send the results to the + # testsuite server + build-test-do: + @echo BEGIN MAKE LIB OUTPUT `date -u '+%Y-%m-%d %T'` + $(MAKE) all + @echo END MAKE LIB OUTPUT `date -u '+%Y-%m-%d %T'` + @echo + @echo BEGIN MAKE EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'` + cd examples ; $(MAKE) + @echo END MAKE EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'` + @echo + @echo BEGIN MAKE RUN EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'` + cd examples/doxygen ; $(MAKE) run + @echo END MAKE RUN EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'` + @echo + @echo BUILD TEST SUCCESSFUL `date -u '+%Y-%m-%d %T'` + + ++>>>>>>> .merge-right.r27927 style-h-files:= $(wildcard include/deal.II/*/*.h) style-cc-files:= $(wildcard source/*/*.cc) style-examples:= $(wildcard examples/*/*.cc) diff --cc deal.II/cmake/config/template-arguments.in index 9b3290f4a3,8178ad9af6..7e97a5eea3 --- a/deal.II/cmake/config/template-arguments.in +++ b/deal.II/cmake/config/template-arguments.in @@@ -36,25 -37,23 +37,35 @@@ SERIAL_VECTORS := { Vector @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@; } +EXTERNAL_SEQUENTIAL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_VECTOR@; + @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@; + @DEAL_II_EXPAND_PETSC_VECTOR@; + @DEAL_II_EXPAND_PETSC_BLOCKVECTOR@ + } + +EXTERNAL_PARALLEL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@; + @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@; + @DEAL_II_EXPAND_PETSC_MPI_VECTOR@; + @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@ + } + + VECTORS_WITH_MATRIX := { Vector; + Vector ; + Vector; + + BlockVector; + BlockVector; + BlockVector; + + @DEAL_II_EXPAND_TRILINOS_VECTOR@; + @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@; + } + DOFHANDLERS := { DoFHandler; - hp::DoFHandler; - MGDoFHandler } + hp::DoFHandler } DOFHANDLER_TEMPLATES := { DoFHandler; - hp::DoFHandler; - MGDoFHandler } + hp::DoFHandler } TRIANGULATION_AND_DOFHANDLER_TEMPLATES := { Triangulation; DoFHandler; diff --cc deal.II/doc/development/toc.html index cb384205fb,c5a54a5a15..108124d01d --- a/deal.II/doc/development/toc.html +++ b/deal.II/doc/development/toc.html @@@ -34,19 -33,17 +34,18 @@@
  • Documentation of the SVN Archive and - information on recent changes to the library.

    - information on Recent changes to the library: If you want to stay - informed about what is going on with the library itself, you may want - to take a look at this page. You can browse the repository and - subscribe to an rss feed too.

    ++ information on recent changes to the library. -
  • Makefiles: - 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. +

  • + deal.II CMake documentation: + This page provides extensive information about usage and + development of the deal.II CMake build system. + +

  • Example CMakeLists.txt: + An overview of how to write the CMakeLists.txt input + files that control cmake if you want to use it for your + own project and want it to compile and link against + the deal.II library.

  • Writing diff --cc deal.II/doc/external-libs/trilinos.html index 5f4237d154,0000000000..81fd33ba61 mode 100644,000000..100644 --- a/deal.II/doc/external-libs/trilinos.html +++ b/deal.II/doc/external-libs/trilinos.html @@@ -1,130 -1,0 +1,130 @@@ + + + + The deal.II Readme on interfacing to Trilinos + + - ++ + + + + + + + +

    Interfacing deal.II to Trilinos

    + +

    + Trilinos is a + software package that provides lots of functionality for linear + algebra, among other things. For example, it includes implementations of a variety of + linear solvers, as well as various different sparse and dense matrix and + vector formats. Trilinos also has many subpackages that deal with + problems that go far beyond linear algebra, for example nonlinear + solvers, automatic differentiation packages, uncertainty propagation + engines, etc. Of particular interest to deal.II is their ability to + provide this functionality both on sequential and parallel (using MPI) + computers. Compared to PETSc, which is written in C, Trilinos is written in + C++ and can be + considered to be a more modern version of PETSc though both packages are + under continuing development at their respective national laboratories. +

    + +

    + deal.II has wrapper classes to the linear algebra + parts of Trilinos that provide almost the + same interfaces as the built-in deal.II linear + algebra classes. We use these interfaces for parallel computations based + on MPI since the native deal.II linear algebra classes lack this + ability. They are used, among other programs, in step-31 and step-32. +

    + +

    + While building deal.II with Trilinos is covered in + the ReadMe file, we here give an + introduction to building Trilinos in such a way that it contains + everything that we need from the deal.II side. +

    + + +
    Installing Trilinos
    + +

    + Note: Trilinos versions 10.6.x, 10.8.0, 10.8.1, 10.10.2, 10.12.1 are not + compatible with deal.II. They contain subtle bugs related to (parallel) - matrices and vectors. Versions tested to work are 10.4.2, 10.8.5, and - 10.12.2. We recommend only using one of the tested versions for the time - being. ++ matrices and vectors. Versions tested to work are 10.4.2, 10.8.5, ++ 10.12.2, and 11.0.3. We recommend only using one of the tested versions ++ for the time being. +

    + +

    + Trilinos uses cmake to configure and + build. The following slightly longish set of commands will set up a + reasonable configuration: +

     +
     +    cd trilinos-10.12.2
     +    mkdir build
     +    cd build
     +
     +    cmake -D Trilinos_ENABLE_OPTIONAL_PACKAGES:BOOL=ON \
     +      -D Trilinos_ENABLE_Sacado:BOOL=ON \
     +      -D Trilinos_ENABLE_Stratimikos:BOOL=ON \
     +      -D CMAKE_BUILD_TYPE:STRING=RELEASE \
     +      -D CMAKE_CXX_FLAGS:STRING="-g -O3" \
     +      -D CMAKE_C_FLAGS:STRING="-g -O3" \
     +      -D CMAKE_FORTRAN_FLAGS:STRING="-g -O5" \
     +      -D Trilinos_EXTRA_LINK_FLAGS:STRING="-lgfortran" \
     +      -D CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE \
     +      -D Trilinos_VERBOSE_CONFIGURE:BOOL=FALSE \
     +      -D TPL_ENABLE_MPI:BOOL=OFF \
     +      -D CMAKE_INSTALL_PREFIX:PATH=/w/bangerth/share/x86_64/trilinos-10.12.2 \
     +      -D BUILD_SHARED_LIBS:BOOL=ON ..
     +
     +    make
     +    make install
     +	
    + You will need to adjust the path into which you want to install Trilinos + in the second to last line of the cmake command. +

    + +

    + Using MPI: If you + want to use Trilinos with MPI on parallel machines, + use TPL_ENABLE_MPI=ON instead. +

    + +

    + Parallel builds: + If your computer has more than one processor core, use + make -jN instead of make in the last two lines + above, where N is the number of processors you have. +

    + +

    + Trilinos sometimes searches for other libraries but can't find + them if they are not in the usual directories or have other + names. A common example are BLAS or LAPACK. In a case like + this, you may have to specifically pass the directories and/or + library names under which they can be found + to cmake. For example, this may mean to add the + following flags to the call above: +

     +
     +    -D BLAS_LIBRARY_NAMES:STRING=goto \
     +    -D BLAS_LIBRARY_DIRS:STRING=/apps/GotoBLAS/lib64 \
     +    -D LAPACK_LIBRARY_NAMES:STRING=lapack \
     +    -D LAPACK_LIBRARY_DIRS:STRING=/apps/lapack-3.2.1/lib64
     +	
    +

    + +
    + +
    + The deal.II Group + $Date$ +
    + + diff --cc deal.II/examples/step-37/step-37.cc index 0da8d2474f,fb8834e003..fcd628917a --- a/deal.II/examples/step-37/step-37.cc +++ b/deal.II/examples/step-37/step-37.cc @@@ -273,9 -272,9 +272,9 @@@ namespace Step3 void clear(); - void reinit (const MGDoFHandler &dof_handler, + void reinit (const DoFHandler &dof_handler, - const ConstraintMatrix &constraints, + const ConstraintMatrix &constraints, - const unsigned int level = numbers::invalid_unsigned_int); + const unsigned int level = numbers::invalid_unsigned_int); unsigned int m () const; unsigned int n () const; @@@ -398,8 -397,8 +397,8 @@@ // FEEvaluation class (and its template arguments) will be explained below. template void - LaplaceOperator::reinit (const MGDoFHandler &dof_handler, + LaplaceOperator::reinit (const DoFHandler &dof_handler, - const ConstraintMatrix &constraints, + const ConstraintMatrix &constraints, const unsigned int level) { typename MatrixFree::AdditionalData additional_data; diff --cc deal.II/include/deal.II/dofs/dof_renumbering.h index d5f789cf89,93c3c1b8c7..799916ed57 --- a/deal.II/include/deal.II/dofs/dof_renumbering.h +++ b/deal.II/include/deal.II/dofs/dof_renumbering.h @@@ -1,7 -1,7 +1,7 @@@ //--------------------------------------------------------------------------- // $Id$ // --// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 by the deal.II authors ++// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer diff --cc deal.II/include/deal.II/multigrid/mg_dof_handler.h index a000fd6e9f,37353b526d..591aacf244 --- a/deal.II/include/deal.II/multigrid/mg_dof_handler.h +++ b/deal.II/include/deal.II/multigrid/mg_dof_handler.h @@@ -1,7 -1,7 +1,7 @@@ //--------------------------------------------------------------------------- // $Id$ // --// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012 by the deal.II authors ++// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@@ -496,69 -152,6 +152,7 @@@ public /*@}*/ - /* ----------------------- Inline functions of MGDoFHandler -------------------*/ - - template - inline - unsigned int MGDoFHandler::n_dofs() const - { - return DoFHandler::n_dofs(); - } - - - template - inline - void MGDoFHandler::renumber_dofs (const std::vector &new_numbers) - { - return DoFHandler::renumber_dofs (new_numbers); - } - - - /* ----------------------- Inline functions of MGVertexDoFs -------------------*/ - - template - inline - void MGDoFHandler::MGVertexDoFs::set_index (const unsigned int level, - const unsigned int dof_number, - const unsigned int dofs_per_vertex, - const unsigned int index) - { - Assert ((level >= coarsest_level) && (level <= finest_level), - ExcInvalidLevel(level)); - Assert (dof_number < dofs_per_vertex, - ExcIndexRange(dof_number, 0, dofs_per_vertex)); - - indices[(level-coarsest_level)*dofs_per_vertex + dof_number] = index; - } - - - template - inline - unsigned int - MGDoFHandler::MGVertexDoFs::get_index (const unsigned int level, - const unsigned int dof_number, - const unsigned int dofs_per_vertex) const - { - Assert ((level >= coarsest_level) && (level <= finest_level), - ExcInvalidLevel(level)); - Assert (dof_number < dofs_per_vertex, - ExcIndexRange (dof_number, 0, dofs_per_vertex)); - - return indices[(level-coarsest_level)*dofs_per_vertex + dof_number]; - } - - - - template <> - void MGDoFHandler<1>::renumber_dofs (const unsigned int level, - const std::vector &new_numbers); - template <> - void MGDoFHandler<2>::renumber_dofs (const unsigned int level, - const std::vector &new_numbers); - template <> - void MGDoFHandler<3>::renumber_dofs (const unsigned int level, - const std::vector &new_numbers); + DEAL_II_NAMESPACE_CLOSE diff --cc deal.II/include/deal.II/multigrid/mg_tools.h index 4cce7ed888,aca7bcfaa1..f7310a8387 --- a/deal.II/include/deal.II/multigrid/mg_tools.h +++ b/deal.II/include/deal.II/multigrid/mg_tools.h @@@ -231,9 -231,9 +231,9 @@@ namespace MGTool */ template void - make_boundary_list (const MGDoFHandler &mg_dof, + make_boundary_list (const DoFHandler &mg_dof, const typename FunctionMap::type &function_map, - std::vector > &boundary_indices, + std::vector > &boundary_indices, const ComponentMask &component_mask = ComponentMask()); /** @@@ -285,9 -285,9 +285,9 @@@ */ template void - extract_inner_interface_dofs (const MGDoFHandler &mg_dof_handler, + extract_inner_interface_dofs (const DoFHandler &mg_dof_handler, - std::vector > &interface_dofs, - std::vector > &boundary_interface_dofs); + std::vector > &interface_dofs, + std::vector > &boundary_interface_dofs); /** * Does the same as the function above, @@@ -295,13 -295,13 +295,13 @@@ */ template void - extract_inner_interface_dofs (const MGDoFHandler &mg_dof_handler, + extract_inner_interface_dofs (const DoFHandler &mg_dof_handler, - std::vector > &interface_dofs); + std::vector > &interface_dofs); template void - extract_non_interface_dofs (const MGDoFHandler &mg_dof_handler, + extract_non_interface_dofs (const DoFHandler &mg_dof_handler, - std::vector > &non_interface_dofs); + std::vector > &non_interface_dofs); } /* @} */ diff --cc deal.II/source/dofs/dof_renumbering.cc index 4b26224d44,8037b4dd15..17c8a78438 --- a/deal.II/source/dofs/dof_renumbering.cc +++ b/deal.II/source/dofs/dof_renumbering.cc @@@ -2,7 -2,7 +2,7 @@@ // $Id$ // Version: $name$ // --// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors ++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer diff --cc deal.II/source/multigrid/CMakeLists.txt index 56ff1463d6,0000000000..e75b9af462 mode 100644,000000..100644 --- a/deal.II/source/multigrid/CMakeLists.txt +++ b/deal.II/source/multigrid/CMakeLists.txt @@@ -1,37 -1,0 +1,36 @@@ +##### +## - ## Copyright (C) 2012 by the deal.II authors ++## Copyright (C) 2012, 2013 by the deal.II authors +## +## This file is part of the deal.II library. +## +## +## This file is dual licensed under QPL 1.0 and LGPL 2.1 or any later +## version of the LGPL license. +## +## Author: Matthias Maier +## +##### + +SET(src + mg_base.cc - mg_dof_accessor.cc + mg_dof_handler.cc + mg_tools.cc + mg_transfer_block.cc + mg_transfer_component.cc + mg_transfer_prebuilt.cc + multigrid.cc + ) + +SET(inst_in_files - mg_dof_accessor.inst.in ++ mg_base.inst.in + mg_dof_handler.inst.in + mg_tools.inst.in + mg_transfer_block.inst.in + mg_transfer_component.inst.in + mg_transfer_prebuilt.inst.in ++ multigrid.inst.in + ) + +DEAL_II_ADD_LIBRARY(obj_multigrid OBJECT ${src}) +EXPAND_INSTANTIATIONS(obj_multigrid "${inst_in_files}") - diff --cc deal.II/source/multigrid/mg_dof_handler.cc index 351811a180,5f80897d8f..0d0e84c53a --- a/deal.II/source/multigrid/mg_dof_handler.cc +++ b/deal.II/source/multigrid/mg_dof_handler.cc @@@ -2,7 -2,7 +2,7 @@@ // $Id$ // Version: $Name$ // --// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012 by the deal.II authors ++// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer diff --cc deal.II/source/multigrid/mg_tools.cc index 9340a2e982,ce14f7e9fd..f76c2f8f64 --- a/deal.II/source/multigrid/mg_tools.cc +++ b/deal.II/source/multigrid/mg_tools.cc @@@ -2,7 -2,7 +2,7 @@@ // $Id$ // Version: $Name$ // --// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors ++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer diff --cc deal.II/source/multigrid/mg_transfer_prebuilt.cc index 2388b8d984,5d834c3e96..933db2ba1b --- a/deal.II/source/multigrid/mg_transfer_prebuilt.cc +++ b/deal.II/source/multigrid/mg_transfer_prebuilt.cc @@@ -1,7 -1,7 +1,7 @@@ //--------------------------------------------------------------------------- // $Id$ // --// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 by the deal.II authors ++// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer