From 57969a9ca79cd4d9cf5a2efae7345e920b2fa1a8 Mon Sep 17 00:00:00 2001
From: heltai
Date: Thu, 14 Nov 2013 16:20:41 +0000
Subject: [PATCH] Merged from trunk.
git-svn-id: https://svn.dealii.org/branches/branch_manifold_id@31657 0785d39b-7218-0410-832d-ea1e28bc413d
---
deal.II/LICENSE | 8 +-
deal.II/README | 1 +
.../cmake/checks/check_03_compiler_bugs.cmake | 31 +-
deal.II/cmake/config/CMakeLists.txt | 52 +-
.../cmake/configure/configure_1_lapack.cmake | 6 +-
deal.II/cmake/configure/configure_1_mpi.cmake | 12 +-
.../cmake/configure/configure_1_threads.cmake | 6 +-
.../configure/configure_2_trilinos.cmake | 8 +-
.../cmake/configure/configure_3_petsc.cmake | 6 +-
deal.II/cmake/configure/configure_boost.cmake | 49 +-
deal.II/cmake/configure/configure_hdf5.cmake | 12 +-
deal.II/cmake/configure/configure_mumps.cmake | 10 +-
deal.II/cmake/configure/configure_p4est.cmake | 11 +-
deal.II/cmake/configure/configure_slepc.cmake | 11 +-
.../macros/macro_configure_feature.cmake | 18 +-
.../macro_deal_ii_append_libraries.cmake | 47 -
.../macro_deal_ii_invoke_autopilot.cmake | 2 +-
deal.II/cmake/macros/macro_pickup_tests.cmake | 6 +-
.../cmake/macros/macro_register_feature.cmake | 99 +
deal.II/cmake/modules/FindDEALII_LAPACK.cmake | 20 +-
deal.II/cmake/modules/FindHDF5.cmake | 2 +-
deal.II/cmake/modules/FindPETSC.cmake | 12 +
deal.II/cmake/setup_finalize.cmake | 15 +-
deal.II/contrib/mesh_conversion/README.txt | 10 +
.../mesh_conversion/mesh/2d/2d_test.cub | Bin
.../mesh_conversion/mesh/2d/2d_test.inp | 0
.../mesh_conversion/mesh/2d/2d_test.ucd | 0
.../contrib/mesh_conversion/mesh/2d/quad.cub | Bin
.../contrib/mesh_conversion/mesh/2d/quad.inp | 0
.../contrib/mesh_conversion/mesh/2d/quad.ucd | 0
.../contrib/mesh_conversion/mesh/3d/CC.cub | Bin
.../mesh_conversion/mesh/3d/CC_cubit_new.inp | 0
.../mesh_conversion/mesh/3d/CC_cubit_new.ucd | 0
.../mesh_conversion/mesh/3d/CC_cubit_old.inp | 0
.../mesh_conversion/mesh/3d/CC_cubit_old.ucd | 0
.../mesh_conversion/mesh/3d/test_cube_1.cub | Bin
.../mesh_conversion/mesh/3d/test_cube_1.inp | 0
.../mesh_conversion/mesh/3d/test_cube_1.ucd | 0
.../mesh/3d/test_cube_pave_1.cub | Bin
.../mesh/3d/test_cube_pave_1.inp | 0
.../mesh/3d/test_cube_pave_1.ucd | 0
.../mesh/3d/test_cube_two_materials.cub | Bin
.../mesh/3d/test_cube_two_materials.inp | 0
.../mesh/3d/test_cube_two_materials.ucd | 0
deal.II/doc/README.doc | 12 +-
deal.II/doc/doxygen/doxygen.sty | 63 -
deal.II/doc/doxygen/options.dox.in | 1089 +--
deal.II/doc/news/changes.h | 21 +
deal.II/doc/news/news.html | 11 +
deal.II/doc/readme.html | 15 +-
deal.II/doc/reports/assemble/assemble.pdf | Bin 157955 -> 0 bytes
deal.II/doc/reports/assemble/assemble.ps | 4785 ----------
deal.II/doc/reports/assemble/assemble.tex | 948 --
.../doc/reports/class-hierarchies/1d-dof.eps | 183 -
.../doc/reports/class-hierarchies/1d-dof.fig | 28 -
.../doc/reports/class-hierarchies/1d-dof.jpg | Bin 15493 -> 0 bytes
.../doc/reports/class-hierarchies/1d-tria.eps | 170 -
.../doc/reports/class-hierarchies/1d-tria.fig | 23 -
.../doc/reports/class-hierarchies/1d-tria.jpg | Bin 12894 -> 0 bytes
.../doc/reports/class-hierarchies/2d-dof.eps | 203 -
.../doc/reports/class-hierarchies/2d-dof.fig | 42 -
.../doc/reports/class-hierarchies/2d-dof.jpg | Bin 21207 -> 0 bytes
.../doc/reports/class-hierarchies/2d-tria.eps | 181 -
.../doc/reports/class-hierarchies/2d-tria.fig | 28 -
.../doc/reports/class-hierarchies/2d-tria.jpg | Bin 16183 -> 0 bytes
.../doc/reports/class-hierarchies/3d-dof.eps | 219 -
.../doc/reports/class-hierarchies/3d-dof.fig | 54 -
.../doc/reports/class-hierarchies/3d-dof.jpg | Bin 26375 -> 0 bytes
.../doc/reports/class-hierarchies/3d-tria.eps | 193 -
.../doc/reports/class-hierarchies/3d-tria.fig | 33 -
.../doc/reports/class-hierarchies/3d-tria.jpg | Bin 18796 -> 0 bytes
.../doc/reports/class-hierarchies/index.html | 996 ---
.../desimone-heltai-manigrasso.pdf | Bin 353922 -> 0 bytes
deal.II/doc/reports/index.html | 19 +-
deal.II/doc/reports/mapping_q/img1.gif | Bin 142 -> 0 bytes
deal.II/doc/reports/mapping_q/img10.gif | Bin 489 -> 0 bytes
deal.II/doc/reports/mapping_q/img11.gif | Bin 215 -> 0 bytes
deal.II/doc/reports/mapping_q/img12.gif | Bin 355 -> 0 bytes
deal.II/doc/reports/mapping_q/img13.gif | Bin 1165 -> 0 bytes
deal.II/doc/reports/mapping_q/img14.gif | Bin 399 -> 0 bytes
deal.II/doc/reports/mapping_q/img15.gif | Bin 659 -> 0 bytes
deal.II/doc/reports/mapping_q/img16.gif | Bin 479 -> 0 bytes
deal.II/doc/reports/mapping_q/img17.gif | Bin 1317 -> 0 bytes
deal.II/doc/reports/mapping_q/img18.gif | Bin 204 -> 0 bytes
deal.II/doc/reports/mapping_q/img19.gif | Bin 1142 -> 0 bytes
deal.II/doc/reports/mapping_q/img2.gif | Bin 184 -> 0 bytes
deal.II/doc/reports/mapping_q/img20.gif | Bin 215 -> 0 bytes
deal.II/doc/reports/mapping_q/img21.gif | Bin 1035 -> 0 bytes
deal.II/doc/reports/mapping_q/img22.gif | Bin 651 -> 0 bytes
deal.II/doc/reports/mapping_q/img23.gif | Bin 1618 -> 0 bytes
deal.II/doc/reports/mapping_q/img24.gif | Bin 1832 -> 0 bytes
deal.II/doc/reports/mapping_q/img25.gif | Bin 2240 -> 0 bytes
deal.II/doc/reports/mapping_q/img26.gif | Bin 2727 -> 0 bytes
deal.II/doc/reports/mapping_q/img27.gif | Bin 257 -> 0 bytes
deal.II/doc/reports/mapping_q/img28.gif | Bin 859 -> 0 bytes
deal.II/doc/reports/mapping_q/img29.gif | Bin 499 -> 0 bytes
deal.II/doc/reports/mapping_q/img3.gif | Bin 215 -> 0 bytes
deal.II/doc/reports/mapping_q/img30.gif | Bin 830 -> 0 bytes
deal.II/doc/reports/mapping_q/img31.gif | Bin 1087 -> 0 bytes
deal.II/doc/reports/mapping_q/img32.gif | Bin 1634 -> 0 bytes
deal.II/doc/reports/mapping_q/img33.gif | Bin 181 -> 0 bytes
deal.II/doc/reports/mapping_q/img34.gif | Bin 493 -> 0 bytes
deal.II/doc/reports/mapping_q/img35.gif | Bin 1445 -> 0 bytes
deal.II/doc/reports/mapping_q/img36.gif | Bin 440 -> 0 bytes
deal.II/doc/reports/mapping_q/img37.gif | Bin 628 -> 0 bytes
deal.II/doc/reports/mapping_q/img38.gif | Bin 1566 -> 0 bytes
deal.II/doc/reports/mapping_q/img39.gif | Bin 1989 -> 0 bytes
deal.II/doc/reports/mapping_q/img4.gif | Bin 615 -> 0 bytes
deal.II/doc/reports/mapping_q/img40.gif | Bin 2373 -> 0 bytes
deal.II/doc/reports/mapping_q/img41.gif | Bin 2200 -> 0 bytes
deal.II/doc/reports/mapping_q/img42.gif | Bin 841 -> 0 bytes
deal.II/doc/reports/mapping_q/img43.gif | Bin 748 -> 0 bytes
deal.II/doc/reports/mapping_q/img44.gif | Bin 1616 -> 0 bytes
deal.II/doc/reports/mapping_q/img45.gif | Bin 1817 -> 0 bytes
deal.II/doc/reports/mapping_q/img46.gif | Bin 2334 -> 0 bytes
deal.II/doc/reports/mapping_q/img47.gif | Bin 1474 -> 0 bytes
deal.II/doc/reports/mapping_q/img48.gif | Bin 1113 -> 0 bytes
deal.II/doc/reports/mapping_q/img49.gif | Bin 1253 -> 0 bytes
deal.II/doc/reports/mapping_q/img5.gif | Bin 352 -> 0 bytes
deal.II/doc/reports/mapping_q/img50.gif | Bin 5594 -> 0 bytes
deal.II/doc/reports/mapping_q/img51.gif | Bin 1318 -> 0 bytes
deal.II/doc/reports/mapping_q/img6.gif | Bin 386 -> 0 bytes
deal.II/doc/reports/mapping_q/img7.gif | Bin 291 -> 0 bytes
deal.II/doc/reports/mapping_q/img8.gif | Bin 184 -> 0 bytes
deal.II/doc/reports/mapping_q/img9.gif | Bin 511 -> 0 bytes
deal.II/doc/reports/mapping_q/index.html | 867 --
deal.II/doc/reports/nedelec/nedelec.pdf | Bin 340393 -> 0 bytes
deal.II/doc/reports/nedelec/nedelec.ps | 7851 -----------------
deal.II/doc/reports/new-threads/index.html | 1059 ---
deal.II/examples/README.example | 4 +
deal.II/examples/step-25/doc/animate.sh | 22 +-
deal.II/examples/step-42/step-42.cc | 2 +-
deal.II/include/deal.II/base/graph_coloring.h | 725 +-
.../include/deal.II/base/parameter_handler.h | 1 -
.../include/deal.II/base/thread_management.h | 151 +-
deal.II/include/deal.II/base/work_stream.h | 1651 ++--
.../include/deal.II/dofs/dof_renumbering.h | 704 +-
deal.II/include/deal.II/grid/tria.h | 33 +-
.../include/deal.II/lac/block_sparse_matrix.h | 7 +-
deal.II/include/deal.II/lac/sparse_matrix.h | 18 +-
deal.II/source/CMakeLists.txt | 4 +
deal.II/source/base/data_out_base.cc | 32 +-
deal.II/source/base/data_out_base.inst.in | 3 +
deal.II/source/base/multithread_info.cc | 5 +-
deal.II/source/dofs/dof_renumbering.inst.in | 9 +-
deal.II/source/dummy.cc | 2 +-
deal.II/source/lac/trilinos_sparse_matrix.cc | 9 +
deal.II/tests/CMakeLists.txt | 4 +-
.../tests/mesh_converter/meshes/README.txt | 66 +
deal.II/tests/quick_tests/CMakeLists.txt | 10 +
deal.II/tests/quick_tests/step-petsc.cc | 220 +
deal.II/tests/quick_tests/step-slepc.cc | 239 +
152 files changed, 2647 insertions(+), 20821 deletions(-)
delete mode 100644 deal.II/cmake/macros/macro_deal_ii_append_libraries.cmake
create mode 100644 deal.II/cmake/macros/macro_register_feature.cmake
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/2d_test.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/2d_test.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/2d_test.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/quad.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/quad.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/2d/quad.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/CC.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.ucd
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.cub
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.inp
mode change 100755 => 100644 deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.ucd
delete mode 100644 deal.II/doc/doxygen/doxygen.sty
delete mode 100644 deal.II/doc/reports/assemble/assemble.pdf
delete mode 100644 deal.II/doc/reports/assemble/assemble.ps
delete mode 100644 deal.II/doc/reports/assemble/assemble.tex
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-dof.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-dof.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-dof.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-tria.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-tria.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/1d-tria.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-dof.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-dof.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-dof.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-tria.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-tria.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/2d-tria.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-dof.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-dof.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-dof.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-tria.eps
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-tria.fig
delete mode 100644 deal.II/doc/reports/class-hierarchies/3d-tria.jpg
delete mode 100644 deal.II/doc/reports/class-hierarchies/index.html
delete mode 100644 deal.II/doc/reports/codimension-one/desimone-heltai-manigrasso.pdf
delete mode 100644 deal.II/doc/reports/mapping_q/img1.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img10.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img11.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img12.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img13.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img14.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img15.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img16.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img17.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img18.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img19.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img2.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img20.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img21.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img22.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img23.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img24.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img25.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img26.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img27.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img28.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img29.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img3.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img30.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img31.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img32.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img33.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img34.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img35.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img36.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img37.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img38.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img39.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img4.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img40.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img41.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img42.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img43.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img44.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img45.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img46.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img47.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img48.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img49.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img5.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img50.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img51.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img6.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img7.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img8.gif
delete mode 100644 deal.II/doc/reports/mapping_q/img9.gif
delete mode 100644 deal.II/doc/reports/mapping_q/index.html
delete mode 100644 deal.II/doc/reports/nedelec/nedelec.pdf
delete mode 100644 deal.II/doc/reports/nedelec/nedelec.ps
delete mode 100644 deal.II/doc/reports/new-threads/index.html
create mode 100644 deal.II/examples/README.example
create mode 100644 deal.II/tests/mesh_converter/meshes/README.txt
create mode 100644 deal.II/tests/quick_tests/step-petsc.cc
create mode 100644 deal.II/tests/quick_tests/step-slepc.cc
diff --git a/deal.II/LICENSE b/deal.II/LICENSE
index 8b89d07dc6..4ef81d521a 100644
--- a/deal.II/LICENSE
+++ b/deal.II/LICENSE
@@ -12,10 +12,10 @@ License as published by the Free Software Foundation; either version
The full text of the GNU Lesser General Public version 2.1 is quoted
below.
-The subdirectory "bundled/" is not licensed by the deal.II authors. PLEASE
-NOTE THAT THE SOFTWARE THERE IS COPYRIGHTED BY OTHERS THAN THE deal.II
-AUTHORS, but is included by permission. For details, consult the stated
-licenses there.
+The subdirectories "bundled/" and "contrib/" contain third party software.
+PLEASE NOTE THAT THE SOFTWARE THERE IS COPYRIGHTED BY OTHERS THAN THE
+deal.II AUTHORS, but is included by permission. For details, consult the
+stated licenses there.
----------------------------------------------------------------------
diff --git a/deal.II/README b/deal.II/README
index 3d878e4de0..c88147149a 100644
--- a/deal.II/README
+++ b/deal.II/README
@@ -13,6 +13,7 @@ For the impatient:
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/path/where/deal.II/should/be/intalled/to ..
$ make install (alternatively $ make -j install)
+ $ make test
A detailed ReadME can be found at ./doc/readme.html and
./doc/users/cmake.html or at http://www.dealii.org/.
diff --git a/deal.II/cmake/checks/check_03_compiler_bugs.cmake b/deal.II/cmake/checks/check_03_compiler_bugs.cmake
index f2cc702cb0..a31f9f4824 100644
--- a/deal.II/cmake/checks/check_03_compiler_bugs.cmake
+++ b/deal.II/cmake/checks/check_03_compiler_bugs.cmake
@@ -314,15 +314,42 @@ CHECK_CXX_COMPILER_BUG(
"
DEAL_II_ICC_NUMERICLIMITS_BUG)
-IF(DEAL_II_ICC_NUMERICLIMITS_BUG)
+#
+# icc-14.0.0 has an astonishing bug [1] where it hits an internal compiler
+# error when run in C++11 mode with libstdc++-4.7 (from gcc).
+#
+# We just disable C++11 mode in this case
+#
+# [1] http://software.intel.com/en-us/forums/topic/472385
+#
+# - Matthias Maier, 2013
+#
+CHECK_CXX_COMPILER_BUG(
+ "
+ #include
+ template void foo()
+ {
+ std::vector data(100);
+ }
+ int main()
+ {
+ foo();
+ }
+ "
+ DEAL_II_ICC_LIBSTDCPP47CXX11_BUG)
+
+
+IF( DEAL_II_ICC_NUMERICLIMITS_BUG OR
+ DEAL_II_ICC_LIBSTDCPP47CXX11_BUG )
MESSAGE(STATUS
- "DEAL_II_ICC_NUMERICLIMITS_BUG found, disabling c++11 support"
+ "Intel C++11 bug found, disabling C++11 support"
)
STRIP_FLAG(CMAKE_CXX_FLAGS "${DEAL_II_CXX11_FLAG}")
SET(DEAL_II_CAN_USE_CXX1X FALSE)
SET(DEAL_II_USE_CXX11 FALSE)
ENDIF()
+
#
# gcc-4.8.1 has some problems with the constexpr "vertices_per_cell" in the
# definition of alternating_form_at_vertices.
diff --git a/deal.II/cmake/config/CMakeLists.txt b/deal.II/cmake/config/CMakeLists.txt
index 8f21d7981e..d6b3bb2a89 100644
--- a/deal.II/cmake/config/CMakeLists.txt
+++ b/deal.II/cmake/config/CMakeLists.txt
@@ -173,7 +173,6 @@ CONFIGURE_FILE(
${CMAKE_CURRENT_BINARY_DIR}/${DEAL_II_PROJECT_CONFIG_NAME}ConfigVersion.cmake
@ONLY
)
-
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${DEAL_II_PROJECT_CONFIG_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${DEAL_II_PROJECT_CONFIG_NAME}ConfigVersion.cmake
@@ -219,6 +218,7 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES)
#
FOREACH(build ${DEAL_II_BUILD_TYPES})
+
TO_STRING_AND_ADD_PREFIX(MAKEFILE_DEFINITIONS_${build}
"-D"
${DEAL_II_USER_DEFINITIONS}
@@ -228,14 +228,16 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES)
#
# Ideally, DEAL_II_EXTERNAL_LIBRARIES should just contain a list of
# full library paths. Nevertheless, filter out all elements that are
- # not a full path starting with "/".
+ # not a full path starting with "/" or that happen to be a "framework"
+ # - we won't deal with that in Make.global_options.
#
+
SET(_libs)
FOREACH(_lib
${DEAL_II_EXTERNAL_LIBRARIES_${build}}
${DEAL_II_EXTERNAL_LIBRARIES}
)
- IF(_lib MATCHES "^\\s*/")
+ IF(_lib MATCHES "^\\s*\\/" AND NOT _lib MATCHES "\\.framework$")
LIST(APPEND _libs "${_lib}")
ENDIF()
ENDFOREACH()
@@ -245,8 +247,6 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES)
${_libs}
)
- MESSAGE("\n\nDEBUG:")
-
SET(_paths)
FOREACH(_lib
$(D)/${DEAL_II_LIBRARY_RELDIR}/${CONFIG_LIBRARY_${build}}
@@ -257,36 +257,48 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES)
#
# Strip leading and trailing whitespace
#
- MESSAGE("--> \"${_lib}\"")
STRING(STRIP "${_lib}" _lib)
- MESSAGE(" stripped: \"${_lib}\"")
- IF(_lib MATCHES "^(/|\\$\\(D\\))")
- # Full path: /path/to/libfoo.so:
+ IF(_lib MATCHES "^\\/.*\\.framework$")
+ #
+ # We have a MacOSX framework
+ #
+ # TODO: What do?
+ #
+
+ ELSEIF(_lib MATCHES "^(\\/|\\$\\(D\\))")
+ #
+ # Full path: /path/to/libfoo.(so|dylib|etc):
+ #
# Extract library paths:
GET_FILENAME_COMPONENT(_path ${_lib} PATH)
LIST(APPEND _paths ${_path})
- MESSAGE(" appended: \"${_lib}\"")
LIST(APPEND MAKEFILE_LIBS_${build} ${_lib})
- ELSEIF(_lib MATCHES "^-")
- # Library is of the form "-lflag", don't touch it:
- MESSAGE(" appended: \"${_lib}\"")
+ ELSEIF(_lib MATCHES "^-l")
+ #
+ # Library is of the form "-lfoo":
+ #
LIST(APPEND MAKEFILE_LIBS_${build} ${_lib})
- ELSEIF(NOT "${_lib}" STREQUAL "")
- # Well in this case we just assume that we have to append an "-l"
- # Note: This won't cover case where a relative library name, such as
- # libfoo.so, libfoo.dylib, etc. is specified...
- MESSAGE(" appended: \"-l${_lib}\"")
+ ELSEIF(NOT _lib MATCHES "^\\s*$" AND NOT _lib MATCHES "\\.so(\\.[0-9]+)*$")
+ #
+ # Well in this case we just assume that we have to append a "-l"
+ #
+
LIST(APPEND MAKEFILE_LIBS_${build} "-l${_lib}")
+ ELSE()
+ #
+ # For now, ignore the rest.
+ #
+ # TODO: What do?
+ #
ENDIF()
- ENDFOREACH()
-# MESSAGE(FATAL_ERROR "bailout")
+ ENDFOREACH()
#
# And build up an rpath:
diff --git a/deal.II/cmake/configure/configure_1_lapack.cmake b/deal.II/cmake/configure/configure_1_lapack.cmake
index 7c64e0dbe9..ede31c24ba 100644
--- a/deal.II/cmake/configure/configure_1_lapack.cmake
+++ b/deal.II/cmake/configure/configure_1_lapack.cmake
@@ -79,12 +79,8 @@ MACRO(RESET_LAPACK_FUNCTIONS_CACHE)
ENDMACRO()
-
MACRO(FEATURE_LAPACK_CONFIGURE_EXTERNAL)
-
- ADD_FLAGS(DEAL_II_LINKER_FLAGS "${LAPACK_LINKER_FLAGS}")
- DEAL_II_APPEND_LIBRARIES(${LAPACK_LIBRARIES})
-
+ REGISTER_FEATURE(LAPACK)
CHECK_FOR_LAPACK_FUNCTIONS()
ENDMACRO()
diff --git a/deal.II/cmake/configure/configure_1_mpi.cmake b/deal.II/cmake/configure/configure_1_mpi.cmake
index cd92d2707c..647ea4a81c 100644
--- a/deal.II/cmake/configure/configure_1_mpi.cmake
+++ b/deal.II/cmake/configure/configure_1_mpi.cmake
@@ -143,14 +143,12 @@ ENDMACRO()
MACRO(FEATURE_MPI_CONFIGURE_EXTERNAL)
- ADD_FLAGS(CMAKE_CXX_FLAGS "${MPI_CXX_COMPILE_FLAGS}")
- ADD_FLAGS(DEAL_II_LINKER_FLAGS "${MPI_CXX_LINK_FLAGS}")
-
- DEAL_II_APPEND_LIBRARIES(${MPI_CXX_LIBRARIES})
- INCLUDE_DIRECTORIES(${MPI_CXX_INCLUDE_PATH})
-
+ #
# The user has to know the location of the mpi headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${MPI_CXX_INCLUDE_PATH})
+ #
+ SET(MPI_CXX_ADD_TO_USER_INCLUDE_DIRS TRUE)
+
+ REGISTER_FEATURE(MPI_CXX)
ENDMACRO()
diff --git a/deal.II/cmake/configure/configure_1_threads.cmake b/deal.II/cmake/configure/configure_1_threads.cmake
index 52e16e0ab8..da49c2eb24 100644
--- a/deal.II/cmake/configure/configure_1_threads.cmake
+++ b/deal.II/cmake/configure/configure_1_threads.cmake
@@ -151,9 +151,8 @@ ENDMACRO()
MACRO(FEATURE_THREADS_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${TBB_INCLUDE_DIR})
- DEAL_II_APPEND_LIBRARIES(${TBB_LIBRARIES})
+ REGISTER_FEATURE(TBB)
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
IF(TBB_WITH_DEBUG_LIB)
@@ -161,7 +160,6 @@ MACRO(FEATURE_THREADS_CONFIGURE_EXTERNAL)
"TBB_USE_DEBUG=1" "TBB_DO_ASSERT=1"
)
ENDIF()
-
ENDIF()
#
@@ -217,7 +215,7 @@ MACRO(FEATURE_THREADS_CONFIGURE_BUNDLED)
FIND_LIBRARY(dl_LIBRARY NAMES dl)
MARK_AS_ADVANCED(dl_LIBRARY)
IF(NOT dl_LIBRARY MATCHES "-NOTFOUND")
- DEAL_II_APPEND_LIBRARIES(${dl_LIBRARY})
+ LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES ${dl_LIBRARY})
ENDIF()
INCLUDE_DIRECTORIES(${TBB_FOLDER}/include)
diff --git a/deal.II/cmake/configure/configure_2_trilinos.cmake b/deal.II/cmake/configure/configure_2_trilinos.cmake
index 6693073042..0060efb50b 100644
--- a/deal.II/cmake/configure/configure_2_trilinos.cmake
+++ b/deal.II/cmake/configure/configure_2_trilinos.cmake
@@ -195,12 +195,8 @@ ENDMACRO()
MACRO(FEATURE_TRILINOS_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${TRILINOS_INCLUDE_DIRS})
-
- # The user has to know the location of the trilinos headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${TRILINOS_INCLUDE_DIRS})
-
- DEAL_II_APPEND_LIBRARIES(${TRILINOS_LIBRARIES})
+ SET(TRILINOS_ADD_TO_USER_INCLUDE_DIRS TRUE)
+ REGISTER_FEATURE(TRILINOS)
SET(DEAL_II_EXPAND_TRILINOS_VECTOR "TrilinosWrappers::Vector")
SET(DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR "TrilinosWrappers::BlockVector")
diff --git a/deal.II/cmake/configure/configure_3_petsc.cmake b/deal.II/cmake/configure/configure_3_petsc.cmake
index c1c71a4a83..3627e7c49c 100644
--- a/deal.II/cmake/configure/configure_3_petsc.cmake
+++ b/deal.II/cmake/configure/configure_3_petsc.cmake
@@ -114,10 +114,8 @@ ENDMACRO()
MACRO(FEATURE_PETSC_CONFIGURE_EXTERNAL)
INCLUDE_DIRECTORIES(${PETSC_INCLUDE_DIRS})
- # The user has to know the location of the petsc headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${PETSC_INCLUDE_DIRS})
-
- DEAL_II_APPEND_LIBRARIES(${PETSC_LIBRARIES})
+ SET(PETSC_ADD_TO_USER_INCLUDE_DIRS TRUE)
+ REGISTER_FEATURE(PETSC)
#
# Disable a bunch of warnings when compiling with petsc:
diff --git a/deal.II/cmake/configure/configure_boost.cmake b/deal.II/cmake/configure/configure_boost.cmake
index b6ed7c3b2c..9571fe9b0e 100644
--- a/deal.II/cmake/configure/configure_boost.cmake
+++ b/deal.II/cmake/configure/configure_boost.cmake
@@ -74,21 +74,33 @@ MACRO(FEATURE_BOOST_FIND_EXTERNAL var)
MARK_AS_ADVANCED(Boost_DIR)
- SET(BOOST_VERSION_MAJOR "${Boost_MAJOR_VERSION}")
- SET(BOOST_VERSION_MINOR "${Boost_MINOR_VERSION}")
- SET(BOOST_VERSION_SUBMINOR "${Boost_SUBMINOR_VERSION}")
- SET(BOOST_VERSION
- "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}"
- )
-
IF( Boost_SERIALIZATION_FOUND AND
Boost_SYSTEM_FOUND AND
- (NOT DEAL_II_WITH_THREADS OR Boost_THREAD_FOUND)
- )
+ (NOT DEAL_II_WITH_THREADS OR Boost_THREAD_FOUND) )
+
+ SET(BOOST_VERSION_MAJOR "${Boost_MAJOR_VERSION}")
+ SET(BOOST_VERSION_MINOR "${Boost_MINOR_VERSION}")
+ SET(BOOST_VERSION_SUBMINOR "${Boost_SUBMINOR_VERSION}")
+ SET(BOOST_VERSION
+ "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}"
+ )
+
+ #
+ # Remove "pthread" from Boost_LIBRARIES. Threading, if necessary, is
+ # already set up via configure_1_threads.cmake.
+ #
+ LIST(REMOVE_ITEM Boost_LIBRARIES "pthread")
+
+ SET(BOOST_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
+ SET(BOOST_LIBRARIES ${Boost_LIBRARIES})
+
MARK_AS_ADVANCED(BOOST_DIR)
+
SET(${var} TRUE)
+
ELSE()
+
SET(BOOST_DIR "" CACHE PATH
"An optional hint to a boost directory"
)
@@ -96,21 +108,10 @@ MACRO(FEATURE_BOOST_FIND_EXTERNAL var)
ENDMACRO()
-MACRO(FEATURE_BOOST_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
-
- # The user has to know the location of the boost headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
-
- #
- # Remove "pthread" from Boost_LIBRARIES. Threading, if necessary, is
- # already set up via configure_1_threads.cmake.
- #
- LIST(REMOVE_ITEM Boost_LIBRARIES "pthread")
-
- DEAL_II_APPEND_LIBRARIES(${Boost_LIBRARIES})
-
-ENDMACRO()
+#
+# The user has to know the location of the boost headers as well:
+#
+SET(BOOST_ADD_TO_USER_INCLUDE_DIRS TRUE)
MACRO(FEATURE_BOOST_CONFIGURE_BUNDLED)
diff --git a/deal.II/cmake/configure/configure_hdf5.cmake b/deal.II/cmake/configure/configure_hdf5.cmake
index a5a40a255a..81e71ceffa 100644
--- a/deal.II/cmake/configure/configure_hdf5.cmake
+++ b/deal.II/cmake/configure/configure_hdf5.cmake
@@ -47,14 +47,10 @@ MACRO(FEATURE_HDF5_FIND_EXTERNAL var)
ENDMACRO()
-MACRO(FEATURE_HDF5_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIRS})
-
- # The user has to know the location of the HDF5 headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
-
- DEAL_II_APPEND_LIBRARIES(${HDF5_LIBRARIES})
-ENDMACRO()
+#
+# The user has to know the location of the hdf5 headers as well:
+#
+SET(HDF5_ADD_TO_USER_INCLUDE_DIRS TRUE)
CONFIGURE_FEATURE(HDF5)
diff --git a/deal.II/cmake/configure/configure_mumps.cmake b/deal.II/cmake/configure/configure_mumps.cmake
index 0739098602..4022f98026 100644
--- a/deal.II/cmake/configure/configure_mumps.cmake
+++ b/deal.II/cmake/configure/configure_mumps.cmake
@@ -20,13 +20,11 @@
SET(FEATURE_MUMPS_DEPENDS DEAL_II_WITH_MPI DEAL_II_WITH_LAPACK)
-MACRO(FEATURE_MUMPS_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${MUMPS_INCLUDE_DIRS})
- # The user has to know the location of the MUMPS headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${MUMPS_INCLUDE_DIRS})
+#
+# The user has to know the location of the MUMPS headers as well:
+#
+SET(MUMPS_ADD_TO_USER_INCLUDE_DIRS TRUE)
- DEAL_II_APPEND_LIBRARIES(${MUMPS_LIBRARIES})
-ENDMACRO()
CONFIGURE_FEATURE(MUMPS)
diff --git a/deal.II/cmake/configure/configure_p4est.cmake b/deal.II/cmake/configure/configure_p4est.cmake
index de91ef6ea1..4055c0f30c 100644
--- a/deal.II/cmake/configure/configure_p4est.cmake
+++ b/deal.II/cmake/configure/configure_p4est.cmake
@@ -75,13 +75,10 @@ MACRO(FEATURE_P4EST_FIND_EXTERNAL var)
ENDMACRO()
-MACRO(FEATURE_P4EST_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${P4EST_INCLUDE_DIRS})
-
- # The user has to know the location of the P4EST headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${P4EST_INCLUDE_DIRS})
+#
+# The user has to know the location of the P4est headers as well:
+#
+SET(P4EST_ADD_TO_USER_INCLUDE_DIRS TRUE)
- DEAL_II_APPEND_LIBRARIES(${P4EST_LIBRARIES})
-ENDMACRO()
CONFIGURE_FEATURE(P4EST)
diff --git a/deal.II/cmake/configure/configure_slepc.cmake b/deal.II/cmake/configure/configure_slepc.cmake
index bf5415a0ff..fdb87649d0 100644
--- a/deal.II/cmake/configure/configure_slepc.cmake
+++ b/deal.II/cmake/configure/configure_slepc.cmake
@@ -57,14 +57,11 @@ MACRO(FEATURE_SLEPC_FIND_EXTERNAL var)
ENDIF()
ENDMACRO()
-MACRO(FEATURE_SLEPC_CONFIGURE_EXTERNAL)
- INCLUDE_DIRECTORIES(${SLEPC_INCLUDE_DIRS})
- # The user has to know the location of the SLEPC headers as well:
- LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${SLEPC_INCLUDE_DIRS})
-
- DEAL_II_APPEND_LIBRARIES(${SLEPC_LIBRARIES})
-ENDMACRO()
+#
+# The user has to know the location of the SLEPC headers as well:
+#
+SET(SLEPC_ADD_TO_USER_INCLUDE_DIRS TRUE)
MACRO(FEATURE_SLEPC_ERROR_MESSAGE)
diff --git a/deal.II/cmake/macros/macro_configure_feature.cmake b/deal.II/cmake/macros/macro_configure_feature.cmake
index 0ffbf4fb10..4a35b260fd 100644
--- a/deal.II/cmake/macros/macro_configure_feature.cmake
+++ b/deal.II/cmake/macros/macro_configure_feature.cmake
@@ -134,22 +134,6 @@ MACRO(FEATURE_FIND_EXTERNAL _feature _var)
ENDMACRO()
-#
-# Default macro for basic external setup:
-#
-MACRO(FEATURE_CONFIGURE_EXTERNAL _feature)
- IF(DEFINED ${_feature}_INCLUDE_DIRS)
- INCLUDE_DIRECTORIES(${${_feature}_INCLUDE_DIRS})
- ENDIF()
- IF(DEFINED ${_feature}_LIBRARIES)
- DEAL_II_APPEND_LIBRARIES(${${_feature}_LIBRARIES})
- ENDIF()
- IF(DEFINED ${_feature}_LINKER_FLAGS)
- ADD_FLAGS(DEAL_II_LINKER_FLAGS "${${_feature}_LINKER_FLAGS}")
- ENDIF()
-ENDMACRO()
-
-
########################################################################
# #
# CONFIGURE_FEATURE: #
@@ -249,7 +233,7 @@ MACRO(CONFIGURE_FEATURE _feature)
IF(COMMAND FEATURE_${_feature}_CONFIGURE_EXTERNAL)
RUN_COMMAND("FEATURE_${_feature}_CONFIGURE_EXTERNAL()")
ELSE()
- FEATURE_CONFIGURE_EXTERNAL(${_feature})
+ REGISTER_FEATURE(${_feature})
ENDIF()
MESSAGE(STATUS "DEAL_II_WITH_${_feature} successfully set up with external dependencies.")
diff --git a/deal.II/cmake/macros/macro_deal_ii_append_libraries.cmake b/deal.II/cmake/macros/macro_deal_ii_append_libraries.cmake
deleted file mode 100644
index de291d39b6..0000000000
--- a/deal.II/cmake/macros/macro_deal_ii_append_libraries.cmake
+++ /dev/null
@@ -1,47 +0,0 @@
-## ---------------------------------------------------------------------
-## $Id$
-##
-## Copyright (C) 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.
-##
-## ---------------------------------------------------------------------
-
-#
-# A small macro to add libraries to
-# DEAL_II_EXTERNAL_LIBRARIES
-# DEAL_II_EXTERNAL_LIBRARIES_DEBUG
-# DEAL_II_EXTERNAL_LIBRARIES_RELEASE
-# depending on the "optmized", "debug" or "general" keyword
-#
-# Usage:
-# DEAL_II_APPEND_LIBRARIES()
-#
-
-MACRO(DEAL_II_APPEND_LIBRARIES)
-
- SET(_toggle "general")
- FOREACH(_tmp ${ARGN})
- IF( "${_tmp}" STREQUAL "debug" OR
- "${_tmp}" STREQUAL "optimized" OR
- "${_tmp}" STREQUAL "general" )
- SET(_toggle "${_tmp}")
- ELSE()
- IF("${_toggle}" STREQUAL "general")
- LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES ${_tmp})
- ELSEIF("${_toggle}" STREQUAL "debug")
- LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_DEBUG ${_tmp})
- ELSEIF("${_toggle}" STREQUAL "optimized")
- LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_RELEASE ${_tmp})
- ENDIF()
- ENDIF()
- ENDFOREACH()
-
-ENDMACRO()
diff --git a/deal.II/cmake/macros/macro_deal_ii_invoke_autopilot.cmake b/deal.II/cmake/macros/macro_deal_ii_invoke_autopilot.cmake
index 38c93daec9..29867f93f8 100644
--- a/deal.II/cmake/macros/macro_deal_ii_invoke_autopilot.cmake
+++ b/deal.II/cmake/macros/macro_deal_ii_invoke_autopilot.cmake
@@ -152,7 +152,7 @@ ${_switch_targets}#
# $ make edit_cache - to change (cached) configuration variables
# and rerun the configure and generate phases of CMake
#
-# $ make strip_comments - strip the source files in this
+# $ make strip_comments - to strip the source files in this
# directory off the documentation comments
# $ make clean - to remove the generated executable as well as
# all intermediate compilation files
diff --git a/deal.II/cmake/macros/macro_pickup_tests.cmake b/deal.II/cmake/macros/macro_pickup_tests.cmake
index 2b0ace6afb..1e840dee4a 100644
--- a/deal.II/cmake/macros/macro_pickup_tests.cmake
+++ b/deal.II/cmake/macros/macro_pickup_tests.cmake
@@ -74,12 +74,12 @@ MACRO(DEAL_II_PICKUP_TESTS)
SET(_define_test FALSE)
ENDIF()
ELSE()
- MESSAGE(WARNING "
+ MESSAGE(FATAL_ERROR "
Invalid feature constraint \"${_match}\" in file
\"${_comparison}\":
-The feature \"DEAL_II_${_feature}\" does not exist. Test dropped.\n"
+The feature \"DEAL_II_${_feature}\" does not exist.\n"
)
- SET(_define_test FALSE)
+ #SET(_define_test FALSE)
ENDIF()
ENDFOREACH()
diff --git a/deal.II/cmake/macros/macro_register_feature.cmake b/deal.II/cmake/macros/macro_register_feature.cmake
new file mode 100644
index 0000000000..a4408fe8d9
--- /dev/null
+++ b/deal.II/cmake/macros/macro_register_feature.cmake
@@ -0,0 +1,99 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 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.
+##
+## ---------------------------------------------------------------------
+
+#
+# This macro is used for the feature configuration in deal.II
+#
+# Usage:
+# REGISTER_FEATURE(feature)
+#
+# This macro will
+#
+# - add ${feature}_INCLUDE_DIRS and ${feature}_INCLUDE_PATH
+# to the list of (internal) include
+# directories
+# - and if ${feature}_ADD_TO_USER_INCLUDE_DIRS is defined also to
+# DEAL_II_USER_INCLUDE_DIRS
+#
+# - add ${feature}_LINKER_FLAGS and ${feature}_LINK_FLAGS to
+# DEAL_II_LINKER_FLAGS
+#
+# - add ${feature}_CXX_FLAGS and ${feature}_COMPILE_FLAGS to
+# CMAKE_CXX_FLAGS
+#
+# - add ${feature}_LIBRARIES to the list of deal.II libraries depending
+# on general, optimized or debug keyword
+#
+
+
+MACRO(REGISTER_FEATURE _feature)
+ MESSAGE(STATUS "Register enabled external feature ${_feature}:")
+
+ # variables for include directories:
+ FOREACH(_var ${_feature}_INCLUDE_DIRS ${_feature}_INCLUDE_PATH)
+ IF(DEFINED ${_var})
+ MESSAGE(STATUS " ${_var}")
+ INCLUDE_DIRECTORIES(${${_var}})
+ IF(${_feature}_ADD_TO_USER_INCLUDE_DIRS)
+ LIST(APPEND DEAL_II_USER_INCLUDE_DIRS ${${_var}})
+ ENDIF()
+ ENDIF()
+ ENDFOREACH()
+
+ # variables for linker flags:
+ FOREACH(_var ${_feature}_LINKER_FLAGS ${_feature}_LINK_FLAGS)
+ IF(DEFINED ${_var})
+ MESSAGE(STATUS " ${_var}")
+ ADD_FLAGS(DEAL_II_LINKER_FLAGS "${${_var}}")
+ ENDIF()
+ ENDFOREACH()
+
+ # variables for compiler flags:
+ FOREACH(_var ${_feature}_CXX_FLAGS ${_feature}_COMPILE_FLAGS)
+ IF(DEFINED ${_var})
+ MESSAGE(STATUS " ${_var}")
+ ADD_FLAGS(CMAKE_CXX_FLAGS "${${_var}}")
+ ENDIF()
+ ENDFOREACH()
+
+ IF(DEFINED ${_feature}_LIBRARIES)
+ MESSAGE(STATUS " ${_feature}_LIBRARIES")
+ #
+ # Add ${_feature}_LIBRARIES to
+ # DEAL_II_EXTERNAL_LIBRARIES
+ # DEAL_II_EXTERNAL_LIBRARIES_DEBUG
+ # DEAL_II_EXTERNAL_LIBRARIES_RELEASE
+ # depending on the "optmized", "debug" or "general" keyword
+ #
+ SET(_toggle "general")
+ FOREACH(_tmp ${${_feature}_LIBRARIES})
+ IF( "${_tmp}" STREQUAL "debug" OR
+ "${_tmp}" STREQUAL "optimized" OR
+ "${_tmp}" STREQUAL "general" )
+ SET(_toggle "${_tmp}")
+ ELSE()
+ IF("${_toggle}" STREQUAL "general")
+ LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES ${_tmp})
+ ELSEIF("${_toggle}" STREQUAL "debug")
+ LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_DEBUG ${_tmp})
+ ELSEIF("${_toggle}" STREQUAL "optimized")
+ LIST(APPEND DEAL_II_EXTERNAL_LIBRARIES_RELEASE ${_tmp})
+ ENDIF()
+ ENDIF()
+ ENDFOREACH()
+ ENDIF()
+
+ENDMACRO()
diff --git a/deal.II/cmake/modules/FindDEALII_LAPACK.cmake b/deal.II/cmake/modules/FindDEALII_LAPACK.cmake
index be470cec36..84b6a37d3f 100644
--- a/deal.II/cmake/modules/FindDEALII_LAPACK.cmake
+++ b/deal.II/cmake/modules/FindDEALII_LAPACK.cmake
@@ -114,6 +114,14 @@ IF(LAPACK_FOUND)
ENDFOREACH()
SWITCH_LIBRARY_PREFERENCE()
+ #
+ # Filter out spurious "FALSE" in the library lists:
+ #
+ IF(DEFINED BLAS_LIBRARIES)
+ LIST(REMOVE_ITEM BLAS_LIBRARIES "FALSE")
+ ENDIF()
+ LIST(REMOVE_ITEM LAPACK_LIBRARIES "FALSE")
+
MARK_AS_ADVANCED(
BLAS_DIR
LAPACK_DIR
@@ -130,14 +138,10 @@ ELSE()
)
#
- # If we couldn't find LAPACK, clean up the library variables:
+ # Clean up the library variables in case we couldn't find the libraries
+ # to avoid spurious inclusions of "-NOTFOUND" or "FALSE":
#
-
- IF("${BLAS_LIBRARIES}" STREQUAL "FALSE")
- SET(BLAS_LIBRARIES "")
- ENDIF()
- IF("${LAPACK_LIBRARIES}" STREQUAL "FALSE")
- SET(LAPACK_LIBRARIES "")
- ENDIF()
+ SET(BLAS_LIBRARIES)
+ SET(LAPACK_LIBRARIES)
ENDIF()
diff --git a/deal.II/cmake/modules/FindHDF5.cmake b/deal.II/cmake/modules/FindHDF5.cmake
index fec6194dbe..66417e3c33 100644
--- a/deal.II/cmake/modules/FindHDF5.cmake
+++ b/deal.II/cmake/modules/FindHDF5.cmake
@@ -49,7 +49,7 @@ FIND_LIBRARY(HDF5_HL_LIBRARY NAMES hdf5_hl
lib${LIB_SUFFIX} lib64 lib
)
-FIND_FILE(HDF5_PUBCONF H5pubconf.h
+FIND_FILE(HDF5_PUBCONF NAMES H5pubconf.h H5pubconf-64.h
HINTS
${HDF5_INCLUDE_DIR}
${HDF5_DIR}
diff --git a/deal.II/cmake/modules/FindPETSC.cmake b/deal.II/cmake/modules/FindPETSC.cmake
index 3bd673927c..1a4f3122c4 100644
--- a/deal.II/cmake/modules/FindPETSC.cmake
+++ b/deal.II/cmake/modules/FindPETSC.cmake
@@ -29,6 +29,7 @@
# PETSC_VERSION_PATCH
# PETSC_WITH_MPIUNI
# PETSC_WITH_64BIT_INDICES
+# PETSC_WITH_COMPLEX
#
INCLUDE(FindPackageHandleStandardArgs)
@@ -207,6 +208,17 @@ IF(PETSC_FOUND)
SET(PETSC_WITH_64BIT_INDICES TRUE)
ENDIF()
+ #
+ # Is petsc compiled with support for COMPLEX numbers?
+ #
+ FILE(STRINGS "${PETSC_PETSCCONF_H}" PETSC_COMPLEX_STRING
+ REGEX "#define.*PETSC_USE_COMPLEX 1")
+ IF("${PETSC_COMPLEX_STRING}" STREQUAL "")
+ SET(PETSC_WITH_COMPLEX FALSE)
+ ELSE()
+ SET(PETSC_WITH_COMPLEX TRUE)
+ ENDIF()
+
FILE(STRINGS "${PETSC_PETSCVERSION_H}" PETSC_VERSION_MAJOR_STRING
REGEX "#define.*PETSC_VERSION_MAJOR")
STRING(REGEX REPLACE "^.*PETSC_VERSION_MAJOR.*([0-9]+).*" "\\1"
diff --git a/deal.II/cmake/setup_finalize.cmake b/deal.II/cmake/setup_finalize.cmake
index 1b3849d7a4..cb01181acf 100644
--- a/deal.II/cmake/setup_finalize.cmake
+++ b/deal.II/cmake/setup_finalize.cmake
@@ -124,10 +124,15 @@ _both(
# ${CMAKE_CXX_COMPILER}
"
)
-_detailed(
-"# CMAKE_GENERATOR: ${CMAKE_GENERATOR}
-"
- )
+
+IF(CMAKE_C_COMPILER_WORKS)
+ _detailed("# CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}\n")
+ENDIF()
+IF(CMAKE_Fortran_COMPILER_WORKS)
+ _detailed("# CMAKE_Fortran_COMPILER: ${CMAKE_Fortran_COMPILER}\n")
+ENDIF()
+_detailed("# CMAKE_GENERATOR: ${CMAKE_GENERATOR}\n")
+
IF(CMAKE_CROSSCOMPILING)
_both(
"#\n# CROSSCOMPILING!\n"
@@ -226,7 +231,7 @@ FOREACH(_var ${_features})
IF( # MPI:
_var2 MATCHES "^${_feature}_CXX_(COMPILER|COMPILE_FLAGS|LINK_FLAGS|LIBRARIES|INCLUDE_PATH)$" OR
# Boost:
- ( _feature MATCHES "BOOST" AND _var2 MATCHES "^Boost_(LIBRARIES|INCLUDE_DIRS)$" ) OR
+ ( _feature MATCHES "BOOST" AND _var2 MATCHES "^BOOST_(LIBRARIES|INCLUDE_DIRS)$" ) OR
# TBB:
( _feature MATCHES "THREADS" AND _var2 MATCHES "^TBB_(LIBRARIES|INCLUDE_DIRS)$" ) OR
# Generic:
diff --git a/deal.II/contrib/mesh_conversion/README.txt b/deal.II/contrib/mesh_conversion/README.txt
index ef00b074b1..10dfeb0360 100644
--- a/deal.II/contrib/mesh_conversion/README.txt
+++ b/deal.II/contrib/mesh_conversion/README.txt
@@ -54,3 +54,13 @@ Copyright:
----------
This program is distributed under the GNU GPL v2.0 copyright. Details can be found at:
http://www.gnu.org/licenses/gpl-2.0.html
+
+This copyright is extended to the example mesh files distributed with this program, namely
+./mesh/2d/2d_test.*
+./mesh/2d/quad.*
+./mesh/3d/CC.*
+./mesh/3d/CC_cubit_new.*
+./mesh/3d/CC_cubit_old.*
+./mesh/3d/test_cube_1.*
+./mesh/3d/test_cube_pave_1.*
+./mesh/3d/test_cube_two_materials.*
\ No newline at end of file
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.cub b/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.inp b/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.ucd b/deal.II/contrib/mesh_conversion/mesh/2d/2d_test.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/quad.cub b/deal.II/contrib/mesh_conversion/mesh/2d/quad.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/quad.inp b/deal.II/contrib/mesh_conversion/mesh/2d/quad.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/2d/quad.ucd b/deal.II/contrib/mesh_conversion/mesh/2d/quad.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/CC.cub b/deal.II/contrib/mesh_conversion/mesh/3d/CC.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.inp b/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.ucd b/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_new.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.inp b/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.ucd b/deal.II/contrib/mesh_conversion/mesh/3d/CC_cubit_old.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.cub b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.inp b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.ucd b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_1.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.cub b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.inp b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.ucd b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_pave_1.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.cub b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.cub
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.inp b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.inp
old mode 100755
new mode 100644
diff --git a/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.ucd b/deal.II/contrib/mesh_conversion/mesh/3d/test_cube_two_materials.ucd
old mode 100755
new mode 100644
diff --git a/deal.II/doc/README.doc b/deal.II/doc/README.doc
index c2b56533b9..b3b1fd0c96 100644
--- a/deal.II/doc/README.doc
+++ b/deal.II/doc/README.doc
@@ -1,13 +1,9 @@
This folder contains the html documentation of deal.II
-With the exception of the content under publications/* and reports/* the
-documentation is covered by the same license as the deal.II library itself,
-namely LGPL-2.1+.
+The documentation is generally covered by the same license as the deal.II
+library itself, namely LGPL-2.1+.
-Unclear license status:
+Exceptions:
- external-libraries/p4est-setup.sh
- doxygen/doxygen.sty
- doxygen/options.dox.in
- reports/*
+ external-libraries/p4est-setup.sh - coming from the p4est project, GPL-2+
diff --git a/deal.II/doc/doxygen/doxygen.sty b/deal.II/doc/doxygen/doxygen.sty
deleted file mode 100644
index 948092592f..0000000000
--- a/deal.II/doc/doxygen/doxygen.sty
+++ /dev/null
@@ -1,63 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{doxygen}
-\RequirePackage{calc}
-\RequirePackage{array}
-\pagestyle{fancyplain}
-\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
-\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
-\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
-\lhead[\fancyplain{}{\bfseries\thepage}]
- {\fancyplain{}{\bfseries\rightmark}}
-\rhead[\fancyplain{}{\bfseries\leftmark}]
- {\fancyplain{}{\bfseries\thepage}}
-\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Jan 11 21:30:49 2006 by doxygen\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Jan 11 21:30:49 2006 by doxygen}}
-\cfoot{}
-\newenvironment{CompactList}
-{\begin{list}{}{
- \setlength{\leftmargin}{0.5cm}
- \setlength{\itemsep}{0pt}
- \setlength{\parsep}{0pt}
- \setlength{\topsep}{0pt}
- \renewcommand{\makelabel}{}}}
-{\end{list}}
-\newenvironment{CompactItemize}
-{
- \begin{itemize}
- \setlength{\itemsep}{-3pt}
- \setlength{\parsep}{0pt}
- \setlength{\topsep}{0pt}
- \setlength{\partopsep}{0pt}
-}
-{\end{itemize}}
-\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
-\newlength{\tmplength}
-\newenvironment{TabularC}[1]
-{
-\setlength{\tmplength}
- {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
- \par\begin{tabular*}{\linewidth}
- {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
-}
-{\end{tabular*}\par}
-\newcommand{\entrylabel}[1]{
- {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}}
-\newenvironment{Desc}
-{\begin{list}{}
- {
- \settowidth{\labelwidth}{40pt}
- \setlength{\leftmargin}{\labelwidth}
- \setlength{\parsep}{0pt}
- \setlength{\itemsep}{-4pt}
- \renewcommand{\makelabel}{\entrylabel}
- }
-}
-{\end{list}}
-\newenvironment{Indent}
- {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
- \item[]\ignorespaces}
- {\unskip\end{list}}
-\setlength{\parindent}{0cm}
-\setlength{\parskip}{0.2cm}
-\addtocounter{secnumdepth}{1}
-\sloppy
-\usepackage[T1]{fontenc}
diff --git a/deal.II/doc/doxygen/options.dox.in b/deal.II/doc/doxygen/options.dox.in
index e30740fbdd..da03da80a6 100644
--- a/deal.II/doc/doxygen/options.dox.in
+++ b/deal.II/doc/doxygen/options.dox.in
@@ -1,996 +1,140 @@
-# Doxyfile 1.3.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
+# This file contains project-specific configurations for the
+# deal.II documentation.
PROJECT_NAME = "The deal.II library"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
PROJECT_NUMBER = "Reference documentation for deal.II version @DEAL_II_PACKAGE_VERSION@"
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
OUTPUT_DIRECTORY = .
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
+# The doxygen documentation says this about the following flag:
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+# We set the flag to NO since we occasionally need to reference individual
+# doxygen-generated files from other parts of the documentation and need
+# to have predictable file paths.
+#
+# The same is true for SHORT_NAMES, which compresses file names, and
+# CASE_SENSE_NAMES which allows file names to contain upper case letters.
CREATE_SUBDIRS = NO
+SHORT_NAMES = NO
+CASE_SENSE_NAMES = YES
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ @CMAKE_BINARY_DIR@
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
TAB_SIZE = 8
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
+BUILTIN_STL_SUPPORT = YES
-SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
SORT_MEMBER_DOCS = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS = YES
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
SHOW_USED_FILES = YES
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command , where is the value of
-# the FILE_VERSION_FILTER tag, and is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
WARN_IF_DOC_ERROR = YES
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text "
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
INPUT =
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
EXCLUDE_PATTERNS = *.templates.h
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
EXAMPLE_PATH = @CMAKE_BINARY_DIR@/doc/doxygen/tutorial \
@CMAKE_SOURCE_DIR@/examples/doxygen
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command). This is overwritten in deal.dox
-
IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command , where
-# is the value of the INPUT_FILTER tag, and is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
INPUT_FILTER = ${CMAKE_SOURCE_DIR}/doc/doxygen/scripts/filter
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
FILTER_SOURCE_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
-# then you must also enable this option. If you don't then doxygen will produce
-# a warning and turn it on anyway
-
SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
VERBATIM_HEADERS = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
COLS_IN_ALPHA_INDEX = 3
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
HTML_OUTPUT = deal.II
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
HTML_HEADER = header.html
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
HTML_FOOTER = footer.html
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
+# don't generate latex output -- it's simply too big!
GENERATE_LATEX = NO
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = LaTeX/deal.II
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
+# but set a few flags for when processing formulas embedded
+# in the documentation.
PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
EXTRA_PACKAGES = amsmath amsfonts
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
LATEX_BATCHMODE = YES
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Other output formats
#---------------------------------------------------------------------------
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
GENERATE_PERLMOD = NO
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
MACRO_EXPANSION = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
INCLUDE_PATH = @CMAKE_SOURCE_DIR@/include/deal.II
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
INCLUDE_FILE_PATTERNS =
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-# [deal.II] Set MT flags so that the corresponding documentation will always
-# be visible, irrespective of whether MT is actually switched on or not. Do
-# the same for a bunch of other external packages as well. Also, define a
-# variable DOXYGEN in order to mask out inline functions
-
+# set a few variables that help us generate documentation for
+# things like the PETSc and Trilinos wrappers, even if they were
+# not configured
PREDEFINED = DOXYGEN=1 \
DEBUG=1 \
DEAL_II_WITH_PETSC=1 \
@@ -1004,227 +148,52 @@ PREDEFINED = DOXYGEN=1 \
DEAL_II_WITH_P4EST=1 \
DEAL_II_WITH_MPI=1
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
+# do not expand exception declarations
EXPAND_AS_DEFINED = DeclException0 \
DeclException1 \
DeclException2 \
DeclException3 \
DeclException4 \
DeclException5
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
GENERATE_TAGFILE = deal.tag
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
HIDE_UNDOC_RELATIONS = NO
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
COLLABORATION_GRAPH = NO
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
CALL_GRAPH = NO
-
-# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
GRAPHICAL_HIERARCHY = NO
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 2
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
+MAX_DOT_GRAPH_DEPTH = 3
DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
GENERATE_LEGEND = YES
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h
index b4eab15de5..b5997b9a33 100644
--- a/deal.II/doc/news/changes.h
+++ b/deal.II/doc/news/changes.h
@@ -94,6 +94,14 @@ inconvenience this causes.
+ - New: introduced "make test" that runs a minimal set of tests. We
+ encourage every user to run this, especially if they run in to problems.
+ The tests are automatically picked depending on the configuration and
+ will be shipped with every release.
+
+ (Timo Heister, Matthias Maier, 2013/11/08)
+
+
- Changed: It is now possible to restore a parallel Triangulation
(and solutions) with a different number of processors it was saved with
using Triangulation::save() and Triangulation::load().
@@ -203,6 +211,19 @@ inconvenience this causes.
Specific improvements
+ - Fixed: The CellData class now has a default constructor that
+ sets the material and boundary indicators to zero. This fixes certain
+ internal errors with the Intel ICC compiler.
+
+ (Wolfgang Bangerth, 2013/11/13)
+
+
+ - New: There is now a framework for coloring graphs, with functions
+ in namespace GraphColoring.
+
+ (Bruno Turcksin, Martin Kronbichler, 2013/11/06)
+
+
-
Fixed: the DerivativeApproximation class was not working correctly when
used with parallel vectors.
diff --git a/deal.II/doc/news/news.html b/deal.II/doc/news/news.html
index 143f96af29..b2eabc101b 100644
--- a/deal.II/doc/news/news.html
+++ b/deal.II/doc/news/news.html
@@ -36,6 +36,17 @@
+ -
+ 2013/11/01: step-42 solves an elasto-plastic contact problem
+
+ -
+ step-42, written by Jörg Frohne, Timo Heister and Wolfgang
+ Bangerth, shows how to solve an elasto-plastic contact problem.
+ The program is an extension of step-41 to a much more complex
+ equation (nonlinear elasto-plasticity) and also demonstrates
+ how to compute solutions for such problems in parallel.
+
+
-
2013/10/01: step-51 implements an HDG method
diff --git a/deal.II/doc/readme.html b/deal.II/doc/readme.html
index 2709045d84..571859682d 100644
--- a/deal.II/doc/readme.html
+++ b/deal.II/doc/readme.html
@@ -220,12 +220,13 @@
cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/dir ../deal.II
make install
+ make test
- These steps compile, link and install the deal.II library. The
- whole process should take between a few minutes and an hour, depending
- on your machine.
+ These steps compile, link, install the deal.II library, and run a few
+ consistency checks. The whole process should take between a few minutes
+ and an hour, depending on your machine.
@@ -370,7 +371,7 @@
paths.
However, this behavior can be changed using command line switches to
the initial call to cmake
. A detailed description
- can be found here: Detailed build system description.
+ can be found here: Detailed build system description.
@@ -534,7 +535,7 @@
for deal.II being able to use them).
For details on how to set up deal.II with a
non standard BLAS/LAPACK implementation, see the
- advanced
+ advanced
setup section in the CMake ReadME.
@@ -775,7 +776,9 @@
The deal.II cmake
system allows far
greater control over what exactly is configured or built than just the
outline above. If you want to learn more about this, take a look
- here.
+ here. You might also be interested in
+ CMake for user projects or
+ build system internals.
diff --git a/deal.II/doc/reports/assemble/assemble.pdf b/deal.II/doc/reports/assemble/assemble.pdf
deleted file mode 100644
index 073d8afaf826834672e44e944aae33361b4a967f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 157955
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