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.
    +
  1. 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) +
  2. +
  3. 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

      +
    1. 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) +
    2. + +
    3. New: There is now a framework for coloring graphs, with functions + in namespace GraphColoring. +
      + (Bruno Turcksin, Martin Kronbichler, 2013/11/06) +
    4. +
    5. 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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�MjH35sar%_TMcuM9(Aodsj`$_kWMT_ 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 diff --git a/deal.II/doc/reports/assemble/assemble.ps b/deal.II/doc/reports/assemble/assemble.ps deleted file mode 100644 index a8396084d7..0000000000 --- a/deal.II/doc/reports/assemble/assemble.ps +++ /dev/null @@ -1,4785 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software -%%Title: assemble.dvi -%%Pages: 13 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMR17 CMTT12 CMR12 CMBX12 CMR10 CMTT10 CMTI10 CMMI10 -%%+ CMSY10 CMR7 CMMI7 CMEX10 CMSY7 MSBM10 MSBM7 CMMI5 CMBX10 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips assemble -o assemble.ps -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2002.06.14:1228 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics -exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict -end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ -dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 -roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def -dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} -if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} -def end - -%%EndProcSet -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 69 /E put -dup 71 /G put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -/UniqueXX 5000768 def -currentdict end -currentfile eexec -8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 -97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc -8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 -b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 -50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e -784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae -1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980 -237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585 -48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7 -80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09 -045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64 -5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86 -df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159 -19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89 -a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a -34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920 -2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698 -cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3 -378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2 -6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42 -3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90 -5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91 -493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f -e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6 -dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb -0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41 -a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810 -1e1c975a8ba8debd89c6d93db8646b0224c805409e897061b37e81edcb4eff88 -47640c51c28e66d1dfb39ea37525a7f925eab9bcaaa741f90bf207c73cb892e0 -45163ca4d9d25aacbd790e0bcda3746991c5c70ae00e1db0091854884e0fcca1 -a38cdbbe0589e466520f7a132741039b0fd0d2e7aeb2aa458405f0374eb2ad2f -2c8cf8bc7583d1c7e127e9a50057dafeec9c515005478309a953ea6c972cd208 -1cc5364d221e1b4fecc486b2d79352e839bf4e6cdc7c62065d4aa0af68c919e7 -34e32b6232cf543e829a8c6b2ce9adede5898d91595e3a2efac8c464edf6bec7 -ee9f226ec716485d8171f69e74f0fc08abcc77df5f54a407fb69c928822a5ddd -f60e7440a2520aa45245586aae9c67b82497decb370372e4ec1738b258bc358b -4e5953940e16f418b8d27b59565986e3a76b485c2576f23cae22e71c30ec545b -4f97baa009673d5de69f47fc1bf5450b4499c7c8e8021ab9c364a026799526e4 -92a75ff93fe940ae263a21cdc06af1085c4a18732323457c93e3aa7cf9812fd8 -c603c8e4bf534fc01e66a51a82c2b2be8eb855c73f3e7d578cd60ea458fe37ef -b91339522a40d7b63d2e709e13e2458650ad20d5730187aef2467372050e92e5 -8d84186ac0c0bdb21f0728fcef3fb862f9a8965e6a65ccfbfe7e51fb157df270 -ae80f251a7a8dace39038b4a2fcfec671ce0ad92e4d5c90702c427fe23278ff6 -6115fa88fa4f338ec647873b483872e75ec56f1ee8e00d5a37e1b1a083f51913 -2f16c6cfb4cd098781a886eb5e8f93ea6c232aef4f64dc85ed090abfb289d654 -52c5b7daf6632fef944bd1db8c902403f769a0b369daa93d124d22c7831e3d64 -890f259bbe326e3a2ab1bd7a4b21f66026be8e37a1edc649f871a3fa75c55079 -d21142b35ee29cad28a15db16c26003e9b67337ee52739e54759aa37ffc908e0 -6cff5d0e05840094ec6b28a565c0b8485b13ebc3da97e5b5182e2b38f3f4027b -f472d2dd4559849b256b85e535bb63e3bcd8734558a0dcd0d91b43d01baa1d76 -4c85a4eee967be0f383fc8d67c00d15a36f2c9368f5610ccf7f4f181e83a01b6 -24b04f74faa7748fb7f3bece2baab6c6225ee2f8f9f804a40ed0d8714e552fb4 -2e3441ddf48511ce387605ce62da66ed4eb7c87dc1d594bad8006ee519252550 -52f4a6d6d21e417b25c3fa4b624386e40acda51c16a3bd6f7e208d3788e3688f -fe59e08965760a23bbb8f7d682538ee453d828a044245de5a6f1e28aa5053a3c -4c0be8ba96974953b095004f9876b56fe9868d7dc1bc623c0c919b4ef8e8a2d4 -c0ecfeaaef0dcf37dfc34319f9c0c9459e7db76991a6683fc5f66d88d54629ff -a833257926b752fdc3ed6e17c948c167ff7316075d277d16c72f17b9434e6844 -de9c647164245036dffc5dae9163d0e4b58237302332c6d2ca4a59ce6921033d -5919eb617a490920d528c456a34e671df28c79cdf66ac4f8dd69da0b5163c3ba -0b275dc0a54afba12164c6b9b6508193002cfa8041281220328c15acfdb64d26 -926adbffa5164efb714af5a14abfa7ecbe079dd5481bbaa9618b5bf625381372 -0cca156f71c2ce7e0ed9d56abe3ac04085e35383f90a8fbf7afcd2d5dfd6f52c -186b172cf814d6f65663837be4ca4cdc418fa669ac6bf91867d2f46d66ca50e5 -04263f0e6d85d55269faebc393f63b37eb20f45dd95967fae7103322419eef5b -59024c670b6b8c644fe8fd82628cf30d0af16948231abade88eae85e633bef10 -e72b3a6b627efad5d8ea7cdf55770a4c8af859c8e47481f8c64cd4bea275d4ec -5766bc16002b118c5a98e03cafc77b5e37050b63e7bc8e4ef6f69f66cf22adec -15b74db7b9f1dde25bd4b0384a58d5f51505c1e6ea5de3a2ec914f94099faf0e -8ca7f90ee51e83978143711ffdf55cbeb05fe978f5865bed1fa0f24377c4cc07 -ece35a99a9fb7e62c19a3608d13ed7785ccc27961d8dd7c6ae26c8d6110a0618 -b13f4c570452a12fbac547cfbe5b2dc695b4fddc16704ac6fda3ff94e72d8957 -d2a48cbfed11839315bc45367db66fb83fc1898b9692a78cdfd5d1765a100013 -0485298a5c43d51b658c083bb97940c687ff6985804453001dc7a2bf28181e38 -45c71ea8420f6b48dcd3f3b332f8ac78bbf5d5d7eaf23f3cac919c05a6088be4 -66e7e770173f4df1a234e42cdf2c3f52968a203994092a00553d8b10be4b848b -d99fe5bfebcb5c2c856c55e2e1aeddfe8e1c496a26f8f7d8de30ddf54103cc3b -eaedcc16b3be2fb0bc52cda49430393855c38f7d5189f55895cf4b6c25c587d2 -37ee654c4bf55003a855afe57751cc74d3036771bfe1dd01b564767d94682720 -88d5b6fc1384dc1c00a8c6d827850a038475aefb57060707d1a3fadcff525138 -ec3420dcf11b4623fde6f2e90ab4206ee65ba26d85b936e2dac1d8f0985820de -a1c5fcfa5dcd609e75e31bb0c3cf87f0eb7cdbc3d7f3067faea95137a8bcf65d -41088f25f1fe4cee81f54bea54be1ca1d5cf238d36090b16e3cb02292af9127e -e1377ccd08df3e349b35d271a4dfcf9a2495bbc1d56771949bf8083d6a81d77a -90b8d8c8e4abafcf07ac8bef65f6fe4eea7ee09b3f6419c958e8f81e6b3d82c6 -1aa8e64e543a85b8ef1a61751fc5df599dbe75ea5669f843bdd048e839a4951c -7dafe01ad3945caf0cc111e8fc95779f3dcd42ac01714b936e57f6d3ce30c78b -ecbd9ab9edd7bf00ca85223830531a176bef009aeb9a522fd1b2228e547de4df -36d3707e7b54311007332ee829f808fbb2cec5d4f165013bbbec3a615e057a15 -65cdc8992dbb4cdc7ffb9f930e4ea96ca2597ab45244c5ffbe46ccb43891ae28 -053bcf8c45d7b0e0f1743418f8afcbaf19415e35a4306879ca2a4ed99baa57de -c9f3d6aaebcfa8999c25d7d89e5061fa40f97ce6fa3f8a8ad87e8e6c899ff376 -b251ba11747461f2e1a75e5e7ee40204ed802f225095f0edf3c8d4723062d7ab -0fd3d18d30b18cca85ebe3765699a2e5bcaaf350506c7360e7914a75f36cd13a -f8dd68a72030bc373fb58849d9b158c7b1508ed980e7817737e10f2fcc224d72 -2f16192a18a7d21f1922b6ff94b50261ceab28674f648efd90879a8d557bd734 -44f8d8e3310fb55099cdae0fb4f03090323408c4d319153a2bc36218e45b5555 -9be8603e721f99b41d400801b15d5301ea5eb2cd42752464bf25523aa6163aeb -9764ddea342a78fd1d43c33f50acf8431d28016b943f6b5345a76f7de6cf273d -aef8648f48e5fdac3f573149e7e705cf2c82996bb8aef7cb699c79304084e8b7 -c9e437cf9cf8e24c78eb6b1c6b528445e42f7cc553746105e98e19aa699f92c6 -def1446a7008a0298c0cc9c9ed9601a62177202dcbf60357549c824d9697e9a5 -a0f400f4ce741827bfd897ce4cce024a18eccae6783106a710d8c76d2c9da409 -810f437c0b395024f0155025ab4d82ec8f2024b136da891a625ed5a872e1b81e -551598a9802ca89a85846620e215485e9ca1adcd94fe5ac86cd4d49f09c747e2 -295dfa2af72fd1f6130d277a212c05e91eeef5ff188f58cd4e99a838770bae00 -d12de9609410f847b491749b79aeed9f024acb6744eb560899de7f957e50dbc8 -4cd61b5a60eaf47717a48855f304a283c972213de3fa9812a03b6fdb829a3e0d -cef701b4da8dcc4db91b2c1e3a11476c36f4426019d2d9aad2ea9a8e39ad5789 -4ff08f83eeef9a643e212eaad81cb81b2add7a8def7810ba7e2682d45c0f175f -a2e16a127190227faa28f90efc2a41ec6dcb6399058ef56bad97e2b7d07199b2 -d00bba6af6024a4ba8acc7468d43b17dec3d7dec0cb79753a1a5a4839427c366 -f27b7346035f7349fd205392ad144abcbf23fabf068d12abad12ddbfcfb9de19 -5c72c0e51e0640ab8ba1f54560bb30d52961488dbc88ec9c67f2d577dca45d77 -37e9b074245b69b13b09cb447708d6e9bcf4fe1d30be0b6dbfb15e9fdd3fa182 -f90dad78e63bd0a21765f89eca3a5b6c9908a3e6a4c73f8b6d9a6b9992d6cae0 -9235e3ff65d3daebfa21917dd5da7961052ad5bf1b447ddbe5c40ef332e1926d -f4a2e7e03ad2053f80db3cc5f9c25c7285c8154372bc6620b0b6c888ca046a53 -e64aa3a1f0add6c0bd28e992a3ac3a2229f86c089021ac84ab80fc0af7ff5ce7 -5941c3c15a706de1e6ecfe7acb81935d563db38b05736ba75b9e8489d44a3f54 -512173b661e92c2debab249d649013d83747fc625c54fb4fcb40c344fb9b9bc7 -981b3cbe955651908777338b0557369c5c86f588665e65a630f94fe5023014b8 -258aa8d65d3d8fb75b33465aebd208c7072b6531dcb96143c2ff45ffc60cfa4b -5028ef487e42e5ad39557511a5838ea19090f019020ae01830d44c4e71d932d3 -03396252a730258436f90638142bd4c02137a2d5b84ee9e5a990fb626892b86e -bd89c2acedafbe38a95d591206e387b5724c37816db308970787181be6e1596f -83fd4aed608329db92480992c04d8e88946b9acefe54aa6350ee04de9be9154a -6fa03606301fc922ee58129af63ead00d64c78576bf287eab9090b3b9baeaad4 -0138c4f09e50949fc667bb25dff16e27aeb0b9ba94963a02f645b16c624629c5 -bd0e31a2f65c3e7b35b6d59b2455765b8f332e351e8c4391fe9789a0f9b7a894 -3093d79daa0593e0fda554006799cc6399a14ec337a5ae6a3294c946193fdab7 -da21888dd9ddf8940ab450e851da5a0a78204a6ec4b4c8f760c39061c6dad9c6 -e59faa3d9b088f10564ff0dd78e091516b4c64cb6f7b9a7a6b375c6fc10e2086 -dbf84db0666380f71a426f9e620ee5f33be163a0326a02f320d28e8f99a87b06 -9b518894bb0aa7a32c79503ba0424237360dd1471cf7db50dcce112bcf73c69d -a7097caad602f3ba9f95523737dae070166f6192f9fa37b4ee73531a0d869ce1 -ab10ca58439d4a4e76f7e29785081540777aa340f6e8a34e468e9ef42becd452 -cb48e180f92e5dca7bbb4182925e3f3d126f573e79de1c4a2b592a31d056314e -7710aa2f3256682e03860d4e5881eb38d48d25770e4c2c76261a2844ff7ef14e -68606e47705deced3700ef26544bc82faf609a85045f7d648c678b3d474af407 -93b28709a5403a3acbf996d49899b74412bd6ec9a5fe612ed549bccfb653286d -4fb4cb9b728a16cf5b59a40419b262861de214487b144c654689c7f8ff62c86d -272bf1793f0f6a0fae4760a2ba94c56a5e1fd56a868f7817c398c732571252bb -068d2e6efbd15074befb6f0e2fba8ef814d05d151f02a00f89b824e20af72206 -418c0aaeaa51424f2c13e5b413733dc3c09329412107a882565d13fc889ceb05 -6928999bcc15f883610dbed7a711a19d2836beef96eaea83f6509d93c1bbe548 -f43e3b8fddf5a50971dbcaf6b0945d1b328a2b5a732e515239f81cca72adca7e -fcd8f84924b8573525212bd891ae028b9b48a15dbaee8d869e36439dab294d7b -9e504e4108599d3de92c1c64b504cf73e72e2cc1a3d034cca3836cba061fbd25 -9cab1a5ea506a99b8bd530649a3705831d53a36eb780bab97a6a2117943d1a0f -66b8e5a5907c1b78e3614f894e7b7017e03b2134970414c7dc35b40b6ddd23b5 -47ef28adfb00fa09e6fc301cd23f32264c9c00593aa164931561d561bc97e269 -b981bf6c0766c8e86da1614eff50f4a95378120206c51e59dff6c01b06c46718 -1e8d207f8e171f5f04a8085a8c49cf7407502c07868194cadd1daace2774e163 -059be3b06b0c57acfbad62805e272c52c9ab882864df59482ca0660b9c2a484c -3d2e702a2a0a7a3ddc74260084ec1b33c750fea409a96874e66d32625377f7a6 -c7c96bb2570c5a3b2486c5716551faf52434c9189efb3a472be391f34511cdb8 -e57e641d97802decade70552a9a5 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 73 /I put -dup 76 /L put -dup 83 /S put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 121 /y put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueXX 5000769 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 -0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 -79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 -2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 -b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d -823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb -269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a -1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d -99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513 -2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc -56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c -a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea -a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef -44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab -659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d -9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb -8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b -d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e -543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb -f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8 -025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d -2c88958a8f70c10390146ee5091df020ab97675e8e6b9e705fbe5d4a561453fc -99aacd038d0c9d92ce58c764a1a6cd497ec3cef52975ae84cc7e1d0401a7fcd4 -d5e847133c58d736e373745cbfa06237a1ee4ff0706bcc02e316bfe85ec2f0b4 -2dc3c3bb232c4045115c86f37c3bf3aa17b765020265aa22553707335d7fcd8d -9f619e844ae579bedcd8326b4e97b5ec744e172232ba7d77527d51619b629035 -8eeead95e65ecd25b250137cfbec4a4ab9ada531afc7675329140b035b5b95ef -70e59fa7265b97d059802c03f27a892dbc7bba4029e2c27bde2b345629887d0f -503daa813e2f4aa88286ca728443687bb970205e7a1bc8a1e926fbcc08bb53c9 -78dcd1347cbe7db6901de8961f3ae79fba9727894f0bd32eb07af25fbf0ed58a -e411298f0038ebb9ce560f435ad1c4ac5a042bc7edc88360aa45b3fabc9c8715 -fda2833f3ce873627eb594816ea234b181df3e546cfe9357438b3769c9eaa461 -71a027ed4572e8a28931c3adfd19fb998d53cfb0c45e2144d17c94f0a89f2b2c -3202e3aefc9c426deb8d01ff3f6c966870cbfc3946c6b2357447f6e2f1f698c2 -17c08485ba86f6ebf5be64a6d6176f777969da23715886a968bf837873ccc07e -d48f716fc3320f9d97953c57120c222ae04fc5013a1e4dd685488fc7529f9555 -ddf4252c0f8641c504377286056e0970fb62e4662c43f643bb37f0295d8c36c1 -825cf8401224de7d95140c74ca72f9db638d61b82e5902a866f5bd9f9c1bccd8 -74e3ce55d29a5292b27bea670b6f062ea2fd3bc20343a531487570f70d59a173 -16967ca2c7a8e3e2d2b9b0be7b21a0127e3d9505703dff0406a5a3e1cccf8aa6 -d3e80ee67541e209a7fbd65abd7c6176c43d052585fbe2dfd15ecb272b91930e -3ee3b3f2ee81a622318d2f686cac24627a53fbd56560d3ab78f375011c74f8ca -d005cbf3eaecf21dd7bdbef92e825d30c975ec4f57af46941d2926a409d958aa -bda09449e7f429db97a94d5702c1eb5c3f137dd843bd79225def89b5fdfaf347 -58227e12d909271428ea127048398598b6f0d90094931762a2f8c6f01aeffca8 -edfb0c8da62297a9f42c89c1a5b44ade846c5ea51319092cb21e09ad0fe37cc6 -216fa48547ebfbe7605cccaee295fb75e667ef38c098c9204d325b0f8b285863 -c406dd3cd3813a7b4c5958ff93d818044efd19bcf9fdd8b6be6245da8b9fbea1 -0043b3829086a220507bc437a57291eabd7d99654a27515d93ce5c19d2d02c05 -a116b88df31a29d1d9544aceb108941a3ed9b36a47da33225bf272072242cec2 -d53eeb44676ed03ffa4dddd61b1b222667c2bac3003360c11ee91f3edf2c0144 -4b811574de4ee463eea325f2d4640a1e638564ecf613fe627bedd8894e59fe11 -68b3189365025968046f434fab202d9ae6e0a54f2df3a23bb122e18ca1468883 -627de0bc7e77d53ea0bd991cbf022e9638957e84bb909038e72af12255edc69b -76b9b76ac0a93b05a6ec27ca442ba2cb8a0da8910c281eaffdde5c24d0522438 -aa33889b312e45ec398f7ead409d5c562e68014de7c2d4d75f9c181f6dbaf6d5 -455b99ec218b40b078f0c5aee0bae2205ce69a868c107caf7fdca8221ca29cf1 -7d730f4aa13e605890552dee1e092b6e2b7c060c32c84c706b4884ed3b445729 -e0d425893a63a09107893a9dae4461cfa103a4a45322377f253de10109f0b33d -176cf13bec9c174ed826744176de84f9a04d505b6502757f7de6c46fc2c649ab -c6ce33f104ae05c87b9ea81fbd1d17a40a3c86743a0cb124a2441f37471831f0 -820d64a2d230f083b36d3884b831f8b793db77bd65cdd2e45ba3b6dda206dfa0 -2582557674544be0d59da90d2092153e5913b74885fcbf58ef808509a1533030 -3b1ac8c65edea8e64e9144acdc8409beeb3712d0eb972b9169e65a2de53dea89 -3e69ac66c264defab6d9a4470421ead6b0f27df74686ad9d9c0034d62c7931aa -451c4a82c4fe6bfbd2cb79da008fcc4f6970ab87e1a5702040c0bf5a770255cc -11cc019079e71b593109cdd2594ed2843bcf4872ed810536109cc6c939fd4a66 -c0ad753fa6f924c594efa9500cfe770de6c5966cebc6858e76c5bf1973fe1cd1 -b33e375c62c8c844f687880688258a0552b2ac68875e264b7d2b0927e37f409e -f792741804c1ae9110c16bf36cd22521e9abea98cc6a3151e759f31d823873dc -be8cbc8c54562508cd0d55b1565295970b4c7cb94f0b9d960d7b5a5b10099330 -f9914b89c25655eba70023723976ea31e53428c3b2cb8baf93d77b56ffdbe0dd -f43904f574b040b2725c72bbfbc716a2624a052d0ea7cf6ca1eda1c559f591b0 -a9b218b76eca6edabee20bfc027ac7d102b7ff910ff11f741077fd2aca3ac620 -a0762495f3e7bf93b4d8dcd4025598cbaaddd840f1d67110f3b30b0cfc313439 -cd0d5edeb858df30c96db1898efafe57c1e364aaf71314fbc4cb5d95c6ad9c96 -846e09b38b1a13e534bbb06d622da308daf856ffcdb86ad624a4ae499fbff17c -8e77f700412eab675975191d5ebdba69a0418ef1dd81a69f8d6bfe4cccd30827 -7c1b0075e5b612e82523f93341fef8c1197dc5e97911f480398952aa61bfc7b7 -77d05a960164fa8a34f6fc2433c6a249fffa777da51f9cd3ca73091f493b2e66 -11e6e5d2c5b3d8dd3a7f010412970a386e93c13a20bea29c23fc976b7c36bdf6 -db51553e05839357524a2a2eee2d95f00be1fb63fbd2cb39a5b1f491aa2e2766 -b9a7d9281f78e46639bc3c27e1bbc270d7ab1fed1eabf400db81c66c12409fb7 -c70016868b7a2a02f2a6716e98ecf347dccb3280dd6bbe191c804883ad5e2944 -5e40963bec09c3ca1bffd998f20cc9b340611392a59608b74734118cd88559e4 -c61f66a4dde1adc7d7c1d63f3558907e2416f4f3f7df0328b4654ca8969b94fe -a06a9ca198a478b5e481c851dc7d1722bc46eb18c8f1fd0b093e82e6375b124f -2142d871b7cf62da5889c49de3d7acb0180e39c8e85f91a34804845a346efed1 -f0b4e00f9f4961b2a27c11236ea5636562a82be3c81f3f1c1ee0a9e30080e323 -cd899aef0ae3130d436263ddcb9b31c8e36b5878e0675a83ffefa39e6b6e2d24 -5b79bfe5d9233b7eee90a558774ea3e08d1e2ad1ef56120441ec34b5be9c149e -b31de826923c3e086815ae81fc56934f53bb1c324f5ef529243d38b7c30ba44d -d18695ea8f04fc8b76241aa05f029d27276b6a0d8b27cf8c43a5edb489d38981 -bc5ae649850c607a569e73fa37f96a40b0c052282b065c0664477b46d32342ad -d170b3bb92fb1230cb12d2114ed4789fbe3d3dae6e4d7b05395ed815e672f265 -b51cb6d7853c6f83e778481fdc9861a2470d4c22165bb0695c98f2a79d337858 -8fbf982a0c243b88e335dcfa917b8dfba901dc79913a5958f16cfd72a26c2aa3 -84ff3138a51af5fbaf09a06b4068fad84dd7b8554d22308bb7cc41c55f494fde -654fc4e977d61fdd898eba73579537863bb4a9941546796ad1b2d3894011ac64 -de3aa04e5f6adbb9e69f21afa7c7dc0409b6569cf33bd993329cc914e797c5c2 -3b9e3e0ff18ac542f3e850a60e6553614cfa5f2d453c5954a8f74ddfce9d8bbd -db07bd144dd14138f610139bea9358be42e8a002137be5180a3901de5502f371 -822c1a9d1eb3232de42421387aed207314b032972e72afcbf2f6406c0c62981c -da0a780b17ed90518d587d3dd4cd14ca36f96c00fa8079b5b748bf51163191c0 -838aeecfbb3025995613e29765b18ce8c14e510d1203467fec6c0a8c63993bf2 -a78b31a639361f79b1f0fb21bafba4bd6e3299d437ab5e7d366ce52f66c92519 -efb631361fd68215f8891cafb5232f000dff4692abe5454fc53adb79a73e392a -fb00aab08832492d0986c860503a5ace5e2262c048f9a9c07034f128e0e97023 -854ad209b10dd2507da4205c01ea61f99a685b080c2f9bae7011ae456e70143a -19b4378ee74c69669b73c78f8ec9d19a560a11d81beff9ef717e6d607d52bc05 -a7cda8ff207c86204dc74c107c877348b43285817c42c2b8c32d93ca1ce869ca -fef4b1ddc4ed4219d3499d2b19941bf4ad75c802cc6895a99837a66be6c14f2a -c9f1650694389837e40f7df0e56ff3bfc9b1d4140bcf14b266466a3fcc71aa0e -47fdaf8259a17dbb414b90b05950f5a968d642b2b9b1ff637417566fd3ec9ebb -bdda5adabeaf41b045020bad7976a423935bd7e08a878cd1f561aa4656564a7a -777acf608054ff390ad84e4cc40533f8bf8c23885724802bfaa18ab65b544ff2 -09b71d84fe83ad8c1e798857ec5cd79961b9e7ffd609b2cb7a3718c99375bff9 -c0c77370b730aea86c399333a657ba6cdf29e8a1a8a5666a9ef1b8c6a8dadc20 -440a875026917fb74d437b9e2de70030313ef00644c651ded8169b301d08b9fb -20fa64b4ac404734e82abe89edd2c5ecb4dff4fb6b5113545fdff2f8c038c310 -310773862041a0035e06f4edaefdcf68cd935879d1c9a928d5c62273f230d268 -01d36b1e5cfd8232e40e3436b7194fd9d35121152fe1b8ba7dfa3dc70b8143f8 -bb5fc40f5c1b68d40bd9710a6ba1581778dafd5d064dbf797096b31cea949cdf -71c4b80eef824b86caf0c22fef4369b212573753b94d3cc5314caae897432c73 -6362ed0071e6b998a7a2bdf62719df7b1c2ca96c1978cb26477b7e1fb47dfaba -b641c6f9f0ddac69a29452957335c41957c33eb6f2fda4701a9ab06f34b28002 -fc51523581aafa78cb507319a4249723982086e64d632f27edcbd38dd91422ec -6b77ae3accb6dd86a97caadf760fcb90b7d1ea98f4a01756336728002cc4647a -476693cbd4ddce577a800a1bdf08a7f8c9cc1c06c32ac2efce853b29391df480 -3adfdb279b73755e96e3c883bea14163e7e29ebc6ec0889ba177da9fa1d531ce -163984f30a8b015b182f7d4ee4ce95a454d86f4da3ca98e63fca130c934fe682 -267e8975c6472462cbc5915dd0533141f61f083a9e8cc21e7d992fe5f9778cd7 -0d272b613edfad4dd8a4d0cdf328606cf5764e82fcfb9dcac2ed7edc3064f5c4 -5b44db8dee36be5234b91c95711876966948f0bbcac41db838016e2fbc103481 -ed8481af6740ecf42ea20b24eb527188745d5a81785a8017ed15273ef10aa095 -6709a8a72d01663abf4c2043c8a7ecf908fd74ebbc095b55b29c6ea9fcbdbc6e -728d74def74c0ab7591033adcc16a06f3c8a7f9f08f9d428be5bd3b69316b023 -91ae86585e0d3597002b7bb397559b5bd268c22895ec70171e9dfc8c35057092 -21b3a1bfa7059e21ea90233fb9463ebb7c04b4cb84057c21632db39b59e20c7f -cbe176ed86419840c67e4ffd4f0afa6af32bc566caa5c8def4ff68d90adb0550 -bd1f16602565cb81285129e6dbfa859a25b82473d56aa05626d28e61330e3c7d -c4e751df696982dc79ffa912a1b03f5261321528af05853a9af5c2dbc43f1c14 -237a2b0c8b4662b034e4a4b74b6779f4bad37d21e455bcd6256986f243e7e3df -6a9d12e6e374b0b38c57c41681d7df5199865a5c1fdcf8ae1cf8ce962f969fc7 -3701ca9daedfc1b80fc5569fa5fdb4664e586cc906e051d74625884a6189a619 -ba749f102863f38ba49ccd86d10dcfbe2080d3d6cf95956c77181283791b16ae -bb69c99cbce0dd2e9c55eb0176269a7abadbb873ae31c7211ba9f746b264b685 -bb7f517264a0df97d469ed4d9599de91b84de95f945ada6d229372546d39be57 -6e505c17ae867880dc86a499c769199a62a16dc9ffc304d6b70dde4971baa0ee -49eb9956622dfe8c4007e4e536f720929e8c20ea04133a303a71798490ffa2c7 -10c962307b4b20e297af1db45565fa1f0db9c78e231e7b312b778b8b5bb7e6e0 -86bda82d2a253cd28e0a95b04492102fb7b3d1000b6fd1d2c21bc0d09e66502f -d56ae39b152d60a9dd346d7981268598e718e5f33c0a647b766aa46044b9e82c -1a83f8e700d1be3cab9e5d945d691039480b8274d8532f4ebab3b906903a3c7e -96d7af6d3518e3ea6df8b95dc9fdf7cf601a095cd67628dad9a07fe5c67f5c70 -16ad50407ab57749d48f9ddd60f43a795ba180649ef8157da39e584ec6941575 -ee5aa861d67dbf6cb86f0d5f92814f3ff80e846be72be01a86cb72b2895069f4 -64e2f8ee4026989b314990e82c89ef7e2b5db62b94e5f5fd4fadfcab36fe68ee -fd8f306b9eaf563bbe9794b4412784b440c8dfd5285e742cc8cf6a590b4f2ac2 -83730cc467c2b5f49f47a1df20422d460a9f02d18780c35f9478877a2b4255af -7c2e782609e134f5ca25ce223deac2b4b2ba441b69246e356e41ac1340b45635 -386ef79aa368773b769da7492d7973f0071df7e407a8d4c7a934ab00fdc050c4 -4e82d23a7e1510f0b451267ce5778ac489f66e94d962b7f151dc50ef87bd1d5c -4507eb7172da84cab441fd8d5f2b3974a0037b079f8f90a0fa76035cc1797a11 -f19ae567aa19ddf066703dcbcf04c878337fa123bf7ee20186cf4ebb1a3fcb1f -c893963f72688e5eb31f5acb7e6c3e3e7744c4bd41483fc414144650015e6d98 -c6fa6f081c83c3af3c53a1e26b2fc4aecdee89d0bc0f354be9fce0d1f2bf88b3 -3738897ada4ffec0ecdf56449d251e691b2e7ecbb6e88ff7309abd43f0bfc0cc -831b0aaf7c779a66346712450737e25ceafc2027bd75d75c5f56702c9ec78ee3 -b73b39147db1d4c0069d80b62f3905adb289f689ed70039a642ba6852f3283a8 -3561854c62e7ce9d65edab9d3dee07bd8d2547054204533bc4ea5b724a6b3cca -bb12849f5d9b943602385edbb69b2d3ba682547bbbbca8ae62f8dd00848a07db -688ef33da5533475f4c107abd5264e65ecf318cca84113ceaa8e2febea147a10 -e7c9095a377335be37ca2251f4d5f48cbb62c66f66ef089d31d7e01c50d74100 -d548ed77b07f5865dbfe963fed3d5271d66a787e075ed57938d694d5370f4ed0 -3c76a7b76c454993688bfd5a2043b3cb9c645af5665278fb5787bf29013ea3ee -25e91cdfd655d093bb0bf2efb800ab7b6ac0010183f24b55e539a2c93882352e -1d185fdbdfd240f65971933b3e03d4715c4a0ea7dcb26bbc2fb54136fdf93cd8 -32a39b2b4b99e32431a076bd90c7280181babbc729f58329399b161d64cec526 -fb0328ac19c179fc0539c1c4845fddc512438c43e3c5db3cc0b444e7525de4ef -cce733465ad2e2e606adf1d14885e13c7bd15aaa81810d1b59dc91b113c17e51 -67781cbf3b0a400fe76139ef8583ce12aecb08abc2d86237b3ba47a8196d416e -80e93f8e59c364ee7426d30f2a11aaa29118b90809998372cb5ded677c13e221 -27864d88f194629bf8c3d577a7aa6638b9637982c375fb15b0b64e8a747713ba -2eb1e7b7b80a4ab9985d05f6a49cb26e7555d0a0a136d52d1cf028feb1fe3714 -52c6668ef27db0dbef424591b5ab4c18b526eb656ebc30829c558516f8c4d2a3 -eb97053c9cb9dbc810315897fa3ba632fdc76e2ae552d268821baebe0f96f037 -e0f2b8743d36ca24bebfcd7b0d78057009f1ab75998fa9210e54ca67118fec8e -10ef59c05aaa566752652b6dcf52fddc0daa07f14bc6c28f6334955ba1ebed6a -eaf5a365f553b2f9359c23aba570a02600e41d2944e140c802669a50be5e1485 -3e4837542b8aa1805e6267a2adf8b640e389c91d1f332cfbfdc2ea20c8249576 -127d420c1d4ff42f8c5c3272c1638666e908db925bd1889f445dde5596eae246 -3ffeb843e8da7dc4820cf72c94056b20e2382f97b5d3f30006fbf7f996df97f0 -dccd9f526d67507526a1c875917ee614d6f10383b71d0f38461ee54d54e12662 -70990f0d58cac89e3ae020307d824812c2e06907f7038b3744a45b9cfc59b4ae -3554afd96398f265673a554b9aebc334fd481853dcf42b0357d9d29a4fa7b73a -ece3fd639725bb7030e14194ca5f766fff5fa1a4aa8c76d29ed1f50bfab1b8f1 -583ddc734f22ecced4212458f428c4f386077334f5d00614e3239b5637128c02 -882c7d860f9a5022e1703f1931be1e7daef8d0393078a2896a6fc156dd50f8d5 -38b644ae0e89fd60a3590d686d8e12b3feaf9ab32c570353527d93507c9032c1 -fe6883d2ea1f78a876b85cf29d44328668a1d5169c76fbfcf4faa309370db180 -732af198481f456bcc5ef50bcb2726560eda602eda58f5a42d664f339e7227a9 -f07114ef6e13225d7a41935848702fd9fe5bc7695237e313b7dfd2d2d2ca23dc -6ccc539a7851397c6ff2d879b49c137f80d3cc648f3330af99aaa6614396a40f -1ddb3390a55d2486dcd9d89f7415d173f4fbce3596cec0ec245fc727ef549e93 -cb33cad8105b0e8bbe64408f01001ba5c7da7cbee7e9b7f0a7af360cb3be4ed6 -fb425c7839968234828a09a0b78c20d0b0bc8755ac0efb9c8ccb437a985a3982 -26614a5b022c5ab98d75c2391c9c01f9724d2db6c5c72203dc81f3b3c6e6f7ab -fd96 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMMI5 -%!PS-AdobeFont-1.1: CMMI5 1.100 -%%CreationDate: 1996 Aug 02 08:21:10 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI5) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI5 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 113 /q put -readonly def -/FontBBox{37 -250 1349 750}readonly def -/UniqueXX 5087380 def -currentdict end -currentfile eexec -80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242 -29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666 -31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad -05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce -14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66 -9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888 -3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323 -69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba -9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb -a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486 -61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac -a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3 -2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638 -a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa -231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf -df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e -a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c -0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e -369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7 -6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763 -2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af -a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f -c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0 -c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e -07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a386e24c6deaf9cb0 -8cdaa8fc4ec3fadc06bf28659cb878453db16f4b03925b2127b83be8fc240f33 -23ea950b51d70c8fe861e30c346efa0a0125137598caca5478991e35f5bbbc19 -4c787488ba339830bca15f8333431902e82b66a514a41c0bff92719a6a0d9587 -4cff62c622fc61a0308a69f9fb7ef51bb274ce9e059c04b64e817abdbbb39375 -bb4d84ca40de5fa46b84b04f3056d74aecb5c4a207114d9a5a6df3dae68c068b -a8eac3ce90f11cea03322a18b1486fd2d40cbf112c42389798b819c71671be40 -469fb02a086961899aa8f163c9458603ab61d9bff4cf30447fe852a0ee54074c -a70c4743a4f4b834f93f9a38a92f5a22713daa7ca2e367a51c37ebe2d879955e -67b53fd9fc22ba858f47b9c160c48845d0eb4ad008e078fe9518d901d4e609bf -7e6920bcb1db428a1114552e607fa92b6d0cca4cc7029c7b73f937c2e5169ed1 -484af89fd965b6a96f7a315fc92041494e00af617f6c0f76ee6e2e81a1ba9bd8 -86ff90e811643630b7313c97c2652bd5b1e878434cfd26f1d2828ec210748a7e -e81ca140d9af69d8404bee469ae0d863542fb878b0025e9698e77c9361c47618 -10009cf766e9a06223dd2f219b70639b7bc7fa8c4bee8310ce8f4ce007213242 -cafdefb30bb05c1476cfcd1bb8f4d193884b1343b6eea03ccc6d87c51f9bbe7a -7005855330dfbda83d1d6224 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: MSBM7 -%!PS-AdobeFont-1.1: MSBM7 2.1 -%%CreationDate: 1992 Oct 17 08:30:50 - -% Math Symbol fonts were designed by the American Mathematical Society. -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (2.1) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (MSBM7) readonly def -/FamilyName (Euler) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /MSBM7 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 84 /T put -readonly def -/FontBBox{0 -504 2615 1004}readonly def -/UniqueXX 5032014 def -currentdict end -currentfile eexec -b5e2457af4a6caaa4536453c498a618ecdce7b5f6f2d5944265309f833bd3d50 -3df8bd14c071f404d2177500681a801856cb8c9c9cf0112c9bd17ccba9ab8944 -1759a320b2078df0fafdd3e357994bd81740d1a7522ddfafb75d58f5def046f7 -084d10fa2f702e570b09a7073d70efe37b48c355a7089772238b7b4538c4912f -cf6703a14fa416057ea2e1b94455913dd271b42846ee10d78270a8118e7e4bcb -8deb048bb280c240d59409d47046c890e5f79e5dd4b0be65a28a77aeb53dd33e -ac506a6da87bb55e329f433627e06c3c94b078838b908538d93f888e504e25e0 -3a8ccf7d2c02122ab3d485525564295390d1154e15fee35edff4eb016fadd32c -26d1b4c09de87943780954cebc4965aa890fe1f80b03eb07103e13d468245c7b -c26455f229e8859585c6eeafd9474acdb27290fd62950dc52f893c99a2a614d4 -2a7e3618266f3fb0c68a01a30373e048385ffe7dd5844e208a55d1a9263ab2db -cb9b19038724f95af00349840157be45cb337871b55a304b87ade64b10ff0eba -21aa0eaeef74aa01f049303a8b25de0acc26bb3a33fcf267f479a2a73f7dece3 -2aa23083687322b417fe86e8f5afc2136d045ad6b392364811a17630a94ff097 -038eedeedb8da4ebf8fa5a96ce27a2ebf771d14f4a11fb1f9f48cdd207209934 -885ef9118463552984b0fd3cf15d55de967fbb051549dd65f60dfe07f299690e -58252f032bca78935b7d2df852ed688bd13dd171b91cf7bd46d5433aef9f50f1 -41a2517c4912b837793f84ddcf1116f70f7e9b1e6ec752dbc9183d4791d92602 -397bafe29ac6f879ceb72c673c8a1aa0135d6f92d0db7791f9a2f1a5b55347e0 -3e63723efd258754f5f4a9ad35873a98d54b6c54b17a39892dc1d38660597448 -fdba9258493a0db0d560c01d49f2d889a99eaa8a5b5919cbd33f6b3d97bf27b3 -e0b94b48d5d21d6c29aee4faca71bd775bb9defa37ff627f1e4926f10d59313e -77d81a511027ef9a8ed5b7fa9b5bd67758cd13bab6ac18411c974a65d0c90085 -67bf5860d0930d7f43e557ee45e76ecb2806d21f4732bb282ac8b591f2b8775d -4b3ce2a37ebb371cb74a3cc513bdd70a0115de4760c21f034f5080d769f7ff83 -554af524184702a02e534d1eb98dd3f7c5d51900409354dea37de4ac72c4128f -b7c08af8a17f2033761abc7ce4578d50960ba229f0bbde72a750e61ebf32f961 -f519c386735f979944540cdbe8c8e2ef8a191839e033fffae82e797b6d99eb09 -96caf6191f6824680f0aa167fa3670df501492d493d04da4e0d40c579bc98f69 -1368624f1beefe7c681a84f0122a97651ffc905047fcec9abc49089fd5be8cc2 -aef34559b180555eda5ee38056cb66ff3c179cf5715dacb4b66b8a695434dbd8 -fab68a01da044cba0abe634c035c19d20a8113a66ef4bf6f80b8332f2edca065 -eb99277c1ad03f15837aaa9bb52f5f63c73de2760c253efe0533e75467f968f4 -0847ada5c4e097b1096db482b171b8397131a4d797896ae8361281c3a70e55e5 -71a1c17b23a4203a62adaa8f8bd4491db48f60541846f0776653b8bcfdf845e1 -4197d51ede41b129e79157e9c6597d52ab4460ea133d48d02cd32c43b3f02e97 -19954b9ff25fdf -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: MSBM10 -%!PS-AdobeFont-1.1: MSBM10 2.1 -%%CreationDate: 1993 Sep 17 11:10:37 - -% Math Symbol fonts were designed by the American Mathematical Society. -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (2.1) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (MSBM10) readonly def -/FamilyName (Euler) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /MSBM10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 84 /T put -readonly def -/FontBBox{-55 -420 2343 920}readonly def -/UniqueXX 5031982 def -currentdict end -currentfile eexec -80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a -e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4 -d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828 -e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4 -7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80 -523f59a30d195fcf9b9fce4ffafc6d56491bdecdcafdc988206c5a457a19270b -37d0ab776e03eaa7eb568eeab6b5e79dec03b0dcbf923a2aa8e4f4deda2cb043 -858d8b430efef0ed914a80ffc9818aba0fb30dae3694e5b31df3855892d59b89 -7f82ff79fce8444c7926ffc4ea008e63bc518936c9098afc2d1c14030a2c15bc -c9285c1b57e80570d2f6301009e63d9ddeba44e3251c75ca9616a2c5de9ade66 -1a15db37b40b67c1bd71f77343912c62f47dd24be0e03dd833ea60d2eb020407 -eaf042fed30f0c2f01956c83d46d982b50dd979c2026ed5f71979dd98c9c1eee -25054000a5eed5ce9498b2cb59a7ee55e0538ab47d86e69b2ac79229c8c6bfc9 -3a24e822a2f1c9964fe630344579a25f66646113f73d1315c447f070c575de76 -266c6773b01137e4a039df5e4c2f199e8e3396ef9fd001eebe090e04384c4089 -ec9f13a07ad8733c6af775f432f154ef50ec4477e08760c03c006e4d1eb1c7cd -acb8955ca4b0d62c7de046ff58d431bb9883d28586552c51809e3ced4dfc2198 -b97ad9e52ea33c91b9e335a80d9b77d3430e0487930f992459664abca5dd9177 -150b0fb502fbb04ccaa94ffe2697ed07906f95fd98e7b325bfbf10ea6b39fd76 -c1e5295022cb39e9cd471b7b0b3f9d72da99deb0615d35cc22f42dbf5cfb70dc -6279fd520d99f32201abf25e621cfe1d37961d9c0ad36ef3d9264c547638152a -be30812eae30521c3c775adf1959595a43d8a9c4e12d9f9ece27a0c9b5f45e38 -8e26a39cb0ad4e25ab8f21b25ad1b106ed22af7947ea8ae4dc17b9facbc5e22e -89a91b046ba4cddde69c1997fa7f4cd949ba3ac4b6e001475daf165b9432dc70 -6e30aeead8cc342d94b20a4045a331175655d6aa279627efc0fb53a4ce66b68f -a45b5765f0c1368c02c39418366880efada9c81e9dfcee2a9443eadb1aa1b209 -eace5b0fe59ec29ceadcbb5e9902b4cbedc5786ee430d30d2ad87b4cc744296e -0a6790d555ad3370c4241d355add157a77d9ab97711af34254de54115b4318b6 -528051b275ff76cd466285941b741ccee31bc492d4f92a3281f6dc36cdeb73c2 -ba6eb39ef2ed5e75a795d89c78a49e0c62df0959176e3de1337ec0011eea5841 -4c44f9680262fc604be5d51e04e69668379b034284b2eda1c7495a8032ff6871 -2070880d3da11d49556d625ac9f774a2e5836f36097467c3559ec9db7464cca2 -09f46aeafa09908ed25b3fff86b6a495c2d3e80beeae93b31b9d95e14850d06c -99e2416db06fc949761a01a98a7445e04de2a89247599e931215ac51c2493912 -bd378c2b98618bf7756fb17992f7b27feb5fedaba21d5fdd0f24d935dac3fedc -12e6082d19a99b96b8463d0bf33c174d88e687671fe9295f747bfc10b720d62d -b5ebb3cc1256 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMSY7 -%!PS-AdobeFont-1.1: CMSY7 1.0 -%%CreationDate: 1991 Aug 15 07:21:52 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY7 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /minus put -dup 50 /element put -readonly def -/FontBBox{-15 -951 1252 782}readonly def -/UniqueXX 5000817 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 -05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 -b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a -f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 -d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2 -75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6 -17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c -7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2 -72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b -98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2 -24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014 -ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a -4a93d9b873912be368f3f300b584a7c5dcdc5e3f796d62bd191959cd043bc0a0 -108ac1860e97e05173d3b979ffeaa815405d9db68a72c102cca8b3becc60437a -946131e0670abd3348ce6dcbd3bdd4797f83472f944778fbeb0a0b93d8a4d446 -9bd54ed42cc57e2736d312a9961d759ffe9b3c98b7b27e4a4f067d1b37e5bb99 -cfd1b895c4bf965c25c21028cf9669c5e8e7e3ee85a5afb8f60e436a84164e91 -ae86ef778ed1f461c1e2f0a520be7297c2f256549c13a73adcd7e18f38d442fc -97c1a047f71e118e524d7bb28b0b5ccd466b9fae8ad3511a6beebe684eaff350 -12dae83db9f4a4bc77838081b25dfad9a2f9bd4b40091695d05925d5e8c8f975 -d2b1aa768834bc87e3a5f70f1a0c55dea887fee957a15b7a3c26e2467f35369a -394937b277f888e534406f4d247303f5331a7f435ba5ed3a99ca0b38ba37d619 -ddaccc6dee082b7718fbd1a8be7055914fc63c54b0e69b52742352d7ae51b14a -c95753b097 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMEX10 -%!PS-AdobeFont-1.1: CMEX10 1.00 -%%CreationDate: 1992 Jul 23 21:22:48 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMEX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMEX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /parenleftbig put -dup 1 /parenrightbig put -dup 16 /parenleftBig put -dup 17 /parenrightBig put -dup 18 /parenleftbigg put -dup 19 /parenrightbigg put -dup 26 /braceleftbigg put -dup 32 /parenleftBigg put -dup 33 /parenrightBigg put -dup 48 /parenlefttp put -dup 49 /parenrighttp put -dup 64 /parenleftbt put -dup 65 /parenrightbt put -dup 66 /parenleftex put -dup 67 /parenrightex put -dup 80 /summationtext put -dup 88 /summationdisplay put -dup 90 /integraldisplay put -readonly def -/FontBBox{-24 -2960 1454 772}readonly def -/UniqueXX 5000774 def -currentdict end -currentfile eexec -80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a -e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4 -d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828 -e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4 -7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80 -523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7 -d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf -0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d -6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c -1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4 -414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1 -400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2 -1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b -7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f -ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80 -30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f -c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95 -d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2 -f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3 -d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d -6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683 -4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd -1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3 -9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf -a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca -83fd0f12cbb9773faea8074d8bd9ea37f030d986e98005cbed3f1c881fa23c87 -f911ae5d13f56ff5dd1a25442783ba213bb6a93e276ff63d12d224f4017e5166 -ead00f973cf9db90af1dab42dc6f1d2ae4a284fbd5136f805b3398eb0c50d783 -8c179ad372384b236c64fa4632bfd5bfb64b748442f9d8d0605382b98c4799f3 -ad25c000601c01996c785779c26dff0c1319d9f4bdb375d923d76f226f334476 -2a2ccecd95b30de86ba86f43d999e56e2780acb74ae5b054a428d318260f8e05 -c15e5b0e06815fb1d876d613349d284463895a8a015e976b88cdf1ea950701b7 -8a9d3b6995b674a1a64f7819c1580ef181214231c4da92234b108aab4ea41589 -3ac86480441d5bb9cebb69ee46f8ee3a2e190783243fceec192db6cd794e106b -47b3e879676a2010cbe354ffad34dd897c5428e65d3e67a73360998776ca3ca8 -9c001e17f5c8c2f38d08e1b4e072384ff64ced8259739fd20ebb12c8e0e58f17 -f8f3ed36866170dcb0321378226d029eeff42a3b2a175677af5602cebace2d36 -37414bc12a8d9e9ff85510db5831bd86ffb9a2feed6acf21dad414f54bebf3b0 -e2f2005878ae109d8d81ec2f7309123fd86f556dc96e7c7e2dc9b2efe3bf2d5a -1ae7599d61e8c1cb1f2fdbb5636f2da5e6960b0fa3e601de8e3f294b8023984d -0cf0f61aa9f564fe3a2b647172015362c5b6205190b7d9b7062d3b73b456dd60 -b262b13dec5a283b71627662242f22a6528729bdc457e30807aa62c9c2dbf9b6 -e89de730291405a6e3bd95dd31acde9644840947242ebc7e7c1a77a672cbb56c -3e791268f2ea6b8e1bb7c64522b22bca05905fdaa697f084238682fda5e667ff -e27281f1c543157774b65702c675edff440e027fbd3ab5b98878cbf040014455 -e3a872e956fbae99882885060698e64cd81db0abac0a35627dc8ec2e9b704012 -3f99f5dd70b91b7d75826142856becef45c966dc3a845992af89206db8a79289 -497bcb45427c81b5e4e097f7d8d11dfd683f8c191f27710e540bf6172e6a7ea3 -b514070b9d243fc31b9e8b3f9ffa2606314ee8a73d047a612b8b7a2b93e545ea -a17ed99bd0f39037d33346f55e0c8fce9175767f19da473cdaecae5aed360f30 -86618d84d61ddee6e89f70abeb83199ee6652db67299cf6de6b363f146e554f9 -6b96ca03e351d249163b61aaf8bb9e1d77a0774f30b6967de477539f2c16ac3b -3047ea940709d5206a8c1cbf82442c9210938d67837e800cfec13d6aa3ba4ad2 -5a663d4959c11e116b65d2331933402bc9d143eb96d53f8cb5a454ef6adf037e -e4e76ff1189c01ac981e1c2de02e5f76a0389ffe20ecd918ceb3cc14a586c2a6 -f4dc0b563137424e5d3ea7919da8ab8c23e6dc68a0ce743fac5b1eba0acf85db -bfe31dd949e00cbfdae9f730c871d206a182cdafdbf22e772a29824c7c2ee6c4 -310f08782fe6ba671c5259a4cd45c38493c3fa2fafaa6ec2fd66980b6e0ba7dc -dd7f9ba303d82be6becedda4c18e351e21a520057b98e217733a6b48585892bf -2de931c1fb49bb3ff3a6e3f973b4d5bd205d6f9bcd010b2376b1ad08051bb592 -c8cc08ac7a97a281001f43b2ff2f0d99205229b868c4589face968b286aa81bc -409b9bddc21f9f9855d739d026eeb3ea3477bcd8e30ba144f6ad2942b1f3b629 -e3d73705b734716290087110c76dd324a4f112c49214ec3772a15d6f01cf7147 -8df8bc20d4f0eacb8bf7ddd50f777d790850ca8e8827ffdeddc1bd62e7c8764a -94f68d42a91fb72d9f23d989219578c03a670f0078df3333cdaa5bea49197cdb -5ed702f67368ce43f8a2638adfdd95748a4509d6890c7e74b0677298b2332889 -d3ba74402ba802652be2c92f085e45349ca9961097805bdb9cf3a3dab3f9b194 -79f0092c553e381e20f551767b832ffc567462911e4c1422935db29278a2a04c -dc310d3684dfc3ea1e2d61086689f67f44253d692a91590e498c26903b419ce2 -52f4cc4c4a1e5ba36b4bd8cf80269823c02f860d4715d0d60854f00785986d0c -334eda7626c27573c6a4e1f1347a76d44c312fc50cf789440a8f70ebb0bfa585 -327e9cac8f3f2bccb844eb0dbda7372a9ae068c4d5fe98e8e84804e93ecf5aff -88ccd19d794ffb8f9e803a5f10c86f0fd6b3fb3696a9cdeefa810575c563519c -ee458762f45906ca833195d806efe5d56298b0285596cd4fd4eb31cef8726a5f -7a8bf001ff24953af1698ab9465d5d2ff9e76470905cf00b6a9a563f38c8e028 -3e19ee598dc848fa01d93321cca6351932efc82bf4057d7dfbd34dfc5ed60a83 -7e325d524dca8dd6f8bf75b994a8ac6740df3ab435cc8358ef7b035f1c8ad7b7 -dd9c4e56969a0f5abb68e04d9bb789294e316c327e71f9ce06fe3175331ddb17 -ed87dac38f8564afd0ddfa7f26b83a30b603d132dd1d960d08cb88815dea42f4 -f0fca10964e343fe8cd754eddbb9a991007b7bc393f08b29d8f2b2adeb88e966 -84bfdc757585689182bbc3352c57a434c7bd5464f151646ca7a78b7af88bab1c -c66f827183800e2c5c743fb03f4b60d396325cf1cc4a539e32e111eae1c823cc -8c127a32dbeaf51f5e200dcce6759e13b7bc577055e15772e73772ed0f92410d -1b2cce55862846f7d990c941b3ddb49a0813172eff3c943fea30e3284e61b671 -9ab9690ab93cd82e8e3aeec31136bfee856e02de3bcfae6fa326e104acfcba6d -284e01199a2c6522261e0dee189d9eae5b45f8248faa14098be8e10317ce7570 -a2289ae116a72cb868a6f4f3fd00ccef636a0d3a3917e2f50bd2ebb57fecd1d5 -de42f083f032cdb65846d009b02974cf170e42e367c4926b608f52ade9de82ec -eae10007a15aff196b215c61b1b02a7dd376844fc08c2374586b24ed573e8f31 -30ec15288e4c354a1cee6bf99657f07278933e59b5897e54dc8475ef33a504c5 -1042a6c96a0e003c4cb525dc97f13e62d250c1c07c10b475b18d90ea878b5e09 -5759b686d68609c93263c7db41bedfb61cd3a34585fc843f3b8fca94ac310fd5 -5f1710d2cc9f4a095d9e864e753a36f8bf8ff96c16a078a4175db59c90c0f1b8 -c16ed94bb52b23d5298a60d01c533a5208a4d13414920e53d897e9238b471f18 -e7f6ecffcfca7e2b51e1db7104d55c63e717584dc2d5c578c0f7d772e71a3055 -8bbf8c7273b23cb16855d58ebdef6ed5f61b2b0b77dc52c13906f97b88a12cf8 -3508933a9b9b5ad9d11a359d22710d440cdc903b159df0ccedb27a6835c0a316 -30c642ac68479da45c6ccef48e59a79926299c2670ad3a4d568f153ec3f18148 -f5dbba52bce098e746fb4e45ea65fccc128df496fc70459ad574b2b170c71097 -fb9c2e29e9c20490a98e887fd1a7e31bc129f3f9413bea5f6f0819f9ef443503 -fff7d456194c11d9f4e64d27570fbf2ea3e8f20f67db81b43b7712587ec3f609 -7dc52284a1d3a39d0337f5ae2e8c0a00453d084c190ca8751e677e52c0ce20aa -bbf4c9392e1abac7708da434ea711fb02382b40dc656d2571ca966201229a503 -730c1dc6b8144738db8a6379bde4fc1cb7a7213951d4d552f78e0fc333adefca -b15225ac2ae505295da8cc9b735a91c36be16215f4e40fd614956a5e2128c393 -b169c19114c593c591febe162da7a68123ad6a50454a9ade64f70fcc8d7c6ae0 -f8855836b5f3cf596590c785193833ec8b7e214711cc97ea6cf21a27c43d1282 -a0a7bf1d99c6dab4b402af458c1235ba4fbe064e8691b28cf2ffecbf252796e0 -e986c9908178e7061d2c108ea0baa6fb6225824f7aa99b4178482643e3c8649d -cbcd3d2356136810b0f120680065dcbf6103872151466ca8d8cce2c38e0608a7 -282663e2ca3d7f77f43a272c2723a7e6729f3f6a9a85a7608b935b3853947240 -2b1ee879b65d88515a2753b1277ed0fbc6fd2f57de88e77dc43392ed6a90646c -00575c25a49372d4ac5cd6efc8c759053d67cdcdec95a674a9d0e47269ca022c -1c68c6477a0719adce72b223ad6c5fdd795d37fe7b997800863baf27ded8b5c8 -81846ba1b1c1955403ef0201c6fa4a826c1e43cd9c0582798ae58ee10f1ab02b -44da6ebbacc4aa922d63f64b20d45e269334cc9ab5b2d6c20b6248f4a71cca49 -07183a13e491e1aa14c97e524f12ebf354fbdcfdf4b1ed9367f3b42d32eb20c4 -2cb2837367fa254dc9d599eceeb58a95c9acb60f89157935 - -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMMI7 -%!PS-AdobeFont-1.1: CMMI7 1.100 -%%CreationDate: 1996 Jul 23 07:53:53 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI7 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 59 /comma put -dup 75 /K put -dup 78 /N put -dup 84 /T put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 111 /o put -dup 113 /q put -readonly def -/FontBBox{0 -250 1171 750}readonly def -/UniqueXX 5087382 def -currentdict end -currentfile eexec -80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 -74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 -48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f -15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff -da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 -bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489 -e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e -3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781 -25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead -4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c -b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7 -546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d -e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749 -a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82 -ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96 -0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0 -24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772 -0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2 -364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba -0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279 -617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3 -80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f -5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c -8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de -62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7 -147c908eaae2af4d09272289231f5d80c37f63f858f713f1348f3519606f2b1c -b32498b9322c2ec5d38b8d205d10acb61335fb5c8dec41461f5c767e054e691e -60a73f6ac42bf38f9eeb48ce671ef7fb68a7b136f99f7564d0e3df036ef98ab5 -6819d7c66223c1123930beacf9e67647c427bd78a9f481c2a573a1fd2e21ac71 -65ffd14a7ed14ae0f20425e8b3d861b6373a0ba50fa0afba8e38f2f1fc114dd3 -847975c59686ccea85a507a2f113d40699ff037af8471385851c88304c3044d1 -6ca1ce00e62e97a16057d153e3cc0ec64261f9eca87099af409985d7893aa6cb -23264f4180e917e1c34f4b68f0f4f93cd078a2f1d842f0e22c728984a3426653 -816cc64fd2e79df4fd3ecf0e4b1a1a13f97435e6b84e7cfb410f2be52cc8e480 -951d13449c8a9631ea081de5e4f4813e58d27e0952638b7d0dd1c7f0a5061ebb -6aedb99329b63f86b8d052f3eb5769a6a26238d1870daa539daae91f155f8e27 -0120addbb7961f8768261aed2e775a4e620127d67ee977744dcd7a077ea29f02 -1dc28f13980d5a4f3a4e9a4c41768632634c666e0a0788db338f096228d8722f -74a139d8e665bd8ccf7c3a6ea2a70e39d96d484ae36c56a5537f6bd27d220d6c -0f1a5ee3276134bfb0d646538878e63ed7f69430dc06bc9be26443174774339f -c86905b8f5ccf562ad74e8d979da721d9d2cc3ee687b0dac0043238d0cc8b5d4 -6fbfe1340166dc1724f93d19efa5e6e7a8ff6953aa8e9b46e05b87a6cd7a3b50 -a404d9f85977b135ecfd70dad236c147f506b6cc28a19cca657d34696d6d8608 -197d13d2c4b10b83958b6f0ac695ecc01664394a229f527a577f10aeeb3c86b0 -b4ed99ebb0f512ae7287bf94ddaad921f0de9a7a48a9ff73ddc377eb8aaf9e53 -bf810005c4cbb6e9bb6213105b4f93e6a8b70f89b473542cbdbeba27f7979c98 -46995036fe40805dcdb4ff428f8a7501a41b9d90ca7371c55f8a62a581b2eafb -e2c157da72ea3b988a3c782fc5e7e47bedd9120d9ecd889761cd7c9377ba7b30 -f4f4a21f8524266134f997d5d5dde34697052dfcf2998001e9085e8267cece01 -14a07090a9c397d5dfe1a887e0d565a4258704d6c03466e08e6b806d6d02d78f -0cd93eae3334d53071af55d544f4582e070cf8dfb0445fa2f521c48eab605075 -208f7ff7d4a9438d4fae0ba803be2bca0d74cc4a95f95e81368bf13e73e8b8e7 -cdbcf86f13d106410e10d52df3c224691cf1bc657d8fc56b25b7b882700724f7 -752127c505ca581679b858a08a70927c4177713140701abbb1e30d616370d823 -e348abe9def37688fb8e314c4f1c5766dfc41d189059d21b6230e971415604f1 -961597c501a354aa14bb4bf5d8dcad5c0efb391e158fc4a823ebd6f6b5599de0 -8e0131ce8b1a6505a08a236241f802966445579969e272e53b2026b6a1d8f663 -2ec2e07a2f4c9fbef5f6d78883075a0b7575ea565315d2e42d1e9f16c99221c7 -da0b77907657aa020e46f9eb4a27248a8bc6de31de22e9db3e4fc7742d865943 -63d56f5ad7fda25741fc9b6c56e07006699e3abb7dc30e9f1cdea74392ceaa6b -0fff7e52b5a070830e8061c1042a32099096e2acf5a233473c9cf774994d3fa6 -89fd5c965fe943d77ae971488a6878ee12efe60b5bd362cf6730b61cc2e15de0 -cc50d238d0fdc18e30dbfcbd3282cc05621c7954dfdf78a844821994172b861d -8a064c5ddd8f187121520e9b7591c18b70ca17f658cfa0c11cf5bf3ac68e8187 -8ebbd0b8bb353ac4398452356b6cd309b6d5304e3d40baf9b6603548b18d53c4 -7bf554663751b2900e27ee1e46dd2134992dc683d2790ff48039adca64a9a7af -9239d64d37b593307b10a3793784853eafe1dc7b53efa215727eb7dbd4dd0e8f -7f22205c2305c5582aaabbe1e04bfa0f014da5eb4d4db37edfa08ff22102bf02 -25c17ef51f3b29331e5eb582cad31e14a089ca97a1915536b6449d944cbdc23b -39bcccac5dccce5cf1c0124f1d508ff69303b3f68588851a342c118bd60e170b -25e7cef0102c2dc4aaf045c339d5e21da358cc6341567a1ceb3d82bd9fb5c6ab -ba26bbaaac92e2d4808a482f7a86a9b9b7ae64e282a4fa9c8b180dd5a4223995 -f2bb360f43c57dc0001c3bea49e27e65ee4e10365ff2ccfd406ede218e43a0ab -e95fcb6f6ad1771ed6f1422ecc03bbdd46a86a64664f75fd700775fd9b8b27d4 -6803c6a5c06cbb04b585b5766447870eea063c83969efb11747e5113d559df96 -8f2c27d92e3a237bca8c181fb3c82bd75f4d3ec8296e5adb3273d63b2c124b7b -22c6941b5709a9e4ad8a771c7cb44ad034b0802ef526b0ed52cab81fe4cb4b3f -5dc72dc5b86b724d32eccc40def6313bf73bf16cf56ea92c236e3df997a8c4d0 -1f89ddd7b2fcc8981e6731ec8ef80cbf665ba08d41486bb48210e0fe9e8d9601 -5e538a0c7353bc5bb1e6c70cc8a5b2bcbac6a6a1e08b4e8c13b372a8942577dc -9779de2198b20b7552c4e001adba2b013809f31167c1901a58c1658eede633b5 -214a79bcaed71a86b4414ff4eeb36bdc2bd67cf7c95ca9f01520c718ea59905c -bb838b367f7b3fdae701df64c3f34fba0dce8c884455d0dea1ab985c9483f91c -64597df66fd19cd2b1d5aa90d5d0d98326ffb26a59c2c982e8c4b029ceeaec40 -2c106cb40913440d26f8e73d81cc62727c97cf697f81aa040378ef25128968bc -0ab6acae0ca91d4398fb9c10445d94ecbe315400f42150b2f8cfe8dbefa745f0 -1a4e26e79c189054334bafb83205854136a68fc375f32057f5821ae684d1de32 -4c6d40c5ac0b7da9ab3e04bd51d1e2ed10447dd5a990badb93b04b5d79825f71 -0b21e566fbe8acf3eb06988cad4f2ce3ee7ea67068f475ec6c3313794adbf23d -51c84dec0cc0568d2860ddf75dfd2f9fad70a71701729d744dd543e7f37497cb -006694da423d491220598b43240c48fec615c5300d4b9149b8f7754506eed3fb -d919b8fdab8863f6e224029c939a81ad91b3189823fe93a7a8346404ea422ca2 -120d1dd287e716771fc3d0307f1471a408f987986914d1531dc227adb927906c -090d360d801b802dc8f14afdb5f85031d77a48f6fc7b4c291bfe77141843c195 -ec2d98eb08c50598b11b57f14cbbb981b385fbf2601ebf0a2193fe3f2a0d016f -7eda8341c2e842953743dd5303bed4321b6a6086f2529acb942bb4867b601ccb -0e033f1d9ad071349425abb30fc5c59be2f8de422825a0c65c9af229367d88cb -e64d10baa696a7d9234f1d9013b0230e3637686f78218d92f3f68c940a9c71cb -9b9ae607c2531e2d4c0922ee3fccfa919f564d54093fbe4f7a38f35fce87f94e -1f9852ed10f0e2589366b8b93639187389cd6418b06b0d24f4ae84ccc7a47eae -11355a44eb6702241553ed7bf24d711a966970efa823fd0741f39b8289ca405f -89b6778daff3790cdc8b1e3d92d3d3576dd09e9be6a0fd0d7ca5b6b51592e0f4 -74e746db72a8b8ac44e0f1514e20d6fde235ecb35c92da6e3d713617c6cc713f -e295b2789dab9b86bfb429277a9af1f48caeedfb367a1af6407cfdd6ae871400 -c5f6e4aef1f8a95aded9445aa935e9d029b19912fae49d8c0813537a1f83a397 -5d3d503416962627e7a064486bca01e9be649e9592837808c289347818c56d07 -ed37354b64ab0239f279e8502e086e6d5556db55c78ccc5eaad23fd55f02703e -3a50318b84528743570cfc45714e4f2a87168298c1730f4882f24542fe34d407 -008cbf83bd09afaee4816427112a5f7764d6dd4ada8711d9a585960dc1d20f4e -fe80fd13dbdc18d165c8c4b96a523de74b4c6865f1ac55fe63c39be0e10abc3e -66554aba2b3f1fdedb01dce1aa8652633b6b157c35513cf96db9f75924dadf1f -ddc6d3e66fe86db851f9ec9bf9eacdfb01e9f82a6f6e1522abac7cdf380372b7 -5b50bf95413a33cac888caf762dbe3e94a6b46a3d64b1bf2666e00cf6afe2c15 -8aca7e1175bdee5978c13492775b0da771a26a3d066674e6451121cbfff3ef13 -67926ecec8cdbc68fb60b2b87dc81f81f3e7f36db93e185b8503716da045b4a2 -92407e0dcac3de6e0421db593d2ab73786f4e5d2b30b52829fb2ac70eec5c9e2 -912dc4915a230c6244e3dd2e88af1c6af60f9b9c390446b459fe1add8171cbd9 -6332b29fcfecf1b968d82a16ed1790dc5fe720b0ef1d69b8a9b84ce4907bd3c3 -0a5624aee58d7bbc275cc6da5cf77e64c9b6ce73b17f03156dad97fd1f5fc095 -ebdc92cb98cd72d097a768835011f83f4a543606e2f58e9264c4a134bb2f1df9 -0632e52a1ebede1ee706d6d0efcbf96943a3be71eab3068862420e57ce79a81b -a4aae9e6442daa2a4217e2546b29794893e30bb0bc39f53dde14413b308c37e4 -ec9e1419c956f96658cd17ea4fbfb62e4ded3d7047cc88e10bd5a32663ee8ddb -4e07b6ba4c45026e1281c09f9d4ea975c7158fb8ab -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMR7 -%!PS-AdobeFont-1.1: CMR7 1.0 -%%CreationDate: 1991 Aug 20 16:39:21 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR7 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 10 /Omega put -dup 40 /parenleft put -dup 41 /parenright put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 61 /equal put -readonly def -/FontBBox{-27 -250 1122 750}readonly def -/UniqueXX 5000790 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 -0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 -79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 -2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 -b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d -823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950 -93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21 -c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644 -7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e -13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03 -22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56 -25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1 -c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a -d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2 -b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e -2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd -6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4 -07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331 -51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6 -0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3 -d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1 -34e48d740607ff2e7804164a16d47735864db847c97335e6d4215cb99911a1ec -015a3edaac1f28fedd56d2467130d07bae9416c15f0827d27c6c79f59054282a -418c12c157c91223a829947f47592f7cafd93ca182b25a73a9419127e3b12a9e -5167ac3963f2b019b338ac46d63880f94dda4b538835884d2a5538c85528d6bd -977f844d32b43b0e48caed5a4bdabcefe71695d69ca784d64d476eddddd04fb4 -dd6833f4b71645d7f76cc408f4aab6476e7c58a62af2693158dee00e15147afb -1ad390821f90872f0ec9c322cc6823a6837c5d9c9506c8dc44144588283e02a6 -db49cc3281594301a76a0573d9c95d986f108e988d3900ebb6edca7b8580d4dd -500c8d5ce83fa8d80cce38a5a3647ca9a87ce5e1558729e80e20e641cd833d27 -f0f881ee92ed59dcc51d037d4d869189c996959b7a0d6c35f8612381133ebb4a -608587e67e0fdf52cfaaabee88cd286475815456a89f3885824c1d7ed2e6b7b8 -aeb41c9df9493a8b534f8a8fd885ed7dbcf74f1d9ae9c598e305e82f4dbe9441 -c616cfb31195dc5864171e112804cae020c5ed0162f367d35773680ca20a42f4 -988a84aa9ad085056c3c37f858b8e1e050564539a5e49de198204c46929695d3 -189624e2dbeafae6c84f7554f02a0e6516277a478118a13337e1185c3d23c1e3 -cd1241bfc2454ebcdf3532db75fcbb9d4bdadf41fe191e8a7e73746b6829b5b2 -a8cb0cdf77f6cd864364ee9950fa88796d9eb61bcf21960bb95f6767cd58cd71 -3b8b0af3ff926cdd1d121b391830e040290a961b79b9041dd33e8c6f1712ac21 -92b624389fd7a739320f6bd71987819687cfd66595cbdfd5c2a2f1e908286612 -bd58cfa49b8e2080cbfee7fa1958ee86ad87130976e18d1dee4ecdadbdaa0a85 -d254e8565ea03d7d74baaa2f2ae85307cc4d3f1ab3839e77ce6412508092746e -e67ea260cf4dda2f5d007e4517a240223050791c2d718c20dc7fb1d285399e18 -91838c7e41450cc88bb3f8a795e38b1b8473b2920c115faa28fdf0a30ce6f41f -30e3684268deddd1d1d5fb550cb71572bac10d6b3fca6d434ccd1673ac17b5a8 -f9c580d376580fe5da673aa0acda29ca8482169410a8a127f41e590b3b498d47 -a487ec7c434a9e8e8b824fdf56a42759e07b38cc537d6a3a7410a71b003619f5 -9ea1cba489220ede7b504a047df332ba29e44d05a2e91a76bcb5a029d9e6df31 -4e9ba7a5b1127ab0235367ee050e970a3427942dbf20ed1e84c8e30f49592e94 -1e9d98365667a8d6b68cf992d30b9b77bd34815cc5286664e8409d1a5962ce25 -f086658b56a65e9612e4b058d03a7a723b1887928c44b1cfe5bfe1590a6d372f -e01e354b2a75a782ef19dbf4315c6e2b095a61517da93696503965b720a7ccd9 -ad214caf370fa7a79c4436f7c1a950e8d51a926d26952c82bf312453d1d8e3c9 -b1a14154368db8901987b1c11a39ca2d9b9f9f46d08ccf61099fbd6ff65d9d61 -6c5d04ae92d965d6fbc967e54598465c50e0e652c23d22d3c57dbfd019a45176 -6576335e467c41c024f46b904ed6b9b11e32042406f35207727dde598a53b9a5 -4579f8adc256ca73784fa67691c0c6b265c0bf359f48487bc02555ef8f91fe6b -5ab927c3df47063731fd04dfc22a45303ed4ddf20623e7909180e2e60cb5d35e -496ea412c139464656ed52649b1a4c76452fc5a933b0e4d710bbef4806d6f77f -7744814001ab6781029f2cf5c1330b259f72e60c5f2313972bb5e81afb8e5e54 -ee5bd3df39b998e9821e3787 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /minus put -dup 1 /periodcentered put -dup 2 /multiply put -dup 15 /bullet put -dup 17 /equivalence put -dup 20 /lessequal put -dup 25 /approxequal put -dup 32 /arrowleft put -dup 33 /arrowright put -dup 50 /element put -dup 54 /negationslash put -dup 56 /universal put -dup 102 /braceleft put -dup 103 /braceright put -dup 106 /bar put -dup 114 /nabla put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueXX 5000820 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 -05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 -b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a -f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 -d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 -3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0 -aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a -9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4 -9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa -4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd -df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79 -c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074 -b64c4302856ef184e72b8e52f8eaeea96d7cc14bca7caa95822ca41fddf44eb0 -3bb40da5b3924d358871e96edff313a6ec2499923dfa1949492a642c97bec26a -3211dde8eefec916a57acd1e634dadcb6a63d42213c71983d04d3090df55f0a5 -b7c9836900216207d18e17c3db80dab291c185465ec32366f135d7ad7aa76942 -bd63888a2bd5065497d506848893d2a605b26c44783988bb1a8a1bedf197592d -7a0180e49420396162a13e4a9b59de2d0f38b7dc25f730b461b5da9b221bf3b4 -3d713046ddb4fec29cdc420a8fc6aac27530d5818ab56259fd436bb5a73c7abe -84c08e6aaef6ce9eeb098643abb517e194f608ef6da255a292f0146fddf5b75a -c961836d838165d45a52345e9b5da40481ccab1bac422f0e02278f2ddf7a4c1d -d1bae5851e9372f9b8ea2e29c3c71f455db7642430ba1878df32be678bf5ce0c -48bb1290d70cf26785d4fb2e6df551b47414d2fb3d85e630cf436b08484817ba -cac8c295e2c6fb01b523323e40652c04710ce9828743c9aef92bdcc05edbd9c4 -96186ac8f1b4ffda3a6dbfb4ffce69a91afb182ae013027c15abeed6d2075a59 -b0f5662a741702ff73224ffdeaa42d29b9b5b81ac347192325f8a377fe9eb5bc -acd8204054b335a6d75bab5be98075b720a8f5dbf285b0a267e25bd1a813c353 -82d26725a047419263aec87da1e1aa2a440afd0915e25a8a28485864c1df7b41 -6430c57561e27e10c66002acb8a3edc82d86ca58d58ce24a90ca8e0b12881428 -a5c4cf0eef500dc032c2feb578277a18f3495f5daa3849c9dd04bd513dbb30e8 -644edbc79b64f7c22a8e7590ab84e607fa1e9849c7b5f27e1ef21661898e6fda -d1271fee8ed88a3bcb0e281458e1c7ff0068a7d94b508e06feb5ae961a2e2f0f -eb80e8d466152ad24407313fd123ceb54ef1f8ae5b9137a89b4c2c782ccd70d7 -e3eb0b15b87122a6c33af361c19bbf64f7c192f0b3a319bdb5da389ccc0b9ae1 -111cdfbf8bd1bfbd7649cd4d262a9e03714a4ee46a1a48dfdcd87c842659b8a8 -dc474d69d998050f46041693463b558471cff92cdc2c29b60254fad319ac272f -8f54489b63771bd182b92bb869275e0a4f6ec1de4830f49cdad6d73de04b46d9 -1c62086cede7d96aa1bac32defbec9608f963a0a09bf7c27fc5acf04e52b8889 -bcfa27ec4527cd0a4693fc11d8b52fa742ffcfda7a893e087e4d4e2898383916 -f19b7273cd31fd7bc82d02b3c2c81ad2849e6cdca5a03f18461aa70dbd7f61a3 -6f6461a5e540e95cb0d8d287be12ad032ef029c29d47f15121a52639aad590ce -c0d83f8f97277a08a67da5085c608b10a1f1cf498e75514c67fc7247cdb4203d -5d72f12330385154bfec076b07d8e5a3e2a90830dea7e1f3d02b1907476c4c60 -1248af0fa77faea617a3f26a78533702beee40cc156c2cdc025b50c393286db9 -88aa919ea0d1f9d4ff734d98759f56bf9b6377e960485f0412bbfdce01492e8e -900f22f0b088fea71e6d57e798efab73c11dcd367b7d0e45ca59c806feacef5e -d257296989838e436b0f6e80bc4b989a7bfa1dee1ab186f0d001e0b50494edd7 -7b6d671a5907e8fe28dddbdcb163000060dd454de2aeb84522b2c047ee2ab0dc -aa489a2a8affb95a50e4104176ae3dabed9d0ef8128b567bfbb016ad8fb3ca47 -8135f2a8a71fd987d3f9e87f864934756a65cb3f5d6c3f6c9ea796e85aabaf56 -79075315d18f420d037f4a24de26ffb8e1aaaf169665759d74e73c7661ca2723 -4d8c33fd9b5802868360a42d722ad913dd1df87ec624aa643a648fbc66ca9552 -9df1d29fe249d82d5d7654d606b1d6bd814637ee73f38eb1eacc6a46c4908a87 -add4692aaa49f3fffef89366fb74aba70cd115876c9c1fb78930ac59d29921b1 -f5e67d9841ed4651f34bcbabc8781e79d3b2c141ac89b37a079adbc5779d0d94 -b0cb910725b1e4cbeda6a58d99e6571154eedd378c770abd8b7d65b42a135688 -073519669324d73f0891ef83946156642a019cf0ed1ffa216a298399cc7ffb58 -f3d453429a712bca43f77dec8e89078c98e3692925974642309817915f1278b0 -97335251a9be4a6a6569b6252fad51089bbc91facadfb2a473e8df6273c4651b -12a57f7c2735996642e7524980c5f58c2f651eac4690530a9263b566e4296846 -650f5db14699d6c5c2db390fa85ad243c250bc399b8e67e376bc8f1316d5334b -e276b3019b932089b95e15db0033a0903a42a701deb64518634b9055cf98bb09 -e54fbb51e31dd69849c00d0c160c2a9a253baecf9c5b055b7568d547635b84d6 -b1f2fe3d074fce320ed79388d034ec570f935dab98c42cfb101c8d1e35e3d36b -ecb152aaead0dfbad8ff645eef0a8e5f515b45ec3f3ba0cfdca784c16f1934a9 -7b9a8c585434626d2c63b629a0fdb72181d1cb4bf77f19d1753d923de2f2755b -d2f23f8dca7605741be7d01da13a608fc090077878cda5897bdfab3028041c68 -1107416a6cefadc1758ad359197dfa9da8d57206f48c0e6e8571ac91c7e76392 -8a87c49cc560a8c7e518eb91faf4f9214c8245d5bfb7002bcd15472373095c44 -e41996b4eaca71c31ff1486aadee4fca3ba1c266f897ccce99471647932cff2a -a6f22eb29c56d7c52eb4d24ea0ce30515349219cb7831428b694ddc0277738b1 -747557b5c500787adfc2ed266c9f754a9ef11b856c05dbe93ab8e8ceaf36b4a8 -c4d658b331bb1c0a39f4a27ee58d7b868ffbee9f2b4a9a04df3aeb2e3b37fce2 -596c681bfbba5efce13ad045eff1a90f6ee3163851c315e0c0644373d187e7db -0c578df822dd1f4d7f370974da1e49203cfdb96389ad11c3deaff93fff81528b -fe828923218745b2c0a04b2ef7b3892c3b3c63318cf64ae90ff45508dd1f96a2 -c9e53ee27784c5cb3d400def3b7efcb12b5f3a0666f38ff3a631cbe302d456f1 -3b97d7390591714ec0f4176689808e820e505060c9b1096675b8d9c3bf12dc5b -3fa883a4264fd03972c298c54ccbb353743c205b257327962b26ef90a7740a82 -34b0e6ffbdf432f78540f02f31975289bc0fe05310329180fa3abb024ed6a8f0 -5cd22238adc7787e0e04731c8e6d14f4a62c6ca364e92d78ce9d6e638fa8471e -155fdd6a -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.1: CMMI10 1.100 -%%CreationDate: 1996 Jul 23 07:53:57 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /beta put -dup 14 /delta put -dup 21 /lambda put -dup 22 /mu put -dup 23 /nu put -dup 32 /psi put -dup 39 /phi1 put -dup 58 /period put -dup 59 /comma put -dup 60 /less put -dup 61 /slash put -dup 64 /partialdiff put -dup 65 /A put -dup 70 /F put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 78 /N put -dup 81 /Q put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 102 /f put -dup 103 /g put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -readonly def -/FontBBox{-32 -250 1048 750}readonly def -/UniqueXX 5087385 def -currentdict end -currentfile eexec -80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 -74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 -48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f -15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff -da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 -bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792 -3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6 -4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a -c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876 -d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe -dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18 -6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22 -168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0 -26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6 -84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2 -b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc -55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7 -8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316 -ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325 -e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1 -24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd45416d -f3459365434123a76ccf883a4973bab19807e1f0c4bab03a45f7ed69ff2660ff -3963e4def11001eec4238c368a39d874fd30b3c14f4186ec7700fbce22abe468 -eb32baf7b0164f8f21a9b5e706b91411faaa44467cb2180ab03de375c1ab93e9 -76e11ab92fdd4a7280a6d1a8dc65c4c89d04c8ed6988045a2a3de9a4c7b1efd3 -75b6c82686e73bb775a43d527131a99f996092d2fd0271cbbd894159d9c4349f -963f8cad05b7a3474a493fa92e3a4c36c32b4a1491f478ce1cceb9e8afd88e05 -14a1a9794e2f5811abf84a3cb6a981393332eb618459aa41758cc7697276d0ab -1bd1f12e879020427a05393d90b8b1f3a26b29a774cb303f3a8773b7c8aed695 -ea0a2395efe28a4a42a092ef70fcf011b65b4ef23d10d1a62c09f6d8be7706f9 -e0bea08b0974bfadd7097a11ca757972f639f771dc640894cf69fa1ac8ce20bb -93a2c420dcb61e408b4c49416756aa9ed8767a73e2b287903e4fa7ea654f6abe -7dfbe52ec02836ff7c7c0dfd17b12d9ebd36eb04ce62b6fc165094a72a0b64fc -d4837cc13eb9c1955d8988e89d0fc746d572e45befc8fe20b493a08af05792f3 -3ea5719bb43a6b544868707a12c68e31f85d4a80706451ece8617690d580c991 -f4deb6f83a35116070be36242b3970f90b2b34457c55436f19b5fcf093d07e4a -19e255f8434ab0395cf2a4f1bc58e6fa989431e13d96633109e04a3f04b8493e -2e24c0f87e21eec9d88cc43b6af8b3a068c3beb2f0f5182cfb5e56b69526a014 -e6008183f67fded09046ce1221d82ce622e013c4cda54c9f1ae2f58f5e522378 -b584a2eb9401c6ba5780994eb99c35265d454a3aa0b26cefd20d59ecfe4be62d -ecb8256b056ed27ad45c05ea569de7ee337b19d7df6737d2dcf68eccadb327fd -51bbfeb958f1b2a0b4450435067a1f8a959b62609ba8830695a97b11b86e5f3f -67e34832bd1be9fa658d9de712abad8c3282164582efcd03ff8218ea8fc2098e -95594fc4e08b6edab8d8001fe4bf88bea89df97e63f6382c21887720505f6e8b -5738b9da76f4acc28cd941ea7fdad45cbcbc274cb24c8805bda158e415a6e3bc -3c989e6ac3cafed5604f152a9b262ef18e567d0fb0eabc88a8035884671f2e0c -827d9fdcbec7fbac02b932dbdd788360039c6a6785da78f485aa5a5933ad99fd -19ee71d6c930b12cce33c7a1563bc1834ea516192246f84d4a6c4e47652cd8f5 -f5ce53dd72198eb90f490434b55ea637a1fb46fa799eb283efb88fd8d12334b0 -83f112b08aebe46f86d092c4e9f8d97ce2a3eb4929cc9aabdfe7c4f67f97d9b6 -6c8d70e99e69e00d7d564cb7f5865b27f99f6aea21379dace806b799291b4c59 -b34557eb14ed4f9196db1a817cf7688d2516379e13525fc8a0cf2b586b55281b -7f5657606a289f185cb5e9d8ee9ea190f8ee211985cd909beae0288b582f3234 -4e5a0d73d98518ee3279d3d854f16560b20c72346782b8373c030c5e31dd9dca -40b03970a64ac36006aba1ee3407f38a7bc1d34d17d6eb8280a830b2c2150db3 -c67a8a930aae2928984f9e2456ecd309884e0e276d64a693603cfa01b784338f -dd0a6fb50a9e2dc18c9a49acfa440f648fac48457dd08ca486705fc8efe3a4b0 -a1b345a521cfd974b35eeafd7668329d89962a7bbe0a5a786fc769d2753cda67 -155a62850252b0dc59c735112058bb713d8bf5c93a143d25c013c84f99cb7c12 -3d813d9d0c3af073db48821b8d9f2da5917a9ef83af8ce94f289cf54716080b6 -784c8e4e6d8f8b4ba8ba62401d8c89ec602cae99746a3918a2b6edbb1d6cf375 -8814b0f2a2f0e9d9934cafee9ef29d8bb70ee46897cbf286ec49dfd85f90f651 -040f82829caf9311242be2f872b789deb0d57c9e9b9ff9e8cf33a556181f6314 -8c19f8c7f015d6f034ad7a70efc91818fcdec1b25535b8e2dfe9d526931b29ea -8262833ca4bf3213392053aaee02a01faf431717d8a3b93426acdda121ab85ce -899a758d49d79be5b2af02a9bd1844d972445690f4dc85ac0bd4b4b211859efc -422121a29126f4381c3fceb9b37dfe526604d9d0a187b68afd703d4f38b3dcd0 -d943c5133add4eeeda2186ea58ab4c28f6233ed8304dd65b5217cd23dda4a449 -6556679cab23280bb49a3af9b763a4c6c8e9dcb3397c47dbaeb139b41091322b -e4d7e47f611c435945c2ecca69d9146388eb6913616d6d9be7449f5d323311f6 -7b9a95fbe6a4e039b398a806d00a4e71248a6b2e9a6918515cc38bb0a4cfd323 -1c196043a99727f1bfbf46ac0ffbe965bb2c68349874249cd366d8b2ffcfd4a6 -a7c68f9dc77c01bc6e9fbe9531ea5190f6d9e86a310e456ad87862c8f187f5c5 -89320d6d484fdbdc118f9867834b10b4bb5f14693e725524634b5d5f54a5185b -d9d8f51b0cb2ab963889772ed88d3703646645601d4d1efc080dc7481bf10047 -a9346612b013db61c59267f4fab3f386e03dfd42b1ae58dd2e6e9d70a743ace0 -c0e1722b60ac000099d589df4f6ccb7824e4330f373c20bf17bb17d734e500eb -72eca1ec8f6cc4c0ab331b1fa5a35f06bc0a8def90217eecac810096d6ecdb77 -ed0a45910059f985f6aa7e47630e370867ce961ace19c447e40720840ab96f4b -dc61db820841d9d1794a2be4d0dd6e8db366dec26970c7d737832471db257be3 -7457e62aa194dc9a174962dce261053d5514beb305626e77ad1882bd6a153807 -97408a8a6893f83f38cde0297a37f566a83982200abe8ed7c50e01867d5bcbc1 -56f9cfd88f14c42404767057b9a0b4a805429cb6b117aac30cd83ed6c1910444 -f1af8ccdcc5f7d4946f1d48c1849bed26be6562310b4979b6b8161477e2a9993 -09e048100ff85a14332d53ff67e7f056bc894e77b2bf3cc08df4b6d46283b8ec -fb9cfcabf30c1096eefd39a74d861462317d791f63e5a858b23ce21a0d993a42 -c2b271838aa79762a9efcfd29e9b538b991dc8103ee5255f6286c07aabd47a77 -3521d3ffbc4ad4125b2b4455a8236ff725e61f19986f3adc7fa7b34890b202fc -1638360144c1e474519f83588585c289a7347c3f3a675a4ff7603dc66d2dd9c7 -681d4bcfe1f4614cfe623a9480eeb51dd1da758fa6f0c1e21acc3095288b4a52 -bcecfd5f590df206d43ce35a81a5c6fa294c3671a540c967b27a70d079d50d2f -bf688c56e3bcac86db01a8b9058cd06d9ebf8146c9da92a18c6c5ad8a105dc42 -e9b9fb1133cbd9ed62552e9669029b1afe510fc71933190dfe1676b99452d9b2 -b5743f37c581b3348bf5d3e3a9bd81c538162b6a227bfff480165866891c5e7d -20193bcdf8a5993040bb71e7ae002d27fd34970897385bc1f815286886051bb6 -a0effab4055a3648a2c5eae8fc2e42b5839ca0ea2ec0e150e24c801f7a2d082c -4c0e37da1e7ce037ab0257591f0303e5a1555a301c32a05288d100b747376654 -29f03f17e078d21da9dc428038e07a80ffcbf5617d8543efbe87b9200b01f0bc -a133ecf2478973cafdd00404d4a05791cc85c86c2cd2ce6aaa00a84317ee2846 -16c7fa1e142e2f086fb070cf17c48d597d963b53ec82a4f341546b81f6f00b1b -c05c60f48e3f1bd68b2d4c96d7ac6ba1aebe765a1f50b62b116f5504090882ac -ce2cea9e38664a5cc60d2d9caa99a2817f1bd9de967dadae69cc73977695a2c3 -501247d1ac73065ea4bea71f5b257ac09b9d76b092209913b166e0ffd0d5f4e7 -1363b74aa8a37f8be3fc1337a60d4615a61ec9308d93b2f70c8d92d6d7fc29a2 -c3064ce24971c2b8e1b07e920d89ed0a044e0050019fd4233d2f57c8f092e836 -fcdf48a441a50da0ec5c38ea137deac64a3d6a527f51750283bbc4783fa58453 -372bd9ad06e9f183570728c2651788e3018e83cf9bcd7badb3279bbd91b1a015 -13e97d9c9e37cbc7ba0b43d7c378be25817b679c1a0574de0927268f9a0435ea -e49308dc8acbe4312f42924ab3cb66e4111cdcb11f10700825378e5ddfdc8170 -6dccf55d16d3e58ccac7858b11625e9d1965e3effd430df3ba229b0def8062d6 -e916264f306df9ecbed95d08729bb86e1a127a3e8665b42964b96871e361275b -e0c2d5a8de8fb36fb712ead4548b10623437f0bba56a35bc06eb5915c27aae65 -c367f31e87badcec7b32998ec7c91f62be646140afb28a93ce0518196cabbc93 -73e7de347d342365688035b612def1e5d558370d747b55cda302038d0754fa59 -3ccdd2232b51c0c03b50946a189b29c0d2839e068fb95ea5b4ec54248d67659e -c4c40e62a9ce197dcb6ba5dfdcd34585c5db5b0326dec02e88705c5b65222503 -0ab1ed366ee0e8a6d0b6e9a21bf3d3522956f9f309c21e79aa78346587d8d478 -718729765ed66668394ec3691dbde3d8062cd7953b48be4fb48c6139d0caf99a -322099402db1ead0cd282cfba49782ee9ddff07a390dfc0a1d08045608a80f81 -f83de3dda018fe309d2a9084928b99137552bd9b1eecf33c4d275822dad9e448 -a3b1d9d48e2411e2bb0e7ed4cb2029303d6c59e377b0a3c15ffe4b2df0877a6d -883ee027db89e7a9188d8daf0fcc62020f08727423040a97d0a587c10747789f -d413d3d55da0a530e49b3b49ded82568d722f681d3010e51d848a27b9b6afd22 -6a6c0e7ed78186727fa4fddf136074b0367bcf3103ea41ce6298f9688ba8547a -aab453fd860847c3a36584990fc4ec252a3a41ed9e6434a7494c79a2db1626ab -eb1beb1ddead0e082db5ad0b126b38a4d177e800f18920dcc610a8cd39e705ef -71e021c18783eacf42d5f1225d3a31d3f1f6c87e1b7703784889f560cb8e5c38 -2163bf533ac305b1efce25cac1cd09dbab5c2e1cbb84a8cfca5c4d35299fba7d -9d49072d27d04e13c8c1030cfb66960e3d1640c4bdeb0b9652e7a82233c340b8 -0e7dc44597f1f4b25eaa9a392feb61c120a1354b76e3ec1b39bf46bf63c88e42 -53317a6f9e21923cc479ca2837d934b22f3a63de42c16fefd68c25826670d3e3 -9a820d6de32ea20f5f51bb1213686883cda8fdf46e7d0d62c14d80012460a3c8 -c72b2607323ef921eafea39bf61ee401aeaaa277c46a8e9c2f5d93245a3db5e0 -c1a51fce53e31991a5040bf1565762d52b8851e00f27758f3b1dbb1b85709513 -d33e295205802b043603c9565f0921f267d856e111e8609d6dfbc3bdcf742829 -eebb6cd59ace388d30d101aad627f29ac3f0b1eab30de25a35343d227532c512 -75205ecbe9b32f8484e4c1227145c5189ea3c073e40f10e655fe3614921e7a3a -c4e67229b82438decce9b34ce1d36223abf8eb6d9950603de32bc9e0c7daf092 -a811ec1d1aafa3e3719902976a4b6a055465511cff3744d8b4b546386b89eb9a -49eedcac3325a1b5001b5b2a162d38c3e12577285c9c489e6482684335189e2c -0d16ed690dccaecc8979560783e5d50e0a4ad066bd181076859a4416069a387d -9f776106722ac91fee83013c5877108d83a105a6da1c5b2ee11d09898e40d819 -481fa8ddf7a8f8baf3ad95265f7cefc90bfc55fc09cc2c6f45eddcd0396aecba -8fc6642379378e674c7e64771b2aa8f709938253f6047b6e8cb6f382c60821d7 -f9803d37900d0afe349e83f0abf2c67955ede557809af6608986e09f895cc37e -ab14c0a448b29579594c52f06725ad78f8e7f2a0e35b078aa8629509b64f481e -95cb2195b4c53782a17b55cbcf43f5741c614c7dc57f87afa4ef1239042c3886 -6e8f550f23ae0577ea75e9574e0ac7fca96755a4dfc0eb02bf4c1f3be82f75d7 -ebe47928bf682642bf7f2ce3da842d6275c909572112f8697f7bf8f8fef1b573 -ea68613bf5cd6860512e1092770ec59d14aa4a0794ee60dedc11b0c01c1b261d -a2a5aed8a3fca15eba32ff78cd4e478acba05b56b042d3126b8a4a005a56791a -da0f64c80ea855b2ad43b494fe079ad7da3eb1483d7c9d6ae2b57507213e8984 -4251af0f718936ff84ed0a2e7c3ef1abbf9b81a81012a3373eb6e4ca2ad8cb1c -44376c1e4fa13e994488b4cc638c1541c3c412b7227d1044449838d6734c14a4 -4011f5611d0f31faf52f5f1ad4fdf97bb10851cb0ba814ffb8522b86d194d368 -35f5d9c0ce02b1d9a76dadaf71da54fb2fd8b476e911b62e8646692c2dd5fd23 -14daf09b539067d657f9787de364290877bcde1f721abd316ca19b3fec5fa07d -da25a63bb94022ec52ab6a858562fd21c282082a78a852e3feb7248860d7aead -0396cbda56541ea44af11923338cd6ae449136d0899b7f3fc5571d3da6767126 -4daa3b010c01db57960e24ffc4d8b0a73417cfd445a46a73811e32810e1ca950 -4969cf44399d9273ced22912f42479ee954e5c61ed6b52ad655e8731e364e811 -237b645fd6bbcbc7c4222771596f5f9c3ee4f233fb3c3b56746d7fcf8bae3828 -9d1931d6c6977152433c47dbb267b1ca36d1c4468680f309d9a66730bcfa16c4 -3914393cc8c277393fdf4bcc6904bfa118c6765cb56ea4c00c33a96a03fbe5c8 -37dce38171360b07c180c401db9983359c29be4e68297960b2ceaf1f6b55078f -227dc4dfd50344ae6151f8ffac49a5efe1b454b83317f0315e7b574012e60374 -c677961fe08bf76d1cd6e3865edc3dbd679325ec9e0b20f497d993dda74a9caa -dcc5b366b48aefd55671ceb8f2236e6df62416fe48f953761d6c515289a16eeb -9859290e5e389e9c5c7d082c83533b6065ca18b6d06e5678a11ad419e3a6f5a5 -5f459c70372a7f0419766a6d42008e679a207dd7989e941d6d9f543012c1935f -33a553be813923e9137a2f0d40fbbd1ec98a86195adc0856c0285ace5516c6d0 -bf688e33b1339fd16632f21dae5d2837af15c66054c987dfa62d9808af608851 -e8da8d3be44128ba4bebf5f372b4c4ce8565652d0d7aff995fcd283c20c25103 -2bf1eb8a5fe4b8533f5bbb224239efbdb0dec2d9baaaa030a78d0ce6d9993a77 -7a2888322ccaeaabb2a1d2a501b57c8524e74a778e3d6a80b7b46bdf9780849a -4d76d6e5f79d5e788b896ba314d6a1da2cf09582656b70100fbd820ac92c66fc -57cdae03a4b7a2f0ff82c41666bab6b62834e72ee538b74d3d25a0d7c83fd124 -35997adfdb586cfed7e13e59b4cf7f844553fcc563ad85797ae14cb919477716 -0f230aa5dd2f1cfe7e8da916555b8dd4678ad4df107cac2f16a31ffcdfde5003 -4b7f04addb3f69ed1f1af19f2cfcdc439e6c8fef5288c9c310644f6dc78c2d6d -65289fe2ee32dbe76a81921a7a3e5a2856f7e5dcb848691861928b4233e00093 -ed5b8d6e5b8c83f5a5247e8443a82a85b5961e53b0570abd120d19592168bd7e -a6b81a245f1c9ae5899eee3d3838018343bdbf8e8c5d90e50880218b021a4474 -842760eeeb4ede9af41a5095baace2582341c422dc36c37e5859aac59aa9b657 -b40c9fd648ef69ba15fc05fbdd1e42d5190caa3b72612c8c7cd31cc3b77cc81b -0be619df94a3394a1884708c11f904105808fa74b44b08c3151cceac9820b74e -df6fbfd954e32c09aef856027ee074789a9bb0b16de1a0e8ca1695630657776b -054b560fff78bd2d9d56887b05f62dd516ce5201d2af5881efad7ed75dc11e78 -cd08cfd65cc1919b038bb338a808ecf6950974accbaa8db694cdf98605775889 -0fd9a047fad18e9bf982555dcff94082919aca04fa1b282efed4965fcaccafe3 -dbbea3ab4fbdd40077acc9d5ad9b3b724e661fc8239522038fe887277df552c6 -3a59e28621a72147d62f90a974689566ea6fa310022680a0999643da14f1268b -87ed9f07152faef12905c0005c5af753e5b22d68e2112484d315f57c1b602769 -0df965b2d9679e38a68a0edcbd1ce6df9c7864f938426492ff2d71a759389073 -97d577cf45cc7a1b1720fdf93d06d9c1d114b24e05914a36c74e51cfe6f4dcd0 -df6bfa44d8ffe2255c9b7c4d0e01f28fa3e55ab90c544411a418f80f206180c6 -5ea414ef1968df38ca341a53db3b1cdc0bc0419a3d59394061e3e4402a48af65 -3bad74da7231c2d670e8a582d4ca5a7952beed6b211f2e1e187da899ce3fe648 -337e7489e135f78c52d5bfce51b945db0f72415a9f65e73bf15590af07dd2caf -c1f8f685f9532c5bde13d52df54dfdadc2663ab9a98c9d613b393a561f8551bf -18cfa630baf1ba0287765716185918346aca6ef21c317fc939f302c7a9084d1e -c7d328888ef63c03c10aa200f62d779320ebfed643313f806c31bfe4ccaaa706 -36342297e4e6b45817e89d41485c16deb935df0c9614bdbee682a7280ad66b74 -8868b5307e513e969bdb28aebe3bc583fc73008b1876d5d23ef5aee7c65ace41 -9d8d49fea2d233d5787712a06a64507ec5237f88dbfb0796561858eac3dd6f10 -3b02e93ea3d11fc94354ee097540651df89d21738e7abeef2af8cae9c2c66b6b -c3d4a4608fb8cd7ba6cf4830367353984c2429fd7ca631353233839ec5bcaef0 -f45de8678cd357c3a58581d884db17237183c3cff4f6ad1ab3c90600f1912c27 -23312c05675cf0225ecec06c2f700dd3101e05b62fd990c8a780a7c67d309d15 -4028f3ddf624d5d9e8b6a589d9157765d221fe6b1bd7b937edea1481c0edea60 -b06bd5273563abe4eaffd6cf8a5ef7e15d620f54d13158816c9cf62901c6f4d3 -1b016afba2b5ad5e7312332514957fd0dafd608a45079d90d027c537d28bd038 -080867d10214648a6a97e6c207b488a17db10022e03f8431cd1fa5e1b02ee7cc -361cca6df87d1ea41f862efd3c271b9a4b4957210d04d55a8fe05f1c3609e81f -473ad8cb6a83493b23bb3fa4050736f20a54d63a3f2125af5edde712285e1a88 -d810d30e7eb5347a68f68812cd7e518a73127442990b2010abb8f17d3b1f9195 -16ac7b57e79de2d8752de0eee1f0d2a851ae02faf7d72900edddbcb5783cf879 -c6be384891c274431bbc9b07e4525e6e766593401cb0a1fd4c3a2382ce872c62 -3febd440dc183410d697f558644877dd9351e40ab7419fcf19f5f3519cfd1e0d -87bb2ea2a2c71bc26438047179d2c0bf8ba817b3d0f9296ee7794574283699f3 -4da47462f60a0e6d4720b4668bd94a3a48c93a4ceb4c188400615d640851165b -53551600e7d60c4e3c6cb3924544e8e64d35d59a17a215828981457a75d9e0f0 -cba401b64eee8beff5d1b584b722590790cb500aa321ed786bc2a9e74ca7b55f -b35251d034972570ab8ce4452ad3e601d627f4ee61a3524bfa8ee3b1a4e3daac -394d6577459f14af7f3d98321ff4ef1e9b78aaef8e1f58712921b7da9c5cd7d2 -c0f2384a83dfa4a3f68c475ba1bb955f5f235a1e8da626670f0548f1bf95776d -f498f5a12ab40a89ea2e927ba3519a7037f5460dea7db73683b9409fa18e4e30 -1971ae782a5dd528adae11a2e275b180009ea11f0b5dafbe0994622683baa049 -9b29426357211d20eaec88b9a70127abb08f9b91ab3388a953f911915a78511a -baa3389550d5ea1e84340f3444e250af7f43e681700a8123feaf4b06a8b373f5 -43359c89429c1d47e5cc4fcba2f34d7f09ff069d1c7f05f1c1d667729cf6886a -ae98803fc710c435d5b1e1584f13797163f8c7b113d26adc38512ca90ac0353c -463f19ba813fc866801c55d1e575bf0a4e97935101774bf87b5fe5c9bf67044a -9b3e6f7fd46023e352f004a23ab7bf84ac03f4e4342e7b6be5f99900e81e1d60 -d853a2cad61784b62d5d86cf2e535be99f06e079957928bc58d7c7a31c371796 -6853ecb5f85084262498439184e90cebcb52a341f67bc9943a0580100b7c782d -5c36a61efafa80e3fdf41e4f63d7e01ad53abbfb979afc9dc0f5c2cdc922b747 -2dbffe17403ef2253cc28c8f60c3fc183df0f2db1b108503fdb80565d730c2e7 -39b2214386465f9c2bec07b8e6d64cc210f9f7286e40e8d01e167d4268048ecf -f068ea80c4303a2de66b651c8166fa314d36453a281026d58b1f9cae623b0df2 -a3d16f1e0404a3e9821efee9a67aa96fd2b3b2ce010ac9ee08751af5e29de43d -b6b2786fbdc210c7fd1e55591c18672fee9e9c5675184fe56b001be88e23303e -0b36a1a6fbdc703b768367473bba77eae8cc7214362bed6f503026626e5a7bcd -960097309cbc19aa795363b696c9d8f23d36c4ae0ccdabb2ca499d26d273f14d -31bd002c245ac404db88c73e3d9bff37db63bfe1a98339eef889a1d83ee7b511 -49c41c12dd2203cc5a1a2ff4342cccc2173c13da7e4669074be823cd9ec85ed4 -8406e5427360bf9b2008056e1224170d8add21a16ed847e8201cb3b3e066c9ef -143fbd7152201e003d2f3a542cedd210a0c3e454bc32337d2bad6e47d52990bb -2f2194e1757206283fcf4dca1c21cddf1004fe8c03f1f99cc3ffcfc5d184f43d -67b6246168f32e7d1c35399e2fcee1af8ab2a354eb58a8432d1f94e11229d1bb -d7ad0b8fda04ba5619c0175f99a0c937373523e0cb2e756c504c83ea3a262086 -80 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 58 /colon put -dup 68 /D put -dup 71 /G put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 122 /z put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueXX 5000828 def -currentdict end -currentfile eexec -8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3 -a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944 -2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889 -4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b -629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc -8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf -80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24 -9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c -02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43 -c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e -7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723 -7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81 -1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576 -35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed -b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a -4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92 -e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047 -1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b -60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269 -e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36 -6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c -1be9407f88a2a761b56f398467a057f35d18c01cc377e0061822b94abb98feaf -33e32c9bc59416e65491cb08cd8de429deca10ec4765d20faea23f130f5226ac -4d27d24db0385cc31b8b3227812d2c2fd223d0b86eb936ff0bdc45a281c544fb -d7798b4aa264d33ce1e3eed7c77fc4942637b524a072aaf76b4aa25c250c8496 -d0787d1139a647e7165191dd7ef7d25d830220b8ba0e91b1019c1541cd052faa -de1157d53f434b7002e6456b12be1b16806309326894d6a0a3485f24ef480e9a -14342b11ce0fd8891c13c10e390a6fb53c39847f4d08d29b5b7ffe083aebe339 -5b1f4ca06296feea1e03576816fb7c1df7ca971e36c78b30f8721577705a7ab9 -1c9531bda0a59d24edf8e82b31b8bc5a1a12d9c07af1cce3312d00dbf1b771b2 -6c5589abd3ed060751f05846eddb31de522d181687e78299c0ff890ccc069a4b -371e360c5ffc3d65e8d01215c6126bcb6caef861c1b6a11523eab958ec503309 -818ce93536ef9474838e560e830c527971da10f4a50108a7762127d5f40e2d2a -5422e2cafb000ffb8e7c99f21996044b88ac6d80ad7f0bf30819ea1ec68bc5fc -cae4c05f4bf371a1d086241258c581fbfd4de1dc42cc471c13fc760eb996be51 -bc2ea2b9998877d89fdf034d271d5f85d786b7ce92e532e9ef649b2533b45060 -38928fa310feafad7588c7402bca7b7bc26f803c60e9116da753650a88ac7a59 -36b58cefc3228a1e058d3a757690c056bbfceb35bf3a845a938fed86cbd798a3 -9850be5e69c72b913485a89d7347ba1fa91bd36c886402da3f609a6351ca109e -69fe0506461092f65449e9db2a8d6e5fa4942992a335f740d49ee3daf044e66a -42fb1f9f8cf3e73772fc63e93490c7990a96218a953e52eab5720a4696a1d8b9 -3d6f986693331a2f656cf7b4b64eb1e4d9e22215f179d33f06fd0db415b65fcf -e625276719a077e79fb1d92f3211c968549cc645ab67b01b0eee62f9bcba4340 -f39870264e521d39f0ecfd652b7ba7214254091e16458d3b32e51f7db37bb132 -8973e4df7a2f52c7fda7d4d7d8f263ccf85cfe46ff489ed1a5e78e0b534bee9e -970f7fe9ada93a5f1156e7fc1ad9e513276b55db0a28d34296ca85d28a0832bd -dcbbd3159784b6628d0ecdd905b431499e45a463fa5609ce615a19caefb2f106 -f0f92db3d6d708da9d3d8d6e0ab1496bee7d77956dae5974a2889df2dc02a921 -f71f4937f15abbb81c9bcd22fdf190530808881a346b22aba6e8b0ff5677cc19 -7e5ccb56a7726450a2cfbd2e5d87a4b6cf8426f18238a23424b3b92d73008998 -1cbc1fcf86c3eb58e3babe6c34129605fbba175f1ee19276a94712bcd620574d -0b45791aa9914585f5f5506ea6006e8f9482bf1c55201c0bac872bd8ef2f19e3 -58560c111c367c23ab327c5a9059c8481a6f030006616906d920b6a6ecba3a04 -d8bab040337fc81c3cfc7ca06814ceb40de36cacf79d3d4b37859b77436e056d -29b3ec580d4abf59a8abe4603ba15c6b3562f38b2c85bbe20ab2fbe9cf04c981 -477119b4b670b13873a58a0939aae3a1711a648b09d970abe5cf73f4cd65d61f -7fd011847173601a50badb334baac5043c9ff088901b23ce8d96519ab03bef3e -5cd038cbb4e7d5949604c46b8b105724874886457e61b642d3b6de8b469b5d81 -433b9993631720d28ced32b3658228e74f9893d43835fe5e3e0abe338df28e56 -978a375c35f60c974094f40cbf53570c67e121c3596008a179a0729f91d46e5e -38a8014a08b8b1837f88013a84c5e25d9e997b78dd1a3acacf6ea4b6f22b7633 -498ec8fd01637db6652c8e13a1b2ec63bb7ecc0fc433aa7fe9b98e23399504b1 -63342aec4942dff2e03b10ec2f878aeba8eba0317d18d319565f4a4aa9a8d58d -3bd5c07574a4a5cb1470c6cdfea2fac23e48070b78efc47f04349d4af2af42be -5cfcadc6c4486c57e544e915a3716e730bbf0bb0b8f02b7695b5e41e17bff778 -6ec02a8ba75f0ee0ddae7fc2b155821267d1274701c5f115cbc7e4662491289c -c1a848a53a41989a21635ca76430338179c3a21dc4448b63c921714b98d2dff8 -a56c2cda854064c815de263f52f499c683482cdb1f8ea28627bbc0e2881b507f -82de8fc1a4fd8edbb842c4b314158d13f50e857b11459c6b327a9d79988f716e -c53bd57a7aa8b8cf72636750a399a014cf390025b84cad918a077641e93353de -ccff0916d3a38eb9ec8329349406da403dfe6de263b3fcd64ab8302de5f8311e -1bf0c82f273dcee0abf0fdf1b7e9ba56258344499e01ce9bc64bb39b114432ad -0a073a49aced5c1565a4260de577d54e66faf7a25e314fe187e71e6036df0166 -aee19ab0c0f17cef521c6b343e313b7d061c784b796ecde5525364901ac92a69 -9a0be0b1736203a4097182cb3eda67c4ab278d318cb505db11bbc87cd7ee0a0d -8fa13d5ee0be00d03ecbde7d97eac4bc75c94b46bb1ace9e44261b8f8a592198 -f9602227c06dd68cc227375aee4a18d15ac1ae5f2e7afa89a0c10a916bb9704d -c9ae1e1487f435db4721e0e878c166d428e0d994a73e22dcda3dcf7fa1c726bd -33c0a2f2e61c528ecd89d78892ce9880b2b2c9c568795cec45aabcc5d3ca6836 -d7f18cc57705048e484a91f02a1c6582bc7fefe6ae2d3c0ba391da4ce7b4082a -4f851ada61b157e424271ea88e2e2a7e3ca022753d103ca3ecda78d65b7f33b5 -f65fff1e547a95008cbb1069c2a9ca3f1e8d5cd06a3791a783d5710dd3a2bf45 -1739b6fc37c0b1ff7956d367cd4ec1865068d068364563cb3031ceed51989b77 -161c3fc9267aab57d0e3ef202e4be4fa5ce74b2a215dbacc6b2bdd41e065285c -10af1569b61d0f0a39195b323b910c9e96cfaa173804d44adf39143652d5e64b -2acdae6883e2069232d999d27e9fada2e9ef4d1c6b96d4b8e6053665e7e527d4 -68bd7a83390c70bb3dd73b96d517bcb24c5210669507144ed49ccf20d9685696 -ac300384506f8fb34e5151604f3fdeb47e82bb631c42dbffa851ce01092e8bfa -67e418bca43abe2b9b646cf959af0623d7e19c82c40e50a8f4e2efab94c04084 -852361f4056c6ab42ac9a588128544028c3c4f9f2de2089869aa240698b3276a -10032049fc4a1633d4dd7702f596bd3267fa8c4862b88e6ae21c5f5b13ebcdeb -e59e2b8443ee59ef027a2de9bad3151e7dd59581b991b6f86d0dfeffd5bf2e91 -887b1fcb8d8b0cd6e9066588f7f02cb7777cc070004737a24364f993a1e9bcb0 -fad861eabf3747fa629b72018a2dfc17c29894dae3f496ffd0fa11321938222c -fd9dcc787c782c95c0085d3573c32e90bcd9b7f40efba4138a26286845a5b992 -613bdc8fb07662d52b01d771b03329e94408feea1dd31b9d29f3f14a5e93a5e8 -5e35b2505a0675b0d80f8ed5b726076765a2609eb25466507c97bd200e29f988 -c18c94379764be35369fcc1a9aa08d141973a33af367398e3250712153d082ce -cb6a1bbc56180f55b99c3d979a2553e52849153029f30dfe86d1bd1b72d7e1bc -9848c0145f4ccfe1ebf7ef48b85505c71cbe584f6d001bf1310f51ae315478aa -45ddad248a875fd6588823d483b2425bbd3df516064665cab2d1fd7918916776 -8a79099b4fe239fc338b93eeef026db890c5f2344a87876a56fb8475541b5f3f -f87eada7eaaaa6f15728c058a6a510990aee9c82cb5bfbc86274dbe1c62c43cd -e042400665b34b1ada889f40c71028857b2a800a0c3446ba53eb4b33cc22ef3e -8ff1acb6017e67ac5958dca7c336f5eae73fc79e4c9d4e83e9e31b81c7069af4 -316cc3f1843bb4d8a86c1b64ae5882f3437ff3a3ddd126cf13b66593dda3757b -0cfbc0dcba28f02ffdbddba82d58d2cb74ecb9f410c989e0e216a16fe0ff291a -0d7d46635fa780ff107d3d54c5e01fa866132e5c6cc2ce37874a04cf6b980f45 -389f0febb4ac067f31ef51f18f7b8c40f988bbfaf20d9c76b26736eb73293784 -9bbc22210ed0eef68f9d5660f2fa98531668a6ad9f0cf9163cf4d01920428037 -032d7fb7f625561511ff322e508f558ebaab877ae75af7c70ce92a41ba163ec7 -8c0f820b763a408eeb3f315e76715614db10818e6107296ca9ecf1376e0bb5f0 -21538e410ab05f40ae71e7f8f5f9504ab7eb8d9eb75d7969ce1069fab55ef8df -ad3146e99590a2178f1c6621984070bcb18f16fd8f8dc8adeda9ac3126403f5f -ef75226bf78a47eb300d56932c20de486b311c668c566cb1227744d0c77593c5 -dbffb4083d710f7344bb4923c39b8ecf375bd2fe7db162151b78f90a836a8f97 -43e16773929ded333b3397875a0dd78824d1428145213d1c36e1ec0a9b3b5da8 -1dd17175bf95c92e3c94812cb18fd213d33399138a8727f97c04f509d90bd238 -9947b0a318e2c124dccfd837926a983e75b171ebd7c51836fde9eab589490bf2 -2c323209a9bc2200c93a0f6ef5a955d9e554c493feaae35f59f58f92d6e5bcef -3330fc3fd18184c73dcab9708b86462af71733ec25735e725441f0c60e5218d5 -c6f81dd53df7127d3f42dc086b851301ac12b5dbb62640f5ee2c789414fe7372 -6b8012059b5d5d452645d530588f5d56d49de17c5142811cf1c018c950cf6168 -6f1bc25eb90d90cfbd4907ab819293dc308a4534f3d96ba371ccbd69b7eba2a7 -912c74015bd1f9d591909bc89d2b5a18e9cafb94b6a933d124fe9f23e4e206f0 -b2f912cfd850bd9f2241476617e422f7b0a23b2ef4d252d194ef0a5955b0d1ad -07fdd9b8060157f4e5f70102608b49558a049ebfdc7f1e440046e2576c286d7f -9b0302e66dbddaeca264b0c76a1c7d5623d74501d52368d3fdf5a5385bc9c2f3 -1e138d11473637b5d709aeda39b929019c5a9045f08f033f180871a4efe28049 -6e44f0e47242ea584327d28c8b5df1d27b55ec763bc4ed21620c00e48c87f821 -98f58c54721946022dc721571ea56d2cadae561b6e0342d90da037ea59f5490a -89a7237d7693ed06e7de0b915e39265fa960d1fd63aacd44354a1f074bfdbfa1 -89579cee9c5e1b681283711576e0da93f45ef8fdfc6aa3f1c76f5bf0d3a745c0 -901f7bf3af7757ccee7ff8e8aba6c921730b1a048005cd37627ae36cf66ea398 -8d032c87c60efa29c1a70c225c5a62f7f94b963c42770a8eb3c4f78d1ceb8195 -ed8a4ac3372e718fd8fabafcfc9d65576e284e257a679ad56dbfa8d165ccf1d9 -4d6cc68aa9d391c24cf06194ff66822089153f9ef77de9b63bca0c05785252fe -5b5ba7038692602bb8eea3f9ed9f51f6350a1bcf45b5a19ddf79e41d3a1719a6 -75e539c4708067fb4515e41c5fa12b59ee39c288f25aea40b713adbbf832450e -ffcc36f837a6f62119e74ccffe60c2d0c1aac2c26872d35bb99cde9efec166f9 -2ae7579be3a972046372898343ce8dae0a0de3276c182d25896bdcfd578119ad -c8b8d9fac64929e8e350be397b34a02027fd040170c183a71454419dc7061759 -4f83ce2cf137e277b4e222eff5c20c031c70b2824239c753d53152fba0aee6b3 -71f438adc86d941ebef0b20f856ffce6e47a757ff94ad406b0b01cd493dc7117 -7d4b01c9b26c5a443b04ae5dab07b02fad4d39033d02eab89847eb84291cb9aa -70fb50e54bf9ecd24319cc98c2fb394fb23911fec80dc0cc86294714a1bc45fa -bf829a3c84f6d1279560b9218eb584ea8d0f066fbb718ba5f3946de4fcf4157f -b44ebfa718eba3a2f4d666bce59da5e9c16c23fb839e57a307e607047ac3f141 -4c0e3aa8439272367b790f0e48d26b7dfdf080b14f21b24e1d8f4f4088c84d12 -fe5616c430eeb3d01d8f7bd0a2ad86ec14dd7f1d33ecae964d4841952b343bed -0e1342ec931d1032d72b2b553b6cc139a20934a1616ae8b1bd923e8729d73071 -142a1e977380ecc2e306a1e83fa12f47d3c7159eeaf9a21f703238c578e21c93 -8d3369e2a899902070a0ac5f1df345d83fd9a9b16c12043f3ade6835c837ff7e -2ceaefe2b346e6ed0ff6e33e07661ee775730eefd22c06aa9ee61297822fb37e -0c853e9d2687154a17a36f0bd6773f0e954b5a36e1e74123cbb9333b70525435 -b1ab97e5963fd97333fc91a3345de4e293c61ce91f85edaa6d7a9e595421ced7 -1d9d92c2b455d7ad5c319485705102e6dce6679846ca08ce2d513f731a9424f5 -a972e208dbb1ef213044ba7a95f42b85bf95b8596ae9b34783ca50b316668cf8 -96af9bc1e36d0f2f8da7517c72eb8c6df8714e1029c4f3778d6b1cc14d25e767 -5173a678cc11dec825ca3959fcd3250cd49514fc085afafb3f328b844cc1ef54 -20fa4650f154b5d5a13936a0dcebcade7ce08262395a0669d70c97cc9e7a633e -67ea4d5e1442a460ba734efe47006a8649d6b937cd328c93b8c60578a6eb9418 -e568c5f1f7f40ab1261c21b24be86b5f91c23e6ff04d4c409bdd125d5f8b4c9d -244401c5bda954df82f45e757e4fc41290043ddf7626e6db4905613aa9211918 -7a2057e4585cfb06894ebb36cdf8a9ee8ce80ae01f91ca4a8bf58c23c6efd2d9 -0923e954464052e5548dd1c2adc3086c5ce99639999bc190af99a1932a2d573f -7f8543e2334fce16d64336a82e65b6fb24cb61c4bf109cdc82a6b3cd1c7f2774 -f11d8901dbd8757be8acd02d8408d79ebf94fbc3deda82180450b2d331696bfe -30515d6911749fc31e2f8044e1092ffe73244ff9501393aaed350e9dce07493a -c3d93ef6c898c707db3d1d533a7795b9eede2849772adfa9136817a3d12940f1 -e42a0e8b67265a113154852d8462e6acc3bc34957555a611931a94dc4dc6e3da -17eb5d4cf2cfaf833736c1e29303fde272055266bb2ded75461f236987485382 -de077cfa3bc576db7efcea8b99879a703f8915438c7a98f01d5b02161e75feb0 -0ee7eb405ac4a044e6e2f8e06dbbd21acb552620c8dc9cdcd0c5cea48a4d9758 -025373cf9d4acea8de7e8418412748530b496da725e1fa75a7a78cfea5a41e4c -fc400e6e59c7ba5292812d513dc15e6996a97a431ad6ab7047700f1fa25c312a -a2947c3fa06019658cd1c322fabb4ea38cdfa6fb047f50e4c805a9fb9df42cee -b09bdf0d4e9434274fce598ad8e37a158ec4eb4ff59a9d8552ee53fcbd903e3a -584f45e6d2baeb0273fe2735ef5f0d0fc0b305ba868bc03b055f58837de58d0a -3a8b2e58412a4fd61e12560a7b25065b0c9f5ddf61c36a2a259b094be5216b5f -414b2fe72e227ac67f672d59f417c19a87388e0cb7eabdae0fd846bf1f535b8e -6e669eeeaae681e442773fbdffc27eaaef5dd8c6cdf7674d55e3334b492b6f3a -208af8d159cd2aadf9a0f89f876ee37fe2a1893b45c487f412ef1a80179a001a -9efadba5fb13df4fea0d7a5e03bb2c4deaf502a3e2b33dfb238ffc5761f7304b -64003f6445588fe23d1e4d338689f444639e18bb2f56e57980d0fe2edf951064 -7aafe870ae659b615c8c7a -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 38 /ampersand put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 77 /M put -dup 81 /Q put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueXX 5000832 def -currentdict end -currentfile eexec -8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 -97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc -8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 -b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 -50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e -784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29 -315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2 -9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e -e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789 -72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d -5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5 -1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc -806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360 -b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f -059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9 -7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18 -9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3 -690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251 -4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a -dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14 -d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af -861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e -fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e -8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9 -2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832 -f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84 -63b80c3ffd536c9a5dd29ceb03148dbc24c0033aea2a574a8c8d945fe4b2a75f -bfeb92e03e5c29f9fe0ade45bd289affbe6de29b95bdca1b14cfb1029e83ce14 -30e04503100dae953b01334479ddc3994823f4b5af856c2573169189b3b77193 -636afd0a7ef8102205c0ef082d34ef6182bfcc89750be59de2ecb291b918d72e -06263e4c8aaac685287c997908cbabef64b2604179ce6cc65b05cf6ff8cbb6e3 -57689d43672ad21c31052a01e8df852eb3e9f5771a2e4e976b51492f47aa2f4d -d71b8e53cde9f398eeb841ca03ce3c20a6452581ef985eb6f91c9a719f3244b5 -ebccf59e740a455f3e1fbf3f8a852b93e620a36eea4487d17cbf625c2b7e2cdb -4d8504b06fbbfe867bf9fa467927769b39176c24dc5d40e28ca54a2a2999656b -ed420923bdd64ba1409806066da78637eb81cab9a140ae4422cb00ad9543a3ad -beea8d4c01a43b0115961fbcefdcb4c22a238466b1f38ecf9f6eac0e72db1021 -32b781408b2de8ed88e9971be38d24937f6c111653c5daadf58b414da78f6251 -6fd3a4b5f6bd21529b55d4fe7620fd2d8d13a7e8604ada78c2c287087a40af79 -5092eadcda6a502dddd06c3d592ea3a752fc60e6b246fc9098cad8c2bd614ea7 -4351e0a5ec9721969b52302327f3f4a2c199db96eb724cff99d86a4af59ff5cd -15345cc94ceb500b32884427525fbdaefaab12cd7239da224e4234dee5188396 -2192fdfe6935a088bf012b3dd8063663aef6c5487d27affd1a8ea501f4164c66 -986b7674dbcd9fac8223c938286aaefcbad9c5d26b4e744fed12842cb23c3309 -6e1d127d6d1294bc06cc3a0469e2d15bb0c166c962d5fede747e54a18fe66be6 -650e43e1831dbd5fbf39519213291419dc442c30b835e8f0395492f7e21408dc -d4043ed3cfca51e68bce4a358b2d23e406e1ef34a294b2c41e7bb6c93b989b0b -c5ab91e6b26c68b371f71e2d895f7db1ced99485edb5f09590c37682dc064a2c -cb8c2ad1896d45fade7745fc4404d0da5ba23975382930ee860460d6b450a5b7 -8156d3ced15e7b9b50605f830a29333a7645748cfc5b17bf9bb8cfc8219d09fd -7433484674baf9d5385492cb3402cb3273ccbe121f93838a21ca03395d9772d3 -c30cce1e7c2718f9a825ee7d401fdb733fabb8c9685212fc70afb90dc296bac5 -94c52f8a08b1d1c889807f65f5ed30fdc79c167507e85d42eb5ee579f17e5461 -cf108be5a17c74c533e5929ae8d9ba34b95e4af05696d5bacfc39ae07969cd95 -23c18ddcd9097ebe6e33dd6494f3213c3f4db165174bacf6e742cf03a246bdd3 -ad60d0bc19592eff8335bc7079b3d192b4423c10ea73775681d3e9c3155f5e2a -4afe36038f1d2fceb44d2f366477c355359e6e764293b4da0ddd1eb9ccfd0033 -0ef6eac0977e873dc902d5a1be235c0a1d777841dad4731ce0e6addac0d0b8b4 -8b645099f3a482aedf8e49b735655adf0eae1d42826369be4a1de71c941f6155 -fe81b5bb7fc5c1e420ee5959cdbb338c4b47c5795183841c18acf75f6f0b7e98 -18e5ffb7a30f1e780ebf8406a247e7ee390c26a8092bfcc32a353b9b57ff9c5c -d5d7793b54ebf122fcd20a0faae7c2da9c6d67971d1e172cd75778252615c74b -51c0c113ce1cff124b8c35989d3ba1939f94f1c8e53dc2e56e757a8d775185d9 -71c3b1d75a8866667e6e117e42bc9eb224a2bdb5617e98355c8189b21b718f67 -f88c49011f6098804e4a602299ccffd8a94ad17b13786e234a5dba6db7c46bbd -d53f6415621363cd1d37477d1f39c256710afaf8e1e37ba56c784e48841cdae5 -91d3bcedcc3a87e948b99741899305ec448f6cb58616d583914e787d7df826a3 -b54a1b93d49393c658656f4fa6e51546a16ae79de1990b74d7e651f7914bc65f -4e73eef9ea372d04e3cae7b47e73b7b86d38f607a95fa2ec47fcdf365aedfd89 -59c7bd3c55835a7f7794b313b05565b627edd1538b6b6d36d42b287907139991 -2cc88c7c7825e5604e90ce776a20218efb54304e287948af136c8083aada107e -d50b24cf0cb2d37a45c4e78be8f5b5ebdf59b49c5e75b064c63fcb715652c988 -d6af0e8a221fbbae93cd8a638a4e496cd43b2879e2ee85d502ebc6eec2851d72 -ed5ddca18251a7b9b0da80e4617f6b119461bf40773a4d6aae7ec8c705bf4495 -5557ec37aee0e4622dad05bc78401c7ac15bfd9f86255507162eac66f1262ff1 -efb9d3d08dda78911ab1cbc85163f03109f01b6363bbd353ffdaabf69e4fc0a1 -9f7c5650bea97ffece85ac8f80979ada0ddfe65b78a98f42662dc48947e45287 -539ef183e0014822b99a1437a7691664e3796df1088062631d4e2bb4c467310d -7c1b1cf7a7a8342b3ed2ad460bbc70b465d7984691706eeca413b9c9ede63d66 -7d9e8627e0fe1fc0207332637365e5097b3c334abf3d8360495372d1c0d3bbb0 -547a7af6022baf5b75721db0b8a56cdfbc47c1381a34f4ebdc84c11e19a7cece -77fd340652a79d4498390455f5593d71db49b28c09c6a11cd8bdc13d4af8b377 -fc701d17d61af73b872d40aac89e4ff426cf033e9c11db747e2c7a5b19eca754 -fb0fd8c6c96ae9469d411aded314ba294867d1b350403ff9a701577441d7a92e -638df839b7b04c8430ce91c5f5cf1b0cf1b4541dc598a09216de86112548b086 -c2530169c07efe56992a60ed4e2497f68b29aab7e0f34b93e1f198478de75cb7 -01d9cef4ca847dd6e681dbcb95c8d170191e9fcae9635f334803ea8f66134353 -ab9ea1c5c2a770260ea0d0fddc8904f8ed72ef85901ba992e0116e14d07fc3fe -a0830fb392a57af8bf658b24e64d84803b3a9e6de15bf921e52bc3f8b8338129 -ef0b43527774e703c00308c0c5ef0f691e14a60fc1cfc084b3ca376229044938 -a61b48d55acf33b8aa6758026ba6072f0336173ba65ffcfa14a0654b76109c68 -b62522e8e21a282446ab955666ae6a23030767ee001a42bcb4363fbddc8beb54 -7e1d10dbf56c1ae64efda30c03a2dbd2b6880c8750a531b570e28017149a7d46 -826d9add7cc098730dcdca1b37e8d5609e8937152cd7defcec52971132ff4aa7 -34be78109fdee933aafa4cd6d68426116796ef1ae30c94d93adc62e757986d99 -fc4b07e3e47d30f2be13da1bae17a360beef8a49801eb2099bc73498e970cf03 -77a7c20696cacdac3c717c3dcf63f43e85d9806d4c172af9755654930d92a801 -4cf9b09e44059e235c7ae1ede6f0cd0e1d900093cdadc235d613b14591ed9fac -de5c2811b03fbdbbfa3b925293ab300cb6910a30c287b9aaf58d82588307c643 -e2b803d789b59290f0ffaf27dc1f721d28daa2ff71fcdd1ec10f81fedd778d28 -b847b3ca8114fa63a297eeb76c19bca3778df9cadf20ed74ff3a2191ad3780e7 -028eb830f0ba173ed16d2992216e1cba1d1f0451511423e16581862ca92a9c0b -4ae6ca1dc96a52408b4177930825da5e9dadaa2ab0b3b7cdb99258898eeeb296 -44c48e0163d1df45ab4a4cc861ac108d0487384882f558d5df2d9ee420837009 -f0ae65a8ef75bfddd493afce88aa1d8232c08b71bc50595b6805b54775b2e37a -b075a319e4d77c04365069cc5f32dc7e8d93599d9ef77a9699d1c2c0a0b5e00f -324e508e3c240998b5edde1958b7bf7b64cd4eab474e18ba70b6dd8b4ad99cb1 -350ef9449e7594ae133e160b15f84fb85db7aa5ebbfb5e11bd637a5c457d5ab0 -7ab0abb8d36f3194ccc58c8408133897df859cb06615cc1886bf1c52867c1ff6 -7a7089b9136976d9b77421179d249a20cdb51e2d1d4aca8afebd7713f178045b -04894639e532105e30cc40a33950fa55725ba217251be8f599e125219785597f -97923cd28893b41dc1000c8fa8df8abb9562950739c727018fe70fb2e6f492cc -58894d6771347ab57f34c1ff0674360b3686f51e8e16e4d498a6fa8f176cd40e -3c52039181140f10decd1aecd83dd67425fa2305b58722426922e7a62d8ab16b -28971f4652fff5a541da6a35ca36b2b81ceedac6e59f5a9cd7b17b5370ba284d -f53fd469a66ef24ee29bc44dfdb136ddda693b9b4fe42ee044f5d070c6b9199d -e21dfaccf084c507c76ccb6baca8c95cbae00c572d54e62193581ff4baa4a94d -8e257a19c2abf7b5f4fcfb60741a9dc2cd2a7efb0797bde78f1b348fbbd6309f -c30312365613ea45dbfd061400077cc1c112c40714e04b253ac3983836abe40c -71a6bfca857fd06cf214954dcebd4a04d29462bac446f7601c5c17b976f4d50b -c930e2e24f9b75e700a02e4ee5c87d222a41808fcdd2131f0cce57bcb0a6cdc1 -985375c08d69938e958ef5ce494e7edaad53fa54d292da30c819a4e22ac60e66 -8f9dc1c65b6c43e016da6a33d75c87f3b80a95cf6fc9f705e5a99e928cd3f576 -8e9d34ef286581a3d315ce142a719ac7901d578702b8d2a9a8306f25be279a9e -354dacf1e47e4385c53581d5b842180bd2321e9f8f373a145b73eeb999f6da22 -dfd25ab85ce28f9fb48c46925a5f6ab293a038b96b3724e4ea782925f9cfea2c -1e50cf68bec65ad1764e42265ce9451e00eaaf28095acd40799d59fede1ed725 -55ba65ae6745c420058539e420635dcd0a9a249530c0f2c2e61d1f75fcd8d3e2 -c0aa195bc2a6409820b4f8c2b73c9f79ceddb391780665098a47f3435031655f -704029ed3b92a0ea56b260a1147767d7b3bb1c724206de6d8cfcabc52de025f9 -0e84c0dfa06a4f72a497181b496c05c10a1b84fde32ab2ca4425cf110ca3f76f -2ea7a5faf53a860eefe9e5400df45248d0750bc2b2d38c96242c819395558255 -fa71022f72cce154355c0e69b2994f4ebb477a4f9db95d449e8473f2a0e4db43 -4795e45fae17ad46f1ca580e9371f6de778c9e82a1eeb339be6e20c41f5b1ca6 -dcdc9a611b2f7671892abeb642ff6499b52891fc64fcc90b6520017d88618d71 -09a805a9ec3be8d1a65d9b822bb3bd464d4aaa6e1d1912dfda0591aec4092c11 -004520573c20ad0ac2008dd177ae587523f435da621a8ec7b26e9a3b8bf35d08 -a7475a3307f9822e764b7a041002371a2c0c94efb7d74492b6c8fceeb8dcbd55 -4106f5f632611fddf1161533471215da6df575b80fef3bfcf2831772ee8185dc -8471478f85c118b94cabe4a589291e66d7edfdfd79c61ae5af31a0eb5ae7e96e -6ef6f3ca607a53ab02758197b021f003f645475d69ec2b3e7bd937687b7b3369 -2caa4317e0638c0c3ebc5b6708b86459820e22c56e1b91e81578b7eb0edbaf54 -615a1d08eca9919ca36a38f2c6057cdb51d42cb509d883d846a30129a2fa59e7 -f8b1974b8e073eff7e6de62317782e4faa62a45dd4def8287ba8a62b8e769833 -21b2b1a9dc2f9e574d696ef0c074592b204981dc6732f355a813175888161f1f -0e6a22388c0a40194f3223531f13bf340e4afadafe33a5823e30dccbd9be3fb3 -d1e420180f789ce44062baaacfba961aea5b207c408d34563b76eed5f33e3e0f -50086d0e065d5ee7c4fc8234860c2daf0ac703bf97b30788dd109d84a4db83ca -ab69f3f1450125990c2eda22549fabaa0b429085d8de9d40ca4f4e2865b5e12a -74a2cbe57ac8f07d0e7fd170d42f820ebf8a610e52772e4dcb210e817ac0b461 -519777b9151b4770d2d97d9a66a6e40aba0cb7291a517f5b79a8bff03ea1b183 -9b70b9a6d595e87ed2e8a6dad65840b91d58c4d2e5502875716962dd30cde125 -38fefacbc5c5bd2f332bcaac29217b70c5ba18a58796e1a920b7d5f41691d38a -3e83fbd39e9a8f67f6ebf951ea7a2b23c2901e3c80c9094ae32dccfcb53a497d -98438de3d7255f7b6cf633a58c6f85a1ec31f95c8410f61cbfa0bf7351e5f43c -c1e5c88b53a86ae66252c7a0c3fb0570c7ce839c3aa6b59d6ac3d03eca2e77fb -c0fa3e0c460c30784ab5baf996cfd283d6bbf3a41c11157fdcfa3e41b68545a0 -78509ea3b96175748c65f5391745e5393bcad99be2815d6e51571e38759bdefb -2f525b0810f541cbf2ecc878250b44ef35a9ec3beb108ca7e523556cb5c6b531 -0e43ba3ed2aae783b05eaf13abf1575d120efa6042e07a5a1eab856fed89d5d7 -5ae59898fb71945cc0cf987635ba73b6a80af4ed58f67652926c75731ff3dfe5 -d0e27501c55eb1a5a004c7545cb674ed642987a11d693efc7c264720e14d771d -f49b44c5c1714209d94b3a69b54f359e60090d5c0288b80acc8775c0089b66bf -453c4790dd93dd1550ad38aa9fb6da74ef7c6aebf33f749389433d3372e5bdcd -3fb5674e1a481a6c8b2db9eeabadb30375857b7220b017747eb63e396ed9049b -49fc0a4b4d1ff40e9f1383f907cbf2287a066bd376407eaea68e59e1dc5ff56a -0d5cf12c75b5613986b7c0840ba9695dfdf7d135aa5e75c4bcf17ac3a62ba79d -9b5bb5180274e8e1e26f6382a2c95f2c0db1914697f21b642aac6c3bf00cc2c2 -a34f2a7db4b4133068ef8e16ee8c39e92ef0cb122e040a216aad5bc871d6d04c -453e20c8e2f9baf2715b330b22c57d34aed1a309bd76d2a24cd223a04a8530df -a132bd32dd75fc94db551cdf673057a2b70b61f3fc4380866b003d6edeaa7da3 -1bc95f221600403d0cb233aa552b3c69a0fcbe1fc802758210445f3139e5ed1e -11b14b0789fa3ea6de0f3ee50c2e039c1f812ad7542820ee2adae97a92e238e7 -33cd732a277f5176d4610d903700215451e822235309edbf5b9e37f3846df85f -afe4b92ad06e5d4751ae8a8cf976e0e4d46fc222b512958d83c482798f21221a -96a9dc1de701e9e54438ba55a4dc5eb4ccf206efe8a3cf072f8b9b161c0ffd87 -c509164624562a15eec35008cb0fd5676bcd7b649dcf2715001a1e6c302cd654 -e809ff768da5fff9a3f46de8498c34087fea7d65f70827657170d25e6293b3b8 -6eb825d01dc2181c523da298d3fcfd4afaedbd33b35c80a76df1cd279c6b6f04 -6908c7bf7dbf791a68413c3c9fd2a0f61ee9c94c8817bf9d8332b059c21bfcec -b055c96aa0ec60207e76ca7160411edcc61a4c7386d53385fe6ab899e0827b1e -59075be124a25956d21adc79ffeaf0a81a74b65fad7532e6036d033005de0da5 -5d69a8f9ec183a1b003d5fc9652720f016d72ac6d65f0eb6ff4ec9f29a58c1d0 -1684a220e871b2babd7b2288d0f3732ebf71369695e776fe2b38551bc71086b1 -9c245294952185b9e7389713820a1306603d205b67004a56eda30d78a9df0445 -f509467b34115350cea6f72c020a8cc1c6db9ff07aaf234409d34149da781d3f -61ba459a2e4bf03239eb1fd6f6af118f9aac56d8828feb03da1f26ecc293f715 -f820855e45301c45e70c0fc7a33e17756af3c6828fbfe7bcc9e57d0652c36997 -e45b34e2c1f69c2ffb7baa220347cffc31f70863e86a6c39917f1c007f2d53cd -741c2bd408844798ea7389eeb68c74c656050a1cb16b4841b015673ade151529 -d7f88af9d7ab1742e453e31c41cc4bf60224e99c2acb846e3c289cfacb4f03ad -c30ad76cd18390210022cbd1fab91821b28e5306473d861af97f24db321f96c7 -c12ebb6aff8e6f7cf3376409b826de9f1295726b04276ab95f333106c3622353 -952d35cde588e2f0b7256399be37b91409b70e4ff7199a42a4dd68dfbcd0a3c0 -10a7e374b38fa6e21214834c522ba81e46fb0650c629e6f03bbbaf70efb76466 -1f849b71b1208855d40778ec7307d3485275dfcf8d4f6670957929de6a4db8c4 -bf0bf4e33daaa5db5c5da9200d448cb95f0f822757f96b7b0c5409c223c2fc0f -4e4e66c9741c9fd130616e7c4aa7c77d4e6bfb7b67f5eeb9099681cb5cb3970e -43c5268e350099030d2d9eb16f26e95e1a4d2d07b755a174c0658d7e17bee09f -ed08fefdf73f687400cdad541f4d2c42bda687f7799fe2ace66ee662094b7412 -5d7e5d168d191d06788964f3029f6829cb0c13e8999e5705ec65c4ff1a3efdfe -503beffc00486d214b5d6ee59a24c825283c9522ce88876e5f5be1f239acc55f -55bb812c38623bd4a1c15a3b89adc53832b048fe10a311f7965cfcb373366d40 -0b6474b276e7b2fb8ef89af3e5192927c80d66ea768739794b48a1a65e55200b -7eda32472b65bd4ddf4e7c70cfc1a0c5a5d604b9580fe1595eba57de5d3e172c -07e537eec376e7140f6b3a16b494246a5a5a42591cd2d971c9339930f05807d0 -9681a826ae7c5c68ef28c35fbad4360583198aab1fd8e105da7b8dd1f7c87bb6 -5b97edcc7b48ab797ce989ff7b2dadfe2cb29fc1c8900647f2d9d92e77e034ef -2e0859cec90429ad0ec54edc771c0b1dcbccedacefbbffe498fd554c25a95684 -2b12b76e7755235a831005ce3a9885306cb9396512dc1f09cf644bd551bc8cfb -643b7128a558b17755a7386285c295962037a72ef87e1dbd32715262e541f5f9 -b7d3f3ef4125f156de6ae09cc9376e0a5f5849b312573b348e05096b841b8fbf -aac8942845f67cc2530fcb1a9c5c4187e56a76f46bcabdc8312480bb2543545b -806c6948d74ed5d6738c2e13a171a583eb1455e07131ee0c9a889a5d2fec5e6b -72660378fdf2126f2cc8fcdd18da1dc687e9f9839e53f332dbfb953e72ec82e2 -c1974f1aac79a8116c11d0b50478ad3ddb14410e5d49b2fe857b4f323f5e360e -9765067fb057bc14d1576e678462766afc88dd6f5dcec4332f4ea5a021ee5726 -535f96900e250b579588a43b5bfb210c1585c8f2f261b67f7dc08a8d23e950c0 -dba521bf2300bf603aa1be04d7dccf380dc92d5a64bf3289e44fb5c8a578b39c -81b340402d996691d284d47cc548010855617eb748b5107a1d316d0cb2958399 -29f6a7f51b153792e1168bfe04f2534830c2ae59d953420aefa0cc0838dc3acc -4fd00931f97b4d92e237a633e430b6d2645fe03ac5e8cd8652e3bed7dcbb3ddb -0708618694908567d9a26d17b365d61c051a9f439d8e3a7108bb69385bc621e1 -9b142de584cd65dab71a9fdd5c74ca8f8020cbf9cc9a99b517eeb570ae679dcd -821c7beefaf8abd0dcfcf40013d067d9861f8764a149a4ab1a4dae073342720c -ede94ae7987464d8a7499093cec892bf7d549193421752ca9da3d5b8bdf616b9 -99a0c7de11cf30d77d2b114bb430efb34a2ea0e47f8f67cba7b576b432c47a04 -24be8f0734a90752345fbfc58940adaa7cee25fc7f619196fd520d3e3856a9ad -f8939e6e63d20079f67bbee3206f4a5ec0dbf5274b76008ca45e65b33987183d -ffac4113eae6a69a4a8ca21f20bc6c550aa7060e910f52dcd630a74918509d38 -d780180cbfd7d75e1cd04e433a8cd8a7a3c6828314120d7f7ea48d55c6a21b03 -a311c8d344f6fd0506d8654203afcfd61c4a0856725fa9793c4aee19c703a7b8 -eeb7bb1e475cbae39b542a556b328267f4953b5706d043388086cb76950bac3a -405c35b6ae6c286b289a0db03809deb6f32749b2308b9764e4251b1c935a4ad2 -625690f7555991e2d080e0e4755cb88ff582201ac0c874ca84af76bdaa74ba37 -2fed5da2877f1ae1fa7165e3c23c7d3347994ab74ce6f167eb004793284f1d84 -44607ed31bcf584b96a95f8329b35ca823c7774e8ba96541d7c59b42eaeab3f1 -22a292a66f1bb00d4c3f98fcd250935fb842ae3d71e503ee53d177e060be7e39 -4880b982cbc8997b03fa349548056b0b058c00983fa23bc0b0cacf05a67f0d35 -da6268cb29adac2fcd25e14879190779b75883ece69dc7e3790776ea50c8cdcf -5224d6b8c4bb0ae3f3d5be1a4607f0ccce7658af8c9fbf3a82df3c635cc340e2 -1cede24ed459cb673326ea15b278023de2daa06fc95a211c5b8a6e77c9f59464 -6a1de6ae1058339dba7dc68bc73541daaa1028f70f3a4b004bcda23d15a38262 -02acfba6158243b66c34f23cf62b39f76d0a1e8a1b34eca8302bc4ff10e00fd8 -2175fb9d65bc7bccf9cf62c974b9b1d6ed9dfbaefde1d233b556d8ad0ba98648 -ab896887b4332235e23d4171bd47dac7a158a42086bb510e98437184c1d053e9 -919f04dfc573c234ecae192de9f18d071b91448d1b155edc961192db903e9cd9 -a625b42ad3ac341107afd7d6098d3358980fa8a5fae07b5e55c26f2fbbbe0d43 -26bcc1bbb1112643f9a4679af19bc658b109e97aeca3a3ee2712879a7440c9cc -a9f327d52d97d421b457580768145a920343c308a1618ef2825198b67f6c0139 -994856cce7bc2a1d6c50de08c482f001c28d569b2fac3beda57e8dc436de14dc -24d4f987a279a69a00bfe723eceb41f20d3b51feb37ee1d55a600ad072bad704 -60a9922972d22868592836031123789171e3092108bfb04b7635f80fbf11e8ea -b0c021550e915993313d15d4335f6c828055beb1d7ceaabc6028bc13a6a04501 -cd4519bf60d58b262bf0fb34602f932374e2b2b6d5f35272887ca52b1337f23a -b45bb11d124a53a360b07a05df562df6b410db2c8e8082f3362ffc275ffd4e86 -e8b79659b871f22568c914f42325004aea280e7ea65947127d6bc9eac7804f39 -80c21af73eee20345481d1b99aedfd3a2ddac74ed8f9324810ff701ddc563419 -3707cd085d8d56c4e667dcc87184d5099576f2698874f418aeadbcfb438fdc96 -b1b9a7376c06aa8aef4478020ea79620176b82e800bb62ba4ebd794fc7263e95 -44c700fa409eeb75aaaf3ce676fc3c8c6a53bcfdae477788c32313dc5ae261c7 -3bb5ed09e54f96e8e456d78adc17bdd2e23161c834162586ebe8d718248a8395 -4695c70159c8ff278dc04bf74923ebc2fe7c4421426dc4a7cd15061fb5e9b7b0 -97fc8bbcc0d24eba72fb300a6ca95288a69d72efebc148b5f0af2a3a1c74f714 -c52767df305417c17dd42fc1d6472dbc995d168820d61f15c1f166fab3e33032 -3cb301f3cc403710e28ceead2eb4bcb73231e69a3b7c5168e2bc9948ea219792 -6040c2739b8f27702be0d7cff735d99bd2a3fec60979169c297093c5168d8dee -9ccd4710052a67f490137d56819e01f5b6fad259b8e97b4c8221ac60b309a5ed -38bda4a5e512eb3a62d33dbc87669b332f83c9d24e0fbff384f8d1784c5d96b4 -a423d4fb804741fad0aff9fcccc372bcfff830fb9cb5af0fca777c78bcbbdcd4 -979a1fea1590d3bdeb8123cb111534cf971afc9769e3a7be30eb9c45b3c03760 -159393c9b21d33ebd87d7e07054400ac358e1d110385342f3beaba3a7856b1d7 -3545cb4c0000674d60541aa5c3071974b78449b753720add9330a748a190d6e2 -5a5c522e29e1b8444dbacc886c525fa6765e05ad235cec1ecb53163c1e70d244 -b3d01ef0f8ad22a4bdb5a5fce201ad8f31c109a763cad4b9cad435624255d3b6 -567cb5a0ee78e146d86bf9d1f8e943dec16c8785c73c0f57237f361b5068ba84 -0e60c099eb88158708bb92e4a9146b5fded1952deba9dc874a28df80ef76d8ab -9e2e673a863a6d56b14da700dd8fd2dd10fbf6844fbf67fd6c5ce970723375f6 -aa21e479917a4ae40118800d85e36bb26770ab1344ea3c4cf424b685a2f310fd -f31238ff1cd4b6a1aea4b36ccedf1f807ef56a7b38bb6002f9dd1db80253c64c -700026b8433bcd1a481497171e06dceca3a627cdd0a47a96b1b03d57bc3930f0 -fac24237482cfb88303be384c514fe2b429bcffe7640ffe074b6c4a714f2b3cd -45d21c3f90bf0cef030a43297057315e477700b3af3e0e698f42b20b263f32e8 -00f34eff7083aed3b7cc610fcf9676d1e19dd76fca9d849f802cbb89eb69d644 -ee28c4eed2648b889bcdf43152a92aa3e631de76988ba8af1e7d45312c458ab3 -50334d7eb6c48cd5f5075d32942b625abae985237be5371667316b59f9af04cd -987f1ac9f810656fd0e32e411f069aa398b941810fd5cb76adf012a391e88b77 -9c71551751ba9a7c4b48ca076699d8b1363adcc1ddd7804a1332e5d13837265b -2c52abb97d1dbef6259d038ca5f5be2a1fd833252da9c3af558f07e5ddc87a17 -ec9d015e3763251c325308053e4b5a4b00b8d758cad87add1df483a2afed3b69 -348c0c24d4412faa7b2bcf4fa735f754f07f650c77ac4a35727e11d62b984d2e -ac7042a03a5b5657cb86d43549f1705beeaf7774ace9ceb6ddba9d17a82cdf41 -e2b7ef4faecc13815d9ccc2303f94d44500b4435fda9d4098e75f1ecf96e15af -d1ada67ed113133821ece3f646743a6949c683d4c9532042b234dbdf7bd4ec54 -308bafd25b0d611a24a0bc6efb028f83813ab25776d255f39239647623b3f84f -a2cfc4031e1a3fb112c01762296bdd28bebad061bfac4397e5b8f1946576f734 -40198b709742d45123f4f459f188dd3761fb3893d3928143573fedaddc29c362 -6ba3cf664873eaec3b904af89d59d637359fa1cf8d91542bf698de17756b6ca2 -605a092ce66b490b93a357f29098380ddd201d094682479eb3d4c35355d89898 -9bdbe3ea97a0dec8b2f85486a2355ad0abcb339fc5bb581aa7544da94477b8c4 -9bd9b90ac4be98afeb9ebf23c8bf43e456e54b164e800bc877c04d01548bf8c7 -ebd47fcda4c5092d66f112c5263ba68d8683bd3093b8ad41e2bd51f221a4a791 -c6983fee462bb74e05d604fb8a157212d8932a2d7b6526a70c5d7079a1998ed5 -52a65a948a094b8c48c4b525f9518577344b805cc445afb2809241e94f84f3a1 -6e4d5369daa55f49c8a9516a838000be5e1aa9da892fbf76f427188a8eb14ffb -5c457989047e7e59f45699a0414f8bdedd54ef0214b78c810271f9ce9e35d955 -977ad6ece2e0fa2f81bb868567615d48e2952f6844801d3843d419a60130f130 -ec3aac418f6b6f7279b1b2fef3f3877532ae2e2892c281f077ce6b34b11d7af7 -b0fd6a12b04dd6fd1bd720eaa5ba7833031c4f8b3cac0db53640fb5ac1b1a19d -491201a7a7cce0ca8649d2e466ed6cdb7b80ab8d79b39c7a65bf4375c120d9bb -92a4e95f8e6f167dd23d5b63fa6ff33f53f5ee9d239c1095b5382daf230b3687 -3a20fcf50c9ac92ce9af02a502d5e95a55a8008316ff6a61408bb8ddd90f168c -c4c7da2aa5114102a6f518ba17d3e476a40b025b0ccff255ba423c5877a555ab -9cd4ae8d9c329f87c1fd034df388995ef031b1350acc0b6876b51e58e4a2dd9b -62917e83102b4800f522f983c36bdb468b211c487a7de62e7b21cb510059aa7f -b1e43af1bbf828c365f7df8ad9afc1a3adae64b68e5fcc1877b9e047091f53d6 -0475f26fd3232f59ab323a644218d4cc5e558ad5790a1cfd134027f00149b8ae -847294af29dc7bb204e757eb5a7f5a7a9baac629714e7df3f13743db3dca8798 -f0898f428f644a7a6adfcc56267b50ed4268cca5ca59b344e4246e6070e71905 -e6d7156e4766013ad5905c0dfc898085e4d40a5163563090292eb4d8bc909499 -203a1f4231bcb1ccf3240cd2e112fa09964131c0f0e2ba2ecbe9e6e3170ee297 -26c3375a09269703b1819486c008e492ad0b8dc591f43fcbc41c8d76a881b35c -633a79821509c9e0d8bcf9a9b071c784b019d49f9038d13f51693629c4bf6649 -27e8d99ca2d1d9ca0f1c7f705ceb9044586bb33fbe48f5fa87846cedef53fd8f -23442daa7ddf41882af3b964a1a4e0a1e4c96b98e26f963829ab158983c6e02d -810fe3574b6a3ba31c549fec27c0703279e6a0f0c4ef -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 1 /Delta put -dup 8 /Phi put -dup 10 /Omega put -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 19 /acute put -dup 34 /quotedblright put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 61 /equal put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 78 /N put -dup 79 /O put -dup 83 /S put -dup 84 /T put -dup 87 /W put -dup 89 /Y put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 94 /circumflex put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueXX 5000793 def -currentdict end -currentfile eexec -8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 -97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc -8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 -b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 -50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e -784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de -fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202 -3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5 -2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12 -cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e -4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618 -99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8 -ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b -1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a -e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af -154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e -44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40 -a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e -3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7 -dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552 -315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3 -62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5 -87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273 -8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce -11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31 -95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9 -9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a -b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605 -917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1 -858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76 -7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7 -21b81af837a200e1d96e90a7ad7589fa917658d7a173a511db53af1848892270 -44c4603be1a5ac1893c15a21fe5979a09aed3473a98e06c98356dc01ed3f5e14 -1c3c057c3f97e2f9e8718b12bea7715a3432abe07df50291d1a395e7ba2f06ba -7cf20988904310104fa43c7a1f6d32f5fd290d4d572cdb5ab4b433bb849dd1a3 -58b292cbd5c762262751c26d8756c7a3c4e6bef14ad9a628fa2ef5c0010ee4a8 -d530f3786bd4e0af07d5587e90e19687d1a31921f975bff26ec2cf07f3efd4fc -54fd4f92f08a60ce2b3beb2dc8d81a303c8103283e6e5341eaf61191f0122624 -2a4a88caca606438a767277972e2ad7ddc9a36f43d5b2d010b30cac07a383c1f -9c18c89749e610d026f72e5ee2477286eb57b77567af9c4f20f7454a5719b0f1 -9581ebf64277e8f2ddf1ce08ee33f2a532228509a9ec0d95bec2b7beb23319d4 -236fb1446ff7df90952101435fdb0a0fe7622a6a3972afa4b2cd99b5822b1bbd -c28f623efa3532adbe2bb8f50ee214454f95d282af029d174edec357747b4d50 -b02e2f47b1e9d736f85d789b58fc9ef2951954f075ea9fe373318b67a917096d -d42424e1aa676b2a74c3884c66435e9183ba2559d85d0b6324fb4d4762451abc -740b64a53c5a631b6c07dca48a300620142a53eb735cb766d2498da48f90dbc7 -5fb27ef80da2deddcef6012b8033648f89c18a4ab69d8df089041c5d0673886d -060e54e6f2ba0562ab6d2acc623b70d9f0942e64b542e609e688dc8d8cba3069 -5a19987b0ae02ec45bbe6af8c5e84e43abaec2b7cdfe89236d857168d424319f -054dfb95e1abd2445266e279886bc60fd18a05f9c21f684d0874264d933326d9 -c88b9668da837ceb89213019d211e757edc72e2303bb2b40954f254de88622d5 -601e0bcc65d903271fbdc32bcea059e5a0c32b9545a2c6e8262eaa912df734d3 -f46bbadf4640f3957b5c01ed33616319deb18f9f602de5d6fe326269066c3273 -8e9d0f99038be34ba574ad957f6b7a197f66f06956172883849e7ccb21f271bc -4ee1c357c752886254e0bba6fc13e301986d5cad37ffbdab3069ef8417fd6d1a -69e26263688b4ca921aef70783041a8abc1c751302f0657fa596dd3724a480b0 -5c037ed88981a99e2443a38cca3fb92c18aab5f67e1228506b4f5c7e99c08a5e -e87a49811966564caea15d5602f0dd4eb1116048a7e49cc29498a240bc7e9c22 -dfbc699ee270dc8e3aa694ad439469013a0e480a061ac9569f972d5d308337e1 -d433b4f108bdd6af35febd0fec567f249265b5e3ee8868151c943e0eb606ac71 -50378e7c790f3e31b5d22d2e3a143ccdfeda4aac9fa69de57210cdea7ced9e04 -137ecfc978dcbc8fac0baba3de6602b0d0288de3526611c811453fcec09b08b0 -8fb514c6f2db0c8770a1be1be605ce5c851e195d976c33840542d446a3617299 -f99bc6929f70839cf3a27a4cc3c350832b2d9b50b7de3cfd1133c0bdb825b5ef -b75a1d7194b096f400faedb7ee15327987b28c4a1b96314ed9486755d64799c2 -d0d3ff8503970bdfc9ea099bf06d90fc88bb512e76017c4f3b2a0fed291aad8a -0f3dc32dd5f08098bc600a30e2f8c170d2c5c0794cd9ad2e01d560c1ff40eab6 -001ef931195705e5d7e8a7cd2f0741b88e3491134d9a28ce6bd5ddf4ea320b95 -4609d24b53fc2587583d6b3daf1dbaf44604d67800b05d966d3423f138eb960e -a7ceb5c3679c466bb9e59bcbe482eab715398c4e5297a239cc977b61e853694f -df75728c331dd90a43dc7acc8e752eaeef32e23d24737f6db0227f856c47d726 -fd221115551034baba90738d8a2a832754ea21b4cb437f60d5e9598dc218e2fb -695c6c789a58eaff7041bdf4fcdc37a128fd6eb9d9ebc22a755e9499f1d0d9ca -49c008600191dc9cce8783e4afaff581a986dbbec5cbd4e8da639b241cd1f0df -f70b27d91f152d4e245e9dbf7dccbf4afe8e22d838952a0a2d91642dbd27e176 -9d6d5f90b8fd9bc84b94ab8eb17b0e62cfdc0e78c9e11b294f5f1347c85f4635 -16980766d9c387f0393ff9f532146ec7ff297a7b3000eabd54893383fa030e46 -3211f8f53ab4464e045b48afb0dec9167020dfd4d1cae71ecf32608952c7c3fc -f1c3be9c6bad89dd019cca32be6efa86214ed1ffb1a6cf4dad9d8f58974028e5 -60f54d16d911ea0da2b257601085f94a642f082262d0cefaec93c2cae7b698fc -ead0044d713f1f69e6c8835f7d027a4e0cb500bca8bb7eac6801655fcccfab8d -21e48e2aa8b42f36c1bf4a39b8a8f0c7c8de17d9abad925e2999583b6fa61756 -be51150dce628dfe9d4d05e389b427f062efab63db8aedabe0a50c2dea08f095 -1784a735771e58163e1b083d3a5b8c8db80838d0031fcab2063144d554577e33 -947948cdc0e0818f99868c67c1ba5959cebfc99ca3b4e927c39c92736c54e98f -2376d88a8e495a0aba0966cc01bb3459d1a9bb16653c59da0f21e214f4e342d7 -d6b35426c09bb71ec93eabde31ff4c3d657e058386f97b5b0d7565c9c6d7e3bc -486e1086e9824cedfa80c0591e1ac4a0e46b04d1c502a8408f1b399a55f86390 -7717860dcb5e816542b37be544a7ea9f9f3712d3ff986be9961ecb9c927dd27a -3b7740a8924f572dd2059108990ee3cb5fe87b76425619e02de39966f64a32ca -26e9daacab48776a9cda828c187c9ed220e7d135468a1b35a49d53a1926e62dd -528ac0bbeaa882e334a787a1a4580b05c88d4cf648c4dc50ec7ede530916cbe6 -fce2a2ff4f03943adc5ec543268b0833c8e8c0f8d3295da127c51e7e501c3f2c -02cbc555eb744f42f625ab34a1614921258c2a73c969a076248ec549730929e4 -8d64f7a07e1a150d36ebae24476a34d5e2ec706d19a485ac61a6cb9ac628cafe -615cd14df7a10d4c0886ca0be8c7c20e2e70862b60a44e147fb1be5684a2288f -c68ae9287e6bb54ba665d4c01280ae50ebbd2d6f6f2b2716bf16ee7e6ed6775d -e810af333693469a6e99a33a9533b9b1fe61cd1f962753092a800897883684e2 -db9cd91668b608847c759b7e465373c797770bec3aa5a0cc9073e851ab2f27b3 -c59475c586a264ef263e1003ddcfd2e583fae8bff66b9ea5bcc2e517e87c3227 -1cf7882dd45fe4ab0cc4e8bf8362fa5800dfc3ef240af21753c26f9050d391d6 -b75e22998592a74b06f201429e5285eaf749de5536ccfe75e45b511dcfcd3f29 -6df14a09142477cb83bb0faa20326997551dd1b037e3f973c6b71e123003fd50 -ca395a20f6de9883ea4114fd3cb5ef3bf928e51e203732e9fac0268e740317de -17cc84c09d6e27c448c027f5424d04b67bb791dce4b40ac66a768a97db358d6f -c5c32ef9aa1ce68cd5edf9a61005731bf730783501f5c43786724f3d31513947 -04cd43cd4e4adb81edde7c01a22da6f543e55909f4195785d19abece5fe62be6 -2e7ab5c5ced8229b30c229894769c253bb656a53c8ee344d849fdfb20206bedb -2d5e5a1f3812974f61096fd4c4c87d27b43dbf116ef9c10ede96ddb84ac10819 -eea925d277814713e39984383fc7a0beea3a402360fe8fc256f21f1219793475 -aa4e71afcff1cd1d330a8eaa8c74fb829a9907e6d98a50d9f606fddbc7ffce80 -f136befacedea17d12a1472bab80f42c1dec071774c3789a4e0bb5bbbb1f4f71 -8f1948c09e86b38cb40b4936c3a6267676f101d8789389e7bd365438d1825483 -ca34a740ae7f8cd7ac27e80e559c18892c6452a1a4b4452ae8a314bd03429dad -9c67c79971a701d789d38a032e39d0abc9dd8ab09633080bd042c53d9e8e449f -89d09efc7506a1b0d448e561eac8375151f594f1a9b42f71b929ab847a600f54 -3cf0dbd3c1d1a4f39ea3b05fedc6a8d3651ed7dd56a8a54432bfb8728080d2e6 -8d0b61f00d92714a1cc2b64e2c079e09ee3cc866ba5e7ce0364eb0e22833c964 -ea40247c62f0001e8dbe66389fc10f686fb30e9f7702688e35c0c90bd1c53623 -e46f40eb0fb42c12298082c7b4b1e1457d3d76b92a99e0bf5816a10dd22e5568 -3be2d97de2945ec87c16fd9fa240e1c165f56979647b69019f4e3a1519a3a86c -25d2aab62174af62526706f6c49129733f81e5a63c0aaded9bc746f040da879c -1348f3022e5c3b39d659aa87d6e7d105b9b7029fb7e8eae4469bc478baf18859 -97cfbc70f1193c8dfce109717d9e576c6c7de2727e8056a6dbebcf91e6ccb2aa -65af48ac505a3b89f61877065d3fd79fc89bcdb0165f404afa563e81543db19e -8207fcb26fc3073d265f7c7dd74d7bc4b05a23ec3291f5203b6806c302658c61 -4b7b9b8584eeb2847c1b4b070434e3d50e040b4715d48d06182c5d1c232125ec -75b72e25bd9ecdb5f8937ae8b92938de5d30fb067e447ff388c1a08d7ef1ef83 -5d3c5ba89aa8edcf2491f41d6d1110fe31019c4adcd3967d6ffe33f1ed8d9d06 -e79aec0f3f95d4417ab16316f66fc7acc8a9082692780d7862043a00ab0689f7 -85fdaa8f4c75752b726ae4c704922f49844483807e16af019b4bd905ca8816cc -8763718ce3998c4b9f7bd5a6859333774d3f9e8d7aee946cd9d5c6c5846f0030 -44edfabf7006b4f6321f8eb833badf3690dc283623dfa7ee35bab5bc86bc46ea -beb720e13e21768e551fbde2f003ec3ff6085e54493477844525a6604d256634 -d37daa73e308e13f2f4df915b07f53638514328c6f26acf1321438a140246c4c -402f8902486d028c3549585efb9b9c58061798977a65efddbc9a4576d26e9772 -629f7ef532c7b18c51d675b84c77329b04c2a23fe0a0f4b9347b8550337127c6 -692e80e365fca46815a6e11754c466f957b7ea8d468545a0af0c1d7a1fc3135a -83096cfd0bafd397518641011e4756337c5cb7de0e94f2374f2a1cf74d596ad2 -1be06533e630efbc8e27492e4084f08e56ed8687a32c2ce5e0a01f5a8b3598f3 -dc007e8757f64d9bc7f7979a6a36b70a0702ef43ffcaea3d8446bada7f3890db -f29bbfc459808c8c97fdaaab4bfe6ce2739a2fa52d28580b343d814f3d0529cd -304011622346d4e9a7fcdded7245bd8417aba90104f24ca493eb2a7ddc6e5df4 -cdf6872f1733f22acdeeca0a660a4f74142b5466ad76747c7f558afa6b997d49 -5bda8b577d70ea0faee81b34eaed8f823ca3fc6a2984a0d207ee8a505011c6cf -806f7cf37c34b6f1920a27c97144c5b787646a41b73ece348739785b86a1c745 -a0c0475a6c6f82142c6d9e17d6b2b2a544be1738d50381b1ddf9152a393b4cbe -5cec04679897515b3e3640a775ab3501320cec975e74a52700fa70d9fafff8d1 -254109429a31f1e5674ef72186f10bbb65937d4f4a841a88459d492f21b38458 -74899b49271e52117fb01b2b4e1f4d1236db85acda95fdd60361e7f40e5854cc -f9fe9b4f2c8a3cee532bcb4bd8a933c30a21d43001907ab21dd7f193d1665c8a -29b363a9288c3a22c27d4007601a7333b584171a4c8cf62bfb3cfc6dbd691863 -4998e7eda8b657182a82624744e54b6049ff55b982fdba66dddfba783e749a4c -ba4c187458f30aa4180aec9e6970873d7fbd479bbb623f92ecee1e764d0ada70 -aaef8a65c6f0a12dcf381512a3ed2d7c1fbca9fd4c339f54e9e07751e76bc41e -076c810d371944ee53550509c36494ac0c721ddd4d4e1e56c2b28255a922f443 -eeb39be4d1d9f3093edf4f50e98ace4710b14664b012adb5bd89a434c686e4f8 -9d08835c0169cbf9208332512f5f54cebf4dea1a226900f93a59cfda627aa736 -33118fdced43b32d602dfa09e3e7dd97f962befa7d3ec4732ab665ca19269c22 -32ca37623967cab87ebc0e883786a3912e6d727ee79b57e12f7e55a82d205ce8 -c6ef96ba1e070a5eaa38864d45d9c3a0c09f0aceff82add96481708e61f49638 -c65e2e97a538c98a9c38d59deef0df54dfd473300f174e8e284c3fed1bba95d5 -6890f49e3f6474248d904ff92aa7310fb9d7ac03bf8762af4f438ad547ee149f -4bd091747e8692c58798ec4e38b0e127b7adc842aad4ffaf8b516491880643db -f61bda9628a5b12a9352d2bf0ab476bd551ff2df950ac860d01e56beccced7fb -89e299a7d14bbaad3986e32599c71cf3152518e8f7227d09349119f21a02388f -3937e7e7b59c9256865ac867cf6281c08860b5e1a759bb2f5ef45ce8af4e1a44 -ab231b1580d31e740485c269a43e958293386b6620ca3d3a1bde0dd59c5b7009 -b4cd0e307323acd1f3bdfb34f1b064084eab7ade9a97a64f80bd0330708f993e -5f1cfe25af6736172d974f060effe7450f48112fe515af2e48506dc426fe3ee5 -deee30e475bc8077de4f409beb2449080c32e0f4aa67fe891f05e28ccfaca02e -7cdd24cafe6fa5c5103c3875c69177d3fda49a3734f56ec1bbc5876854f80d4c -24583fa83e423f362c1aaf15376ad679fe115ad7b2405958f7d75fe431574a71 -3c0645148e3f5058ca1e2a01480f05a0072e74a7e00e789f7a4e73d9d7a6ca31 -97d549a590ffa592f689aa8f78e5794ada22465fd28fb1f85b2b9e8aebff4478 -515c7a0ee09cee08f5a000e35cbc09aaba9120f68d0d13ab4c6e2ca137c8eeaa -8797a1500a046eff4b5225c2dcc1a0aece46d4462dc69c0a162425d2ee38e7b5 -d8d0714983a94bef8990267b7e6e4ec61ae03092d3731c96e7de891109b61c1b -e5e2fe6357aa63ccb881a27b3e4e7c4729cb9ff7daa426c51ca11c0460f41e7c -adcbab982a9ca4080a62e8fa0486ce7851dbb49b994d6763ce9b7c6f165ce6ea -0a41ce3dd71e1d9fa393fe69c16de92c952b9f8989cc7a7d1f67d968a29d1f4d -b5733a3e10bfc89e243e21915220813451969593eb43b00888bf791c0aba7666 -dae91c65a93b8b8cbac730a3ba7ac5c8be74a6b40f6eb7193b68c1a662434f2c -d6752d8f4e3dfb94f0d74e8e8d4a32880670141dcf5788b8e5ecb6390097b9f0 -dd13e0fdd3cf92e6c9537c927e0f14ea023207a38040a85897939f8616b6db16 -699c46e7fa915cc0f953e6cfe0a6ae224d99e360cf92657009aabcd521bbd7f4 -9907623df385245546ac1aaa54c15438ccc278a2f1b4d542ac2105881f990d67 -a9c17ac10cd1a3734572920d2fbe94305f338a3189b6a33cb226ce1faa107058 -cf2923530ed6ec6b39da94de955f1779f480739c120cdadfd91b62a3d8f132bf -f9fe42f0c0dbfe83003c4f99872e0ab6bcae9696167fcf36a5c915697944e758 -e74e6980da0c6cfe3572c27bbd2f6dcabf51a7d186085a941286d81c1e0c0a64 -23a287e8ecd11e3618da7a668dcfe8c857bf66cf5ff866517ada4f2fe6b2ae30 -62ace29fb869cb803a8c04149be3157ebadf810d30d223741bf2e464889fc55b -768322c47a32219645be960d30cd017ad32440ff572d5b6fa13130e448a47e1f -1a1484a3bb1672aa597f4a3c1056018df3d9382dcac8703f18918a7c513bf42a -78acadfb1b49e2f6273dbfcb51d06fe631680de7eecbf2b8ef014d720a4da7e6 -c4a3921794f63e402c36d77fe5ba1cc960ac2959ae8e4486e0f2f33630f641c4 -7790b7b689f60775f3eaba5d626b64444751d464a7b88fe5521ce190f5e31ead -181b5b58ced29c6a2426ac4470130f40576d6da2f8c773cd34fa701843dd5afc -10561a36404b38b3723adab28205fb5222e86f56fc1980cd966dbd72759603ed -4e13b12f33ac167ab07e9c9800b5233acf0c2f567dd1581031232b090cad9640 -e98585a183eb9d6baebcd1a41d892c5094d4111c6a9f25fbea8002c5c753bd9d -04b871bbd040d59e8750dd5c55e196c57457ea5f9419ea5a24357ce7d92fb76f -38a1733a46e3fb78402041caef0f08e487e356641568ec1ecc6bd9426ca5986f -af9b3a6e4549cbbb5c862e95fe776f211e8e0ecd7bef5dafea96c0a7eaa1de0c -0e0b4563e6cad7533ee0bb48221b9a2f1d28452e3b95e5a2b6fe3c988f91a840 -af705a3912ecf67c19b4c70b77d6594e0396a694cb18e3985872e804bcd0199f -cd6363551578b3e1f8662d0cc4757a2132ea6c0f2fb3c7dd583bd96d37cb77a7 -fb7620d06fba720dcbc7f941f72cbefdbb60b00a533ad2b33ff4a93001dfd876 -510e3dfd5c13ca50b460abdf9f2e62e3f905311fed6075b69857fb6c4375d9bc -9c7ad3c09b68131600f08c7b65291425ef2860d5342d5b848246db9b566d0f79 -d55c79b7e2050c55f4a4c324d1f90bb612c66cf6dba2ef84964430caf49b3a22 -6f69eda213ab844ba63caa2193801bc69791d9f96b6b341bcd22f90b2479564e -334bafab111cab39e2b642f40e68142cc117c9c3101107e9f57b0779776ade8e -64c5b63bbd8417a51887eecded57c88757b03b2d8c7ff443cb7c928f1593a304 -63028099104ac1843fab7a6ae7f766bf98eb2d25cdfdf5849e91456ac3cfd3d7 -ce7377f5470d6730e7c7f8e704b21ce4ccff7552f5789ab3076e43d84bb0c80c -44eda42bba72d6fe2369097949b4d13d3077149af5ddf5292ed311400ec60624 -abad78a00857e69f9464523ab1791493f62000081a56e2de70e90ea0f21ff005 -b14bbf10a43ef2145e21296bb56689cc3ae5542b364001a1523db41ca5b62687 -95a10ad583d933b5974ad6ab632c79c632e3c59a16142705c8368460faaba9f4 -420071c50a54ef544414dfb71284db6fe4422dfa0df97dc33c9929acaa229d5a -ce4ba10658d4cc1e6ea26b4f6ec5febd8ab50a6a18df75275407fdf3b31a84b7 -bee9de120e81b1744fb9152ddad1335292a1614a6e70dd33cf9ddc306c60a36c -c5e1bcb3c3b7685eb5e4d7580273239ceaa84adf57ce1b36d3d7baacf1d58d9e -4a3925d3b1c2f4af856eed3d237f708993b8f040ef00da03c80f71f1c93f7d2b -f4248dad2a8a4bba75070b3414be02abcdf60f2f73e055541c1421a154c1dd8c -cc6fd9c8cd920555137835690111d8b2ffee1bdff793d1bf13923518f170295d -c52ac34170ffe825564967902a48ed232ca6e1058585b0ffd48b2a540abf3297 -e6738c776100195569fd7a1ee8f99226715aa63950aa8c9e58137faaf049612e -7dce103f313652c105826fde10e7f3037c3dfda674912c2bd196924f76df04ba -9400e2b7461e89cf080f76f1f3ffd2b97c11bed972082fe39ac214fc8fd9d893 -c14fef3a2be39537de1128d095feea28d8ca06f23053531d39990febd12746da -b702467999e01bda59185a9adcd63f2decdfeadbcddff01eb23d61cbe1fe216c -5ed66953877f5a9fcb924ec7ca78315748a59deee67983f4a609c6b1ab229ffd -2d1ba3aec6845720695619be40abfc84d27b8d6e5ad0d99186c7751932ebda32 -940f9e644e64959076268deb307e4b7ac71ed9b0c31729c5fc6e0c322ab54af2 -59a99d3c77ddcfff33e22b2c5aba398b7ee54aa3e3ef0ddded70dcec4fbd573b -52a04f0fdf725fde3ac6be96694869974cd4abba8207dc2ba441d24394ca7352 -56dc9ce701e6dd846f2c3f5438a9421fbe734ece254bf01a9d194e38e99389db -8b8ac9fdf2937769221483efb16b926891f770adb8f14c8eb08b66470e10def6 -b603a7c6ff985ef6b4d5e70db8f35ef81606665ac243176e1403a87c14f1077e -9c5f4b9613c0b1ee375779e0b4afafba1837891921a2e0014a153e7dcf384096 -0ddcd16b47917abf6afea23f3995f92d14dd3ea8c2374affa9b8bae577a8f1ed -c609e6f439950d1812a704017a837fefe028bef8f4ca25239e80a9f9f56a7a68 -d2e709b84458a1be684068f500c1ddbd91068238d6d81bd87152e601cdd6d9f4 -d0e2d8fa8ad851ada277b9b75696d85518a5c05406c4ea28cb9224f4ca07a6d0 -861223396d0e8a672437aa404d1cd3f6492283bd5396ce249aae86e4b36179a7 -0bcd800625d9787f30f73b5b77fe0a89757dea0723c177544a081a4612e9869b -58b925e25f90790f0970a9a7d8085f8e5f665d26651ea0f8a7e59377536f9039 -b798e1300768d283301bc144646b6cab6908a6b3e6893ff31fdd36682a3ba11a -25e266a179286413aa0c05ae9f6edb5a7708d5f015eeab9cc2a2029689783367 -790e79989d17ce431ea33c7c6e3dd1ab2f49a7b014fd8190f0f61bd7303d1583 -a850543d9c0f766f00989d82e3e3eb90d3ae0048a743d1d95fc2828d16786d72 -ae0b08f3a6b9e4c886bc569a71e6b0d7b71d99406d12cdcad7d0ac8e722b2e8b -3cb4e91814c89d0a23784b48ce33902b1013f701c06bfd431bcf8fbcab428b7e -47baa21e77db69547504d5cd4ad8ca68f6735f75c6007e0a28a56935924a4360 -8a693822857e5e63138fa6f62f5d7213515f503b507c9e9d0bb74225893840d9 -efd0d205c007cca7aef6e26103bd713a790ea0b732fac802a2ed9c8e93ed4687 -193c70e80ef98e91069d20f966b6923aeb0fb2611ad6209d058597095c13d30f -e4853808c77ac63f9cad98f060248fbbcc341054542cca09b6ee574c03e46f27 -50f58ac2870af9643735162cd9c8ca92b34b06151efa7fa20dfd65943af9c0ce -93feed224469c7ca8f5019719678e1090f1accb24a506d50c85e96c80c17a3b9 -2f4138b25424da0b47fe69bd87651e0ede08a552d4b561b936654d0e0715ae98 -d21dbc03e82c784c0a05be9b8152a01e4908fa1192234db3fe8528f38fc436ec -1065fc4000a34d86b06b46d77f8e20fd7abdf2c83797828f4cc7bb6b03a26695 -6f09888fb45e088ad2627e2a8c16600ca022da2d217d4fc84239e0c34d9bc904 -9fa7bdb49b7f2f8516e2b0d14ac6931a5b1c80daf47cb787191833a434950b20 -7f30d7aa23c0a59b2b29b8ef5b8c078df0da796720c684e313a5392c9a0beb92 -1a24c094447dcac8cfe9a33bfa473dcd5c6cf94a59afef957406da114fb248d1 -d81d603413ae224de104081891d6f3e006aec17e09b96d3f2bd5f716edb5a630 -806b15379febac723dd889b850ca28b56bd19fe23106c7da95cee26a87feab90 -d7ebf3bccce37c464757fe7b8b64b7b4e3634f9ca658c762780e7b2c57d3757c -0eb14ea621c15ad3ad018a2b993ef65189aa2a89702d5e3b4236e502cea8eda6 -795115274c745e87256e2ecced919b7e582dbf8c0115cae9ce8361a771dcb82e -78fa222875762ccfbe9ccd78ee0999c4a6b6de22506fd878265432f9f533a069 -1028988011964ff7bf5fcf6bbaec121f77594ad8030f88e2cddf8d73904413d7 -1d3e4c5facd19418f866512df9755b5204c3abfaaca69ff92d075a81c2fe299b -bc8e5254f1a4bf96dbc2aa3e50c53b93344cf7556fd7427b6f7244cb78679157 -287d9ba441c243e4ef4b0ad36c2712c1868ad585d40f6dc0d136d46630b90584 -cec60c100bd93efbd82b0124905000993f1c5bc71031446da0bb1e9d8637b942 -0c98e16a5f755560d7682a46e42513a232d0d1fe1fba77c9ae23eb629d43fcd0 -b1b9c0cfdab678e793d85f0482254acecce4ad807df3c78f5d7cde6c019753bf -25321ec2005c287e2fda0f13d19e136d98a8c6fc5559704941170a372615dc60 -8d6514e4523cb4c89943699b733b0d8e1eec7c0e1dabadebd3d26cdb3e6e3b8d -e22509e1337ba480131137daccbe5c7eb0cfdd1d7deebfa378cfd3f958d92700 -2dbae1e3ebb67da61b74352e5ce25d44ee86e0e05a350e10c322006d2bcdc6f9 -cddc111063b9e32f713f75c0e4131c3f0ec7a7756bc6aca09adb5f2600ee4be1 -6baf2ca4943fdba744ef0e25199907aec67c08429a75f47fed8ea4e347d30406 -bd8262e86ea3b2bda3946b47d43aa0ded683e51f10bd89798114324ce0d36d78 -f7d57a1a4f5eab9eed5371eb688ab14e601149dcb7c81e97414fbd18985c6db6 -c4e1d6c830663cb5361ae808dbfad9a799f1aeef5d3931a4461f5fea80c7f1bd -941247993773007a04b80d1b742754ff1baf845a59aaf397404576d9914bba74 -14d3680b220697a80876648f03cb05dc289410c263e71033f1fb136b899e1ca2 -1ff0f75d78d869e43953b1f48b6feaa8dd9c996d025de3f8e920a601b229f242 -bf1e2dc7c3ccb09609bd6c07dd29f6c4e43467b6a24897c49fc30d9d40d6251b -5db00a27ac9e3ba31f0674350b0f15a056b151ac22bae56a91767969f6f3eda3 -cd45946a2aa86f594f8e5b3ce08095af6b7e7094e3d8523fe518660a2433da0f -7b64f687c1803c2f2b9103a4e2898160a954b87a068a6aaa35304771e466e539 -c4a8319310805881e7ffaa319182cd40d9fd98ac7d3f2046080070c505acf070 -d6836b1d6ea48c5cb5d2be8c73f8eaf46fd0d07dec52a96f0a60aaa1eb393799 -b41a5b9d683093d30897ec93537893e7f15ab7086f871bd8593b953dc9492b94 -8a51904ca999bc890bbe92c8cb927aa7321b027086c72bb6d2fc1cb6bdcdb216 -3de7bcebdacdbeed306b0611ecc170712adc01925ca2dd77cbe9d9a3c6a75a5b -1486e3c736bae26438dcaf9b70819b0ecf90441ec57e6fa7c0d4e5d8df318b42 -de4c4004ba7249649d4b74e5823670ba18dda9f44593c1a941fceb5f8c8b80aa -4db4a8bf5451b915e1098328ede089f626f8df6445c5057e9b7549b0fd5e2244 -32787f9fc2df42cae9a3d63af3c9c3919f2d49fb278d0af1612d4fc29b89816e -fd2241bcafef8fee74fcbcb324ef593a2f3df28647d31ae106fe8f844e3344f1 -d731e6de21166fa3fcfdf67fe4395ff214035e21e160c73f1802b68fcb5c8418 -651bfcebf502a3fd68cd49af9ef85d4720026244d76ca085f7db8551659eae38 -8e023c33e20c5837b30220b823178e721d8637a7cda8a4daca9dc5b2e7966568 -bd239ade15729b823f2cc4504b5c5971c82cfb7981a67cfb04befb9a785b2662 -d59f12d909388cc2bdb32b6205f619644c06aa9d15944843084e3d26c6a3855e -c7ea537fc70cab978545be18dad23fb231ba6e9c94f418550fae668e0397cd38 -913608cb2e273034cf9315eea33b6cb9b3d2313edc6108b24fe84b370babbf28 -102eb92b2dc6abd1a7793f5168153459636a9d7ba34de9d4ad1f5f443e016799 -9f3c08e30731e6fc8ddb830d6c883e84cd88be9be6ed1c6c2ca2abb859bc5239 -3e4cd913e165c8494b622763e3c98956065497111804034094e426585597618f -377c4787782d96c17397d0161f9c9ad786fc0494ff66c382ec06b67042874d7a -1a3fac936e74e7a23266451f45a007805f2a7e006c921ee45f8150c48360b167 -f6cd447a4c64cd292c38cc7f8f9e4f2777331122e53e4394eba63f0b6dba76ae -6099f16377e1fb7c20d090fbc96530db5a4f1c85bfde805809de1539a049635f -67db71db139500642abf08c8fdbed3e580f08ee07efa1e65f266c02e6071062c -7d71481d44682bc2409884f072f4df7f213bf4ae2917fd01bd44dc0c4838b11b -6edc242e4b29a9eff5381c348ec2a43284514fd6c0c74447ab6f507d5f15b7df -d75da2979228e21e893fd048e2ff74810314399be42edffc133666ab4a198bc9 -54c43faa1608b30cfd16b80766522bba0b9eaead4c7fc78a3fea34bf9c4e7c86 -8165bb285caf76f517ad73210e40942985e6aa8ed9ab2a807d672eba28482fdc -772a4ce9c0e089e3635c7cc2cc3e7ba917855f22931b20e64966c8e5a05c7a1d -622a0db3f46e6dcc450ec2307866d5161d90057357b7c4901a06e17b676cca13 -3a5f03e5f4dfcf88cfbbc8dcdb3f082f45738ffe9b945e5d5a24d7c83d241d83 -e6ce0f8d6e2ddaec5c3c8bc4e2bb5fde73b0df392b0a558337a444af1938e394 -057d0d8dab8957643cd51fc771dbc25090cefb656a4d8bc3cb50db3fd73a3f98 -774f6e400363bef02ff40f5c5e01269291e734ec9f48b9de31ce52a0a13d5004 -c46048f354aeeb0c5043da6b741fbb31df61826c99f788c1923a3d8729fee351 -185fd0e451e66aab88193f6fa0f62f915f147e06ed9b2fbb719d20570c00088c -42a5482774f25d5fa87e1b4958de97a97c4c107ea5ad6b7196c565e75b0a21aa -1fb06250d80dd99bc74bf099659f5e18b09d151bbcaf12da91c796151450804c -bcfacf4df761c1ec3fcd0a5f5f18f76d2392be6c7e2ebfbd8bc74d0b9715f92a -07f39d6bad9404faa4ef401325966717e05d8e9f81f61eff39f52a10f2bdca55 -633967076fafac89f1ac71419a868b8870532a29a10bb5997899e1bff54b6a0e -f6a4b4992ff286a30105b76a6ec1e01fee2a5fb710332657b68c9a9c04a931b6 -f19ee576da7c07c6a26a60043c48db2f4f181fa7f2c61a15dd0ff8b6844428a4 -024d690d8594c8d55ac5e7194280a06fd45e8a3604d316b9d94934fafed77bb3 -4d1a8a5a7c0074f6bec5f2698cc345bf7f41d65f74987c16edab9f856f156e49 -20282e77d2da027361aacc3fc9b00b054ca46ec3ceabe2d79cd506761941e9d7 -ae6132ecaf19443acecdecda81d7645980a92445a745bad81f23d54ab61a6755 -4246a9e4b500478e3e033f9020ac3a663ba59d1a15f2ee86c714440aa4f78149 -5174c776c560120ab417ba580ce6249d3afff64f6531d682665a8de1712a4fe5 -49d0cc0ad7f274fb1c94712fdf1c8afee5ee5763969042fac16613ade30a41cd -5812ed4c5cfaf0ed5371e1dd4713101e6a28358408a5a678f4240e2bcf59576b -e935d2eb8f7b187ef1c3252b4660cf8868883a1e34af76a51e1a2cc298a0d869 -555c14b4f699f7b5ac31be8597bb837d4437d076ac20da918b2bacc74aae016c -751aac2c883d710f13480505382071d1c575fb5d03fdffd72d6a2094ee88e83a -25c7722fc2de6bcc7feb52bd518ff005e39768f05c880ddf9ffec733909867ca -cdde2a2bbb9de48341b46f9196e7f8734c135703f398f53dc2bbf4d682cfa15a -16c66b2dd9d87baf522ce7fc6995c42c2baf739a7bae0c8c704e7acde6e3b45d -e63495dba7683cba496577579625c85eaa79d478e28ef698fdf629b9fff7d293 -5dba7e431b288a5826ba7c28c9930d84f1acb4a75d48a8d9d23a27ac7300482c -132c3daabb5848f0988f89d87f9871391b0c3a5460db1836bf90478ddddf39ea -87186908e87ac8c455994249c326ed6b96abd204b37cd863070625a7e1eb2542 -3c9a6df27ae269110f020586e7694551ba05c8dd93f2f589585ebcaf8df0f959 -bbaee3aa4dd5d544022b07a9bddc7cfff9c63d28f40dd05433ba65d1f738a045 -c742ef69183e999f0fe3e7694012dcd94f44c02a46d91bc55fee95ffae8c0d11 -3e0d4ebaad6caac508d3feb748fe15c88b617f05f07eaa611edb5fb376335439 -0416fc97aa5903130a846ee8339c05aa28e7e4cd40bbd6e54c65a6075cd40bc6 -11c3b56026dbd648e0a0d81886186ab74ad765b8c962830b353b324853d4da55 -4c3ca93c06bf357edde434e49abe2fa45579d09260ad59664c3585dc51ea473b -e749f82fedf4e57e6bc8c68ca375fcd8a5eb096036357d9e03429b5e1c87dced -39b5ccbef31ba751bb0f18ccf31066a591348b9bf0bda45b5c3f9b4f9e44be65 -fd9b07ef18cda6261f09bf80fcc4d7d47a1b875b1b54b6009b342f75741ff79c -3e9e24f59d2f1b40319d6d34f51731214accda46db534f5eb6ba4cc60ac321e3 -969e1269dfb72916a56af2449049de085626563221b3f59df08b3f0806eeb5b6 -08e143b0972073188d936e34aff2980991b97cde6c2d914cc8983e7ee1ee0932 -216bee4e5c190967d199c0ed6215d760618423221f92cc15b4ba2bb8bb006f35 -e3fa42e74ba98c78b3c2217b4d64727dc036ed148cf29a7bbb6313ecaa0dce49 -91f71f16da69c779241167253922dcd59c5186f2dfb78143df850d6e4260241d -e677af13010da78ac45610825c97004e929977eafa85283869e5244d10ae08c5 -106474101c7bac56b80339a912bf749aaf8497bffbfd6ceeebde42b536140d16 -c447c40038a77f696745cc8cf78ebbed7d448cebc5f94539af2a28de4621a142 -024191e27431676fde34151137283ee00272a3cb383fb6b62d9c7ff6e525b37c -76b3cef3c81d3955857833e3fc0bfd561f7b2ec83b0f884602c2e9a07471904e -6071dd72af32912d4743e3939bf4e215d5edf2a8c0e79d3f26ba239ae6d919fe -d210388cb6ffa9580568e5f1d277b1c0339c72244c11f071d0d47f10e9258d72 -ece6dcc22f03c783c8901973d69c19a791ad8259c67803c0dca86ceb44903c1c -117cc5bd0f507c173588a4b6751694c2e2b2c1221da7a9d3fe11c0eb464350c6 -8ff963fb5d14cba8b884dc9244727d1fce9afc93a3e3715428fb0772339943ba -94e4b54eb0878cac02dd572dd5cc2b3a8aec7e0897316b4192f0cea168086c24 -c96d511f13680490119eef16a0fc8371aa5b9d5fa9749566fa2c0d250c81dd2d -0cda28f7b32d894bba5f6cb0e33f62e52a2754ca699edb1f4e6afa65ce6dc617 -76b2911081fbf7a1f09d0545f8cf67c548a5e0963f07c42c22410448abb55d05 -38d8d88fa5a6b57188de4110fd3bd87fbdbe613675b3c9196cd630f9b7dc50d5 -2e76f6349a9198a827b4cc3d4610d7ddc6aba586b0c11fb08bd1cf8a1cc0dfb7 -3dbf5d9bbfaffb5c4034275298d4a7956395c1dcac02041c40425217fe8611dd -9d03663b0832a10a5f4bd7758866856d4d480fddce109c3c26ffe6351f3eb159 -615d69058c32c240c8bbcbf84b828e5b275709c3bef7e8c56a5ce4e11a81b2f6 -5dd400cbaf59226d8753eea61b3a1c05f93993cd26f33e92550a1b5f81801802 -b7e70927fb7e3b476f1b21e21bf6a8b6ceee3f33aee9631ae2c456db548f83ab -ca6be161038a083611596c361ae607f0e460dfb535b3f19cca6d8dce4f23e056 -e60e1fad2406cee07c5a5c42cfff9adb309a77d9be94e36411ef39f43878f7b9 -bd9b56924f19b1cc64e4c5dd0db62d27c25d3350eb2695d40a4d48d0274d993a -d4fea893b7ddf6af678801939f33a366f7a47fd309980341a61f119b582322ea -fb4aae95241ff180ae845a8360ac2c15306c7df0cd0b5dc00372b3e8453fbd62 -3437a8b6736ab8545c1b705f56905448f0149a1ac5f469bf63e856f3efe049ce -d9ae727f3ec769f044f41c247f244ce7e506658ed068bd14c998f324ecc17ee5 -db9339bc8a48f29de7b8daa2b646c460a36414d0ce257287079f17fcc45c079e -44a7bc49e67b88e36c728a98f4284153b07635f7ab4ce780c688924f1636427e -4096935519f8d11ff62b594297a3f1579e403cb18b0945c4701e27870e3e4634 -b35952029cb1a22832402541c96e76393a02096ad4b139a863291255e7a4ba27 -f827485417e8fec67444b11961b5236d0b07a6ae188f8dbb86e81bde1901bc5c -9e730284787aac89a4f52ace0a4b4aa32fcd943a8d070ce36c38212d0f856e5f -fd1d55ed7e20cf5216c9a7cfd757e7c4d207c928d10d9d0df854a1f402ad10f4 -41e1ce4ceb76f06d48f91f18ede3be0a15b484bb20b3d2e9f5ff7fc29b05fc66 -53b5fcb100fcc44f97c96f5c5e90bffd6842c44d0e224301c4cf7e387466c5db -53736ea732e361fd81b55a5cb1040ae1729f05eca2a970dee9c400555490e9a8 -ea1da61cdd0eb81bd11040453f887cb721401c01de8441bc0ee4d5cbc9bae418 -5e4b7a17998de56b9ce921bc1fd4443009b6bc82cae29704a2b798dd17dfd011 -307e888330d1b3ec87081ab27a2b35d21c50c59f75e5a190d6951b0402a4a8f1 -7584474b6407f237bbc2558ca0936a4c4be5d69292860cbd13f7fa609729b196 -1380281ccec11039a4a1df6fe5026ef18c55a665ffe4807de21cb71289048136 -8ff3de1c275e34031ba1d17a540e0d4f5a0b57bbdee87e4825d269962f3de6fb -8fe75ad356412319592e51fd627d9a395ca4b5f9c3212126c05736f7c0cde20a -b39165589373dfdec2b54634ee58ecb0465d00249720809620abb99c57307f4c -0fbea4dcde56b66c9e84de579642221c1e9a9307f79fba1d1b91cadd92381dd4 -51ec2d6c6ff8f077ddbc5da659908ea03b4e2c2392bb40ebf2d7277affe3f61d -330f55f28b25d06f42c5518a623842675a66bcb6ade4aa8c066038cc37e77364 -a28da5025111315c9a48f3325993e6701623dabbcf072574e23b8e902440e504 -d145f7a786f178e2a9a0568865e5d69c4e944f81281f8ca86dd1dcea53dca3d6 -051c893071c1562dea22b817356bd6307dad57c44d47a0ce248977113107ddc0 -2d994a55263259fdf52b4a0221ce39f39a77a31523ab0c8ac60f6626461a8433 -5f80e50e343dfc8045b407cce1cc61d0d9dffcef085de077ff0b8d11dbd073e9 -7ab09737f12f40d8e602c80d22abca05e68d827aee4451bf466f6205add41e56 -b4fe989b278fdfed8fc086c168c4859307e2104bbb74a2b11c9c08e56c96594a -8e6f09b504fb5c18dccf956c1fa14c250ad8395fe676d8c2b5bdc8b3fdf34196 -924f0b33188301978635ee2a1a6ec8040f12e34bb2cd15c3716ef2f0edf0a1b6 -79f8b021dd56a95c54719da4189de035cc15da1880a3f7f9844c341f42dcdfb4 -3556e3d300697faf0dbce932875a83d1098890b169f67c1ae3eaa336b2bd0b5d -27cec749553216cb15552a92e9603bc7a9438244f0143a14474f6e99ee7f6bb8 -e7ecc328f3bc25a54d87ac07922edd1d2cc211a330be20c413d883f38eda69cc -cd00735409827ea7429dc48e43e5ff22318c6a6b691f18d05837da656db3116f -11254d292701f6bd92edb8687ab02b15f67213105731b4ec90735c72cd33e17b -7f701153ef785b1ab39303854e34a63c3da69a10ed9f018d95505aab7d2a6f8e -bb9b33fee02c4f397a20c80649e9d88e6ae4053bda65690d398e7c6c5bfdd0c5 -4e31bc4d1c8f62369189421378638e0cc24646d0eac6084d53fbff200009a954 -01f4aa6b2c71a84eb5acf649ffe28d775736e6b06dde795a8e6050712b8365df -47d9cfff08fc36e821398ff092366e1d1d623749bd80ca1a3ffa703174ac8b8f -017dba3f3d753bb5536b0b40fd9f07de7d -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMR12 -%!PS-AdobeFont-1.1: CMR12 1.0 -%%CreationDate: 1991 Aug 20 16:38:05 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 44 /comma put -dup 48 /zero put -dup 50 /two put -dup 66 /B put -dup 69 /E put -dup 72 /H put -dup 77 /M put -dup 83 /S put -dup 84 /T put -dup 87 /W put -dup 90 /Z put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 116 /t put -dup 117 /u put -dup 119 /w put -dup 121 /y put -dup 122 /z put -dup 127 /dieresis put -readonly def -/FontBBox{-34 -251 988 750}readonly def -/UniqueXX 5000794 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 -0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 -79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 -2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 -b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d -823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf -5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b -edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f -a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5 -404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763 -89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887 -3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c -5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab -98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21 -70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188 -f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d -7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1 -f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282 -d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843 -b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d -03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51 -7c26de75b8c6f6aaa9debe4aec08ca4b646d787a9dfac85b2c01760e9c6c6162 -fbbc67dbd0796831e00c477d8e23c375ffab46d289be9d2328aec2b7534ae4cd -d782ec2453e7787f6e6b4537b46c01545cba6f90b8e9a1bccac1937bceeaa5e7 -8e9f368ce067a0a31da98bfbb545be555a7270f0031fadd4f9b186629e5d2c5f -d264f8f24cd5a1c0f68399ff4b29fd77c4a54d82965234121dcfc95e04370c28 -d64929bfeb9ff4f28dfdc4a4652968683eff42d778fcdf289227f64e13bd9292 -68f9acc1a2bc66d018df949d6c794030609fe89bdffe1f5cfd2b51dbe9f1ecf5 -26acc116fa1e5525a59c8ed8973774bed98ca3288cdd22f53604ed47fd53fda3 -c7965e31f5e6f00a589e7712cfac3d361e096ab30fcedfcfd57a556dbcb4d379 -69055e450f37fb7686e482a84a746cad4c03b4adfabd6a5d61fae8a7198daae3 -32309661c3ff3eda6c2909101ca253b91574857f77f6fb002eb81b2476648a3d -5c0e17349c459cc7bfab1ee2b8d5960c05afb4ed469d1aaeb3b34b8890cffc8d -d159388c2b0b9021be4e011ddd667a5cb5bc2f9101ee010115adc66d7bfbad78 -a8a6401144a558e4b887caa6ad8283df4794d02738ba4bd8e37529c421354a3d -1b16027db74965a1ec575cf97d600b3d48c74b12cf547c13b871cf80d216c71f -cadf111fd83d52c0fc240c49af8c529f6787c9eb582728ccde7508998ed429b1 -98e5b2bf94ecddb566fe81b83a4b33f67069fbcfd1e679361c93c4b90b90d534 -9a81d51d8e2a2a6cf04347511f68b65212e2710c4b76c2b1204e657291988de5 -68a82dfc20c5d49e2d168909a043b6fa258e24e8f0a905de6ef3ce8b7a907360 -1704773886c5db7b088985c809a4905b8c1a7c3bca4e9392d5db6ba1406f6211 -9bc0c0a65a66068916011225b97a77db011a01240e35c04da36e9d898ab7045a -20d51bc23d88a4d0f24f2029730b48b24695495aac2894de1d91de7401dd53f4 -f7be0487b22168ecc40cea2b4e77b0372ee0cd1e04be810b65ca98c9e5597556 -31837b721446b8dff5b5bdfc8c1978c150bb82901b0bd2b7c03de4e5e298c4f4 -286b58199d564f0c9511c582ad9d11e973d059d72e6018fa19f5ab8bb6ca25b1 -80158e99f095105039447beda3e34a43e863e115d57c76cbe33c8159f4b10fe0 -2a9bfffb4638ec1abee13188b59ca7460a6b6830581eba36ccc2ea6370f19fa5 -b15722fa1dbae99c1c453a2398e07fa3d3503c403f5be341623aa1ace3a2f925 -6e7b7b0e25244c5b45d0df37e4a64af63bc5b7cc60edb7ce1140b356e4c5b1ab -fe29af3a87fcacfefd6943bb13eb5d5939fbc33b591d8ead4e54bbc9b34f8e00 -671c5b8ea129d609f6f51eab562d3e4f76bd8978ebb4a23707f49639d2f4ed9b -40787d4a635ffbb531f2c7bb9fe0165d4e471e11e51c0d033121fdda26a5391e -45203b3fc27d9d34d2f756f45f6409f2b906cc2bc92fc0cb04999d9657982575 -801e4b7c46c6f8561820a3225b8595fe9eb51ee46f66460a6cef9ffaffeae7ef -f55a86f51b5329bcac4320897c8e1ac4e6d49c649ed4fa6b257a38d777722234 -ff7dea4f248d827dea6cb748cd2fadeaea24bfee1b8ef9146c379b1f14c1c71d -1815a3d1352b240784e8176f9047a413ac4bfc8af3cf6a2262bad3afe71e9557 -96ed95a9dda893c10d22314314385ae19b2b0b99f401eedb85c973759a2282f7 -0607d1600baaf56c769a1c46ab52e4bfa0c8bba42ca11d4c1b6ce2344a83f9cd -52fda2de36c880ff7aaacaad5504fd77e549872892aa26ad14a30f6b308de436 -654e447df32cd6dae0bd8123069739131529264427d4730881114d0956344bdb -78e2998c44bce0bfa4fcf8a926b66b2e8060f3a1d28255021824b3ef0a750080 -75c345add1f28298eefe0c2cd8a8d4bfcee4bb47dca267eff2db6eee52fb618e -51c41d62d85b2d05826db83819f49ea4934fcb8eb0714532b5f666e24cebc3d1 -8a07c382889758492be197b4cd6659a5b2779a7c843e26a563e53c487b0626c8 -51470da3998e661519706bce94db33f98666eb1450ef37ab7bc49d90b208f56e -a4bdc356668a0782b0f4cea076733681cbedb623d912b1448e1f6de3dd536977 -8da655f41f580a0f4ddb4b8ae54089b4c4e6952f887034e297ec1abce3e5128c -c08c2a86232361a18b9daaf9be265cbfc7d4fc743964abac39ea2163cc583bd8 -ba05fc1b0632a412d67e80a812e5bcf4a7a6108f300a19c39fa6ea1c0089b6a2 -35946ced7574cea0a53cb8190e5a99c81bc824b4c15826b7752f530dae60bf5d -1f2c3b8cc1dd32bae7ab9c6cd3640b07e2a4324f33297ef5b5c1b19ca3fb4647 -1c85c572e400c383d5db5cb4e8f913ed6502ea5dfeeb391cfc002ddd7a6d583d -38d0d3e5d5a5a985768de91795dde9d98090d7f9f20cc36d1a409eb3f1749666 -2f4853d739792023c85fcc667b7298cfca13474f009c2306be84507faa60063b -bd395409f5e25a65da18235a4a581802b78891c9c335469e3b942ff555e311e7 -7ee6d1c4ea6ff2a53c70984cd2d19a91d2a3f259bc44baa7158d84e21582d49b -3ea5bae04d5b32f2831e079f4541276c471c3237fdfc910ad56587c9fabd33b5 -4bbbcc530b71a85573636e30b3a820d6f414fa0b0a45f4314d65ef8f11cce617 -c44e501c8c161d556927c0fee825b1a98aec4afbd10477ae3de0c1418e3d0a63 -e5604e9949db08fee78389f8889925fcc3fd51a324803ba58e299cc584518640 -e44e05080349d59a409d7e4abe33a3128f99da9385b44cbe27c018e5630d3e1e -8a8b1010a089a4af2ea4a1f1c9b6736e21b3ce7130d5a1ffa44da7752595d038 -6b62d245706b3d0a3b2106953c8d016b59b6a10fb911c74ae6e3059d62b8ddde -03ca3dbcd47ea4e75843ff144f3f30167797c803ee30d1290e8d2a9bcf899e55 -e75b9b3f5e5ce04a2db7b82f3630c4a2c706809939e8d7d847e69466740001d6 -8fbfa7f9fa4b3093d970b9a6ccfcc82ede0749ae050f99c04025a7b5b4f4d0b1 -0271b628f1e5bfaec70fdd7c80c687b5155874c8a541fd85141519b804a65727 -6d9b125f0280fb01f4ff546e28409c3fa714cd384ef47768dbbdfc038de4ff2a -c1de9b43e7d9d2d62ba4110596d94a20644420585f735d87697fbe97c639bd48 -5c7225b18acc2034821e136b6a29f4563e8260b7215f53bd83985f0b2b10da60 -6984ade8c9aea46d98dd85c99dbb0fd0eedfbc4fb93898e36c422b49a0c93412 -f1f1e301bc7070a1590b6088e9fad166c553054e1a1ca2441ca2cdf53eb78ec5 -480e70dbed42dde10c85bade30c88edd3fdf9c07d802a8003eb4fef03dacebab -5a6dd1d8736081a7c3073859655de8db331a902a27be01c358de3a27a7965661 -edb1bd249369470fc41b04f036973a1461fcf24befcffc6a3ea1a7082b821e07 -6343839d66096c448915059e7330b6ed524af20a61d0c528a999786eff1118a1 -1f381fa65e1d98f0be571625217590ef08f68a600f08a4a6d7fbb56d9e199d10 -d81ab1159fa48fed4a40a3cbcec30280451c3163d5ad7110116f378f2d5bbb28 -62babb9c1a72787773601d0dc4b3017c46958d6106acb356d34f04872871aaac -1aadead00e3c195a83f3c1adbf66c4f140da0daf618285f83e7665b8db6b37a1 -5b7b39686fff8e113b2897952fda0dcf6e6f5fa53936c2ba6f48cfbf33c5e03e -38d486e3bbc716be6174396f310a3956188879a019fb4bac194041c98e4873aa -85ad472d97d47d2af2d753ab10ac100d07faeecbe3baa5b4a196b955a7e10b07 -a6230c62bf44cd57519cee73bf3be94bc3730e5037ef6e1400db1209b111a809 -5c5b2b56f748346102f8d97b4ad4d2665a928d468683599f7ae842166e423607 -c7faab073651c771dd47cbbe6730fcc442a76c0272b44caf93e6086fe153336b -efa41fc52dcefc9e2f7ff514904fa5fb506a54380a1b0f04711115ada32a6fe6 -e68e6c7de7cea029bd8b21fcb83f4bf43d34fc8239ce92fcc1d9a9f86700bd02 -a04eb68511136b9cc47367f62bd601459b08c72b09f4df7a40999332c5be467d -dd83f7de33741e9b6be82ab6facc7cb8b8da567a16957ebd7f3a694c41b6bb2a -4b82de1d85b7c28f4a510c4bfada3ebf1cab17ab8efeefc7c2996c6fcb263ce8 -b5868cf2a9a587e74307c8bde142af63601e59de0031b282a075d70e7b18866e -3725872e224c83571bee2a98e113128cf71fdbab36d8214c4663cc8a8df2caad -e8a46787c726818f292518ea40838189dc66d55b1862687a794616dfcef2c1cf -6446f2a20daa5b6f3e059eb222d6e03e7fba92bd3cc56adde303f2478b0f02e0 -d1bcdff34ae31fd15cd4597fc352c0c176db6f75d4d00b5336560c0451453c5f -57c59cdd66557b3008aa998cfc708a9ca7dfdf160efc978283f6fcf6573d2a6e -9868dec9689f4269b4e98c061f3adb3a5e16b2487760f493c2593873b124c34f -21a35ff5ad5faadcd34dc6b50a863a462abe24d9b7aa59e6a03c3db0da0c4894 -011f25345ff3ad6cde3ac2df58607f50aebd4bd2bee95d21eae6b4e0e90cac13 -399c188b7e693d648f2496eb9e406617b1c113eb996f0a7f44fc8c465cdd6c95 -7211fd550935818945cbe984344b5b6d7b87dfd7de82a6521b0923c87fde92de -3e956348bcd7170858df8780cb4fdae79bca6dc31b40df5b687b4032e005c762 -5b55a08c57cc340681675f708217931a9e3de86fc0b0f0717e1ad38dfb17e8a4 -ab4645c23661c9e9090340403918782660200fd4a3117e3d80587911edd64abe -b3a2e0a8504269279601bf23d74bcbbf957e5a2f198094854212e712b2948772 -0cb4bb7ea4279736c4a1fb650633ed22b35c33db57c17d5a2a6c1ea3ef4d3425 -49bda52d7a20b521ed657ddd201156caffe6f3e2611193b5639283fe956bb7d6 -ad775c3a9321b5f946cc9380f76fa73e149196bd35e3bb720dae3d8036c915bd -b7894be538c58f06c4121af00d3b458438d46bd9d0ee6bd1a7a7fcf828192b1d -90a6085a198345d4e093c748cd53eec4701c949087c125d5db577ed463504b0c -69afc54eafb1a40d7ae7d2fd899110ab661bead22b0d3f57928cd214fc38b014 -c7cc400b53cd2f559b133e558f5a484ef1ce318d9347c5eb6ad03fe0cc50cdd0 -cd3d3e54c075a4fb923e335bab843b1eb715d120d754315796c6e0c7104f9edf -f755259ed3a2d9f035976f64c3b3ab3d7f2d3218eb445edd9329477670bfa26b -d975f9f68d7637d5636fdd82084953f46a7b0e673b099c960c03322acf23e52c -cb4a963685a952f542110ba4ab174567f8a9db2d1b784624b056026f941fc024 -ffcc8dc32003db5809bd58ba1207265ea496065b05f925b313f06209ef83da94 -b5453533a144350c1c7dede0d5101a513fcad9b5ccb13eca2a53056853464bbd -fcaf8bf0df1d5d1b389c2972aa00b702e61cd9ab3533a2862d80f9a58b1750b3 -76b4210eb7fd29ad2c1382ddad8631a2926103660d164329309ce99b465fcf55 -f2f33abc0d5063915fe1469e431c0f96e10147f2e7b149de0981330db3f67ed1 -e2947a448b6b0ec1dce097a050149d03de51c49cd467aa5075478b68cb5634f7 -5a3bd0427c88059666bce79c28bd4446484bd194f0329679bef277ad038d7bac -5a8fa07e6714944b107b54ef8ab7b8be380c5571199cc150beb4148e6ea55471 -d18be0ef4c664e5f974d5c097245059898595b73f36a2ece852cb5c5ed7c3813 -71d91c73df7a0c05746f2b3aef2bba53512fcc4ad6f17dc7c143fba306fc2bce -bd78503cbfeaedbade60cad708c34912c4b1c01f56c487d22e7ab70dee6f8f58 -266c9a79c5e13db7741608e9a30dbdcacd9ad4272f9760f65e0521873cf28c67 -cfbeae2aeb72df1630832eaefa394de4aa1e48f9a084258a96cc405056682948 -dd02745365d7a581ab43777b213f72569e1e533f845059f53f3914864f2658f2 -80c18f35b8ae1dcf266ccad0b6eb481f6727bcea10c559e261a4fab8bbdda2b2 -bf7e0bd4855c853e0169810d7be61dccd1018cf6622ccdc44ffc59e5a5da0ba7 -b95a860f4c9b3c8f38f878f98c0fdb16871ff0feef442000e2526b66bc02016c -4e089aec867d9ea5e8200b194ffd9ced0e2da665b044b0466fb4709c3c852598 -3cdea107a21fc9ee3b7d04b8b627a565338c92377c6f53ddad9a66c0f26f3488 -d6fa8389f4f6c58a10df6d2d7ffa9c3b686cd22ed3e6850fe63a29266da60462 -64a3f58bdfbe25d87ce7c73e21e671e77222f4e7d9ae18a51fb2c8b36cd28eb2 -a4bfd6c535e58bef4252261763e120c9536e125d0b6ecc32356dbd865aab0daa -78606b3f9b5eb84dc79b6df0df9ec2e2130c0091b3aa808a26feef1c0335599a -a68b23178af27858f7b4c63c411e054d11e92320c033c58c2d3322f01e05a4ec -d335274085a0768bfef664886a97930624365cd15f3706c259e5a57aa554e348 -6025ef93c878b27dbc676187031bf82fc03f3d6628cc40e0d15ae9a0232eed5f -c26a21059baad438e80333bdddc245872371030c0b184febcb251b6158403833 -947378ae0a83c254f42d0ad2d92ac2bc5462d316e28550e4b5924764d85aada3 -097409d4f3bf6e115a22ccbe41cde5c611fc69f49e1ed0af55ba24f145e90573 -d60d26b150d542a22262b09599c75e77e55a24b0b6d30764ee423534167fc3d0 -43a1294cb9f6d0bf7d864cec71e84e6436b2278d0fab4cc2fcbbc98434db5099 -68455bf1070758007ebc1d17447eff296faae7c9e0253396c03689b4456a9f55 -aa93a7f75b8d42c17257dab88a3175cc699f9db6f090d02ec3eb535a73 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.1: CMTT12 1.0 -%%CreationDate: 1991 Aug 20 16:45:46 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -dup 73 /I put -dup 97 /a put -dup 100 /d put -dup 101 /e put -dup 108 /l put -readonly def -/FontBBox{-1 -234 524 695}readonly def -/UniqueXX 5000833 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 -0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 -79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 -2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 -b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d -823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f -4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a -4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395 -14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9 -61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d -8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e -4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f -6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69 -fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97 -7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51 -cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93 -61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434 -3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de -c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49 -12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb -586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e -929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c -319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5 -a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a -d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d -d51714679581946ef7272a38f41798f0c0cb66b7e7b525e0437c12ac8d4568c3 -f37379470d93b09babe1aabd17f20c07908f1908c4177db0d7dc73fce84bfc5e -8a1daac7004c1c0fc0f1af83e4946f560408efe85dd014668bfff2d51f3442ad -86e0c4292debd64376ce1aacfc0b21da230958c6a4e4fc75f8ccc09b3bfbffa3 -6d0589e50b5a2c67b299bee3378e33b59dadbc0b5dcb724ac58d274387f2a479 -ecccf173832a3c33b4aaf172c9043af569f5c04b29fe7bcb5aac415e409fba6d -82ce66e4901498ab8a2b2b6853d1d82e10a0b5d672c65d9b102048137bd2dd49 -d962973a91bd8a1e7e85fa2edc25f24c2d1ed63c138280fe6c7af10ef776224d -6c8ae754aa2eb851c786f862cb52e58b51630f238f3b2845e4814568e0248017 -cd18639feea7c4f1bc5d21ccd62dee3c822320941e5dbd058f92947ff957258b -4daa2c24d2541f16811f19babdf0d40c2ee470579c80fbb776784ddb3136ba9c -d782cb10f699f45658c7e544b8a46a58802ab7ea9c708325d74f03e388d00b87 -f3c8358ba3853155b5e4133946ca165f4ed605e522995cd06752db1406d4bd88 -0685fd14a8c67353056549d3224c18c5e905d61d6fa723b0b85e3cfd16c0dc4a -9ebc37a4adf757a9a831bafad0a70c27a83de810238f74d2b6056f8be7b00782 -7c151f28f0e77c6f474c649b71803e688a76d12da609a91eece6e266cf6d4ab0 -2fe97321802dc1aac743e0c85b2e08f04d2c46d1db63e7fe8d2c540907be97fd -a189965832117c499484c6ef64c08d68b7cff9affa39615d880163490f400cea -f1feac75bed02b3e0a490bf2b73294d8e840aa30c60f2c0034123e8e6c415c2b -6848f972a4ff965b58a6d2f2b9e94ce50d0b96811d802daf14b4bc9169a4ca0b -49c78cafa3d78a966cf7a25aacfbcdd0bf914dc95d118f5929e4ddd32c75122d -43458cd20b237ae3fde46db81222d297801bb4a8d9dd6bec8d2f08f43411b93f -67b8e72cd3879ff8ac02888e44bfaa85da3035b5b9294280fb6334d05f175d49 -5d32eafaacffe930ba72a16a1be5bf68b1b050e2636efe6cf5039a7618c77f03 -89fbe0cf224beb18b79f54910ca148613d7989a1229f782574f4606079414344 -4794d352a5f431353ce93ff1d5139b2d1067a7b6bccf128f3b57a6c96fba11f1 -9990e2bb9c6ab0315be36fecd6d6b436cc9606384553b5c31341e675286c143e -170223b1450b26fae16bffbd2a36b414273b04b9a6 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -%%BeginFont: CMR17 -%!PS-AdobeFont-1.1: CMR17 1.0 -%%CreationDate: 1991 Aug 20 16:38:24 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR17 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 114 /r put -dup 115 /s put -dup 116 /t put -readonly def -/FontBBox{-33 -250 945 749}readonly def -/UniqueXX 5000795 def -currentdict end -currentfile eexec -9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 -0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 -79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 -2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 -b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d -823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa -559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504 -c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795 -e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05 -513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33 -75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775 -24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d -97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997 -2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83 -d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769 -7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1 -68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf -a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc -ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6 -2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89 -c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96 -719cca9e4b9dfdc87e5999b886a15ac572183dfafd8c4176cd98430c204d4e7c -e989e1dea814d3088a21d9ae6c5fe7ab3d399b2982fd605e65509a8ed6790c21 -a08a23e53dbe70f676d0e7b2e8261b092dc3415ac785635d133d309ac670c0c5 -5868fd863ce42542ff1e83e1fa20a7a0e5d680dec3a22700f7f48d2582b8411d -757d17ab7530ceec0c6727c6a80f2493196b0b36e727bd6595b5d4f5baef0318 -f3c8107380a2a731f5d5ac8bd86ab3b2d774b8a256e4f52628d6f8d0e40f1163 -6026c69f76f274283931ee02d73937f334b843177f8fbfb051019ecf7a56a07a -81a3809c71515bbe9c043437a5c1007ca9ba87bc597d1c84d4585de379ed04d4 -c53958e67875f5b49403df15843727ce4199229066016f33ddd7a8cd1ab88c85 -8653e20c90c2304e7dfbfdc69c0267ffa4bb3d605fa3cf9b9f540d115108b370 -a90059c35cb2a7ddbe72d48be3b8b393e03d07b793c0e7ef7566510a3da0af14 -6850f0db2413057385a635c3a412d31689248523e8c872350e0e78e5e455434d -85bbaae7111b59fa84e5a16ea843f527d3e398d03e09fe3b362056e5e0de9dbe -059bbc07c0dd42bfd9793e6fb82efe052d2f7a99052933a0496004e8f275da81 -d057d670172a1813d3107c5f41460dd9165420769b7f53979dcb41d6dd227e21 -3f1048b696356a07c96ee32fc18956b3d39953105906ac952d6246617a0eb07d -13fbc467c5ace362567a8602abbba19346bcbc9af3a68b4d35d6b30c411d4359 -de75bd50920366be8a1d82329766e28aa45ae7b8359d7bc4ea8cf1348b997fc2 -682d84e09e363dd855c07d8eba0ce8641a73fd51555ef8eda75e13d1ab68d0d9 -da5583b935ebe895c27465d55985c3ae229dfbf6e9e97fd240e94344f95996c0 -44d8b46fca2d9e479a46f0c7855a59424d865bddd4b8b2715025b1aa920712b7 -c10d1c1aa764bfea3644d2a36a573728a9e1eef8afb3ec97b83936964577e8b3 -59c15fa4747da752b3b90e70bbb5b864496622ea8cb412f9eb5439c4c587a4e5 -fac054a1a5a1d992f63ff57d4f4281431016f9d3c107fe07ba12b0c5a82dfc31 -f1ccee58266f49e1cb8fe4d11edf30c6d0e52e8bfb183e178b994b27c6a8cb22 -0ae48dfa9834170902b06fc025b1e178d14cda92a496c85d204b17c2df9489a5 -aa1c6b0ebad624dc2b80c55cfef54072a1a3acce666ff043eb8bac830da01ac5 -f46441985156788679836dbc89c54cf97b7cf286b5c81c1a3603dfd2a573a9c2 -ea43e5c0df58037052e36df2039425b26fe8bd5efbfb8f848647197717cc1fa8 -23f52d1530713ed4f598f57c22c51b8d08d14d9a690967a9c17ad6c41215723e -aac82de701334898d5530664f5d196aeb609eeb7d17eb0e9649fabae457e9db4 -0b92c57c0645a2cc5af867fff332d673361f09d72eb5bc9f4694b8a980a50d19 -e68710f6901aa6666c8274cbe16350efb313b05b1540c59e302402e662e62112 -2d0564795639954f1e56c341e5f2d99379d1164aebd5cd4d85d83644ecd5755a -1ef9e3f66950207cf657cd339466352e4959d3e0f5ed10730b1fa65a539aec23 -9440bf8dd18ce753221301ed42e234549cb914c8f15324358b1bbdfa162b5e39 -92f2451d67fb403982e74083bfb7eb84b61f04f1621331563e8ed8cc8427afab -9b2b356e85c23135359cc7dbc798c57c4667be292e8ad7006f55c342a5c4e153 -c175595d93e46763eeecc9b68088f9c732a3fcc2d18d702b96232022ee08c605 -0c07a0f866b917fcda0103d2250ab9cd8eab1067e28bd54331e447583d5cd6cb -2c395c6ac49826d9077a7560a2b2652b9b3bb296d94089f5b8d2ea10ea46dd69 -c6cd8eb28cdce5a23848f1939be39528e28948d41be8c9a6f33c7656c90859c4 -befdb3eac63fe60893826ae55b8898e537c9856cc945a16b3a6fdf32af252bb0 -c40405f7cb615e9bb17cb6f23a86304faeac7a56f7b85488d3525adc7b9da686 -56d8211b27fc863134ed3a9054fe6bd3d21b59dd6d6c3718f6e64217d8d5e882 -30ec37d8ba92bb638864484082d9530ce9031f8bf15a9a07ba9e3c3cca56267a -e10c7a3e7c13f449d9b02fa731f52d97c9500151f866b217e3018c5cda7432ee -2220789a006e298a9ab501eff5ffb6c3079b9e60bffc9127f6c8b9e04df6ebdd -dae8e9323a5d699dfc0143bf8ed224f2a076850075f5f5665ed82190516be315 -a91fd410679b82443c993a1746cc54d4597cfe722db5e8d0a9b4e5195052ed5f -422177715c237e4dcb7567a332d011a38a078454d16d323ebcb92186eba23992 -4cd7002933e081b430ee2bc421abbc45fbfd9b41ffaee25a935b20991c377056 -a383d73750cd1d55804bccebe430ce22b16592376f54a18a9cbdfbd1de92ea50 -c77711c69722ff6ddc1a5c6297493ee4cd63c50e8412b4e42b8a5729e87fd435 -54316f57db2792258bfa2f38383558c5d85acd5abf65e54cbcd090eb34554be2 -1734e4374158e800c28050165b81bf94791f8ce24d0f45f05fb2df681ff0181f -0ac9d37cae93dc938783a3e8a9b20fdfcd2e31d22de9b7fe061f91054a0b32fd -97069b7cf02150b83bd7cc1d9ba29a5a112be9e28b9349344d535f719822c8b7 -a55d92a1a4084102d110f32ab3b59d1a7493b1bcf549eb583e6cea6744cbaf7f -436704653e774435ccf84a37faa5443b4969041ef2f16b659527c6f01aa540f3 -5396f7c7c03f4dae8828ab2ad194b5972b2691bd414f5e25246c83918d455fe8 -2c1c4d5f704bf8f95357af4d9ab0155e9f1b9304d67d0ebef9a47827dded45b4 -51339f0fd7a914add1f59c07cf74f7aa0a12549b441e12dd5449bcd1de00ddf3 -13637d693da44cfb22a4e73093d64f9f86328322fc39a343cfe752b904aecf1c -145c05d133f7d2d8606a3df1bcacfbab34e457e685f459d731ffa68f383a6182 -70edc182d4678152023981b39a150c87cf9cd2603527b80d5a94e9281ac1ea8b -cb325cbcea7e638b5b43aa0c0ca95d103528c2841667bba973080813ca05ee4b -96974224c9724ed6a7512451f95b180cae87ab46c61623154d6540c03c616b53 -8251b40c69c57276f72340aa2c83fc6a40fd440dc5aa9ae8fb438f0cc156fa52 -4afb2ed766a7bdf0c7b4f49877448c293ec40d13969da521b68480e6294ae3e7 -ea1ea3cd5ffd766cce3a2e3fe4800e16780c9d89a0f2533aad21c9b78afde506 -f53ed9389830243c250f79daf56551d8bf2d1337e53f31e1f77feb379a3b8fc6 -27fd03a8b30b0cb71b8a6a1c9fa058a8f24631622719fb0a3aed5522c872056e -40f6c350c8ffd334887feb234ef8f78a09fe93891fe303539f -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (assemble.dvi) -@start /Fa 135[50 69 50 53 37 38 39 1[53 48 53 80 27 -2[27 53 48 29 44 1[42 53 46 25[75 1[63 69[{}22 83.022 -/CMBX10 rf /Fb 138[62 44 44 1[59 1[56 62 1[31 59 1[31 -62 2[51 1[50 1[54 12[78 62 28[56 56 56 1[56 56 2[31 46[{}21 -99.6264 /CMBX12 rf /Fc 142[27 113[{}1 41.511 /CMMI5 rf -/Fd 171[39 84[{}1 58.1154 /MSBM7 rf /Fe 171[55 84[{}1 -83.022 /MSBM10 rf /Ff 205[45 49[52{}2 58.1154 /CMSY7 -rf /Fg 165[46 1[120 7[88 12[73 73 73 73 14[73 73 14[66 -66 5[62 6[61 61 50 50 14[38 38{}18 83.022 /CMEX10 rf -/Fh 142[30 1[33 2[21 35 27 23 39 32 3[30 29 36 12[39 -5[53 2[56 15[20 59[{}15 58.1154 /CMMI7 rf /Fi 194[51 -10[33 33 33 6[26 26 29[47 10[{}7 58.1154 /CMR7 rf /Fj -141[69 7[23 2[42 42 45[46 1[0 3[55 16[83 83 6[65 4[65 -2[65 1[42 12[65 23 65{}16 83.022 /CMSY10 rf /Fk 135[47 -59 40 48 3[37 42 40 2[25 1[34 29 1[40 41 1[43 36 36 44 -10[48 57 3[66 2[67 2[71 46 36 2[53 4[62 44 2[42 65 23 -23 18[54 6[54 8[41 50 48 6[37 1[47 12[{}37 83.022 /CMMI10 -rf /Fl 133[34 2[55 38 45 28 34 35 1[42 42 47 68 21 2[25 -42 38 25 38 42 38 1[42 25[64 2[63 9[25 12[30 32[47 12[{}25 -83.022 /CMTI10 rf /Fm 130[44 44 44 44 44 44 44 44 44 -44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 -44 44 1[44 1[44 1[44 3[44 44 44 44 2[44 3[44 2[44 44 -44 44 44 44 44 4[44 44 44 44 44 44 7[44 44 44 44 44 44 -44 44 44 44 44 1[44 4[44 33[{}64 83.022 /CMTT10 rf /Fn -133[37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 -23 46 42 25 37 46 37 46 42 2[42 23 42 23 1[62 1[85 2[60 -46 3[65 62 1[52 65 43 30 62 65 54 1[63 60 59 62 1[39 -1[65 1[23 23 42 42 42 42 42 42 42 42 42 42 42 23 28 23 -65 1[32 32 23 4[42 14[42 4[69 46 46 48 60 1[60 6[69 1[{}78 -83.022 /CMR10 rf /Fo 134[71 2[71 75 52 53 55 1[75 67 -75 112 37 2[37 75 67 41 61 75 60 75 65 10[102 1[94 7[81 -2[50 5[97 1[102 6[37 2[67 67 67 67 67 67 67 3[45 32[75 -12[{}36 119.552 /CMBX12 rf /Fp 128[49 4[43 51 1[70 1[54 -38 1[38 2[49 54 1[27 2[27 54 49 30 43 54 43 1[49 6[60 -2[100 2[70 54 5[89 4[73 2[66 2[69 15[49 1[49 3[27 44[{}29 -99.6264 /CMR12 rf /Fq 147[89 6[89 89 2[89 23[89 26[89 -46[{}6 172.188 /CMTT12 rf /Fr 139[61 62 61 3[88 133 43 -2[43 1[79 1[70 1[70 88 79 31[119 65[{}13 172.188 /CMR17 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop 670 427 a Fr(Assem)l(bling)51 b(matrices)h(in)g -Fq(deal.II)1417 661 y Fp(W)-8 b(olfgang)32 b(Bangerth)1293 -777 y(ETH)h(Z)s(\177)-51 b(uric)m(h,)33 b(Switzerland)1623 -977 y(Ma)m(y)g(2002)330 1251 y Fo(1)135 b(In)l(tro)t(duction)330 -1433 y Fn(Assem)n(bling)23 b(the)i(system)e(matrix)h(for)f(\014nite)i -(elemen)n(t)f(discretizations)e(is)i(standard,)g(at)f(least)330 -1533 y(as)39 b(far)f(as)h(scalar)f(problems)g(are)g(concerned.)71 -b(Ho)n(w)n(ev)n(er,)41 b(things)e(b)r(ecome)g(a)g(little)h(more)330 -1632 y(complicated)26 b(in)g(implemen)n(tations)g(once)f(problems)h -(are)f(v)n(ector-v)-5 b(alued,)24 b(and)i(in)g(particular)330 -1732 y(if)39 b(\014nite)f(elemen)n(ts)g(are)f(used)h(in)g(whic)n(h)g -(di\013eren)n(t)g(comp)r(onen)n(ts)g(of)g(v)n(ector-v)-5 -b(alued)36 b(shap)r(e)330 1831 y(functions)28 b(are)f(coupled,)g(suc)n -(h)g(as)g(for)g(example)g(for)h(div)n(ergence-free)d(elemen)n(ts.)455 -1931 y(It)32 b(is)h(this)f(case)g(that)g(w)n(e)h(are)e(in)n(terested)h -(in)h(in)f(this)h(rep)r(ort,)g(and)f(w)n(e)g(will)h(discuss)f(the)330 -2031 y(implemen)n(tational)h(details)g(user)g(programs)e(m)n(ust)j -(follo)n(w)e(if)i(they)g(w)n(an)n(t)f(to)g(use)g(suc)n(h)g(ele-)330 -2130 y(men)n(ts)c(with)g Fm(deal.II)p Fn(.)d(In)j(order)e(to)i(explain) -f(the)h(problem)g(in)g(a)f(simple)h(w)n(a)n(y)-7 b(,)28 -b(w)n(e)g(start)g(b)n(y)330 2230 y(reviewing)c(the)i(algorithms)e(that) -h(are)f(used,)i(\014rst)f(for)g(the)g(scalar)f(case,)h(then)g(for)g -(the)h(case)e(of)330 2330 y(\\simple")j(v)n(ector-v)-5 -b(alued)26 b(\014nite)j(elemen)n(ts,)f(and)f(\014nally)h(for)f(the)i -(most)e(general)g(case.)37 b(Ho)n(w-)330 2429 y(ev)n(er,)27 -b(w)n(e)h(do)g(not)h(in)n(tend)g(to)f(giv)n(e)f(an)h(in)n(tro)r -(duction)g(in)n(to)g(the)h(deriv)-5 b(ation)28 b(of)g(\014nite)h -(elemen)n(t)330 2529 y(metho)r(ds,)f(or)f(of)g(p)r(osing)g(a)g(partial) -g(di\013eren)n(tial)h(equation)f(in)g(w)n(eak)g(form.)455 -2628 y(The)19 b(in)n(terface)f(for)g(v)n(ector-v)-5 b(alued)18 -b(\014nite)h(elemen)n(t)g(shap)r(e)g(functions)h(with)f(more)f(than)h -(one)330 2728 y(non-zero)i(comp)r(onen)n(t)i(that)g(is)g(describ)r(ed)f -(in)h(this)h(rep)r(ort)e(is)g(presen)n(tly)g(b)r(eing)h(implemen)n -(ted,)330 2828 y(and)d(will)h(b)r(e)g(merged)f(with)h(the)g(library)f -(after)g(v)n(ersion)f(3.4)h(is)g(released.)34 b(Th)n(us,)22 -b(it)f(will)g(b)r(e)g(part)330 2927 y(of)g(v)n(ersion)e(3.5)h(or)f(4.0) -h(of)h(the)g(library)-7 b(,)21 b(dep)r(ending)g(on)f(whic)n(h)h(v)n -(ersion)e(n)n(um)n(b)r(er)h(w)n(e)g(will)h(assign)330 -3027 y(to)33 b(the)h(successor)d(of)i(3.4.)53 b(By)33 -b(then,)i(the)f(library)e(will)h(also)g(con)n(tain)f(an)h(implemen)n -(tation)330 3127 y(of)j(Nedelec)g(elemen)n(ts,)j(for)c(whic)n(h)i -(these)f(tec)n(hniques)g(are)f(necessary)-7 b(.)61 b(The)36 -b(in)n(terface)g(for)330 3226 y(primitiv)n(e)g(v)n(ector-v)-5 -b(alued)35 b(shap)r(e)i(functions,)i(for)d(whic)n(h)g(only)g(one)h(v)n -(ector)e(comp)r(onen)n(t)h(is)330 3326 y(non-zero,)26 -b(has)h(b)r(een)h(part)f(of)h(the)g(library)e(since)h(its)h -(publication)g(with)g(v)n(ersion)e(3.0.)330 3600 y Fo(2)135 -b(Linear)45 b(systems)h(for)f(\014nite)g(elemen)l(t)i(metho)t(ds)330 -3782 y Fn(W)-7 b(e)30 b(start)f(b)n(y)g(brie\015y)g(in)n(tro)r(ducing)g -(the)h(w)n(a)n(y)e(\014nite)i(elemen)n(t)f(matrices)g(are)f(assem)n -(bled)h(\\on)330 3882 y(pap)r(er".)34 b(As)24 b(usual)e(in)h(\014nite)h -(elemen)n(ts,)g(w)n(e)f(tak)n(e)f(the)h(w)n(eak)f(form)h(of)g(the)g -(partial)f(di\013eren)n(tial)330 3982 y(equation.)36 -b(In)28 b(the)g(most)f(general)g(case,)f(it)i(reads:)36 -b Fl(\014nd)30 b Fk(u)22 b Fj(2)i Fk(V)48 b Fl(such)30 -b(that)1320 4164 y Fk(a)p Fn(\()p Fk(u;)14 b(v)s Fn(\))23 -b(=)f(\()p Fk(f)t(;)14 b(v)s Fn(\))1855 4176 y Fi(\012)2074 -4164 y Fj(8)p Fk(v)26 b Fj(2)d Fk(V)5 b(;)330 4347 y -Fn(where)31 b Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p -Fn(\))32 b(is)f(the)g(bilinear)g(form)g(asso)r(ciated)f(with)i(the)f -(partial)g(di\013eren)n(tial)g(equations,)330 4446 y(and)26 -b Fk(V)46 b Fn(is)26 b(the)h(space)e(of)i(test)f(functions.)37 -b(F)-7 b(or)26 b(simplicit)n(y)-7 b(,)27 b(w)n(e)f(ha)n(v)n(e)f(here)h -(assumed)g(that)h(the)330 4546 y(problem)d(is)g(linear)g(and)h(that)g -(then)g Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p -Fn(\))25 b(is)f(a)g(bilinear)g(form;)i(if)f(the)g(problem)f(is)g -(nonlinear,)330 4646 y(it)k(is)g(usually)f(solv)n(ed)f(using)h(a)h -(sequence)f(of)g(linear)g(problems,)g(so)g(this)h(is)f(no)h -(restriction.)455 4745 y(In)j(\014nite)g(elemen)n(ts,)h(w)n(e)f -(de\014ne)g(an)g(appro)n(ximation)e(of)i(the)g(solution)g -Fk(u)f Fn(b)n(y)h(c)n(ho)r(osing)e(a)330 4845 y(\014nite)g(dimensional) -f(subspace)g Fk(V)1397 4857 y Fh(h)1468 4845 y Fn(spanned)h(b)n(y)f -(the)h(basis)e(functions)i Fj(f)p Fk(')2712 4857 y Fh(i)2739 -4845 y Fj(g)p Fn(,)g(and)f(searc)n(hing)330 4945 y Fk(u)378 -4957 y Fh(h)444 4945 y Fj(2)23 b Fk(V)570 4957 y Fh(h)639 -4945 y Fn(b)n(y)i(testing)h(the)g(w)n(eak)f(form)g(b)n(y)g(the)h(test)g -(functions)g(from)f Fk(V)2576 4957 y Fh(h)2620 4945 y -Fn(.)36 b(The)25 b(problem)h(then)330 5044 y(reads:)36 -b Fl(\014nd)29 b Fk(u)793 5056 y Fh(h)859 5044 y Fj(2)23 -b Fk(V)985 5056 y Fh(h)1058 5044 y Fl(such)30 b(that)1219 -5227 y Fk(a)p Fn(\()p Fk(u)1343 5239 y Fh(h)1385 5227 -y Fk(;)14 b(v)1462 5239 y Fh(h)1506 5227 y Fn(\))23 b(=)g(\()p -Fk(f)t(;)14 b(v)1803 5239 y Fh(h)1846 5227 y Fn(\))1878 -5239 y Fi(\012)2096 5227 y Fj(8)p Fk(v)2182 5239 y Fh(h)2248 -5227 y Fj(2)24 b Fk(V)2375 5239 y Fh(h)2418 5227 y Fk(:)455 -5409 y Fn(No)n(w,)39 b Fj(f)p Fk(')775 5421 y Fh(i)802 -5409 y Fj(g)e Fn(is)g(a)f(basis)h(of)g Fk(V)1418 5421 -y Fh(h)1461 5409 y Fn(.)66 b(W)-7 b(e)37 b(denote)g(the)h(dimension)f -(of)g Fk(V)2686 5421 y Fh(h)2767 5409 y Fn(b)n(y)g Fk(N)9 -b Fn(,)39 b(and)e(will)330 5509 y(henceforth)e(let)h(all)e(sums)h(b)r -(e)h(o)n(v)n(er)d(the)j(range)e(0)14 b Fk(:)g(:)g(:)f(N)32 -b Fj(\000)23 b Fn(1,)37 b(to)e(k)n(eep)g(with)g(the)h(standard)330 -5609 y(notation)f(of)h(the)h(C/C++)d(programming)g(languages.)60 -b(With)37 b(this,)i(w)n(e)c(can)h(expand)g(the)1809 5919 -y(1)p eop -%%Page: 2 2 -2 1 bop 330 390 a Fn(solution)25 b Fk(u)690 402 y Fh(h)756 -390 y Fn(=)843 328 y Fg(P)931 348 y Fh(N)6 b Ff(\000)p -Fi(1)931 415 y Fh(j)s Fi(=0)1093 390 y Fk(U)1150 402 -y Fh(j)1185 390 y Fk(')1239 402 y Fh(j)1274 390 y Fn(,)26 -b(and)g(b)n(y)f(bilinearit)n(y)g(of)h(the)g(form)f Fk(a)p -Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\),)27 b(the)f(problem)f(ab)r -(o)n(v)n(e)330 490 y(is)i(equiv)-5 b(alen)n(t)28 b(to)998 -633 y Fh(N)6 b Ff(\000)p Fi(1)1010 657 y Fg(X)1012 834 -y Fh(j)s Fi(=0)1155 736 y Fk(U)1212 748 y Fh(j)1247 736 -y Fk(a)p Fn(\()p Fk(')1377 748 y Fh(j)1413 736 y Fk(;)14 -b(')1504 748 y Fh(i)1531 736 y Fn(\))24 b(=)e(\()p Fk(f)t(;)14 -b(')1842 748 y Fh(i)1871 736 y Fn(\))166 b Fj(8)p Fk(i)23 -b Fn(=)f(0)14 b Fk(:)g(:)g(:)f(N)28 b Fj(\000)18 b Fn(1)p -Fk(:)561 b Fn(\(1\))330 989 y(Denoting)1143 1159 y Fk(A)1205 -1171 y Fh(ij)1286 1159 y Fn(=)23 b Fk(a)p Fn(\()p Fk(')1504 -1171 y Fh(j)1539 1159 y Fk(;)14 b(')1630 1171 y Fh(i)1658 -1159 y Fn(\))p Fk(;)347 b(F)2113 1171 y Fh(j)2171 1159 -y Fn(=)23 b(\()p Fk(f)t(;)14 b(')2427 1171 y Fh(j)2462 -1159 y Fn(\))p Fk(;)330 1329 y Fn(the)28 b(equations)f(determining)g -(the)h(expansion)f(co)r(e\016cien)n(ts)g Fk(U)2312 1341 -y Fh(i)2367 1329 y Fn(are)g(therefore:)1671 1499 y Fk(AU)32 -b Fn(=)23 b Fk(F)r(:)1236 b Fn(\(2\))455 1669 y(Note)26 -b(that)h(w)n(e)g(ha)n(v)n(e)e(tak)n(en)h(a)g(rev)n(erted)g(order)f(of)i -(indices)f(in)h(the)g(de\014nition)g(of)g Fk(A)p Fn(,)g(since)330 -1768 y(w)n(e)h(w)n(an)n(t)f(the)h(linear)g(system)f(\(2\))i(with)f(the) -h(solution)e(to)h(the)g(righ)n(t)g(of)g(the)g(matrix,)g(to)g(k)n(eep) -330 1868 y(with)33 b(standard)e(notation,)i(instead)f(of)g(to)g(the)g -(left)h(as)e(in)i(\(1\).)50 b(F)-7 b(or)32 b(symmetric)g(problems,)330 -1967 y(there)40 b(is)g(no)f(di\013erence,)k(but)e(for)e(non-symmetric)g -(ones)h(this)g(is)g(a)f(common)h(source)f(for)330 2067 -y(problems)27 b(and)g(a)g(rather)g(common)g(trap.)455 -2167 y(F)-7 b(or)26 b(partial)h(di\013eren)n(tial)g(equations,)g(the)h -(bilinear)f(form)g(used)g(in)h(\(1\))f(in)n(v)n(olv)n(es)f(an)h(in)n -(te-)330 2266 y(gral)20 b(o)n(v)n(er)g(the)i(domain)g(\012)f(on)h(whic) -n(h)g(the)g(problem)f(is)g(p)r(osed.)35 b(F)-7 b(or)21 -b(example,)i(for)e(the)h(Laplace)330 2366 y(equation)27 -b(w)n(e)g(ha)n(v)n(e)905 2574 y Fk(A)967 2586 y Fh(ij)1049 -2574 y Fn(=)22 b Fk(a)p Fn(\()p Fk(')1266 2586 y Fh(j)1302 -2574 y Fk(;)14 b(')1393 2586 y Fh(i)1421 2574 y Fn(\))23 -b(=)g(\()p Fj(r)p Fk(')1719 2586 y Fh(j)1755 2574 y Fk(;)14 -b Fj(r)p Fk(')1915 2586 y Fh(i)1943 2574 y Fn(\))1975 -2586 y Fi(\012)2049 2574 y Fn(=)2137 2461 y Fg(Z)2183 -2649 y Fi(\012)2249 2574 y Fj(r)p Fk(')2372 2586 y Fh(j)2426 -2574 y Fj(\001)k(r)p Fk(')2590 2586 y Fh(i)2641 2574 -y Fk(dx:)330 2786 y Fn(F)-7 b(or)24 b(practical)g(purp)r(oses,)h(w)n(e) -f(split)h(this)g(equation)f(in)n(to)h(in)n(tegrals)e(o)n(v)n(er)g(the)i -(individual)g(cells)330 2885 y Fk(K)35 b Fn(of)30 b(the)g -(triangulation)e Fe(T)i Fn(w)n(e)g(use)f(for)g(the)h(discretization.)42 -b(In)30 b Fm(deal.II)p Fn(,)d(these)j(cells)f(are)330 -2985 y(alw)n(a)n(ys)d(lines,)h(quadrilaterals,)f(or)g(hexahedra.)36 -b(With)28 b(this,)g(w)n(e)g(ha)n(v)n(e)e(that)721 3167 -y Fk(A)d Fn(=)906 3088 y Fg(X)894 3266 y Fh(K)t Ff(2)p -Fd(T)1051 3167 y Fk(A)1113 3132 y Fh(K)1177 3167 y Fk(;)346 -b(A)1608 3132 y Fh(K)1608 3187 y(ij)1696 3167 y Fn(=)22 -b Fk(a)1827 3179 y Fh(K)1891 3167 y Fn(\()p Fk(')1977 -3179 y Fh(j)2013 3167 y Fk(;)14 b(')2104 3179 y Fh(i)2132 -3167 y Fn(\))166 b(0)23 b Fj(\024)f Fk(i;)14 b(j)28 b -Fj(\024)22 b Fk(N)27 b Fj(\000)19 b Fn(1)p Fk(;)330 3420 -y Fn(where)39 b(the)h(bilinear)f(form)g Fk(a)1301 3432 -y Fh(K)1365 3420 y Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p -Fn(\))40 b(only)f(in)n(v)n(olv)n(es)f(an)h(in)n(tegral)f(o)n(v)n(er)g -(the)i(cell)f Fk(K)6 b Fn(.)72 b(The)330 3519 y(imp)r(ortan)n(t)23 -b(p)r(oin)n(t)h(is)g(that)g(w)n(e)g(do)f(so)g(since)h(for)f(the)h(lo)r -(calized)g(basis)f(functions)h(used)f(in)i(\014nite)330 -3619 y(elemen)n(ts,)i Fk(A)754 3589 y Fh(K)845 3619 y -Fn(is)g(a)g(matrix)g(with)g(almost)f(only)h(zeros.)35 -b(The)28 b(only)e(elemen)n(ts)h(whic)n(h)g(are)f(not)330 -3719 y(zero)34 b(are)g(those)g(corresp)r(onding)f(to)i(indices)g -Fk(i;)14 b(j)39 b Fn(indicating)c(those)g(shap)r(e)g(functions)g(that) -330 3818 y(ha)n(v)n(e)20 b(supp)r(ort)h(also)g(on)g(the)h(elemen)n(t)f -Fk(K)6 b Fn(.)35 b(F)-7 b(or)20 b(example,)j(in)e(2d)g(and)h(using)f -(the)h(usual)f(bilinear)330 3918 y(shap)r(e)26 b(functions)h(for)e(a)h -(scalar)f(problem,)h(only)g(the)g(four)g(shap)r(e)g(functions)h(asso)r -(ciated)e(with)330 4017 y(the)33 b(v)n(ertices)e(of)h(the)h(cell)f -Fk(K)38 b Fn(are)31 b(nonzero)g(on)h Fk(K)6 b Fn(,)33 -b(and)f(th)n(us)g(only)g(the)g(en)n(tries)g(in)g Fk(A)3122 -3987 y Fh(K)3219 4017 y Fn(are)330 4117 y(nonzero)25 -b(where)h(the)h(four)f(ro)n(ws)f(corresp)r(onding)f(to)j(these)f -(indices)h(and)f(the)h(resp)r(ectiv)n(e)e(four)330 4217 -y(columns)i(in)n(tersect.)455 4316 y(In)j(general,)g(assume)f(that)i -(there)f(are)f Fk(N)1769 4328 y Fh(K)1863 4316 y Fn(shap)r(e)i -(functions)f(with)h(supp)r(ort)f(on)g(cell)g Fk(K)6 b -Fn(,)330 4416 y(and)26 b(let)h(the)g(set)f(of)h(their)f(indices)h(b)r -(e)g(denoted)f(b)n(y)g Fk(I)2016 4428 y Fh(K)2081 4416 -y Fn(.)36 b(Then)27 b(w)n(e)f(can)g(de\014ne)h(a)f(matrix)3226 -4395 y(^)3204 4416 y Fk(A)3266 4386 y Fh(K)330 4516 y -Fn(of)33 b(\(small)g(dimension\))g Fk(N)1182 4528 y Fh(K)1268 -4516 y Fj(\002)21 b Fk(N)1421 4528 y Fh(K)1518 4516 y -Fn(holding)33 b(these)g(nonzero)f(en)n(tries,)h(and)g(w)n(e)g(can)f -(obtain)330 4615 y(bac)n(k)27 b(the)h(original)e(con)n(tribution)h -Fk(A)1502 4627 y Fh(K)1594 4615 y Fn(to)g Fk(A)h Fn(b)n(y)f(the)h -(transformation)585 4840 y Fk(A)647 4806 y Fh(K)647 4861 -y(ij)734 4840 y Fn(=)822 4723 y Fg(\032)925 4780 y Fn(0)568 -b(if)28 b Fk(i)23 b Fj(62)g Fk(I)1777 4792 y Fh(K)1869 -4780 y Fn(or)k Fk(j)h Fj(62)23 b Fk(I)2147 4792 y Fh(K)2212 -4780 y Fn(,)947 4867 y(^)925 4888 y Fk(A)987 4858 y Fh(K)987 -4915 y(local)p Fi(\()p Fh(i)p Fi(\))p Fh(;local)p Fi(\()p -Fh(j)s Fi(\))1535 4888 y Fn(otherwise)o Fk(;)2466 4840 -y Fn(0)g Fj(\024)f Fk(i;)14 b(j)28 b Fj(\024)23 b Fk(N)k -Fj(\000)18 b Fn(1)p Fk(:)330 5070 y Fn(Here,)27 b Fk(l)r(ocal)r -Fn(\()p Fk(i)p Fn(\))f(giv)n(es)g(the)h(n)n(um)n(b)r(er)g(of)g(the)h -(global)e(degree)g(of)h(freedom)f Fk(i)h Fn(on)g(the)g(cell)g -Fk(K)6 b Fn(,)27 b(i.e.)330 5170 y(the)i(p)r(osition)f(of)h -Fk(i)f Fn(in)h(the)g(index)f(set)h Fk(I)1577 5182 y Fh(K)1641 -5170 y Fn(.)40 b(One)28 b(could)g(call)2277 5149 y(^)2256 -5170 y Fk(A)2318 5140 y Fh(K)2410 5170 y Fn(the)h Fm(reduced)d -Fn(form)i(of)h Fk(A)3243 5140 y Fh(K)3307 5170 y Fn(,)330 -5269 y(since)e(the)h(man)n(y)f(zero)g(ro)n(ws)f(and)h(column)h(ha)n(v)n -(e)e(b)r(een)i(stripp)r(ed.)455 5369 y(In)k(general,)g(when)h(assem)n -(bling)e(the)h(global)f(matrix,)i(the)g(rev)n(erse)d(w)n(a)n(y)h(is)i -(used:)46 b(when)330 5469 y(adding)27 b(up)h Fk(A)784 -5439 y Fh(K)876 5469 y Fn(to)f Fk(A)p Fn(,)h(w)n(e)g(do)f(so)g(only)g -(with)1823 5448 y(^)1801 5469 y Fk(A)1863 5439 y Fh(K)1955 -5469 y Fn(b)n(y)898 5639 y Fk(A)960 5654 y Fh(g)r(lobal)p -Fi(\()p Fh(i)p Fi(\))p Fh(;g)r(lobal)p Fi(\()p Fh(j)s -Fi(\))1492 5639 y Fn(+)-5 b(=)1662 5618 y(^)1640 5639 -y Fk(A)1702 5604 y Fh(K)1702 5659 y(ij)2098 5639 y Fn(0)23 -b Fj(\024)f Fk(i;)14 b(j)28 b Fj(\024)23 b Fk(N)2533 -5651 y Fh(K)2615 5639 y Fj(\000)18 b Fn(1)p Fk(:)1809 -5919 y Fn(2)p eop -%%Page: 3 3 -3 2 bop 330 390 a Fn(Th)n(us,)34 b(indices)f(only)g(run)f(o)n(v)n(er)f -(the)j(\(small\))f(range)f(0)14 b Fk(:)g(:)g(:)f(N)2277 -402 y Fh(K)2362 390 y Fj(\000)22 b Fn(1)32 b(instead)h(of)g(0)14 -b Fk(:)g(:)g(:)f(N)31 b Fj(\000)21 b Fn(1.)330 490 y(Here,)30 -b Fk(g)s(l)r(obal)r Fn(\()p Fk(i)p Fn(\))e(denotes)h(the)h(global)f(n)n -(um)n(b)r(er)g(of)h(the)g(degree)f(of)g(freedom)h(with)g(n)n(um)n(b)r -(er)f Fk(i)330 589 y Fn(on)34 b(this)g(cell)g Fk(K)6 -b Fn(,)35 b(i.e.)56 b Fk(g)s(l)r(obal)r Fn(\()p Fk(i)p -Fn(\))31 b(=)j Fk(I)1547 601 y Fh(K)1611 589 y Fn([)p -Fk(i)p Fn(],)h(where)f(the)g(brac)n(k)n(et)e(op)r(erator)h(returns)g -(the)h Fk(i)p Fn(th)330 689 y(elemen)n(t)28 b(of)f(the)h(set)g -Fk(I)1040 701 y Fh(K)1104 689 y Fn(.)455 789 y(The)c(main)g(part)g(of)g -(assem)n(bling)f(\014nite)h(elemen)n(t)h(matrices)e(is)h(therefore)f -(to)i(assem)n(ble)e(the)330 888 y(lo)r(cal)35 b(matrix)833 -867 y(^)811 888 y Fk(A)873 858 y Fh(K)937 888 y Fn(.)60 -b(Before)34 b(w)n(e)h(go)f(on)h(with)g(discussing)g(ho)n(w)f(this)i(is) -f(done)f(in)i Fm(deal.II)p Fn(,)330 988 y(w)n(e)e(w)n(ould)g(lik)n(e)h -(to)f(commen)n(t)h(on)f(the)h(ev)-5 b(aluation)34 b(of)g(the)h(in)n -(tegrals)e(in)n(v)n(olv)n(ed.)57 b(Since)35 b(the)330 -1088 y(in)n(tegrals)i(are)g(usually)g(to)r(o)h(complex)f(to)h(b)r(e)h -(ev)-5 b(aluated)37 b(exactly)h(\(they)g(ma)n(y)g(dep)r(end)g(on)330 -1187 y(co)r(e\016cien)n(ts)24 b(app)r(earing)g(in)h(the)g(equation,)g -(or)f(the)h(solution)f(of)h(previous)e(steps)i(in)g(nonlinear)330 -1287 y(or)33 b(time-dep)r(enden)n(t)h(problems\),)h(they)f(are)f(appro) -n(ximated)f(b)n(y)h(quadrature.)54 b(Assume)33 b(w)n(e)330 -1386 y(ha)n(v)n(e)18 b(a)g(quadrature)g(form)n(ula)g(with)h -Fk(N)1535 1398 y Fh(q)1590 1386 y Fn(p)r(oin)n(ts)g Fk(x)1878 -1398 y Fh(q)1934 1386 y Fn(de\014ned)g(on)g(cell)g(in)g(real)f(space)g -(\(as)h(opp)r(osed)330 1486 y(to)31 b(the)h(unit)g(cell\))g(and)f(w)n -(eigh)n(ts)g Fk(w)1469 1498 y Fh(q)1506 1486 y Fn(.)48 -b(Then,)33 b(for)e(example)g(for)f(the)i(Laplace)f(equation,)g(w)n(e) -330 1586 y(appro)n(ximate)679 1833 y(^)658 1854 y Fk(A)720 -1819 y Fh(K)720 1874 y(ij)807 1854 y Fj(\021)895 1741 -y Fg(Z)941 1929 y Fh(K)1018 1854 y Fj(r)p Fk(')1141 1866 -y Fh(i)1188 1854 y Fj(\001)19 b(r)p Fk(')1353 1866 y -Fh(j)1411 1854 y Fk(dx)24 b Fj(\031)1612 1741 y Fh(N)1665 -1749 y Fc(q)1698 1741 y Ff(\000)p Fi(1)1638 1775 y Fg(X)1639 -1950 y Fh(q)r Fi(=0)1797 1854 y Fj(r)p Fk(')1920 1866 -y Fh(i)1948 1854 y Fn(\()p Fk(x)2027 1866 y Fh(q)2064 -1854 y Fn(\))19 b Fj(\001)g(r)p Fk(')2280 1866 y Fh(j)2315 -1854 y Fn(\()p Fk(x)2394 1866 y Fh(q)2432 1854 y Fn(\))27 -b Fk(w)2550 1866 y Fh(q)2588 1854 y Fj(j)p Fn(det)h Fk(J)8 -b Fn(\()d(^)-47 b Fk(x)2887 1866 y Fh(q)2924 1854 y Fn(\))p -Fj(j)p Fk(:)222 b Fn(\(3\))330 2119 y(F)-7 b(or)28 b(other)g(problems,) -g(the)h(in)n(tegrand)f(is)h(di\013eren)n(t,)g(but)g(the)g(principle)g -(remains)f(the)h(same.)330 2218 y(det)i Fk(J)8 b Fn(\()d(^)-47 -b Fk(x)609 2230 y Fh(q)647 2218 y Fn(\))31 b(denotes)f(the)h -(determinan)n(t)f(of)h(the)g(Jacobian)e(of)i(the)g(transformation)e(b)r -(et)n(w)n(een)330 2318 y(the)e(unit)g(cell)g(on)f(whic)n(h)h(the)g -(quadrature)e(w)n(eigh)n(ts)h(are)f(de\014ned,)i(and)g(the)g(real)f -(cell,)g(and)32 b(^)-47 b Fk(x)3293 2330 y Fh(q)330 2417 -y Fn(is)25 b(the)h(p)r(oin)n(t)f(on)h(the)f(unit)h(cell)g(corresp)r -(onding)d(to)i(the)h(quadrature)e(p)r(oin)n(t)h Fk(x)2796 -2429 y Fh(q)2859 2417 y Fn(in)g(real)g(space.)455 2517 -y(Since)37 b(all)h(matrices)e(and)i(righ)n(t)e(hand)i(side)f(v)n -(ectors)f(only)i(require)e(kno)n(wledge)g(of)i(the)330 -2617 y(v)-5 b(alues)19 b(and)h(gradien)n(ts)e(of)i(shap)r(e)g -(functions)g(at)g(quadrature)e(p)r(oin)n(ts,)j(this)g(is)e(all)h(that)g -Fm(deal.II)330 2716 y Fn(usually)38 b(pro)n(vides.)69 -b(One)38 b(can)g(see)h(this)g(as)f(a)g(kind)h(of)f Fl(view)49 -b Fn(on)39 b(a)f(\014nite)h(elemen)n(t,)j(as)c(it)330 -2816 y(only)f(pro)n(vides)f(a)g(certain)h(p)r(ersp)r(ectiv)n(e)g(on)g -(the)g(actual)g(de\014nition)h(of)f(a)f(shap)r(e)h(function.)330 -2916 y(Nev)n(ertheless,)21 b(this)f(is)g(en)n(tirely)f(su\016cien)n(t)i -(for)e(all)h(purp)r(oses)f(of)h(programming)e(\014nite)j(elemen)n(t)330 -3015 y(programs.)455 3115 y(In)g Fm(deal.II)d Fn(the)j -Fm(FEValues)d Fn(class)i(do)r(es)g(this:)34 b(y)n(ou)20 -b(giv)n(e)g(it)i(a)e(\014nite)i(elemen)n(t)f(de\014nition,)h(a)330 -3214 y(quadrature)i(form)n(ula)g(ob)5 b(ject,)25 b(and)g(an)g(ob)5 -b(ject)24 b(de\014ning)i(the)f(transformation)e(b)r(et)n(w)n(een)i -(unit)330 3314 y(and)j(real)g(cell,)g(and)h(it)f(pro)n(vides)f(y)n(ou)h -(with)h(the)g(v)-5 b(alues,)28 b(gradien)n(t,)f(and)h(second)g(deriv)-5 -b(ativ)n(es)330 3414 y(of)25 b(shap)r(e)g(functions)h(at)f(the)g -(quadrature)f(p)r(oin)n(ts.)36 b(It)26 b(also)e(giv)n(es)g(access)g(to) -h(the)g(determinan)n(t)330 3513 y(of)k(the)h(Jacobian,)e(although)g -(only)h(m)n(ultiplied)h(with)g Fk(w)2120 3525 y Fh(q)2186 -3513 y Fn(as)f(these)g(t)n(w)n(o)f(are)g(alw)n(a)n(ys)g(used)h(in)330 -3613 y(conjunction.)55 b(It)33 b(also)g(pro)n(vides)f(y)n(ou)h(with)g -(man)n(y)g(other)g(\014elds,)i(suc)n(h)e(as)g(normal)g(v)n(ectors)330 -3713 y(to)i(the)h(outer)f(b)r(oundary)-7 b(.)59 b(In)35 -b(practice)g(y)n(ou)g(do)g(not)g(need)g(them)h(all)f(computed)h(on)f -(eac)n(h)330 3812 y(cell;)44 b(th)n(us,)d(y)n(ou)d(ha)n(v)n(e)f(to)i -(sp)r(ecify)g(explicitly)f(in)h(whic)n(h)g(data)f(y)n(ou)f(are)h(in)n -(terested)g(when)330 3912 y(constructing)28 b Fm(FEValues)c -Fn(ob)5 b(jects.)455 4011 y(In)20 b(the)i(follo)n(wing,)f(w)n(e)f(pro)n -(vide)g(a)g(list)h(of)g(connections)f(b)r(et)n(w)n(een)g(the)h(sym)n(b) -r(ols)f(in)n(tro)r(duced)330 4111 y(ab)r(o)n(v)n(e,)38 -b(and)e(the)h(resp)r(ectiv)n(e)f(functions)h(and)g(v)-5 -b(ariable)36 b(names)g(used)h(in)g(t)n(ypical)f Fm(deal.II)330 -4211 y Fn(programs.)e(With)27 b(this,)g(w)n(e)f(will)h(subsequen)n(tly) -e(sho)n(w)h(the)h(basic)e(structure)h(of)g(an)g(assem)n(bly)330 -4310 y(routine.)45 b(If)31 b(y)n(ou)f(ha)n(v)n(e)f(already)g(tak)n(en)h -(a)h(lo)r(ok)e(at)i(the)g(example)f(programs)e(pro)n(vided)i(with)330 -4410 y Fm(deal.II)p Fn(,)d(y)n(ou)i(will)i(recognize)d(all)i(these)g -(names.)43 b(If)31 b(y)n(ou)e(ha)n(v)n(en't,)h(this)g(w)n(ould)g(b)r(e) -g(a)g(go)r(o)r(d)330 4510 y(time)e(to)g(lo)r(ok)e(at)i(the)g(\014rst)f -(three)h(of)f(them.)p 690 4604 2280 4 v 688 4703 4 100 -v 740 4674 a Fk(A)498 b Fm(system)p 1569 4674 27 4 v -29 w(matrix)p 2968 4703 4 100 v 688 4812 4 109 v 762 -4761 a Fn(^)740 4782 y Fk(A)802 4752 y Fh(K)1300 4782 -y Fm(cell)p 1481 4782 27 4 v 30 w(matrix)p 2968 4812 -4 109 v 688 4912 4 100 v 740 4882 a Fk(K)489 b Fm(cell)p -2968 4912 V 688 5011 V 740 4981 a Fk(N)k Fm(dof)p 1437 -4981 27 4 v 30 w(handler.n)p 1863 4981 V 28 w(dofs\(\))p -2968 5011 4 100 v 688 5111 V 740 5081 a Fk(N)807 5093 -y Fh(K)1300 5081 y Fm(fe.dofs)p 1613 5081 27 4 v 29 w(per)p -1774 5081 V 30 w(cell)p 2968 5111 4 100 v 688 5210 V -740 5181 a Fk(I)776 5193 y Fh(K)1300 5181 y Fm(local)p -1525 5181 27 4 v 29 w(dof)p 1686 5181 V 31 w(indices)p -2968 5210 4 100 v 688 5310 V 740 5280 a Fk(N)807 5292 -y Fh(q)1300 5280 y Fm(quadrature)p 1745 5280 27 4 v 27 -w(formula.n)p 2168 5280 V 28 w(quadrature)p 2636 5280 -V 27 w(points)p 2968 5310 4 100 v 688 5410 V 740 5380 -a Fk(')794 5392 y Fh(i)822 5380 y Fn(\()p Fk(x)901 5392 -y Fh(q)939 5380 y Fn(\))329 b Fm(fe)p 1393 5380 27 4 -v 31 w(values.shape)p 1952 5380 V 26 w(value\(i,q\))p -2968 5410 4 100 v 688 5509 V 740 5479 a Fj(r)p Fk(')863 -5491 y Fh(i)891 5479 y Fn(\()p Fk(x)970 5491 y Fh(q)1008 -5479 y Fn(\))260 b Fm(fe)p 1393 5479 27 4 v 31 w(values.shape)p -1952 5479 V 26 w(grad\(i,q\))p 2968 5509 4 100 v 688 -5609 V 740 5579 a Fk(x)787 5591 y Fh(q)1300 5579 y Fm(fe)p -1393 5579 27 4 v 31 w(values.quadratu)o(re)p 2171 5579 -V 25 w(point\(q\))p 2968 5609 4 100 v 688 5709 V 740 -5679 a Fj(j)p Fn(det)q Fk(J)8 b Fn(\()d(^)-47 b Fk(x)1012 -5691 y Fh(q)1049 5679 y Fn(\))p Fj(j)p Fk(w)1163 5691 -y Fh(q)1300 5679 y Fm(fe)p 1393 5679 27 4 v 31 w(values.JxW\(q\))p -2968 5709 4 100 v 690 5712 2280 4 v 1809 5919 a Fn(3)p -eop -%%Page: 4 4 -4 3 bop 455 390 a Fn(With)41 b(this)g(v)n(o)r(cabulary)-7 -b(,)42 b(the)f(t)n(ypical)f(matrix)g(assem)n(bly)g(lo)r(op)g(in)h -Fm(deal.II)d Fn(has)i(the)330 490 y(follo)n(wing)27 b(form:)38 -b(\014rst)29 b(declare)e(a)h(quadrature)f(ob)5 b(ject)28 -b(and)g(use)h(it)f(for)g(the)h(initialization)f(of)330 -589 y(a)f Fm(FEValues)e Fn(ob)5 b(ject)27 b(as)g(discussed)g(ab)r(o)n -(v)n(e:)417 743 y Fm(QGauss2<2>)83 b(quadrature_formul)o(a;)417 -842 y(FEValues<2>)39 b(fe_values)h(\(fe,)i(quadrature_formu)o(la,)1420 -942 y(UpdateFlags\(upd)o(ate)o(_v)o(alu)o(es)168 b(|)1943 -1042 y(update_gradient)o(s)38 b(|)1943 1141 y(update_JxW_valu)o(es\))o -(\);)330 1295 y Fn(In)e(practice,)g(y)n(ou)f(ma)n(y)g(w)n(an)n(t)f(to)i -(use)f(a)g(di\013eren)n(t)g(set)h(of)f(\014elds)h(to)f(b)r(e)h(up)r -(dated)g(on)f(eac)n(h)330 1394 y(cell.)53 b(F)-7 b(or)32 -b(example)g(if)i(y)n(ou)e(do)g(not)h(need)g(the)g(v)-5 -b(alues)33 b(of)g(shap)r(e)f(functions)i(on)e(a)h(cell,)h(y)n(ou)330 -1494 y(ma)n(y)25 b(omit)h Fm(update)p 969 1494 27 4 v -29 w(values)d Fn(from)i(the)h(list.)37 b(Also)25 b(note)g(that)h(b)n(y) -g(default)g(a)f(bi-)h(or)e(tri-linear)330 1593 y(\(dep)r(ending)j(on)e -(space)g(dimension\))i(mapping)e(b)r(et)n(w)n(een)h(unit)h(and)f(real)f -(cell)g(is)h(used.)37 b(Other)330 1693 y(mappings)32 -b(are)g(p)r(ossible,)h(for)f(example)h(quadratic)e(ones,)i(or)f(a)g -(mapping)h(that)g(mak)n(es)e(use)330 1793 y(of)e(the)h(fact)f(that)h -(in)f(man)n(y)g(cases)f(cells)h(are)f(actually)h(rectangular,)f(rather) -g(than)h(arbitrary)330 1892 y(quadrilaterals;)24 b(in)j(order)d(to)i -(use)g(them,)h(another)e(constructor)f(of)i(the)h Fm(FEValues)22 -b Fn(class)j(can)330 1992 y(b)r(e)c(used,)h(whic)n(h)e(tak)n(es)f(a)h -(mapping)g(ob)5 b(ject)20 b(as)g(\014rst)g(argumen)n(t,)h(b)r(efore)f -(the)h(other)e(argumen)n(ts)330 2092 y(listed)28 b(ab)r(o)n(v)n(e.)455 -2191 y(Next)f(w)n(e)h(de\014ne)g(abbreviations)e(for)h(the)h(v)-5 -b(alues)27 b(of)g Fk(N)2213 2203 y Fh(K)2305 2191 y Fn(and)g -Fk(N)2533 2203 y Fh(q)2570 2191 y Fn(:)417 2344 y Fm(const)42 -b(unsigned)e(int)592 2444 y(dofs_per_cell)e(=)43 b(fe.dofs_per_cell)o -(,)592 2544 y(n_q_points)170 b(=)43 b(quadrature_formu)o(la)o(.n_)o(qu) -o(adr)o(at)o(ur)o(e_p)o(oi)o(nts)o(;)330 2697 y Fn(Then)28 -b(ha)n(v)n(e)e(an)i(ob)5 b(ject)27 b(to)g(store)g(the)h(matrix)1845 -2676 y(^)1823 2697 y Fk(A)1885 2667 y Fh(K)1949 2697 -y Fn(,)g(whic)n(h)g(is)f(of)h(size)f Fk(N)2640 2709 y -Fh(K)2722 2697 y Fj(\002)18 b Fk(N)2872 2709 y Fh(K)2936 -2697 y Fn(:)417 2850 y Fm(FullMatrix)124 b(cell_matrix)40 -b(\(dofs_per_cell,)d(dofs_per_cell\);)330 3003 y Fn(And)21 -b(an)f(ob)5 b(ject)20 b(represen)n(ting)f(the)i(set)g(of)f(global)f -(indices)i(of)f(degrees)f(of)i(freedom,)g(previously)330 -3103 y(denoted)27 b(b)n(y)f Fk(I)793 3115 y Fh(K)858 -3103 y Fn(,)h(that)g(ha)n(v)n(e)e(supp)r(ort)i(on)f(the)h(presen)n(t)f -(cell,)h(i.e.)37 b(those)26 b(degrees)g(of)h(freedom)330 -3203 y(lo)r(cal)g(to)g(the)h(presen)n(t)f(cell:)417 3356 -y Fm(std::vector)42 b(local_dof_indices)37 -b(\(dofs_per_cell\);)330 3509 y Fn(The)28 b(next)f(step)h(is)g(then)g -(to)f(lo)r(op)g(o)n(v)n(er)f(all)i(cells:)417 3663 y -Fm(typename)40 b(DoFHandler::)o(act)o(iv)o(e_c)o(el)o(l_)o(ite)o -(ra)o(tor)635 3762 y(cell)i(=)h(dof_handler.begin)o(_a)o(cti)o(ve)o -(\(\))o(,)635 3862 y(endc)f(=)h(dof_handler.end\(\))o(;)417 -3961 y(for)g(\(;)f(cell!=endc;)d(++cell\))504 4061 y({)330 -4214 y Fn(On)34 b(eac)n(h)g(cell,)i(\014rst)e(tell)h(the)f -Fm(FEValues)e Fn(ob)5 b(ject)34 b(to)g(compute)g(the)h(v)-5 -b(alues)34 b(of)h(the)f(v)-5 b(arious)330 4314 y(\014elds)26 -b(for)f(this)h(particular)e(cell,)i(and)g(do)f(not)h(forget)f(to)g -(reset)g(the)h(lo)r(cal)f(matrix)2953 4293 y(^)2931 4314 -y Fk(A)2993 4284 y Fh(K)3083 4314 y Fn(to)g(zero)330 -4414 y(b)r(efore)i(adding)g(it)h(up:)592 4567 y Fm(fe_values.reini)o(t) -37 b(\(cell\);)592 4666 y(cell_matrix.cle)o(ar)g(\(\);)330 -4820 y Fn(No)n(w)32 b(comes)g(the)i(main)e(part,)i(assem)n(bling)e(the) -h(lo)r(cal)f(matrix)2415 4799 y(^)2393 4820 y Fk(A)2455 -4790 y Fh(K)2520 4820 y Fn(.)52 b(It)33 b(consists)f(of)h(a)f(lo)r(op) -330 4919 y(o)n(v)n(er)26 b(all)i(indices)g(0)23 b Fj(\024)g -Fk(i;)14 b(j)28 b Fj(\024)c Fk(N)1334 4931 y Fh(K)1425 -4919 y Fn(and)k(all)g(quadrature)e(p)r(oin)n(ts)i(0)23 -b Fj(\024)h Fk(q)i Fj(\024)e Fk(N)2753 4931 y Fh(q)2789 -4919 y Fn(,)k(and)g(summing)330 5019 y(up)35 b(the)h(con)n(tributions.) -59 b(As)35 b(this)g(is)g(what)g(w)n(e)g(will)g(discuss)g(in)g(detail)g -(later)g(on,)i(w)n(e)d(only)330 5119 y(denote)28 b(it)g(here)f(b)n(y)g -(an)g(ellipse:)592 5272 y Fm(for)42 b(\(unsigned)e(int)i(i=0;)g -(iget_dof_i)o(nd)o(ice)o(s)37 -b(\(local_dof_indice)o(s\);)592 950 y(for)42 b(\(unsigned)e(int)i(i=0;) -g(i)p Fn(,)24 b(whic)n(h)29 -b(represen)n(ts)f(a)h(tensor)g(of)g(rank)330 4518 y(1)e(in)h -Fm(dim)e Fn(space)h(dimensions.)455 4617 y(Assem)n(bling)d(matrices)h -(for)g(scalar)e(problems)i(is)g(also)g(sho)n(wn)f(from)h(a)g(practical) -g(p)r(ersp)r(ec-)330 4717 y(tiv)n(e)32 b(in)h(man)n(y)f(of)g(the)h -(example)f(programs)f(of)38 b Fm(deal.II)p Fn(,)30 b(where)i(it)h(is)f -(also)g(demonstrated)330 4817 y(ho)n(w)e(to)h(do)g(this)h(for)e(the)i -(righ)n(t)e(hand)h(side)g(v)n(ectors.)46 b(Th)n(us,)31 -b(scalar)f(problems)g(are)g(not)h(to)r(o)330 4916 y(in)n(teresting,)c -(and)g(w)n(e)h(no)n(w)f(turn)g(to)h(v)n(ector-v)-5 b(alued)26 -b(problems.)330 5190 y Fo(4)135 b(V)-11 b(ector-v)k(alued)44 -b(problems)330 5372 y Fn(Since)33 b(w)n(e)f(need)h(some)f(problems)g -(at)h(whic)n(h)f(w)n(e)h(will)g(explain)f(assem)n(bling)f(the)i(matrix) -g(for)330 5471 y(the)24 b(v)n(ector-v)-5 b(alued)22 b(case,)h(w)n(e)h -(no)n(w)f(brie\015y)g(in)n(tro)r(duce)g(t)n(w)n(o)g(simple)g -(equations.)35 b(The)24 b(\014rst)f(are)330 5571 y(the)31 -b(Lam)n(\023)-39 b(e)29 b(equations)g(of)i(elasticit)n(y)-7 -b(,)30 b(whic)n(h)g(are)g(tak)n(en)g(for)f(the)i(symmetric)f(case,)h -(then)f(w)n(e)330 5670 y(brie\015y)d(in)n(tro)r(duce)g(the)h(Stok)n(es) -f(equations)g(as)g(a)g(nonsymmetric)g(problem.)1809 5919 -y(5)p eop -%%Page: 6 6 -6 5 bop 330 390 a Fb(4.1)112 b(The)38 b(elastic)g(equations)330 -543 y Fn(As)22 b(\014rst)g(example)f(for)g(the)i(metho)r(ds)f(w)n(e)f -(are)g(going)g(to)h(discuss)f(for)h(v)n(ector-v)-5 b(alued)20 -b(problems,)330 643 y(w)n(e)k(consider)g(the)h(elastic)f(Lam)n(\023)-39 -b(e)23 b(equations)h(for)g(isotropic)f(materials,)h(whic)n(h)h(read)e -(in)i(strong)330 743 y(form:)1188 842 y Fj(\000r)p Fn(\()p -Fk(\025)19 b Fn(+)f Fk(\026)p Fn(\)\()p Fj(r)h(\001)f -Fa(u)p Fn(\))h Fj(\000)f Fn(\()p Fj(r)h(\001)g Fk(\026)p -Fj(r)p Fn(\))p Fa(u)k Fn(=)g Fa(f)9 b Fk(:)330 987 y -Fn(These)34 b(equations)f(describ)r(e)g(the)i(three-dimensional)e -(deformation)g Fa(u)h Fn(of)g(an)f(elastic)h(b)r(o)r(dy)330 -1087 y(under)27 b(a)g(b)r(o)r(dy)h(force)e Fa(f)9 b Fn(.)37 -b(The)28 b(resp)r(ectiv)n(e)e(bilinear)h(form)g(asso)r(ciated)f(with)i -(this)g(op)r(erator)d(is)330 1186 y(then)868 1286 y Fk(a)p -Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24 b(=)f(\(\()p -Fk(\025)c Fn(+)f Fk(\026)p Fn(\))p Fj(r)h(\001)g Fa(u)p -Fk(;)14 b Fj(r)k(\001)h Fa(v)q Fn(\))1958 1311 y Fi(\012)2028 -1286 y Fn(+)2111 1207 y Fg(X)2152 1386 y Fh(k)2244 1286 -y Fn(\()q Fk(\026)p Fj(r)p Fk(u)2444 1298 y Fh(k)2484 -1286 y Fk(;)14 b Fj(r)p Fk(v)2630 1298 y Fh(k)2671 1286 -y Fn(\))2704 1311 y Fi(\012)2769 1286 y Fk(;)330 1499 -y Fn(or)27 b(as)g(a)g(sum)h(o)n(v)n(er)d(comp)r(onen)n(ts:)828 -1685 y Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24 -b(=)1189 1606 y Fg(X)1210 1785 y Fh(k)q(;l)1322 1685 -y Fn(\()q(\()p Fk(\025)19 b Fn(+)f Fk(\026)p Fn(\))p -Fk(@)1663 1697 y Fh(l)1689 1685 y Fk(u)1737 1697 y Fh(l)1762 -1685 y Fk(;)c(@)1843 1697 y Fh(k)1884 1685 y Fk(v)1924 -1697 y Fh(k)1965 1685 y Fn(\))1997 1710 y Fi(\012)2067 -1685 y Fn(+)2150 1606 y Fg(X)2171 1785 y Fh(k)q(;l)2284 -1685 y Fn(\()p Fk(\026@)2410 1697 y Fh(l)2436 1685 y -Fk(u)2484 1697 y Fh(k)2524 1685 y Fk(;)g(@)2605 1697 -y Fh(l)2630 1685 y Fk(v)2670 1697 y Fh(k)2711 1685 y -Fn(\))2744 1710 y Fi(\012)2809 1685 y Fk(:)455 1951 y -Fn(When)25 b(assem)n(bling)g(matrices,)g(it)h(is)f(adv)-5 -b(an)n(tageous)23 b(to)i(write)h(the)f(w)n(eak)g(form)g(\(i.e.)36 -b(after)330 2050 y(in)n(tegration)g(b)n(y)h(parts\))f(as)h(a)g(kind)g -(of)g(op)r(erator.)64 b(This)37 b(is)g(since)g(matrix)f(elemen)n(ts)h -(after)330 2150 y(discretization)27 b(are)f(de\014ned)i(as)1519 -2325 y Fk(A)1581 2337 y Fh(ij)1662 2325 y Fn(=)23 b Fk(a)p -Fn(\()p Fk(')1880 2337 y Fh(j)1916 2325 y Fk(;)14 b(')2007 -2337 y Fh(i)2034 2325 y Fn(\))2066 2337 y Fi(\012)2118 -2325 y Fk(;)330 2499 y Fn(where)27 b Fk(')624 2511 y -Fh(i)652 2499 y Fk(;)14 b(')743 2511 y Fh(j)805 2499 -y Fn(are)26 b(t)n(w)n(o)h(v)n(ector-v)-5 b(alued)26 b(trial)g -(functions,)i(and)f(it)h(w)n(ould)f(b)r(e)g(nice)h(if)f(w)n(e)g(could) -330 2599 y(write)33 b(the)g(bilinear)g(form)f Fk(a)p -Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\))34 b(as)e(a)g(kind)i(of)f -(scalar)e(pro)r(duct)i(\()p Fk(')2546 2611 y Fh(i)2574 -2599 y Fk(;)14 b(Q')2731 2611 y Fh(j)2766 2599 y Fn(\),)35 -b(where)d Fk(Q)h Fn(is)f(a)330 2699 y(di\013eren)n(tial)25 -b(op)r(erator.)34 b(This)25 b(is)g(trivial)f(if)i(w)n(e)e(tak)n(e)h -Fk(Q)f Fn(as)h(the)g(op)r(erator)e(of)i(the)h(strong)d(form,)330 -2798 y Fk(Q)g Fn(=)f Fj(\000r)p Fn(\()p Fk(\025)11 b -Fn(+)g Fk(\026)p Fn(\))p Fj(r)g(\001)g(\000)p Fn(\()p -Fj(r)g(\001)g Fk(\026)p Fj(r)p Fn(\),)28 b(but)c(w)n(e)g(w)n(an)n(ted)f -(to)h(do)g(this)g(for)g(the)g(w)n(eak)f(form.)35 b(F)-7 -b(or)24 b(this,)330 2898 y(w)n(e)33 b(in)n(tro)r(duce)h(some)f -(notation)g(that)h(is)g(used)g(in)g(quan)n(tum)g(\014eld)g(theory:)48 -b(for)33 b(di\013eren)n(tial)330 2998 y(op)r(erators,)i(w)n(e)h -(indicate)f(b)n(y)g(an)g(arro)n(w)f(placed)h(atop)g(of)g(it)h(whether)f -(it)h(shall)f(act)h(on)f(the)330 3109 y(ob)5 b(ject)26 -b(to)h(the)g(left)g(or)f(to)h(the)g(righ)n(t)f(of)g(it.)37 -b(Th)n(us,)27 b Fk(')2006 3052 y Fj( )-65 b(\000)2013 -3109 y(r)24 b(\001)2145 3052 y(\000)-65 b(!)2152 3109 -y(r)7 b Fk( )26 b Fn(=)d(\()p Fj(r)p Fk(')p Fn(\))18 -b Fj(\001)e Fn(\()p Fj(r)p Fk( )s Fn(\).)38 b(With)27 -b(this,)g(a)330 3209 y(simple)h(computation)f(sho)n(ws)g(that)413 -3479 y Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24 -b(=)f(\()p Fk(\025)c Fn(+)f Fk(\026)p Fn(\))1052 3337 -y Fg( )1118 3362 y(\022)1179 3428 y Fk(u)1227 3440 y -Fi(1)1179 3528 y Fk(u)1227 3540 y Fi(2)1264 3362 y Fg(\023)1348 -3479 y Fj(j)1394 3337 y Fg( )1460 3370 y Fj( )-65 b(\000)1477 -3428 y Fk(@)1543 3440 y Fi(1)1580 3370 y Fj(\000)g(!)1597 -3428 y Fk(@)1663 3440 y Fi(1)1783 3370 y Fj( )g(\000)1801 -3428 y Fk(@)1866 3440 y Fi(1)1904 3370 y Fj(\000)g(!)1921 -3428 y Fk(@)1987 3440 y Fi(2)1460 3488 y Fj( )g(\000)1477 -3546 y Fk(@)1543 3558 y Fi(2)1580 3488 y Fj(\000)g(!)1597 -3546 y Fk(@)1663 3558 y Fi(1)1783 3488 y Fj( )g(\000)1801 -3546 y Fk(@)1866 3558 y Fi(2)1904 3488 y Fj(\000)g(!)1921 -3546 y Fk(@)1987 3558 y Fi(2)2024 3337 y Fg(!)2113 3479 -y Fj(j)2159 3362 y Fg(\022)2220 3428 y Fk(v)2260 3440 -y Fi(1)2220 3528 y Fk(v)2260 3540 y Fi(2)2297 3362 y -Fg(\023)2359 3337 y(!)2424 3587 y Fi(\012)1361 3740 y -Fn(+)18 b Fk(\026)1508 3623 y Fg(\022\022)1630 3690 y -Fk(u)1678 3702 y Fi(1)1630 3789 y Fk(u)1678 3801 y Fi(2)1714 -3623 y Fg(\023)1799 3740 y Fj(j)1845 3648 y Fg(\020)1894 -3683 y Fj( )-65 b(\000)1911 3740 y Fk(@)1977 3752 y Fi(1)2015 -3683 y Fj(\000)g(!)2032 3740 y Fk(@)2098 3752 y Fi(1)2153 -3740 y Fn(+)2236 3683 y Fj( )g(\000)2253 3740 y Fk(@)2319 -3752 y Fi(2)2357 3683 y Fj(\000)g(!)2374 3740 y Fk(@)2440 -3752 y Fi(2)2477 3648 y Fg(\021)2540 3623 y(\022)2601 -3690 y Fn(1)83 b(0)2601 3789 y(0)g(1)2767 3623 y Fg(\023)2852 -3740 y Fj(j)2898 3623 y Fg(\022)2959 3690 y Fk(v)2999 -3702 y Fi(1)2959 3789 y Fk(v)2999 3801 y Fi(2)3036 3623 -y Fg(\023\023)3159 3823 y Fi(\012)3224 3740 y Fk(:)330 -3964 y Fn(The)28 b(sough)n(t)e(op)r(erator)g Fk(Q)h Fn(is)h(then)464 -4209 y Fk(Q)23 b Fn(=)f(\()p Fk(\025)d Fn(+)g Fk(\026)p -Fn(\))919 4067 y Fg( )984 4101 y Fj( )-65 b(\000)1002 -4159 y Fk(@)1067 4171 y Fi(1)1105 4101 y Fj(\000)g(!)1122 -4159 y Fk(@)1188 4171 y Fi(1)1308 4101 y Fj( )g(\000)1325 -4159 y Fk(@)1391 4171 y Fi(1)1428 4101 y Fj(\000)g(!)1445 -4159 y Fk(@)1511 4171 y Fi(2)984 4219 y Fj( )g(\000)1002 -4277 y Fk(@)1067 4289 y Fi(2)1105 4219 y Fj(\000)g(!)1122 -4277 y Fk(@)1188 4289 y Fi(1)1308 4219 y Fj( )g(\000)1325 -4277 y Fk(@)1391 4289 y Fi(2)1428 4219 y Fj(\000)g(!)1445 -4277 y Fk(@)1511 4289 y Fi(2)1548 4067 y Fg(!)1633 4209 -y Fn(+)18 b Fk(\026)1780 4067 y Fg( )1845 4101 y Fj( )-65 -b(\000)1862 4159 y Fk(@)1928 4171 y Fi(1)1966 4101 y -Fj(\000)g(!)1983 4159 y Fk(@)2049 4171 y Fi(1)2104 4159 -y Fn(+)2187 4101 y Fj( )g(\000)2204 4159 y Fk(@)2270 -4171 y Fi(2)2308 4101 y Fj(\000)g(!)2325 4159 y Fk(@)2391 -4171 y Fi(2)2781 4159 y Fn(0)2116 4277 y(0)2511 4219 -y Fj( )g(\000)2528 4277 y Fk(@)2594 4289 y Fi(1)2631 -4219 y Fj(\000)g(!)2648 4277 y Fk(@)2714 4289 y Fi(1)2770 -4277 y Fn(+)2853 4219 y Fj( )g(\000)2870 4277 y Fk(@)2936 -4289 y Fi(2)2973 4219 y Fj(\000)g(!)2990 4277 y Fk(@)3056 -4289 y Fi(2)3093 4067 y Fg(!)3173 4209 y Fk(;)330 4459 -y Fn(and)38 b Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q -Fn(\))42 b(=)e(\()p Fa(u)p Fj(j)p Fk(Q)p Fj(j)p Fa(v)q -Fn(\).)70 b(W)-7 b(e)38 b(demonstrate)f(the)i(fact)f(that)h -Fk(Q)e Fn(acts)h(to)g(b)r(oth)h(sides)e(b)n(y)330 4558 -y(placing)e(it)h(in)f(the)h(middle)g(of)g(the)f(scalar)f(pro)r(duct,)k -(just)e(as)f(in)g(the)h(bra-k)n(et)e(notation)h(of)330 -4658 y(quan)n(tum)28 b(ph)n(ysics.)455 4758 y(The)20 -b(adv)-5 b(an)n(tages)18 b(of)j(this)f(form)n(ulation)f(will)i(b)r -(ecome)f(clear)f(when)i(discussing)e(assem)n(bling)330 -4857 y(matrices)k(b)r(elo)n(w.)36 b(F)-7 b(or)23 b(no)n(w,)h(w)n(e)g -(remark)f(that)h(the)h(symmetry)e(of)h(the)h(w)n(eak)e(form)h(is)g -(equally)330 4957 y(apparen)n(t)i(from)i(the)g(form)f(of)h -Fk(Q)f Fn(as)g(w)n(ell)g(as)g(from)g(the)h(initial)g(de\014nition)g(of) -g Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\).)330 -5188 y Fb(4.2)112 b(The)38 b(Stok)m(es)g(equations)330 -5341 y Fn(F)-7 b(or)27 b(a)g(nonsymmetric)g(problem,)g(w)n(e)h(tak)n(e) -e(the)i(Stok)n(es)f(equations:)1543 5516 y Fj(\000)p -Fn(\001)p Fa(u)18 b Fn(+)g Fj(r)p Fk(p)23 b Fn(=)g(0)p -Fk(;)1748 5641 y Fn(div)28 b Fa(u)23 b Fn(=)g(0)p Fk(:)1809 -5919 y Fn(6)p eop -%%Page: 7 7 -7 6 bop 330 390 a Fn(W)-7 b(e)31 b(denote)f(b)n(y)h Fa(w)e -Fn(=)e Fj(f)p Fa(u)p Fk(;)14 b(p)p Fj(g)30 b Fn(the)h(en)n(tire)f -(solution)g(v)n(ector.)44 b(In)31 b(the)g(w)n(eak)f(form,)h(the)f(ab)r -(o)n(v)n(e)330 490 y(equations)d(read)620 645 y Fk(a)p -Fn(\()p Fa(u)p Fk(;)14 b(p)p Fn(;)g Fa(v)q Fk(;)g(q)s -Fn(\))24 b(=)f Fk(\027)5 b Fn(\()p Fj(r)p Fa(u)1337 657 -y Fi(1)1375 645 y Fk(;)14 b Fj(r)p Fa(v)1531 657 y Fi(1)1568 -645 y Fn(\))19 b(+)f Fk(\027)5 b Fn(\()p Fj(r)p Fa(u)1902 -657 y Fi(2)1940 645 y Fk(;)14 b Fj(r)p Fa(v)2096 657 -y Fi(2)2134 645 y Fn(\))19 b Fj(\000)f Fn(\()p Fk(p;)c -Fj(r)k(\001)h Fa(v)q Fn(\))g(+)f(\()p Fj(r)h(\001)g Fa(u)p -Fk(;)14 b(q)s Fn(\))p Fk(:)330 799 y Fn(Since)34 b(w)n(e)f(in)n -(tegrated)f(the)i(gradien)n(t)e(term)h(in)h(the)g(\014rst)f(equation)g -(b)n(y)g(parts,)h(but)g(not)g(the)330 899 y(div)n(ergence)c(term)h(in)h -(the)g(second)f(equation,)h(the)g(problem)e(is)i(no)n(w)f -(nonsymmetric.)48 b(If)31 b(w)n(e)330 999 y(w)n(ould)g(ha)n(v)n(e)g -(lik)n(ed,)h(w)n(e)f(could)h(ha)n(v)n(e)e(made)i(the)g(problem)f -(symmetric)g(again)g(b)n(y)g(m)n(ultiply-)330 1098 y(ing)k(the)g(en)n -(tire)f(second)g(equation)g(b)n(y)h Fj(\000)p Fn(1,)g(but)h(w)n(e)e -(don't)h(w)n(an)n(t)f(to)h(do)f(that)h(for)f(no)n(w)h(for)330 -1198 y(illustrational)27 b(purp)r(oses.)455 1298 y(Again,)g(w)n(e)h(in) -n(tro)r(duce)f(the)h(op)r(erator)e Fk(Q)i Fn(for)f(this)h(problem,)g -(whic)n(h)g(after)f(some)g(compu-)330 1397 y(tations)g(turns)h(out)f -(to)h(b)r(e)782 1658 y Fk(Q)23 b Fn(=)958 1467 y Fg(0)958 -1613 y(B)958 1666 y(@)1031 1549 y Fk(\027)5 b Fn(\()1109 -1491 y Fj( )-65 b(\000)1127 1549 y Fk(@)1192 1561 y Fi(1)1230 -1491 y Fj(\000)g(!)1247 1549 y Fk(@)1313 1561 y Fi(1)1368 -1549 y Fn(+)1451 1491 y Fj( )g(\000)1469 1549 y Fk(@)1534 -1561 y Fi(2)1572 1491 y Fj(\000)g(!)1589 1549 y Fk(@)1655 -1561 y Fi(2)1692 1549 y Fn(\))409 b(0)g Fj(\000)2649 -1491 y( )-65 b(\000)2665 1549 y Fk(@)2731 1561 y Fi(1)1357 -1667 y Fn(0)408 b Fk(\027)5 b Fn(\()1885 1609 y Fj( )-65 -b(\000)1903 1667 y Fk(@)1969 1679 y Fi(1)2006 1609 y -Fj(\000)g(!)2023 1667 y Fk(@)2089 1679 y Fi(1)2145 1667 -y Fn(+)2228 1609 y Fj( )g(\000)2245 1667 y Fk(@)2311 -1679 y Fi(2)2348 1609 y Fj(\000)g(!)2365 1667 y Fk(@)2431 -1679 y Fi(2)2468 1667 y Fn(\))84 b Fj(\000)2649 1609 -y( )-65 b(\000)2665 1667 y Fk(@)2731 1679 y Fi(2)1317 -1727 y Fj(\000)g(!)1335 1785 y Fk(@)1400 1797 y Fi(1)2094 -1727 y Fj(\000)g(!)2111 1785 y Fk(@)2177 1797 y Fi(2)2655 -1785 y Fn(0)2769 1467 y Fg(1)2769 1613 y(C)2769 1666 -y(A)2855 1658 y Fk(:)330 1936 y Fn(Again,)22 b(it)g(is)g(clear)e(from)h -(this)h(form)f(that)h(w)n(e)f(could)g(ha)n(v)n(e)f(made)i(the)g(op)r -(erator)d(symmetric)i(b)n(y)330 2035 y(m)n(ultiplying)i(the)g(last)g -(ro)n(w)f(b)n(y)g Fj(\000)p Fn(1.)35 b(Note)23 b(when)g(c)n(hec)n(king) -e(the)j(symmetry)e(of)h Fk(Q)g Fn(that)g(taking)330 2135 -y(the)j(transp)r(ose)e(of)h(suc)n(h)h(an)f(op)r(erator)e(means)i(rev)n -(erting)f(the)i(directions)f(of)g(the)h(arro)n(ws)d(o)n(v)n(er)330 -2235 y(the)k(op)r(erators,)e(and)i(exc)n(hanging)e(their)i(order.)36 -b(F)-7 b(or)26 b(example,)g(using)h(the)g(\014rst)g(term,)g(these)330 -2347 y(t)n(w)n(o)g(steps)g(are)834 2290 y Fj( )-65 b(\000)851 -2347 y Fk(@)917 2359 y Fi(1)954 2290 y Fj(\000)g(!)971 -2347 y Fk(@)1037 2359 y Fi(1)1097 2347 y Fj(!)1204 2290 -y(\000)g(!)1221 2347 y Fk(@)1287 2359 y Fi(1)1324 2290 -y Fj( )g(\000)1341 2347 y Fk(@)1407 2359 y Fi(1)1467 -2347 y Fj(!)1573 2290 y( )g(\000)1590 2347 y Fk(@)1656 -2359 y Fi(1)1694 2290 y Fj(\000)g(!)1711 2347 y Fk(@)1777 -2359 y Fi(1)1814 2347 y Fn(.)330 2617 y Fo(5)135 b(Assem)l(bling)37 -b(v)l(ector-v)-7 b(alued)38 b(problems:)57 b(The)36 b(simple)532 -2766 y(case)330 2948 y Fn(The)j(simple)g(case)f(in)h(assem)n(bling)e(v) -n(ector-v)-5 b(alued)37 b(problems)h(is)h(when)g(the)g(\(also)f(v)n -(ector-)330 3048 y(v)-5 b(alued\))31 b(shap)r(e)g(functions)g(are)e(c)n -(hosen)h(suc)n(h)h(that)g(only)f(one)g(comp)r(onen)n(t)h(in)g(the)g(v)n -(ector)e(is)330 3148 y(nonzero.)38 b(This)29 b(is)f(usually)h(the)f -(case,)g(if)i(w)n(e)e(c)n(ho)r(ose)f(the)i(shap)r(e)f(functions)h(to)g -(b)r(e)g(the)g(outer)330 3247 y(pro)r(duct)34 b(of)g(scalar)e(shap)r(e) -i(functions,)i(suc)n(h)d(as)g(indep)r(enden)n(t)i(bilinear)f(ansatz)f -(spaces)g(for)330 3347 y(eac)n(h)27 b(comp)r(onen)n(t)g(of)h(a)f -(\014nite)h(elemen)n(t)g(space.)455 3446 y(In)f(this)h(case,)f(eac)n(h) -g(shap)r(e)g(function)h(\010)1724 3458 y Fh(i)1780 3446 -y Fn(has)f(the)h(represen)n(tation)1194 3601 y(\010)1254 -3613 y Fh(i)1281 3601 y Fn(\()p Fa(x)p Fn(\))c(=)f(\(0)p -Fk(;)14 b(:)g(:)g(:)f(;)h Fn(0)p Fk(;)g(')1898 3613 y -Fh(i)1926 3601 y Fn(\()p Fa(x)p Fn(\))p Fk(;)g Fn(0)p -Fk(;)g(:)g(:)g(:)f(;)h Fn(0\))2377 3559 y Fh(T)2443 3601 -y Fk(;)330 3756 y Fn(where)27 b(\010)630 3768 y Fh(i)686 -3756 y Fn(is)g(the)h(v)n(ector-v)-5 b(alued)26 b(shap)r(e)i(function,)g -(and)f Fk(')2219 3768 y Fh(i)2275 3756 y Fn(its)h(only)f(non-zero)f -(comp)r(onen)n(t.)330 3856 y(Let)34 b(us)f(denote)g(b)n(y)h -Fk(c)p Fn(\()p Fk(i)p Fn(\))f(the)h(index)g(of)f(this)h(non-zero)d -(comp)r(onen)n(t,)k(then)f(\010)2853 3868 y Fh(i)2914 -3856 y Fn(can)f(also)g(b)r(e)330 3955 y(written)28 b(as)1425 -4110 y(\(\010)1517 4122 y Fh(i)1545 4110 y Fn(\()p Fa(x)p -Fn(\)\))1692 4135 y Fh(l)1740 4110 y Fn(=)23 b Fk(')1882 -4122 y Fh(i)1910 4110 y Fn(\()p Fa(x)p Fn(\))p Fk(\016)2061 -4125 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p Fh(;l)2212 4110 -y Fk(;)330 4265 y Fn(with)28 b(the)g(Kronec)n(k)n(er)d(delta)i -(function)i Fk(\016)1627 4277 y Fh(j)s(k)1698 4265 y -Fn(.)455 4365 y(With)f(this)g(simple)g(form,)f(the)h(cell)g(matrix)f -(on)g(cell)h Fk(K)33 b Fn(has)27 b(a)g(simple)h(form:)751 -4519 y Fk(A)813 4485 y Fh(K)813 4540 y(ij)900 4519 y -Fn(=)22 b Fk(a)1031 4531 y Fh(K)1095 4519 y Fn(\(\010)1187 -4531 y Fh(i)1215 4519 y Fk(;)14 b Fn(\010)1312 4531 y -Fh(j)1347 4519 y Fn(\))23 b(=)g(\(\010)1582 4531 y Fh(i)1633 -4519 y Fj(j)g Fk(Q)g Fj(j)g Fn(\010)1874 4531 y Fh(j)1909 -4519 y Fn(\))1941 4547 y Fh(K)2028 4519 y Fn(=)2116 4452 -y Fg(\000)2154 4519 y Fk(')2208 4531 y Fh(i)2259 4519 -y Fj(j)g Fk(Q)2371 4534 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p -Fh(;c)p Fi(\()p Fh(j)s Fi(\))2635 4519 y Fj(j)g Fk(')2735 -4531 y Fh(j)2771 4452 y Fg(\001)2809 4553 y Fh(K)2886 -4519 y Fk(:)330 4674 y Fn(Th)n(us,)35 b(in)e(assem)n(bling)f(the)i(lo)r -(cal)f(cell)g(matrices,)h(w)n(e)f(only)g(ha)n(v)n(e)f(to)h(determine)h -(the)g(single)330 4774 y(comp)r(onen)n(ts)d(in)h(whic)n(h)g(the)g(t)n -(w)n(o)f(shap)r(e)h(functions)g(are)e(non-zero,)i(and)f(pic)n(k)h(one)f -(elemen)n(t)330 4873 y(from)h(the)g(matrix)g Fk(Q)f Fn(to)h(assem)n -(ble)f(eac)n(h)g(en)n(try)h(of)g(the)g(cell)g(matrix)g(with)g(the)g -(help)h(of)f(the)330 4973 y(v)-5 b(alues)29 b(of)f(the)i(functions)f -Fk(')1232 4985 y Fh(i)1289 4973 y Fn(at)g(the)g(quadrature)e(p)r(oin)n -(ts.)41 b(Here,)29 b(it)g(comes)g(handy)f(that)h(w)n(e)330 -5073 y(ha)n(v)n(e)k(written)i(the)f(op)r(erator)f(as)h(a)g(matrix)g(op) -r(erator)e Fk(Q)p Fn(,)k(since)e(this)h(mak)n(es)e(it)i(v)n(ery)e -(clear)330 5172 y(ho)n(w)27 b(shap)r(e)g(functions)h -Fk(i)f Fn(and)g Fk(j)32 b Fn(couple:)37 b(if)28 b Fk(Q)1810 -5187 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p Fh(;c)p Fi(\()p -Fh(j)s Fi(\))2078 5172 y Fn(is)g(zero,)e(then)i(they)g(do)f(not)g -(couple)g(at)330 5272 y(all)j(for)g(this)h(op)r(erator.)45 -b(Otherwise,)30 b(it)h(is)g(easily)f(visible)g(whic)n(h)h(deriv)-5 -b(ativ)n(e)30 b(acts)g(on)g(whic)n(h)330 5372 y(shap)r(e)d(function)i -(for)e(this)h(com)n(bination)e(of)i(shap)r(e)f(functions.)455 -5471 y(In)21 b Fm(deal.II)p Fn(,)d(these)j(t)n(w)n(o)g(actions)f(men)n -(tioned)h(ab)r(o)n(v)n(e)f(\(getting)h(the)h(non-zero)d(comp)r(onen)n -(t)330 5571 y(of)29 b(a)f(shap)r(e)h(function,)h(and)f(the)g(v)-5 -b(alue)29 b(of)g(this)g(comp)r(onen)n(t)g(at)g(a)f(giv)n(en)g -(quadrature)g(p)r(oin)n(t\))330 5670 y(are)f(done)g(as)g(follo)n(ws:) -1809 5919 y(7)p eop -%%Page: 8 8 -8 7 bop 455 390 a Fj(\017)41 b Fl(Determining)27 b(the)g(non-zer)l(o)f -(c)l(omp)l(onent:)41 b Fn(Giv)n(en)25 b(the)g(shap)r(e)f(function)h -(with)g(n)n(um)n(b)r(er)538 490 y Fk(i)30 b Fn(\(i.e.)48 -b(its)31 b(index)g(lo)r(cal)f(to)h(the)h(degrees)d(of)i(freedom)g(on)f -(the)i(presen)n(t)e(cell\),)i(its)f(only)538 589 y(non-zero)25 -b(comp)r(onen)n(t)j(is)f(obtained)h(b)n(y)f(the)h(function)g(call)625 -789 y Fm(const)41 b(unsigned)g(int)h(nonzero_componen)o(t_)o(i)755 -888 y(=)i(fe.system_to_co)o(mpo)o(ne)o(nt_)o(in)o(de)o(x\(i)o(\).)o -(fir)o(st)o(;)538 1088 y Fn(The)20 b Fm(FiniteElement::sy)o(st)o(em)p -1628 1088 27 4 v 25 w(to)p 1741 1088 V 31 w(component)p -2168 1088 V 27 w(index)f Fn(returns)h(a)g(pair)g(of)h(n)n(um)n(b)r(ers) -538 1187 y(for)38 b(eac)n(h)g(index)h(0)i Fj(\024)g Fk(i)h(<)f(N)1542 -1199 y Fh(K)1606 1187 y Fn(,)g(the)f(\014rst)e(of)h(whic)n(h)g(denotes) -f(the)h(only)g(non-zero)538 1287 y(comp)r(onen)n(t)21 -b(of)g(the)g(shap)r(e)h(function)f Fk(i)p Fn(.)35 b(Since)21 -b(for)g(the)h(case)e(describ)r(ed)h(in)h(this)f(section,)538 -1386 y(the)f(individual)g(comp)r(onen)n(ts)g(of)g(the)g(v)n(ector-v)-5 -b(alued)18 b(\014nite)j(elemen)n(t)f(are)f(indep)r(enden)n(t,)538 -1486 y(w)n(e)35 b(consider)g(eac)n(h)h(comp)r(onen)n(t)g(as)f(a)h(set)g -(of)g(scalar)e(shap)r(e)i(functions;)41 b(the)c(second)538 -1586 y(n)n(um)n(b)r(er)d(of)h(the)g(pair)g(returned)f(b)n(y)h(the)g -(function)g(then)h(denotes)f(the)g(index)g(of)g(the)538 -1685 y(shap)r(e)18 b(function)i Fk(')1133 1697 y Fh(i)1180 -1685 y Fn(within)g(the)f(shap)r(e)g(functions)h(corresp)r(onding)d(to)i -(this)g(comp)r(onen)n(t.)538 1818 y(If,)40 b(for)e(example,)i(our)d -(\014nite)h(elemen)n(t)g(in)g(use)g(is)f(a)h Fk(Q)2352 -1788 y Fi(2)2389 1818 y Fk(=Q)2497 1788 y Fi(2)2533 1818 -y Fk(=Q)2641 1788 y Fi(1)2715 1818 y Fn(com)n(bination)f(\(for)538 -1918 y(example)30 b(for)h(2d)g(\015o)n(w)g(computations:)44 -b(bi-quadratic)30 b(ansatz)h(functions)g(for)g(the)h(v)n(e-)538 -2017 y(lo)r(cities,)25 b(bi-linear)g(for)g(the)h(pressure\),)f(then)h -(w)n(e)f(ha)n(v)n(e)f(a)h(total)g(of)h(22)e(shap)r(e)i(functions)538 -2117 y(\(9+9+4\).)34 b(F)-7 b(or)25 b(eac)n(h)f(0)f Fj(\024)g -Fk(i)f(<)h Fn(22,)i(the)g(\014rst)h(part)e(of)i(the)f(pair)g(returned)g -(b)n(y)g(the)h(func-)538 2217 y(tion)31 b(describ)r(ed)f(ab)r(o)n(v)n -(e,)h Fk(c)p Fn(\()p Fk(i)p Fn(\),)h(ma)n(y)e(then)i(either)e(b)r(e)i -(0,)f(1,)h(or)e(2,)h(denoting)g(the)g(three)538 2316 -y(p)r(ossible)i(comp)r(onen)n(ts)h(of)g(the)h(\014nite)g(elemen)n(t.)57 -b(If)35 b Fk(c)p Fn(\()p Fk(i)p Fn(\))f(is)g(either)g(0)g(or)f(1,)j -(then)f(the)538 2416 y(comp)r(onen)n(t)30 b(to)h(whic)n(h)g(the)h(shap) -r(e)f(function)h Fk(i)e Fn(b)r(elongs)h(is)g(a)g(bi-quadratic)f(one,)h -(and)538 2516 y(the)24 b(second)f(index)i(is)f(b)r(et)n(w)n(een)g(0)f -(and)h(8)g(\(inclusiv)n(e\))g(as)f(the)i Fk(Q)2550 2485 -y Fi(2)2611 2516 y Fn(elemen)n(t)f(has)g(9)f(shap)r(e)538 -2615 y(functions.)37 b(If)28 b Fk(c)p Fn(\()p Fk(i)p -Fn(\))23 b(==)f(2,)27 b(then)i(the)e(second)g(part)h(is)f(b)r(et)n(w)n -(een)h(0)f(and)g(3)g(\(inclusiv)n(e\).)455 2781 y Fj(\017)41 -b Fl(Getting)f(the)g(value)h(of)f Fk(')1380 2793 y Fh(i)1408 -2781 y Fn(\()p Fa(x)1490 2793 y Fh(q)1528 2781 y Fn(\))p -Fl(:)65 b Fn(Since)39 b(only)f(one)h(comp)r(onen)n(t)g(of)f(\010)2836 -2793 y Fh(i)2903 2781 y Fn(is)h(non-zero,)538 2881 y(w)n(e)30 -b(can)h(use)f(the)i(same)e(function)h(as)g(b)r(efore,)g(i.e.)47 -b Fm(FEValues::shape)p 2851 2881 V 25 w(value\(i,q\))p -Fn(,)538 2980 y(whic)n(h)36 b(in)h(the)g(scalar)e(case)h(returned)h -(the)g(v)-5 b(alue)36 b(of)h(shap)r(e)f(function)i Fk(i)e -Fn(at)h(quadra-)538 3080 y(ture)23 b(p)r(oin)n(t)g Fk(q)s -Fn(.)35 b(Lik)n(ewise,)24 b(the)f Fm(FEValues::shape)p -2176 3080 V 25 w(grad\(i,q\))d Fn(function)j(returns)g(the)538 -3180 y(gradien)n(t)j(of)i(this)f(particular)g(comp)r(onen)n(t.)538 -3313 y(In)h(other)f(w)n(ords,)g(whether)h(the)h(\014nite)f(elemen)n(t)g -(is)g(scalar)f(or)g(not,)h(the)h(t)n(w)n(o)e(indicated)538 -3412 y(functions)22 b(return)f(v)-5 b(alue)21 b(and)h(gradien)n(t)e(of) -i(the)g(only)f(non-zero)f(comp)r(onen)n(t)h(of)h(a)f(shap)r(e)538 -3512 y(function.)36 b(If)23 b(the)h(\014nite)f(elemen)n(t)h(is)f -(scalar,)f(then)i(it)f(is)h(of)f(course)f(clear)g(whic)n(h)h(comp)r(o-) -538 3611 y(nen)n(t)k(this)g(is)f(\(since)h(there)g Fk(c)p -Fn(\()p Fk(i)p Fn(\))c(==)f(0)k(for)h(all)f(v)-5 b(alid)27 -b(indices)g Fk(i)p Fn(\),)g(in)g(the)g(v)n(ector-v)-5 -b(alued)538 3711 y(case,)26 b(it)i(is)g(comp)r(onen)n(t)f -Fk(c)p Fn(\()p Fk(i)p Fn(\).)330 3943 y Fb(5.1)112 b(The)38 -b(elastic)g(equations)330 4097 y Fn(With)29 b(this,)g(and)g(the)f -(de\014nition)h(of)g(the)f(\\bi-directional")f(op)r(erator)g -Fk(Q)h Fn(in)g(Section)h(4.1,)f(the)330 4196 y(lo)r(cal)d(matrix)g -(assem)n(bly)f(function)j(for)e(the)g(elastic)h(equations)e(w)n(ould)h -(then)h(read)f(as)g(follo)n(ws:)417 4362 y Fm(for)43 -b(\(unsigned)c(int)k(i=0;)f(i)22 b Fn(class.)330 2416 y Fb(5.2)112 -b(The)38 b(Stok)m(es)g(equations)330 2569 y Fn(F)-7 b(or)27 -b(the)i(Stok)n(es)e(equation,)h(things)f(are)g(sligh)n(tly)h(more)f -(complicated)h(since)g(the)g(three)g(com-)330 2669 y(p)r(onen)n(ts)23 -b(denote)g(di\013eren)n(t)g(quan)n(tities,)h(and)f(the)g(op)r(erator)f -Fk(Q)h Fn(do)r(es)f(not)i(ha)n(v)n(e)d(suc)n(h)i(a)g(simple)330 -2768 y(form,)29 b(but)g(the)h(case)e(is)h(still)g(simple)g(enough.)40 -b(W)-7 b(e)29 b(presen)n(t)g(its)g(generalization)e(to)h(an)h(arbi-)330 -2868 y(trary)c(n)n(um)n(b)r(er)g(of)h(space)f(dimensions,)h(i.e.)36 -b(assume)25 b(that)h(there)g(are)f Fm(dim)f Fn(v)n(elo)r(cit)n(y)h(v)-5 -b(ariables)330 2968 y(and)27 b(one)h(scalar)e(pressure:)417 -3134 y Fm(for)43 b(\(unsigned)c(int)k(i=0;)f(i quadrature_formula; - FEValues<2> fe_values (fe, quadrature_formula, - UpdateFlags(update_values | - update_gradients | - update_JxW_values)); -\end{verbatim} -In practice, you may want to use a different set of fields to be updated on -each cell. For example if you do not need the values of shape functions on a -cell, you may omit \texttt{update\_values} from the list. Also note that by -default a bi- or tri-linear (depending on space dimension) mapping between -unit and real cell is used. Other mappings are possible, for example quadratic -ones, or a mapping that makes use of the fact that in many cases cells are -actually rectangular, rather than arbitrary quadrilaterals; in order to use -them, another constructor of the \texttt{FEValues} class can be used, which -takes a mapping object as first argument, before the other arguments listed -above. - -Next we define abbreviations for the values of $N_K$ and $N_q$: -\begin{verbatim} - const unsigned int - dofs_per_cell = fe.dofs_per_cell, - n_q_points = quadrature_formula.n_quadrature_points; -\end{verbatim} -Then have an object to store the matrix $\hat A^K$, which is of size -$N_K\times N_K$: -\begin{verbatim} - FullMatrix cell_matrix (dofs_per_cell, dofs_per_cell); -\end{verbatim} -And an object representing the set of global indices of degrees of freedom, -previously denoted by $I_K$, that have support on the present cell, i.e. those -degrees of freedom local to the present cell: -\begin{verbatim} - std::vector local_dof_indices (dofs_per_cell); -\end{verbatim} -The next step is then to loop over all cells: -\begin{verbatim} - typename DoFHandler::active_cell_iterator - cell = dof_handler.begin_active(), - endc = dof_handler.end(); - for (; cell!=endc; ++cell) - { -\end{verbatim} -On each cell, first tell the \texttt{FEValues} object to compute the values of -the various fields for this particular cell, and do not forget to reset the -local matrix $\hat A^K$ to zero before adding it up: -\begin{verbatim} - fe_values.reinit (cell); - cell_matrix.clear (); -\end{verbatim} -Now comes the main part, assembling the local matrix $\hat A^K$. It consists -of a loop over all indices $0\le i,j \le N_K$ and all quadrature points $0\le -q\le N_q$, and summing up the contributions. As this is what we will discuss -in detail later on, we only denote it here by an ellipse: -\begin{verbatim} - for (unsigned int i=0; iget_dof_indices (local_dof_indices); - - for (unsigned int i=0; i}, which -represents a tensor of rank 1 in \texttt{dim} space dimensions. - -Assembling matrices for scalar problems is also shown from a practical -perspective in many of the example programs of \texttt{deal.II}, where it is -also demonstrated how to do this for the right hand side vectors. Thus, scalar -problems are not too interesting, and we now turn to vector-valued problems. - - - -\section{Vector-valued problems} - -Since we need some problems at which we will explain assembling the matrix for -the vector-valued case, we now briefly introduce two simple equations. The -first are the Lam\'e equations of elasticity, which are taken for the symmetric -case, then we briefly introduce the Stokes equations as a nonsymmetric problem. - -\subsection{The elastic equations} -\label{sec:elastic} - -As first example for the methods we are going to discuss for vector-valued -problems, we consider the elastic Lam\'e equations for isotropic materials, -which read in strong form: -$$ - - - \nabla (\lambda+\mu) (\div \vec u) - - - (\nabla \cdot \mu \nabla) \vec u - = - \vec f. -$$ -These equations describe the three-dimensional deformation $\vec u$ of an -elastic body under a body force $\vec f$. The respective bilinear form -associated with this operator is then -$$ - a(\vec u, \vec v) = - \left( - (\lambda+\mu) \div \vec u, \div \vec v - \right)_\Omega - + - \sum_k - \left( - \mu \nabla u_k, \nabla v_k - \right)_\Omega, -$$ -or as a sum over components: -$$ - a(\vec u, \vec v) = - \sum_{k,l} - \left( - (\lambda+\mu) \partial_l u_l, \partial_k v_k - \right)_\Omega - + - \sum_{k,l} - \left( - \mu \partial_l u_k, \partial_l v_k - \right)_\Omega. -$$ - -When assembling matrices, it is advantageous to write the weak form -(i.e. after integration by parts) as a kind of operator. This is since matrix -elements after discretization are defined as -\begin{gather*} - A_{ij} = a(\varphi_j,\varphi_i)_\Omega, -\end{gather*} -where $\varphi_i,\varphi_j$ are two vector-valued trial functions, and it -would be nice if we could write the bilinear form $a(\cdot,\cdot)$ as a kind -of scalar product $(\varphi_i, Q \varphi_j)$, where $Q$ is a differential -operator. This is trivial if we take $Q$ as the operator of the strong form, -$Q=-\nabla (\lambda+\mu) \div - (\nabla \cdot \mu \nabla)$, but we wanted to -do this for the weak form. For this, we introduce some notation that is used -in quantum field theory: for differential operators, we indicate by an arrow -placed atop of it whether it shall act on the object to the left or to the -right of it. Thus, -$\varphi \overleftarrow\nabla \cdot \overrightarrow\nabla \psi -=(\nabla\varphi)\cdot(\nabla\psi)$. With this, a simple computation shows -that -\begin{multline*} - a(\vec u,\vec v) - = - (\lambda+\mu) - \left( - \begin{pmatrix} - u_1 \\ u_2 - \end{pmatrix} - \mid - \begin{pmatrix} - \leftpartial_1 \rightpartial_1 & - \leftpartial_1 \rightpartial_2 \\ - \leftpartial_2 \rightpartial_1 & - \leftpartial_2 \rightpartial_2 - \end{pmatrix} - \mid - \begin{pmatrix} - v_1 \\ v_2 - \end{pmatrix} - \right)_\Omega - \\ - + - \mu - \left( - \begin{pmatrix} - u_1 \\ u_2 - \end{pmatrix} - \mid - \left( - \leftpartial_1 \rightpartial_1 + - \leftpartial_2 \rightpartial_2 - \right) - \begin{pmatrix} - 1 & 0 \\ - 0 & 1 - \end{pmatrix} - \mid - \begin{pmatrix} - v_1 \\ v_2 - \end{pmatrix} - \right)_\Omega. -\end{multline*} -The sought operator $Q$ is then -\begin{gather*} - Q - = - (\lambda+\mu) - \begin{pmatrix} - \leftpartial_1 \rightpartial_1 & - \leftpartial_1 \rightpartial_2 \\ - \leftpartial_2 \rightpartial_1 & - \leftpartial_2 \rightpartial_2 - \end{pmatrix} - + - \mu - \begin{pmatrix} - \leftpartial_1 \rightpartial_1 + - \leftpartial_2 \rightpartial_2 & 0 \\ - 0 & \leftpartial_1 \rightpartial_1 + - \leftpartial_2 \rightpartial_2 - \end{pmatrix}, -\end{gather*} -and $a(\vec u,\vec v)=(\vec u | Q | \vec v)$. We demonstrate the fact that $Q$ -acts to both sides by placing it in the middle of the scalar product, just as -in the bra-ket notation of quantum physics. - -The advantages of this formulation will become clear when discussing -assembling matrices below. For now, we remark that the symmetry of the weak -form is equally apparent from the form of $Q$ as well as from the initial -definition of $a(\cdot,\cdot)$. - - - -\subsection{The Stokes equations} -\label{sec:stokes} - -For a nonsymmetric problem, we take the Stokes equations: -\begin{align*} - -\Delta \vec u + \nabla p &= 0, - \\ - \text{div } \vec u &= 0. -\end{align*} -We denote by $\vec w=\{\vec u,p\}$ the entire solution vector. In the weak -form, the above equations read -\begin{gather*} - a(\vec u,p; \vec v, q) - = - \nu(\nabla \vec u_1, \nabla \vec v_1) - +\nu(\nabla \vec u_2, \nabla \vec v_2) - - (p, \nabla\cdot \vec v) - + (\nabla\cdot\vec u, q). -\end{gather*} -Since we integrated the gradient term in the first equation by parts, but not -the divergence term in the second equation, the problem is now -nonsymmetric. If we would have liked, we could have made the problem symmetric -again by multiplying the entire second equation by $-1$, but we don't want to -do that for now for illustrational purposes. - -Again, we introduce the operator $Q$ for this problem, which after some -computations turns out to be -\begin{gather*} - Q - = - \begin{pmatrix} - \nu(\leftpartial_1 \rightpartial_1 + - \leftpartial_2 \rightpartial_2) & 0 & -\leftpartial_1 \\ - 0 & \nu(\leftpartial_1 \rightpartial_1 + - \leftpartial_2 \rightpartial_2) & -\leftpartial_2 \\ - \rightpartial_1 & \rightpartial_2 & 0 - \end{pmatrix}. -\end{gather*} -Again, it is clear from this form that we could have made the operator -symmetric by multiplying the last row by $-1$. Note when checking the symmetry -of $Q$ that taking the transpose of such an operator means reverting the -directions of the arrows over the operators, and exchanging their order. -For example, using the first term, these two steps are -$\leftpartial_1 \rightpartial_1 \rightarrow \rightpartial_1 \leftpartial_1 -\rightarrow \leftpartial_1 \rightpartial_1$. - - -\section{Assembling vector-valued problems: The simple case} - -The simple case in assembling vector-valued problems is when the (also -vector-valued) shape functions are chosen such that only one component in the -vector is nonzero. This is usually the case, if we choose the shape functions -to be the outer product of scalar shape functions, such as independent -bilinear ansatz spaces for each component of a finite element space. - -In this case, each shape function $\Phi_i$ has the representation -\begin{gather*} - \Phi_i(\vec x) = - \left( 0, \dots, 0, \varphi_i(\vec x), 0, \ldots, 0\right)^T, -\end{gather*} -where $\Phi_i$ is the vector-valued shape function, and $\varphi_i$ its -only non-zero component. Let us denote by $c(i)$ the index of this non-zero -component, then $\Phi_i$ can also be written as -\begin{gather*} - \left(\Phi_i(\vec x)\right)_l - = - \varphi_i(\vec x) \delta_{c(i),l}, -\end{gather*} -with the Kronecker delta function $\delta_{jk}$. - -With this simple form, the cell matrix on cell $K$ has a simple form: -\begin{gather*} - A^K_{ij} - = - a_K(\Phi_i,\Phi_j) - = - \left(\Phi_i \mid Q \mid \Phi_j \right)_K - = - \left(\varphi_i \mid Q_{c(i),c(j)} \mid \varphi_j \right)_K. -\end{gather*} -Thus, in assembling the local cell matrices, we only have to determine the -single components in which the two shape functions are non-zero, and -pick one element from the matrix $Q$ to assemble each entry of the cell -matrix with the help of the values of the functions $\varphi_i$ at the -quadrature points. Here, it comes handy that we have written the operator as a -matrix operator $Q$, since this makes it very clear how shape functions $i$ -and $j$ couple: if $Q_{c(i),c(j)}$ is zero, then they do not couple at all for -this operator. Otherwise, it is easily visible which derivative acts on which -shape function for this combination of shape functions. - -In \texttt{deal.II}, these two actions mentioned above (getting the non-zero -component of a shape function, and the value of this component at a given -quadrature point) are done as follows: -\begin{itemize} -\item \textit{Determining the non-zero component:} Given the shape function - with number $i$ (i.e. its index local to the degrees of freedom on the - present cell), its only non-zero component is obtained by the function call -\begin{verbatim} - const unsigned int nonzero_component_i - = fe.system_to_component_index(i).first; -\end{verbatim} - The \texttt{FiniteElement::system\_to\_component\_index} returns a pair of - numbers for each index $0\le i < N_K$, the first of which denotes the only - non-zero component of the shape function $i$. Since for the case described - in this section, the individual components of the vector-valued finite - element are independent, we consider each component as a set of scalar shape - functions; the second number of the pair returned by the function then - denotes the index of the shape function $\varphi_i$ within the shape - functions corresponding to this component. - - If, for example, our finite element in use is a $Q^2/Q^2/Q^1$ combination - (for example for 2d flow computations: bi-quadratic ansatz functions for the - velocities, bi-linear for the pressure), then we have a total of 22 shape - functions (9+9+4). For each $0\le i < 22$, the first part of the pair - returned by the function described above, $c(i)$, may then either be 0, 1, - or 2, denoting the three possible components of the finite element. If - $c(i)$ is either 0 or 1, then the component to which the shape function $i$ - belongs is a bi-quadratic one, and the second index is between $0$ and $8$ - (inclusive) as the $Q^2$ element has 9 shape functions. If $c(i)==2$, then - the second part is between 0 and 3 (inclusive). - -\item \textit{Getting the value of $\varphi_i(\vec x_q)$:} Since only one - component of $\Phi_i$ is non-zero, we can use the same function as before, - i.e. \texttt{FEValues::shape\_value(i,q)}, which in the scalar case returned - the value of shape function $i$ at quadrature point $q$. Likewise, the - \texttt{FEValues::shape\_grad(i,q)} function returns the gradient of this - particular component. - - In other words, whether the finite element is scalar or not, the two - indicated functions return value and gradient of the only non-zero component - of a shape function. If the finite element is scalar, then it is of course - clear which component this is (since there $c(i)==0$ for all valid indices - $i$), in the vector-valued case, it is component $c(i)$. -\end{itemize} - - -\subsection{The elastic equations} -\label{sec:elastic-simple} - -With this, and the definition of the ``bi-directional'' operator $Q$ in -Section~\ref{sec:elastic}, the local matrix assembly function for the elastic -equations would then read as follows: -\begin{verbatim} - for (unsigned int i=0; i} class. - - -\subsection{The Stokes equations} -\label{sec:stokes-simple} - -For the Stokes equation, things are slightly more complicated since the three -components denote different quantities, and the operator $Q$ does not have -such a simple form, but the case is still simple enough. We present its -generalization to an arbitrary number of space dimensions, i.e. assume that -there are \texttt{dim} velocity variables and one scalar pressure: -\begin{verbatim} - for (unsigned int i=0; i) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -1200 1800 m -gs 1 -1 sc (CellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -2400 3000 m -gs 1 -1 sc (DoFObjectAccessor<1,1>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -2400 4200 m -gs 1 -1 sc (DoFCellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/1d-dof.fig b/deal.II/doc/reports/class-hierarchies/1d-dof.fig deleted file mode 100644 index 6d1e056206..0000000000 --- a/deal.II/doc/reports/class-hierarchies/1d-dof.fig +++ /dev/null @@ -1,28 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 2400 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3075 2400 3900 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 2250 1875 2250 1500 150 1500 150 1875 2250 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 1875 2400 2700 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3750 4275 3750 3900 1050 3900 1050 4275 3750 4275 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3950 3075 850 3075 850 2700 3950 2700 3950 3075 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 1-dimensional Case, Part 2\001 -4 1 0 0 0 0 20 0.0000 4 195 1995 4800 1800 DoFAccessor<1>\001 -4 1 0 0 0 0 20 0.0000 4 195 1950 1200 1800 CellAccessor<1>\001 -4 1 0 0 0 0 20 0.0000 4 255 2940 2400 3000 DoFObjectAccessor<1,1>\001 -4 1 0 0 0 0 20 0.0000 4 195 2460 2400 4200 DoFCellAccessor<1>\001 diff --git a/deal.II/doc/reports/class-hierarchies/1d-dof.jpg b/deal.II/doc/reports/class-hierarchies/1d-dof.jpg deleted file mode 100644 index d443b95dacc56d1bd2d0d68b263b4b54a4e0b64b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15493 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 diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.eps b/deal.II/doc/reports/class-hierarchies/1d-tria.eps deleted file mode 100644 index 5670f0c8ea..0000000000 --- a/deal.II/doc/reports/class-hierarchies/1d-tria.eps +++ /dev/null @@ -1,170 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: 1d-tria.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Dec 19 15:49:56 1999 -%%For: wolf@adaptive (Wolfgang Bangerth) -%%Orientation: Portrait -%%BoundingBox: 0 0 513 239 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --9.0 258.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5287 m -1000 -1000 l 9692 -1000 l 9692 5287 l cp clip - 0.06000 0.06000 sc -% Polyline -7.500 slw -n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat - 3600 1875 5895 1875 105 arcto 4 {pop} repeat - 6000 1875 6000 1605 105 arcto 4 {pop} repeat - 6000 1500 3705 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -15.000 slw -n 4800 1875 m 1800 2700 l gs col0 s gr -% Polyline -n 1800 3075 m 1800 3900 l gs col0 s gr -% Polyline -7.500 slw -n 280 2700 m 175 2700 175 2970 105 arcto 4 {pop} repeat - 175 3075 3345 3075 105 arcto 4 {pop} repeat - 3450 3075 3450 2805 105 arcto 4 {pop} repeat - 3450 2700 280 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 755 3900 m 650 3900 650 4170 105 arcto 4 {pop} repeat - 650 4275 2845 4275 105 arcto 4 {pop} repeat - 2950 4275 2950 4005 105 arcto 4 {pop} repeat - 2950 3900 755 3900 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -4800 1800 m -gs 1 -1 sc (TriaAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 375.00 scf sf -4800 600 m -gs 1 -1 sc (Class Hierarchy for the 1-dimensional Case, Part 1) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -1800 3000 m -gs 1 -1 sc (TriaObjectAccessor<1,1>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -1800 4200 m -gs 1 -1 sc (CellAccessor<1>) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.fig b/deal.II/doc/reports/class-hierarchies/1d-tria.fig deleted file mode 100644 index 3f46e3c583..0000000000 --- a/deal.II/doc/reports/class-hierarchies/1d-tria.fig +++ /dev/null @@ -1,23 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 1800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1800 3075 1800 3900 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3450 3075 175 3075 175 2700 3450 2700 3450 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 2950 4275 650 4275 650 3900 2950 3900 2950 4275 -4 1 0 0 0 0 20 0.0000 4 195 1980 4800 1800 TriaAccessor<1>\001 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 1-dimensional Case, Part 1\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 1800 3000 TriaObjectAccessor<1,1>\001 -4 1 0 0 0 0 20 0.0000 4 195 1950 1800 4200 CellAccessor<1>\001 diff --git a/deal.II/doc/reports/class-hierarchies/1d-tria.jpg b/deal.II/doc/reports/class-hierarchies/1d-tria.jpg deleted file mode 100644 index c074ca3b8c4118b5bee18c65f6b2f171b1b4b821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12894 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 HH~l{V>Dn(x diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.eps b/deal.II/doc/reports/class-hierarchies/2d-dof.eps deleted file mode 100644 index 6d185a71a1..0000000000 --- a/deal.II/doc/reports/class-hierarchies/2d-dof.eps +++ /dev/null @@ -1,203 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: 2d-dof.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Dec 19 16:24:04 1999 -%%For: wolf@adaptive (Wolfgang Bangerth) -%%Orientation: Portrait -%%BoundingBox: 0 0 560 239 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --8.0 258.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5287 m -1000 -1000 l 10462 -1000 l 10462 5287 l cp clip - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 6825 3075 m 6825 3900 l gs col0 s gr -% Polyline -7.500 slw -n 5380 2700 m 5275 2700 5275 2970 105 arcto 4 {pop} repeat - 5275 3075 8270 3075 105 arcto 4 {pop} repeat - 8375 3075 8375 2805 105 arcto 4 {pop} repeat - 8375 2700 5380 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 5580 3900 m 5475 3900 5475 4170 105 arcto 4 {pop} repeat - 5475 4275 8070 4275 105 arcto 4 {pop} repeat - 8175 4275 8175 4005 105 arcto 4 {pop} repeat - 8175 3900 5580 3900 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -6825 3000 m -gs 1 -1 sc (DoFObjectAccessor<2,2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -6825 4200 m -gs 1 -1 sc (DoFCellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1480 2700 m 1375 2700 1375 2970 105 arcto 4 {pop} repeat - 1375 3075 4370 3075 105 arcto 4 {pop} repeat - 4475 3075 4475 2805 105 arcto 4 {pop} repeat - 4475 2700 1480 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -2925 3000 m -gs 1 -1 sc (DoFObjectAccessor<1,2>) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat - 3600 1875 5895 1875 105 arcto 4 {pop} repeat - 6000 1875 6000 1605 105 arcto 4 {pop} repeat - 6000 1500 3705 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 7455 1500 m 7350 1500 7350 1770 105 arcto 4 {pop} repeat - 7350 1875 9345 1875 105 arcto 4 {pop} repeat - 9450 1875 9450 1605 105 arcto 4 {pop} repeat - 9450 1500 7455 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 255 1500 m 150 1500 150 1770 105 arcto 4 {pop} repeat - 150 1875 3045 1875 105 arcto 4 {pop} repeat - 3150 1875 3150 1605 105 arcto 4 {pop} repeat - 3150 1500 255 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -15.000 slw -n 4800 1875 m 2800 2700 l gs col0 s gr -% Polyline -n 1200 1875 m 2800 2700 l gs col0 s gr -% Polyline -n 4800 1875 m 6800 2700 l gs col0 s gr -% Polyline -n 8400 1875 m 6800 2700 l gs col0 s gr -/Times-Roman-iso ff 375.00 scf sf -4800 600 m -gs 1 -1 sc (Class Hierarchy for the 2-dimensional Case, Part 2) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -4800 1800 m -gs 1 -1 sc (DoFAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -8400 1800 m -gs 1 -1 sc (CellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -1650 1800 m -gs 1 -1 sc (TriaObjectAccessor<1,2>) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.fig b/deal.II/doc/reports/class-hierarchies/2d-dof.fig deleted file mode 100644 index ba45b2c4b9..0000000000 --- a/deal.II/doc/reports/class-hierarchies/2d-dof.fig +++ /dev/null @@ -1,42 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -6 5250 2700 8400 4275 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6825 3075 6825 3900 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 8375 3075 5275 3075 5275 2700 8375 2700 8375 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 8175 4275 8175 3900 5475 3900 5475 4275 8175 4275 -4 1 0 0 0 0 20 0.0000 4 255 2940 6825 3000 DoFObjectAccessor<2,2>\001 -4 1 0 0 0 0 20 0.0000 4 195 2460 6825 4200 DoFCellAccessor<2>\001 --6 -6 1350 2700 4500 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 4475 3075 1375 3075 1375 2700 4475 2700 4475 3075 -4 1 0 0 0 0 20 0.0000 4 255 2940 2925 3000 DoFObjectAccessor<1,2>\001 --6 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9450 1875 9450 1500 7350 1500 7350 1875 9450 1875 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3150 1875 150 1875 150 1500 3150 1500 3150 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 2800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 1875 2800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 6800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8400 1875 6800 2700 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 2-dimensional Case, Part 2\001 -4 1 0 0 0 0 20 0.0000 4 195 1995 4800 1800 DoFAccessor<2>\001 -4 1 0 0 0 0 20 0.0000 4 195 1950 8400 1800 CellAccessor<2>\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 1650 1800 TriaObjectAccessor<1,2>\001 diff --git a/deal.II/doc/reports/class-hierarchies/2d-dof.jpg b/deal.II/doc/reports/class-hierarchies/2d-dof.jpg deleted file mode 100644 index caf1cc2217ff028e62933514c17b9aeef6002733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21207 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 diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.eps b/deal.II/doc/reports/class-hierarchies/2d-tria.eps deleted file mode 100644 index ec95b92e0d..0000000000 --- a/deal.II/doc/reports/class-hierarchies/2d-tria.eps +++ /dev/null @@ -1,181 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: 2d-tria.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Dec 19 15:59:56 1999 -%%For: wolf@adaptive (Wolfgang Bangerth) -%%Orientation: Portrait -%%BoundingBox: 0 0 552 239 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --15.0 258.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5287 m -1000 -1000 l 10437 -1000 l 10437 5287 l cp clip - 0.06000 0.06000 sc -% Polyline -7.500 slw -n 3705 1500 m 3600 1500 3600 1770 105 arcto 4 {pop} repeat - 3600 1875 5895 1875 105 arcto 4 {pop} repeat - 6000 1875 6000 1605 105 arcto 4 {pop} repeat - 6000 1500 3705 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -15.000 slw -n 4800 1875 m 1800 2700 l gs col0 s gr -% Polyline -n 4800 1875 m 7800 2700 l gs col0 s gr -% Polyline -n 7800 3075 m 7800 3900 l gs col0 s gr -% Polyline -7.500 slw -n 6855 3900 m 6750 3900 6750 4170 105 arcto 4 {pop} repeat - 6750 4275 8745 4275 105 arcto 4 {pop} repeat - 8850 4275 8850 4005 105 arcto 4 {pop} repeat - 8850 3900 6855 3900 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 380 2700 m 275 2700 275 2970 105 arcto 4 {pop} repeat - 275 3075 3245 3075 105 arcto 4 {pop} repeat - 3350 3075 3350 2805 105 arcto 4 {pop} repeat - 3350 2700 380 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 6330 2700 m 6225 2700 6225 2970 105 arcto 4 {pop} repeat - 6225 3075 9320 3075 105 arcto 4 {pop} repeat - 9425 3075 9425 2805 105 arcto 4 {pop} repeat - 9425 2700 6330 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -4800 1800 m -gs 1 -1 sc (TriaAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 375.00 scf sf -4800 600 m -gs 1 -1 sc (Class Hierarchy for the 2-dimensional Case, Part 1) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -1800 3000 m -gs 1 -1 sc (TriaObjectAccessor<1,2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -7800 3000 m -gs 1 -1 sc (TriaObjectAccessor<2,2>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -7800 4200 m -gs 1 -1 sc (CellAccessor<2>) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.fig b/deal.II/doc/reports/class-hierarchies/2d-tria.fig deleted file mode 100644 index b5276f025b..0000000000 --- a/deal.II/doc/reports/class-hierarchies/2d-tria.fig +++ /dev/null @@ -1,28 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6000 1875 6000 1500 3600 1500 3600 1875 6000 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 1800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 1875 7800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7800 3075 7800 3900 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 8850 4275 8850 3900 6750 3900 6750 4275 8850 4275 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3350 3075 275 3075 275 2700 3350 2700 3350 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9425 3075 6225 3075 6225 2700 9425 2700 9425 3075 -4 1 0 0 0 0 20 0.0000 4 195 1980 4800 1800 TriaAccessor<2>\001 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 2-dimensional Case, Part 1\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 1800 3000 TriaObjectAccessor<1,2>\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 7800 3000 TriaObjectAccessor<2,2>\001 -4 1 0 0 0 0 20 0.0000 4 195 1950 7800 4200 CellAccessor<2>\001 diff --git a/deal.II/doc/reports/class-hierarchies/2d-tria.jpg b/deal.II/doc/reports/class-hierarchies/2d-tria.jpg deleted file mode 100644 index 93a7c4dfe841eed5a97a8d3cf3852a5b4c9a2ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16183 zcmdVBbyS<*wl*3H1zL(1C=#SVDaGBbP^3`!)hGlfXoCfZ;Iv4A1VYi`T8g{71lMB4 zgFC^3bJ^#7`|LCBxA(ngk9+SQcV&!stg+sVthv^lYp(e`bLMvHb`e1KT3JmQfP;er z_}d3?djk+;!hSc5r5XZf5Rk4K|l? zu(NeEapQb=I|EPz5aQz#;NK@CARu_~fbij?$Hb3_h#t{WP?A0d(lIdt=@=N8*?2ja zpK`M@FgzFI20O8-Jkpp0lm0qQ;C6%Q< zM4y&_qD7y9%=ig{B&`{oCjxvEB&Uf8RL7?7v2wE=PY_Zg_pYH8o{t=G62ys^F>97fTdU5bO}?Cm(Wga!<3% zZ{)Z`N#_<|tsgAVarQOohW%Kp_V_GPujpLbu=Yu7uBh_y_Ro~1nca;7iC42-OhL0f z@5`0u)8C$22z`WQ{>TuM7=S4Gm75V$tXugs{bHoP1-$5k>XW=hE~Uz>PgYtN1?c<$ zekzgJvFtkBRFFwhwZ3Wrbq-oD6||hM!k^Jp`VTo+@j3;9q;AYR0CIxz2INiw?zW%4 zb$WmkALuYKMAb+XThrr_PX$QrIyLkm-$zw&1Q4khP-s1fiP#gX3KmY8xhc7ZU2rdy z>tFA^Z-Gu1L}!Zb%DTz5+pB}{h9Dq<4LZPn`AjWG-Ne&@L)llNa${z zDLc%*QMV0N$MH*Kcbr-Q5bxA>b3rCoi|=7hKIrW?F-ypI+mDbkSG+u~eZXSv6LHst zPu@iL2Olg|8gfys!mZeiy&RPn*BY~I$W%-T_bWfaqS2Tu1Py96HJ<~y&EGP(S^#E1 zV||eee*PD!3ez2LF&b;1v0|(4`jv^%AuOzK7CXSZcr27~!W?%#zOGfx z|52HncJuRD5!2HCtIn1aH~JA~Eb(M#gHH2jiT+92C7N;_h{#iK3;f1%Z9(z4#&Afy zXN$G{TRBR7QoDts=qrIs#alqhIY*uE0yfos`xao?zHtM)d1&U;F0^L$t_$0C6AGHV zr?VHiD|IZxYdvxmBA2)kmNeF`>wnb8puq>hO<5e)U&pU-yXp%8_?Y?CJuU9^KpiiL zVVN+sGDCBcw}8$|XZK{I)0Fy2`!`(o`?ZJ)Wb4ht2fIY}!^K@hir9psws3eH2#z-8 zGB#=lpSgJG8LBQPm4qy?68)Kkl=9$Fh@IQmpAd=d>?8G8XDR8Eni98EDh>6ty!b~PE&qvPuT*u?to5$L29vYyk2E0ZIFftECT(AeL1>e zO3PQTZTf|veG@M_mqEY&yjP}cnd{a$lItAXo)t4@8hRt^7ZOr}EuTedS&u?LQL?j=zdQf(MC!YO&HIV1M>Fy3 z68-Mb<7vj`$on&|1|^mfjs!Wuuq9umLWn=No2qN_1!J7>#*Grwz(>rDR@f@J;SX}T zhEKV+<3K52JOl)U*6}S^2q(Vrl$;t7IEU*A1TIgO=_G!zxhzyGP_>=*@&-QIqJ!w{ zH7iclrUW*7hbBSTMJ>Of1!L*yE$d&?Q;6~_DyFoc@p~kvuU}Uv{jI%P_n9(tVU!CT zkfdeL3m*L4Xy4AWMJ`;M<)=Em<)qw<*esK|_b*L;{btNEs83vPF;+rH!d8?6oto|1W#e&*p;GD_Oeel630rucGDkn%Kg*<)W+3ExoE88m*8LcW2pTe z_FyhNys#y*g1yvRT9Mz{7pS;nv%;QErHbZ@OK-q~b~6tTT7i-zpG6<7GxV7{h$qJL zDroWdiJpz0ExYLPl9934Ta@m=SOiHHLch-7<|ve$T1R#b3jO9p<|39l@)2G7uF-vR{nVF9Bam$tWnUkv*f&9{Iky3GN8-6!sREHPK*LQ=HhW$Ull zKC~O+X`X3m05&dMnQy*ur`Sb!h})NL?;%{%yG@rOu2q)6%hnE)xlZ(Q^=ID;b+3;8 z5D0g!7`;M%j45e__m8*~KLpGNikLo&7&+OH>CC(si9|bplGWO|O{t$Nv!*QuOzNgArFYuH$VtIj-uvSA9n;#k@aqh*~$an&82a@YQG{`3KOOmJ;# zVFf0H(FMO5_QpjL8;sV@INts z+O}l;$n|t$BYISpF~gv!XxnXYA!3Pfl%HX3{Q33Z7+cp0_t_ih*UtKH+WxsN8!|<1 zotIU|{*Aa}lwVtHh65sYzLc5qX#2y#PrY(Y{NYzX?hQ+=)v@!7q+5VUtI6)A z;o|(!w@k5S*e#&(EM{uoeWPd|K?z20UR5{xsOP+Ubf;b$_adI?Z&~r6DOL-(pmv44 zjeC$x$Tg$V8`neyVn8H;W0}XGj1g_pX|P|~UXcU`laDrtEPy53rOp{_d_^Kl8!5JQ zKZ^u8@pU6*P<-uaFjeas*GNPymyTya;#jCN!d~9BE|f!0a&lurY$W1dY7!b+%LMVl zi7P$f5p*@96|($VOd%2(%r6D5frK(My;OTBD+D){V5+pYsyuoOt_4`gWJsv-06%u~ z;(C(embjn&D9;de3olHqr71&L3h&IOG}6~TFs=5n?ZE|`Aq65eN7sU1F78st`O%UO zOAa45@wNWwk|<2dbkv!8bD=C|iupaK%}K;CwBT;>DWXDLcmr_ff1fUoH|V+xRALwq ztjKc5h$6+FEZFm{dO5-GqKUu;>41kK&wA-j3VNcfw^P(fqXJCN#eOgU zKF5KC0&WzuAl8Nvo~Z}n)xzY*YW5Kia%GfG8Z@U`_csqpGpjc*cEKA^eX2p+T}d@e zq|9%}S~({=X6=KiNuf5}3h#Eev7)qzU>g8lKb$vPpR{aGjfl<8abAm|PXd>#|ES6e z%N(_`ySPCto-DRRXFa+JDnDPZAh8bXZVF?|=Q0TdCS+_IKE`Rp|J?D0K685*7N&BN z$e5xwSoT$xC+17`f1`TkkkNIUG) z;4=Ra3bi?p)+!Z_8T$H|B2>fFCsGllGk-}p+2Q(tU0f;%H*vV#kx}S9af&zRVm^%a zk!^mAm6JY}tP36&)G-NA-C4I0%PZ8q7#rwlL|iIAp*72}c9huGcD7?5Q9&y(2Eqp~ z)PRPWld!!anM|k`FHx|m2f;&ljug-94qRGM8UIm33hMxVg=>tHmiCaY10*;z=|jI5 zRjWl~9!xnms!KuU{T@dva}a?VZrBPj@XHtE-Th9s8>oL|+WQ%O{Of{UbuU#}aii6gn(C zGV5RM9N;Ya7-4F3q8M-sxHEx6wzr3qv|mrpgDc(LT^y%WmOu9!4v$G$V2CsayIQS) z^|iaW-X|N;L&TuNsZwr-R!X83qzZmz1g;qp1|aY*W?lP!aQIIq7ZmFbbKOFmNzWR?}B}aV{H4T5u{1jbaPGm)-&h38iyc z?{j7@8#vN#o$bV=94rlk7~7;`>rL7ZwufWJqM=@Ptl^GcSe_xX0xi#amdelHZ9_+1 zvYkOD?UHm*aUyUMD9H(wo?QifG6z3x>n&*i-AW{FP-U}h)tK|FmxpW=JyBWYZar}_ zV|Gu)iD}x1w1sAU{>sLYLFIWxFC*71Mqi*1;;9%)KeFeo26-?IRxLSI3+);&?dSf4 z`W@t63;a{s!@vVcAmo0^FF$20bKy;0o_q@!UuVAsENM5-Nr-b?8$ye3s6JhfY5SA^ ztU)3Q|l z{qD*qx+_S@ps0lEXK*!U$yrC4Vv?v_y|JD>wG$5L!p>2+><{a2LMUx1(;fa!Pxom< zV?)IZh#{WA3Uo|Z3O*Nvyp&$1>{#nl_F!|V*{f^c*R&K;9-W%C*v80`X$ETto#Kz@ zup+?xTGc#+Y?L!FBU6ucq=z|=y}D;s)F2cp$RQ?ia=mMe${l&k^LR4iCdF9q*16^SQQzlIQ;%~pK{0i|*DRGP z^UZA99|xxKp9moFYho+zsm?TN_PkJrF}m_XxYGg)icyOS46m)78{&Ocr>f z)vMgF6wdI7D8^YuI4X43MOYkn3K*54ChU=`zZyr18yB$(L1$FcG@9|^vWaqb&~vnl zg*=GbhtO`VIA_EJn3s>rMmk4q_r{=5b91U3lS5Fp;lk?brGJAMI z!zjAuGepXsEIycM;qaWE%=_zXp}dK!!%@(v72P=cJL-x4Ex9shvcfIizkC)7^=Wm>3}OB0 z>e{x>S3WNxDjD&BxnZkJZ;H1eCI zTQ<`YG`%1tO^VR(1@-6_+Cf~m`?M{aS&V}fpIu~bZVy{_s9FJVGlb<01iZL#Lu%iR zgUahZzm=p58t5r_*w1{A)dt~U(Jp@`zdJMH+<|$-NYV7NQ4;w?kk4sP#iFB%UMPtW z>JT+Z?;r`iskYr$5YSg44f1w-51*#e9Wj)m$xV(VNr@WnVO%Q-LeBXS;vrtXT$`u) zf?$pAR_Ytk>p8xh9Wg5?9d(Y>+hpFHsE~BYL5}1gX~e~8=nGNkR>haf%S$CZ3bd61 z&J=+qXY)prwDUu4D*4U5Qg0W%V6>)sk0E-6(mOCqB=^^#I-iU~0~XSmg<3|%xoYAF z^7OnUSQy&9P)LjP(ZNUA$fnt{(&U~q5SDB%j>6NWdFZpUB|+GV`1)|)aKP>-n`4cE zVClxW~^zEo|u7erdb zI8izP?nr)PuTCeaFub2WyPv#ZktD|&h5$MdF$@cK#0D-1r*LKaF2l07wxMpeyC`p- zTL9ZgX?ckPXwSuLi5nusX zv4}m9r-kU_;gsn(lxFT{6ox+a=jUZ{SSV3Is~zvt)!L4@qD9)o=~`rr+~>sgR<$byI18HL2!%NE7zWRT~8K{tyqWn@@%nJ#h>8 z78SZY)ej8+a<;+t^_-rh(u{TmX2ccB>kdg$R9oY?T!!8!YlFQ7!{BG-Y;%A+H*Mw=1_IDo?Z~|{4*CCe z3tLlT4gGp3Q($%C1P@qVd)#E#{F}-7=%JCA(H3c)$5*}|#U})F(rs}AlNW(|DJJS` z+t&(ME&l8ymz%W9-1v9rb+>@OyvO=Ez2%5MHY{)O#5E;3EkAgh(hVnzQ+Ebq^M zxxabP-)TJ+E5-6XYeP(=A$C0r}IVZZJ>tm%R>#)eiM`5_|Ji zquL2qMF8G0ZSHE=s*H*;OjP zq?^}MEeE(F=BB=;Bb9x%YkZH7WxtTsncAv5QGq&ki4!mgGO@9{i={cJ_5FWDs{iak zM~(o4(2ZeMHS3CP<5hBR)H;BcvgO*a(>tM5YgT1{5PXDP0!cZN)dfi&0I^~?*3*r z{%|vIg?g6aE#^};@p}e^iPFVvot1~L|2xh5CC`MBDa zV*-kWt;igw-pn6H%_!*~?2);MVvO1c<%v#DWjirSwo;cT%Q6N$ypRUy_$Ww>M9Z3% ze5d(=r*2wiLVctK^~nzzj=r^-A8ey4Iev?@lf!$Fl3k|+FcQ7!A%}3cP`>BbpNHoU zr!K0B$G@g%Gcuty&@Ekkn+8J(3EdyMmgy}j1n3YREPKx3 z7Vs7*Ue_LyzN*IF<(%_66O9>rZ>L3N$!<5Rm2NbTreX8Xbfu+FeFT+gf5RL*ScswE=VX2WQ@XS(2uC}b)->I3p9 zJ)*c=dyI)A=rrg!SS(AdFui_vIu}+kcxb2MSJ#hsYL@p`Nu8!%WF}f^fqc)#=1~aY zpVK(y`C20SgPPcl>U@RQ4EDg5p6>F7ZyNcytW`TPxfLBlbH@aqA_CL>TL*`YdEG)Y z3`%|-Fud#18>nU9me7|~7qg@1{#O5m;^Q~sD*VQJcc-MmeaPuty#aIeXIc70Gu^(= zi!WvZx$yq?JwtDXNS)sl z+A$x>NY(+^?3)m_e%|tL4|N75;+J<@%|5Rcg4^5s9m58ly4m2>H)4L8El_4FpFlN% zBuB`TA3`4o)WHV7nt@lMXsg>ahoJE$!*7b;;fC7 z;F4i^B>x;?Hwo*~@Xo@aa9)pQDZ9uUcP1~j&t{K=`KG8`%+(073L-sMxS$P8ann+RCTt=3*IqwAA zhyjm4#`Un)X&kVfvB_-xHfweoK+|u&vb+`-j=`TSrWDW>PrV;%t77rot_&5%{8S}j zCXYd%1U~BuAQ*-u%^C%3X;yw(7HpF|o%8q_(SZ6vA|)iTtm&1SnWV<(=T{MF&Z%Ae z_z~inEiOB?alRW%HhoG^PwWWZ&=cSlrK*C#eE^5 z1{gEG^#I5b_{1b?zF6)D0>jaK^zQ9H^Q!+jMnmNGV%TrUv0r3~u}tHj3$X@!AvdGp z5_LmZ2;*Pgu=>OsehbKU)9^iyMy=N3T>f&ORk9qJFmuUMIS=2ox+7xK(1RjwwjB7#kWT`r9 z#xSiznHZ)WL&=g`0G@7Ru*30VZt5<%5vgBtS9yz$v+md9{dR@|8#4lR1-VzJF2Z;D zEHcOH-;({thw%q8<~FiNG^Zy@`tmot#M<%wYg~eDJ9f&2O{pC$-^Hs>rhu(C<1+tx z{p4iH#4#$6c;nB5Tf0p&+CR2I(Ljs0*9GC?i1q9ii*oE>X#@0R%A2EC$A718G_8)^jMqVsa8lV^AV?Nwjbm5UvsV#%1h(3SRs?MeS85C5p=a0e1;iIhB2h zmW%rIw>TqT(94N99%j}JelZo(9Av31t$at?xSs_dzGyzRSQTnedD=Z;bsRAEwWj$* zR&LK-%X`(C;JDxocP2qT=IBh2>G<81+(oL(#XKY=B*<(aN$JbB?sFiK@AqJ=<+*tN zhGkIyo7e}s+;&%d;6VSIHkyCtnf^BR$_P1#cGx9gkIMg0e^8~XsK38BvZZzKu>ACw zdUDAbclLqzGbEo&*rjLoCX}hO&=J zpn5dRcW*OU24u-(j~R*ZVtSwc zlg8^b6;!~R*fG*h=}Wod08u$b{xleX3f7cA;W5u50HHoP_g^GuG7Yr)z!tchcDs79`xA&}jMNe3eRA?y~QrFDaiF$rI;u@OqTauqDJ2A*Y` zfeRP@?7zS2E&qoqUQyo&25Hw8M`nX&Ic^3!-b6LezRbCX=YOy#jqEYiTIro2LNje- zZ5iLlGu!i_QbtXW$Vq!z$Jr-O;Z-%afMn?zdPhPb+v`WVPoNdvR>Rqa$ze*1HgkoqniX zEclEoVhW;_H7%j1o4NzflWR=J=ZKn@TVj;&Elt&dx&)FmE3ze<-2$wLxw069a2W=r55R2go{>y zn-i>5=v#oD>97jM{@oRJ{#E3a?xSantmn!{b_Tv^_6X}6%^RP*OR3-r&$9D;T}vO^ zO1B)=n{TqQOlzY>R^hyYHO2Dat(P*aff=HR6)8@`e;YYnz{fq3$EZTGT&r^$DC+;) z0a@iqJP;SvT@H^bVLYHg{o5FmtvI4x6OuAYc*F8nPghM#)aYOA3 zkLYy4gR340A*6ZmzSp+co!Kg`OznJ8yy;`7*Ezb0eG0g-;k>kDXStziA0oV3OXspv zmWy`bxJfKSIrii0#E$m;MrudY(Wuh0s$jqsOIK~B|KCB%dV!rNe@tVs^|6y?tC9Mk zwNn#oeD(c4`)Vkb{X6*S;g5Hf{UMu!A%r1L^)%w}Wlzb`apOaM->AuQSzhr~a|lU3 zKQc4J*|Fl@8g*k@fMoDW-G^HL#`tbDM6iAz?8OHQn>$%Li`cSs6n4eGq%0oL`8$ky zJCw5gu|WNCq+A9^th#x8kCCC^SgwmEt3ZWt0E2qP=p+F|C=bFqU&ZUOVB-7aDHd*Qylr|zgiwtd$6I&w%l8kz$1y}K< zRISU*?JM0+UuvJ2{?kQJ6D&-HF*vxLr3~#Cm_8QlHKc<_gpV*iSZ9XXY8|Di+Ai=DYZ( z?LVlW+}vnt_;=Zc|FVGG{x$JE+~R(g$zbvnqkCVX&jcc_9Nlf)6t&bV4AMLeirZX- zsCX$Q!iuB2M6(lJX(t~Sgj=^?RuM|!F)jv>gnZcjpO{4Be-R%sw!MFu<_298>f(5Z zpi3F#Mao50@NN8Oe$wEMZ%-j!7RANr1<*B(Tql1je(canl{CW&7Y(Y60Qdobez;XJ z`|RBYnY%>a&;k?Qy-oHD1M7;9%nxNHcMle-g|FTWPi~Lm;1NG}*WdGz-k0c{?fYGF z#r{IMGAv4zke(}FVhE`TUxK@Dv07%?gLE&hQjwt2#J2Xx9y3~Ss2Vc!^Xr37>2jM= zr2LdH2z7FAq8aPwzj?kbF2hZJDirn$+qz1DZqA{Ucm%Y4hI)@ZxKe(D1o@k^po}Gm+%Mr48dZI03e_q38AT<(h$ns!H9P=Fo*7VdPAa^r1D6=sWJuN2iqQLY zaZb1#+SO0ZbRekx3t5AYKSiP>9l3Qs8Zav8IuR}zS-8sw}$h~H?d zVNN^7d5)D?qo2%`jvU9G`Iix>@r9W1TKO~+DNc-W_T=`$6gr_cb{5hu>QCCg(?HJN z_1I8=x-+&(jOp-SE;6Xv+XB>r*E}|AV_5@cSAof3qmU*`ANy}kL)SJ zkaj$YS)k;;jVOau-Kq!f{1`^KhQEUJ3xMHTOrguk1MYRBz%Hu?#D$kwO(N*=C`wlg zcdgO#SZYa5LVF|@o+bF)a_$YTKD-f`zTcKiM6RVLM!F0uA@D9onX;xh(^ z-c|_^ln-q5Vj1Ma$<4yAw&kesQS?FGvl5oDY}Sw!KfC#e?l@IK!eix65ls1*((Ie( zdtzy$%9+7NrQchBoR%JecXVP#)!sQ0EwK?-+yZX=eE%Y88U9CDQZ#T22zhl^5_E^O zd^*Edh7~{ksV)bdpy5xRTD*!v(JO+wzU=}4QUC&5&ZIaNS40IbR|rZM`{KOWS1kFF zKwS6Pc6GbY>=;H&(WqDzk4!jy$*K12s9~MPiSJ$e!S_7630|csW}Bjdby+n@sUV5v zpAjihjn$`iPu=+cd7UR)LLlA(2C7EV}X@31N>BuSguQ;-wMz2o9H77@pZ8*M{fyP5xe~D6;?P0J-?1`OOFnCa|^;C z3ZkDS9gZ`U;v10AelNmDRrxO4OIu@ks;{iFAZo;!R$7^m5lcX^NMvqlm->ZF&7|A| zVWlm>P@}2G$P$0qwEFHviGpQVP8I!hrm@6nN%r+z$f7y5 z%H!;>g^*>Z7CI|t;Wz+(^>6jMB+pnaq#5s@gX`?Smd|xLP&1Stsz;u{HNdVYl~E%! zem9VwKPy@yKPXFM z1VZ3qxz7wNGH==bjiR7JxH1}QKb5wB>n|RF}Q=+&?wSLU+4ux&P%C}rOruC#mg2A zv1#Ayq1|V>CTEXKa^FClHQ+lF6)!Hmh9W1599<n?l_~E(0 z+K(7J+wR&m(`+3_M$MT9>r<5fBgc?J!I^Xn0H(&nlIoYLSh$bYW~!W?#j+gcf4T*j z{NXus$*9&)vwS+yoITG_MhdVm;-?!TpP8PvM-Q79eOh`V{sP=_&Z}t0=Zq@r>p!*Y zozKN(?ZN9B#maO8&D(EnVEUz{n#L-L;z#&=6WKbA-`FUwURCrTIhJOyzc3v``9cm8 zgO~3Mj4AA?nucI$8RO?VO1Fz2(cQN! zzV;uL0!3D{KT(1WB}BvjQ7I5Sio?8-`c9bCm`2K7mcwTaG+yxLJgcu`%AR1NN>>O3 zFyWq5b@EhB0yv!DQM?C!K~EJ#&>#Oa&#Y9=t(89lPCB=iDVa%`4BSU4%uM_!bdGRN zrA2X1#p=FTt7G@@s*L9oZ1{?@+w%J?MnIwNZHv4~?D($93f)+nu1>A+g2 zeOn<7D*#+e@{i2|yLP3K3jEi?s$;EFJ1|!ju=vuzT)$w^XL@Wrt%d6SjW22ZU2~On zcI{f=!oXQ8tbt4);->Fr;4(+A*NYFg^`OYb9d-ru+}@nDwKtF>%{2#3X>#9@6md1? zKN$IbzKx2Svl(x_pI!Lf=Ri2HD5cN}rx2$ow$#gF&Xd0f(Ni%DTL8Hm*FMJ7E(WJk z`ANs^#8E8&)|@M!<1sxOs5>@^W{S2>!!}hMv^sJwJGGL^asfQ}rg_;>Ka=Y%>ku4_ zXrw{Vw$)l%HI=U`$lwTN1OhwC_VW{ z?3u0*-FzhD1Q~EDc?Y-?U8W|)3!P_iIjWs1NQRo$zZe2Ow;MMb5y&nCPt&ODUU7){p zsha33OoCDhpDs8Qf-vfw1*WWOc6@4sp5<7O5;@ItH#B{sD+{#|uN~Y%TFdiFIn_6! zCaX7!N?q7<)pOh`PuZf5UW3%^-zTZz`bN$NAK<+C2Xvw2cr#ggsKAi&xZWm8PLCL- z&oHX8CYdNI$6v0iVMrquo$o6W(XaSDtF7Azq-U%IJPWt;3%XJ)l}S<#^c%+A=L=s> zn9bHmzNpP~%w*_2Y~hnPCAl(?Wm3fp%ezrPb>qkB86toIb(U{F8MCS_7dzl4;n}b+G@v__77aPi*pSs8=bFYlfQG8&dOAl zOy#{;S$1J8jo`7J&?4Jp88FLy=X{(@eFBjuwjx%m3|ki69tqO$d6N@3e=*j6zdJW# z2v7Q~0B5DytR{{z!*w@h6GGEvJDK??{_4jYg2t2FAfhNO`V>MBj1F#(PY;w=Mrn6O z=C_A9_AzotOixAReog*mNlJBd8&=uSjAhUwtOphrmRyE*ReQl8%@Hv1t^XsG_H)Uf z(2}Wd#m#L!@e{{>rzL)S9s9=nX30pk1SdF#s5p7B(`-A8YFgWUQ_(g5S!e_ggt5C0 zv`D9}+`2n6Z0-C+le>RKBL1g&TH_;)05JvNRD5?r#?%+vF+3RH7?O2kypta`DIg)~ z_`VrYYFCiB9pt4yD)5InqM}?y3HK_7-uZz>2T@GR`*8&9R%PQW9eT)qAwphRqj{+!?UPg^@;_UATQll@BW{0f5-_1p z!VSnADY|!v-h5Ll;|uR)!+7>FsOx*)@GkCPU$he$A)sp-vxb5zq{*vC{Z=|&SXfL5|v-U5O&n2<3n*SaunmsOU8@R zMEK@+eu`bW+)QKQs75T)&zb)ls_5yL8jT-&f?=OEt#w3foRta9(hH#$CmHe%^Nl2} zdxVsKXT<);1s?xJx%{1UvpCeR4mRZ$<^B>i2`+e;(YK+tcf;Gwjk%DP31A@YJcz9U zIwxDDhNp88v1RJ+IE+9ttO;%b$k3N^4!uJNgwKYl%|S)-nWdRT=CQp+q#RGAu<-p~ z|H??8KJA0O#12i(%o{9UV!v|KUp8H7QMUVPDc7IagC@O;5f=O-fzxq73-K;v;drdG z+Jy8cl04WB7DIF@$67iA(!F#o#|n8cvbW_R=m~(?ApAP(#F0r>2HmC_3&Fe6X*u!1 zizMFHsv?`)WWciv}p8zHtn-k<1=F9Uv}@^jc>cZZQZk<2-jrRf~Zp4=|M^9{C= zGmlqGRPOCzxiMX$s3)6vyF*TTjX+z)ma<9W(=fQ#S>NwphpG`?F=09QWnO`vSvD;w zZvUdl+FkN{tr#yE&~OdP>}YnGwU@Qa@vcaaDpLIHMY}dV9eK*pYeq>#COIbBHc$#)hDKIGM~I34055@8FyqA#?O6Sc1itC0id1cQrt`M3-Uoqjx~6v$AW zU(_2lTxT3$6K@a!>8?!g7?n%<3==#(;ydROg%$=-PdKr;gVVr?3*_+d29gY{Tlfwz z@|npwDOH_J%|vGRZw30 zZ*zJnoN{$$Iy&eGtj{IG(=h?q@ii&i$DUE*NLEh+wU#oy-LK^7#0t!@+S+i9N8?C7 zk{V6zD37as9A)Mx&gHI0TCkQF3!eoU*yy;ePkpfZ*< zDq2Zj)&9LcA%RiU1mb|*+y=TQVmo=gPnDQ+x$m?$QOMJ!D3mljDKX$bPaoz-FPFN$ z@cCoE5pAt$VIZPsBBjvRCFnJo{?E1c5+zuOaO^!CVwvF8!XkKP*Ft=kxpdW~ttr}B zSn&nO#$^fwQUnuk&|6O~9pfI;1v4?CBhhQ9S1Q82M+Qd^JiV`EPNkU0M|}icCsNk+ z02dK?30wNU$jj8k-+k(Pj%O!V&x;gCn2&w;+I?8gDQ9iA^|+GnglYbs$|@`Oj9V8> zYuOgCVpBG;Bm9P5-YiooLK+B1Rh!j@EsGsSuUMj1I>WfZ+-HC3N5q2WfEZ) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 330 750 m 225 750 225 1020 105 arcto 4 {pop} repeat - 225 1125 3120 1125 105 arcto 4 {pop} repeat - 3225 1125 3225 855 105 arcto 4 {pop} repeat - 3225 750 330 750 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -1725 1050 m -gs 1 -1 sc (TriaObjectAccessor<1,3>) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2130 1200 m 2025 1200 2025 1470 105 arcto 4 {pop} repeat - 2025 1575 4920 1575 105 arcto 4 {pop} repeat - 5025 1575 5025 1305 105 arcto 4 {pop} repeat - 5025 1200 2130 1200 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -3525 1500 m -gs 1 -1 sc (TriaObjectAccessor<1,3>) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 8055 975 m 7950 975 7950 1245 105 arcto 4 {pop} repeat - 7950 1350 9945 1350 105 arcto 4 {pop} repeat - 10050 1350 10050 1080 105 arcto 4 {pop} repeat - 10050 975 8055 975 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -9000 1275 m -gs 1 -1 sc (CellAccessor<3>) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 3805 2700 m 3700 2700 3700 2970 105 arcto 4 {pop} repeat - 3700 3075 6695 3075 105 arcto 4 {pop} repeat - 6800 3075 6800 2805 105 arcto 4 {pop} repeat - 6800 2700 3805 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 580 2700 m 475 2700 475 2970 105 arcto 4 {pop} repeat - 475 3075 3470 3075 105 arcto 4 {pop} repeat - 3575 3075 3575 2805 105 arcto 4 {pop} repeat - 3575 2700 580 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 6980 2700 m 6875 2700 6875 2970 105 arcto 4 {pop} repeat - 6875 3075 9870 3075 105 arcto 4 {pop} repeat - 9975 3075 9975 2805 105 arcto 4 {pop} repeat - 9975 2700 6980 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 7155 3900 m 7050 3900 7050 4170 105 arcto 4 {pop} repeat - 7050 4275 9645 4275 105 arcto 4 {pop} repeat - 9750 4275 9750 4005 105 arcto 4 {pop} repeat - 9750 3900 7155 3900 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -15.000 slw -n 8400 3075 m 8400 3900 l gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -2025 3000 m -gs 1 -1 sc (DoFObjectAccessor<1,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -5250 3000 m -gs 1 -1 sc (DoFObjectAccessor<2,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -8400 3000 m -gs 1 -1 sc (DoFObjectAccessor<3,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -8400 4200 m -gs 1 -1 sc (DoFCellAccessor<3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 375.00 scf sf -4800 600 m -gs 1 -1 sc (Class Hierarchy for the 3-dimensional Case, Part 2) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/3d-dof.fig b/deal.II/doc/reports/class-hierarchies/3d-dof.fig deleted file mode 100644 index fc810f6e1a..0000000000 --- a/deal.II/doc/reports/class-hierarchies/3d-dof.fig +++ /dev/null @@ -1,54 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -6 5325 1500 7725 1875 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 7725 1875 7725 1500 5325 1500 5325 1875 7725 1875 -4 1 0 0 0 0 20 0.0000 4 195 1995 6525 1800 DoFAccessor<3>\001 --6 -6 225 750 3225 1125 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3225 1125 225 1125 225 750 3225 750 3225 1125 -4 1 0 0 0 0 20 0.0000 4 255 2925 1725 1050 TriaObjectAccessor<1,3>\001 --6 -6 2025 1200 5025 1575 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 5025 1575 2025 1575 2025 1200 5025 1200 5025 1575 -4 1 0 0 0 0 20 0.0000 4 255 2925 3525 1500 TriaObjectAccessor<1,3>\001 --6 -6 7950 975 10050 1350 -6 7950 975 10050 1350 -6 7950 975 10050 1350 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 10050 1350 10050 975 7950 975 7950 1350 10050 1350 --6 --6 -4 1 0 0 0 0 20 0.0000 4 195 1950 9000 1275 CellAccessor<3>\001 --6 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6800 3075 3700 3075 3700 2700 6800 2700 6800 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3575 3075 475 3075 475 2700 3575 2700 3575 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9975 3075 6875 3075 6875 2700 9975 2700 9975 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9750 4275 9750 3900 7050 3900 7050 4275 9750 4275 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8400 3075 8400 3900 -2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 - 1500 1125 1875 2700 6525 1875 -2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 - 3375 1575 5250 2700 6525 1875 -2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 - 6525 1875 8400 2700 8925 1350 -4 1 0 0 0 0 20 0.0000 4 255 2940 2025 3000 DoFObjectAccessor<1,3>\001 -4 1 0 0 0 0 20 0.0000 4 255 2940 5250 3000 DoFObjectAccessor<2,3>\001 -4 1 0 0 0 0 20 0.0000 4 255 2940 8400 3000 DoFObjectAccessor<3,3>\001 -4 1 0 0 0 0 20 0.0000 4 195 2460 8400 4200 DoFCellAccessor<3>\001 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 3-dimensional Case, Part 2\001 diff --git a/deal.II/doc/reports/class-hierarchies/3d-dof.jpg b/deal.II/doc/reports/class-hierarchies/3d-dof.jpg deleted file mode 100644 index b69962dbfe2cb0d52d52cdc0fb34162c4a85c25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26375 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 LSvYFe@5O%uyKee{ diff --git a/deal.II/doc/reports/class-hierarchies/3d-tria.eps b/deal.II/doc/reports/class-hierarchies/3d-tria.eps deleted file mode 100644 index 75ea1372b8..0000000000 --- a/deal.II/doc/reports/class-hierarchies/3d-tria.eps +++ /dev/null @@ -1,193 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: 3d-tria.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Dec 19 16:06:42 1999 -%%For: wolf@adaptive (Wolfgang Bangerth) -%%Orientation: Portrait -%%BoundingBox: 0 0 576 239 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --15.0 258.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5287 m -1000 -1000 l 10837 -1000 l 10837 5287 l cp clip - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 5100 1875 m 5100 2700 l gs col0 s gr -% Polyline -7.500 slw -n 380 2700 m 275 2700 275 2970 105 arcto 4 {pop} repeat - 275 3075 3245 3075 105 arcto 4 {pop} repeat - 3350 3075 3350 2805 105 arcto 4 {pop} repeat - 3350 2700 380 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 3480 2700 m 3375 2700 3375 2970 105 arcto 4 {pop} repeat - 3375 3075 6470 3075 105 arcto 4 {pop} repeat - 6575 3075 6575 2805 105 arcto 4 {pop} repeat - 6575 2700 3480 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 6730 2700 m 6625 2700 6625 2970 105 arcto 4 {pop} repeat - 6625 3075 9720 3075 105 arcto 4 {pop} repeat - 9825 3075 9825 2805 105 arcto 4 {pop} repeat - 9825 2700 6730 2700 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 4005 1500 m 3900 1500 3900 1770 105 arcto 4 {pop} repeat - 3900 1875 6195 1875 105 arcto 4 {pop} repeat - 6300 1875 6300 1605 105 arcto 4 {pop} repeat - 6300 1500 4005 1500 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -15.000 slw -n 5100 1875 m 1800 2700 l gs col0 s gr -% Polyline -n 5100 1875 m 8200 2700 l gs col0 s gr -% Polyline -n 8250 3075 m 8250 3900 l gs col0 s gr -% Polyline -7.500 slw -n 7305 3900 m 7200 3900 7200 4170 105 arcto 4 {pop} repeat - 7200 4275 9195 4275 105 arcto 4 {pop} repeat - 9300 4275 9300 4005 105 arcto 4 {pop} repeat - 9300 3900 7305 3900 105 arcto 4 {pop} repeat - cp gs col0 s gr -/Times-Roman-iso ff 300.00 scf sf -1800 3000 m -gs 1 -1 sc (TriaObjectAccessor<1,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -8250 3000 m -gs 1 -1 sc (TriaObjectAccessor<3,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -5100 1800 m -gs 1 -1 sc (TriaAccessor<3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -8250 4200 m -gs 1 -1 sc (CellAccessor<3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 300.00 scf sf -5025 3000 m -gs 1 -1 sc (TriaObjectAccessor<2,3>) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 375.00 scf sf -4800 600 m -gs 1 -1 sc (Class Hierarchy for the 3-dimensional Case, Part 1) dup sw pop 2 div neg 0 rm col0 sh gr -$F2psEnd -rs diff --git a/deal.II/doc/reports/class-hierarchies/3d-tria.fig b/deal.II/doc/reports/class-hierarchies/3d-tria.fig deleted file mode 100644 index 784a1a4b70..0000000000 --- a/deal.II/doc/reports/class-hierarchies/3d-tria.fig +++ /dev/null @@ -1,33 +0,0 @@ -#FIG 3.2 -Landscape -Center -Inches -Letter -100.00 -Single -0 -1200 2 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 3350 3075 275 3075 275 2700 3350 2700 3350 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6575 3075 3375 3075 3375 2700 6575 2700 6575 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9825 3075 6625 3075 6625 2700 9825 2700 9825 3075 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 6300 1875 6300 1500 3900 1500 3900 1875 6300 1875 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5100 1875 1800 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5100 1875 8200 2700 -2 1 0 2 0 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8250 3075 8250 3900 -2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5 - 9300 4275 9300 3900 7200 3900 7200 4275 9300 4275 -2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 5100 1875 5100 2700 -4 1 0 0 0 0 20 0.0000 4 255 2925 1800 3000 TriaObjectAccessor<1,3>\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 8250 3000 TriaObjectAccessor<3,3>\001 -4 1 0 0 0 0 20 0.0000 4 195 1980 5100 1800 TriaAccessor<3>\001 -4 1 0 0 0 0 20 0.0000 4 195 1950 8250 4200 CellAccessor<3>\001 -4 1 0 0 0 0 20 0.0000 4 255 2925 5025 3000 TriaObjectAccessor<2,3>\001 -4 1 0 0 0 0 25 0.0000 4 345 7590 4800 600 Class Hierarchy for the 3-dimensional Case, Part 1\001 diff --git a/deal.II/doc/reports/class-hierarchies/3d-tria.jpg b/deal.II/doc/reports/class-hierarchies/3d-tria.jpg deleted file mode 100644 index 6aa0d0b821be34a729a5cfc726279cb0a458c8fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18796 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�+NaNEfAz&Z|q zv^#U`#Y9EL-NIM?>c^HUQiffuP|5UYR~*?fIBk;68}d~}iAHWD^p}_W!+5z)2o(2< zW8{h6vig{7%p=QWMLuAT$6$&xjaeM;B!(;DA2RGGe0g;Bov(KQn$w?6i%uDkARWdMM zR8#?4+Vwve-2Xyy|5xJMG~f^5)N}W@;pamZvwNBcPo`O}SO10Lu>WjQQ2r+GBjbNv z_3eUEh_fv4-PhD7-lnPldBOj9mR0!VH*4DybLu(!+wj#P`KSM` z%fIftkt*wWBegNQnGpjHK%^1IM>*}P`fn+K|E1z}&x3!eV`7sgO0wRrQ$DkR6tv*fD$1LGrA9RbWS3sESX zS=G2$8dr+No8@}0OerX}q4&8$F9EM$D5mE?=p9}^H$tJ+j}VzOmX;6G2`dX^hg-9?7os$QiZ@Evy#<_n=Y_V2~TpQxc8;YB=X_{#&WuTxM z4{s_)qn4@)oUr`aVwnYp6waNo@oV_7ubXK?iYE&KE1ufp>Z9|3LV$!s38>wD;`h$= zsxLuzaGFg^WR_$|_?3oZGmq$k0ixR|jita`L3QA3oi-m6`ujbE8P=k4@g-DI;D5J=)B}@gU6-PAx{m!tP+C)XYYe3eL?k&3} zEL9^$2y2NB#L3X(h{+6VeCk9RxU@RDrhtb(9TN{b@G~zemU+EjxJtks5xNP)6!)x-I_FYlXiZ2^Op%S6|8Bo zqEhVr#HULfq~ro#Wt8|dYakuIUI3nQ>_vvh2{b!sL#18m*N(MOzvHZU7~E8QE{ltB z0|l2Z_m$l%x_22$om$dPpPYPtyRop_>NeJL>-X>?v6YW&uz(6oP~baXw-IKa#O3*7 zjb{$Ck&v*r$dP?xbO3u3o3u>iJhX+3U)W*uXy#RK5xIBm+ka*Gvr4&QBa-craiQZ- z*IEi8`~nXUZeSbR^mIs|8`Mzj02A)yZXG@2$Yk6rxDA!ql<;3%G!c+&UV7q!r%+%f zcoZppa`fDuq)_{%Q-O6IvURSx(ySnIDXW7II!hxFd)p*yfBO}wsUm!9-Soc2>9EB9 ziJ@0(!v6Ow$y@cJ*!Xh~E^ul&=2(C$Gb(f7QD5sb=!;qIWy=4v*_V{}Z5P{nV%FAo z#j{SugoRD=R9EOrnYU!t`DDMB9Jgv$3!AN;mHXy|(2ShTCM(+=Pef~7~K-TS-m*=r}KRQ9kVNA2YN%yu4A?%cy5B)VHsL4COvF>2QRn|EnaIPZ0Z zd%ImscWg^l-@f$2a-k_}R$gpf0j!Tsbsh>5GGNo%4Q#F)ot5so?cQRaAdz;J;FUvtTkw{O^ftn!-URhFE^HDU6G zM1`IPqb%2mE!ERrr|vv0)2 - - - - The deal.II Homepage - - - - - - -

      -Description of the C++ class hierarchy for the -accessor classes -

      - - -

      - Wolfgang Bangerth, 1998, 1999, 2000 -

      - - -

      -The class hierarchy of the accessor classes used to retrieve and store -data in the triangulation and degree of freedom handler objects is one -of the more complicated parts of the library. It makes heavy use of -class templates with integers as template parameters as well as of -explicit specialization of classes and member functions. Therefore, -it is not so easy to see the connections and inheritance relations -within this part of the class tree; this document tries to shed a bit -of light onto this. -

      - -

      -Furthermore, it lists the member functions that can be queried to -obtain information from an iterator. -

      - - -Table of contents -
      - - - -

      -What iterators and accessors are -

      - -

      -When using adative finite elements, the data structures often are -extremely complex, requiring multiply indirected access and complex -relationships between the different places where data is stored. The -traditional way to handle this is to put all data which belongs -together somehow into a structure or object; however, sometimes this -can not be done efficiently, leading to either higher memory -consumption (when you have to store many small data pieces and because -you have to store a lot of pointers to other objects) or higher coding -requirements (when you want to follow all those pointers to the object -you desire). -

      - -

      -Therefore, we took over a concept which was already used in the C++ -standard template library, namely iterators and accessors. An accessor -is an object that looks like if it had all the information stored but -really only delegates the access to the right places; in fact, within -this library, accessor store almost no information but know where to -get everything from the complex and nested data structures the -triangulation object offers. They have a simple interface which allows -to extract any desired information from the triangulation and -therefore makes access much easier and safer in three ways: first it -performs range and parameter checking when in debugging mode; second, -it encapsulates the access to the real data from the user, hiding the -true data structures and thus allowing them without changing the user -programs as well as those parts of the library which only act through -accessors; and third by reducing the coding errors because of reduced -complexity, since the chains of indirect access are replaces by simple -commands. -

      - -

      -Iterators are a related concept: while accessors act as if they were -structures with data contained in them, iterators act as if they were -pointers pointing to accessors. You can dereference them using the --> and * operators as with any other pointer, but they have more -functionality. Essentially, they have overloaded ++ and -- operators, -which allow the next or previous object pointed to to be just about -anywhere in memory. A good introductory example are the iterators of -the STL list<T> class, which act on a linked list -as if it were a contiguous array. The iterators in this library go -even a step further: they do not point to different objects but rather -tell the associated accessor object which data to look at -next. -

      - -

      -Additionally, there are different versions of the iterators which -behave differently when being incremented or decremented: while -raw iterators let the associated accessor point to any of the -objects it is made for, normal iterators always point to -objects which are in use. Usually, you will not want to see cells or -lines which are there but are unused by the triangulation (these cells -are somewhat like holes in the arrays of the triangulation; such -things happen when unrefining a cell, the freed memory is then kept -for a while because of better efficiency), so you will almost never -want to use raw iterators; they are mostly there for internal use in -the library. Normal iterators are almost like raw iterators, but -whenever you call the ++ or -- operator, the look at what they are -pointing at and skip all unused elements by increasing or decreasing -the pointer as often as necessary to reach the next used object. -

      - -

      -Finally, there are active iterators, which are the most -important ones. They are like normal iterators but only point to -active cells or lines. By active we mean that they have no children; -in the context in which this library is used, this is equivalent to -the fact that we do computations on these cells, lines or -whatever. Active iterators are normal iterators which skip over all -non-active cells, lines, etc when being incremented or decremented. -

      - - - - -

      -The triangulation accessor hierarchy -

      - -

      -The triangulation accessors are used to retrieve and store data in the -triangulation. There exist accessors for lines in one and higher -dimensions, accessors for quads in two and higher dimensions, and so -on. The general naming scheme is as follows: -

        -
      • TriaAccessor<dim> is a general base class - which is of not much interest. -
      • TriaObjectAccessor<objectdim,spacedim> denotes - an accessor for an object with dimension - objectdim in a spacedim dimensional - space. It is derived from TriaAccessor<spacedim>. -
      • CellAccessor<dim> presents the special - properties that a cell has. It is therefore derived from - TriaObjectAccessor<spacedimdim,spacedim>. -
      -

      - -

      -Their inheritance trees in the different space dimensions therefore -look like this: -

      - -
      - -
      - -
      -

      - -


      - -
      - -
      -

      - -


      - -
      - -
      -

      - -


      - -

      -Some of the data is only useful if an object is a cell. For example, -neighborship is only accessible for cells, while faces (e.g. lines in -2D) can't access their neighbors (neither the adjacent cells, nor the -other faces it touches). Therefore, the CellAccessor classes are -derived from whatever object a cell is in the respective dimension, -i.e. from lines in 1D, from quads in 2D, and so on. -

      - - - - -

      -Typedefs of the Triangulation class to iterators and accessors -

      - -

      -The Triangulation<1> class declares the following data -types which involve accessors: -

      -    typedef TriaRawIterator   <1,CellAccessor<1> >    raw_line_iterator;
      -    typedef TriaIterator      <1,CellAccessor<1> >        line_iterator;
      -    typedef TriaActiveIterator<1,CellAccessor<1> > active_line_iterator;
      -
      -    typedef    raw_line_iterator    raw_cell_iterator;
      -    typedef        line_iterator        cell_iterator;
      -    typedef active_line_iterator active_cell_iterator; 
      -
      -Since lines are cells in one space dimension, all line iterators are -cell iterators as well. -

      - -

      -In two space dimensions, the following types are declared by the -Triangulation<2> class: -

      -    typedef TriaRawIterator   <2,TriaObjectAccessor<1, 2> >    raw_line_iterator;
      -    typedef TriaIterator      <2,TriaObjectAccessor<1, 2> >        line_iterator;
      -    typedef TriaActiveIterator<2,TriaObjectAccessor<1, 2> > active_line_iterator;
      -    
      -    typedef TriaRawIterator   <2,CellAccessor<2> >    raw_quad_iterator;
      -    typedef TriaIterator      <2,CellAccessor<2> >        quad_iterator;
      -    typedef TriaActiveIterator<2,CellAccessor<2> > active_quad_iterator;
      -
      -    typedef    raw_quad_iterator    raw_cell_iterator;
      -    typedef        quad_iterator        cell_iterator;
      -    typedef active_quad_iterator active_cell_iterator;
      -
      -    typedef    raw_line_iterator    raw_face_iterator;
      -    typedef        line_iterator        face_iterator;
      -    typedef active_line_iterator active_face_iterator;    
      -
      -Since in this space dimension, quads are cells and lines are the faces -of cells, the appropriate face and cell iterators are declared in -terms of the underlying accessor types. -

      - - -

      -In three space dimensions, the following types are declared by the -Triangulation<3> class: -

      -    typedef TriaRawIterator   <3,TriaObjectAccessor<1, 3> >    raw_line_iterator;
      -    typedef TriaIterator      <3,TriaObjectAccessor<1, 3> >        line_iterator;
      -    typedef TriaActiveIterator<3,TriaObjectAccessor<1, 3> > active_line_iterator;
      -    
      -    typedef TriaRawIterator   <3,TriaObjectAccessor<2, 3> >    raw_quad_iterator;
      -    typedef TriaIterator      <3,TriaObjectAccessor<2, 3> >        quad_iterator;
      -    typedef TriaActiveIterator<3,TriaObjectAccessor<2, 3> > active_quad_iterator;
      -
      -    typedef TriaRawIterator   <3,CellAccessor<3> >    raw_hex_iterator;
      -    typedef TriaIterator      <3,CellAccessor<3> >        hex_iterator;
      -    typedef TriaActiveIterator<3,CellAccessor<3> > active_hex_iterator;
      -
      -    typedef    raw_hex_iterator    raw_cell_iterator;
      -    typedef        hex_iterator        cell_iterator;
      -    typedef active_hex_iterator active_cell_iterator;
      -
      -    typedef    raw_quad_iterator    raw_face_iterator;
      -    typedef        quad_iterator        face_iterator;
      -    typedef active_quad_iterator active_face_iterator;    
      -
      -Since in this space dimension, hexes are cells and quads are the faces -of cells, the appropriate face and cell iterators are declared in -terms of the underlying accessor types. -

      - - - - -

      Functions offered by triangulation accessors

      - -

      -We briefly state a short list of the functions offered by the -triangulation accessors. For a more complete discussion of these -functions, please refer to the online -API -documentation of the `grid' classes. These functions can be -accessed by iterator->function() if iterator -is a cell-, face-, hex-, quad-, or line-iterator. Some functions are -not available for all iterator types, which is noted for the -individual entries. -

      - -
      -
      - level () -
      - -
      - Return the hierarchical refinement level on - which this object lives. -
      - - -
      - index () -
      - -
      - Return the index within the hierarchical refinement level on - which this object lives. -
      - - -
      - get_triangulation () -
      - -
      - Return a reference to the triangulation to which this object belongs. -
      - - -
      - vertex_index (vertex_number) -
      - -
      - Return the global index of one of the vertices of this object. -
      - - -
      - vertex (vertex_number) -
      - -
      - Return the position of the respective vertex in space. -
      - - -
      - used () -
      - -
      - Return whether the object is used. The return value is - true for all iterators that are either normal iterators - or active iterators, only raw iterators can return - false. Since raw iterators are only used in the - interiors of the library, you will not usually need this function. -
      - - -
      - set_used () / clear_used () -
      - -
      - Set or clear the flag that describes whether the object is used by - the triangulation. Only for internal use. -
      - - -
      - user_flag_set () -
      - -
      - Return whether the user flag is set. -
      - - -
      - set_user_flag () / clear_user_flag () -
      - -
      - Set or clear the flag that might be used by a user to indicate that - something should happen with this object. -
      - - -
      - recursively_set_user_flag () / recursively_clear_user_flag () -
      - -
      - Set or clear the user flag for this cell and all its descendants. -
      - - -
      - user_pointer () -
      - -
      - Query the pointer belonging to this object which may be used by - the user to store additional information with this object. -
      - - -
      - set_user_pointer () / clear_user_pointer () -
      - -
      - Set or clear a pointer belonging to this object which may be used by - the user to store additional information with this object. -
      - - -
      - child (child_number) -
      - -
      - Return an iterator to one of the children of this object. -
      - - -
      - child_index (child_number) -
      - -
      - Return the index of the child within the next finer level of the - triangulation. -
      - - -
      - set_children (index), clear_children () -
      - -
      - Only for internal use. -
      - - -
      - has_children () -
      - -
      - Return whether an object has children, i.e. whether it is further - refined. If it has children, then it is not active. -
      - - -
      - max_refinement_depth () -
      - -
      - Return how often this cell or one of its children is refined. -
      - - -
      - boundary_indicator -
      - -
      - Return the number of the boundary at which this object lies, if the - object has a dimension less than the space dimension. -
      - - -
      - set_boundary_indicator (boundary_id) -
      - -
      - Set the number of the boundary to which this object belongs. -
      - - -
      - at_boundary () -
      - -
      - Return whether this object is at the boundary (if the dimension of - the object is less than the space dimension), or one of its faces is - at the boundary for cells. -
      - - -
      - has_boundary_lines () -
      - -
      - Return whether one of the lines bounding this cell is at the - boundary. For 1d and 2d this is equivalent to at_boundary, - in 3d, there are cases where bounding lines of a hex are at the - boundary, while the faces are in the interior. (Only for cell - iterators.) -
      - - -
      - diameter () -
      - -
      - Return the diameter of the object. -
      - - -
      - center () -
      - -
      - Return the coordinates of the center of the object. -
      - - -
      - barycenter () -
      - -
      - Return the coordinates of the barycenter of the object. -
      - - -
      - measure () -
      - -
      - Return the length, area, or volume of an object, depending on the - dimension of the object. -
      - - -
      - point_inside (point) -
      - -
      - Return whether the given point is inside this cell, or rather the - (bi-, tri-)linearly mapped image of the unit cell with the vertices - of this cell. (Only for cell iterators.) -
      - - -
      - number_of_children () -
      - -
      - Accumulated number of children and their children. -
      - - -
      - line (line_number) -
      - -
      - Return an iterator to one of the bounding lines of this object. (Only - for iterators to quadrilaterals and hexahedra.) -
      - - -
      - line_index (line_number) -
      - -
      - Return the index of one of the bounding lines of this object. The - level index is the same as that of the present object. (Only - for iterators to quadrilaterals and hexahedra.) -
      - - -
      - quad (quad_number) -
      - -
      - Return an iterator to one of the bounding quadrilaterals of this - object. (Only for iterators to hexahedra.) -
      - - -
      - line_index (line_number) -
      - -
      - Return the index of one of the bounding quadrilaterals of this - object. The level index is the same as that of the present - object. (Only for iterators to hexahedra.) -
      - - -
      - neighbor (neighbor_number) -
      - -
      - Return iterator to one of the neighbors. (Only for cell iterators.) -
      - - -
      - neighbor_index (neighbor_number) / neighbor_level (neighbor_number) -
      - -
      - Return number and level of one of the neighbors. (Only for cell - iterators.) -
      - - -
      - set_neighbor () -
      - -
      - Set a neighbor. Only for internal use. (Only for cell iterators.) -
      - - -
      - neighbor_of_neighbor (neighbor_number) -
      - -
      - Return the how-manyth neighbor the present cell is of the neighbor - specified by the argument. (Only for cell iterators.) -
      - - -
      - at_boundary (face_number) -
      - -
      - Return whether this cell's given face is at the boundary. (Only for - cell iterators.) -
      - - -
      - refine_flag_set () -
      - -
      - Return whether the refinement flag is set or not for the present - cell. (Only for cell iterators.) -
      - - -
      - set_refine_flag () / clear_refine_flag () -
      - -
      - Set/clear the flag indicating refinement. (Only for cell iterators.) -
      - - -
      - coarsen_flag_set () -
      - -
      - Query whether the flag indicating coarsening is set for this - object. (Only for cell iterators.) -
      - - -
      - set_coarsen_flag () / claer_coarsen_flag () -
      - -
      - Set/clear the flag indicating coarsening. (Only for cell iterators.) -
      - - -
      - face (face_number) -
      - -
      - Return an iterator to one of the faces of this cell, if dimension is - greater than one. (Only for cell iterators.) -
      - - -
      - material_id () -
      - -
      - Return the material number of this cell. (Only for cell iterators.) -
      - - -
      - set_material_id (id) -
      - -
      - Set the material number of this cell. (Only for cell iterators.) -
      - - -
      - active () -
      - -
      - Return whether this cell is active, i.e. has no children. (Only for - cell iterators.) -
      -
      - - - - -

      -The degree of freedom accessor hierarchy -

      - -

      -The DoFAccessor classes provide access to the degree of freedom -information associated with cells, lines, etc. The inheritance -relationship is much the same as for the triangulation accessor -classes, as can be seen from the following pictures. - -


      - -
      - -
      -

      - - -


      - -
      - -
      -

      - - -


      - -
      - -
      -

      - -


      - -

      -The main difference to the triangulation accessor hierarchy is that we -want the DoF accessors to provide the information about the degrees of -freedom, but for convenience also that of the triangulation. This way, -we can get all the information from one object rather than needing two -which work in parallel, and the class hierarchy shown above does -exactly this. -

      - -

      -For the named reason, it is necessary to derive the -DoFObjectAccessor<1,dim> from the -TriaObjectAccessor<1,dim> class of the -triangulation accessor hierarchy, as well as the -DoFObjectAccessor<2,dim> from the -TriaObjectAccessor<2,dim>. However, we would also -like to include the functionality added by the CellAccessor class; -this is done through some template magic: when in one space dimension, -the DoFObjectAccessor<1,1> is derived from -CellAccessor<1>, while when in higher dimensions, it is derived -from DoFObjectAccessor<1,dim>; the same applies for -the DoFObjectAccessor<2,dim> class. Note that this -way, CellAccessor is always a base class to DoFCellAccessor and the -inheritance lattice is dimension dependant; the exact way of achieving -this is complicated but not of interest here. -

      - - - -

      -Typedefs of the DoFHandler class to iterators and accessors -

      - -

      -The typedefs done by the DoFHandler class are much alike those done by -the Triangulation class. They could be summarized as follows: -

      - -

      -For one space dimension: -

      -    typedef TriaRawIterator   <1,DoFCellAccessor<1> >    raw_line_iterator;
      -    typedef TriaIterator      <1,DoFCellAccessor<1> >        line_iterator;
      -    typedef TriaActiveIterator<1,DoFCellAccessor<1> > active_line_iterator;
      -
      -    typedef    raw_line_iterator    raw_cell_iterator;
      -    typedef        line_iterator        cell_iterator;
      -    typedef active_line_iterator active_cell_iterator; 
      -
      -Since lines are cells in one space dimension, all line iterators are -cell iterators as well. -

      - -

      -For two space dimensions: -

      -    typedef TriaRawIterator   <2,DoFObjectAccessor<1, 2> >    raw_line_iterator;
      -    typedef TriaIterator      <2,DoFObjectAccessor<1, 2> >        line_iterator;
      -    typedef TriaActiveIterator<2,DoFObjectAccessor<1, 2> > active_line_iterator;
      -    
      -    typedef TriaRawIterator   <2,DoFCellAccessor<2> >    raw_quad_iterator;
      -    typedef TriaIterator      <2,DoFCellAccessor<2> >        quad_iterator;
      -    typedef TriaActiveIterator<2,DoFCellAccessor<2> > active_quad_iterator;
      -
      -    typedef    raw_quad_iterator    raw_cell_iterator;
      -    typedef        quad_iterator        cell_iterator;
      -    typedef active_quad_iterator active_cell_iterator;
      -
      -    typedef    raw_line_iterator    raw_face_iterator;
      -    typedef        line_iterator        face_iterator;
      -    typedef active_line_iterator active_face_iterator;    
      -
      -

      - -

      -For three space dimensions: -

      -    typedef TriaRawIterator   <3,DoFObjectAccessor<1, 3> >    raw_line_iterator;
      -    typedef TriaIterator      <3,DoFObjectAccessor<1, 3> >        line_iterator;
      -    typedef TriaActiveIterator<3,DoFObjectAccessor<1, 3> > active_line_iterator;
      -
      -    typedef TriaRawIterator   <3,DoFObjectAccessor<2, 3> >    raw_quad_iterator;
      -    typedef TriaIterator      <3,DoFObjectAccessor<2, 3> >        quad_iterator;
      -    typedef TriaActiveIterator<3,DoFObjectAccessor<2, 3> > active_quad_iterator;
      -
      -    typedef TriaRawIterator   <3,DoFCellAccessor<3> >         raw_hex_iterator;
      -    typedef TriaIterator      <3,DoFCellAccessor<3> >             hex_iterator;
      -    typedef TriaActiveIterator<3,DoFCellAccessor<3> >      active_hex_iterator;
      -
      -    typedef    raw_hex_iterator    raw_cell_iterator;
      -    typedef        hex_iterator        cell_iterator;
      -    typedef active_hex_iterator active_cell_iterator;
      -
      -    typedef    raw_quad_iterator    raw_face_iterator;
      -    typedef        quad_iterator        face_iterator;
      -    typedef active_quad_iterator active_face_iterator;    
      -
      -

      - - - - -

      Functions offered by degree of freedom accessors

      - -

      -Since degree of freedom accessors are derived from triangulation -accessors, they inherit the functionality of these accessors, but add -some of their own. We only list the additional functionality -below. For a full reference, including data types of parameters and -return values, please refer to the general -API -documentation of the `DoF' classes. -

      - - -
      -
      - dof_index (dof_number) -
      - -
      - Return the global index of one of the DoFs on this object. -
      - - -
      - set_dof_index (dof_number, index) -
      - -
      - Set the index of a DoF. Only for internal use. -
      - - -
      - vertex_dof_index (vertex_number, dof_number) -
      - -
      - Return the index of one of the DoFs on one of the vertices of this - object. -
      - - -
      - set_vertex_dof_index (...) -
      - -
      - Set the vertex DoF index. Only for internal use. -
      - - -
      - get_dof_indices (vector_of_indices) -
      - -
      - Return a vector of the indices of the DoFs on this object. -
      - - -
      - get_dof_values (global_values, local_values) -
      - -
      - Extract and return the values of the DoFs on this object from a data - vector defined on all DoFs. -
      - - -
      - set_dof_values (local_values, global_values) -
      - -
      - Reverse operation: take values of DoFs on this object, and set them - into a global data vector. -
      - - -
      - distribute_local_to_global (local_source, global_destination) -
      - -
      - Add the elements of local_source, defining values of the degrees of - freedom on this object, to the elements of the global data - vector. The two parameters may be either vectors or matrices. -
      - - -
      - get_interpolated_dof_values (global_values, local_interpolation) -
      - -
      - Interpolate the global field to this cell. If this cell is active, - then this is the restriction of the global field to this cell, - but when this cell is not active then it is the interpolation of the - restriction of the field to the child cells and the interpolation to - the present one. (For cell iterators only.) -
      - - -
      - set_dof_values_by_interpolation (local_values, global_interpolation) -
      - -
      - Inverse operation: interpolate the local values to the children (if - this cell is not active) and set the respective values in the global - vector. (For cell iterators only.) -
      -
      - - -
      - -
      -Wolfgang Bangerth, 1998, 1999, 2000 -
      -

       

      - - - - - - - diff --git a/deal.II/doc/reports/codimension-one/desimone-heltai-manigrasso.pdf b/deal.II/doc/reports/codimension-one/desimone-heltai-manigrasso.pdf deleted file mode 100644 index d64a5e5bc0dbf8f1f4307996d1a78e98390a56d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353922 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 q(R(9FTs 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 diff --git a/deal.II/doc/reports/index.html b/deal.II/doc/reports/index.html index f7ca37206e..9a2246b474 100644 --- a/deal.II/doc/reports/index.html +++ b/deal.II/doc/reports/index.html @@ -24,7 +24,7 @@
      • A brief report about the classes involved in the - iterators and accessors used to access cells in the triangulations and the data thereon, such as their geometry, the number of the @@ -35,7 +35,7 @@
      • - A brief report on mapping functions of higher polynomial degrees (by Ralf Hartmann). These allow the realisation of higher order boundary approximations. This report @@ -45,37 +45,30 @@
      • A report on - assembling matrices (by Wolfgang Bangerth). This report looks in particular at how matrices are assembled for vector-valued problems, and how things change if vector-valued finite elements are used for which the shape functions have more than one non-zero vector component, such as Nedelec or - Raviart-Thomas elements. There are printable - versions of the report - in postscript and - PDF format. + Raviart-Thomas elements.
      • A very detailed report on - Nedelec elements (by Anna Schneebeli, University of Basel, Switzerland). It explains the construction and application of Nedelec edge elements for H-curl spaces, as used, for example, in the numerical solution of the Maxwell equations. It also gives numerical results obtained with deal.II. - There is also a postscript version of the report.
      • A report on the - codimension one capabilities of the library (by Antonio DeSimone, Luca Heltai and Cataldo Manigrasso, SISSA, Trieste, Italy). It explains in detail how to use the diff --git a/deal.II/doc/reports/mapping_q/img1.gif b/deal.II/doc/reports/mapping_q/img1.gif deleted file mode 100644 index 3afa2db8d0d9339065e8867e39bc46eb5b68be9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?wbhEHb+Z^fq|Dn2gC)L;lN_O;iPA_t&Zk`OB)p`bc7i>5?8Ha4DjI;Qu0_R nk-hHygMvT%!;fx|@DP*lW)zrVP%w?jbCE|ITgx(4CI)K&E;K2- diff --git a/deal.II/doc/reports/mapping_q/img10.gif b/deal.II/doc/reports/mapping_q/img10.gif deleted file mode 100644 index f1b12532376fff75d99967e6d957e9b6269060dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVX_V@Vt`uqGG;|S~eg$dvb zfgKCm&;)2QVWBGt0~|EF5a2+JfEF+{d@&}51P7N|IE-2Xz#IZj7z`4VK%jxS3fUw8 z46}`mMQ|2UJyalv0ssXA8UT=I!`dDWfRbW-VC=!IL&AQNl*fb<18;YXT8K%;*vSV7 zZjoGf0-eK#4Wv!c3X_+UQg9bcq~HLS1O*4%FpvaeLV*QBTS+h=)Im53hgqHy1pojo fqGAHTAb?lkya4DdYu?Pcv**vCLyI15IRXGXMHa6B diff --git a/deal.II/doc/reports/mapping_q/img11.gif b/deal.II/doc/reports/mapping_q/img11.gif deleted file mode 100644 index f3a7034453282fc5ec072f0bab377f0f698b4027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZ?wbhEHblwpu#c+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{Do$EQCwbEG^ z2B%auu7~ex-v8gjaKIo^LyOJ9!6<;ofUC8!aDxbg;xWM!Z>#n{_>k40F}-uI^W&ce zfh?V_PTvD`R!wa#dUU}5kr2DOIGdpmPqPpc11A?li83>bw-_gnkY|n!3nv4&6^m?V O(vqdimfHz3SOWmfSVkBC diff --git a/deal.II/doc/reports/mapping_q/img12.gif b/deal.II/doc/reports/mapping_q/img12.gif deleted file mode 100644 index 7e40605864f83701a523c0fc173223f69b83949e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6CvNk%w1VLbpJ0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui06hR706+x(@X1N5y*TSFnR|jlaL=&> z+du&frIK)FEHo{|k5fDYfa1WQ(7*sV7zatg*f0nurka%Y;xHN$10bnEAPC^_D08$l zpXjuD&2GChgl#tQ(*y`!Z(Tx2Ob`HL4+}9%3kh+48(u&M06P<~017S+oN1#dJqQv44WEkuH>soYFa%(LNW%ac4p?lOkU)_xS~vt4dyqguflLt?Hv~BLfLO?rC{wCj$&x|@06Us* Bc})NS diff --git a/deal.II/doc/reports/mapping_q/img13.gif b/deal.II/doc/reports/mapping_q/img13.gif deleted file mode 100644 index c7a3aeaac1bcb8c0403bf7365884cbb3cd5960dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1165 zcmV;81akXFNk%v~VX*;x0Du4h0002^{P-*Y000270ek>J0{)DTsmtvTqnxzbi?iOm z`wxcVNS5Y_rVyaE?u)PiAR8>b;PB4(J|nBy8p7W}_n|3~#-{TLjhc!*s?@P$Uboy% zu29rKpNc+2xpeE=y^A-m-V^oi_4JrUtTaoT1n+gy z*Dp*tSEdCvOlJ+xMu!DvjS*#J;G~l)$A#Sa*k#X2N0WmLTGU$7nOml2N2v5`)^e-* zthYKs?k=mR^1dW|(4* zNoJX5o{46fYOcv+8e2xme(bwZPM?MzoEoL4GH992{Xs>^$qVA&@nI~9Rn zkA@K1N=*s|nP?e6PKpv=Rd(l&WR1*OsdBS0#iuHvff_0n>@>G&s_Y>)VyUj)g&L}@ z&WcZwB#l~&uDDXRkvf7Q>IUVvX4s1ZMVLK zI+U{6L3O0IRLS}&x`M4+OdE^3(4Hlvt>x|;=TYA^8}FlhJj<8AmJ%HB z1_|Q>qIU-mv#>~@5ey%7e^6WyxmD;@o^=UzmY|p~DcF7<`#`W8oigf>=Z;?6z_Yo#>CpZ@Jaob*pQhT*dpl^6hPK3f^$`R1RGe){S+PyhfswmeH# diff --git a/deal.II/doc/reports/mapping_q/img14.gif b/deal.II/doc/reports/mapping_q/img14.gif deleted file mode 100644 index e9c184cb6ec84d972db6bab6f875f38537d0c566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmZ?wbhEHbv|x~DXkh?>6)RTEnKNg?gb6JzEfp0NIXO8A2?Zw6~3mQei3!pOiNz@P)t0J778^`C-DUrOe@j8)T)1#xuk?qU}{ zll3NEZD@mjlxhxfqZLIKe&e1~676cB7`ceyylL*U*A z`Be`kB%7}7sXPDv_kRmUmfYNIwe(meHm)`mPF8jXSDsYXRQ24Tcpk2FF5`**jQnhD z%nbe-JV_QEeGIG`%-kD#8CN#!+_ihp-hKNI96ZR#;Hk{KWG6cxcT1Kg=L#jxP7PZY zezV2)%xlz`_aTg%P?7h z$zsLgq{imZ#AS*$f(sngMOn_88l)YFF^gni=~EE)mf&Q*!Yg#a_~fRgr>7evzvE(L Gum%9q)OV!- diff --git a/deal.II/doc/reports/mapping_q/img15.gif b/deal.II/doc/reports/mapping_q/img15.gif deleted file mode 100644 index 0bab0d582f72d46fe0ad25c7608922b2e85074e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+9Nk%w1VXgos0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0ImQg06+x(@X1N5y*TU5yZ>M)W(qS} zLqj}>dA^kT3LAkqz)B&=&IAYmOk%_7EC&aWR#`Zo(1oEA02C$*#qdNBQo6c?QnNT_ zz!rjIt3k8h@VIdFX%FE2nTLwLS z3WgX8(asmPM^3{E2QXzEu2|nJYYz+8L*o;M3V~Ze+mL--6aoQR5>@KxP!0^B$ojHt zg1rs~qC`1UkV1k4)7Y3gKtMr)2?qf5%XkH&l?whGF=Xt=U|=dK4F+Nemmy&T00F5< zNYD?COPC8}M#5Kz=Y<3WpdCQqs}2H{*pez;%CxD|r%;VDq_ga8B! z$`Km??+(#>nJU;Y@R7~gJn1H+99E$02$mQG3}9CUmm~l*4rukdw_!VLY+Nm%*QcNX z1qJ><-hh{3C$JJQZz5p#1-r}z3IIN&NRiG)^MoA)ozZXH43#l_UL8QkY0rjB0YExJ z@wrH=Cpd`KMJy2l$O$l@nB1>g!@>O|pN{;t!QALBYT2^jq67!53^?dGp#UdX=h1(9 zAf9}sf*EOS;!Pp;h0mDnd^T7VMgXq2bwc$!EFvck3jITrh06SmO2KN8} diff --git a/deal.II/doc/reports/mapping_q/img16.gif b/deal.II/doc/reports/mapping_q/img16.gif deleted file mode 100644 index 655453fbd7c5acbc4c37c04721c6cf1425415825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-WINk%w1VM_oe0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui080QS06+x(@X1N5y*TU5ySKzr4NgKK zj-ZJW!UPClAQ%5^I60y~A`y5j8b#QFfH+WipQx0>L=dLftai)oN(Bk%1hrrQ z7z>0&fb{qz<{U);5LZ}igrcD^czbpdH+nn@Y6K}0fq#sRj*pO$l8%TAeiZ=(ni~iU zfreZMd(h>%p;_vYB^7Hid_V@TwF7eb8Fbt#;G&qLL z1_A>B3UtX-%9J@M0vynqK*vM|7B^HJV31)z!-I_%4lH1$ff~YF6dcI7*dmC7eiB3x zB&Ta46&`1FWGna}lLUek4gg@~pxF#7nv$-o@P>{}33P_B>|meTEt)`(}CNGGZ%*Z&YX+>T!yf8=8HC<4wv_nRwn=|SNd1<;5 zMbQ;1>9Me>NtR{vn3vEpOU!8^H7zZzY%}d*S+=#mV9yVq-=6b1Pe^F6w~zP^@CO;- z6MDT~tJSJhs*H>bxm=!_nktn_MIw< z03d+%N%-{1#Vt57j!P2C;?LGepS8$Xy~%q=ynU#bWm@atL>|jA?=(()fyX7-ZVrt> z!ImQ-w{oV^u8!8HhB0w`$VH;F#{tFp1ONgbc^J7V%&H*iVHuMEq|pe`&kJuur|d;B zfRAQoqd5$sF!eA@7H395wwnk93cre<29Zgc>LPU!QcOI0g07`o+cuW9dy-N*yRP5Z z)X{V6_8R=r*xo+|2Ja4;hb{MpiG;)vs}W`?y??@=Xuy+mS(Eo?wnH$ENNn?jqh=RA zx-kdLYL~@adkQOVjm{~8C`afI={$@AtF%FlM^w{;?O7AZhC0*2o4eDF zVEN4qlvJOMhRRbi?RWXM_Vv0eXeInpBJ<;Z{a584);cK{Lx}nP>to5Bhj=EAU6K>> zdL7gd3D+M2Uc~#&p-8$NfUvTFp+HV}HR-^FX|1_ay%a>#pTh*fsE3mhw>2O@U-$mq zY`CR*SJ#86mZbLA;qk8nyON8~`aU3<%A({@@CoYafLh>($W~EEx{j-N$GnKz2O&d|Ny`7$Nj5*D-HtKUi+)rr%5r;LBGELN*YCRWN=TV?9{v1h zl6Q$xo3MT-R~Gjqgz6)hs>&qK58UVx69W5980>Ik9|M{Efs2Lj>HT#|(t#LMDEzlw zn`Cy|Tu>ztpDDGzD5~l}oH4*5P8dOa4g@Dw7qlSHYV;c`f$i=W2BEU)iXHbT2VOR1 zxV})*bH3+n@zgf?z~(c=v4tmdEEq2{S};or6a_1mR@8GZe}^3OZ)8d>d)L}b&g!AM znVA(1khdVac!0{TB|L8*2F=XsZIlXjb5|G*yv(H3yCCnCZO+uuYuSkrZhwD2XQgSy z!W`b9+u_;m=*erH* zeM9^L)0Y;d&NT)R1d-qD)35QgqU4wsZE4XPChu4h8m(3o$={5d!_(f1d9*~%x`U1% zd~m~&4|B2GXBUfuoJsm*K4yPd<+*Yb4a^H}ysC)@lcWpAIHThR05h_5ZXivvqkVqvB*=A=_B%8$ywk zPq&sbbo1y;0enXZU5##VCMSB*xq}|;S4||dV`81*MkP3`VY%%1@%*a`{HO1%B)%~# zUc|X;x?hr6A3w}ZoV$9-a??gJF@GTULE7EitwpQT@1>VEtwgJ^sBBpm*(jUT*d}oP UQfzk^A+5T=h0_E!Gyr`60U$FQuK)l5 diff --git a/deal.II/doc/reports/mapping_q/img18.gif b/deal.II/doc/reports/mapping_q/img18.gif deleted file mode 100644 index 273a7d4f6af85defdb7b7e1a67c1ace482ddb4a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmZ?wbhEHb6k$+cc+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{DoM)j$~<` zXsWJk>%MR-f61T~OBEo}z+(YGfOW{tj-JKu(J&w{IMafl5ex_bDkV64AaVf*!C10l zwOjF{7EmM}h5uzs7zrEfdi^X zta%WdLco^;#HJpJMjm#1h<8OJEJM zHVZqRI4GEVVzL8Zw;#kd?Xm)a=g%1&fKFhmY`@n%2%ye=^mV?~I6s<{EvC!uD(%!& z4t~Uyy5sBI>sNezo`2b_U0N-vR(1q4j%HFHD&3^KKpgJDT% z;e{AxsNsejcIe@UAciR7h$NP1;)y6`AXt7Ww&-FEkomIS1qL`~9R&(_cY-y6y+}-r zzT~J513SEi#5Nl=V2S|@6wrW<<+QLDYBS0(ToTlvFo2R?5C;sGBvdJpSJ*|_&v67L z2tqOrV0S^587P1j2@A}rLJ)S6h{-oBA|a;~?X|>DorN@jfC3FD5S$66QNjQL1{@$j zlRX4?S|JJ$@Kpd|putvEaH{jqIeh&g2YELw>V=ph2=;(t8vqF_Iir?i3IYRBc92H- zXsT7Gn+5uv1=GmTr~`A(WzPi@{s|Dk0^|juW^yA00Sc~9*q}h47)fI!3Am!6t1rzy z8!Z4MEuiiK4luCp0;&${+_$N`YcIE@VS{8C2lV@BOY>@xz##?H2$rT8+-t9@*h;_v z5B_RVuwf}2aLA_`Ea#BI>#Az)H>mbHj4@q;ifZr)_55)Wq+@&gPkiYUBI zP=IU&BB?Og7{MJ{!Opv(YXVF{K9EObxs}zxbZ)p}wA2pfQ8hCdEL}m(I5vQDybc9w zzygW6dr{9Xj9vBuHfT+WV|q1XM;H4*5$Y*kz7TgPcNg4(-x5Gr0KZ3q&6TQi_t0_% z2C%w80eKf*6$lAHiU4aT8p(l5Hio~T`GKgJT*g+cb>4!rFra=x2Pi!Vaz{Z9>j3 ie0Vz7uzeBG;IR3kbkXmFM5tMwa;}~Z1FM)IgEau$@jrY3 diff --git a/deal.II/doc/reports/mapping_q/img20.gif b/deal.II/doc/reports/mapping_q/img20.gif deleted file mode 100644 index 55356960d2aced86ca5f5b8120c5968fa53c9c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZ?wbhEHb6lPFhc+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{Dok1MQj65(UGs}!LSG@;4;Kw^aiTZ2aG0tS(iDGk@$^=8*TnA;eb zvFDstW7C5OmSrp_7eooNh-n5f_=%fV@^kVrva|EFi*oUDv+>sOb2N%Z^sBjvvT;}> O7c5!2Y`MH3gEasv8%8t$ diff --git a/deal.II/doc/reports/mapping_q/img21.gif b/deal.II/doc/reports/mapping_q/img21.gif deleted file mode 100644 index 0398f353ff7b3213e82e5349923bc5a939c7c108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmZ?wbhEHb6)RTEnKNg?gb6JzEfp0NIXO8A2?@x5)wQ-JexOf2J0h=Q2fcl$iN`TpaW73veSX}UxG?sO6I(bRqJwI?<>$b zUy^&jV%__i_y4sIE@F%^BJdMhL*tQ8$Pnxy&ByNx|*&{?oA&PB#L5kTN2B3 zy!$?P+%d3ul6+Zd;o{p*1uK=<8EQ4Yu1Hs+rDGxuH9N}Q%uGMotEMMurAn z9+emsCdR8um-b)3U~%h?;61x;o)Gi%S-cN--$=N9?P+UVaInCd9}TLR|K3L|IOJZy z)m3jGCh(zDp|L@f^ViLU7X}^%$$DEDFLop~HnH%^n{{?X$7T4n_uR zuH^KZa;#HkPs4)j)dpK#wbED5=-pgVRM=1?C?HhO6`-KW_k8l=Vyz9cRLd3admHpO z$hI}!Hdu8&=KQ|BzrTNYe0skB{(XOc|M>j+{`vj;|NnP2V1CfRVkJ6J^$5?u1%0Uk zJZx=IA4DfiWSa>*1xec??G)pHBC)z5a}!<0a=^X*o41+3XFf8(i7*c_S0$Y#+lH`zkv^kd1h z-E6ajSz-@ea8UVjXTw_#ffI=g+f+pkh;u%BG)0f=v0G)1>Z!KfOiMIdICYnvx;rCV zVPX%%0mgl09l6^tT$DJxpK-Fm2Y+(`g$!OskB;;PHI)nb2@H>KG3_;&(=8Ml9Q7%a x;YFd1^9j}&UPcByZ)OKE=(-CRALU%|#)w~S_LN*M>&-WU&f7Eax^OU90{}OZjp+aY diff --git a/deal.II/doc/reports/mapping_q/img22.gif b/deal.II/doc/reports/mapping_q/img22.gif deleted file mode 100644 index de29603058ed2c694692d866d5e8b53d2baf14ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AXHNk%w1VXgor0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0ImQf06+x(@X1N5y*TU5yZ>M)W(qS} zLqj}>dA^kT3LAkqz)B&=wJ0!&4X3jl903HavS>P=3qvIUC`^9A69G`!>JmuJqL}eo z2#&1AtZuvC@VI*TMQgW^p0ssLL1E3xTlOYAEtiQm)!o$SH#>dFX%0UJ_dkTdU z2cr)LkINXdMNPm82QXtCt5@F>27;a=;}eAn3u*|s3)g#F6aoQQ4^+-qPYw*8yy}8$ zg1rs~pg<{8kV1k4(9{TMaDadUK@tuC=$Eky1&#iHqdjf10N`85T!v%4B;{) zY=CM(Gzkezx|vz?CM0}wfL=&IpxFT>cM!b9#+B#c)~Itrs<%NZ?U z)>3uy(y-Dk!GW_aX@wA2PJls0=7(`FCZ0h6^Xto3OHa2z5Rfe0CpdUzz(Gh-n_8t; zpRW9QZ677=8=v{M!Nr~F@D_3!Mu4%}IXVVU1qg&S$N|thZGLT`AZ`gck7d lzyJzVA)y=$K6uP|VtFXyh$NP1;)y7xsN#w&wn$6_06UBh2Rr}( diff --git a/deal.II/doc/reports/mapping_q/img23.gif b/deal.II/doc/reports/mapping_q/img23.gif deleted file mode 100644 index af5f661ee65434adc85f7fd7b0a0a9ca5b44d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1618 zcmeH_`9IVN7{@;|lQpthDH#-%qeWv~CAKZqim9RKl53GGBig(|HJcC$xytdX95b$Q zM6L?=ye(oET!Y|ZS~?tid9@AK>PdOpwl^LZXS*3M0q-py#n2P~B2 zlLVN>=L>)wU;?;<0elb000Ni;xR8^R8`!5m*fK#dTa{FHdR1jlaw|<2;M*`O<&arPbSfsL-N22I0}kC zjYj&hQO8#d&O|#!2@nZ|(9|SdGHgiqD9{Fl4jL#NQu!ZOls95pV=@c~{3M3^1#|=J z0Xo#w(b7fELk-Xcgn$dc0VzoaFzARtLLFj(5M%;!GC3QUWrps(H+i=cly!Dp zx3A%MB{9r{Mtf@tds0{LNLo?uNk~% z9lO{=QunfhZ-3d)qrbjvsB~}PuH3{2F9&%pbt>!2(@KY{54R34+P%W)UX9<-q{T?u zjgedG)$`|Hg;%&VMy6`yT7B?-8hvJPauxTW=wLJb<6?`=jH+>@DoSTKBGZZPAm$Hw z*BfX2?w;Bjwq;7a{&g3BsoQ7nJahWDOipcxL-@wvzP!+(jc42}y%N$R9xWMt66z!D zh~qHXO*7(lBD1a1b*1FT_PXMUBF7O)*tL-esa?Y8hEtLECVKKibI-P(86Eq*E%cix zVrqW+^~BcdsJ8b~se!!Lx$&oV1;=Sxk*+a|`2k+Bid*QsSg}K(M(m35IPdr>RxdAJ z>+ECixV16%J{NUd6MO>KRMCgyjpHBsB%9^gPaHBCW9(0{uG(-U)mlu~Wp7{7ET~h09HeFojwmqr1{(!Slal;;;fg&O61gGfMju^$F#_uvJ3Y#qXy9=95 zYp3}?8+9h}TlDT5@msaW2Y7_~TMn;n8TCtEyOK&}L5KWWc0nh_?2r80e{D<7zw@Wl z`uwi<#|+EEG(y=|_*xu|px)Gs;J_aJo~%ia8!5tP4wEw)?|hgmh6C%k*LYOAi&U8>AGgK?n^||yigUF+BBL}`4H#rwzI&RWmS_GfXx|IT nM4FxP$LH*&wztMln~pV(8gTNgCYz#-=U)|Nhgff;Q1I>FsrM;Y diff --git a/deal.II/doc/reports/mapping_q/img24.gif b/deal.II/doc/reports/mapping_q/img24.gif deleted file mode 100644 index 8725fa85d80c1b96377a3aa379b7ab85b923ee97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmeH``#02S9LL{gR*eo_wu{S@w4d|*^t{jKd7szooM(&E=GC_QDo}w> zn3~D2llTVc0FHnPAb<%V0_rL-2~Z|r7xBGH1%iNLqN(>))qJ21=Q-&18xwPN=%7G# z4iNpjssKU(DzF6D50rw;F&o$gXamN;PO?%L8f0AqC^aBf;6n}K0TUOfxd3u#UBrBI z^t?u08d(Gm;0JK2PzRX0n5Bck8Z|9IAr^y9CvSC_Bnq+?Lyd+2Kur$nU0^v733vfb z0K;GkOqW2D9JDlTT~sxa`vx2sXoDnE8AGKFT`@$vr!0{CvH(2(=Lwc8MhRVf5Q(8f zS7*YGg0G9IU_wj*-5S$Ld*m^ILN1r zh6qxZItV607n34LC1Plho^*k#3OuiXN)2jc@c;Zb1{hN{Q-1+8C8)H8tfH*iXxdye zujV2_ecWs#=WDFu?8Zc$RsOxr#n&HPFxYr*p;L*lC3V@3JWY+PA?H+!y#zxyb)QT6 zstwYH^zlL0n6+Uadv%VBI#>AG{Kb9vq_!FMToL!#jP%{Q35lS5`9 zjGn7DZ6_P@J{tZhJUsYN9VrF9mA>!SbOsceOJje0GflR~R=_SheOMA1Fwb=0R?I9z z?zPY?UxFJ}(pYt|w5Ek`zK38;T6I4@GXMI5ZFb`a+VeHc7c8=2_B_lmGL3YpEOe3H zFnMRwt7kjX!1LAK8CW^#-PRtyk{cMtJ6`KiSS@tXDjZw=Do(H=)qSmg zcyLd6_33UI5jIl$W>DVrg1$~s#i^aXd-ue8_pH$RzjCs+Ygi7ybl0+9wr^AaZQK5s z)=lyKv3`OF{c-xSw1N0oKbB#_e7?vh*04b2bI!7W=6l|>oi!M5Bc0rrye6>O_ky;P zCOqpfbA*$!*(`qlrTZ2w#sN$1oibA0?6nVEY2KS)!rmE}z)57g<{n5p9PGqp`|=Z( zruiRB=Vm0`*T^}3tlcg(Jw)npkU#Xk#nd@eneLVq#dka;u>PDd%!;!#bGx4WR(MFL zSu*nC@D?A>o8D57HQr~^lS8y~GT)l^xXp5~&Aa(oEA6UCnd`$92nw#6z5J~p-NyfR z6(wd#E|l*6g=5>AU)&tO?|kb>wSI<2$Rmj-BgL}V(>s4r_X1<@x|v=2iBI`o@_7SC z!zEYxY@94hilQnRp=}lKB!~DG>4B+T12g9Cty_~Tzp2ubSO_nNI3B5W^f)1pY7Y$m zp{Uc7Ufl4z+qK+A&5gZY^~FB7giU(hRYy)|$!yJ!86E8HYoVEr`n8r3nnBqsJ01-S zZ7O4e+ULn0jXO?PF@ApR(AskB$(%V!6O|7w+b(su9&A0{IlJ4Xy!{vNzMyVTs#fqH z6lblFuKwht;2th7DMZ2!Y7;-tyq}r!^w(#Z;y&)+da+W<8Sg89;YmGJ{&MGB{qlZS zBcg18wTfLf=&(^)`fA+{e(8{nuYKujs~~B~8(K8GX!!Ca{oIk{Y(n%lzJx7$7geXs z8I5?#&v_prdAEXSy0UDXr`FLrRI@ZsGWsOJ)xGN81EcCfdBEwd!pLPCJIW>m(^L`9 zj&9E=370%O>zVT0yhoHROj1Fm1ZdOTUerRQvYSy!q9t#U2Rb(>N!&DyLT!yi@a7kbjTEq#PTr4{>5~G z#*(|m`F9mDR_6tp2Zt}W7g@!aIQD4qSS$5ES{;~UXFXFr+T@O*-iLUWiy@mr!P>t8 DnH7(s diff --git a/deal.II/doc/reports/mapping_q/img25.gif b/deal.II/doc/reports/mapping_q/img25.gif deleted file mode 100644 index 4a18c7e7be91a13f26f950110c1aacaa3057daaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 zcmeH``9IYA7st=cQ1r-6y2=*0H1_PoEkv@UQG=1Gw9wdhV~c2^u}$P!Z)GV=lXa>I z=~Gu^>_Q6ZGGr{p2$zt#CGK9!b_S3njQ~$2q0XTjQ}kSAo4Kl4%PseCvXw~g$5N-IOzl`dw|UYA4S;y-)md| zN5Fz401bpCM4=JTuLTfo@%h*7d_F+KemfNK+h`ifj!$U@;16>kl7$A z1pqHVkuVs(A2UhVA>lLj8YKe2Wimlpn(tD=4C(+1s21>ORv0|>z$NvLn)@53GdMF1wiX#gMKOY#Hg!ht6u3G*~2@DmW^37R2B=*4xp zaXuXr4bpnB6?iL9%};YH%&zR4+_bSN?aQ5Gu5hKLFrcUa6488!=H~~sF#M+3*8TpC zPz0#cqVoW8Pazr&JV8LrAVQ8m#;0I{usc9~8+?2YJQVOV`G5T{3Gkm6VDm44&<0?H zWUQ+S{<wyG}VIB8jUSRboT?@{h8#F1q)S2I-K784wFI;M5K zkCmN$Wn!5~Rz5|yQM)c^M0kASiHC5BlT?3^T}{AftK|^E@9#%s`-#4`jDV5E*h;MI zkM9RY=|?!Y{VFb1qs>kWNk1i)s#s;oUI}58zJ)i>w2u5~;1Z^5Pc3$S@=W!Gd)K?| zA#Cj7nwj?2qS!eC?S;YIsQg|x0=3qNJHqNPvG0(flj>tC&wThLrf#V9W%Wi#sq4$N zkL=0b$LG6{mut)1v9@rzkow4mf1DFcXU@fjux@`@?u`}LU6T_eh_!aH5K^7o=ds;H zxzKYb&Qsn++?6KpCh0#}XjP)WGD>MATeB0rb1Cd3(Rda+d1tNASW4|9>#@|z_mnYe z@BnKpMQ5YNEzSJ1wR^hRDn&8L>Ojk-44lp*_dn#!ZN5+lu2UDYh~BKr*}Ja_m)yKW zow|@q!cs_i0u?PKAr2&^qVtU%HcGKyv}tGTOeS(UzOj~^4-RYh2r~J`-y>z?nA*hr zdt$>!C-ZCf+B)7P3rBGtr2V#K&?!is=x|Ti%l6cnJ7H2&rB>hKMYA`8>&R(=Cm!|Z z->D+ey_4yd1fLjWFjJ+Zc-EUnE4kn5T~(TuGg(&GI<5L7>%E>wK_lX=9?*+#lk&@s zoc>B{$~vBP@d{zckJL(?IZ!odD_vRNx6Sxm#RUELx!OX;jMoK1iF9sUsF$;6@ThRO z2D1xMAuzUQ%y8rVab?a;yN?@Qej8|zBG-K7uoXAFr6FwQd919jYs-#&yWCcEfYns3 zZtqtPD{FK;xWiy(n&Efo!TLgHzyF!QI19sRZI+*Z`(hK$w0yn?zg2?#{#SgezN>S< zu;T|;HyZh)%W*q{KDYdzR#(nj1k;z%-am0zdF~3kww)ro{6GgX?A0KI3PV6aFZ}#-* z=`Io1iZK3bc9no1*qCF~ZJlwwy=7+MiRZ!)F>@rO3FyW?U8?cGY0-V`;e$86;N82vVJz53cb_o%LV9!^R`g@nntDvqSEm$-;+Wi(dzDN(HrT$a)u)M zoy|d{)5I4SKD8$1NF3XhJpHiK@G|M?*AefVujqND0o#!lM`}BGY2uvHtHtfph zxpCYH%eWf}X?bf3o+f@Z-7dom@rT_?B((>-5~4z{h#i){x?*l|>uO)ZHp_iIQj=22 z2AWRnQH6UIkyV=2>9&R^(&ddF;U60~q3nL|p>xg&cSNx-)TZpvSHq)1rw)l{v~%Seua=QLUw)S+`Ukn5srXqv7{|0gnH5 AN&o-= diff --git a/deal.II/doc/reports/mapping_q/img26.gif b/deal.II/doc/reports/mapping_q/img26.gif deleted file mode 100644 index 3a9ba08d64a6a52a34661d7b0200915a2327475b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2727 zcmeHG`9Bou8h?hAQKUo|$&zJoR8oi>(XnI;VPeck8pa?cWvy^6$5w`qLL9qc5Q7mh z9J{P3WtXMNl3^rq>zX^=`ybq&@ALflyx-@$yr0L!%vf9NdOZxlclcG?Kequ`0I>jk z0H*-3AP#T|fCIn)*aQd#J`NZ#fM*kQLJxB|z+k}oX6NKWqbNWtB)GzR;s%`{j{1e+ zVQ}JDK+)s?hXIUrUPs<+0X;F4dA6Fk2tzdxw?wE&yu;8jR0Pux15PYI2stRLFXnn@j1Fir> zKoEF&xqi4W4gzT&5P|^fbUL6=T$kbo&;XEg91wZHi$Rd^+|>*Ouz8IW0N79!3!MOJ z0Q_)N0vbEGNH_{`0)P&H0U!Z)8Q1!t6?ifvfK8zT*E=7F&w!!Bv-$J*0+*G}11L>U z0gwdFI#daB6P8&7=;Q@&4u`{FFxYD>nf2`&Ui6H-KzF_NHj;<;7ZV*6Fn|DI zHozle2;~6|A219c@HkiJf5u36fW`qBt>;F`?f=*RngI8c0e;;A@b3aIzm#cZ&fk&z zA}ZMK%G|aXVfo9?O{?-c;>FK+O?Fr1cRiLdijy*<74)Pi+m&K_Xoco!;P(22gh*~* z2I{utJ7jWkOQ!xY9=?ysi-S2j9xTn$&AI+UQ&D{dN_EMVd_x8zy*H#vH*w))}% zK7ODH4vHO!Pm^^{!cN@VoJ@ezGO8GNl2bVl$;>bHM zXQG1h_zHq4BJIhu7nGDQSedHrONhysyBE(PcqK1&nF8B z5DVjQaV5DKoppKSylWjd$axvDvR*am!P2>FZxj~%b~}&iW_0Imx8@_zl8Jf&` zb=L%!k)n0yLvwq+6pcuAwu)+hrIsx1^L?Z*FsbU%`~dT|%Urc^lML@2WnY*6v-f17 z&ej*1x3>2>*hL{$#B*a2xtA8+6f=BSlWXHH^xf%@nZ)~*4-ZOgKaBKP)tU)9$ogiQ zzbo!GDrY1u`<`mETkAr$P70jH5-N_RM0rf?Fw4n8BmLga0{55wEBb?1sLiaR722S5 z$g0P1QV6SVO}&W4;7o_CJM&nFvfGa13)!zv{uTPwJx{19z0bPY_1pXWozSh{t`Ab}>K$HwIyjV|qpeq$d0(_v91 zhNALdFev+{dnCqRUohRuFMqpA7j(dU&>DQc+OF9U5Z;D%jgqHd(;DH|5wO&}n> za}QOEKTAd17UEJ5TBY+D_jT7KDk(^cpKGa2gPLuy3iknqr6P1g!24w%$N4G^JYHb zWcI>>SbbL9`?eLqIjvsZcliznx({2GwZ>wnW@5Kv6tgPHRo(8}_SEXQM2!S=CSLh% zPuHl^m&Z1ZpPD-@`xNBzQ#5WTG@#9E8-2xAGWPqIXdkU^_aY=^@%_M{@u&L-8>!Dp zSfn71IK8=yJ{t41{|iC) P$JkI3z2_= zMTU>AHz$YCraBI{g%=!rxVqUI9IGUz^v%ijI?K}2&+8E~fra7j$?Yo(B@7x_BN-=n zxiP2eCV%qaNciY+CnMy4gP4A!IGYo1aZ3Xmr!!B4P#Xguk3H*T-gGhMN}()~3VT1! zW=ZybE*73VeqDa1l?I%AHnt2CrgL*va4N7f%+je7<~i)gut>b3Z0%m*g;t3of(+IG DD1S{S diff --git a/deal.II/doc/reports/mapping_q/img28.gif b/deal.II/doc/reports/mapping_q/img28.gif deleted file mode 100644 index 707c7df44a49451e852d738ed46b7ea77a513eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmV-h1El;%Nk%w1Vc`HC0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0O0^006+x(@X1N5y*TU5yZ>M)j$~<` zmf;L&>%MR-OGl$1I1+TrLLmTw1aX*227m%g03b|y#!dla(XQS4F?1YWDkLZG)WbKN)whCkr!@# z3j;JrTD{fe>>$ zd;SbM0v-ml55(+1B7hc13UxYYy`t)Yux9}pP@R#$2NMDkEwmealETL)BXe^607 zhJgfd7)Zj{he5RheMY?i;y{J~1Pi+P`)q|?(TOuT1gM$AHOac@CSd9I+j|R{F%}F` z&I@UF7i}R|Frc7-fCTkH9I))+fbg9RDE@U#FFRRb09Oa(cLHSL@IuaF^x22sTPDai z0RjaCB8z&ACGZFaICvmNJydX()EWSMID;Gruz+DzS6S8DTn{v;iviUPgQ12JaEOA1 z6rjf#0M)R^2?7Kpsbo-rXf_oEPwqja5rH()fO#S?*xW4$aM1$*T(BVIcohh+FfnHm(3d0|}>s6b%|+zcsz0h*Ptz=tM1;AaH|0L7@IoI#p` z1Amq?N1Jvf`q-L{vO%Po{m29r2kazc&=Ck2aHezO8%V8J0XP7dH8Fg~x?takfD036(h0I@iP zV+F&xf)HR1EJfpp4Z6T=^^11@Gwf_V@Vt`uqI-{#@Dq2?U{_ z#+CsMS|DIxPk^R11Q0klXJG&UZ&w7I$0S5~LkZYMjSOts3ws^62%My(VG-;505a6Q$K2W0?Y{au<4UI;kxR5F}8Ig-F zmZAf9DuDxfF?>$2C?u8GCjuHAAfSL*iH~qF=B=>T0vxRq7Jga4M9u;Oo~}G?0Du8u pd}+=^=D>C!76E84XSQGf!GSiGLyI0wy0q!js8g$6&H6zE06T&Qz%u{< diff --git a/deal.II/doc/reports/mapping_q/img3.gif b/deal.II/doc/reports/mapping_q/img3.gif deleted file mode 100644 index 55356960d2aced86ca5f5b8120c5968fa53c9c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZ?wbhEHb6lPFhc+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{Dok1MQj65(UGs}!LSG@;4;Kw^aiTZ2aG0tS(iDGk@$^=8*TnA;eb zvFDstW7C5OmSrp_7eooNh-n5f_=%fV@^kVrva|EFi*oUDv+>sOb2N%Z^sBjvvT;}> O7c5!2Y`MH3gEasv8%8t$ diff --git a/deal.II/doc/reports/mapping_q/img30.gif b/deal.II/doc/reports/mapping_q/img30.gif deleted file mode 100644 index cd04d327888c69f6b36b43e62249984ee8332a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@9Nk%w1Vc-BB0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0N?-~06+x(@X1N5y*TU5yZ>M)j$~<` zXsWJk>taWvAT$zq%R(W5AR&j>08n5F0E9{IsvQF~XR8#iu(Pxh0s#wy0gMTL7il@cIX)FfgFgUb$UzSb4mT}B z4$LY%uL}UPxD%DPxe~j+51+#27*nzn20#eJ;KTy%wG+4VB=s-&8tVt`_Wu9_3LHqV zpuvL(6DnL7;>e?2q#o=#_F#a6Ei4r1SuvnNk~IGR1UL}Kf&c;sR4xcmKp;w4TfPw-75`6z~ATjyYEE(){ z_F$#e6b76g7=L0gwp!c#dIv8)ED7#A6z#wVG}IB0fFc;s@Ie>uJRz1&W&nU-3vD1E z1_J&)kkp3COi)%`PQhXTGnHUC;9l8*0AK~u{ngw9)*VH_j5J!sM`J}%kfR+hw!jA> z4M10deYwGcz!f7yuaw3m|xr9cWTeKui_fnU0_9!N@~F zD+Wj!LW*FjwWtaKI5Fi9QDDkVqMMpBKu!f57ejk8e2Sj}LMjvhtS`(O>!hgOirTKc IW)J}YJ2HDhI{*Lx diff --git a/deal.II/doc/reports/mapping_q/img31.gif b/deal.II/doc/reports/mapping_q/img31.gif deleted file mode 100644 index e9a90030341a2d7f1734e401edd82cdeacb2206f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 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 diff --git a/deal.II/doc/reports/mapping_q/img33.gif b/deal.II/doc/reports/mapping_q/img33.gif deleted file mode 100644 index b8d2b5021c4621d6ee9a2d98eaf11458f721becd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZ?wbhEHb6k(8Kc+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{DooYr51u;C~BD<1+3 z2@4Fs7Xi{#8m=e`N&r9sMFxUF(~KSis#A^x4eWsk#}9P5q@R`f`uqI-{{H|23d9mX zK>#y*^tqC7gn_DGy`DW#N6J)|P3sWI0?|Z(14Nq?-Xw%k0RfN<0zMTOurbtvmVt1T z%4ETTMGP_*aH{1IB%PM3JOH|51DwPTLuQSfpo){zPBA6C0T~j&vJAB_oO{r0o-LYD za3J87KmY*)3K~RwaG(?r1qaYUdAGqpu?1ce#SvftfdOC$*5Z5cQ7#8+e57qzI3a*d j2WuYyc&C=hKt4@92&>Q+?B&m(LyI0wy0qyE5dZ)?dZDi= diff --git a/deal.II/doc/reports/mapping_q/img35.gif b/deal.II/doc/reports/mapping_q/img35.gif deleted file mode 100644 index 2dbcd8168b864212d4c734b15928159016ebe070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1445 zcmV;W1zP$?Nk%w1VHE*B0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui02Ki~06+x(@X1N5y*TU5yZ>M)j$~<` zX!;2WK#&BW&U9_xcs?SG?*G7`@M1t%0u;pnCjdB?o`jJ&^(a9CPVrc|+6395`0+Xb zpoxYg;F82D;l;x8_7$8Cg(+7?(aINr~t1Boeo9=1pE91t(x!x3LHqV zpg|uB8hKct@J1~F4w8XLNP=MpH5w>>usB0Ot`z>Cw$-{NfB`247$3Bmz@V9#0|^+Q zA~ivZk3WG%v`o@qfq@3c4Ae?yQ^Lvz0~*-lF-0hVWIH9ij5)JHQ8R`@2*8)MgnfO7y*}=bnwe^x_!QOj#z>F|93aN#ag~D?vC~qB zk!%tIrJoi3#2~MJ{bd;zIO)oP{R9E3IsULf00Eqb!F&fYK!5=Ul%(EzPf_3=d`BUe zLM`}lXPGJ47>FaI9J6syOO2x;Ldi-Az(6bCv{LK3L`%v@Q;peAhnVqFka|_P#4T7BaVk;2m}HE=uw_5G&PYH0tva+1Ys8x z@X-zL*|kEKtBfZ>H@m61T$$K)MJEMkdSK@S1z?#@pg0ivSO6w{a6njY4(I5jkVe|h zBpd8hl%$xx<5Z)|r6^~npl%b42l{Xt>Zz!vs_Lq&w(9DuC&V`bCrrX>D+&rU;ST}_ z5WuSkq}?j)2Lt3ZWeiAgqTz;P9ujF_u?zrT- z!`Hd!a$9b;}M`hhzD?lq7G(=)v*SM!BzkZ3OrbWVZ0rn06tpw{Br<7TL!fXH_zaqHL&rD z$X0~F`PDI+JYohUA-X}aiyPLLvIYe@;dFmYZf1ra3uNpUA7@LFFl7i1&`jD=$xuMs zZqKkceR0b(x7+Ia@SYz24?h6b1P#y>rHU6Ix#HV4a9J}30O8~IyN$acq<;c*@?IvS zi$3}cs(W(!4{QAh=L5O@oN}} za%iMnpM5Eym~jdsn`tk>y>}}r!^Phw-Ax4r7zn8S_h-mHc5n_rbyi)Agl1^63Plhg zW%$EEOpc}j1Q1Xq4f2O(g0l!k2v9-`fCZVJ_CS5OVQvY8o(Fmp1QDX3D+7Q60kW`w z9+ZTD*n6OcI*>sf+-q_em>hG8WedXKLp?Q=N}@Ca!t`mzgm3{xXc(A{CEmb^H)x-P zbg&iHVW1=;lpf6?K*GE`wa05IL1P%*ns~>V80k4P(BPU78N?H;d5dZ)?0wrET diff --git a/deal.II/doc/reports/mapping_q/img36.gif b/deal.II/doc/reports/mapping_q/img36.gif deleted file mode 100644 index f8bfdf0abe60a598daa4bbdc124ced371622778a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0BvNk%w1VMPES0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui07U>G06+x(@X1N5y*TTAjVeO&an!K{ zDcE(3(&m})wo(5SR&NE8Yzih%)eFbhL=>(}2$&db5O8op z*D(&(@?8i(X+pGM5&&Rp03e$N0Sqg#LzMv51q5a=iWFfbAsxI{6(_jDG(#Z;V-i%M zfFvNvvkCM)j$~<` zXsWJk>s|`O5&)sm%LL?=q8N-rrG_~G3M3y;NFkyGjKqS`kT@SkL`mR4Xj6to1Hf1e zB-zOTz-}|suef|puiNh=fdKCb01Oig3KM=dEPj9zf`nHSVGEFvkrzg14+&L;D^e{q zh8#X30|9&wqbLJj2%n~;5(2KJBCsB`vbVUoy1Tr+zQ4d71_}rc013g#6>CT+1jUV% z3IqiW46zi&Q)CNY83=z8s^jCV6WR>i-YNqQHVQ{BYv$tQ=DOf zgQSCy68*~uVBiA;1x-Mb;0FoB74r;OqJZ$ALJR)-HXJ~v=mP=;2R7C@nev1Ik^It+M5Hx$R!@_|Emijtca5t4J zd*s4mK`cSBgfMqQaQRXIKmg1ujLdxqS(Rjl_$~x+FsOp)2@d=baNy##gxL9LTM$5? zw{PF4#Y|{`Y&MH7ouXk#0JDMtfDag~3xc75yAjVPNT)y@1*c05qx&=9V6X@y4M}m-6P@GHyRue1s?{oRl*bxKtWQ1geWjtFab!| OL4^~FrQrw>0028QQ25;d diff --git a/deal.II/doc/reports/mapping_q/img38.gif b/deal.II/doc/reports/mapping_q/img38.gif deleted file mode 100644 index 231b0e86a10cba665385bb62e48d1dfe3ff12f98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1566 zcmV+(2I2WfNk%w1VFm#;0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui00sdy06+x(@X1N5y*TU5yZ>M)j$~<` zQh-RqioP(YvTkhO_%lCkJ}HDrpaBR_4vm4NQ8O$I5(1#YkQ}Ckgz+IAA->=+LOB8o ziQ9+3;VKlJQ0|mceOw>ebk~Qe-}4q#QFQ+Ii2$HfF0RV9i3kpI2l6w;Z5(^6!#JLj)!V?Q~ z%%sM?$r%U?$lJ)(#Q?y~0Iv_u2NDbpw6X)Vh8qaI(;Ncp^Y^gz`1}0*{*wy^5b^eD z0yzr>t_g9`BSn#az61gw_#t719St4YON4Qig#i8p!fcdsPJ#g~IT9!k0|tP)2L>8U zV8Dq%Nj1-`jB_RdL4jrp@2O<@#ifx1*Ah&8VDlTUD=p^ubfnOLgP(k$@+^nd!V?c9 z9RcWS@+!o$Xwx#=cu&DiNN=YJ$Z1V&E+i|#u!R=1+|qJ!eJD_1peY5qOnY59kbowF zMiLTuWG0}&0RjpdU72i`!{WwYAb(_p3q!U71(;AsNQ6PSm@b2E?o7M3?c2C>>&|8M z;O-N>fBy?kDjLPrW(*uR*cYaQR{|F7oo2kmfab&{M4!$lJBq?C4ZCsBKwb<_4+dVa z1;)Gt#9T55II!R*g68+otFIv7et~ut!2XAs7WBP!UoHdAS04uSafglrYM4QS00dNM zp@pv`K$Z>;I8eneVM&?N;~yGT34kjx<97IY7B zP{5&S72xc&|ESCEyYR*<@4WQZYwvCj&YSPOBaKJVU?B%*4sPa)Oz1}kb z!W}4lQ3bBx<8N96=*i~`ys9N!$sr3_@cz^1|C@oB7*kSc&{A@EB z3COgI;QSqfpW%}bu0b~bc$aC;gBO2Lvjso@YN9s>npidu)<#ic2zYZdvjv|g4tCx; zkX^bQryDB?C&|K6?e5op5OWF*fNR5C03@&c@?Z~ESX_uPpjeThH93J~`ykIe^DA6} zl#uV0CjA7TImRdUI^ldm`JrVH0BIVqmg#FmTzUl9_lSD{x!j$5+ezB7-MGHtApfoA zb!&3hJ^)mKcU%sE{a{aN7)SvJK9E11!;L-&#=#DH@PoGT4hTnRn~tz8Ic4GjcAirV z>G-2RJgb)o|D~aGtpYp_5RXgB!-q8V$|9d&NZ-nZkEu<7hw?JvvqGYm^^olt(lXIa zPLjb8u;&Yu5|Ge*3IvpWNMThgVpoE=c!36aU=iXXfHtTAApuBe6i6V0YE1GK+|fZN zctD9A&BV1an29c|ikBa-pvRVVAORi{2PX(&h?7kML=)gq?ZoX8vyLDqd@krqZq=|w>@QGv^Ku=msK|)xN^B%;M QKsw9G&UU&pEfD|!JGgGDX8-^I diff --git a/deal.II/doc/reports/mapping_q/img39.gif b/deal.II/doc/reports/mapping_q/img39.gif deleted file mode 100644 index ff944c6f4e26de7d94739804d9572c3bed6b4c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1989 zcmV;$2RisiNk%w1VbcL20OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0Mh{>06+x(@X1N5y*TU5yZ>M)j$~<` zXsWJk>%OoT#B?^-cddW<+wZ_&=-0^&h6IEXL8K4>2g(9ac~%OG%QGr5Bz^%vQ)t0b z1^~sSkf0brXmz=LNgOBPG5MOE#Mg8se{&diZelQI6ao%)cQ#2&dJkJtR8E%@id9e( zUSNn71`QJo2owxl77GR+l@kh?2z?I#1QP% zss;|gS^&%z0mTn?0SbY=v|XVC3XeO;7|YEQ34I9w0uQO4)fw#C+}_|6!p`N+nIOP` z6rOzpzJ-(0%EK!Ou_pYhl}sHbUcRhVm`E(yo{#<@Ly8NwEgPJ?I<46w4GBt!uK2nZ-87z$q|3P%?tc(M=^h5<~-=sW`;5P^j} zeF7EQFasK|3yB>;Fz=a!t$q|t>b0cq5_B@3`sq61>mmoyjs_sh;cVZu4%W6cNJ*~* zb8|Z|u$G{#+Fpx^0`+h-=~4zw*ExO=bt+%cAPz97`eG)5MjJPSSm5zwQ5C8KeT$p{ z0bU8TuOOw@j?8Tj3m7~Quv$WHJaSF=z7QPha0bO)Oc&xBwm;b)s^c6_zP$PK=+moT z&%V8TmhVPuFfh3%din+Izre5my{G!Wq5i;Mfc~KnUkC#lrNAu)%;N%m060*O0uEHT zz#VWsFu*uLfhHjrM>)_yD*`OQ+a4QAkP84Tw&>z;nk*QUgBz^);)~!d*G!2gqS%Lx zH@29g2S5f1V+8{2XkrWv5aERdNv;6lhYwI_A%>2n=!}Q;kQU*H%Pnb^U1ec#fS4XI z;9X-wQlN_kYU)^lod9siIvlNh! z2ZA~ZrJ;a%G?8{U(zqO^h+c4JkMykhM4J;VT1q2H&M8ry2Q=k?Dz63O*-}brP!Lx@ zG0;i^n`KB3V+M3`4NAf`)&?6D{=}NYtbMKN)UpdbF;9sSAi!9L4hBFf2Lj+K?jy-k zMcP6OFxEgDwRT`GvzT1lhqiq=*6p|Y1m%@HVP?yiM7QFq>%VC9`fISG?Me0e4yq6Q*wdY`5+9+i=G%_uO>XZTH=H=dJhNB{19pH3Z@WI1PiZUHF5E@y&tX zMkiigvKRyq4OZt#{us^vBv`H?=9N#*IS86lt~hEuc>efk27FF|KrE#W6OF95uKGu? z2cCk|%Uysw4Z^w}LhKe8pa236H0nYa?ZjGjh7HV#{230Ec^pd3!_t*qOEe`s@y2fu z3$WPxLNrFR3sF5p*M}dP2;YY<{u<=Rpa7r`ERb~pjF<5I1j;u|!TE=1#{i=Dofhz9 zc#_b7FFYk7XMC?L3Sis~IRIe50#GG@CWQb1KUqR7 zU{)`wrC|UK06_lW+(Hxp(60v8TE!40zyORL5j09v-4r}kMo}<;00uY!b2P$55x8#& zRNO!qH8@6kcxr&Rh=tcMutrp1j6QIb<77Mm!xdoB56byZBIgJtCxQTqb(x|b`E~se?ko!oo3RypNh;jm?e1IuA zz{?9&09y2rfW+RCC03v*1xHh*#p*@KAsUl^t?ULVhDl6o;su$JTxMe|upyz~OBB&? zz_Vpc$Cx#WuvB-r=0`sX(qHXgZOs9Poa8D4g^qN`x1qI`6UN`P4HeAq?aIH^smwyJh}=~ XA|AnEiec^c6>Qu>!xrv91ONa#xb$A_ diff --git a/deal.II/doc/reports/mapping_q/img4.gif b/deal.II/doc/reports/mapping_q/img4.gif deleted file mode 100644 index 3ebda319e9d658cf92fa9e0bdf1512f7135cfb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmV-t0+{_rNk%w1VSWH50OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0Db@^06+x(@X1N5y*TU5yZ_qI5D&t9 zgwklr32Ng@2^)bp07)T;wJ4VWpfLGy2#JOvb8rL@v>>99h-L_Y3RahJY8E=p)8W4F~~Z09FDDWeWiT4q+EyM|>3q zD+K_d04`?&1gEH}brk{tjSmBy9tKt~1*EIFy1Tr+zQ4f1!fpmVzJU`5D-Q;Ktg;IW z8V1pMZ%>OD3I}SMHL^wA5(b5s6MJC`&J_g<4AvQf3ep$N#vNEQ0Y(o(_Y%=SiWV3gl%T?(5)S^}Fi>kSY5^h%3H}X}lYl_615k7! z*toK$&6_xL>fFh*r_Y~2gQf|fAbfP$zO1l(Yh0h|E^1qdPD5b{dG z67;B@qPhdxI)!^Z-~r`y!hkLZ>S9j+Id!I1cJG!`b5Ex*7s;DHDxsNjMOHt67k5c(1U06T8{ B@Bjb+ diff --git a/deal.II/doc/reports/mapping_q/img40.gif b/deal.II/doc/reports/mapping_q/img40.gif deleted file mode 100644 index b4a8f2ab8f35efa8fade94ce27b76c11f0501aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2373 zcma)#|3A}-1IOR{{>5U`FpD$H7*q2#Uv}CuY*{R+^R*_I1`2P ztx{AT-PC+NE{@6_N?Ik{rLUi>?$&+!`~{!q56_>Tug5EZ>+j(i69cvcWWX1KgM-`J z+Uo1;%gf7UGMPvuN=;1_2n3;_p&Sl}!C=tobbEVyGMP*u5HJ|bl`B{NxBI_j`2h+7 z031O3Qh)hm!gK<1XMADhf`|`&E2u>SnibW5{Ur4a8=wWjQ>-KD$4*cR?9frHoZPTH zYq?nBUa6=i7w;@(Rak$!1CwB7fY{%-0|FJoB1D-O80_%&i=DOz18e;jEBzyOm{uAJ zfTAHVgq}eO4j~LcUrp+=77khs!);Ml71#&d`*uQ1A^FC@Eu1)HL4Ax75 z76M(gippB0{glaZ;IZmF8Y_M9__KA!s&6LY!7_lMZ? zMQj;_fmPY+0c>jnFnKBvj8?Qq1ce(Sf6c|#8V&*&EEfj42dGxgme~JZ3d-2&l7LQf zO>R$!v(lsvG5B^yXnL@SjdZ+jF z4m1IQjY7lzec4-j@-T4?n(;C2?v$CJyNAvn@AW$dest{frb}cPFGFw%+hrVo-Iu^ivmE)5M#1o+#D)$;r>?M(f?= z-->vC*GBh;wow>CO}DBz9i0$fYegd6JkGf5^V~d2L%fu}gb#ZbY(;TwLj7H}Uj#IRe2HU<^og zq&JBro2qvc3N^RE6Gt(d89>Q4u|eM9BFP#wW`E)j-=eaT0;8^pYi*X!ITisEBto~P zbAEx}!{%}7uoCf4(z9G+829h6ifk`jOe^Eth*S(E7IgTS^e9&L!Bi-wC6d!1$z)`BMwhQ#x;uF8^6? zaJGj^g>Yo;)End<{K!-)>C?nz>aT^R!7W*DqH#CiCq2HeOnX?#Ize2O-dVJCGX?#& zz5Pw_i09!D;nbc0NxyR}^iEY7Hp=MiwQ1rWZ7YjAVm|lHz5hT95Bs~zCI_I}uQDg9i$ zvaDboL>ZDVhEZk?ie#X_2lRJ0!+v~Z<>mt~zr)osch-pVYa6P zX*@L%Be|dPzKWN=7_-oHZ&`m)IES9%ws|H|u1BE!GoxQcxv{_Lnd$5rzbvOWMM-Zy zNF5ZF$i#a~tLh%@a%Q6F?0+Gb^w4&+ln)s{mti&4o7Gw z%{7U4AZD4!XsjYJ8-KdIZ3)Qh^7xMMOUU?ww0de$^I7dn z!`ckjwS7OGnEIqh31ZrS(PbGe5(_D1^yq6pRte91GlCh*+X`44Zp00zwj@rkAMp+g z^owLLP?;ZdRd{@Wcb)I>XUTYSqHXoz# z@586wyQ7_NoQkCaO6;X9?C2(f;`QJ{%BCW{*;5K5#ZBnT`$YruM-K1H8g^E?)H$VX fytKtH$g#oiB>9&U6f?}_E|sX>F{lO$0N(!sms{me diff --git a/deal.II/doc/reports/mapping_q/img41.gif b/deal.II/doc/reports/mapping_q/img41.gif deleted file mode 100644 index d95a0f01c160887a6e4af8909f29ecb50bc0b31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 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 A0RR91 diff --git a/deal.II/doc/reports/mapping_q/img43.gif b/deal.II/doc/reports/mapping_q/img43.gif deleted file mode 100644 index b3d5a1a9094080952c0884e37a88ca10db521126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmZ?wbhEHbY+%r0Xkh?>6)RTEnKNg?gb6JzEj2YY6%`dZIXMXl2_YdN9v&VxHZ}$Z z1}Z8l5)u+TJUp8>Zw6~3mQei3!pOiNz@P)t0J778^`C-DUrOe@j8*G$UhgZ=IeyHj znWvf`Ao5oZ^bV3v{G9A9#H9G0Aghzm*baFXZ16 z^+0yb`yYGi&cFZtzoD_Ixy6`?!@nU!nbS*|$J{j{B1t7$V1fX1Wcmzm0nVBEvsjic zV@a}9v(jed;SO3bnSsk~q0(Xv-}wR@9K7D_e9>Gp)p#~)O`pl)z%#Y=;-$-1u3o!- z@K5H%=ZZ%Mn4&iFLIqFB&cGhOimgMQF$X1Oh^I2DWDs-9dP68_Qh z3$NAbiFV=}92`r0vlLY3Y&urmHQ}1;8THzx#@wIJG!yP|rez%MD?R-uTR}XSN2GzZ zUO#8)aWU7e0dbrhEf)nDm~tM8ak8;YKjg8F<;bOkqN|$)jaJt#>u2JRNIcN_#3bOf zD6d5TfB8a-2MoQi0us7A~h0jr|N^L zz#30pl#e{5O6u?<@W93f$yFdM3Bn5H_Y{xj&bwlSU5)Y8`8 znsv0iB#(vdH>Vi8{gKa~--DeL_GEhlH}Ow8||4>=PoTqnu&L{!Krjaa$+ z|7;Y2Ch4gEIUjcMO15=0TsuT!MVTZ=CjsGkfX^5v=r}M&&{=IcQn^Vsx+<{;DAUN` zS9Fiu;O917e!55Eccw0v@ImJfH=nOfdci$o^3ooTZ@wGW;r9v2l_&kM5a7#xEfd}R zsL^afYTA>Un}DAfd$N}yFMr!McThr&)26x+(c5FCh4qy&#TRPVh%5Cc`p2&@>&v9W zFOEooOzKRhXBDo=PvgkbZF<~k9N@|@kW?XXzOgGXG5J=nW%hnY>R?^WrM*rNksz|w zl6o@7yYn3;IC33yI~?mLw>;1%Ga+=sqU5LE$lk;g(LI^#UhiCwqEyMqBjK-TEfgA$ zvJQXCc`{}*_1nJ!igAzU)&{R&fN02sS6fj|be%kVwQ?1x7eZ?^iue+aGm^rkbO41u zZEnZK0ZDQlK;RF@Y<#m2*Y`OqIsTVy5=|$jGC(1e#I;ZMQB*Gg|0?Ni$GvhEou`IkB6)wfNxIj2qk{dc&8$M7l37S#zARQ7AL5S*1i4Lgzy4Q>q;Y!;xlp4|S2{V=uhS?7BVBEuLIiQR~v%l~H1 z>mI)SvT{b9y#xvGxi3qrj zTFtTy_=Pw(qpuq>h8A4byC_f4QhTksSRtbDLBqy?;lVKVpTJhn$SL%XAB+uo;EhKC z2eLy25-h(Qa0oTHnZ74)#KvvdZdqg(Jt2p)^pEb*6Fhy3okpgdOZOMyyAD!o? z3RRDueYCLktZdbP>BS3t)cRP@wFy4P`%u`x8PUz}IWzg@^-{`!o&kERye=ivQs z{u-Y@umTfp$D)qKRHr%33MO{k1V?y4$=wnkkCknttIq=u@n25$X@9d^U447*>m2D9 z$9P;6DeW5Rx^E59@i{=BB%*ddTKl^Ft8QO|M4OsX`YG2xa7}%BoH=yJjjGmd5JOw7ut;IUfNPHx%dH?6pdwp4!x_7LUqeNNZlj>1U~r( Dd!dWu diff --git a/deal.II/doc/reports/mapping_q/img45.gif b/deal.II/doc/reports/mapping_q/img45.gif deleted file mode 100644 index 09dcfea500cd0b58714f310965eaf097fa78a283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1817 zcmV+!2j=)kNk%w1VG05v0E7Sl0000_Pfw_*sGOXfkdTmsgoJo_cx-HJU|?WWR8&w< zP)JBfJUl!wFfb}ADkLN%7#J7~3=Ffgvj6}9000000000000000000000000000000 z000000000000000A^8LW000sIEC2ui015&j06+!)pd^lDX`X1Ru59bRa4gSsZQppV z?|kq7z+g=v+!2e&q;kn@I-k%{VKGVo3Zn+npdAqajFW+CS`eDwuxWfUw*-J=^wvm> zAcrVdI3N_RBye&E4Fv^VHhq6sJ`r|2b$5AD3;>Tmihw8xnj#1Y4~z#81qlm?iJc{X z4Qe9-5m;sd3}ggqfCqm>3l0gt2@t?}2VVms2N4D-tga%kvIMkb5~HQ3Bnhb1aU!>8 z$jUYiRL(WzBN3Cy%OnP|?(p%9ChR2xot($8lQ@ed+JyWYVXsC61QPxXIM8n#HFed* z%`5Sao`i}h3ZAeuLZ1YFIR;*oH>ae@lPLaEs$9vkrOTHvW6GRKv!>0PICJWBN#M}| z06T-aW}#%mmZBPDNOu*8u1fwi4oUIugmBs)T-lh}`S*W313v4Jui9J{mfe#-x5aJvLGz0{TB;*Ca134mbm{?lzHvj?*IKmYYKoTS* zkw&%<5EHj_ID<%*LD9(p3>YxL0$J)H+LMYMmcvh;ba?}ni8UdB77k*mC6|!ZAX*6# z@TdYFJOH)|093Fc1zo;%5zGh-;Ddz#2_R6)j1tg>KmscM*=JG;1*#WXBH(F)o+8vG zK%_I^V7`A0*?L69u+$tb6+^2#i??DESn$1L;AG}mnN%{b?*^UgfWkc_M-{oJ#E zh{iSa(KI0HO~g?sEkRF6uh$zlQCD3L(<%*6mTn+Km@9^7Nl%vF1{-c4A3@s z;fFslz_LG-!uXN?MvG919N6-}0Hb}$2LacZHj%mstDn$13o`CxXcm?$aXJ#B)qW9! znaer34PTfXYGt`6v2TT)5C1gty3PH|k(HLvm$?s^>s|qv4e%a7T(>~LsAB^JrsMNUny^gmjquVRG9Ht|fs56yO1~)64uoXFn(uN;7P$ zR|NQHuqipON?#d4-tu(6&zLV+Bsho&>=c_$Ex>u78OI0nB0>p}Ffkk4)cp=bh=#e~ z43*2lUb4`^BmiarYf=Loz(R-t8BtfX>R~;MctjLPi+BKNp$>NF!RjDlGe9KUM=DfA zCI$$J+hP9RqmE#Vo^;HM0~%GW&PSI9n2RlTgGFYH1_%WFBt^T+0&hSez!A3bjedz^ z3(FX~w3y0-(K~!6y3zG#EU9e3>#|j)YN%2V7z)e8R$$A`k#r zg#uc7aRnz31_5DuftZH#$}TUGml$fW3yt}{;WeCQ^|X}BnY@K?9g zl$;F!%FlteQw8br4P6dV${XOrh6Lf(6u^LmV+CV1v?0w1YE***bO;}=($FOgkU4yC zX;(CrNl<+-R10;(pi1EB6N)NSeBOYmVL{;%1mLN<3?O_pFrd#|V7L?*&o?M70r{xf zDcdAqR12`vPgVoOnY0xX8(M$@5``mwIW-7xrAc0Uu-6pW^ifznTTNC3SmLx7h zLo@V1mg>^xDDn_WA>Hw!l9TAJN437M`~C&r_Yd#i-mmw!;bDH81v3y9paA|wtyWi7 zRw|WBg+d_~i$x+)W@aXz&yR_TVYAr`27^wgQ>j!EiG;)9+S=Ow7yZAo`v`{s00D6Q zH~9AnA`E2e@#OS#X_||fe{~97?;pteQ*`mQ`1MyEIg76|GOm-u%m8%tu=)U}CH~U* zBN;uON>&`H2^Ahko`|0)O>+b=ESX)d7^V2_9D&r*CXveIiu{5jg-4GS6&GUB5}fiE z8Vmpu6WkOn^$G=r%en4%%Mq_? zG{$jMFf64Vm6C_SL9>mFvsG*(j02{oz10DN8{y3_cmY^E8rk6k>o5WEgZi>6jL8fR zM><*D4c$8w_8IHPwWFb*g^)iek|-|r#stC+LL{Zf)O@=XP99APH#0Zb9;1yTYGEnf zip{-uYibMkfytvb<)c$}h%++GIu3C!z9!_9#c4sG4z?#y#i`CZlWuQBZS+wGv!~(c#`km2T105^= zNW>)hxD?NkA&+nR-uM7mUyATijou*UA|maXTbld^&*(tN&h4~EBRRv_nS zamOUV1@n*wG$nNrkb^jcEbiB%%Zi*x3DTf+LinCP45TrYYvGfg*vC)zJA`EYE5UJQDIKyga!q{dq;&JqHOR zUHkI+S!XZ$EcP+M0)*{kw%HpU)bOeJAN5Z2H3c~H2ya3HOzJbqP?w7w=nDlZ<*!j8 zZfHe42;5XgIn~w_#PwR0;V_=zOdcXv8xd(=W6LirmnqJm1sa_2cecsNz zlDaVh4hE9$3$t-4M6s|7+w_-^&<-JN=+0hzGL{#oVD$H5Hi_ku@a|RE&?^LKB&gXH z#M5adjT;6@V3de0n+o}|6#^EMPZ;}#&_JV&Y z-(~h->sS6=1$Qq!m!FvNLu#>(FDdevCJc8Sa~La|4V~UZ*;-VD6pJX(R_E5i z%BTc)1*B?33P25bcCoBC}%3Uk4S{KRY*u$KgQ0OK%+u*-Fz-@FqvitkH;e&@>e|bNB~?gkX?~rMVc#>D{;W^w)O5?fDff`9sVcl)?5u4!cysM5ko`m`WU=#Wiq8 zwjL9|EF%rnAboq8Ie7V&bvQd@tw7G3Qp3B{=g_>~CZ`F$YnVAC#}9FN8)EjSCaD$n zFwHWUNsbmymo7yTY}S_O3s_Bv-CkzF+g6s33ReVEWV$b7(ayv&CkE3j>T!)brXWZS zrss(WPY!dXICJK4lXm-c>cb2ol3R^ULmY{9TH;g)Dc0``%bvJph`i=4h><;aS^fnQ zA269Prvw1&Hz$?Fb<}>SgcJX!q4yP} z>-qT+nl+YRm?U=M&b9HM6#21H4b02V;n~_>IIM?oJN*a^t?YyxeL)P*n>>9lLly-d zL?M&b&eUnHvY!!yQbRQh4?kV&Bc!3g{Jloc3$)?QQHfq}CvxDaaPfjvvrz;ymXjwg z{n`TW@7BW#Gi362#c+k&?^H(9c#i>CACza6bb)?$xU&`ByTAE+vpHVX5KG%upCurA zo%D3gB<}pZv_Y{0irJT~y3!xYC_giC(Ce`ejdd}|5Wwtwv0`yR+iUB$-_xr!;q^6r z&7(u993{^NhE!S0I$$u|mjlUk<{{&hlaBTc8`bqLwp=t@XJsP|lYZ>-PMr9+vGTc){AP#kX3 z9MZpc&61@t5m8NWM4``xd-CE2P_*8|n3@g?FLu|u)=m}fauj~Fm6!0HB=UHXpGR`^ zuV+ya6gGkMo$y@9pep{sZjF)?A4>h>c#cRqu|xd7R}kbWmli6+5u{V zlvvMwv7)QlO{0ZJ|5Q8{h6cMRxl4Fs6~4cVW{o`2B*&sQ%UQSkM#pCC{nh#3k+L3_ zd`;0e1iX6bAG`5kaBd+bt1pB6;B<<=$h$eZG_XPY=~2g!H}%#d=)2QVk99+1VuQc@ z?^>PM7q4w?TfRPg1)s48TuR37(C%4%T;D(BV;A{Qmg_xpuL)AvI7!QTo3T0--|B<0 mK{K;W7Y}gcK4o!5OS$*+C2pDxkj$*tKdr9*>4t^?0sjTfUeVeB diff --git a/deal.II/doc/reports/mapping_q/img47.gif b/deal.II/doc/reports/mapping_q/img47.gif deleted file mode 100644 index 0239071c22799a03e9d17fcd3a9e06027b96fc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1474 zcmV;z1wHylNk%w1VNn4-0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui08s%x06+x(@X1N5y*TU5yZ>M)j$~<` zXsWKMkN^Zp0BmjFc&_g}i!i;Qa7Zi~j~M}AIrtEXB>g(+7?(gu}2=j=~4+yZ}4+8}K{seSdF^Wg9 zpuvL(6DnM2gBAb>!Wars!pYJR1qXPPdX-TEsDA#iP;9iIpuqwI4XO=@1jE1#Itkp+ zL(qU;wPXnH=zwG*0fPcRY~j=y$ibZgSxTNvDItN;2S_Iz0CZw%KokNR93Y^8=u}Em zZAqGvd%Jv)t5I9IgVV;GYS4)H+ z?`nd8*$x&22;iVSj+yx9+0U?uDhZ!pF#g8Ddj!NcUwu1N@c;n0Nsu3Y?IBXpKtjwQ z41osHw_gY&O@NXP9d<&VQvoSJQ2@Y%=b0iG0M(!bqJ-kx2DHq`0U{C6;i47*2(X1% z8<9whkE7k7&jm4JVpthsJ>W+XtO=wBi6W8Li31>7NdYYzN|1;GP!t%ElNTs4W(_o* z*+P%K^hkhwP;gm+nQx*;>$5I_P2(6?d^c;XN!9{>a-XAcGBGQ^-Agoi+v73`US znkfXpz;qiNAQz>PCNQaUpoS{ysLsWPsRjX{(j=*@hK5pjF%6I;6!=V_WvjSWrs)G& zVZni?1gMqku*4Q??6JrutL(DO{;H712r*IE?6m2amogGwARm&)oxqty0mubFo}?~thJZvA5Yi1k zhFC^=2Ha8b207pAp#lZCKr}p4&6TkTKrIk*2D%lUz|lPDhSvxqEpmjGQ5(IgdP3I< zm0*gV5Tb(xSOp^+E056j1n1K8A_nv=@%0Ddy)hLh=z3aS+T=RgR!eAP2sr`Ag1bB+Q69ZRodk&w?hxBSrummrO1Ib(; zlZOu6EdoUXuQG-!Fu!%hzRH@6G)uthrT3wC-nfR)rDJ-Z^}1X82IcrE8tH(+8E zH#WjJy|9TaSip48KuARobSDF=qDB00MnMnYf`mL8#4BP45KdKO|CEze( zc=Und6qm<7`tgr|3}mxp!2w|rQjm!3z>t2lhLDIZk&x8GQ=*~)=RGo#iKG*pWEG<@ cIVN_P3?&74!7GSui2$Y)r7Bkmst5o8JNhDTrvLx| diff --git a/deal.II/doc/reports/mapping_q/img48.gif b/deal.II/doc/reports/mapping_q/img48.gif deleted file mode 100644 index 15674c4a25cb946eab4e6308675ad5a0433ffd32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmZ?wbhEHb+`{0<(82%$D^{$SGiT0(2@_gcT54))Dk>^+a&i(95<)^kJUl#XY-|h+ z3{+H9BqStwcz8B%-VD}6ETQ<5g^__lfI$bO0c58G>pumRzLd;)8LQUiyxv!!bH3y* zpLg$slYw$PH_o}~NcHbI!tubvf^E%VrUf55dAMdx$#SjQ|3E3hM{oA|mJiu0%v2+u{k6anIm_2>`@|8MUGXFwd?hhu+ysI|xJ=1)s!g1g~kHyjz$qQPW z_1uI6BTf`7bWr9zCc$j%z{y$dDkljx-q395cva_w z5mWbq%^9vSss|*Tj&vT5QK@*a{M-qaI*o9QioCYYcZYTPRoM!G zdoGpIc0wtZ9}GWq&%LwPn!&%qm4WS`qVXHsIXs01Tr%x`wJc&85BTr%{3}yPT)gJP zG!DiG+a9!tgk?Nzl}J0$!@#j&*+UEF3X5ijSO#{-7WrkD8>)4`xI4vtcwpe~&r>sb zkxY=I#?{EI43R!IK`Dxn)J_V$P+FW=#{_#Wo&r;nr|u zNZ08xJ;3bmJ9DWxbIx@>mK#R}PRx9HC%i!`_s{{EITg=VKA*S!59kkA1AsNU9EiV&d^}V$#7hA z<_yko)dQDBK8WmcQk__);x)BIFIai?I0-o3h7srZ()oaZ=%JsEQKHd8W^=0vYB+x2(|@3vQYkw^Ey9!(SBvuN`lu1$0XD z-kBno%w;p7m9e|8c>dbBKQ|rP_uaU_&AiI=K!fO;Qf|is%=}8x@psp;q%a(L^n|5* z+lOb-db=-N2;!47X86Q?hEIdxJfamJQp& zduw7*@lv%PmB+56o$%)OP;y-R^;(Sn(>q)au`)&1&on$rNP9Qwt~HJ ag+En0aDIBBy|Ds!yzboZ_uYU+i8TP%h`8(k diff --git a/deal.II/doc/reports/mapping_q/img49.gif b/deal.II/doc/reports/mapping_q/img49.gif deleted file mode 100644 index ad5cc2d73ed5fc4ebc8805282ac21ba1308489a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1253 zcmVM)j$~Au*2NHT2Sc&_h!e-Qvr0RV6WK8mBy6KEVb!=kd2v^i!E;GrQAw3Z43Ij*yX^ zo}ZwhI0A(P3js3&EUT*sf>{otBBTPQs1K^FtrT~%zQ4f1!UKInD#ADgU&x?D&d<=% zz04cZ*3oz{1_}iN3EY6M9|uGXbROH?-vuKJ*&GP559H?=E7TTe6>mrU>T6& zhByOv5FDsyAwfP7|K?D*qCi0hcOG6LB%qLC!-xJMBGRE~u>vP*6A-9e$+D$Olp9>i zoC$NsfI>3ZX+W@ST1^T!1>~ec>fO(yNRujE%Csgbg-t^wDB#9WR6qt;Tn%G%>y7{m z3KY=eb%WNjXwx!Huwasg01SvQ+Tg7aFb0Mmy^YJqLtU$7#c^mtWQ{0{A`~op+n}%~ z1O@0xSb!jaK*JYit~{0_fCC~rJwTScVg`W(2|OTX(grY-&j3Pq7!5!P18cpathi;M0y31Ynf_7hX_dlrTBj1(i%@spXbjcIoApp5XNWcT7Sf8<-$8 zG1rR$93i1cXi_2Kj)cT1LOc?XmL*SiiV#3+T|(LCpoA7`Xm=bWKtxFy)N+8L05Iyy zQ)@P~C|v|RdTCmMHR{Zf8Q|zkL1%eN1gIE@>Q$#aZYm0v7-ThPs;+*?ss=X|0c#Jd z-B%0%s8*1x1H0ZJfC23cNJPf!;TzR-uYQesV?cDPOMIHk4${2`4G%+0@9fHn0|6#I`dG>pgQS(Xw z(hKkPo7+we6pQ4NU6gXlxf2+m_JC%m7E{_Id~E?Owm?#V0UiouU>h)xAPzZausy*| zXQCT4cnTpfpOyWoozWzgi0{!X?93YfS`MS)2v*KEkG~45Z6fTVX@T@c~_-Z-$U*V`>9rBprKL~N) PG?C&T^A?za2mk;(Lgx`{ diff --git a/deal.II/doc/reports/mapping_q/img5.gif b/deal.II/doc/reports/mapping_q/img5.gif deleted file mode 100644 index 95d2ce653d0e2b3c0b8e5d1e19062e57899a9505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXUyNk%w1VPF6r0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0AK(f06+x(@X1N5y*TU5I~EGzEJ5H9 z7NV{!f?fphdNi#F4}e^QT>qDX0oV}|kI1BQ2_zsKK4wzj*ukO+N5Hb^dcTX|btXOP z%ILIu&2GEja9WHUw-gX(iy*L2NCJ6Fb9EMc6M+>94PgypO9l%K01OKQ5(kKw1r?f{ z0Gk$=Ruu>g03((Y1_%cTIB|Pxv4pg>wzs&sx)QFt5=Mjq1B1H?h!h421p*1mWyH9K z$GioYTMrAP6D{1S7SOf^2NKg0RT44dOyIN#i(LSV-V>NOCXRwp5(W;Szb6$60Hh$0 y&c1#b%H=p9fWS34+R#MgFu+)Whi?KXz$ir{M_&#gLy8|0028szkkyJ diff --git a/deal.II/doc/reports/mapping_q/img50.gif b/deal.II/doc/reports/mapping_q/img50.gif deleted file mode 100644 index 6f0caf54da2a33f665a694c52fe42061a924c651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 XD+cB(Mu98F*(;``m8UnZ1BL$qT9-v* diff --git a/deal.II/doc/reports/mapping_q/img51.gif b/deal.II/doc/reports/mapping_q/img51.gif deleted file mode 100644 index fd296a61dc95952de4f4b9b9a1c34aa130573caa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmV+>1=;#XNk%w1VfO$a0E7Sl0001Ub91PusGOXfl9G~;kdTCggm`#(Y;0^`U|>{K zR7gljJUl!wFfb$}Bp4VN3=9mjv$FsI00000000000000000000000000000000000 z000000000000000A^8LW000pHEC2ui0QUeO06+!)U?h%YX`X1Ru59bRa4gSsZQppV z?|kq7j|DCGE9MdaLGb_>%nXfGR0O30q(;`^!8k+|3-CiRbvVKfWn|m^h8N>0!f{YI z3hPJx9s&6OB6A203~CV#3V~+`eSdy#3J*;p0uTuc3=RwikZ@!oU}B$+j{*(~U?f|6 zcyp{Grww=!f`n>_CsiX2Q->o}kpK<|3x2)5Hw$!jUW};`3lKsFvsu>H*xA}W1BNl( z+u5#=N8<|AjY41re>-9%se_abQ0XAfC~2V)pC@PfiYF9lcn z3Hbsc#lQ##nsg&1VhlclA8G9~u`%Blh6w%@DD>jcL`EmD9ySr+kAyA}ymtMXk`Vy_ zP9+S|5CCAJi3Tvkyg-luRXrRA6f|Y{)S7`Y0Z;)&@QKP8peMKr<)Ji!0GI<{R$a@s zt=qS73U;uH9?j9W5X+;Da1Zu~k8c$v;3T6G)snEOWrwG6Zyf9H>n=t!~ zK;a+2KZ2ZlN+|Hh4*-O%kwiQ{CH}CNfEQ(?L~iZnr$BrH>X*xbw24r_e`X127A%P* zu-t$38R(5-B;cNj%d<(FWFDdw1DmTBghXr`&=nryb|=9^z`0f2fh z$VsQ04FKR|RW}LH#)>GiHqw(-MM8t2aEf3XSU${&H!4gZ)AVkhzdSs-^`LfC;N6Xj&a*(^2x9rqSWZYbGd27nlN!qDmF2 zgrN!;SjYzADX0p-bkle+{$fYzcwkv7LmjEMfT)lydhufJ=C z;6c-gzuX4O72`gj#A|s?LKIU6_@o4|BB=`iL*TA^LIMFF=u`ypnx${Mw7hGUqgKoU zQN99HIm=ClY=>ft7^M-^3FW1{7e!7W0ammaaXEr*jBFT~LNjCB0J=0Ic=HrC16S0L zCIpQWx&y9rO0b=sONpZ!;$bw-K8rx`I65mjG^9=2h;-FQC+!k4Dkf%ai)4IVtqn-f zYQh8RMMB$#oG@X)0(cYyiUa4)?VjCuSHh40NWo1BQsY3t&;q@{;k3ymEZX8a8Q~<0 zr+@#1H{Ax_y>jKJUw~z}Sq%`N_~A~>X^L5=LoYE2UeC`we)a}< z6TS8Ho^5%xAUBpn`6F2Jo=S+VP#Fa2dpUqlcxzJ?9*~CL!B1O&S_0A%z%wqaEKzA1 cfO$y374=AvSf`oL4>oiF{z34AYzhGYJ3=}ecmMzZ diff --git a/deal.II/doc/reports/mapping_q/img6.gif b/deal.II/doc/reports/mapping_q/img6.gif deleted file mode 100644 index 2d477dab175d7432c3fb54e53dfe03232158478d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e${QNk%w1VLbpQ0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui06hRE06+x(@X1N5y*O(v+@b`4Y~)0Y z--8@Wp)vsiV8fUgQzHb5Riq`!>G26Hc!QvF$!t2G(5O@*NB}DhK$4;W;3|SfU^)B< z6bS_(j8HTb->G~~uiNkV{6j$K>o*D`7XULAGJ+NdZwQQx2N-1&CdFWwHap&2L%ZY zk8%hN47d#02?8bv1^}-X3jnhdwrjVq8S5;YGDA>0QH8H5&x7c65zkqispzgwgI1=4G gAfUiVzdQyO=-inwna`g4aj1vjPA#nMq9v@;xkZ=rXiG;+Lt6HzvtQONiT$o*@20(}b zq!vU&3GmhgBsV7DP;3CiL5U!r7#apQ1`G&=QCNJ1ii=x~j*pO$l3HbxGzttB22M8z z3IqiW3}P7r07qX5VHpH0D=iiQ3kdXz*7?(gvN^7A(l06WngV#fdg diff --git a/deal.II/doc/reports/mapping_q/img8.gif b/deal.II/doc/reports/mapping_q/img8.gif deleted file mode 100644 index 91c5ff715545e73da0d08e46d286640b03ade64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmZ?wbhEHb6lD-)c+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{Do2Pi!Vaz{Z9>j3 ie0Vz7uzeBG;IR3kbkXmFM5tMwa;}~Z1FM)IgEau$@jrY3 diff --git a/deal.II/doc/reports/mapping_q/img9.gif b/deal.II/doc/reports/mapping_q/img9.gif deleted file mode 100644 index 5e6633a0552de349799d3a800ea0b2b3d002791b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmVOw8HlJ1 z8v+~>;{>7>0LHW^l>xxda83lkMa6o!c$Q#n$>bymB1El8ty-_xtai)gAfo_*1X1k9 z6lID^{2*f%X-Q$x05EV5L*22!Dij6`aSsImC3hDLQ-pMOczOVQ76~P0mY0~Bnwy-R zn1KZiC?Yd>5(5s4o)!&I6{QrYstA=C04H^$8nnEAkN~B>IVo36 zV2N^uOA0O?2r$=0Vy}(1&P~XYq`7YZ$S0>EAhU%nbjI3P;Gya@slEOn&-4!Cp` zlrnW1GXn#6ItDd4kWYexI9jJpRAS-mOqpe4rcqG<3$zv!@g-0Iz$iYUD%Ak!YXJdL zjs$Kd;Fkx0)HY;eI4~NJKmq^@pb#K7u}x_Yp&f!?yjr#E*RW&Do=v;9?Nt!~06X_= BxbXl0 diff --git a/deal.II/doc/reports/mapping_q/index.html b/deal.II/doc/reports/mapping_q/index.html deleted file mode 100644 index 487a4d79de..0000000000 --- a/deal.II/doc/reports/mapping_q/index.html +++ /dev/null @@ -1,867 +0,0 @@ - - - - -No Title - - - - - - - - - -

        -In modified form taken from -
        -
        -Ralf Hartmann -
        -Adaptive Finite Element Methods for the Compressible Euler Equations -
        -PhD thesis, University of Heidelberg, 2002. -

        - - -

        -

        -Higher order Boundary approximation - -
        -

        -Introduction: In many numerical applications the domain - - -$\Omega\subset\mathbb R^d$, -$d\geq 2$ -is not a polygonal domain but includes -curved boundaries. For these cases the boundary cannot be represented -exactly by the discretised boundary. Approximating the boundary by a -piecewise linear boundary interpolation, i.e. by a polygonal boundary, -may in some applications not be sufficient. In these cases a higher -order boundary approximation, for example by piecewise quadratic or -cubic boundary interpolation, must be employed. In the finite element -framework this higher order boundary approximation is realized by -mapping the reference element $\hat K$ -to the element - - -$K=\sigma_K(\hat K)$ -in real space, whereas on cells K at the -boundary, i.e. - -$\partial K\cap\Gamma=\emptyset$, -the mappings -$\sigma_K$ -are given by polynomial functions of higher degree. - -

        -Elements with general mapping functions $\sigma_K$. We begin -by first introducing some notation. Let $K\in T_h$ -be a cell of the -triangulation Th with - -$K=\sigma_K(\hat K)$, -where $\sigma_K$is a smooth bijective mapping of the reference element (unit square) -$\hat K$ -to the element K in real space, see Figure -1. -
        -

           - - - -
        Figure: -Mapping $\sigma $ -of reference element $\hat K$ -to the element K in real space.
        -
        - - -\includegraphics[scale=0.3]{figures/m1.ps}
        -
        -
        -

        -In the following and for the sake of simplicity we suppress the letter -K in the subscript and write $\sigma $ -instead of $\sigma_K$. - -

        -Mapping functions of higher polynomial degree. A mapping -function $\sigma $, -that maps the reference element $\hat K$ -to an -arbitrary quadrilateral cell K with straight boundaries, can in -general be represented by a bilinear function, i.e. by a -Q1-mapping. For the case that the cell K includes curved -boundaries it might be necessary to employ polynomial mapping -functions of higher degree. - -

        -Given a degree p>0, a cell $K\in T_h$, -and (p+1)d mapping -support points $p_i\in K$, - - -$i=0,\ldots,(p+1)^d-1$, -we define a -Qp-mapping - -$\sigma\in [Q_p]^d$ -as follows -

        -
        - - - - - - -
         \begin{displaymath}
-\sigma(\hat x)=\sum_{i=0}^{(p+1)^d-1}p_i\phi_i(\hat x).
-\end{displaymath} -(1)
        -
        -

        -Here, $\phi_i$, - - -$i=0,\ldots,(p+1)^d-1$ -denote the Lagrange interpolation -basis functions, that satisfy -

        -
        - - - -\begin{displaymath}\phi_i(\hat p_j)=\delta_{ij}, \quad i,j=0,\ldots,(p+1)^d-1,
-\end{displaymath} -
        -
        -

        -where $\hat p_i$, - - -$i=0,\ldots,(p+1)^d-1$ -denote the Lagrange support -points on the unit cell $\hat K$. -The definition of $\sigma $(1) ensures that each of the unit support points -$\hat p_i$ -is mapped onto the corresponding mapping support points -pi, i.e. -

        -
        - - - - - - -
         \begin{displaymath}
-\sigma(\hat p_i)=p_i, \quad i=0,\ldots,(p+1)^d-1
-\end{displaymath} -(2)
        -
        -

        -Analogous to Lagrange finite elements the unit Lagrange support points -$\hat p_i$ -are equidistantly distributed on $\hat K$ -based on a tensor -product mesh. In the following we only consider the two-dimensional -case, d=2. For that case, Figure 2 -shows the distributions of the unit support points $\hat p_i$, - - -$i=0,\ldots,(p+1)^2-1$ -for degrees - -$p=1,\ldots ,4$. -
        -
           - - - -
        Figure: -Unit support points $\hat p_i$, - - -$0\leq i<(p+1)^2$, -for degrees - -$p=1,\ldots ,4$.
        -
        - - -\includegraphics*[width=2.750cm]{../../../phd/figures/boundary_approximation/mapping/unit_points_q1_n.eps} - - -\includegraphics*[width=2.750cm]{../../../phd/figures/boundary_approximation/mapping/unit_points_q2_n.eps} - - -\includegraphics*[width=2.750cm]{../../../phd/figures/boundary_approximation/mapping/unit_points_q3_n.eps} - - -\includegraphics*[width=2.750cm]{../../../phd/figures/boundary_approximation/mapping/unit_points_q4_n.eps}
        -
        -
        -Let the ordering and numbering of the unit support points be as -follows: first the corners, then the points on the edges and finally -the inner support points, see also Figure -2. Thus the first 4p points are placed -on the boundary - -$\partial\hat K$ -of the reference cell, i.e. -

        -
        - - - -\begin{displaymath}\hat p_k\in\partial\hat K, \quad k=0,\ldots,4p-1.
-\end{displaymath} -
        -
        -

        -According to (2) these points are mapped to the -mapping support points pk, - -$k=0,\ldots,4p-1$ -that are chosen to be -placed on the boundary of the real cell in approximatively equal -distances, i.e. -

        -
        - - - -\begin{displaymath}p_k\in\partial K, \quad k=0,\ldots,4p-1.
-\end{displaymath} -
        -
        -

        -While the support points pk, - -$k=0,\ldots,4p-1$ -on the boundary are -given by the boundary description of the real cell K, the inner - mapping support points -

        -
        - - - -\begin{displaymath}p_i\in K\setminus\partial K, \quad i=4p,\ldots,(p+1)^2-1
-\end{displaymath} -
        -
        -

        -are not uniquely determined. Numerical tests show that it is not a -trivial task to define the positions of the inner mapping support -points appropriately. If they are not chosen appropriately the -resulting mapping $\sigma $ -for a cell K may degenerate, i.e. the -mapping $\sigma $ -for some cell K may not be bijective. - -

        -Computation of inner support points by smooth transformation. -In the following we will define the positions of the inner mapping -support points so that the mapping does - in all practical cases - not -degenerate. To this end, we employ an approach for the mapping of the -support points, that is in the style of the smooth transformations -that is used to transform structured triangulations to match complex -boundary discriptions. In the following, again for notational -convenience, we consider only the two-dimensional case. - -

        -The smooth transformation mentioned above is based on solutions to the -Laplace equation that is solved on the reference cell $\hat K$. -Discrete boundary conditions are imposed that are given by the -coordinates of the mapping support points pk, - -$k=0,\ldots,4p-1$, -on -the boundary of the cell K in real space. - -

        -To be more explicite we define a Laplace problem on the unit -cell $\hat K$ -

        -
        - - - - - - -
         \begin{displaymath}
-\begin{array}{rcll}
--\hat\Delta \sigma_l(\hat x)&=&0, \quad...
-...l \hat K}(\hat x), \quad &\hat x\in \partial\hat K,
-\end{array}\end{displaymath} -(3)
        -
        -

        -for each component $\sigma_l$, -l=1,2, of the Qp mapping -$\sigma $. -Here, the discrete boundary function - -$g\in [Q_p]^2$ -is -given by -

        -
        - - - - - - -
         \begin{displaymath}
-g_l(\hat x)=\sum_{i=0}^{4p-1}(p_i)_l\phi_i(\hat x), \quad l=1,\ldots,d
-\end{displaymath} -(4)
        -
        -

        -where (pi)l denotes the lth component of the support point pi, -and $\phi_i$ -the corresponding Lagrangian interpolation basis -function. We recall that the numbering of the mapping support points -involves - -$p_k\in\partial K$ -for - -$k=0,\ldots,4p-1$. -Substituting -

        -
        - - - - - - -
         \begin{displaymath}
-\tilde \sigma_l:=\sigma_l-g_l, \quad l=1,2,
-\end{displaymath} -(5)
        -
        -

        -into the Laplace problem (3) yields the -zero boundary value problem, -

        -
        - - - - - - -
         \begin{displaymath}
-\begin{array}{rcll}
--\hat\Delta \tilde\sigma_l(\hat x)&=&\h...
-...gma_l(\hat x)&=&0, \quad &\hat x\in \partial\hat K,
-\end{array}\end{displaymath} -(6)
        -
        -

        -that is equivalent to the following variational formulation -

        -
        - - - -\begin{displaymath}\tilde\sigma_l\in H^1_0(\hat K):\qquad
-(\hat\nabla \tilde\si...
-...\hat\nabla \phi)_{\hat K} \quad \forall \phi\in H^1_0(\hat K). \end{displaymath} -
        -
        -

        -Discretisation of this problem -

        -
        - - - -\begin{displaymath}\tilde\sigma_l\in Q_p(\hat K):\qquad
-(\hat\nabla \tilde\sigm...
-...bla \phi_{4p+i})_{\hat K} \quad \forall i=0,\ldots, (p-1)^2-1, \end{displaymath} -
        -
        -

        -and recalling definitions (1), (5) and (4) gives -

        -
        - - - - - - -
         \begin{displaymath}
-\sum_{j=1}^{(p-1)^2}S_{ij}(p_{4p+j})_l=-\sum_{k=0}^{4p-1}T_{ik}(p_k)_l, \quad i=0, \ldots, (p-1)^2-1,
-\end{displaymath} -(7)
        -
        -

        -with the matrices - -$S_{ij}\in\mathbb R^{(p-1)^2\times(p-1)^2}$ -and - -$T_{ik}\in\mathbb R^{(p-1)^2\times 4p}$ -given by -

        -
        - - - -\begin{displaymath}S_{ij}=(\hat\nabla \phi_{4p+i}, \hat\nabla \phi_{4p+j})_{\hat K}, \quad i,j=0,\ldots,(p-1)^2-1,
-\end{displaymath} -
        -
        -

        -and -

        -
        - - - -\begin{displaymath}T_{ik}=(\hat\nabla \phi_{4p+i}, \hat\nabla \phi_k)_{\hat K}, \quad i=0,\ldots,(p-1)^2-1,\quad k=0,\ldots,4p-1.
-\end{displaymath} -
        -
        -

        -The solutions to problem (7) for l=1,2 are -

        -
        - - - -\begin{displaymath}(p_{4p+j})_l=-\sum_{i=0}^{(p-1)^2-1}\sum_{k=0}^{4p-1}S^{-1}_{ji}T_{ik}(p_k)_l, \quad j=0,\ldots,(p-1)^2-1,
-\end{displaymath} -
        -
        -

        -that may be written in compact form: -

        -
        - - - - - - -
         \begin{displaymath}
-p_{4p+j}=\sum_{k=0}^{4p-1}c_{jk}p_k, \quad j=0,\ldots,(p-1)^2-1,
-\end{displaymath} -(8)
        -
        -

        -where cjk represents the coefficient -

        -
        - - - - - - -
         \begin{displaymath}
-c_{jk}=-\sum_{i=0}^{(p-1)^2-1}S^{-1}_{ji}T_{ik}.
-\end{displaymath} -(9)
        -
        -

        -of the linear combination (8), that -represents the dependency of the jth inner mapping support point -p4p+j on the support points pk, - -$k=0,\ldots,4p-1$, -that are -placed on the boundary of the cell K. For a fixed degree p, these -coefficients cjk are the same for the mapping of all cells -K in real space because the cjk depend only on the reference -element $\hat K$. -Therefore the coefficients cjk can be -precomputed and result in following linear combinations: - -

        -For p=2 the linear combination turns out to be -

        -
        - - - -\begin{displaymath}p_8=\tfrac{1}{16}\sum_{k=0}^3p_k+\tfrac{3}{16}\sum_{k=4}^7p_k,
-\end{displaymath} -
        -
        -

        -see also Figure 3, left. -
        -
           - - - -
        Figure 3: -Left: Coefficients c8,k for Q2 mapping. Right: Coefficients c12,k for Q3 mapping.
        -
        - - -\includegraphics*[scale=0.4]{figures/m2.ps}
        -
        -
        -For the case that p=3, Figure 3, right, shows the coefficients c12,k of the linear combination for the inner mapping support point p12. The coefficents for the points p13, p14 and p15 can be obtain by rotation of the coefficients. - -

        -Implementation in deal.II. The coefficients cjk, see -(9), are represented in the MappingQ -class by the laplace_on_quad_vector as follows -

        -
        - - - -\begin{displaymath}\mbox{\textit{laplace\_on\_quad\_vector}[j][k]}=c_{jk}
-\end{displaymath} -
        -
        -

        -These coefficients are the same for the mapping of all cells -K in real space because the cjk depend only on the reference -element $\hat K$. -Hence for a given degree p the -laplace_on_quad_vector can be filled by the constructor of -the MappingQ class. This is done by calling the -MappingQ::set_laplace_on_quad_vector function that -includes the coefficients hardcoded for p=2 and p=3 in d=2 dimensions, and a routine for computing the coefficients according to -(9) for all other cases. The mapping support -points $p_i\in K$, - - -$i=0,\ldots,(p+1)^d-1$ -are computed once for each -MappingQ object by the -MappingQ::compute_support_points_laplace that is invoked -by the virtual compute_mapping_support_points function of -the base Mapping class. In -MappingQ::compute_support_points_laplace, first the 4p points on the boundary of the cell are computed (by calling -MappingQ::add_line_support_points), then by calling -MappingQ::apply_laplace_vector the remaining (p-1)2 inner mapping supports points are computed, where -MappingQ::apply_laplace_vector just performs the linear -combination given in (8). -

        - -
        -Ralf Hartmann -
        2001-09-03 -
        - - diff --git a/deal.II/doc/reports/nedelec/nedelec.pdf b/deal.II/doc/reports/nedelec/nedelec.pdf deleted file mode 100644 index 1ed9f2effa02241a2057cfa881274d17c934641e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340393 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

        k4wy(h$v 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 z%0A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�b+Q6KdWCi@r37ZbbCir-+;911 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�!|sa!QglxC&oar8=-jxo_B>xa4-N z)1*P{%Da`vYBT3*TwXkX{Pe3&p5J}+qxX+K|MXux(E(HUk6wHB?8QAZbpP7@qn~~2 l&1d(Z%Kd8`Ms@f0i^tDj#935Y5a&{~4}ItpzwpVs{|EaRp-TV& diff --git a/deal.II/doc/reports/nedelec/nedelec.ps b/deal.II/doc/reports/nedelec/nedelec.ps deleted file mode 100644 index 3baeec4a23..0000000000 --- a/deal.II/doc/reports/nedelec/nedelec.ps +++ /dev/null @@ -1,7851 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software -%%Title: main.dvi -%%Pages: 23 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: Helvetica -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips main -o nedelec.ps -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2003.05.02:0909 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: special.pro -%! -TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N -/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N -/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N -/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ -/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho -X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B -/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ -/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known -{userdict/md get type/dicttype eq{userdict begin md length 10 add md -maxlength ge{/md md dup length 20 add dict copy def}if end md begin -/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S -atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ -itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll -transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll -curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf -pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} -if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 --1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 -get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip -yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub -neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ -noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop -90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get -neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr -1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr -2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 --1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S -TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ -Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale -}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState -save N userdict maxlength dict begin/magscale true def normalscale -currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts -/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x -psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx -psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub -TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict -begin/SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ -CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N -/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} -repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N -/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX -currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY -moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X -/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 -1 startangle endangle arc savematrix setmatrix}N end - -%%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) -@start -%DVIPSBitmapFont: Fa cmtt10 10.95 11 -/Fa 11 109 df<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30> -46 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F -80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA4000781 -491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>65 -D<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B -5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167F -A3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387E -B730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C150021 -3879B730>73 D<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003F -B7FC5AB8FCA27E6C16802A387EB730>76 DI<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC -4980A46D91C7FC2B387EB730>84 D97 D<913801FFE04A7F5CA2 -8080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F4913 -1F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F39 -0FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FCC8 -FC2C397DB730>100 D<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07 -FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA5 -16F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07F -E06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<387FFFF8B5 -7EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>108 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmr8 8 1 -/Fb 1 51 df50 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmmi10 10.95 2 -/Fc 2 77 df<49B6D8C03FB512F81BF01780D900010180C7383FF00093C85B4B5EA2197F -14034B5EA219FF14074B93C7FCA260140F4B5DA21803141F4B5DA21807143F4B5DA2180F -4AB7FC61A20380C7121F14FF92C85BA2183F5B4A5EA2187F13034A5EA218FF13074A93C8 -FCA25F130F4A5DA21703131F4A5DA2013F1507A24A5D496C4A7EB6D8E01FB512FCA2614D -3E7DBD4C>72 D<49B612F0A3D900010180C7FC93C8FC5DA314035DA314075DA3140F5DA3 -141F5DA3143F5DA3147F5DA314FF92C9FCA35B5C180C181E0103161C5C183C183813074A -1578187018F0130F4AEC01E0A21703011FED07C04A140F171F013FED3F8017FF4A130301 -7F021F1300B9FCA25F373E7DBD3E>76 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmtt10 10 30 -/Fd 30 121 df<007FB6FCB71280A46C150021067B9B2C>45 D<121FEA3F80EA7FC0EAFF -E0A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80151FA2153F16005D157E15FE5D -14015D14035DA214075D140F5D141F5D143F92C7FC5C147E14FE5CA213015C13035C1307 -5C130F5C131F5CA2133F91C8FC5B137E13FE5B12015B12035B12075BA2120F5B121F5B12 -3F90C9FC5A127E12FE5AA25A127821417BB92C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0 -EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C> -58 D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590383F -01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A4000715C0 -49130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>65 D<007FB512E015F8B612 -FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0ED -FF8090B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616 -FE16FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F027337FB22C>I< -007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0 -150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF -00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>68 D<007FB612F0B712F8A37E39 -03F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8 -007FB612FEB7FCA36C15FC27337EB22C>I<007FB512F8B612FCA36C14F839000FC000B3 -B3A5007FB512F8B612FCA36C14F81E3379B22C>73 D<387FFFE0B57EA36C5BD803F0C8FC -B3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>76 DI<007FB512C0B612F88115FF6C15802603 -F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90 -B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>80 -D<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D5B -A227337EB22C>84 D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC38 -1F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7 -FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF0 -07FC27247CA32C>97 DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA -0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D13 -3F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIIIII<1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2 -EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<387FFFE0B57EA37EEA0003B3 -B3A5007FB61280B712C0A36C158022337BB22C>108 D<397FF01FE039FFF87FFC9038F9 -FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB5 -00F11480A36C01E0140029247FA32C>110 DI<397FF01FE039FFF8FFF801FB13FE -90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED01FC491300A216 -FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280 -160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I114 -D<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB -1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>116 -D119 D<3A3FFF03FFF048018713F8A3 -6C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E090380FCFC0903807EF80 -EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB0FC7EC83E090381F -01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514FE6C15FC14012724 -7EA32C>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmsy5 5 1 -/Fe 1 1 df0 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmmi5 5 5 -/Ff 5 115 df104 D<137013F8A213F013E01300A6EA0F80EA1FC0EA31E01261A2EAC3C01203EA0780 -A3EA0F001308EA1E18A213301370EA0FE0EA07800D1D7D9C16>III<380F07E0383F8FF83833D81CEA63F038C3 -E03CEBC07C1203143838078000A448C7FCA4121E120C16127D911C>114 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg msam10 10 1 -/Fg 1 4 df<007FB812F8B912FCA300F0CA123CB3B3ACB912FCA36C17F836387BB741>3 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmsy7 7 8 -/Fh 8 107 df0 D<0060140600F0140E0078141E6C143C6C1478 -6C14F039078001E03903C003C03901E007803900F00F00EB781E6D5A6D5A6D5A6D5A6D5A -497E497EEB1E78497E497E497E3901E007803903C003C039078001E048C712F0001E1478 -48143C48141E48140E006014061F1F769D34>2 D<017F157F2601FFE0903803FFC00007 -01F890380FF1F0260F83FC90381F0038261E00FF013C7F001890263F8078130C4890261F -C0E07F007090260FE1C07F0060EB07E3913803F780486DB4C7EA01806E5A157E157F8182 -4B7E0060DAF7E0EB0300913801E3F0DBC3F85B6C90260381FC13066C90260F00FE5B001C -011E90387F803C6C017C90381FE0F82607C7F86DB45A2601FFE0010313C06C6CC86CC7FC -391B7C9942>49 D<49B5FC130F133F01FFC7FCEA01F8EA03E0EA078048C8FC121E121C12 -3C123812781270A212F05AA2B7FCA300E0C8FCA27E1270A212781238123C121C121E7E6C -7EEA03E0EA01F86CB4FC013FB5FC130F130120277AA12D>I<1406140EB3B2007FB712E0 -B8FC7E2B287CA734>63 D<147EEB03FEEB0FE0EB1F00133E5BB35BA2485AEA07E0EAFF80 -00FCC7FCB47EEA07E0EA01F06C7EA2137CB37F7FEB0FE0EB03FEEB007E173B7BAB22> -102 D<12FCB47EEA0FE0EA01F06C7E137CB37FA27FEB0FC0EB03FEEB007EEB03FEEB0FC0 -EB1F00133EA25BB35B485AEA0FE0EAFF8000FCC7FC173B7BAB22>I<12E0B3B3B3A5033B -78AB14>106 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmr5 5 3 -/Fi 3 51 df<14E0B0B712C0A3C700E0C7FCB022237C9B2B>43 D<1360EA01E0120F12FF -12F11201B3A3387FFF80A2111C7B9B1C>49 DI E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmmib10 10 1 -/Fj 1 83 df<0103B712E04916FEF0FFC085D90007D9800113F89438003FFCF00FFE5C93 -C76C7EA21A805C5DA3023F4B13005DA24E5A147F4B5D4E5A4E5A02FF4B5A4B495B050790 -C7FCEF3FFC4990B612F0188018E0DBE0017F496E6C7E4B6D7E717EA2496F7E5DA25F495E -92C7FCA2173F5B4A5DA3013F037F14604A4B13F0A21901017F033F14E04A1603B600F890 -391FFC07C094390FFE1F8071B51200050113FCCBEA3FF0443A7CB848>82 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmr10 10.95 51 -/Fk 51 124 df<913801FFC0021F13FC9139FF007F80D903F8EB0FE0D90FF0EB07F8D91F -C0EB01FCD97F806DB4FC49C86C7E48486F7E00038348486F7E000F8349150F001F834915 -07003F83A348486F7EAA6C6C4B5AA3001F5FA26C6C4B5AA200075F6D151F00035FA26C6C -4B5A00005FA2017F4BC7FC6D157EA26D6C5C010F5DA26D6C495A00E0EF0380010315E0D8 -70019238C007006E130301001580A36C0160EC000E003C017049131E263FFFF0ECFFFEA3 -6C5FA339407CBF42>10 D12 D14 -D<4B6C130C4B6C131EA20307143EA24C133CA2030F147CA293C71278A24B14F8A2031E5C -A2033E1301A2033C5CA3037C1303A203785CA203F81307A24B5CA20201140F007FBAFCBB -1280A26C1900C72707C0003EC8FC4B133CA3020F147CA292C71278A24A14F8A2021E5CA3 -023E1301007FBAFCBB1280A26C1900C727F80007C0C8FC4A5CA20101140FA24A91C9FCA3 -01035CA24A131EA20107143EA24A133CA2010F147CA291C71278A34914F8A2011E5CA201 -3E1301A2013C5CA201186D5A41517BBE4C>35 D<1430147014E0EB01C0EB03801307EB0F -00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127E -A6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F13 -787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>40 -D<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA2148013 -0FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133E -A25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<1506 -150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>43 -D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A -120E5A1218123812300B1C798919>II<121EEA7F80A2EAFFC0A4 -EA7F80A2EA1E000A0A798919>I48 -DIII<150E15 -1E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB -0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3 -C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D -5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E -49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090 -C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903 -F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED -078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C -147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D> -III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E -EA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2 -EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206 -120E120C121C5A1230A20A3979A619>I -67 D69 DI78 D<003FB91280A3903AF0007FE001 -018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C816 -00B3B14B7E4B7E0107B612FEA33B3D7DBC42>84 D -86 D97 DI<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B12 -1FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C -6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A -7DA828>IIII<167C903903F801FF903A1FFF078F8090397E0FDE -1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D -13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3 -120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14 -0048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800 -FE017FC7FC90383FFFFC010313C0293D7EA82D>III108 D<2701F801FE14FF00FF90 -2707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9 -C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF -80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091 -387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C -497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F -4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA448 -15FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB -1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00 -FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F80 -5BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE -9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D -3A7EA733>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC -00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>114 -D<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F814 -00A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E00103 -13F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C090388007 -8039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112 -031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F1380 -90381F8700EB07FEEB01F81B397EB723>IIIIII123 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmex10 10 31 -/Fl 31 101 df<1430147014E0EB01C01303EB0780EB0F00A2131E5BA25B13F85B12015B -1203A2485AA3485AA3121F90C7FCA25AA3123EA2127EA6127C12FCB3A2127C127EA6123E -A2123FA37EA27F120FA36C7EA36C7EA212017F12007F13787FA27F7FA2EB0780EB03C013 -01EB00E0147014301462738226>0 D<12C07E12707E123C7E7EA26C7E6C7EA26C7E7F12 -007F1378137CA27FA37FA31480130FA214C0A31307A214E0A6130314F0B3A214E01307A6 -14C0A2130FA31480A2131F1400A3133EA35BA2137813F85B12015B485AA2485A48C7FCA2 -121E5A12385A5A5A14627C8226>I<1538EC01F8EC07E0EC1F80EC7E005CEB03F85C495A -A2495AB3AB131F5CA249C7FC137E5BEA03F8EA07E0EA3F8000FCC8FCA2EA3F80EA07E0EA -03F8C67E137E7F6D7EA280130FB3AB6D7EA26D7E80EB00FC147EEC1F80EC07E0EC01F8EC -00381D62778230>8 D<12E012FCEA3F80EA07E0EA03F8C67E137E7F6D7EA280130FB3AB -6D7EA26D7E80EB00FC147EEC1F80EC07E0EC01F8A2EC07E0EC1F80EC7E005CEB03F85C49 -5AA2495AB3AB131F5CA249C7FC137E5BEA03F8EA07E0EA3F8000FCC8FC12E01D62778230 ->I<151E153E157C15F8EC01F0EC03E01407EC0FC0EC1F8015005C147E5CA2495A495AA2 -495AA2495AA2495AA249C7FCA2137EA213FE5B12015BA212035BA21207A25B120FA35B12 -1FA45B123FA548C8FCA912FEB3A8127FA96C7EA5121F7FA4120F7FA312077FA21203A27F -1201A27F12007F137EA27FA26D7EA26D7EA26D7EA26D7EA26D7E6D7EA2147E80801580EC -0FC0EC07E01403EC01F0EC00F8157C153E151E1F94718232>16 D<12F07E127C7E7E6C7E -7F6C7E6C7E12017F6C7E137EA27F6D7EA26D7EA26D7EA26D7EA26D7EA26D7EA280147E14 -7F80A21580141FA215C0A2140F15E0A3140715F0A4140315F8A5EC01FCA9EC00FEB3A8EC -01FCA9EC03F8A515F01407A415E0140FA315C0141FA21580A2143F1500A25C147E14FE5C -A2495AA2495AA2495AA2495AA2495AA249C7FC137EA25B485A5B1203485A485A5B48C8FC -123E5A5A5A1F947D8232>I<160F161F163E167C16F8ED01F0ED03E0ED07C0150FED1F80 -1600153E157E5D4A5A5D14034A5A5D140F4A5AA24AC7FC143E147E5CA2495AA2495AA249 -5AA2130F5CA2495AA2133F91C8FCA25B137E13FEA25B1201A25B1203A35B1207A35B120F -A35BA2121FA45B123FA690C9FC5AAA12FEB3AC127FAA7E7FA6121F7FA4120FA27FA31207 -7FA312037FA312017FA212007FA2137E137F7FA280131FA26D7EA2801307A26D7EA26D7E -A26D7EA2147E143E143F6E7EA26E7E1407816E7E1401816E7E157E153E811680ED0FC015 -07ED03E0ED01F0ED00F8167C163E161F160F28C66E823D>I<12F07E127C7E7E6C7E6C7E -6C7E7F6C7E1200137C137E7F6D7E130F806D7E1303806D7EA26D7E147C147E80A26E7EA2 -6E7EA26E7EA2811403A26E7EA2811400A281157E157FA2811680A2151F16C0A3150F16E0 -A3150716F0A31503A216F8A4150116FCA6150016FEAA167FB3AC16FEAA16FC1501A616F8 -1503A416F0A21507A316E0150FA316C0151FA31680153FA216005DA2157E15FE5DA21401 -5DA24A5AA214075DA24A5AA24A5AA24AC7FCA2147E147C14FC495AA2495A5C1307495A5C -131F49C8FC137E137C5B1201485A5B485A485A48C9FC123E5A5A5A28C67E823D>I<161E -167EED01FE1507ED0FF8ED3FE0ED7FC0EDFF80913801FE004A5A4A5A5D140F4A5A5D143F -5D147F92C7FCA25C5CB3B3B3A313015CA3495AA213075C495AA2495A495A137F49C8FC48 -5A485AEA07F0EA1FE0485AB4C9FC12FCA2B4FCEA3FC06C7EEA07F0EA03FC6C7E6C7E6D7E -133F6D7E6D7EA26D7E801303A26D7EA3801300B3B3B3A38080A281143F81141F816E7E14 -07816E7E6E7E913800FF80ED7FC0ED3FE0ED0FF8ED07FE1501ED007E161E27C675823E> -26 D<12F012FCB4FC13C0EA3FE0EA0FF86C7E6C7EC67E6D7E6D7E131F806D7E13078013 -03801301A2801300B3B3B3A38080A36E7EA281141F6E7EA26E7E6E7E816E7E6E7EED7F80 -ED1FC0ED0FF0ED07F8ED01FEED007EA2ED01FEED07F8ED0FF0ED1FC0ED7F80EDFF004A5A -4A5A5D4A5A4A5AA24A5A143F5DA24AC7FCA35C5CB3B3B3A313015CA213035C13075C130F -495A5C133F495A49C8FCEA03FE485A485AEA3FE0B45A90C9FC12FC12F027C675823E>I< -EE01C0EE03E0A2160717C0A2160F1780161F1700A25E163E167E167CA216FC5EA215015E -15035EA215075E150F5EA2151F93C7FC5D153EA2157E157C15FC5DA214015DA214035D14 -075DA2140F5D141F92C8FCA25C143E147E147CA214FC5C13015CA213035CA213075C130F -5CA2131F91C9FC5B133EA2137E137C13FC5BA212015B12035BA212075BA2120F5B121F90 -CAFCA25A123E127E127CA212FC5A7E127CA2127E123E123F7EA27F120F7F1207A27F1203 -A27F12017F1200A27F137C137E133EA2133F7F80130FA2801307801303A2801301A28013 -0080147CA2147E143E143F80A281140F811407A2811403811401A2811400A281157C157E -153EA2153F8182150FA2821507821503A2821501821500A282167CA2167E163E163F82A2 -1780160F17C01607A217E01603A2EE01C02BC776823E>I<127012F8A27E127CA2127E12 -3E123F7EA27F120F7F1207A27F1203A27F12017F1200A27F137C137E133EA2133F7F8013 -0FA2801307801303A2801301A280130080147CA2147E143E143F80A281140F811407A281 -1403811401A2811400A281157C157E153EA2153F8182150FA2821507821503A282150182 -1500A282167CA2167E163E163F82A21780160F17C01607A217E01603160717C0A2160F17 -80161F1700A25E163E167E167CA216FC5EA215015E15035EA215075E150F5EA2151F93C7 -FC5D153EA2157E157C15FC5DA214015DA214035D14075DA2140F5D141F92C8FCA25C143E -147E147CA214FC5C13015CA213035CA213075C130F5CA2131F91C9FC5B133EA2137E137C -13FC5BA212015B12035BA212075BA2120F5B121F90CAFCA25A123E127E127CA212FC5AA2 -12702BC778823E>I<176017F0EE01F8A3EE03F0A3EE07E0A3EE0FC0A3EE1F80A3EE3F00 -A3167EA35EA34B5AA34B5AA34B5AA44B5AA34B5AA34BC7FCA3157EA35DA34A5AA34A5AA3 -4A5AA34A5AA34A5AA44AC8FCA3147EA35CA3495AA3495AA3495AA3495AA3495AA349C9FC -A4137EA35BA3485AA3485AA3485AA3485AA3485AA348CAFCA3127EA35AA4127EA37EA36C -7EA36C7EA36C7EA36C7EA36C7EA36C7EA3137EA37FA46D7EA36D7EA36D7EA36D7EA36D7E -A36D7EA3147EA380A36E7EA46E7EA36E7EA36E7EA36E7EA36E7EA3157EA381A36F7EA36F -7EA36F7EA46F7EA36F7EA36F7EA3167EA382A3EE1F80A3EE0FC0A3EE07E0A3EE03F0A3EE -01F8A3EE00F017602DF8748243>42 D<1230127812FCA3127EA37EA36C7EA36C7EA36C7E -A36C7EA36C7EA36C7EA3137EA37FA46D7EA36D7EA36D7EA36D7EA36D7EA36D7EA3147EA3 -80A36E7EA36E7EA46E7EA36E7EA36E7EA36E7EA3157EA381A36F7EA36F7EA36F7EA46F7E -A36F7EA36F7EA3167EA382A3EE1F80A3EE0FC0A3EE07E0A3EE03F0A3EE01F8A4EE03F0A3 -EE07E0A3EE0FC0A3EE1F80A3EE3F00A3167EA35EA34B5AA34B5AA34B5AA44B5AA34B5AA3 -4BC7FCA3157EA35DA34A5AA34A5AA34A5AA34A5AA44A5AA34AC8FCA3147EA35CA3495AA3 -495AA3495AA3495AA3495AA349C9FCA4137EA35BA3485AA3485AA3485AA3485AA3485AA3 -48CAFCA3127EA35AA3127812302DF8778243>I<177C17FCEE01F8A2EE03F0EE07E0EE0F -C0A2EE1F80EE3F005E167E5E15015E15034B5A5E150F5E151F4B5AA24BC7FCA215FEA24A -5AA24A5AA24A5AA2140F5D141F5D143F5DA2147F92C8FC5CA25C13015C1303A25C1307A3 -495AA3495AA3133F5CA3137F5CA313FF91C9FCA35A5BA31203A25BA31207A35BA3120FA4 -5BA2121FA65BA2123FA85BA2127FAE5B12FFB3A62E95688149>48 -D<12F87E127EA27E6C7E6C7EA26C7E6C7E7F12016C7E7F137E137F6D7E131F80130F806D -7EA26D7EA26D7EA26D7EA2147FA26E7EA281141F81140F811407A281140381A214018114 -0081A28182A36F7EA36F7EA382150FA3821507A3821503A3821501A382A281A31780A316 -7FA317C0A4163FA217E0A6161FA217F0A8160FA217F8AE160717FCB3A62E957E8149>I< -EC01F01407140F143F147F903801FFC0491380491300495A495A495A495A5C495A485B5A -91C7FC485AA2485AA2485AA2123F5BA2127F5BA412FF5BB3B3A71C4B607E4A>56 -D<12F812FE6C7E7F13F0EA3FF86C7E6C7EEA03FF6C7F6C7F6D7E6D7E806D7E130F6D7E80 -7F15807F15C07FA2EC7FE0A3EC3FF0A415F8141FB3B3A71D4B737E4A>IIIII64 DII< -EAFF80B3B3B00934598049>I<167F923801FFC0923803C0F0923807803892380F007892 -381F01FC151E153EA2157E92387C0070170015FCA44A5AA81403A45DA41407A94A5AAA4A -5AA95DA4143FA492C8FCA7143E147EA4147C123800FE13FC5CA2495A5CEA7803387007C0 -383C0F80D80FFEC9FCEA03F82E5C7C7F27>82 D88 DII<197C953807FFC0067F13FC0507B612C0057F15FC040FB50083EBFFE093B526F0001F -13FE030F01FCC8387FFFE092B50080030313FE020F01F0CA381FFFE0DAFFFCCCEA7FFE01 -1F0180963803FFF02601FFF0CEEA1FFFD81FFED013F0D8FF80F503FE00F0D2121E771080 -BF78>100 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmti10 10 68 -/Fm 68 123 df<04FFEB03F003039038E00FFC923A0FC0F01F1E923A3F00783E0F923A7E -01F87C3FDB7C03EBFC7F03FC14F8DA01F813F905F1137EDC01E1133C913B03F00003F000 -A314074B130760A3140F4B130F60A3010FB812C0A3903C001F80001F8000A3023F143F92 -C790C7FCA44A5C027E147EA402FE14FE4A5CA413014A13015FA313034A13035FA313074A -495AA44948495AA44948495AA3001CD9038090C8FC007E90380FC03F013E143E00FE011F -5B133C017C5C3AF8780F01E0D878F0EB07C0273FE003FFC9FC390F8000FC404C82BA33> -11 DI< -DC7FC0EB1FFF922603FFF890B512E0923C0FC07C03F801F0923C1F001E0FC00078033E90 -267E1F80137C4BD9FE3FC712FC03FC027E13015D02014A5A057815F84A48D901F8EB00E0 -1B00A302074A5A5DA31707020F5D5DA3010FBA12C0A21B80903D001F80000FC0001FA21A -3F023F021F150092C75BA2621A7E4A143F027E92C7FC1AFE62A25F02FE027E13014A5FA3 -05FE130301014B5C4A1870A219070401EDE0F001034B15E05CA2F2E1C0010714034D14C3 -4A933803E380F101E7963800FF00010F4A48143C4A94C7FCA34A495A131F5F001CEB0380 -007E90380FC01F013F92CAFC26FE3E1F133E013C5C5E3AF8780F01F0D878F0EB83E03A3F -E003FF80270F8000FECBFC4E4C82BA49>14 D<130FEB1F80133F137FEBFF00485A5BEA03 -F0485A485A485A003EC7FC5A5A12E05A111064B92A>19 D<3901E003C03907F00FE0000F -131F01F813F0001F133FA3000F131F3907B00F6038003000A2017013E0016013C0EBE001 -01C01380000113030180130000035B3807000E000E5B485B485B485B48485A00C05B1C19 -71B92B>34 D39 D<150C151C153815F0EC01E0EC -03C0EC0780EC0F00141E5C147C5C5C495A1303495A5C130F49C7FCA2133EA25BA25BA248 -5AA212035B12075BA2120F5BA2121FA290C8FCA25AA2123EA2127EA2127CA412FC5AAD12 -78A57EA3121C121EA2120E7EA26C7E6C7EA212001E5274BD22>I<140C140E80EC0380A2 -EC01C015E0A2140015F0A21578A4157C153CAB157CA715FCA215F8A21401A215F0A21403 -A215E0A21407A215C0140F1580A2141F1500A2143EA25CA25CA2495AA2495A5C1307495A -91C7FC5B133E133C5B5B485A12035B48C8FC120E5A12785A12C01E527FBD22>I44 D<387FFFF8A2B5FCA214F0150579941E>I<120EEA3F80 -127F12FFA31300127E123C0909778819>I48 D<15181538157815F0140114031407EC0FE0141F14 -7FEB03FF90383FEFC0148FEB1C1F13001580A2143FA21500A25CA2147EA214FEA25CA213 -01A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C7FC497EB61280A3 -1D3877B72A>III<16E0ED01F01503A3150716E0A315 -0F16C0A2151F1680A2ED3F00A3157EA2157C15FC5D14015D14035D14075D140F5D141F92 -C7FC143EA25CECF81C153E903801F07EEB03E014C090380780FE130F49485A133EEB7C01 -137801F05BEA01E03803C003EA0FFE391FFFC3F04813FB267C01FF13403AF0003FFFE000 -601307C71400EC0FE05DA3141F5DA3143F92C7FCA4143E141C24487DB72A>I<157F9138 -03FFC0020F13E0EC3F8191387E00F002F81370903903F003F0903807E007EB0FC0EB1F80 -020013E04914C0017E90C7FC13FE5B485AA21203485AA2380FE07E9038E1FF809038E783 -E0391FCE01F09038DC00F813F84848137C5B157E5B485AA390C712FE5A5AA214015D5AA2 -14035DA348495A5D140F5D4A5A6C49C7FC127C147C6C485A6C485A6CB45A6C1380D801FC -C8FC243A76B72A>54 D -III<133C13 -7E13FF5AA313FE13FCEA00701300B2120EEA3F80127F12FFA31300127E123C102477A319 ->I65 D<0107B612FCEFFF8018C0903B00 -0FF0001FF04BEB07F81703021F15FC17014B14FEA2023F1400A24B1301A2147F18FC92C7 -120318F84A140718F04AEC0FE0EF1FC00101ED3F80EF7F004AEB01FEEE07F849B612E05F -9139F80007F0EE01FC01076E7E177F4AEC3F80A2010F16C0171F5CA2131F173F5CA2133F -EF7F805C1800017F5D4C5A91C7485A5F49140FEE1FE0494A5A00014AB45AB748C7FC16F8 -16C037397BB83A>II<0103B612FEEFFFC018F0903B0007F8000FF84BEB03FCEF00FE020F157F -F03F804B141F19C0021F150F19E05D1807143F19F05DA2147FA292C8FCA25C180F5CA213 -0119E04A151FA2130319C04A153FA201071780187F4A1600A2010F16FEA24A4A5A60011F -15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC017FEC03F84C5A91C7EA1FC04949B45A -007F90B548C8FCB712F016803C397CB83F>I<0107B8FCA3903A000FF000034BEB007F18 -3E141F181E5DA2143FA25D181C147FA29238000380A24A130718004A91C7FC5E13015E4A -133E167E49B512FEA25EECF8000107147C163C4A1338A2010F147818E04A13701701011F -16C016004A14031880013F150718004A5CA2017F151E173E91C8123C177C4915FC4C5A49 -14070001ED7FF0B8FCA25F38397BB838>I<0107B712FEA3903A000FF000074B1300187C -021F153CA25DA2143FA25D1838147FA292C8FCEE03804A130718004A91C7FCA201015CA2 -4A131E163E010314FE91B5FC5EA2903807F800167C4A1378A2130FA24A1370A2011F14F0 -A24A90C8FCA2133FA25CA2137FA291CAFCA25BA25B487EB6FCA337397BB836>I<0103B5 -D8F80FB512E0A390260007F8C7381FE0004B5DA2020F153F615DA2021F157F96C7FC5DA2 -023F5D605DA2027F14016092C7FCA24A1403605CA249B7FC60A202FCC712070103150F60 -5CA20107151F605CA2010F153F605CA2011F157F95C8FC5CA2013F5D5F5CA2017F14015F -91C7FC491403007FD9FE01B512F8B55BA243397CB83E>72 D<0103B512F8A390390007F8 -005DA2140FA25DA2141FA25DA2143FA25DA2147FA292C7FCA25CA25CA21301A25CA21303 -A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA291C8FC497EB6FCA25C25 -397CB820>I<0207B512F0A391390007FC006F5AA215075EA3150F5EA3151F5EA3153F5E -A3157F93C7FCA35D5DA314015DA314035DA31407A25DA2140FA2003F5C5A141F485CA24A -5A12FC00E049C8FC14FE00705B495A6C485A381E0FC06CB4C9FCEA01F82C3B78B82C>I< -0107B512FCA25E9026000FF8C7FC5D5D141FA25DA2143FA25DA2147FA292C8FCA25CA25C -A21301A25CA21303A25CA21307A25CA2130F170C4A141CA2011F153C17384A1478A2013F -157017F04A14E01601017F140317C091C71207160F49EC1F80163F4914FF000102071300 -B8FCA25E2E397BB834>76 D<902607FFF8923807FFF0614F13E0D9000FEFF0004F5AA202 -1F167FF1EFC0141DDA1CFCEC01CF023C16DF9538039F800238ED071FA20278ED0E3F97C7 -FC0270151CA202F04B5AF0707E14E0037E14E0010117FE4D485A02C0EC0380A20103ED07 -01610280140EA20107ED1C0305385B14006F137049160705E05B010EEC01C0A2011E9138 -03800F61011CEC0700A2013C020E131F4C5C1338ED1FB80178163F04F091C8FC01705CA2 -01F04A5B187E00015DD807F816FEB500C09039007FFFFC151E150E4C397AB84A>I<9026 -03FFF891B512E0A281D90007923807F8006F6E5A61020F5E81DA0E7F5DA2021E6D130703 -3F92C7FC141C82DA3C1F5C70130EEC380FA202786D131E0307141C147082DAF003143C70 -133814E0150101016E1378030014705C8201036E13F0604A1480163F010715C1041F5B91 -C7FC17E149EC0FE360010E15F31607011E15FF95C8FC011C80A2013C805F133816001378 -5F01F8157CEA03FC267FFFE0143CB51538A243397CB83E>II<0107B612F817FF1880903B000F -F0003FE04BEB0FF0EF03F8141FEF01FC5DA2023F15FEA25DA2147FEF03FC92C7FCA24A15 -F817074A15F0EF0FE01301EF1FC04AEC3F80EFFE0001034A5AEE0FF091B612C04CC7FCD9 -07F8C9FCA25CA2130FA25CA2131FA25CA2133FA25CA2137FA291CAFCA25BA25B1201B512 -FCA337397BB838>I<0103B612F017FEEFFF80903B0007F8003FC04BEB0FF01707020FEC -03F8EF01FC5DA2021F15FEA25DA2143FEF03FC5DA2027FEC07F818F092C7120F18E04AEC -1FC0EF3F004A14FEEE01F80101EC0FE091B6128004FCC7FC9138FC003F0103EC0F80834A -6D7E8301071403A25C83010F14075F5CA2011F140FA25CA2133F161F4AECE007A2017F16 -0F180E91C7FC49020F131C007F01FE153CB5913807F078040313F0CAEAFFE0EF3F80383B -7CB83D>82 D<92383FC00E913901FFF01C020713FC91391FC07E3C91393F001F7C027CEB -0FF84A130749481303495A4948EB01F0A2495AA2011F15E091C7FCA34915C0A36E90C7FC -A2806D7E14FCECFF806D13F015FE6D6D7E6D14E0010080023F7F14079138007FFC150F15 -031501A21500A2167C120EA3001E15FC5EA3003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC -6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F138026C003FCC8FC2F3D7ABA2F>I< -0007B812E0A25AD9F800EB001F01C049EB07C0485AD900011403121E001C5C003C178014 -03123800785C00701607140700F01700485CA2140FC792C7FC5DA2141FA25DA2143FA25D -A2147FA292C9FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CEB3FF0007F -B512F8B6FCA2333971B83B>I<003FB539800FFFFEA326007F80C7EA7F8091C8EA3F0017 -3E49153CA2491538A20001167817705BA2000316F05F5BA2000715015F5BA2000F15035F -5BA2001F150794C7FC5BA2003F5D160E5BA2007F151E161C90C8FCA2163C4815385A1678 -1670A216F04B5A5E1503007E4A5A4BC8FC150E6C143E6C6C5B15F0390FC003E03907F01F -C00001B5C9FC38007FFCEB1FE0373B70B83E>I87 D91 -D -93 D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A120FEBC001 -001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F1583168014 -3F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F022 -2677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207EBE0F8EB -E7FE9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F1300A214 -075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8007C5B38 -3C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FFC090380F -C1E090381F0070017E13784913383901F801F83803F003120713E0120FD81FC013F091C7 -FC485AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003EEB03C0EC -0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426>II<147F903803FFC090 -380FC1E090383F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0 -EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA21530007C14381578007E14F0003E -EB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426>IIIII<150E153F157FA3157E151C1500ABEC1F80EC7FC0ECF1F0 -EB01C090380380F813071401130F130E131EEB1C03133C013813F0A2EB0007A215E0A214 -0FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA25CA21301A25CA213035C12 -1C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0FC0204883B619>IIIII<147F903803FFC090380FC1 -F090381F00F8017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90 -C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F8000 -3EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007C09039 -1FE03FF090393CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE148013E05C -EA01E113C15CA2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80 -035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA2 -1201A25BA21203A25B1207B512C0A3293580A42A>II<3903C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F -800078150000701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3 -120F5BA3121F5BA3123F90C9FC120E212679A423>I<14FE903807FF8090380F83C09038 -3E00E04913F00178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C -13F814FE6C7F6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012 -E06C133E00705B6C5B381E03E06CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0390E0F80 -07121E121C0038140F131F007815C01270013F131F00F0130000E015805BD8007E133FA2 -01FE14005B5D120149137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F003 -133814070001ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A4 -2D>I<01F0130ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140F -A25BD8F07E140000E08013FEC6485B150E12015B151E0003141C5BA2153C000714385B5D -A35DA24A5A140300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01 -F01507D803FC903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F -49EC800F00701607A249133FD8F07E168000E0ED000313FEC64849130718000001147E5B -03FE5B0003160E495BA2171E00070101141C01E05B173C1738A217781770020314F05F00 -03010713016D486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE0 -03F0322679A437>I<903907E007C090391FF81FF89039787C383C9038F03E703A01E01E -E0FE3803C01F018013C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75A -A2147EA214FEA25CA21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC -0380010F1307010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427 ->I<13F0D803FCEB01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A249 -131FD8F07E148012E013FEC648133F160012015B5D0003147E5BA215FE00075C5BA21401 -5DA314035D14070003130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C -48133F92C7FC147E147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0 -233679A428>I<903903C0038090380FF007D91FF81300496C5A017F130E9038FFFE1E90 -38F83FFC3901F007F849C65A495B1401C7485A4A5A4AC7FC141E5C5C5C495A495A495A49 -C8FC131E5B49131C5B4848133C48481338491378000714F8390FF801F0391FFF07E0383E -1FFFD83C0F5B00785CD8700790C7FC38F003FC38E000F021267BA422>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmcsc10 10 25 -/Fn 25 122 df<121C127FEAFF80A5EA7F00121C090977881B>46 -D67 -DII76 D80 D82 D<003FB812FCA3D9C001EB800390C790C7FC007C173E0078171E0070 -170EA300601706A400E01707481703A4C81500B3B0020313C0010FB612F0A338397CB841 ->84 D<1407A24A7EA34A7EA3EC37E0A2EC77F01463A2ECC1F8A201017F1480A290380300 -7EA301067FA2010E80010C131FA2496D7EA2013FB57EA29038300007496D7EA3496D7EA2 -00018149130012036D801207D81FE0903801FF80D8FFF8010F13F8A22D2C7DAB33>97 -D101 DI104 DI107 DIIIII114 D<017F13603901FFE0E0380780F9380E001F481307481303127800 -70130100F01300A315607EA26C14007E127F13C0EA3FFEEBFFE06C13F8000713FE6C7FC6 -1480010F13C01300EC0FE01407EC03F01401A212C01400A37E15E06C1301A26CEB03C06C -EB0780B4EB0F0038F3E01E38E0FFF838C01FE01C2D7BAB26>I<007FB712C0A23A7E003F -C00F007890381F8003007015011600126000E016E0A2481660A5C71500B3A8EC7FE0011F -B57EA22B2B7DAA31>I118 D<3B7FFF800FFFC0A2000790390003FE006C48 -EB01F800015D000015C0017F13036D5C6E48C7FC90381FC0066D6C5A151C6D6C5A903803 -F83001015BECFCE06D6C5AEC7F80A2143F6E7E140F4A7E4A7E1433EC63F8ECE1FCECC0FE -903801807E0103137F49486C7E0106131F4980011C6D7E496D7E0130130301708001F06D -7E000181000781D81FF8491380B46C4913F8A22D2B7DAA33>120 -DI -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fo cmbx10 10.95 41 -/Fo 41 122 df12 -D<130FEB1FC0EB3FE0137FEBFFF05A5AA24813E05A481380481300EA7FFC13F0EAFFC06C -C7FC123C123814126BBF34>19 D44 DII<140F143F5C495A130F48 -B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34>49 -D<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C -6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B -5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948 -EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I< -903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC -131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE -C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048 -7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8 -6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>II<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93 -C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039 -F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2 -1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6 -14FC013F13F0010790C8FC293D7BBB34>I<16FCA24B7EA24B7EA34B7FA24B7FA34B7FA2 -4B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C082020F814B7E -021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982A2D907E0C700 -1F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91B612FCA5463F -7CBE4F>65 DI<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138 -803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B -4A1503481701485B18004890CAFC197E5A5B193E127FA349170012FFAC127F7F193EA212 -3FA27F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07E0D97FFEED0F -C06D6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B55A023F15E002 -071580020002FCC7FC030713C03F407ABE4C>II78 D80 D<003FB912FCA5903BFE003FFE00 -3FD87FF0EE0FFE01C0160349160190C71500197E127EA2007C183EA400FC183F48181FA5 -C81600B3AF010FB712F8A5403D7CBC49>84 D86 D<903807FFC0013F13F8 -48B6FC48812607FE037F260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8 -FC153F91B5FC130F137F3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA415 -1F7F007F143F6D90387BFF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD9 -1FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F -80DAFF8113F09139FC003FF802F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18 -C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F -91C7FCD9E00713FCC7000113C033407DBE3A>I -IIII<903A03FF8007F0013F9038F83FF8499038FCFFFC48B712FE48018313F93A07 -FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D -6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06C -B6FC16F016FC6C15FF17806C16C06C16E01207001F16F0393FE000034848EB003F49EC1F -F800FF150F90C81207A56C6CEC0FF06D141F003F16E001F0147FD81FFC903801FFC02707 -FF800F13006C90B55AC615F8013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA51207 -7EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3 -A4B5D8FE0FB512E0A5333F7CBE3A>II<13FFB5FCA512077EB3B3 -AFB512FCA5163F7CBE1D>108 D<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE -4A6E487FDA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A -6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I< -01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA2 -5CA35CB3A4B5D8FE0FB512E0A533297CA83A>II<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF800 -0701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E -6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9 -FCACB512FEA5333B7DA83A>II<3901 -FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A2 -9138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>I<90383FFC -1E48B512BE000714FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7 -FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C61580131F1300020713C0140000 -78147F00F8143F151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F8 -7F13C026E00FFEC7FC222B7DA929>IIII -III E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmr7 7 22 -/Fp 22 127 df<903803FF80011F13F090387E00FCD801F8133FD807E0EB0FC04848EB07 -E04848EB03F048C7EA01F8A2007EEC00FCA248157EA7007E15FCA36CEC01F8A26C6CEB03 -F0000F15E0A26C6CEB07C0000315806C6CEB0F00A26C6C131ED8C070EB1C060178133CD8 -6038EB380C01181330011C13700070151CD87FFCEB7FFC003F15F8A327297DA82F>10 -D<1306130C13181330136013E0EA01C0EA0380A2EA07005A120E121EA2121C123CA35AA5 -12F85AAB7E1278A57EA3121C121EA2120E120F7EEA0380A2EA01C0EA00E0136013301318 -130C13060F3B7AAB1A>40 D<12C012607E7E7E120E7EEA0380A2EA01C013E0120013F0A2 -13701378A3133CA5133E131EAB133E133CA51378A3137013F0A213E0120113C0EA0380A2 -EA0700120E120C5A5A5A5A0F3B7DAB1A>I<140EB3A2B812E0A3C7000EC8FCB3A22B2B7D -A333>43 D48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215 -267BA521>I<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4 -127CC7FC15005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA01 -80390300030012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8 -381C007C0030137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF80 -91C7FC380001E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B -6C5B381F01F03807FFC0C690C7FC19277DA521>I<0018130C001F137CEBFFF85C5C1480 -D819FCC7FC0018C8FCA7137F3819FFE0381F81F0381E0078001C7F0018133EC7FC80A215 -80A21230127C12FCA3150012F00060133E127000305B001C5B380F03E03803FFC0C648C7 -FC19277DA521>53 D<1238127C12FEA3127C12381200AB1238127C12FC12FEA2127E123E -1206A3120CA31218A212301270122007247B9813>59 D61 D91 -D93 D<5AEA0380EA07C0EA0FE0EA1EF0EA3C -78EA701CEAE00EEAC0060F0978A721>I99 D<120EEA3F80A5EA0E00C7FCA7EA078012FF -A2121F120FB3121FEAFFF8A20D287EA713>105 D108 D<260F81FC137F3BFF8FFF03FFC0903A9C0F8703E03B1FB0 -07CC01F0D80FE013D8903AC003F000F8A301805BAF486C486C487E3CFFF83FFE0FFF80A2 -311A7E9937>I<380F81FC38FF8FFF90389C0F80391FB007C0EA0FE09038C003E0A31380 -AF391FC007F039FFF83FFEA21F1A7E9925>I<380F07C038FF1FF0EB38F8EA1F71EA0F61 -13C1EBC0F014005BAF487EEAFFFCA2151A7E991A>114 D<390F8003E000FF133FA2001F -1307000F1303B01407A20007130F9038C01BF03903E073FE3801FFE339007F83E01F1B7E -9925>117 D<380F8010381FF038383FFFF04813E038E07FC038400F8015067BA621>126 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fq cmmi7 7 27 -/Fq 27 123 df<1238127C12FE12FFA2127F123B1203A31206A3120C1218123812701220 -08127A8614>59 D<12E012F812FEEA3F80EA0FE0EA03F8EA00FEEB3F80EB0FE0EB03F8EB -00FEEC3F80EC0FE0EC03F8EC00FEED3F80ED0FE0ED03F8ED00FE163E16FEED03F8ED0FE0 -ED3F80EDFE00EC03F8EC0FE0EC3F8002FEC7FCEB03F8EB0FE0EB3F8001FEC8FCEA03F8EA -0FE0EA3F8000FEC9FC12F812E027277AA134>62 D64 D<4AB41308020FEBE01891397F80F038903A01F8001870D903E0EB0CF0D90F -80130749C71203013E15E05B491401485A484815C0485A120F5B001F168090C8FC4892C7 -FCA2127EA4127C12FCA21606007C5DA35E007E5D123E5E6C5D6C6C495A00074AC7FCD803 -E0130E6C6C13383900FE01F090383FFFC0D907FCC8FC2D2A7DA830>67 -D<903B3FFFF01FFFF8A2D901FCC7EAFE004A5CA2010314015F5CA2010714035F5CA2010F -14075F5CA2011F140F91B65AA2913880000F013F141F5F91C7FCA249143F94C7FC137EA2 -01FE5C167E5BA2000115FE5E5BA200031401B539C07FFFE0A235287DA736>72 -D<90263FFFF0EB7FF8A2D901FCC7EA1FC04AEC1E005F010315704C5A4AEB03804CC7FC01 -07141C5E4A13E04B5A010FEB0780030EC8FC4A5A157C011F13FE14C3EC877F149E90393F -B83F8014F09138C01FC0148049486C7EA2017E6D7EA201FE6D7EA2496D7EA200016E7EA2 -49147FA2000382B539C007FFF8A235287DA738>75 D<90383FFFF8A2D901FCC7FC5CA213 -03A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCA249141C1618137E163801 -FE1430167049146016E000011401ED03C0491307ED0F800003147FB7FC160026287DA72E ->I78 -D<000FB712E05A9039800FE007D81E009038C001C05A0038011F1300123000705C006015 -01023F148012E0481400A2C74890C7FCA2147EA214FEA25CA21301A25CA21303A25CA213 -07A25CA2130FA25CA2131F001FB57EA22B287DA727>84 D -86 D<15F8141FA2EC01F0A21403A215E0A21407A215C0A2140FEB1F8F90387FCF80EBF0 -EF3803C03FEA0780390F001F00A2001E5B123E003C133E127C147E5A147CA214FC5AECF8 -30A3903801F060A2EA7803010E13C0393C1CF980381FF07F3907C01E001D297CA723> -100 DII<133EEA07FEA2 -EA007CA213FCA25BA21201A25BA2120314FCEBE3FF9038EF0780D807FC13C0EBF00313E0 -A2EA0FC014071380A2121FEC0F801300A248EB1F00A2003E1406143E127EEC7C0C127C15 -1800FCEB3C30157048EB1FE00070EB0F801F297CA727>104 D<130E131F5BA2133E131C -90C7FCA7EA03E0487EEA0C78EA187C1230A212605B12C0A2EA01F0A3485AA2485AA2EBC1 -80EA0F81A2381F0300A213066C5A131CEA07F06C5A11287DA617>I<1407EC0F80141FA2 -1500140E91C7FCA7EB03E0EB07F8EB0C3C1318EB303E136013C0A248485AA2C7FCA25CA4 -495AA4495AA4495AA4495AA21238D87C1FC7FC12FC133E485AEA70F8EA7FE0EA1F801933 -80A61B>I<133EEA07FEA2EA007CA213FCA25BA21201A25BA21203EC07809038E01FC0EC -38600007EB61E014C3EBC187EBC307D80FC613C09038CC038001B8C7FC13E0487E13FEEB -3F80EB0FC0486C7E1303003E1460A2127EECC0C0127CECC18012FC903801E30038F800FE -0070137C1B297CA723>I<137CEA0FFCA2EA00F8A21201A213F0A21203A213E0A21207A2 -13C0A2120FA21380A2121FA21300A25AA2123EA2127EA2EA7C18A3EAF830A21320EA7860 -13C0EA3F80EA0F000E297EA715>I<3B07801FC007E03B0FE07FF01FF83B18F0E0F8783C -3B30F1807CE03E903AFB007D801ED860FEEB3F005B49133E00C14A133E5B1201A2484849 -5BA35F4848485A1830EE01F0A23C0F8003E003E060A218C0933801E180271F0007C013E3 -933800FF00000E6D48137C341B7D993B>I<3907801FC0390FE07FF03918F0E0F83930F1 -807CEBFB00D860FE133C5B5B00C1147C5B1201A248485BA34A5AEA07C01660EC03E0A23A -0F8007C0C0A2EDC180913803C300D81F0013C7EC01FE000EEB00F8231B7D9929>I<3807 -803E390FE0FF803818F3C13930F703C0EBFE073860FC0F13F8158039C1F0070091C7FC12 -01A2485AA4485AA4485AA448C8FCA2120E1A1B7D991F>114 DI<3903E001C03907F003E0380C7807EA187C0030130314011260EBF80000C014C0 -A2EA01F0A2EC0180EA03E0A2EC0300EA07C0A21406A25CA200035B6D5A3801F0E06CB45A -013FC7FC1B1B7D9921>118 DI<90387C03C03901FF0FF03907079C30390E03B078000CEB -F0F8001813E1123015F0396007C0E015001200A2495AA449C7FC15301238007C1460EAFC -3E15C0EAF87E39F06F03803970C70700383F83FE381F01F81D1B7D9926>II<013E13C0137F90 -38FF818048EBC3004813FF380701FE3806000C00045BC75A5C5CEB03800106C7FC5B5B5B -5B9038C00180EA038039060003005C380FF81E381FFFFE38383FFC38601FF86D5A38C007 -C01A1B7D9920>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fr msbm10 10 3 -/Fr 3 83 df<020FB6128091B712C01303010F1680D91FF8C9FCEB7F8001FECAFCEA01F8 -485A485A485A5B48CBFCA2123EA25AA2127812F8A25AA87EA21278127CA27EA27EA26C7E -7F6C7E6C7E6C7EEA00FEEB7F80EB1FF86DB71280010316C01300020F158091CAFCA51630 -16F815014B5A4B5A4B5A4B5A4BC8FC157E001FB812804817C0A26C1780C7D81F80C8FC4A -C9FC147E5C495A495A495A5C6DCAFC324D79B441>40 D<007FB612C0B712FC6C15FF2703 -C01E071380000190393C01C7E00238EBE1F0923800E0F81738EEF03CEE701C171E170EA7 -171E171CEEF03CEEE03817F8923801E1F0EEC7E0923803FF80023FB5120016FC16E00238 -C8FCB3A60003133C007FB512F0B6FC7E2F397EB834>80 D<007FB612E0B712FE6C6F7E27 -03C01E0313E0000190393C00F3F00238EB70F8EE783CEE381E83EE3C07161C18801703A6 -17071800EE3C0FEE380E173EEE78FCEEF7F892380FFFE0023FB5128004FCC7FC16B89138 -38F03CED701CED781EED380EED3C0FED1C07031E7FED0E03030F7FED0701EE81E0ED0380 -707E030113701778EEE0380300133C707EEE700EEE780F9338380780EE3C03041C13C093 -381E01E00003013C90380E00F0007FB539F00FFFFEB67F6C8137397DB836>82 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmsy10 10 39 -/Fs 39 115 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA -7F00121C0909799917>I<0060150600F8150F6C151F007E153F6C157E6C6C14FC6C6CEB -01F86C6CEB03F06C6CEB07E06C6CEB0FC06C6CEB1F80017EEB3F006D137E6D6C5A90380F -C1F8903807E3F0903803F7E06DB45A6D5B6EC7FCA24A7E497F903803F7E0903807E3F090 -380FC1F890381F80FC90383F007E017E7F49EB1F804848EB0FC04848EB07E04848EB03F0 -4848EB01F84848EB00FC48C8127E007E153F48151F48150F00601506282874A841>I8 D14 D<007FB812F8B912FCA26C17F8CCFCAE007FB812F8B912FCA26C17F8CCFCAE00 -7FB812F8B912FCA26C17F836287BA841>17 D<020FB6128091B712C01303010F1680D91F -F8C9FCEB7F8001FECAFCEA01F8485A485A485A5B48CBFCA2123EA25AA2127812F8A25AA8 -7EA21278127CA27EA27EA26C7E7F6C7E6C7E6C7EEA00FEEB7F80EB1FF86DB71280010316 -C01300020F158091CAFCAE001FB812804817C0A26C1780324479B441>I20 -D<020FB6128091B712C01303010F1680D91FF8C9FCEB7F8001FECAFCEA01F8485A485A48 -5A5B48CBFCA2123EA25AA2127812F8A25AA87EA21278127CA27EA27EA26C7E7F6C7E6C7E -6C7EEA00FEEB7F80EB1FF86DB71280010316C01300020F1580323279AD41>26 -D<05041402051E140F057E143FDC01FE14FF4C48EB01FEDC0FF0EB07F8DC3FC0EB1FE04C -C7EA3F80DB01FEECFF00DB07F8EB03FCDB0FE0EB07F0DB3FC0EB1FE003FFC7EA7F80DA01 -FC02FEC7FCDA07F8EB03FCDA1FE0EB0FF0DA3F80EB1FC002FFC7EA7F80D903FCD901FEC8 -FCD90FF0EB07F84948495AD97F80EB3FC0D801FEC7B4C9FCD803F8EB01FCD80FF0EB07F8 -D83FC0EB1FE048C7EA3F8000FE4ACAFCA2007F6E7ED83FC0EB1FE0D80FF0EB07F8D803F8 -EB01FCD801FE6DB4FC26007F80EB3FC0D91FE0EB0FF06D6C6D7ED903FCEB01FED900FF90 -38007F80DA3F80EB1FC0DA1FE0EB0FF0DA07F8EB03FCDA01FCEB00FE6EB4EC7F80DB3FC0 -EB1FE0DB0FE0EB07F0DB07F8EB03FCDB01FEEB00FFDB007FEC3F80DC3FC0EB1FE0DC0FF0 -EB07F8DC03FCEB01FE706CEB00FFDC007E143F051E140F48377BB053>28 -D<181EA4181F84A285180785727EA2727E727E85197E85F11F80F10FC0F107F0007FBA12 -FCBCFCA26C19FCCCEA07F0F10FC0F11F80F13F00197E61614E5A4E5AA24E5A61180F96C7 -FCA260181EA4482C7BAA53>33 D<173CA2173E171E171F8384717E170384717E717E187C -007FB812FEBAFC856C84CBEA03F0727EF000FEF13F80F11FE0F107F8F101FFA2F107F8F1 -1FE0F13F80F1FE00F001F84E5A007FB912C0BA5A96C7FC6C5FCB127C604D5A4D5A601707 -4D5A95C8FC5F171E173E173CA248307BAC53>41 D49 D<91381FFFFE91B6FC1303010F14FED91FF0C7FCEB7F8001FEC8FCEA01F8 -485A485A485A5B48C9FCA2123EA25AA2127812F8A25AA2B712FE16FFA216FE00F0C9FCA2 -7EA21278127CA27EA27EA26C7E7F6C7E6C7E6C7EEA00FEEB7F80EB1FF06DB512FE010314 -FF1300021F13FE283279AD37>I<387FFFF8B6FC15C06C14F0C7EA0FF8EC01FEEC007FED -1F80ED0FC0ED07E0ED03F01501ED00F8A2167CA2163EA2161E161FA2160FA2007FB7FCB8 -FCA27EC9120FA2161FA2161E163EA2167CA216F8A2ED01F01503ED07E0ED0FC0ED1F80ED -7F00EC01FEEC0FF8007FB55AB612C092C7FC6C13F8283279AD37>I54 D<126012F0AD12FCA412F0AD126006207BA400>I<0060161800F0 -163C6C167CA200781678007C16F8A2003C16F0003E1501A26CED03E0A26C16C06D1407A2 -000716806D140FA26C6CEC1F00A26CB612FEA36C5D01F8C7127CA2017C5CA2013C5C013E -1301A2011E5C011F1303A26D6C485AA201075CECC00FA2010391C7FC6E5AA2903801F03E -A20100133CECF87CA2EC7878EC7CF8A2EC3FF0A26E5AA36E5AA36E5A6EC8FC2E3C80B92F ->I<156015F0A21401EB07F190383FFFE0EB7C1FEBF00748486C5AD803C07F4848487ED8 -0F007FA248497E001E14BC153C003E143E141FA248EB1E1F143EA2143CA2147C00FC1580 -147814F8A214F0A21301A214E01303A214C0A21307A21480A2130FA214005B007C150013 -1EA2D87E3E5BA2D83E3C133E137CA21378001F5C13F8000F14784913F800075C0003495A -EBE0033901F007802603FC1FC7FCEBFFFEEBC7F0D807C0C8FCA25BA26CC9FC21477CBF2A ->59 D<18F017011707A3170FA2171F60173F1737177F176F17EF17CF04017F178F160317 -0FEE0707160EA2161C161816381630167016E0A2ED01C016801503ED0700A2150E5DA25D -157815705D02018103CFB5FCEC03BF4AB6FCA2020EC71203141E5C143802788100205B38 -6001E0EAF0036C4848140126FE1F8081B5C8FC190C49EEFF3C496F13F06C4817E06C4817 -806C48EE7E00D8078093C7FC3E407DBB42>65 D<0238EB07FC02F890383FFF80010391B5 -12C0010F010314E0011FEB0F81017B90391E003FF09026E3F078131F010349130FECF1E0 -902607F3C0130714F7DAFF8014E092C7FC18C04A140F49481580EF1F004A141E5F4A5CEE -01E0011F4A5A4A010FC7FC163E9138C001F8ED0FFC013F90383FFF804AB57E028114F0DA -83017F91C7EA3FFC496E7E1607017E6E7E8201FE6E1380A249157FA2173F12015BA21800 -485AA2177E4848157CA25F48484A5A01C75D019F4A5A261FBF80495A496C011EC7FC003F -01F0137C9138FC03F0D87E3FB512C0D87C1F91C8FCD8780713F8D8E00113C0343D7EBA37 ->I<0203B512F0027F14FF49B712E0010F16F890273FC3F00713FED978039038007FFF26 -01E007020F1380D803C0030313C0D80780030013E0000F177FD81F00EE3FF048EF1FF800 -3E4A140F5A0078EF07FC00C0010F1503C7FCA24B1401A3141F5DA3023F16F8A292C8FCF0 -03F0A25C027EED07E0A219C04A150F1980F01F00495A183E6049481578604D5A49484A5A -4D5A050EC7FC4948143C5FEE01E04948EB07C0043FC8FC91380001FC49EB3FF049B51280 -48B500FCC9FC4814E04801FCCAFC3E397FB840>68 DI72 D<0370EBFF80912601E00713E0912603C01F13F891260F007F7F021E9038F03F -FE913A7803C00FFF9139F0078003494848486C1380902603C01E7F902607803EEC7FC049 -485A011E49143F013E17E0494848141FEBF8035D2601F007150F00035CEBE00F00075CD9 -C01EC8FC000F131C49C9FC121FA248CA13C0A348171F1980127EA2183F00FE1800A2183E -187E187C18FC6017016C5F4D5A6017076C6C4B5A4DC7FC171E6D5D6C6C5D5F6D4A5A6C6C -EC03806C6C020FC8FC01FF143E6C01C013F86C9038F807E06C90B512806C6C49C9FC011F -13F0010313803B3D7BBA42>79 D<0203B512F8027FECFF8049B712F0010F8290273FC3F0 -0313FED978039038003FFF2601E00702071380D803C06F13C0D807801500000F177FD81F -00EE3FE0484A141F123E5A0078010F150F12C0C7FC4B15C0A3021FED1F80A24B1500183E -A2023F5D6092C85A4D5A4D5A4A4A5A027E020EC7FC173C17F84AEB03E0EE3F80DB1FFEC8 -FC0101EB7FF89138F8FFC0DAF9FCC9FC02F8CAFC495AA3495AA3495AA3495AA291CBFC5B -A2137EA35B13F013C03B3D7FB83A>I<923801FFC0031F13F8037F13FE0203B6FC91260F -E01F138091261E000313C00278010013E04A147FD903C0EC3FF04948141F49C8EA0FF813 -1E491507137C49ED03FC485AA2485A48481501A2120F485AA290C9FC5AA24817F8127EA2 -170312FE18F0A3EF07E0A26C17C0170F18806DED1F00127F6D153E6D5D6C6C130F01FC01 -3E5B3B1FFF01F801F06CD9FFE05B6C91388003C000014948485A26007FE049C7FC90C812 -1E163816F0ED03E0ED0780033EC8FCEC0FFC0003B500E0140E000F0280143E4801FCC812 -7C48D9FF8014FC000102F014F8D8000F01FEEB01F00101D9FFC013E0D9003F9038FC03C0 -020790B5120002005C031F13F8030113C0374577BA44>I<0203B512FE027FECFFF049B7 -12FC010F16FF90273FC3F00080D9780302077F2601E0071401D803C06F6C7ED80780163F -000F171FEA1F00484A140F123E5A0078010F5E12C0C7FC4B4A5AA296C7FC021F5D183E4B -5C187860023F4A5A4D5A92C7000FC8FC173EEE03F84AEBFFE0DA7E0313804B48C9FC4B7E -ECFC036F7F6F7F0101147F4A80163F707E495A707EA249481307830403151049486E14F0 -F101E04A6D6CEB03C0011F933880078070EC0F0049C8EBC01E716C5A013E92383FF0F001 -7EEEFFE0017C6F1380496F48C7FC01E0ED07F0443B7FB846>II<1A801907F10F00023FB712FE49B85A010F17F0013F17C0494CC7FC2801E0 -0003F0C9FC48481307485A120F48C7485A5A5AA200FE4A5A5A12F01280C8485AA44BCAFC -A415FEA44A5AA44A5AA44A5AA4140F5DA35D141FA25D143FA292CBFC5CA2147E14FE5CA2 -495A5C495A5C0102CCFC41427DBB2D>I<0060161800F0163CB3B26C167CA2007C16F8A2 -6CED01F0003F15036C6CEC07E06C6CEC0FC0D807F0EC3F80D803FE903801FF003A00FFC0 -0FFC6DB55A011F14E0010391C7FC9038007FF82E347CB137>91 DI<14 -034A7E4A7EA24A7EA34A7EA2EC7CF8A2ECF87CA2ECF03C0101133EA249487EA249486C7E -A249486C7EA2EC00034980A2013E6D7EA2496D7EA20178147801F8147CA2484880A24848 -80A24848EC0F80A2491407000F16C0A248C8EA03E0A2003EED01F0A2003C1500007C16F8 -A248167CA248163C006016182E347CB137>94 D102 -D<12FCEAFFC0EA07F0EA01FCEA007E7F80131F80130FB3A7801307806D7E6D7EEB007EEC -1FF0EC07F8EC1FF0EC7E00495A495A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA -07F0EAFFC000FCC8FC1D537ABD2A>I<126012F0B3B3B3B3A91260045377BD17>106 -D<0070131C00F0131EB3B3B3B3A80070131C175277BD2A>I112 D114 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ft cmr12 12 8 -/Ft 8 118 df10 D<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E5BA25B13F85B12015B -1203A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3A2127CA3127EA4123E -A2123FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7FA2EB0780EB03C01301 -EB00E014701438141C140C166476CA26>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E -6C7EA21378137C133C133E131E131FA2EB0F80A3EB07C0A3EB03E0A314F0A21301A214F8 -A41300A314FCB3A214F8A31301A414F0A21303A214E0A3EB07C0A3EB0F80A3EB1F00A213 -1E133E133C137C13785BA2485A485AA2485A48C7FC120E5A5A5A5A5A16647BCA26>I<12 -1EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3A5121E127FEAFF80A213C0A4127F121E12 -00A512011380A3120313005A1206120E120C121C5A5A12600A3E78AA1B>59 -D99 D108 D<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF38 -03F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26> -114 D117 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fu cmmi12 12 1 -/Fu 1 73 df<91B6D8E003B61280A3020001E0C70003EB8000DB7F806E48C7FC03FF1503 -A293C85BA219075C4B5EA2190F14034B5EA2191F14074B5EA2193F140F4B5EA2197F141F -4B5EA219FF143F92B8C8FCA3DA7FC0C712014B5DA2180314FF92C85BA218075B4A5EA218 -0F13034A5EA2181F13074A5EA2183F130F4A5EA2187F131F4A5EA2013F16FFA24A93C9FC -D9FFE002037FB6D8E003B67EA351447CC351>72 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fv cmbx12 12 38 -/Fv 38 122 df12 D14 D19 D39 -D45 DI49 DII< -163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E14 -7E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48 -C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301 -E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001 -C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F -6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007E -C74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F -1480010F01FCC7FC010113C02D427BC038>I67 D69 D77 DI<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C71607A2007E1803 -007C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA545437CC24E>84 -D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E -A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100 -0313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013E -EBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 -DIIIIIII<137C48 -B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF -A512037EB3AFB6FCA518467CC520>I108 D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E00281 -6E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C01 -9E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA557 -2D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F80 -1F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC -3E>II<90397FC00FF8B590 -B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15 -C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E -4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FC -ADB67EA536407DAC3E>II<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13 -BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>I<90 -391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E00FE140F -A215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C800003806C15806C -7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C141FA26DEB -3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I< -EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B51280B7FCA4C601E0 -C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F8090391FFC1F006DB5FC6D13FC -01015B9038003FE023407EBE2C>II119 -DII E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fw cmbx12 14.4 12 -/Fw 12 116 df<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7 -FCB3B3B3A6007FB712FEA52F4E76CD43>49 DI<9138 -0FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803 -F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC16 -80C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA -000713E0030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FE -A2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F0 -4A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F15800103 -02FCC7FCD9001F1380374F7ACD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C -7FA24C7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083 -030F814C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B -800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A2 -4A820103854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547B -D366>65 DI82 D<913801FFF8021FEBFF8091B612F00103 -15FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485B -A2486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F1707 -6C6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01F -F0010390B55A01001580023F49C7FC020113E033387CB63C>99 D<913803FFC0023F13FC -49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E4817 -8048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127F -A27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6C -ECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F03438 -7CB63D>101 DI110 -D<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E0 -13FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB6 -12FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF813 -07D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF -15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F03 -0713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8 -EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387C -B635>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fx cmmi10 10 50 -/Fx 50 123 df11 D13 -D<1403EC3FF891387FFF80D901E313C014800103133F9138001F80ED070092C7FC80A280 -A2808013018080130080147F81143F8149B47E130790380F8FF0EB3E0F496C7E13F83801 -F003D803E07F1207380FC0011380121FEA3F0014005A127EA212FE5D481301A35DA24813 -035D6C13075D127C4A5A6C91C7FC5C6C133E6C6C5A3807C0F03801FFE0D8003FC8FC223D -7DBB25>I<133F14C0EB07F06D7E801301A26D7EA3147FA36E7EA36E7EA36E7EA36E7EA3 -6E7EA36E7EA26E7EA214014A7E5C4A7E91381E3F80143C14784A6C7E1301EB03E049486C -7EEB0F80EB1F00496D7E137E5B48486D7E485A485A000F6E7E485A485A48C87E12FE167F -4816800070151F293B7CB930>21 DI<013FB612E090B712F05A120717E0270F8070 -06C7FC391E00600E48140C003813E04813C048141CEAC0011200148001035BA213071400 -A25B1578011E137CA3133E133C137C157E13FC5B1201157F1203497FA3D801C0131C2C25 -7EA32F>25 D<027FB512C00103B612E0130F5B017F15C09026FF81FEC7FC3901FC007E48 -487F485A497F484880485AA248C7FCA2127EA2153F00FE92C7FC5AA25D157E5A5DA24A5A -A24A5A007C495A5D003C495A003E013FC8FC6C137C380F81F83803FFE0C66CC9FC2B257D -A32F>27 D<0140151E01E0153F00015E484816805B120790C9123F000E161F170F5A1707 -481700A2003014C014010070010314061260A2170E00E04948130C5A171C92C7FC5FA26C -495C4A14F04A7E6C017F495A4A6C485A3AF801F7E00F3BFE0FF3F83F80267FFFE3B5FC02 -C191C7FC6C01815B02005BD80FFCEB7FF0D803F0EB0FC031267FA434>33 -DI39 D<121C127FEAFF80A5EA7F00121C -0909798817>58 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A -1206120E5A5A5A12600A19798817>II<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FC -EB01FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0 -EE1FF0EE07FCEE01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B -48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB -7FC04848CAFCEA07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 -D64 D<1760177017F01601A21603A21607160FA24C7EA2163316731663 -16C3A2ED0183A2ED0303150683150C160115181530A21560A215C014011580DA03007FA2 -02061300140E140C5C021FB5FC5CA20260C7FC5C83495A8349C8FC1306A25BA25B13385B -01F01680487E000716FFB56C013F13FF5EA2383C7DBB3E>I<0103B77E4916F018FC903B -0007F80003FE4BEB00FFF07F80020FED3FC0181F4B15E0A2141FA25DA2143F19C04B143F -1980027F157F190092C812FE4D5A4A4A5AEF0FF04AEC1FC005FFC7FC49B612FC5F02FCC7 -B4FCEF3FC00103ED0FE0717E5C717E1307844A1401A2130F17035CA2131F4D5A5C4D5A13 -3F4D5A4A4A5A4D5A017F4BC7FC4C5A91C7EA07FC49EC3FF0B812C094C8FC16F83B397DB8 -3F>I<9339FF8001C0030F13E0037F9038F80380913A01FF807E07913A07F8000F0FDA1F -E0EB079FDA3F80903803BF0002FFC76CB4FCD901FC80495A4948157E495A495A4948153E -017F163C49C9FC5B1201484816385B1207485A1830121F4993C7FCA2485AA3127F5BA312 -FF90CCFCA41703A25F1706A26C160E170C171C5F6C7E5F001F5E6D4A5A6C6C4A5A16076C -6C020EC8FC6C6C143C6C6C5C6CB4495A90393FE00FC0010FB5C9FC010313FC9038007FC0 -3A3D7CBA3B>I<0103B7FC4916E018F8903B0007F80007FE4BEB00FFF03F80020FED1FC0 -180F4B15E0F007F0021F1503A24B15F81801143F19FC5DA2147FA292C8FCA25C18035CA2 -130119F84A1507A2130319F04A150FA2010717E0181F4A16C0A2010FEE3F80A24AED7F00 -187E011F16FE4D5A4A5D4D5A013F4B5A4D5A4A4A5A057FC7FC017F15FEEE03FC91C7EA0F -F049EC7FC0B8C8FC16FC16C03E397DB845>I<0103B812F05BA290260007F8C7123F4B14 -07F003E0020F150118005DA2141FA25D19C0143FA24B1330A2027F1470190092C7126017 -E05C16014A495A160F49B6FCA25F9138FC000F01031407A24A6DC8FCA201075C18034A13 -0660010F160693C7FC4A150E180C011F161C18184A1538A2013F5E18F04A4A5AA2017F15 -074D5A91C8123F49913803FF80B9FCA295C7FC3C397DB83D>I<0103B812E05BA2902600 -07F8C7123F4B140FF003C0140F18015DA2141FA25D1980143FA25D1760027F14E095C7FC -92C75AA24A1301A24A495A16070101141F91B6FC94C8FCA2903903FC001F824A130EA213 -07A24A130CA2010F141CA24A90C9FCA2131FA25CA2133FA25CA2137FA291CBFC497EB612 -C0A33B397DB835>I<0103B5D8F803B512F8495DA290260007F8C73807F8004B5DA2020F -150F615DA2021F151F615DA2023F153F615DA2027F157F96C7FC92C8FCA24A5D605CA249 -B7FC60A202FCC7120101031503605CA201071507605CA2010F150F605CA2011F151F605C -A2013F153F605CA2017F157F95C8FC91C8FC496C4A7EB690B6FCA345397DB845>72 -D<0103B500F8903807FFFC5BA290260007F8C813804BEDFC0019F0020F4B5AF003804B4A -C7FC180E021F1538604B5CEF0380023F4AC8FC170E4B133C1770027F5C4C5ADB0007C9FC -160E4A5B167E4A13FE4B7E01015B92380E7F80ECFC1CED383F010301E07FECFDC04A486C -7EECFF00D907FC6D7E5C4A130783130F707E5C1601011F81A24A6D7EA2013F6F7EA24A14 -3F84137F717E91C8123F496C81B60107B512C0A26146397DB847>75 -D<0103B6FC5B5E90260007FCC8FC5D5D140FA25DA2141FA25DA2143FA25DA2147FA292C9 -FCA25CA25CA21301A25CA21303A25CA2130718404A15C0A2010F150118804A1403A2011F -16005F4A1406170E013F151E171C4A143C177C017F5D160391C7120F49EC7FF0B8FCA25F -32397DB839>I<902603FFF891381FFFF8496D5CA2D90007030113006FEC007C02061678 -DA0EFF157081020C6D1460A2DA1C3F15E0705CEC181F82023815016F6C5C143015070270 -6D1303030392C7FC02607FA2DAE0015C701306ECC0008201016E130EEF800C5C163F0103 -EDC01C041F131891C713E0160F49EDF03818300106140717F8010E02031370EFFC60130C -EE01FE011C16E004005B011815FF177F1338600130153FA20170151F95C8FC01F081EA07 -FCB512E01706A245397DB843>78 D<0103B612F849EDFF8018E0903B0007F8001FF84BEB -03FCEF00FE020F157FA24BEC3F80A2021F16C0A25DA2143FF07F805DA2027FEDFF006092 -C7485A4D5A4A4A5A4D5A4AEC1F80057FC7FC0101EC07F891B612E094C8FC9139FC000FC0 -0103EC03F0707E4A6D7E831307177E5C177F010F5D5F5CA2011F1401A25CA2133F16034A -4A1360A2017F17E019C091C71401496C01011480B61503933900FE0700EF7E0ECAEA1FFC -EF07F03B3B7DB83F>82 D<267FFFFC91383FFFC0B55DA2000390C83807FC006C48ED03E0 -6060000094C7FC5F17065FA25F6D5DA26D5D17E05F4C5AA24CC8FC6E1306A2013F5C161C -16185EA25E6E5BA2011F495A150393C9FC1506A25D6E5AA2010F5B157015605DA2ECE180 -02E3CAFC14F3EB07F614FE5C5CA25C5CA26D5AA25C91CBFC3A3B7CB830>86 -D<147E903803FF8090390FC1C38090391F00EFC0017E137F49133F485A4848EB1F801207 -5B000F143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D48150CA21403 -EDF01C16181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83C0F9C0 -3A03FF007F80D800FCEB1F0026267DA42C>97 D<133FEA1FFFA3C67E137EA313FE5BA312 -015BA312035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F001F013F8EBE0 -00485A15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715F05AEC0FE0A2 -15C0EC1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7FCEA01FC1E3B -7CB924>II<163FED1FFFA3ED007F167EA216FEA216FCA21501A216F8A21503A216F0A2 -1507A2027E13E0903803FF8790380FC1CF90381F00EF017EEB7FC049133F485A4848131F -000715805B000F143F485A1600485A5D127F90C7127EA215FE5A485CA21401A248ECF80C -A21403161CEDF0181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83 -C0F9C03A03FF007F80D800FCEB1F00283B7DB92B>II<16F8ED03FEED0F879238 -1F0F80ED3E3F167F157CA215FC1700161C4A48C7FCA414035DA414075DA20107B512F0A3 -9026000FE0C7FC5DA4141F5DA4143F92C8FCA45C147EA514FE5CA413015CA4495AA45C13 -07A25C121E123F387F8F80A200FF90C9FC131E12FEEA7C3CEA7878EA1FF0EA07C0294C7C -BA29>I104 D<14E0EB03F8A21307A314F0EB01C090C7FCAB13F8EA03FEEA070F000E1380121C -121812381230EA701F1260133F00E0130012C05BEA007EA213FE5B1201A25B12035BA200 -07131813E01438000F133013C01470EB806014E014C01381EB838038078700EA03FEEA00 -F815397EB71D>I<150FED3F80A2157FA31600151C92C7FCABEC0F80EC3FE0ECF0F09038 -01C0F849487E14005B130E130C131CEB1801133801305BA2EB0003A25DA21407A25DA214 -0FA25DA2141FA25DA2143FA292C7FCA25CA2147EA214FEA25CA21301001E5B123F387F83 -F0A238FF87E0495A00FE5BD87C1FC8FCEA707EEA3FF8EA0FC0214981B722>IIIII<90390F -8003F090391FE00FFC903939F03C1F903A70F8700F80903AE0FDE007C09038C0FF800300 -13E00001491303018015F05CEA038113015CA2D800031407A25CA20107140FA24A14E0A2 -010F141F17C05CEE3F80131FEE7F004A137E16FE013F5C6E485A4B5A6E485A90397F700F -80DA383FC7FC90387E1FFCEC07E001FEC9FCA25BA21201A25BA21203A25B1207B512C0A3 -2C3583A42A>112 D<3903E001F83907F807FE390E3C1E07391C3E381F3A183F703F8000 -38EBE07F0030EBC0FF00705B00601500EC007E153CD8E07F90C7FCEAC07EA2120013FE5B -A312015BA312035BA312075BA3120F5BA3121F5B0007C9FC21267EA425>114 -D<14FF010313C090380F80F090383E00380178131C153C4913FC0001130113E0A33903F0 -00F06D13007F3801FFE014FC14FF6C14806D13C0011F13E013039038003FF01407140300 -1E1301127FA24814E0A348EB03C012F800E0EB07800070EB0F006C133E001E13F83807FF -E0000190C7FC1E267CA427>II<13F8D803FE1438D8070F147C000E6D13FC121C1218003814011230D8701F5C1260 -1503EAE03F00C001005B5BD8007E1307A201FE5C5B150F1201495CA2151F120349EC80C0 -A2153F1681EE0180A2ED7F0303FF130012014A5B3A00F8079F0E90397C0E0F1C90393FFC -07F8903907F001F02A267EA430>I<01F8EB03C0D803FEEB07E0D8070F130F000E018013 -F0121C12180038140700301403D8701F130112601500D8E03F14E000C090C7FC5BEA007E -16C013FE5B1501000115805B150316001203495B1506150E150C151C151815385D00015C -6D485A6C6C485AD97E0FC7FCEB1FFEEB07F024267EA428>I<01F816F0D803FE9138E001 -F8D8070F903801F003000ED9800314FC121C12180038020713010030EDE000D8701F167C -1260030F143CD8E03F163800C001005B5BD8007E131F183001FE5C5B033F147000011760 -4991C7FCA218E000034A14C049137E17011880170318005F03FE1306170E000101015C01 -F801BF5B3B00FC039F8070903A7E0F0FC0E0903A1FFC03FFC0902703F0007FC7FC36267E -A43B>I<903907E001F090391FF807FC9039783E0E0F9039E01F1C1FD801C09038383F80 -3A03800FF07F0100EBE0FF5A000E4A1300000C157E021F133C001C4AC7FC1218A2C7123F -A292C8FCA25CA2147EA214FEA24A130CA20101141C001E1518003F5BD87F81143801835C -00FF1560010714E03AFE0E7C01C0D87C1C495A2778383E0FC7FC391FF00FFC3907C003F0 -29267EA42F>I<13F8D803FE1470D8070F14F8000EEB8001121C121800381403003015F0 -EA701F1260013F130700E0010013E012C05BD8007E130F16C013FE5B151F000115805BA2 -153F000315005BA25D157EA315FE5D1401000113033800F80790387C1FF8EB3FF9EB0FE1 -EB00035DA2000E1307D83F805B007F495AA24A5A92C7FCEB003E007C5B00705B6C485A38 -1E07C06CB4C8FCEA01FC25367EA429>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fy cmbx10 10 20 -/Fy 20 122 df58 -D65 D97 -D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC002 -80EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE0 -6E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A -7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812 -1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C -EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>II<903803FF8001 -1F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0F -F0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F0 -00071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>II<161FD907FE -EBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990 -387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F8 -6D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C81 -5A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB -07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA41207 -7EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291 -C7FCB3A3B5D8FC3F13FFA4303A7DB935>II<01FED97FE0EB0FFC00FF -902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F00 -0749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083 -B512F0A44C257DA451>109 D<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C -011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435 ->I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D -7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A -6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF -01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB7FE091C7 -13F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DA -F00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA4 -35>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138 -807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 -D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E -7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE -140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F81400 -38E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7 -FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425> -I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90 -387FFFFC011F13F00103138030257DA435>I121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fz cmr10 10 88 -/Fz 88 128 df<1506150FA24B7EA24B7EA24B7EA2EDDFF0A29138018FF8A291380307FC -A291380603FEA291380E01FF140CDA1C007F141802386D7E143002706D7E146002E06D7E -5C01016E7E5C01036E7E91C7FC496E7E1306010E6E7E130C011C6E7F131801386F7E1330 -01706F7E136001E06F7E5B170F484882170748C97F17030006831701488383481880001F -B9FC4818C0A24818E0A2BA12F0A23C3C7CBB45>1 D5 DI<011FB512FEA39026001FFEC8FCEC07F8A8EC3FFE01 -03B512E0D91FF713FC90397F07F87F01FCEC1F80D803F8EC0FE0D807F06E7ED80FE06E7E -001F82D83FC06E7EA2007F8201808000FF1780A7007F170001C05C003F5EA2D81FE04A5A -000F5ED807F04A5AD803F84A5AD800FCEC1F80017F027FC7FC90391FF7FFFC0103B512E0 -9026003FFEC8FCEC07F8A8EC1FFE011FB512FEA331397BB83C>8 -D10 D -II14 D<133C137EA213FE1201EA03FC13F0EA07E0EA -0FC0EA1F80EA1E005A5A5A12C00F0F6FB92A>19 D<001C131C007F137F39FF80FF80A26D -13C0A3007F137F001C131C00001300A40001130101801380A20003130301001300485B00 -061306000E130E485B485B485B006013601A197DB92A>34 D<141FEC7FC0903801F0E090 -3803C0600107137090380F803090381F00381518A25BA2133E133F15381530A215705D5D -140190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF8000107ED0FC0 -6E5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E015302601C07F1470 -D803805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8FC007E903807 -F8060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C5B7013066C6C -496C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800FFFF0C69026FE -000313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0A3127F121C12 -00A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<146014E0EB01C0EB -0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35A -A65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB -0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7E -A21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A3 -1400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13 -527CBD20>I<15301578B3A6007FB812F8B912FCA26C17F8C80078C8FCB3A6153036367B -AF41>43 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A120612 -0E5A5A5A12600A19798817>II<121C127FEAFF80A5EA7F00121C -0909798817>I<150C151E153EA2153C157CA2157815F8A215F01401A215E01403A215C0 -1407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C1303A249 -5AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A25B12 -07A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD2A>I< -EB03F8EB1FFF90387E0FC09038F803E03901E000F0484813780007147C48487FA248C77E -A2481580A3007EEC0FC0A600FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F -143EA26C6C5B6C6C5B6C6C485A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A> -I -III<1538A2157815F8 -A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C13 -1C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C7 -3803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C9038F003F890B5 -FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E09038 -8003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300485C12E00060 -5C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB -1FE0213A7CB72A>II<12301238123E003FB612E0A3 -16C05A168016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C -140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8 -FC131E233B7BB82A>III<121C12 -7FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C12 -7FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A412031300A25A1206 -A2120E5A121812385A1260093479A317>I<007FB812F8B912FCA26C17F8CCFCAE007FB8 -12F8B912FCA26C17F836167B9F41>61 D<1538A3157CA315FEA34A7EA34A6C7EA202077F -EC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F15 -01A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E -7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65 -DI<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03 -FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48 -48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312 -3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0 -5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D -7BBA3C>III< -B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED01 -80A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612 -C0A32F397DB836>III -I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B -0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B>III< -B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3 -F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C13 -30A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1F -D8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C ->I -III82 -D -I<003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A3006017 -30A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>IIII89 D91 D -93 D<13101338137C13FE487E3803C780380783C0380F01E0381E00F04813780070131C -48130E00401304170D77B92A>I96 -DIIIII<147E903803FF8090380FC1E0EB1F879038 -3F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A3 -1C3B7FBA19>I -IIIIII<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E -903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A249 -5CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FF -EB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C49 -7EB500C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038F1 -E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB03F04914F849130116FC150016FE -A3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038 -F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>II<3807E01F00FF -EB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A4 -5BB3A2487EB512F0A31C257EA421>II<1318A51338A31378A313F8120112031207001FB5FCB6FCA2 -D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220> -IIIIII<003FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC -3F800060137F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A -485A0007140E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA3 -25>II126 D<001C131C007F137F39FF80FF80 -A5397F007F00001C131C190978B72A>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FA cmmi12 14.4 1 -/FA 1 73 df<020FB600E090B612FEA4DA00070180C8387FF8006F90C96C5A4C5F030717 -7F645EA2030F17FF645EA2031F5E99C7FC5EA2033F5E635EA2037F1607635EA203FF160F -635EA24A171F6393C9FCA24A173F6393B8FCA25C6303FCC9127FA2020F17FF635DA2021F -5E98C8FC5DA2023F5E625DA2027F1607625DA202FF160F625DA249171F6292C9FCA24917 -3F625CA20107177F625CA2010F17FFA2D93FFE03037F007FB60107B612F0B75BA24B5F5F -527AD161>72 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FB cmr12 14.4 30 -/FB 30 122 df<923803FFF0033F13FF4AB612E0020F9038003FFCDA3FF0EB03FFDAFFC0 -010013C0010390C8EA3FF0D907FCED0FF849486F7ED93FF06FB4FC49486F7F49486F7F48 -49707EA24890CA6C7E4848717EA24848717E001F85A2491707003F85A34848711380AB6C -6C4D1300A4001F616D170FA2000F61A26C6C4D5AA20003616D173F6C616E167F6C61017F -606E16FF013F95C7FC6D6C4B5AA2010F5F6D6C4B5AA26D6C4B5AA201015F6D6C4B5AA200 -E0017C93388001C06EED1F000070F10380021E151E021F153E6E153CA26C6E027CEB0700 -02071578A2003C010303705B003E616CB56C91B512FEA56C61A34A547BD355>10 -D12 -D19 D<120FEA3FC0EA7FE0EAFFF013F8A313 -FCA2127FEA3FDCEA0F1C1200A5133C1338A31378137013F0A2EA01E0A2EA03C0EA0780A2 -EA0F00121E5A5A12300E2376D221>39 D<15E01401EC03C0EC0780EC0F00141E5C147C5C -495A13035C495A130F5C131F91C7FC133E137EA25BA2485AA25B1203A2485AA3120F5BA2 -121FA25BA2123FA290C8FCA35AA5127EA312FEB3A3127EA3127FA57EA37FA2121FA27FA2 -120FA27F1207A36C7EA212017FA26C7EA2137EA2133E7F80130F8013076D7E8013016D7E -147C143C8080EC0780EC03C0EC01E014001B7974D92E>I<12E07E12787E7E7E6C7E7F6C -7E6C7E7F1200137C137E133E133F7F6D7E80A26D7EA26D7EA2130180A26D7EA380147EA2 -147FA280A21580A2141FA315C0A5140FA315E0B3A315C0A3141FA51580A3143FA21500A2 -5CA2147EA214FE5CA3495AA25C1303A2495AA2495AA25C49C7FC5B133E137E137C5B1201 -5B485A485A5B48C8FC121E5A5A5A5A1B797AD92E>I45 -D<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F00C7FCB3A9120FEA3FC0EA7FE0EAFF -F0A6EA7FE0EA3FC0EA0F000C3376B221>58 D<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3F -C0EA0F00C7FCB3A9120FEA3FC0127FEAFFE0A213F0A4127F123FEA0F701200A513F0A213 -E0A3120113C01203A213801207EA0F00A2121E5AA25A12300C4A76B221>I65 -D69 -DI77 -DI99 D<17FF4BB5FCA4ED0007160182B3A6EC0FF8EC7FFF49B512E0903907FC03F090391F -E0007C49487F49C7120F01FE80484880485A000781484880A2485AA2485AA2127FA35B12 -FFAB127FA27FA2123FA27F121FA26C6C5C00075D7F6C6C5C6C6C5C6C6C021E7F6D6C017C -13E0D91FC049EBFF8090390FF807E00103B512800100495ADA1FF091C7FC39547CD241> -II<157F913803FFE0020F13F091383FC0F891387F01 -FC903901FE03FE903803FC0714F81307EB0FF0A290391FE003FCED01F892C7FC495AB3B6 -12FEA426003FC0C7FCB3B3A580EBFFF0007FEBFFF8A427547DD324>II<1378EA01FE487E487FA66C90C7FC6C5AEA007890C8FCB0EB7F80B5FCA41203C6 -FC137FB3B3A43801FFE0B61280A419507CCF21>105 D108 D<01FFD907FEEC03FFB590261FFFC0010F -13E0037F01F0013F13F8912701F80FFC9038FC07FE913D03C003FE01E001FF0003902607 -00019038038000C6010E6D6C48C76C7E6D48DA7F8E6E7E4A159CA24ADA3FF86E7E02605D -14E04A5DA34A5DB3AD2601FFE0DAFFF0EC7FF8B6D8C07F9026FFE03FB512F0A45C347CB3 -63>I<01FFEB07FCB590383FFF8092B512E0913901F00FF8913903C007FC000349C66C7E -C6010E13016D486D7E5C143002706E7E146014E05CA35CB3AD2601FFE0903801FFE0B600 -C0B612C0A43A347CB341>II<90397F8007FCB590387FFF -800281B512E0913987F00FF891398F8003FC000390399E0001FFC601BC6D7FD97FF86E7E -4A6E7E4A6E7E4A140F844A6E7EA2717EA3717EA4711380AB4D1300A44D5AA24D5AA2606E -140F4D5A6E5D6E4A5A6E4A5A02BC4AC7FC029E495A028FEB07FC913987E01FF00281B512 -C0DA807F90C8FCED0FF892CAFCB13801FFE0B612C0A4394B7DB341>I<01FFEB1F80B5EB -7FF0913801FFF8913803E1FC91380783FE0003EB0F07C6131EEB7F1C1438143091387003 -FC91386000F0160014E05CA45CB3AA8048487EB612F0A427347DB32E>114 -DIII121 -D E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 1162 531 a FB(An)39 b FA(H)9 b FB(\(curl)o(;)20 -b(\012\)-conforming)34 b(FEM:)1200 680 y(N)m(\023)-55 -b(ed)m(\023)g(elec's)36 b(elemen)m(ts)h(of)h(\014rst)g(t)m(yp)s(e)1446 -933 y Fz(Anna)27 b(Sc)n(hneeb)r(eli,)h(Ma)n(y)f(2,)g(2003)28 -1223 y Fy(Abstract:)35 b Fz(The)23 b(aim)f(of)h(this)g(rep)r(ort)e(is)i -(to)f(giv)n(e)g(an)h(in)n(tro)r(duction)f(to)g(N)n(\023)-39 -b(ed)n(\023)g(elec's)21 b Fx(H)7 b Fz(\(curl;)14 b(\012\)-conforming)21 -b(\014nite)i(elemen)n(t)28 1322 y(metho)r(d)j(of)g(\014rst)f(t)n(yp)r -(e.)36 b(As)26 b(the)g(name)g(suggests,)f(this)h(metho)r(d)g(has)f(b)r -(een)h(in)n(tro)r(duced)g(in)g(1980)e(b)n(y)h(J.)h(C.)g(N)n(\023)-39 -b(ed)n(\023)g(elec)24 b(in)i([8)o(].)28 1422 y(In)c(the)g(\014rst)g -(section,)g(w)n(e)g(presen)n(t)f(the)h(mo)r(del)g(problem)g(and)g(in)n -(tro)r(duce)f(the)h(framew)n(ork)e(for)i(its)g(v)-5 b(ariational)20 -b(form)n(ulation.)28 1522 y(In)26 b(the)h(second)f(section,)h(w)n(e)f -(presen)n(t)g(N)n(\023)-39 b(ed)n(\023)g(elec's)24 b(elemen)n(ts)j(of)f -(\014rst)g(t)n(yp)r(e)h(for)f Fx(H)7 b Fz(\(curl;)14 -b(\012\).)37 b(W)-7 b(e)26 b(start)g(b)n(y)h(considering)e(the)28 -1621 y(case)d(of)i(a\016ne)f(grids)g(in)h(t)n(w)n(o)f(and)g(three)h -(space)f(dimensions.)35 b(W)-7 b(e)24 b(in)n(tro)r(duce)f(the)h(Piola)f -(transformation)f(for)h(v)n(ector)f(\014elds)28 1721 -y(and)33 b(discuss)f(the)i(c)n(hoice)e(of)h(function)h(spaces)e(and)h -(degrees)f(of)h(freedom.)53 b(These)33 b(results)f(are)g(then)i -(extendend)f(to)g(bi-)28 1821 y(and)26 b(trilinear)f(grids.)36 -b(W)-7 b(e)26 b(explain)g(the)h(practical)e(construction)h(of)g(global) -f(shap)r(e)h(functions)h(and)f(conclude)g(this)h(section)28 -1920 y(with)h(some)f(remarks)f(on)h(appro)n(ximation)f(results.)28 -2020 y(Numerical)e(results,)g(whic)n(h)h(serv)n(e)e(to)i(illustrate)f -(the)h(con)n(v)n(ergence)d(of)j(the)g(metho)r(d,)g(are)f(presen)n(ted)g -(in)h(the)g(third)g(section.)28 2119 y(In)35 b(App)r(endix)i(A,)f(w)n -(e)f(demonstrate)g(ho)n(w)g(solutions)f(of)i(the)g(t)n(w)n -(o-dimensional)e(mo)r(del)i(problem)f(can)g(b)r(e)h(constructed)28 -2219 y(from)27 b(solutions)g(of)g(the)h(scalar)e(Laplace)h(equation.)28 -2319 y(In)40 b(App)r(endix)g(B)g(w)n(e)f(motiv)-5 b(ate)40 -b(the)g(mo)r(del)g(problem)g(studied)g(in)g(the)g(rep)r(ort)f(b)n(y)h -(considering)e(the)i(time-harmonic)28 2418 y(Maxw)n(ell's)26 -b(equations)h(in)h(the)g(lo)n(w-frequency)e(case.)28 -2653 y Fw(1)134 b Fv(The)38 b(mo)s(del)e(problem)h(and)h(the)g(space)g -Fu(H)8 b Ft(\(curl)o(;)17 b(\012\))28 2835 y Fz(Consider)26 -b(the)i(v)n(ector-v)-5 b(alued)26 b(mo)r(del)i(problem)f(in)h(a)f -(Lipsc)n(hitz)g(domain)h(\012)23 b Fs(2)g Fr(R)2628 2805 -y Fq(d)2673 2835 y Fz(,)k Fx(d)d Fz(=)e(2)p Fx(;)14 b -Fz(3:)1424 2980 y(curl)f(curl)g Fx(u)p 1728 2993 48 4 -v 18 w Fz(+)18 b Fx(c)p Fz(\()p Fx(x)p Fz(\))p Fx(u)p -2024 2993 V 24 w Fz(=)23 b Fx(f)p 2184 3009 50 4 v 91 -w Fz(in)83 b(\012)14 b Fx(;)1290 b Fz(\(1\))28 3136 y(with)28 -b(righ)n(t)f(hand)g(side)h Fx(f)p 792 3166 V 31 w Fs(2)c -Fx(L)1000 3106 y Fp(2)1036 3136 y Fz(\(\012\))1160 3106 -y Fq(d)1200 3136 y Fz(.)28 3236 y(W)-7 b(e)28 b(assume)e(a)i -(homogeneous)d(Diric)n(hlet)j(b)r(oundary)f(condition)g(on)h(the)g -(tangen)n(tial)e(trace)1824 3381 y Fx(u)p 1824 3394 48 -4 v 17 w Fs(^)19 b Fx(n)p 1963 3394 50 4 v 23 w Fz(=)k(0)1689 -b(\(2\))28 3526 y(on)27 b(the)h(b)r(oundary)f Fx(@)5 -b Fz(\012)27 b(of)h(\012.)28 3625 y(The)f(co)r(e\016cien)n(t)h -Fx(c)p Fz(\()p Fx(x)p Fz(\))g(is)g(assumed)f(to)g(b)r(e)h(b)r(ounded)g -(and)g(uniform)f(p)r(ositiv)n(e)g(de\014nite.)28 3725 -y(This)i(t)n(yp)r(e)g(of)g(problem)f(t)n(ypically)h(arises)e(in)j -(particular)d(settings)i(of)g(Maxw)n(ell`s)f(equations.)40 -b(The)29 b(b)r(oundary)g(condition)28 3825 y(\(2\))36 -b(then)g(applies)f(to)h(a)f(p)r(erfectly)h(conducting)g(b)r(oundary)-7 -b(.)61 b(F)-7 b(or)35 b(a)g(deriv)-5 b(ation)35 b(of)h(the)g(mo)r(del)g -(problem)f(\(1\),)j(refer)d(to)28 3924 y(App)r(endix)28 -b(B.)28 4123 y(The)f(sub)5 b(ject)28 b(of)g(this)f(section)h(is)f(to)h -(giv)n(e)e(an)i(appropriate)d(setting)j(for)f(a)g(v)-5 -b(ariational)26 b(form)n(ulation)h(of)g(\(1\).)28 4223 -y(A)h(more)e(detailed)i(treatmen)n(t)f(of)h(the)g(follo)n(wing)e -(notions)h(and)h(pro)r(ofs)f(can)g(b)r(e)h(found)g(in)g([4)o(].)28 -4446 y Fv(1.1)112 b Fo(De\014nitions)28 4599 y Fn(Convention)27 -b Fz(1)45 b Fm(In)26 b(the)h(fol)t(lowing,)j(the)d(ve)l(ctor)g -Fx(t)p 1629 4612 30 4 v 27 w Fm(wil)t(l)h(denote)f(the)g(unit)e -(tangent)h(ve)l(ctor)h(w.)h(r.)f(t.)37 b(an)27 b(e)l(dge)g(of)g(a)g -(triangle)28 4699 y(or)38 b(quadrilater)l(al,)44 b(oriente)l(d)39 -b(c)l(ounter)l(clo)l(ckwise)g(with)g(r)l(esp)l(e)l(ct)g(to)f(the)h(c)l -(orr)l(esp)l(onding)h(triangle)f(or)g(quadrilater)l(al.)67 -b(\(In)28 4798 y(3d,)36 b(the)f(c)l(onsider)l(e)l(d)g(triangles)g(or)g -(quadrilater)l(als)h(wil)t(l)g(always)g(b)l(e)e(fac)l(es)h(of)h(a)e(p)l -(olyhe)l(dr)l(on,)k(and)d(the)f(c)l(ounter)l(clo)l(ckwise)28 -4898 y(orientation)c(has)h(to)e(b)l(e)h(understo)l(o)l(d)g(as)g(induc)l -(e)l(d)g(by)h("outwar)l(d)e(unit)g(normal)i(of)f(the)g(fac)l(e,)h(plus) -f(right)h(hand)f(rule")g(\).)28 5101 y Fz(Let)f(us)h(\014rst)f -(consider)f(the)i(case)f(of)g Fx(d)d Fz(=)g(2.)42 b(F)-7 -b(or)29 b Fx(v)p 1622 5114 44 4 v 29 w Fz(=)1782 4984 -y Fl(\022)1885 5051 y Fx(v)1925 5063 y Fp(1)1962 5051 -y Fz(\()p Fx(x;)14 b(y)s Fz(\))1885 5150 y Fx(v)1925 -5162 y Fp(2)1962 5150 y Fz(\()p Fx(x;)g(y)s Fz(\))2196 -4984 y Fl(\023)2284 5101 y Fs(2)26 b Fz([)p Fs(D)r Fz(\()p -2486 5035 60 4 v(\012)q(\)])2602 5071 y Fp(2)2669 5101 -y Fz(and)j Fx(')e Fs(2)f(D)r Fz(\()p 3092 5035 V(\012)q(\))k(w)n(e)f -(de\014ne)g(the)h(scalar-)28 5246 y(and)d(the)h(v)n(ector-v)-5 -b(alued)26 b(curl-op)r(erators:)1059 5436 y(curl)14 b -Fx(v)p 1212 5449 44 4 v 26 w Fz(:=)23 b Fx(@)1433 5448 -y Fq(x)1474 5436 y Fx(v)1514 5448 y Fp(2)1570 5436 y -Fs(\000)18 b Fx(@)1697 5448 y Fq(y)1737 5436 y Fx(v)1777 -5448 y Fp(1)1898 5436 y Fz(and)96 b(curl)p 2128 5449 -139 4 v 14 w Fx(')23 b Fz(:=)2469 5319 y Fl(\022)2605 -5386 y Fx(@)2649 5398 y Fq(y)2689 5386 y Fx(')2572 5485 -y Fs(\000)p Fx(@)2681 5497 y Fq(x)2722 5485 y Fx(')2818 -5319 y Fl(\023)2907 5436 y Fx(:)1972 5719 y Fk(1)p eop -%%Page: 2 2 -2 1 bop 28 207 a Fz(W)-7 b(e)28 b(note)f(that)h(the)g(curl)13 -b(curl-op)r(erator)25 b(in)j(t)n(w)n(o)f(dimensions)g(has)g(to)h(b)r(e) -g(understo)r(o)r(d)f(as)g(curl)p 2909 220 139 4 v 14 -w(curl)o(.)28 462 y Fn(Remark)h Fz(1)45 b Fm(In)38 b(the)h(two)f -(dimensional)j(c)l(ase,)g(the)e Fz(curl)f Fm(op)l(er)l(ator)i(is)f -(simply)g(the)g(diver)l(genc)l(e)h(of)f(the)g(r)l(otate)l(d)g(\014eld)g -Fx(v)p 3893 475 44 4 v 3 w Fm(.)28 561 y(Similarly,)31 -b(the)f Fz(curl)p 546 574 139 4 v 30 w Fm(op)l(er)l(ator)g(is)g(the)g -(r)l(otate)l(d)g(gr)l(adient)h(\014eld)f(of)g Fx(')p -Fm(.)39 b(Setting)1659 770 y Fj(R)24 b Fz(=)1843 653 -y Fl(\022)1978 720 y Fz(0)115 b(1)1945 819 y Fs(\000)p -Fz(1)83 b(0)2218 653 y Fl(\023)2306 770 y Fx(;)28 979 -y Fm(we)30 b(have)1687 1079 y Fz(curl)13 b Fx(v)p 1839 -1092 44 4 v 27 w Fz(=)22 b(div)15 b(\()q Fj(R)p Fx(v)p -2226 1092 V 4 w Fz(\))28 1216 y Fm(and)1719 1316 y Fz(curl)p -1719 1329 139 4 v 14 w Fx(')23 b Fz(=)g Fj(R)p Fs(r)p -Fx(')14 b(:)28 1454 y Fm(We)26 b(further)g(note)g(that)h(the)f -(tangential)h(ve)l(ctor)f Fx(t)p 1555 1467 30 4 v 27 -w Fm(is)g(just)g(the)g(r)l(otate)l(d)h(outwar)l(d)f(unit)g(normal)h(ve) -l(ctor)f Fx(t)p 3268 1467 V 23 w Fz(=)d Fj(R)3482 1417 -y Fq(T)3534 1454 y Fx(n)p 3534 1467 50 4 v Fm(.)37 b(This)28 -b(wil)t(l)28 1554 y(enable)35 b(us)f(to)g(derive)i(statements)d(for)j -(the)e Fz(curl)p Fm(-op)l(er)l(ators)h(in)g(two)f(dimensions)i(fr)l(om) -f(statements)e(for)i(the)g(diver)l(genc)l(e)28 1653 y(and)30 -b(gr)l(adient)g(op)l(er)l(ators)h(in)f(two)g(dimensions.)28 -1808 y Fz(F)-7 b(or)27 b(the)h(case)e(of)i Fx(d)23 b -Fz(=)g(3)k(and)g(a)h(v)n(ector)e(\014eld)i Fx(v)p 1473 -1821 44 4 v 26 w Fs(2)23 b Fz([)p Fs(D)r Fz(\()p 1738 -1742 60 4 v(\012)q(\)])1854 1778 y Fp(3)1919 1808 y Fz(w)n(e)28 -b(write)1333 2071 y(curl)14 b Fx(v)p 1486 2084 44 4 v -26 w Fz(:=)23 b Fs(r)18 b(^)h Fx(v)p 1824 2084 V 26 w -Fz(:=)2001 1904 y Fl(0)2001 2054 y(@)2117 1971 y Fx(@)2161 -1983 y Fq(y)2201 1971 y Fx(v)2241 1983 y Fp(3)2297 1971 -y Fs(\000)f Fx(@)2424 1983 y Fq(z)2462 1971 y Fx(v)2502 -1983 y Fp(2)2116 2070 y Fx(@)2160 2082 y Fq(z)2198 2070 -y Fx(v)2238 2082 y Fp(1)2294 2070 y Fs(\000)g Fx(@)2421 -2082 y Fq(x)2463 2070 y Fx(v)2503 2082 y Fp(3)2115 2170 -y Fx(@)2159 2182 y Fq(x)2201 2170 y Fx(v)2241 2182 y -Fp(2)2297 2170 y Fs(\000)g Fx(@)2424 2182 y Fq(y)2464 -2170 y Fx(v)2504 2182 y Fp(1)2583 1904 y Fl(1)2583 2054 -y(A)28 2349 y Fn(Definition)28 b Fz(1)45 b Fm(F)-6 b(or)30 -b Fx(d)23 b Fz(=)g(2)p Fx(;)14 b Fz(3)28 b Fm(we)i(write)1388 -2327 y Fz(~)1373 2349 y Fx(d)24 b Fz(=)e(1)30 b Fm(if)g -Fx(d)23 b Fz(=)g(2)29 b Fm(and)2080 2327 y Fz(~)2066 -2349 y Fx(d)23 b Fz(=)f(3)30 b Fm(if)g Fx(d)24 b Fz(=)e(3)p -Fm(,)30 b(and)g(we)g(de\014ne)1140 2526 y Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\))23 b(:=)g Fs(f)p Fx(v)p 1691 2539 V 26 w Fs(2)g -Fz([)p Fx(L)1915 2492 y Fp(2)1952 2526 y Fz(\(\012\)])2099 -2492 y Fq(d)2161 2526 y Fz(:)h(curl)13 b Fx(v)p 2360 -2539 V 26 w Fs(2)24 b Fz([)p Fx(L)2585 2492 y Fp(2)2621 -2526 y Fz(\(\012\)])2779 2476 y Fp(~)2768 2492 y Fq(d)2808 -2526 y Fs(g)28 2689 y Fx(H)7 b Fz(\(curl)o(;)14 b(\012\))28 -b(endo)n(w)n(ed)f(with)h(the)g(inner)f(pro)r(duct)1109 -2853 y(\()p Fx(v)p 1141 2866 V 3 w(;)14 b(u)p 1221 2866 -48 4 v Fz(\))1301 2868 y Fq(H)t Fp(\(curl;\012\))1616 -2853 y Fz(:=)23 b(\()p Fx(v)p 1759 2866 44 4 v 3 w(;)14 -b(u)p 1839 2866 48 4 v Fz(\))1919 2868 y Fq(L)1965 2851 -y Fi(2)1997 2868 y Fp(\(\012\))2119 2853 y Fz(+)k(\(curl)13 -b Fx(v)p 2386 2866 44 4 v 4 w(;)h Fz(curl)f Fx(u)p 2619 -2866 48 4 v -1 w Fz(\))2698 2868 y Fq(L)2744 2851 y Fi(2)2777 -2868 y Fp(\(\012\))28 3016 y Fz(is)27 b(a)g(Hilb)r(ert)h(space.)28 -3342 y Fv(1.2)112 b Fo(T)-9 b(race)35 b(theorem,)f(in)m(tegration)h(b)m -(y)g(parts)28 3495 y Fz(The)e(space)g Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\))34 b(will)f(b)r(e)h(the)g(appropriate)d(Sob)r(olev)i(space)g -(for)g(a)g(w)n(eak)f(form)n(ulation)g(of)i(the)f(mo)r(del)h(problem.)28 -3594 y(In)g(this)g(section)g(w)n(e)f(pro)n(vide)g(a)h(notion)f(of)h -(trace)g(of)f(a)h Fx(H)7 b Fz(\(curl;)14 b(\012\)-function)34 -b(on)n(to)f(the)i(b)r(oundary)e Fx(@)5 b Fz(\012)34 b(and)f(w)n(e)h -(de\014ne)28 3694 y(in)n(tergation)26 b(b)n(y)h(parts)g(on)g(the)h -(space)f Fx(H)7 b Fz(\(curl;)14 b(\012\).)28 3870 y Fn(Theorem)28 -b Fz(1)f(\(Appro)n(ximation)g(Prop)r(ert)n(y\))44 b Fm(F)-6 -b(or)30 b Fx(d)23 b Fz(=)g(2)p Fx(;)14 b Fz(3)p Fm(,)29 -b Fz([)p Fs(D)r Fz(\()p 2110 3803 60 4 v(\012\)])2225 -3840 y Fq(d)2294 3870 y Fm(is)h(dense)g(in)g Fx(H)7 b -Fz(\(curl;)14 b(\012\))p Fm(.)28 4046 y Fz(See)27 b([4)o(])h(p.13,)e -(p.20)h(for)f(the)i(pro)r(of)f(in)g(the)h(2d-case)d(and)i(p.20)g(for)f -(a)h(reference)f(to)h(the)h(pro)r(of)f(in)g(3d)g(prop)r(osed)f(in)i -(Duv)-5 b(aut)28 4146 y(&)27 b(Lions,)g(1971.)28 4345 -y(Equipp)r(ed)g(with)h(this)g(appro)n(ximation)e(prop)r(ert)n(y)h(of)g -(smo)r(oth)g(functions)h(to)g(elemen)n(ts)f(of)h Fx(H)7 -b Fz(\(curl)o(;)14 b(\012\),)28 b(w)n(e)g(can)f(state)28 -4521 y Fn(Theorem)h Fz(2)f(\(Green's)g(F)-7 b(orm)n(ula\))45 -b Fm(F)-6 b(or)29 b(the)g(2d)h(c)l(ase,)g(let)f Fx(u)p -1932 4534 48 4 v 29 w Fm(b)l(e)g(in)g Fz([)p Fx(H)7 b -Fz(\(curl)o(;)14 b(\012\)])2632 4491 y Fp(2)2699 4521 -y Fm(and)29 b Fx(')h Fm(b)l(e)f(a)g(test)f(function)h(in)g -Fx(H)3774 4491 y Fp(1)3811 4521 y Fz(\(\012\))p Fm(.)28 -4621 y(We)g(have)1102 4629 y Fl(Z)1148 4818 y Fp(\012)1214 -4742 y Fz(curl)13 b Fx(u)p 1366 4755 V 27 w(')h(dx)24 -b Fz(=)1711 4629 y Fl(Z)1757 4818 y Fp(\012)1822 4742 -y Fx(u)p 1822 4755 V 18 w Fs(\001)19 b Fz(curl)p 1930 -4755 139 4 v 13 w Fx(')14 b(dx)19 b Fz(+)2342 4629 y -Fl(Z)2389 4818 y Fq(@)t Fp(\012)2479 4742 y Fz(\()p Fx(u)p -2511 4755 48 4 v 18 w Fs(\001)g Fx(t)p 2619 4755 30 4 -v Fz(\))14 b Fx(')g(ds)19 b(;)28 4932 y Fm(F)-6 b(or)30 -b(the)f(3d)i(c)l(ase,)g(let)e Fx(u)p 755 4945 48 4 v -30 w Fm(b)l(e)g(in)h Fz([)p Fx(H)7 b Fz(\(curl;)14 b(\012\)])1458 -4902 y Fp(3)1525 4932 y Fm(and)30 b Fx(v)p 1686 4945 -44 4 v 33 w Fm(b)l(e)g(a)g(test)f(function)h(in)g Fz([)p -Fx(H)2618 4902 y Fp(1)2655 4932 y Fz(\(\012\)])2802 4902 -y Fp(3)2840 4932 y Fm(.)38 b(We)30 b(then)g(have)1053 -5025 y Fl(Z)1100 5213 y Fp(\012)1165 5138 y Fx(v)p 1165 -5151 V 22 w Fs(\001)18 b Fz(curl)c Fx(u)p 1421 5151 48 -4 v 13 w(dx)24 b Fz(=)1683 5025 y Fl(Z)1729 5213 y Fp(\012)1795 -5138 y Fx(u)p 1795 5151 V 18 w Fs(\001)18 b Fz(curl)c -Fx(v)p 2055 5151 44 4 v 17 w(dx)19 b Fz(+)2304 5025 y -Fl(Z)2350 5213 y Fq(@)t Fp(\012)2441 5138 y Fz(\()p Fx(v)p -2473 5151 V 22 w Fs(^)f Fx(n)p 2608 5151 50 4 v Fz(\))h -Fs(\001)f Fx(u)p 2750 5151 48 4 v 14 w(ds)g(;)28 5370 -y Fm(The)30 b(b)l(oundary)h(inte)l(gr)l(als)f(ar)l(e)g(understo)l(o)l -(d)g(as)g(duality)g(p)l(airings)i(in)d Fz([)p Fx(H)2338 -5340 y Fh(\000)2400 5317 y Fi(1)p 2400 5326 29 3 v 2400 -5360 a(2)2442 5370 y Fz(\()p Fx(@)5 b Fz(\012\)])2649 -5324 y Fp(~)2638 5340 y Fq(d)2696 5370 y Fs(\002)18 b -Fx(H)2865 5317 y Fi(1)p 2865 5326 V 2865 5360 a(2)2907 -5370 y Fz(\()p Fx(@)5 b Fz(\012\))30 b Fm(.)1972 5719 -y Fk(2)p eop -%%Page: 3 3 -3 2 bop 28 207 a Fn(Pr)n(oof.)55 b Fz(F)-7 b(or)32 b(smo)r(oth)g -(functions,)i(it)f(is)f(easy)g(to)g(see)g(that)h(the)g(ab)r(o)n(v)n(e)e -(Green's)g(form)n(ula)h(holds.)51 b(In)33 b(the)f(2d)g(case)g(this)28 -307 y(follo)n(ws)26 b(just)i(from)g(Gauss')f(div)n(ergence)f(theorem)h -(and)g(remark)f(1.)28 406 y(F)-7 b(or)27 b(the)h(3d)f(case)g(w)n(e)g -(use)g(the)h(iden)n(tit)n(y)1397 563 y(div)15 b(\()p -Fx(u)p 1557 576 48 4 v 19 w Fs(^)j Fx(v)p 1697 576 44 -4 v 4 w Fz(\))23 b(=)g Fx(v)p 1884 576 V 21 w Fs(\001)c -Fz(curl)13 b Fx(u)p 2139 576 48 4 v 18 w Fs(\000)18 b -Fx(u)p 2288 576 V 18 w Fs(\001)h Fz(curl)13 b Fx(v)p -2548 576 44 4 v 28 719 a Fz(together)26 b(with)i(Gauss')f(Div)n -(ergence)g(Theorem)g(and)g(the)h(prop)r(erties)f(of)g(the)h(mixed)g -(pro)r(duct)g(\()p Fx(a)p 3111 732 V 18 w Fs(^)19 b Fx(b)p -3247 732 36 4 v Fz(\))f Fs(\001)h Fx(c)p 3375 732 V 27 -w Fz(to)28 b(obtain)455 805 y Fl(Z)501 994 y Fp(\012)567 -918 y Fx(v)p 567 931 44 4 v 21 w Fs(\001)19 b Fz(curl)13 -b Fx(u)p 822 931 48 4 v 18 w Fs(\000)18 b Fx(u)p 971 -931 V 18 w Fs(\001)h Fz(curl)13 b Fx(v)p 1231 931 44 -4 v 17 w(dx)24 b Fz(=)1490 805 y Fl(Z)1536 994 y Fp(\012)1601 -918 y Fz(div)15 b(\()p Fx(u)p 1761 931 48 4 v 19 w Fs(^)j -Fx(v)p 1901 931 44 4 v 4 w Fz(\))c Fx(dx)23 b Fz(=)2192 -805 y Fl(Z)2238 994 y Fq(@)t Fp(\012)2329 918 y Fz(\()p -Fx(u)p 2361 931 48 4 v 18 w Fs(^)c Fx(v)p 2501 931 44 -4 v 3 w Fz(\))g Fs(\001)f Fx(n)p 2636 931 50 4 v 14 w(ds)23 -b Fz(=)2893 805 y Fl(Z)2939 994 y Fq(@)t Fp(\012)3029 -918 y Fz(\()p Fx(v)p 3061 931 44 4 v 22 w Fs(^)c Fx(n)p -3197 931 50 4 v Fz(\))g Fs(\001)f Fx(u)p 3339 931 48 -4 v 14 w(ds)27 b(:)28 1127 y Fz(The)k(exten)n(tion)g(to)g(a)g(pairing)g -(of)g Fx(H)7 b Fz(\(curl\))31 b(and)h Fx(H)1684 1097 -y Fp(1)1721 1127 y Fz(\(\012\))g(functions)f(follo)n(ws)g(with)h -(Theorem)e(1)h(b)n(y)g(a)g(densit)n(y)g(argumen)n(t)28 -1226 y(and)c(is)g(a)h(result)f(of)h(the)g(pro)r(of)f(of)g(the)h(T)-7 -b(race)27 b(Theorem.)36 b(See)27 b([4])h(p.21)e(for)i(details.)3897 -1375 y Fg(\003)28 1543 y Fn(Theorem)g Fz(3)f(\(T)-7 b(race)27 -b(Theorem\))45 b Fm(F)-6 b(or)36 b Fx(d)g Fz(=)f(3)p -Fm(,)k(let)d Fx(n)p 1729 1556 50 4 v 36 w Fm(denote)i(the)e(outwar)l(d) -h(unit)f(normal)h(to)g(the)g(b)l(oundary)g Fx(@)5 b Fz(\012)p -Fm(.)59 b(F)-6 b(or)28 1642 y Fx(d)23 b Fz(=)f(2)p Fm(,)30 -b(let)g Fx(t)p 395 1655 30 4 v 30 w Fm(b)l(e)f(as)h(in)g(c)l(onvention) -g(1)28 1742 y(F)-6 b(or)30 b Fx(d)23 b Fz(=)f(2)30 b -Fm(the)g(mapping)1685 1841 y Fx(\015)d Fz(:)108 b Fx(v)p -1886 1854 44 4 v 27 w Fs(7!)23 b Fx(\015)5 b Fz(\()p -Fx(v)p 2139 1854 V 3 w Fz(\))19 b Fs(\001)f Fx(t)p 2274 -1854 30 4 v 28 1975 a Fm(and)30 b(for)g Fx(d)24 b Fz(=)e(3)30 -b Fm(the)f(mapping)1659 2075 y Fx(\015)e Fz(:)108 b Fx(v)p -1860 2088 44 4 v 27 w Fs(7!)23 b Fx(\015)5 b Fz(\()p -Fx(v)p 2113 2088 V 3 w Fz(\))19 b Fs(^)f Fx(n)p 2280 -2088 50 4 v 28 2223 a Fm(is)30 b(c)l(ontiuous)f(and)h(line)l(ar)h(fr)l -(om)f Fx(H)7 b Fz(\(curl;)14 b(\012\))29 b Fm(to)h Fz([)p -Fx(H)1684 2193 y Fh(\000)1746 2170 y Fi(1)p 1746 2179 -29 3 v 1746 2213 a(2)1788 2223 y Fz(\()p Fx(@)5 b Fz(\012\)])1995 -2177 y Fp(~)1984 2193 y Fq(d)2023 2223 y Fm(.)28 2391 -y Fz(Note,)31 b(that)g(the)g(trace)e(of)i(a)f Fx(H)7 -b Fz(\(curl;)14 b(\012\)-function)31 b(is)f(only)g(de\014ned)h(in)g -(tangen)n(tial)f(direction.)45 b(Its)31 b(trace)e(is)i(in)f(the)h(dual) -28 2504 y(space)c(of)h(traces)f(of)h([)p Fx(H)780 2474 -y Fp(1)817 2504 y Fz(\(\012\)])975 2459 y Fp(~)964 2474 -y Fq(d)1032 2504 y Fz(functions.)39 b(Recall)28 b(that)g(traces)f(of)h -(suc)n(h)g(functions)h(are)e(de\014ned)h(in)h(ev)n(ery)e(direction)g -(and)28 2618 y(are)f(functions)i(in)g([)p Fx(H)730 2565 -y Fi(1)p 730 2574 V 730 2608 a(2)772 2618 y Fz(\()p Fx(@)5 -b Fz(\012\)])979 2572 y Fp(~)968 2588 y Fq(d)1007 2618 -y Fz(.)28 2817 y Fn(Pr)n(oof.)39 b Fz(The)27 b(pro)r(of)f(of)g(the)h -(trace)e(theorem)h(follo)n(ws)f(from)h(Green's)g(form)n(ula)f(stated)i -(in)f(theorem)g(2)g(applied)g(to)h(smo)r(oth)28 2917 -y(functions)g(and)h(then)g(b)n(y)f(densit)n(y)h(argumen)n(ts.)35 -b(See)28 b([4)o(])g(p.21)f(for)g(details.)3897 3065 y -Fg(\003)28 3213 y Fz(Due)33 b(to)f(the)h(T)-7 b(race)32 -b(Theorem)g(it)h(mak)n(es)e(sense)h(to)h(de\014ne)g(a)f(space)g(of)g -Fx(H)7 b Fz(\(curl\)-functions)33 b(with)g(v)-5 b(anishing)32 -b(tangen)n(tial)28 3313 y(comp)r(onen)n(ts)27 b(on)g(the)h(b)r(oundary) --7 b(.)28 3461 y Fn(Definition)28 b Fz(2)1042 3561 y -Fx(H)1111 3573 y Fp(0)1148 3561 y Fz(\(curl;)14 b(\012\))23 -b(:=)g Fs(f)o Fx(v)p 1623 3574 44 4 v 27 w Fs(2)g Fx(H)7 -b Fz(\(curl;)14 b(\012\))23 b(:)108 b Fx(v)p 2298 3574 -V 22 w Fs(^)18 b Fx(n)p 2433 3574 50 4 v 23 w Fz(=)23 -b(0)36 b(on)h Fx(@)5 b Fz(\012)p Fs(g)28 3729 y Fn(Remark)28 -b Fz(2)45 b Fm(F)-6 b(or)30 b Fx(d)23 b Fz(=)f(2)p Fx(;)14 -b Fz(3)p Fm(,)30 b Fz([)p Fs(D)r Fz(\(\012\)])1191 3698 -y Fq(d)1260 3729 y Fm(is)g(dense)g(in)g Fx(H)1749 3741 -y Fp(0)1786 3729 y Fz(\(curl;)14 b(\012\))p Fm(.)28 3896 -y Fz(A)28 b(consequence)e(of)i(Green's)f(form)n(ula)f(is)i(the)g(follo) -n(wing)e(imp)r(ortan)n(t)i(regularit)n(y)d(prop)r(ert)n(y)i(of)g -Fx(H)7 b Fz(\(curl;)14 b(\012\)-functions:)28 4064 y -Fn(Pr)n(oposition)27 b Fz(1)45 b Fm(L)l(et)24 b Fx(K)854 -4076 y Fh(\000)934 4064 y Fm(and)h Fx(K)1161 4076 y Fp(+)1240 -4064 y Fm(b)l(e)g(two)g(p)l(olygonal)h(\(r)l(esp.)38 -b(p)l(olyhe)l(dr)l(al\))26 b(Lipschitz)h(domains)e(in)g -Fr(R)3322 4034 y Fq(d)3367 4064 y Fm(,)h(with)f(a)g(c)l(ommon)28 -4164 y(e)l(dge)f(\(r)l(esp.)37 b(c)l(ommon)25 b(e)l(dge)f(or)h(fac)l -(e\))g Fx(e)d Fz(=)h Fx(@)5 b(K)1516 4176 y Fh(\000)1577 -4164 y Fs(\\)h Fx(@)f(K)1758 4176 y Fp(+)1836 4164 y -Fs(6)p Fz(=)23 b Fs(;)g Fm(and)i(denote)f(by)h Fz(\012)e(=)f -Fx(@)5 b(K)2797 4176 y Fh(\000)2859 4164 y Fs([)h Fx(@)f(K)3040 -4176 y Fp(+)3118 4164 y Fm(their)25 b(union.)37 b(A)23 -b(function)28 4264 y Fx(v)32 b Fm(is)d(in)g Fx(H)7 b -Fz(\(curl)o(;)14 b(\012\))29 b Fm(if)h(and)f(only)g(if)h(the)f(r)l -(estricion)g Fx(v)1741 4276 y Fh(\000)1826 4264 y Fm(of)h -Fx(v)i Fm(to)d Fx(K)2165 4276 y Fh(\000)2249 4264 y Fm(is)g(in)g -Fx(H)7 b Fz(\(curl;)14 b Fx(K)2793 4276 y Fh(\000)2848 -4264 y Fz(\))p Fm(,)30 b(the)f(r)l(estricion)g Fx(v)3484 -4276 y Fp(+)3568 4264 y Fm(of)h Fx(v)i Fm(to)d Fx(K)3907 -4276 y Fp(+)28 4363 y Fm(is)h(in)g Fx(H)7 b Fz(\(curl)o(;)14 -b Fx(K)573 4375 y Fp(+)628 4363 y Fz(\))30 b(and)f Fm(the)36 -b Fz(tangen)n(tial)29 b Fm(jump)h(over)h Fx(e)e Fm(vanishes:)40 -b Fx(v)2256 4375 y Fh(\000)2331 4363 y Fs(^)18 b Fx(n)2454 -4375 y Fh(\000)2529 4363 y Fz(+)g Fx(v)2652 4375 y Fp(+)2726 -4363 y Fs(^)g Fx(n)2849 4375 y Fp(+)2927 4363 y Fz(=)23 -b(0)29 b Fm(on)h Fx(e)p Fm(.)28 4531 y Fn(Pr)n(oof.)39 -b Fz(The)27 b(prop)r(osition)e(follo)n(ws)g(from)h(c)n(ho)r(osing)f(an) -h(appropriate)e(test)j(function)g(and)f(in)n(tegrating)f(b)n(y)h(parts) -f(\(global)28 4631 y(and)e(lo)r(cal\).)36 b(In)24 b(order)e(to)i -Fm(lo)l(c)l(alise)32 b Fz(the)24 b(result)g(of)g(the)g(T)-7 -b(race)23 b(Theorem,)h(w)n(e)f(m)n(ust)h(c)n(ho)r(ose)f(a)g -(testfunction)i(from)f(the)g(space)28 4758 y Fx(H)113 -4687 y Fi(1)p 113 4696 29 3 v 113 4729 a(2)97 4780 y -Fp(00)167 4758 y Fz(\()p Fx(e)p Fz(\).)48 b(These)31 -b(functions)h(v)-5 b(anish)31 b(at)g(the)h(endp)r(oin)n(ts)f(of)g -Fx(e)g Fz(and)h(can)e(therefore)h(b)r(e)g(extended)h(b)n(y)f(zero)f(to) -h(a)g Fx(H)3718 4705 y Fi(1)p 3718 4714 V 3718 4747 a(2)3760 -4758 y Fz(\()p Fx(@)5 b Fz(\012\)-)28 4857 y(function.)44 -b(F)-7 b(rom)30 b(the)g(comparison)e(of)i(lo)r(cal)g(\(on)g -Fx(K)1716 4869 y Fh(\000)1801 4857 y Fz(and)g Fx(K)2036 -4869 y Fp(+)2121 4857 y Fz(separately\))f(and)h(global)e(\(on)i(\012\)) -h(in)n(tegration)d(b)n(y)i(parts)28 4984 y(it)36 b(follo)n(w)n(as)e -(then)i(that)g(the)g(tangen)n(tial)f(jump)h(v)-5 b(anishes)35 -b(in)h(the)g(dual)g(space)f(of)h Fx(H)2796 4913 y Fi(1)p -2796 4922 V 2796 4955 a(2)2780 5006 y Fp(00)2850 4984 -y Fz(\()p Fx(e)p Fz(\).)61 b(By)36 b(densitiy)g(prop)r(erties)e(of)28 -5112 y Fx(H)113 5041 y Fi(1)p 113 5050 V 113 5083 a(2)97 -5134 y Fp(00)167 5112 y Fz(\()p Fx(e)p Fz(\))28 b(it)h(follo)n(ws)d -(that)j(the)f(tangen)n(tial)f(traces)g(v)-5 b(anish)28 -b(in)g(the)g("correct)e(space")h(as)g(w)n(ell.)38 b(The)28 -b("correct)e(space")h(w)n(ould)28 5222 y(b)r(e)32 b Fx(H)221 -5192 y Fh(\000)282 5169 y Fi(1)p 282 5178 V 282 5212 -a(2)325 5222 y Fz(\()p Fx(e)p Fz(\))g(if)g(w)n(e)f(ha)n(v)n(e)g(no)h -(further)f(regularit)n(y)f(of)i Fx(v)p 1747 5235 44 4 -v 1790 5242 a Fh(\000)1878 5222 y Fz(and)g Fx(v)p 2044 -5235 V 2087 5242 a Fp(+)2142 5222 y Fz(,)h(and)e(it)i(w)n(ould)e(b)r(e) -h Fx(L)2871 5192 y Fp(2)2908 5222 y Fz(\()p Fx(e)p Fz(\))g(if)g -Fx(v)p 3123 5235 V 35 w Fz(is)g(elemen)n(t)n(wise)f(in)h -Fx(H)3924 5192 y Fp(1)28 5321 y Fz(\(e.)27 b(g.)65 b(for)27 -b(piecewise)g(p)r(olynomial)g Fx(v)p 1193 5334 V 3 w -Fz(\).)3897 5469 y Fg(\003)1972 5719 y Fk(3)p eop -%%Page: 4 4 -4 3 bop 28 214 a Fv(1.3)112 b Fo(V)-9 b(ariational)35 -b(form)m(ulation)f(of)h(the)g(mo)s(del)f(problem)28 367 -y Fz(In)28 b(the)h(previous)e(sections)h(w)n(e)g(in)n(tro)r(duced)g -(the)h(space)f Fx(H)7 b Fz(\(curl;)14 b(\012\),)29 b(an)f(in)n -(tegration-b)n(y-parts)d(form)n(ula)j(and)g(the)h(notion)28 -467 y(of)f(trace)f(for)h(an)g Fx(H)7 b Fz(\(curl;)14 -b(\012\)-function.)40 b(In)28 b(this)h(framew)n(ork,)e(the)h(v)-5 -b(ariational)27 b(form)n(ulation)h(of)g(the)h(mo)r(del)f(problem)g -(\(1\))28 566 y(reads:)255 716 y(Find)g Fx(u)p 452 729 -48 4 v 23 w Fs(2)23 b Fx(H)670 728 y Fp(0)707 716 y Fz(\(curl;)14 -b(\012\))28 b(suc)n(h)f(that)h(for)f(all)h(test)f(functions)h -Fx(v)p 2164 729 44 4 v 27 w Fs(2)23 b Fx(H)2378 728 y -Fp(0)2415 716 y Fz(\(curl;)14 b(\012\))28 b(holds)1220 -828 y Fl(Z)1266 1016 y Fp(\012)1331 941 y Fz(curl)14 -b Fx(u)p 1484 954 48 4 v 27 w Fz(curl)f Fx(v)p 1711 954 -44 4 v 17 w(dx)20 b Fz(+)1961 828 y Fl(Z)2007 1016 y -Fp(\012)2072 941 y Fx(c)p Fz(\()p Fx(x)p Fz(\))14 b Fx(u)p -2233 954 48 4 v 33 w Fs(\001)k Fx(v)p 2355 954 44 4 v -17 w(dx)24 b Fz(=)2614 828 y Fl(Z)2660 1016 y Fp(\012)2725 -941 y Fx(f)p 2725 970 50 4 v 41 w Fs(\001)19 b Fx(v)p -2849 954 44 4 v 17 w(dx)859 b Fz(\(3\))28 1190 y(With)28 -b(our)f(assumptions)g(on)g(the)h(data,)f(the)h(forms)1168 -1411 y Fx(a)p Fz(\()p Fx(u)p 1244 1424 48 4 v(;)14 b(v)p -1329 1424 44 4 v 3 w Fz(\))23 b(:=)1538 1298 y Fl(Z)1584 -1486 y Fp(\012)1649 1411 y Fz(curl)14 b Fx(u)p 1802 1424 -48 4 v 27 w Fz(curl)f Fx(v)p 2029 1424 44 4 v 17 w(dx)20 -b Fz(+)2279 1298 y Fl(Z)2325 1486 y Fp(\012)2390 1411 -y Fx(c)p Fz(\()p Fx(x)p Fz(\))14 b Fx(u)p 2551 1424 48 -4 v 33 w Fs(\001)k Fx(v)p 2673 1424 44 4 v 17 w(dx)1270 -1633 y(l)r Fz(\()p Fx(v)p 1329 1646 V 3 w Fz(\))23 b(:=)1538 -1520 y Fl(Z)1584 1708 y Fp(\012)1649 1633 y Fx(f)p 1649 -1662 50 4 v 41 w Fs(\001)c Fx(v)p 1773 1646 44 4 v 17 -w(dx)28 1862 y Fz(are)34 b(con)n(tin)n(uous)g(and)h(the)h(bilinear)f -(form)g Fx(a)p Fz(\()p Fs(\001)p Fx(;)14 b Fs(\001)p -Fz(\))35 b(is)h(co)r(erciv)n(e)d(on)i Fx(H)2262 1874 -y Fp(0)2300 1862 y Fz(\(curl;)14 b(\012\))23 b Fs(\002)g -Fx(H)2780 1874 y Fp(0)2818 1862 y Fz(\(curl;)14 b(\012\).)60 -b(By)35 b(the)g(Lax-Milgram)28 1961 y(lemma)27 b(it)h(follo)n(ws,)f -(that)h(there)f(exists)g(a)g(unique)h(solution)f Fx(u)p -1948 1974 48 4 v 23 w Fs(2)c Fx(H)2166 1973 y Fp(0)2204 -1961 y Fz(\(curl;)14 b(\012\))27 b(of)h(\(3\).)28 2203 -y Fw(2)134 b Fv(N)n(\023)-54 b(ed)n(\023)g(elec's)37 -b(elemen)m(ts)g(of)g(\014rst)g(t)m(yp)s(e)h(for)f Fu(H)8 -b Ft(\(curl)o(;)17 b(\012\))28 2385 y Fz(In)30 b(this)h(section)g(w)n -(e)f(will)h(presen)n(t)f(presen)n(t)g Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\)-conforming)30 b(v)n(ector-v)-5 b(alued)28 b(\014nite)k(elemen) -n(ts,)f(the)g(N)n(\023)-39 b(ed)n(\023)g(elec)29 b(ele-)28 -2484 y(men)n(ts)e(of)h(\014rst)f(t)n(yp)r(e)h(\(cf.)g([8]\),)g(whic)n -(h)f(can)h(b)r(e)g(used)f(to)h(discretize)f(the)h(v)-5 -b(ariational)26 b(problem)h(\(3\).)28 2683 y(In)g(order)g(to)g -(de\014ne)h(a)f(\014nite)h(elemen)n(t)g(w)n(e)f(m)n(ust)h(sp)r(ecify)28 -2833 y Fy(the)j(geometry)44 b Fz(W)-7 b(e)26 b(c)n(ho)r(ose)e(a)g -(reference)g(elemen)n(t)1769 2812 y(^)1747 2833 y Fx(K)30 -b Fz(and)25 b(a)g(c)n(hange)f(of)h(v)-5 b(ariables)24 -b Fx(F)2833 2845 y Fq(K)2897 2833 y Fz(\()5 b(^)-47 b -Fx(x)q Fz(\),)26 b(the)g(elemen)n(t)f(map.)36 b(W)-7 -b(e)25 b(set)255 2933 y Fx(K)j Fz(=)23 b Fx(F)495 2945 -y Fq(K)559 2933 y Fz(\()614 2912 y(^)591 2933 y Fx(K)6 -b Fz(\).)28 3082 y Fy(a)32 b(function)g(space)46 b Fz(W)-7 -b(e)29 b(need)g(a)g Fm(\014nite)i(dimensional)39 b Fz(function)30 -b(space)2413 3061 y(^)2395 3082 y Fx(R)q Fz(,)g(t)n(ypically)e(a)h -(space)f(of)h(p)r(olynomials,)g(on)g(the)255 3182 y(reference)e(cell,)g -(plus)h(a)f(transformation)f(of)1698 3161 y(^)1680 3182 -y Fx(R)i Fz(to)f(a)h(function)g(space)f Fx(R)2552 3194 -y Fq(K)2643 3182 y Fz(on)h(a)f(general)f(cell)i Fx(K)6 -b Fz(.)28 3331 y Fy(dofs)45 b Fz(W)-7 b(e)31 b(ha)n(v)n(e)e(to)i -(de\014ne)g(a)f(set)h(of)f(dofs)h Fs(A)d Fz(=)g Fs(f)p -Fx(\013)1690 3343 y Fq(i)1717 3331 y Fz(\()p Fs(\001)p -Fz(\))p Fs(g)1846 3301 y Fq(N)1846 3353 y(i)p Fp(=1)1958 -3331 y Fz(.)46 b(These)31 b(are)e(linear)h(functionals)h(on)3208 -3310 y(^)3190 3331 y Fx(R)g Fz(and)g Fx(N)37 b(<)28 b -Fs(1)i Fz(is)h(the)255 3440 y(dimension)c(of)760 3419 -y(^)742 3440 y Fx(R)q Fz(.)37 b Fs(A)28 b Fz(should)f(b)r(e)h -Fm(unisolvent)p Fz(,)g(that)f(is,)h(the)g(dofs)f Fx(\013)2407 -3452 y Fq(i)2435 3440 y Fz(\()p Fs(\001)p Fz(\))h(are)f(linearly)g -(indep)r(enden)n(t.)28 3589 y(First,)e(w)n(e)f(observ)n(e)f(that)i(for) -f(a)g(conforming)g(discretization)g(of)g(\(3\))h(w)n(e)f(cannot)g(tak)n -(e)g(v)n(ector-v)-5 b(alued)23 b(\014nite)j(elemen)n(ts)e(that)28 -3689 y(are)j(build)h(b)n(y)g(taking)f(the)h(standard)f(no)r(dal)h -(\014nite)g(elemen)n(t)g(spaces)f(of)h(globally)f(con)n(tin)n(uous)g -(functions)h(for)f(eac)n(h)h(v)n(ector)28 3788 y(comp)r(onen)n(t.)35 -b(F)-7 b(or)23 b Fx(H)7 b Fz(\(curl)o(;)14 b(\012\)-functions,)25 -b(the)f(only)f(con)n(tin)n(uit)n(y)g(condition)g(is)h(the)g(con)n(tin)n -(uit)n(y)f(of)g(the)h(tangen)n(tial)f(comp)r(o-)28 3888 -y(nen)n(t)29 b(o)n(v)n(er)d(cell)j(b)r(oundaries.)40 -b(This)28 b(fact)h(will)g(motiv)-5 b(ate)29 b(the)g(c)n(hoice)f(of)h -(appropriate)e(degrees)g(of)i(freedom)f(\(abbreviated)28 -3988 y(b)n(y)f(dofs)g(in)h(the)g(follo)n(wing\).)28 4087 -y(W)-7 b(e)27 b(will)h(giv)n(e)e(an)h(outline)g(of)g(the)h -(construction)e(of)h(the)h(\014nite)f(elemen)n(t)h(spaces)e(describ)r -(ed)h(b)n(y)g(N)n(\023)-39 b(ed)n(\023)g(elec)25 b(in)i([8].)37 -b(In)27 b(litera-)28 4187 y(ture,)g(they)h(are)f(also)f(referred)g(to)i -(as)f Fm(N)n(\023)-40 b(ed)n(\023)g(ele)l(c's)31 b(elements)e(of)i -(\014rst)e(typ)l(e)p Fz(.)28 4515 y Fv(2.1)112 b Fo(Construction)35 -b(of)g(N)n(\023)-50 b(ed)n(\023)g(elec)35 b(elemen)m(ts)f(on)h -(tetrahedral)f(grids)28 4669 y Fz(In)27 b(this)h(section,)g(w)n(e)f -(denote)g(b)n(y)1121 4648 y(^)1099 4669 y Fx(K)33 b Fz(the)28 -b(standard)e(triangular)g(or)h(tetrahedral)f(reference)h(elemen)n(t.)28 -4898 y Fo(2.1.1)105 b(P)m(olynomial)35 b(spaces)h(on)f(the)g(reference) -g(elemen)m(t)28 5051 y Fz(In)22 b([8],)i(N)n(\023)-39 -b(ed)n(\023)g(elec)21 b(in)n(tro)r(duces)h(the)h(function)g(spaces)1686 -5030 y(^)1668 5051 y Fx(R)h Fz(=)e Fs(R)1912 5021 y Fq(k)1953 -5051 y Fz(,)i(on)f(whic)n(h)f(his)h(\014nite)g(elemen)n(t)g(will)g(b)r -(e)g(based.)35 b(These)22 b(spaces)28 5151 y(are)k(sub)5 -b(ject)28 b(to)f(this)h(section.)37 b(F)-7 b(or)27 b(more)g(details,)g -(consult)g([8].)28 5250 y(W)-7 b(e)26 b(denote)f(b)n(y)g -Fr(P)599 5262 y Fq(k)639 5250 y Fz(\()680 5229 y(^)671 -5250 y(\006\))h(the)g(space)f(of)g(p)r(olynomials)g(of)g(degree)g -Fx(k)j Fz(on)2245 5229 y(^)2236 5250 y(\006,)e(where)2592 -5229 y(^)2583 5250 y(\006)f(is)h(an)f(edge,)h(a)f(face)g(of)h(or)e(the) -i(reference)28 5350 y(elemen)n(t)c(itself..)36 b(The)23 -b(space)971 5328 y(~)967 5350 y Fr(P)1019 5362 y Fq(k)1081 -5350 y Fz(of)f(homogeneous)f(p)r(olynomials)h(of)h(degree)e -Fx(k)26 b Fz(is)c(the)h(span)f(of)h(monomials)e(of)i(total)f(degree)28 -5450 y Fx(k)30 b Fz(in)e Fx(d)g Fz(v)-5 b(ariables)26 -b(on)751 5429 y(^)728 5450 y Fx(K)6 b Fz(.)1972 5719 -y Fk(4)p eop -%%Page: 5 5 -5 4 bop 28 207 a Fn(Definition)28 b Fz(3)45 b Fm(We)30 -b(de\014ne)f(the)h(auxiliary)h(sp)l(ac)l(e)1249 461 y -Fs(S)1305 427 y Fq(k)1370 461 y Fz(:=)22 b Fs(f)14 b -Fx(p)p 1536 491 42 4 v 23 w Fs(2)23 b Fz(\()1716 440 -y(~)1711 461 y Fr(P)1763 473 y Fq(k)1803 461 y Fz(\))1835 -427 y Fq(d)1897 461 y Fz(:)g Fx(p)p 1943 491 V 18 w Fs(\001)f -Fz(^)-45 b Fx(x)p 2045 474 48 4 v 23 w Fz(=)2246 357 -y Fq(d)2203 382 y Fl(X)2209 559 y Fq(i)p Fp(=1)2337 461 -y Fx(p)2379 473 y Fq(i)2425 461 y Fz(^)e Fx(x)2467 473 -y Fq(i)2518 461 y Fs(\021)23 b Fz(0)14 b Fs(g)g Fx(;)1114 -b Fz(\(4\))28 731 y Fm(with)35 b Fz(^)-47 b Fx(x)23 b -Fs(2)379 710 y Fz(^)357 731 y Fx(K)5 b Fm(.)28 831 y(The)30 -b(dimension)h(of)g(this)f(sp)l(ac)l(e)g(is)g Fx(k)j Fm(in)d(the)g(c)l -(ase)g Fx(d)23 b Fz(=)g(2)29 b Fm(and)h Fx(k)s Fz(\()p -Fx(k)22 b Fz(+)c(2\))29 b Fm(for)i Fx(d)23 b Fz(=)g(3)p -Fm(.)28 1023 y Fz(N)n(\023)-39 b(ed)n(\023)g(elec's)25 -b(\014rst)i(family)h(of)g Fx(H)7 b Fz(\(curl)o(;)14 b -(\012\)-conforming)27 b(\014nite)h(elemen)n(ts)f(is)h(based)f(on)g(the) -h(p)r(olynomial)f(spaces)28 1192 y Fn(Definition)h Fz(4)1538 -1315 y Fs(R)1608 1281 y Fq(k)1672 1315 y Fz(=)1760 1223 -y Fl(\020)1809 1315 y Fr(P)1861 1327 y Fq(k)q Fh(\000)p -Fp(1)1986 1315 y Fz(\()2040 1294 y(^)2018 1315 y Fx(K)6 -b Fz(\))2127 1223 y Fl(\021)2177 1240 y Fq(d)2234 1315 -y Fs(\010)18 b(S)2373 1281 y Fq(k)2428 1315 y Fx(:)1404 -b Fz(\(5\))28 1481 y Fm(These)30 b(sp)l(ac)l(es)h(have)g(dimension)1201 -1658 y Fz(dim\()p Fs(R)1441 1623 y Fq(k)1483 1658 y Fz(\))23 -b(=)g Fx(k)s Fz(\()p Fx(k)e Fz(+)d(2\))170 b Fm(for)85 -b Fx(d)24 b Fz(=)e(2)14 b Fx(;)1201 1839 y Fz(dim\()p -Fs(R)1441 1805 y Fq(k)1483 1839 y Fz(\))23 b(=)1636 1783 -y(\()p Fx(k)e Fz(+)d(3\)\()p Fx(k)k Fz(+)c(2\))p Fx(k)p -1636 1820 553 4 v 1891 1896 a Fz(2)2368 1839 y Fm(for)86 -b Fx(d)23 b Fz(=)g(3)14 b Fx(:)28 2052 y Fz(In)27 b(the)h(t)n(w)n -(o-dimensional)e(case,)h(an)g(equiv)-5 b(alen)n(t)28 -b(c)n(haracterization)d(of)i(the)h(space)f Fs(R)2733 -2022 y Fq(k)2802 2052 y Fz(is)1301 2280 y Fs(R)1371 2246 -y Fq(k)1435 2280 y Fz(=)1523 2188 y Fl(\020)1572 2280 -y Fr(P)1624 2292 y Fq(k)q Fh(\000)p Fp(1)1749 2280 y -Fz(\()1803 2259 y(^)1781 2280 y Fx(K)6 b Fz(\))1890 2188 -y Fl(\021)1940 2205 y Fp(2)1995 2280 y Fs(\010)2083 2259 -y Fz(~)2078 2280 y Fr(P)2130 2292 y Fq(k)q Fh(\000)p -Fp(1)2283 2163 y Fl(\022)2423 2230 y Fz(^)-48 b Fx(x)2464 -2242 y Fp(2)2385 2329 y Fs(\000)5 b Fz(^)-47 b Fx(x)2497 -2341 y Fp(1)2576 2163 y Fl(\023)2665 2280 y Fx(:)1167 -b Fz(\(6\))28 2471 y(This)27 b(can)g(b)r(e)h(seen)g(b)n(y)f(noting)g -(that)h(for)f Fx(d)d Fz(=)e(2)1616 2672 y(~)1611 2693 -y Fr(P)1663 2705 y Fq(k)q Fh(\000)p Fp(1)1815 2576 y -Fl(\022)1955 2643 y Fz(^)-47 b Fx(x)1997 2655 y Fp(2)1918 -2742 y Fs(\000)5 b Fz(^)-47 b Fx(x)2030 2754 y Fp(1)2109 -2576 y Fl(\023)2193 2693 y Fs(\022)22 b(S)2336 2659 y -Fq(k)28 2934 y Fz(ob)n(viously)27 b(holds.)41 b(Moreo)n(v)n(er,)27 -b(the)i(dimension)g(of)g(the)h(space)2047 2913 y(~)2042 -2934 y Fr(P)2094 2946 y Fq(k)q Fh(\000)p Fp(1)2248 2934 -y Fz(of)f(homogeneous)e(p)r(olynomials)h(of)h(degree)f -Fx(k)22 b Fs(\000)d Fz(1)29 b(in)28 3034 y(t)n(w)n(o)f(v)-5 -b(ariables)27 b(is)i Fx(k)i Fz(and)e(this)g(is)g(also)e(the)j -(dimension)e Fs(S)1862 3004 y Fq(k)1904 3034 y Fz(.)40 -b(This)29 b(pro)n(v)n(es)e(the)i(stated)g(equiv)-5 b(alen)n(t)28 -b(represen)n(tation)f(of)i(the)28 3134 y(space)d Fs(S)305 -3104 y Fq(k)347 3134 y Fz(.)28 3333 y(W)-7 b(e)28 b(illustrate)g(these) -g(de\014nitions)h(with)g(some)e(examples.)39 b(W)-7 b(e)28 -b(start)g(with)h(the)g(case)e Fx(d)d Fz(=)g(2)k(and)g(consider)f(the)i -(spaces)e(of)28 3433 y(p)r(olynomials)f(of)i(degree)e -Fx(k)g Fz(=)d(1)k(and)g Fx(k)f Fz(=)d(2:)28 3625 y Fn(Example)k -Fz(1)1334 3753 y Fs(R)1404 3719 y Fp(1)1464 3753 y Fz(=)1552 -3636 y Fl(\034\022)1717 3703 y Fz(1)1717 3802 y(0)1800 -3636 y Fl(\023)1889 3765 y Fq(;)1926 3636 y Fl(\022)2029 -3703 y Fz(0)2029 3802 y(1)2112 3636 y Fl(\023)2201 3765 -y Fq(;)2238 3636 y Fl(\022)2379 3703 y Fz(^)-48 b Fx(x)2420 -3715 y Fp(2)2341 3802 y Fs(\000)5 b Fz(^)-47 b Fx(x)2453 -3814 y Fp(1)2532 3636 y Fl(\023\035)3855 3753 y Fz(\(7\))1136 -4028 y Fs(R)1206 3994 y Fp(2)1267 4028 y Fz(=)1354 3936 -y Fl(\020)1404 4028 y Fr(P)1456 4040 y Fp(1)1492 4028 -y Fz(\()1546 4007 y(^)1524 4028 y Fx(K)6 b Fz(\))1633 -3936 y Fl(\021)1683 3953 y Fp(2)1738 4028 y Fs(\010)1821 -3911 y Fl(\034)q(\022)1991 3977 y Fz(^)-47 b Fx(x)2033 -3989 y Fp(1)2090 3977 y Fz(^)g Fx(x)2132 3989 y Fp(2)2003 -4077 y Fs(\000)5 b Fz(^)-47 b Fx(x)2115 4047 y Fp(2)2115 -4098 y(1)2211 3911 y Fl(\023)2300 4040 y Fq(;)2337 3911 -y Fl(\022)2527 3977 y Fz(^)g Fx(x)2569 3947 y Fp(2)2569 -3998 y(2)2440 4077 y Fs(\000)5 b Fz(^)-47 b Fx(x)2552 -4089 y Fp(1)2608 4077 y Fz(^)g Fx(x)2650 4089 y Fp(2)2729 -3911 y Fl(\023\035)28 4265 y Fz(T)-7 b(o)27 b(illustrate)g(a)g(case)g -(for)g Fx(d)c Fz(=)g(3,)k(w)n(e)g(consider)g(the)h(lo)n(w)n(est)e(p)r -(olynomial)h(degree)g Fx(k)f Fz(=)c(1:)28 4434 y Fn(Example)27 -b Fz(2)45 b Fm(We)30 b(have)h(to)e(sp)l(e)l(cify)j(a)e(b)l(asis)g(for)h -Fs(S)1670 4404 y Fp(1)1707 4434 y Fm(:)28 4533 y(L)l(et)e -Fx(p)p 171 4563 42 4 v 29 w Fm(b)l(e)h(a)g(p)l(olynomial)i(in)e -Fz(\()p Fr(P)1020 4545 y Fp(1)1056 4533 y Fz(\()1111 -4512 y(^)1088 4533 y Fx(K)6 b Fz(\)\))1229 4503 y Fp(3)1297 -4533 y Fm(with)30 b(c)l(omp)l(onentwise)g(r)l(epr)l(esentation)1448 -4801 y Fx(p)1490 4813 y Fq(i)1540 4801 y Fz(=)1671 4697 -y Fp(3)1628 4722 y Fl(X)1630 4899 y Fq(j)s Fp(=1)1761 -4801 y Fx(a)1805 4813 y Fq(ij)1869 4801 y Fz(^)-47 b -Fx(x)1911 4813 y Fq(j)1960 4801 y Fx(;)184 b(i)22 b Fz(=)h(1)p -Fx(;)14 b Fz(2)p Fx(;)g Fz(3)g Fx(:)28 5072 y Fm(The)30 -b(c)l(ondition)h(for)g Fx(p)p 693 5101 V 29 w Fm(b)l(eing)f(in)g -Fs(S)1134 5042 y Fp(1)1202 5072 y Fm(is)1219 5339 y Fx(p)p -1219 5369 V 18 w Fs(\001)22 b Fz(^)-45 b Fx(x)p 1321 -5352 48 4 v 24 w Fz(=)1523 5236 y Fp(3)1479 5261 y Fl(X)1485 -5437 y Fq(i)p Fp(=1)1613 5339 y Fx(a)1657 5351 y Fq(ii)1713 -5339 y Fz(^)e Fx(x)1755 5305 y Fp(2)1755 5360 y Fq(i)1811 -5339 y Fz(+)1957 5236 y Fp(3)1913 5261 y Fl(X)1894 5437 -y Fq(i;j)s Fp(=1)1920 5496 y Fq(j)s(>i)2052 5339 y Fz(\()p -Fx(a)2128 5351 y Fq(ij)2205 5339 y Fz(+)18 b Fx(a)2332 -5351 y Fq(j)s(i)2391 5339 y Fz(\))5 b(^)-47 b Fx(x)2470 -5351 y Fq(i)2503 5339 y Fz(^)g Fx(x)2545 5351 y Fq(j)2604 -5339 y Fs(\021)22 b Fz(0)14 b Fx(:)1972 5719 y Fk(5)p -eop -%%Page: 6 6 -6 5 bop 28 217 a Fm(This)31 b(le)l(ads)f(to)g(the)g(c)l(ondition)h(on)e -(the)h(c)l(o)l(e\016cients)h(of)f(a)g(p)l(olynomial)i(in)e -Fs(S)2448 187 y Fp(1)2486 217 y Fm(:)1235 385 y Fx(a)1279 -397 y Fp(11)1372 385 y Fz(=)23 b Fx(a)1504 397 y Fp(22)1597 -385 y Fz(=)g Fx(a)1729 397 y Fp(33)1822 385 y Fz(=)g(0)1235 -509 y Fx(a)1279 521 y Fp(12)1372 509 y Fz(=)g Fs(\000)p -Fx(a)1569 521 y Fp(21)1652 509 y Fx(;)99 b(a)1818 521 -y Fp(13)1911 509 y Fz(=)23 b Fs(\000)p Fx(a)2108 521 -y Fp(31)2192 509 y Fx(;)98 b(a)2357 521 y Fp(23)2451 -509 y Fz(=)22 b Fs(\000)p Fx(a)2647 521 y Fp(32)2731 -509 y Fx(:)28 688 y Fm(With)40 b(the)g(b)l(asis)h(of)g -Fs(S)768 658 y Fp(1)845 688 y Fm(which)h(is)e(obtaine)l(d)h(by)g(cho)l -(osing)g Fx(a)2035 700 y Fq(ij)2135 688 y Fz(=)h(1)p -Fm(,)g Fx(i)f Fz(=)h(1)p Fx(;)14 b Fz(2)p Fx(;)g Fz(3)p -Fm(,)41 b Fx(j)46 b(>)c(i)d Fm(and)i(setting)e(al)t(l)i(the)g(other)28 -788 y(c)l(o)l(e\016cients)30 b(to)g(zer)l(o,)g(we)g(get)1036 -1056 y Fs(R)1106 1022 y Fp(1)1167 1056 y Fz(=)1255 964 -y Fl(\020)1304 1056 y Fr(P)1356 1068 y Fp(0)1392 1056 -y Fz(\()1446 1035 y(^)1424 1056 y Fx(K)6 b Fz(\))1533 -964 y Fl(\021)1583 981 y Fp(3)1638 1056 y Fs(\010)1721 -914 y Fl(*)1788 889 y(0)1788 1039 y(@)1924 956 y Fz(0)1908 -1055 y(^)-48 b Fx(x)1949 1067 y Fp(3)1908 1155 y Fz(^)g -Fx(x)1949 1167 y Fp(2)2029 889 y Fl(1)2029 1039 y(A)2129 -1068 y Fq(;)2180 889 y Fl(0)2180 1039 y(@)2300 956 y -Fz(^)h Fx(x)2342 968 y Fp(3)2316 1055 y Fz(0)2300 1155 -y(^)g Fx(x)2342 1167 y Fp(1)2421 889 y Fl(1)2421 1039 -y(A)2521 1068 y Fq(;)2573 889 y Fl(0)2573 1039 y(@)2692 -956 y Fz(^)g Fx(x)2734 968 y Fp(2)2692 1055 y Fz(^)g -Fx(x)2734 1067 y Fp(1)2708 1155 y Fz(0)2813 889 y Fl(1)2813 -1039 y(A)2886 914 y(+)28 1345 y Fz(W)-7 b(e)35 b(remark)f(at)h(this)g -(p)r(oin)n(t)g(that)h(the)f(spaces)g Fs(R)1643 1315 y -Fq(k)1719 1345 y Fz(do)g(not)g(span)g(the)g(whole)g(\()p -Fr(P)2676 1357 y Fq(k)2716 1345 y Fz(\()2770 1324 y(^)2748 -1345 y Fx(K)6 b Fz(\)\))2889 1315 y Fq(d)2928 1345 y -Fz(.)59 b(An)36 b Fx(H)7 b Fz(\(curl;)14 b(\012\)-conforming)28 -1445 y(FEM)27 b(based)g(on)h(full)g(p)r(olynomial)f(spaces,)g(the)h(so) -f(called)h Fm(N)n(\023)-40 b(ed)n(\023)g(ele)l(c)30 b(elements)g(of)h -(se)l(c)l(ond)f(typ)l(e)p Fz(,)e(w)n(as)f(in)n(tro)r(duced)g(in)h(1986) -28 1545 y(b)n(y)f(N)n(\023)-39 b(ed)n(\023)g(elec)26 -b(in)h([10].)28 1732 y Fn(Remark)h Fz(3)45 b Fm(The)38 -b(original,)j(r)l(ather)d(te)l(chnic)l(al,)i(r)l(epr)l(esentation)e(of) -g(the)f(sp)l(ac)l(es)h Fs(R)2746 1702 y Fq(k)2825 1732 -y Fm(is)f(given)h(in)f(De\014nition)g(2)h(in)f([8)q(].)28 -1832 y(N)n(\023)-40 b(ed)n(\023)g(ele)l(c)30 b(uses)f(this)i(r)l(epr)l -(esentation)f(in)f(most)h(of)h(his)f(pr)l(o)l(ofs.)40 -b(We)30 b(wil)t(l)h(not)e(r)l(efer)i(to)e(it)h(her)l(e.)28 -2059 y Fo(2.1.2)105 b(Degrees)35 b(of)g(freedom)g(on)g(the)f(reference) -h(elemen)m(t)28 2213 y Fz(In)27 b(this)h(section)f(w)n(e)h(de\014ne)g -(the)f(set)h Fs(A)g Fz(of)g(dofs,)f(whic)n(h)h(is)f(a)g(set)h(of)f -(linear)g(functionals)h(on)f Fs(R)3043 2182 y Fq(k)3084 -2213 y Fz(.)28 2377 y Fn(Remark)h Fz(4)45 b Fm(R)l(e)l(c)l(al)t(l)30 -b(that)f(the)h(dimension)h(of)g(the)f(sp)l(ac)l(es)g(of)h(p)l -(olynomials)h(of)e(de)l(gr)l(e)l(e)g Fx(k)j Fm(in)d Fx(n)f -Fm(variables)j(is)3491 2310 y Fl(\000)3529 2341 y Fq(n)p -Fp(+)p Fq(k)q Fp(+2)3615 2406 y Fq(n)3742 2310 y Fl(\001)3780 -2377 y Fm(.)28 2582 y Fn(Definition)c Fz(5)45 b Fm(L)l(et)742 -2561 y Fz(^)719 2582 y Fx(K)31 b Fm(b)l(e)25 b(the)h(r)l(efer)l(enc)l -(e)f(triangle)h(and)1848 2566 y Fz(^)1854 2582 y Fx(t)p -1854 2595 30 4 v 25 w Fm(the)f(tangent)g(as)g(de\014ne)l(d)h(in)f(c)l -(onvention)g(1.)38 b(The)26 b(set)f(of)h(de)l(gr)l(e)l(es)28 -2681 y(of)k(fr)l(e)l(e)l(dom)h Fs(A)f Fm(on)g Fs(R)717 -2651 y Fq(k)787 2681 y Fm(in)g(the)g(2d)h(c)l(ase)f(c)l(onsists)g(of)g -(the)g(line)l(ar)h(functionals)28 2827 y Fy(edge)g(dofs)1441 -2964 y Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b Fx(u)p 1518 -2977 48 4 v Fz(\))23 b(:=)1732 2851 y Fl(Z)1781 3040 -y Fp(^)-36 b Fq(e)1814 2964 y Fz(\()1840 2949 y(^)1846 -2964 y Fx(t)p 1846 2977 30 4 v 18 w Fs(\001)22 b Fz(^)-45 -b Fx(u)p 1936 2977 48 4 v Fz(\))27 b(^)-55 b Fx(')14 -b(d)s Fz(^)-45 b Fx(s)85 b Fs(8)13 b Fz(^)-55 b Fx(')22 -b Fs(2)i Fr(P)2519 2976 y Fq(k)q Fh(\000)p Fp(1)2643 -2964 y Fz(\()s(^)-45 b Fx(e)p Fz(\))14 b Fx(;)255 3171 -y Fm(for)30 b(every)h(e)l(dge)j Fz(^)-45 b Fx(e)29 b -Fm(of)978 3150 y Fz(^)955 3171 y Fx(K)6 b Fm(.)39 b(We)29 -b(have)i(a)f(total)g(of)h Fz(3)p Fx(k)h Fm(of)f(e)l(dge)f(dofs.)28 -3317 y Fy(inner)h(dofs)1400 3438 y Fz(^)-50 b Fx(\013)p -Fz(\()s(^)-45 b Fx(u)p 1477 3451 V Fz(\))23 b(:=)1691 -3325 y Fl(Z)1754 3499 y Fp(^)1737 3514 y Fq(K)1818 3438 -y Fz(^)-45 b Fx(u)p 1815 3451 V 18 w Fs(\001)25 b Fz(^)-49 -b Fx(')p 1922 3467 55 4 v 15 w(d)5 b Fz(^)-47 b Fx(x)85 -b Fs(8)6 b Fz(^)-48 b Fx(')p 2213 3467 V 23 w Fs(2)23 -b Fz(\()p Fr(P)2452 3450 y Fq(k)q Fh(\000)p Fp(2)2577 -3438 y Fz(\()2631 3417 y(^)2609 3438 y Fx(K)6 b Fz(\)\))2750 -3404 y Fp(2)2801 3438 y Fx(:)255 3628 y Fm(We)30 b(have)h(a)f(total)g -(of)g Fx(k)s Fz(\()p Fx(k)22 b Fs(\000)c Fz(1\))29 b -Fm(of)i(inner)f(dofs.)28 3816 y Fn(Definition)e Fz(6)45 -b Fm(L)l(et)746 3795 y Fz(^)724 3816 y Fx(K)35 b Fm(b)l(e)29 -b(the)h(r)l(efer)l(enc)l(e)g(tetr)l(ahe)l(dr)l(on,)1873 -3801 y Fz(^)1879 3816 y Fx(t)p 1879 3829 30 4 v 30 w -Fm(the)f(tangent)g(to)h(an)f(e)l(dge)h(as)g(de\014ne)l(d)g(in)g(c)l -(onvention)f(1)h(and)35 b Fz(^)-47 b Fx(n)p 3911 3829 -50 4 v 28 3916 a Fm(the)32 b(outwar)l(d)g(unit)f(normal)i(ve)l(ctor)f -(to)g(a)h(fac)l(e.)46 b(The)33 b(set)f(of)h(de)l(gr)l(e)l(es)f(of)h(fr) -l(e)l(e)l(dom)g Fs(A)f Fm(on)h Fs(R)2969 3885 y Fq(k)3042 -3916 y Fm(in)f(the)g(3d)h(c)l(ase)f(c)l(onsists)g(of)28 -4015 y(the)d(line)l(ar)i(functionals)28 4161 y Fy(edge)g(dofs)1441 -4298 y Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b Fx(u)p 1518 -4311 48 4 v Fz(\))23 b(:=)1732 4185 y Fl(Z)1781 4374 -y Fp(^)-36 b Fq(e)1814 4298 y Fz(\()1840 4283 y(^)1846 -4298 y Fx(t)p 1846 4311 30 4 v 18 w Fs(\001)22 b Fz(^)-45 -b Fx(u)p 1936 4311 48 4 v Fz(\))27 b(^)-55 b Fx(')14 -b(d)s Fz(^)-45 b Fx(s)85 b Fs(8)13 b Fz(^)-55 b Fx(')22 -b Fs(2)i Fr(P)2519 4310 y Fq(k)q Fh(\000)p Fp(1)2643 -4298 y Fz(\()s(^)-45 b Fx(e)p Fz(\))14 b Fx(;)255 4505 -y Fm(for)30 b(every)h(e)l(dge)j Fz(^)-45 b Fx(e)29 b -Fm(of)h(the)g(tetr)l(ahe)l(dr)l(on)1550 4484 y Fz(^)1528 -4505 y Fx(K)6 b Fm(.)38 b(We)30 b(have)h(a)f(total)g(of)h -Fz(6)p Fx(k)h Fm(of)f(e)l(dge)f(dofs.)28 4651 y Fy(face)i(dofs)1329 -4772 y Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b Fx(u)p 1406 -4785 V Fz(\))24 b(:=)1620 4659 y Fl(Z)1680 4832 y Fp(^)1666 -4847 y Fq(f)1709 4772 y Fz(\()s(^)-45 b Fx(u)p 1741 4785 -V 19 w Fs(^)23 b Fz(^)-46 b Fx(n)p 1882 4785 50 4 v -1 -w Fz(\))19 b Fs(\001)25 b Fz(^)-48 b Fx(')p 2024 4801 -55 4 v 14 w(d)q Fz(^)-43 b Fx(a)85 b Fs(8)13 b Fz(^)-55 -b Fx(')22 b Fs(2)i Fz(\()p Fr(P)2550 4784 y Fq(k)q Fh(\000)p -Fp(2)2674 4772 y Fz(\()2725 4750 y(^)2706 4772 y Fx(f)9 -b Fz(\)\))2820 4738 y Fp(2)2872 4772 y Fx(;)255 4991 -y Fm(for)30 b(every)h(fac)l(e)795 4969 y Fz(^)777 4991 -y Fx(f)38 b Fm(of)31 b(the)f(tetr)l(ahe)l(dr)l(on)1549 -4970 y Fz(^)1527 4991 y Fx(K)5 b Fm(.)39 b(We)29 b(have)i(a)g(total)e -(of)i Fz(4)p Fx(k)s Fz(\()p Fx(k)21 b Fs(\000)d Fz(1\))29 -b Fm(of)i(fac)l(e)g(dofs.)28 5136 y Fy(inner)g(dofs)1400 -5258 y Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b Fx(u)p 1477 -5271 48 4 v Fz(\))23 b(:=)1691 5145 y Fl(Z)1754 5319 -y Fp(^)1737 5334 y Fq(K)1818 5258 y Fz(^)-45 b Fx(u)p -1815 5271 V 18 w Fs(\001)25 b Fz(^)-49 b Fx(')p 1922 -5287 55 4 v 15 w(d)5 b Fz(^)-47 b Fx(x)85 b Fs(8)6 b -Fz(^)-48 b Fx(')p 2213 5287 V 23 w Fs(2)23 b Fz(\()p -Fr(P)2452 5270 y Fq(k)q Fh(\000)p Fp(3)2577 5258 y Fz(\()2631 -5237 y(^)2609 5258 y Fx(K)6 b Fz(\)\))2750 5223 y Fp(3)2801 -5258 y Fx(:)255 5469 y Fm(We)30 b(have)h(a)f(total)g(of)967 -5429 y Fq(k)q Fp(\()p Fq(k)q Fh(\000)p Fp(1\)\()p Fq(k)q -Fh(\000)p Fp(2\))p 967 5450 384 4 v 1143 5498 a(2)1391 -5469 y Fm(of)g(inner)g(dofs.)1972 5719 y Fk(6)p eop -%%Page: 7 7 -7 6 bop 28 207 a Fz(W)-7 b(e)27 b(note)g(that)h(in)f(the)g(case)g(of)g -(lo)n(w)n(est)f(order)g(elemen)n(ts,)h(i.)g(e.)37 b Fx(k)26 -b Fz(=)c(1,)27 b(only)g(edge)g(dofs)g(o)r(ccur.)36 b(This)27 -b(is)g(not)g(so)f(for)h(higher)28 307 y(order)i(elemen)n(ts.)47 -b(F)-7 b(or)31 b Fx(k)g Fz(=)d(2)j(w)n(e)g(additionally)f(ha)n(v)n(e)g -(inner)h(dofs)f(in)i(the)f(2d)g(case)f(and)h(face)g(dofs)f(in)i(the)f -(3d)g(case.)46 b(F)-7 b(or)28 406 y Fx(k)25 b Fs(\024)e -Fz(3)k(w)n(e)h(ha)n(v)n(e)e(all)h(t)n(yp)r(es)h(of)f(dofs)h(in)g(b)r -(oth)g(cases.)28 506 y(W)-7 b(e)28 b(also)e(note)i(that)f(the)h(total)g -(n)n(um)n(b)r(er)f(of)h(dofs)f(equals)g(the)h(dimension)f(of)h(the)g -(spaces)f Fs(R)2963 476 y Fq(k)3004 506 y Fz(,)g(as)g(it)h(should)g(b)r -(e.)28 606 y(The)d(represen)n(tation)e(of)i(the)g Fm(interfac)l(e)32 -b Fz(dofs,)26 b(that)f(is)g(edge)f(dofs)h(in)h(2d,)f(edge)f(and)h(face) -g(dofs)g(in)g(3d,)g(is)g(motiv)-5 b(ated)25 b(b)n(y)g(the)28 -705 y(con)n(tin)n(uit)n(y)i(condition)g(on)g Fx(H)7 b -Fz(\(curl;)14 b(\012\)-functions)28 b(stated)f(in)h(prop)r(osition)f -(1.)28 893 y Fn(Pr)n(oposition)g Fz(2)45 b Fm(The)38 -b(set)g Fs(A)g Fm(of)g(dofs)h(b)l(e\014ne)l(d)f(ab)l(ove)g(is)g -(unisolvent)g(on)g Fs(R)2560 863 y Fq(k)2601 893 y Fm(.)65 -b Fz(^)-45 b Fx(u)p 2688 906 48 4 v 37 w Fs(2)38 b(R)2936 -863 y Fq(k)3015 893 y Fm(is)g(uniquely)g(de\014ne)l(d)g(by)g(the)28 -993 y(moments)f Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b -Fx(u)p 467 1006 V Fz(\))p Fm(.)28 1181 y Fn(Pr)n(oof.)40 -b Fz(See)27 b([8],)h(pro)r(of)f(of)g(theorem)g(1)h(and)f(preceeding)g -(lemmas.)28 1369 y Fn(Example)g Fz(3)g(\(Reference)h(shap)r(e)f -(functions)h(of)f(lo)n(w)n(est)g(order)f(for)h(N)n(\023)-39 -b(ed)n(\023)g(elec)26 b(elemen)n(ts)i(on)f(triangular)f(meshes\))45 -b Fm(L)l(et)21 b(the)g(r)l(ef-)28 1469 y(er)l(enc)l(e)30 -b(element)h(b)l(e)g(the)g(triangle)1163 1448 y Fz(^)1141 -1469 y Fx(K)g Fz(=)1332 1401 y Fl(\010)1381 1469 y Fz(\()5 -b(^)-47 b Fx(x;)20 b Fz(^)-48 b Fx(y)s Fz(\))23 b Fs(2)h -Fr(R)1729 1438 y Fp(2)1795 1469 y Fz(:)108 b(0)23 b Fs(\024)28 -b Fz(^)-48 b Fx(x)24 b Fs(\024)e Fz(1)14 b Fx(;)41 b -Fz(0)23 b Fs(\024)28 b Fz(^)-47 b Fx(y)25 b Fs(\024)e -Fz(1)18 b Fs(\000)23 b Fz(^)-47 b Fx(x)2853 1401 y Fl(\011)2902 -1469 y Fm(.)42 b(L)l(ab)l(el)31 b(the)h(e)l(dges)f(c)l(outer)l(clo)l -(ck-)28 1585 y(wise)f(startung)f(with)k Fz(^)-45 b Fx(e)755 -1597 y Fp(0)815 1585 y Fz(=)p 903 1513 406 4 v 23 w(\(0)p -Fx(;)14 b Fz(0\))p Fx(;)g Fz(\(1)p Fx(;)g Fz(0\))o Fm(.)38 -b(The)31 b(tangential)f(ve)l(ctors)g(to)g(the)g(e)l(dges)g(ar)l(e)g -(\(oriente)l(d)h(c)l(ounter)l(clo)l(ckwise\))1040 1793 -y Fz(^)1046 1808 y Fx(t)p 1046 1821 30 4 v 21 x Fp(0)1136 -1808 y Fz(=)1224 1691 y Fl(\022)1326 1757 y Fz(1)1326 -1857 y(0)1409 1691 y Fl(\023)1498 1808 y Fx(;)1614 1793 -y Fz(^)1620 1808 y Fx(t)p 1620 1821 V 21 x Fp(1)1710 -1808 y Fz(=)1842 1752 y(1)p 1808 1789 111 4 v 1808 1805 -a Fs(p)p 1877 1805 42 4 v 69 x Fz(2)1942 1691 y Fl(\022)2045 -1757 y Fs(\000)p Fz(1)2077 1857 y(1)2192 1691 y Fl(\023)2281 -1808 y Fx(;)2397 1793 y Fz(^)2403 1808 y Fx(t)p 2403 -1821 30 4 v 21 x Fp(2)2493 1808 y Fz(=)2581 1691 y Fl(\022)2716 -1757 y Fz(0)2684 1857 y Fs(\000)p Fz(1)2831 1691 y Fl(\023)2920 -1808 y Fx(:)28 2036 y Fm(The)f(underlying)h(function)e(sp)l(ac)l(e)i -(for)f(lowest)h(or)l(der)f(N)n(\023)-40 b(ed)n(\023)g(ele)l(c)31 -b(elements)e(on)h(a)g(triangular)h(mesh)f(is)g Fs(R)3344 -2006 y Fp(1)3411 2036 y Fm(fr)l(om)g(\(7\).)28 2136 y(In)h(the)h(c)l -(ase)g(of)h Fx(k)d Fz(=)c(1)31 b Fm(only)i(e)l(gde-dofs)g(o)l(c)l(cur.) -45 b(On)1760 2115 y Fz(^)1738 2136 y Fx(K)37 b Fm(we)32 -b(have)h(dofs)h(of)e(the)g(typ)l(e)2756 2069 y Fl(R)2798 -2166 y Fp(^)-36 b Fq(e)2826 2174 y Ff(i)2857 2136 y Fz(\()2883 -2121 y(^)2889 2136 y Fx(t)p 2889 2149 V 21 w Fs(\001)23 -b Fz(^)-45 b Fx(u)p 2983 2149 48 4 v -1 w Fz(\))28 b(^)-56 -b Fx(')14 b(d)s Fz(^)-45 b Fx(s)14 b(;)g Fs(8)f Fz(^)-55 -b Fx(')27 b Fs(2)g Fr(P)3539 2148 y Fp(0)3575 2136 y -Fz(\()s(^)-45 b Fx(e)3646 2148 y Fq(i)3673 2136 y Fz(\))p -Fm(.)45 b(Mor)l(e)28 2244 y(pr)l(e)l(cisely,)31 b(sinc)l(e)f -Fx(')23 b Fs(\021)g Fz(1)29 b Fm(is)h(a)h(b)l(asis)f(for)h -Fr(P)1377 2256 y Fp(0)1413 2244 y Fz(\()s(^)-45 b Fx(e)1484 -2256 y Fq(i)1511 2244 y Fz(\))30 b Fm(we)g(have)h(the)f(thr)l(e)l(e)g -(dofs)1418 2460 y Fz(^)-50 b Fx(\013)1463 2472 y Fq(i)1491 -2460 y Fz(\()s(^)-45 b Fx(u)p 1523 2473 V -1 w Fz(\))24 -b(=)1713 2347 y Fl(Z)1762 2536 y Fp(^)-35 b Fq(e)1791 -2544 y Ff(i)1822 2460 y Fz(\()1848 2445 y(^)1854 2460 -y Fx(t)p 1854 2473 30 4 v 18 w Fs(\001)22 b Fz(^)-45 -b Fx(u)p 1944 2473 48 4 v -1 w Fz(\))14 b Fx(d)s Fz(^)-45 -b Fx(s)85 b(i)23 b Fz(=)g(0)p Fx(;)14 b Fz(1)p Fx(;)g -Fz(2)g Fx(:)28 2705 y Fm(In)28 b(or)l(der)h(to)g(c)l(onstruct)e(a)i -(FE-b)l(asis)1236 2684 y Fz(^)1219 2705 y Fx(N)p 1219 -2718 76 4 v 1294 2725 a Fp(0)1332 2705 y Fx(;)1386 2684 -y Fz(^)1369 2705 y Fx(N)p 1369 2718 V 1444 2725 a Fp(1)1482 -2705 y Fx(;)1536 2684 y Fz(^)1519 2705 y Fx(N)p 1519 -2718 V 1594 2725 a Fp(2)1660 2705 y Fm(for)h Fs(R)1862 -2675 y Fp(1)1928 2705 y Fm(with)f(r)l(esp)l(e)l(ct)f(to)h(these)g -(dofs,)h(we)f(r)l(e)l(quir)l(e)37 b Fz(^)-50 b Fx(\013)3328 -2717 y Fq(i)3355 2705 y Fz(\()3405 2684 y(^)3387 2705 -y Fx(N)p 3387 2718 V 3463 2725 a Fq(j)3498 2705 y Fz(\))24 -b(=)e Fx(\016)3678 2717 y Fq(ij)3737 2705 y Fm(.)38 b(This)28 -2824 y(le)l(ads)d(to)f(a)g(line)l(ar)h(system)f(for)g(the)h(c)l(o)l -(e\016cients)f(of)h(the)1898 2803 y Fz(^)1881 2824 y -Fx(N)p 1881 2837 V 1957 2844 a Fq(i)2019 2824 y Fm(in)f(a)g(gener)l(al) -h(b)l(asis)g(of)g Fs(R)2867 2794 y Fp(1)2904 2824 y Fm(.)52 -b(In)33 b(the)h(c)l(ase)h(of)g(lowest)f(or)l(der)28 2923 -y(elements,)c(it)f(is)h(e)l(asy)h(to)f(verify)h(that)f(we)g(have)951 -3121 y Fz(^)934 3142 y Fx(N)p 934 3155 V 1009 3163 a -Fp(0)1070 3142 y Fz(=)1157 3025 y Fl(\022)1260 3091 y -Fz(1)18 b Fs(\000)24 b Fz(^)-48 b Fx(y)1335 3191 y Fz(^)g -Fx(x)1488 3025 y Fl(\023)1577 3142 y Fx(;)1716 3121 y -Fz(^)1699 3142 y Fx(N)p 1699 3155 V 1774 3163 a Fp(1)1835 -3142 y Fz(=)1922 3025 y Fl(\022)2025 3091 y Fs(\000)6 -b Fz(^)-48 b Fx(y)2061 3191 y Fz(^)g Fx(x)2175 3025 y -Fl(\023)2263 3142 y Fx(;)2402 3121 y Fz(^)2385 3142 y -Fx(N)p 2385 3155 V 2461 3163 a Fp(2)2521 3142 y Fz(=)2609 -3025 y Fl(\022)2753 3091 y Fs(\000)6 b Fz(^)-48 b Fx(y)2717 -3191 y Fz(^)h Fx(x)18 b Fs(\000)g Fz(1)2943 3025 y Fl(\023)3032 -3142 y Fx(:)800 b Fz(\(8\))28 3407 y Fo(2.1.3)105 b(Piola)35 -b(transformation)28 3560 y Fz(An)28 b(a\016ne)f(triangle)g(or)f -(tetrahedron)h Fx(K)33 b Fz(is)27 b(describ)r(ed)h(b)n(y)f(the)h -(a\016ne)g(elemen)n(t)f(map)1469 3733 y Fx(K)h Fs(3)23 -b Fx(x)h Fz(=)f Fx(F)1858 3745 y Fq(K)1922 3733 y Fz(\()5 -b(^)-47 b Fx(x)q Fz(\))23 b(=)g Fx(B)2208 3745 y Fq(K)2277 -3733 y Fz(^)-47 b Fx(x)19 b Fz(+)f Fx(b)2457 3745 y Fq(K)28 -3907 y Fz(In)39 b(standard)e Fx(H)576 3876 y Fp(1)613 -3907 y Fz(\(\012\)-conforming)h(FEM,)h(the)g(shap)r(e)g(functions)g -Fx(N)2292 3919 y Fq(i)2358 3907 y Fz(on)f(a)h(general)e(cell)i -Fx(K)44 b Fz(are)38 b(obtained)h(from)f(the)28 4006 y(reference)26 -b(shap)r(e)i(functions)992 3985 y(^)968 4006 y Fx(N)1035 -4018 y Fq(i)1090 4006 y Fz(on)f(the)h(reference)f(elemen)n(t)2025 -3985 y(^)2003 4006 y Fx(K)33 b Fz(b)n(y)28 b(the)g(pull-bac)n(k)1560 -4200 y Fx(N)1627 4212 y Fq(i)1654 4200 y Fz(\()p Fx(x)p -Fz(\))c(=)1877 4108 y Fl(\020)1951 4179 y Fz(^)1927 4200 -y Fx(N)1994 4212 y Fq(i)2039 4200 y Fs(\016)18 b Fx(F)2164 -4164 y Fh(\000)p Fp(1)2152 4224 y Fq(K)2253 4108 y Fl(\021)2317 -4200 y Fz(\()p Fx(x)p Fz(\))28 4398 y(In)24 b(the)g(case)f(of)i -Fx(H)7 b Fz(\(curl)o(;)14 b(\012\)-conforming)23 b(N)n(\023)-39 -b(ed)n(\023)g(elec)22 b(FEM)i(w)n(e)g(cannot)f(transforme)g(our)h(shap) -r(e)f(function)i(in)f(this)h(w)n(a)n(y)-7 b(.)34 b(The)28 -4498 y(pull-bac)n(k)d(of)h(a)f Fx(H)7 b Fz(\(curl;)870 -4477 y(^)848 4498 y Fx(K)e Fz(\)-function)33 b(needs)f(not)g(to)g(b)r -(e)g(in)g Fx(H)7 b Fz(\(curl;)14 b Fx(K)6 b Fz(\).)50 -b(In)32 b(addition,)h(the)g(pull-bac)n(k)e(is)h(not)g(an)f -Fs(R)3892 4467 y Fq(k)3934 4498 y Fz(-)28 4597 y(isomorphism)d(and)i -(it)g(do)r(es)f(not)h(lead)g(to)f(an)h Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\)-conforming)29 b(metho)r(d)h(if)g(prescribing)f(the)h(dofs)g(b) -n(y)f(de\014nitions)28 4697 y(5)e(or)f(6.)28 4796 y(In)32 -b(N)n(\023)-39 b(ed)n(\023)g(elec's)31 b(FEM)h(\(or,)i(more)d(general,) -i(in)g Fx(H)7 b Fz(\(curl)o(;)14 b(\012\)-conforming)32 -b(FEM\),)h(the)g(shap)r(e)f(functions)h(are)e(transformed)28 -4896 y(b)n(y)c(the)h(follo)n(wing)e(co)n(v)-5 b(arian)n(t)26 -b(transformation)g(for)h(v)n(ector-\014elds:)255 5065 -y(The)f(elemen)n(t)h(shap)r(e)f(functions)h Fx(N)p 1319 -5078 V 1394 5086 a Fq(i)1422 5065 y Fz(\()p Fx(x)p Fz(\))g(on)g(the)f -(elemen)n(t)h Fx(K)h Fz(=)23 b Fx(F)2362 5077 y Fq(K)2426 -5065 y Fz(\()2481 5044 y(^)2458 5065 y Fx(K)6 b Fz(\))27 -b(are)e(obtained)h(from)g(the)h(reference)f(shap)r(e)255 -5164 y(functions)i(b)n(y)1333 5284 y Fx(N)p 1333 5297 -V 1408 5305 a Fq(i)1436 5284 y Fz(\()p Fx(x)p Fz(\))c(=)f -Fs(P)1717 5296 y Fq(K)1781 5284 y Fz(\()1830 5263 y(^)1813 -5284 y Fx(N)p 1813 5297 V 1889 5305 a Fq(i)1916 5284 -y Fz(\))h(=)2059 5192 y Fl(\020)2128 5263 y Fz(^)2109 -5284 y Fx(D)r(F)2245 5249 y Fh(\000)p Fq(T)2233 5309 -y(K)2366 5263 y Fz(^)2349 5284 y Fx(N)p 2349 5297 V 2425 -5305 a Fq(i)2452 5192 y Fl(\021)2520 5284 y Fs(\016)18 -b Fx(F)2645 5249 y Fh(\000)p Fp(1)2633 5309 y Fq(K)2734 -5284 y Fz(\()p Fx(x)p Fz(\))c Fx(;)973 b Fz(\(9\))255 -5469 y(where)514 5449 y(^)495 5469 y Fx(D)r(F)619 5481 -y Fq(K)711 5469 y Fz(is)28 b(the)f(jacobian)1296 5437 -y Fq(d)p 1277 5451 73 4 v 1277 5498 a(d)t Fp(^)-37 b -Fq(x)1359 5469 y Fx(F)1412 5481 y Fq(K)1477 5469 y Fz(\()5 -b(^)-47 b Fx(x)q Fz(\))28 b(of)f(the)h(elemen)n(t)g(map.)1972 -5719 y Fk(7)p eop -%%Page: 8 8 -8 7 bop 28 212 a Fz(In)34 b(literature,)i(an)e(equiv)-5 -b(alen)n(t)34 b(to)g(this)h(transformation)e(for)g Fx(H)7 -b Fz(\(div)r(;)14 b(\012\)-conforming)33 b(FEM)h(\(whic)n(h)h(in)f -(that)h(case)e(is)i(a)28 311 y(con)n(tra)n(v)-5 b(arian)n(t)24 -b(map\))k(is)g(referred)e(to)i(as)e Fm(Piola)32 b(tr)l(ansformation)p -Fz(,)d(cf.)37 b([3)o(])28 b(pp.)g(97.)28 411 y(Here,)f(w)n(e)g(will)h -(refer)f(to)g(the)h(transformation)e(\(9\))i(of)g(the)f(v)n(ector)g -(\014eld)h(also)e(as)h Fm(Piola)32 b(tr)l(ansformation)p -Fz(.)28 511 y(W)-7 b(e)23 b(note)g(that)g(the)h(gradien)n(ts)e(of)h -(scalar)e(no)r(dal)i Fx(H)1635 480 y Fp(1)1672 511 y -Fz(\(\012\)-conforming)f(\014nite)i(elemen)n(ts)f(transform)f -(according)f(to)i(the)h(Piola)28 610 y(transformation)i(\(9\).)28 -710 y(In)g(the)h(case)f(of)g(tetrahedral)g(elemen)n(ts)g(and)g(a\016ne) -h(elemen)n(t)f(map)h Fx(F)2230 722 y Fq(K)2294 710 y -Fz(\()5 b(^)-47 b Fx(x)q Fz(\))23 b(=)g Fx(B)2580 722 -y Fq(K)2649 710 y Fz(^)-47 b Fx(x)17 b Fz(+)e Fx(b)2824 -722 y Fq(k)2865 710 y Fz(,)27 b(the)g(jacobian)3405 689 -y(^)3385 710 y Fx(D)r(F)3509 722 y Fq(K)3600 710 y Fz(is)g(just)g(the) -28 809 y(constan)n(t)f(matrix)h Fx(B)695 821 y Fq(K)787 -809 y Fz(and)h(w)n(e)f(ha)n(v)n(e)1341 992 y Fx(v)p 1341 -1005 44 4 v 4 w Fz(\()p Fx(x)p Fz(\))d(=)e Fs(P)1665 -1004 y Fq(K)1729 992 y Fz(\()q(^)-43 b Fx(v)p 1761 1005 -V 4 w Fz(\))23 b(=)g Fx(B)2015 957 y Fh(\000)p Fq(T)2011 -1017 y(K)2133 925 y Fl(\000)2172 992 y Fz(^)-43 b Fx(v)p -2171 1005 V 22 w Fs(\016)17 b Fx(F)2357 957 y Fh(\000)p -Fp(1)2345 1017 y Fq(K)2447 925 y Fl(\001)2498 992 y Fz(\()p -Fx(x)p Fz(\))d Fx(;)1168 b Fz(\(10\))28 1221 y Fo(2.1.4)105 -b(T)-9 b(ransformation)34 b(of)h(the)g(curl)g(in)g(2d)28 -1374 y Fz(F)-7 b(or)30 b(\012)f Fs(\032)f Fr(R)416 1344 -y Fp(2)459 1374 y Fz(,)k(w)n(e)f(noted)g(in)g(remark)f(1)g(that)i(v)n -(ector)d(\014elds)i(in)h Fx(H)7 b Fz(\(curl)o(;)14 b(\012\))31 -b(can)g(b)r(e)h(represen)n(ted)d(as)i(rotated)f Fx(H)7 -b Fz(\(div)q(;)14 b(\012\))28 1474 y(v)n(ector)26 b(\014elds.)37 -b(Moreo)n(v)n(er,)25 b(it)j(is)f(easy)g(to)g(v)n(erify)g(that)1525 -1657 y Fx(B)1592 1621 y Fh(\000)p Fq(T)1588 1681 y(K)1719 -1657 y Fz(=)c(det)14 b Fx(B)2003 1621 y Fh(\000)p Fp(1)1999 -1681 y Fq(K)2106 1657 y Fx(R)2170 1622 y Fq(T)2222 1657 -y Fx(B)2285 1669 y Fq(K)2363 1657 y Fx(R)h(;)1350 b Fz(\(11\))28 -1839 y(where)27 b Fx(R)i Fz(is)f(the)h(rotation)e(matrix)g(from)h -(remark)f(1.)38 b(Therefore,)27 b(the)i(prop)r(erties)e(of)h(the)h -(Piola)e(transformation)f(\(10\))i(in)28 1939 y(the)33 -b(2d)f(case)g(can)g(b)r(e)h(deriv)n(ed)f(directly)h(from)f(the)h(prop)r -(erties)f(of)g(the)i Fx(H)7 b Fz(\(div)q(;)14 b(\012\)-Piola)31 -b(transformation)g(stated)i(in)g([3)o(])28 2039 y(pp.)28 -b(97.)28 2238 y Fn(Theorem)g Fz(4)f(\(Some)h(prop)r(erties)e(of)i(2d)f -(Piola)g(transformation)e(for)j(a\016ne)f(elemen)n(t)h(map\))45 -b Fm(L)l(et)25 b Fx(v)p 3160 2251 V 3 w Fz(\()p Fx(x)p -Fz(\))f(=)f Fs(P)3484 2250 y Fq(K)3548 2238 y Fz(\()q(^)-43 -b Fx(v)p 3580 2251 V 3 w Fz(\))p Fm(,)27 b Fx(')p Fz(\()p -Fx(x)p Fz(\))e(=)28 2270 y Fl(\000)79 2337 y Fz(^)-55 -b Fx(')18 b Fs(\016)g Fx(F)263 2302 y Fh(\000)p Fp(1)251 -2362 y Fq(K)352 2270 y Fl(\001)404 2337 y Fz(\()p Fx(x)p -Fz(\))p Fm(,)37 b Fz(^)-48 b Fx(x)24 b Fz(=)f Fx(F)795 -2302 y Fh(\000)p Fp(1)783 2362 y Fq(K)884 2337 y Fz(\()p -Fx(x)p Fz(\))p Fm(,)31 b(with)f(a\016ne)g(element)g(map)g -Fx(F)2004 2349 y Fq(K)2069 2337 y Fm(.)116 2487 y(\(i\))46 -b(The)31 b(gr)l(adient)f Fx(D)r(v)p 817 2500 V 33 w Fm(tr)l(ansforms)g -(ac)l(c)l(or)l(ding)h(to)1742 2670 y Fx(D)r(v)p 1813 -2683 V 27 w Fz(=)22 b Fx(B)2034 2634 y Fh(\000)p Fq(T)2030 -2694 y(K)2172 2649 y Fz(^)2152 2670 y Fx(D)s Fz(^)-42 -b Fx(v)p 2224 2683 V 17 w(B)2348 2634 y Fh(\000)p Fp(1)2344 -2694 y Fq(K)2451 2670 y Fx(:)1340 b Fz(\(12\))91 2877 -y Fm(\(ii\))46 b(The)31 b(curl)e(tr)l(ansforms)h(ac)l(c)l(or)l(ding)h -(to)1703 2990 y Fz(curl)13 b Fx(v)p 1855 3003 V 27 w -Fz(=)22 b(det)14 b Fx(B)2205 2955 y Fh(\000)p Fp(1)2201 -3015 y Fq(K)2304 2968 y Fl(d)2295 2990 y Fz(curl^)-43 -b Fx(v)p 2433 3003 V 17 w(:)1301 b Fz(\(13\))255 3152 -y Fm(As)32 b(a)g(c)l(onse)l(quenc)l(e)g(we)g(se)l(e)g(that)g -Fx(H)7 b Fz(\(curl;)14 b Fx(K)6 b Fz(\))32 b Fm(is)g(isomorphic)j(to)d -Fx(H)7 b Fz(\(curl;)2707 3131 y(^)2685 3152 y Fx(K)e -Fz(\))32 b Fm(under)g(the)h(Piola)g(tr)l(ansformation)255 -3251 y(\(10\).)28 3450 y Fn(Pr)n(oof.)122 3600 y Fz(\(i\))46 -b(Chain)27 b(rule)99 3749 y(\(ii\))46 b(W)-7 b(e)27 b(use)f(that)h(the) -f(2d)h(curl)f(op)r(erator)e(is)j(just)g(the)f(trace)g(of)g(the)h -(rotated)f(jacobian)f Fx(R)15 b(D)r(v)s Fz(.)37 b(By)26 -b(remark)f(11,)h(w)n(e)g(can)255 3849 y(replace)g Fx(B)603 -3813 y Fh(\000)p Fq(T)599 3873 y(K)735 3849 y Fz(and)i(w)n(e)f(get)g -(that)h Fx(R)15 b(D)r(v)31 b Fz(is)c(a\016ne-equiv)-5 -b(alen)n(t)27 b(to)g(det)15 b Fx(B)2554 3813 y Fh(\000)p -Fp(1)2550 3873 y Fq(K)2657 3849 y Fx(R)2754 3828 y Fz(^)2734 -3849 y Fx(D)5 b Fz(^)-45 b Fx(v)t Fz(,)27 b(whic)n(h)h(pro)n(v)n(es)d -(\(ii\).)3897 4048 y Fg(\003)28 4247 y Fn(Cor)n(ollar)-6 -b(y)28 b Fz(1)45 b Fm(F)-6 b(r)l(om)30 b(\(ii\))g(in)g(the)l(or)l(em)g -(4)g(we)g(de)l(duc)l(e)1435 4359 y Fl(Z)1481 4548 y Fq(K)1559 -4472 y Fz(curl)14 b Fx(v)p 1712 4485 V 17 w(')g(dx)24 -b Fz(=)2038 4359 y Fl(Z)2101 4533 y Fp(^)2084 4548 y -Fq(K)2172 4451 y Fl(d)2162 4472 y Fz(curl)q(^)-43 b Fx(v)p -2301 4485 V 30 w Fz(^)-55 b Fx(')14 b(d)5 b Fz(^)-47 -b Fx(x)14 b(;)28 4702 y Fm(and)30 b(we)g(have,)h(to)l(gether)f(with)h -(\(ii\))f(fr)l(om)g(the)l(or)l(em)g(4)1145 4814 y Fl(Z)1191 -5002 y Fq(K)1269 4927 y Fz(curl)13 b Fx(v)p 1421 4940 -V 31 w Fz(curl)g Fx(u)p 1644 4940 48 4 v 14 w(dx)23 b -Fz(=)g Fs(j)p Fx(B)1993 4939 y Fq(K)2057 4927 y Fs(j)2080 -4893 y Fh(\000)p Fp(1)2197 4814 y Fl(Z)2260 4988 y Fp(^)2243 -5003 y Fq(K)2330 4905 y Fl(d)2321 4927 y Fz(curl^)-42 -b Fx(v)p 2460 4940 44 4 v 2526 4905 a Fl(d)2517 4927 -y Fz(curl)r(^)d Fx(u)p 2655 4940 48 4 v 14 w(d)5 b Fz(^)-47 -b Fx(x)14 b(:)1972 5719 y Fk(8)p eop -%%Page: 9 9 -9 8 bop 28 213 a Fo(2.1.5)105 b(T)-9 b(ransformation)34 -b(of)h(the)g(curl)g(in)g(3d)28 366 y Fz(In)22 b(three)f(dimensions,)i -(w)n(e)f(cannot)f(iden)n(tify)i(the)f(curl-op)r(erator)d(with)k(the)f -(rotated)f(gradien)n(t)g(or)g(with)h(the)g(div)n(ergence)f(of)h(a)28 -465 y(rotated)h(v)n(ector)g(\014eld.)36 b(W)-7 b(e)25 -b(cannot,)g(as)f(in)g(2d,)h(deriv)n(e)f(a)g(transformation)e(form)n -(ula)i(for)g(the)h(curl)f(from)g(the)g(transformatin)28 -565 y(form)n(ula)i(of)i(the)g(div)n(ergence.)28 665 y(By)36 -b(the)i(c)n(hain)e(rule,)j(w)n(e)e(obtain)f(the)i(transformation)d(of)i -(the)g(gradien)n(t)f(of)h(a)g(v)n(ector)e(\014eld)j Fx(v)p -3098 678 44 4 v 3 w Fz(,)h(de\014ned)f(b)n(y)e(the)i(Piola)28 -764 y(transformation)26 b(\(10\))h(of)g(a)h(reference)e(\014eld)j(^)-43 -b Fx(v)p 1461 777 V 3 w Fz(:)1629 941 y Fx(D)r(v)p 1700 -954 V 26 w Fz(=)23 b Fx(B)1921 905 y Fh(\000)p Fq(T)1917 -965 y(K)2058 920 y Fz(^)2039 941 y Fx(D)s Fz(^)-43 b -Fx(v)p 2110 954 V 17 w(B)2234 905 y Fh(\000)p Fp(1)2230 -965 y Fq(K)2337 941 y Fx(:)1454 b Fz(\(14\))28 1117 y(W)-7 -b(e)28 b(in)n(tro)r(duce)f(the)h(sk)n(ew)f(symmetric)g(matrix)g(Curl)13 -b Fx(v)31 b Fz(as)1570 1332 y(\(Curl)14 b Fx(v)s Fz(\))1853 -1357 y Fq(ij)1935 1332 y Fz(=)2032 1276 y Fx(@)5 b(v)2121 -1288 y Fq(j)p 2032 1313 124 4 v 2032 1389 a Fx(@)g(x)2128 -1401 y Fq(i)2185 1332 y Fs(\000)2285 1276 y Fx(@)g(v)2374 -1288 y Fq(i)p 2278 1313 132 4 v 2278 1389 a Fx(@)g(x)2374 -1401 y Fq(j)3814 1332 y Fz(\(15\))28 1568 y(W)-7 b(e)28 -b(see)f(that)h(Curl)13 b Fx(v)26 b Fz(=)d Fx(D)r(v)p -885 1581 44 4 v 928 1538 a Fq(T)999 1568 y Fs(\000)18 -b Fx(D)r(v)p 1153 1581 V 31 w Fz(and)27 b(therefore)g(b)n(y)g(\(14\)) -1550 1758 y(Curl)13 b Fx(v)26 b Fz(=)d Fx(B)1946 1722 -y Fh(\000)p Fq(T)1942 1782 y(K)2071 1736 y Fl(d)2050 -1758 y Fz(Curl)17 b(^)-45 b Fx(v)17 b(B)2350 1722 y Fh(\000)p -Fp(1)2346 1782 y Fq(K)3814 1758 y Fz(\(16\))28 1962 y -Fn(Pr)n(oposition)27 b Fz(3)g(\(T)-7 b(ransformation)26 -b(of)h(the)h(curl)g(in)g(3d\))45 b Fm(L)l(et)2082 1941 -y Fz(^)2060 1962 y Fx(K)39 b Fm(b)l(e)34 b(the)g(r)l(efer)l(enc)l(e)h -(tetr)l(ahe)l(dr)l(on)f(and)g Fx(K)i Fz(=)31 b Fx(F)3633 -1974 y Fq(K)3697 1962 y Fz(\()3752 1941 y(^)3729 1962 -y Fx(K)6 b Fz(\))34 b Fm(an)28 2061 y(a\016ne)f(image)i(of)f(it.)50 -b(The)34 b(curl)f(of)h(a)g(ve)l(ctor)g(\014eld)g Fx(v)p -1689 2074 V 3 w Fz(\()p Fx(x)p Fz(\))g Fm(on)g Fx(K)6 -b Fm(,)34 b(de\014ne)l(d)f(by)h(the)g(Piola)h(tr)l(ansformation)f(of)g -(a)g(r)l(efer)l(enc)l(e)28 2161 y(\014eld)d Fz(^)-43 -b Fx(v)p 206 2174 V 3 w Fz(\()5 b(^)-47 b Fx(x)q Fz(\))30 -b Fm(tr)l(ansforms)g(ac)l(c)l(or)l(ding)h(to)1276 2337 -y Fz(\(curl)14 b Fx(v)p 1461 2350 V 3 w Fz(\))1536 2362 -y Fq(i)1578 2337 y Fz(\()p Fx(x)p Fz(\))24 b(=)f(det)14 -b(M)2006 2349 y Fp(i)2029 2337 y Fz(\()p Fx(x)p Fz(\))g -Fx(;)184 b(i)23 b Fz(=)g(1)p Fx(;)14 b Fz(2)p Fx(;)g -Fz(3)1113 b(\(17\))28 2514 y Fm(We)34 b(obtain)h(the)f(matrix)g -Fz(M)929 2526 y Fp(i)986 2514 y Fm(by)g(r)l(eplacing)i(i-th)e(c)l -(olumn)g(of)h(the)f(\(c)l(onstant\))g(jac)l(obian)i Fx(D)r -Fz(\()p Fx(F)3053 2478 y Fh(\000)p Fp(1)3041 2538 y Fq(K)3142 -2514 y Fz(\))31 b(=)g Fx(B)3368 2478 y Fh(\000)p Fp(1)3364 -2538 y Fq(K)3491 2514 y Fm(by)k(the)f(ve)l(ctor)28 2631 -y Fz(\()69 2609 y Fl(d)60 2631 y Fz(curl)14 b(^)-43 b -Fx(v)p 212 2644 V 22 w Fs(\016)18 b Fx(F)399 2595 y Fh(\000)p -Fp(1)387 2655 y Fq(K)488 2631 y Fz(\)\()p Fx(x)p Fz(\))p -Fm(:)1159 2792 y Fz(\(M)1267 2804 y Fp(i)1290 2792 y -Fz(\))1323 2817 y Fq(k)q(l)1399 2792 y Fz(\()p Fx(x)p -Fz(\))24 b(:=)1644 2675 y Fl(\032)1748 2747 y Fz(\()1789 -2726 y Fl(d)1780 2747 y Fz(curl)17 b(^)-45 b Fx(v)22 -b Fs(\016)c Fx(F)2120 2712 y Fh(\000)p Fp(1)2108 2772 -y Fq(K)2209 2747 y Fz(\))2241 2759 y Fq(k)2282 2747 y -Fz(\()p Fx(x)p Fz(\))84 b Fm(if)i Fx(l)24 b Fz(=)f Fx(i)1748 -2850 y Fz(\()p Fx(B)1847 2815 y Fh(\000)p Fp(1)1843 2875 -y Fq(K)1937 2850 y Fz(\))1969 2862 y Fq(k)q(l)2477 2850 -y Fm(if)86 b Fx(l)24 b Fs(6)p Fz(=)f Fx(i)28 2997 y Fm(\(Note:)38 -b(an)30 b(alternative,)h(e)l(quivalent,)g(tr)l(ansformation)f(formula)h -(for)f(the)g(curl)g(in)g(3d)g(is)h(given)f(in)g(pr)l(op)l(osition)h -(4\).)28 3189 y Fn(Pr)n(oof.)40 b Fz(It)28 b(holds)1525 -3367 y(curl)13 b Fx(v)p 1677 3380 V 27 w Fz(=)1831 3200 -y Fl(0)1831 3350 y(@)1945 3267 y Fz(\(Curl)h Fx(v)s Fz(\))2228 -3279 y Fp(23)1945 3366 y Fz(\(Curl)g Fx(v)s Fz(\))2228 -3378 y Fp(31)1945 3466 y Fz(\(Curl)g Fx(v)s Fz(\))2228 -3478 y Fp(12)2341 3200 y Fl(1)2341 3350 y(A)2441 3367 -y Fx(:)1350 b Fz(\(18\))28 3612 y(W)-7 b(e)34 b(demonstrate)f(the)h -(statemen)n(t)g(of)g(the)g(prop)r(osition)f(for)h(the)g(\014rst)g(comp) -r(onen)n(t)f(of)h(the)h(curl,)g(whic)n(h)f(is)g(\(curl)13 -b Fx(v)p 3750 3625 V 4 w Fz(\))3826 3624 y Fp(1)3897 -3612 y Fz(=)28 3712 y(Curl)g Fx(v)246 3724 y Fp(23)317 -3712 y Fz(.)45 b(Using)31 b(the)g(transformation)d(\(16\),)j(implicit)h -(summation)e(o)n(v)n(er)f(equal)h(indices)g(and)h(the)f(abbreviation)g -Fx(b)3788 3724 y Fq(ij)3874 3712 y Fz(:=)28 3812 y(\()p -Fx(B)127 3776 y Fh(\000)p Fp(1)123 3836 y Fq(K)216 3812 -y Fz(\))248 3824 y Fq(ij)307 3812 y Fz(,)e(w)n(e)f(ha)n(v)n(e)1474 -3929 y(\(Curl)14 b Fx(v)s Fz(\))1757 3941 y Fp(23)1850 -3929 y Fz(=)23 b Fx(b)1974 3941 y Fq(k)q Fp(2)2062 3929 -y Fz(\()2115 3907 y Fl(d)2094 3929 y Fz(Curl)16 b(^)-45 -b Fx(v)t Fz(\))2345 3941 y Fq(k)q(l)2421 3929 y Fx(b)2457 -3941 y Fq(l)p Fp(3)28 4074 y Fz(W)-7 b(riting)27 b(this)h(out)g(and)f -(recalling)f(that)i(Curl)14 b Fx(v)31 b Fz(is)c(sk)n(ew)g(symmetric,)g -(yields)227 4260 y(\(Curl)14 b Fx(v)s Fz(\))510 4272 -y Fp(23)604 4260 y Fz(=)22 b(\()p Fx(b)759 4272 y Fp(12)830 -4260 y Fx(b)866 4272 y Fp(23)954 4260 y Fs(\000)c Fx(b)1073 -4272 y Fp(22)1143 4260 y Fx(b)1179 4272 y Fp(13)1249 -4260 y Fz(\)\()1334 4238 y Fl(d)1313 4260 y Fz(Curl)f(^)-45 -b Fx(v)s Fz(\))1564 4272 y Fp(12)1653 4260 y Fs(\000)18 -b Fz(\()p Fx(b)1804 4272 y Fp(12)1875 4260 y Fx(b)1911 -4272 y Fp(33)1999 4260 y Fs(\000)g Fx(b)2118 4272 y Fp(32)2188 -4260 y Fx(b)2224 4272 y Fp(13)2294 4260 y Fz(\)\()2379 -4238 y Fl(d)2358 4260 y Fz(Curl)f(^)-45 b Fx(v)s Fz(\))2609 -4272 y Fp(31)2698 4260 y Fz(+)18 b(\()p Fx(b)2849 4272 -y Fp(22)2920 4260 y Fx(b)2956 4272 y Fp(33)3044 4260 -y Fs(\000)g Fx(b)3163 4272 y Fp(32)3233 4260 y Fx(b)3269 -4272 y Fp(23)3339 4260 y Fz(\)\()3424 4238 y Fl(d)3403 -4260 y Fz(Curl)f(^)-45 b Fx(v)s Fz(\))3654 4272 y Fp(23)3739 -4260 y Fx(;)28 4436 y Fz(and)27 b(with)h(\(18\))f(this)h(is)g(equal)f -(to)g(the)h(determinan)n(t)g(of)1394 4737 y(M)1470 4749 -y Fp(1)1530 4737 y Fz(:=)1641 4545 y Fl(0)1641 4692 y(B)1641 -4745 y(@)1755 4630 y Fz(\()1796 4608 y Fl(d)1787 4630 -y Fz(curl)14 b Fx(v)s Fz(\))2015 4642 y Fp(1)2135 4630 -y Fx(b)2171 4642 y Fp(12)2324 4630 y Fx(b)2360 4642 y -Fp(13)1755 4744 y Fz(\()1796 4722 y Fl(d)1787 4744 y -Fz(curl)g Fx(v)s Fz(\))2015 4756 y Fp(2)2135 4744 y Fx(b)2171 -4756 y Fp(22)2324 4744 y Fx(b)2360 4756 y Fp(23)1755 -4858 y Fz(\()1796 4836 y Fl(d)1787 4858 y Fz(curl)g Fx(v)s -Fz(\))2015 4870 y Fp(3)2135 4858 y Fx(b)2171 4870 y Fp(32)2324 -4858 y Fx(b)2360 4870 y Fp(33)2472 4545 y Fl(1)2472 4692 -y(C)2472 4745 y(A)2572 4737 y Fx(:)28 5034 y Fz(The)27 -b(pro)r(of)g(for)g(the)h(other)f(comp)r(onen)n(ts)g(follo)n(ws)g -(analogously)-7 b(.)3897 5202 y Fg(\003)28 5370 y Fz(In)42 -b(the)g(next)g(prop)r(osition,)j(w)n(e)d(state)f(an)h(alternativ)n(e,)j -(equiv)-5 b(alen)n(t,)45 b(form)n(ula)c(for)h(the)g(transformation)e -(of)i(the)h(curl)28 5469 y(\(e.)27 b(g.)h(used)f(b)n(y)h(Demk)n(o)n -(vicz)e(in)i([12)o(]\))1972 5719 y Fk(9)p eop -%%Page: 10 10 -10 9 bop 28 228 a Fn(Pr)n(oposition)27 b Fz(4)45 b Fm(F)-6 -b(or)25 b(a)h(ve)l(ctor)f(\014eld)h Fx(v)p 1277 241 44 -4 v 29 w Fm(on)f(the)g(tetr)l(ahe)l(dr)l(on)h Fx(K)i -Fz(=)23 b Fx(F)2264 240 y Fq(K)2328 228 y Fz(\()2383 -207 y(^)2360 228 y Fx(K)6 b Fz(\))p Fm(,)27 b(de\014ne)l(d)e(by)h(the)f -(Piola)j(tr)l(ansformation)d(\(10\))28 328 y(of)30 b(a)g(r)l(efer)l -(enc)l(e)g(\014eld)h Fz(^)-42 b Fx(v)p 726 341 V 33 w -Fm(on)939 307 y Fz(^)917 328 y Fx(K)6 b Fm(,)30 b(we)g(have)1361 -534 y Fz(curl)14 b Fx(v)p 1514 547 V 26 w Fz(=)1785 478 -y(1)p 1677 515 257 4 v 1677 591 a(det)h Fx(B)1870 603 -y Fq(K)1957 534 y Fx(B)2020 546 y Fq(K)2098 534 y Fz(\()2139 -512 y Fl(d)2130 534 y Fz(curl)g(^)-43 b Fx(v)p 2283 547 -44 4 v 22 w Fs(\016)17 b Fx(F)2469 499 y Fh(\000)p Fp(1)2457 -559 y Fq(K)2559 534 y Fz(\))d Fx(:)1186 b Fz(\(19\))28 -746 y Fn(Pr)n(oof.)38 b Fz(The)24 b(transformation)e(form)n(ula)h -(\(19\))g(can)g(b)r(e)h(pro)n(v)n(en)e(comp)r(onen)n(t)n(wise,)i(and)f -(w)n(e)g(will)h(only)f(carry)f(out)i(the)g(pro)r(of)28 -846 y(for)j(the)h(\014rst)f(v)n(ector)f(comp)r(onen)n(t)i(\(curl)13 -b Fx(v)p 1327 859 V 4 w Fz(\))1403 858 y Fp(1)1440 846 -y Fz(.)37 b(The)28 b(pro)r(ofs)e(for)i(the)g(other)f(comp)r(onen)n(ts)g -(follo)n(w)f(analogously)-7 b(.)28 945 y(The)27 b(iden)n(tit)n(y)h -(\(19\))f(reads)g(for)g(the)h(\014rst)f(v)n(ector)f(comp)r(onen)n(t) -1208 1156 y(\(curl)14 b Fx(v)p 1393 1169 V 3 w Fz(\))1468 -1168 y Fp(1)1528 1156 y Fz(=)1733 1100 y(1)p 1626 1137 -257 4 v 1626 1213 a(det)g Fx(B)1818 1225 y Fq(K)1892 -1156 y Fz(\()p Fx(B)1987 1168 y Fq(K)2051 1156 y Fz(\))2083 -1168 y Fp(1)p Fq(j)2152 1156 y Fz(\(\()2225 1134 y Fl(d)2216 -1156 y Fz(curl)h(^)-43 b Fx(v)p 2369 1169 44 4 v 3 w -Fz(\))2444 1168 y Fq(j)2498 1156 y Fs(\016)18 b Fx(F)2623 -1122 y Fh(\000)p Fp(1)2712 1156 y Fz(\))c Fx(:)1033 b -Fz(\(20\))28 1368 y(Referring)26 b(to)i(\(17\),)f(w)n(e)g(sho)n(w)g -(that)h(the)g(righ)n(t)f(hand)g(side)h(of)f(\(20\))h(equals)e(det)15 -b(M)2644 1380 y Fp(1)2681 1368 y Fz(.)37 b(F)-7 b(or)27 -b(this,)h(w)n(e)f(expand)g(det)14 b(M)3690 1380 y Fp(1)3755 -1368 y Fz(to)796 1553 y(det)g(M)1001 1565 y Fp(1)1061 -1553 y Fz(=)23 b(\()1190 1531 y Fl(d)1181 1553 y Fz(curl)14 -b(^)-42 b Fx(v)p 1334 1566 V 3 w Fz(\))1409 1565 y Fp(1)1460 -1553 y Fz(det)14 b Fs(B)1647 1519 y Fq(inv)1644 1574 -y Fp(11)1769 1553 y Fs(\000)k Fz(\()1893 1531 y Fl(d)1884 -1553 y Fz(curl)c(^)-42 b Fx(v)p 2037 1566 V 3 w Fz(\))2112 -1565 y Fp(2)2163 1553 y Fz(det)14 b Fs(B)2350 1519 y -Fq(inv)2347 1574 y Fp(21)2472 1553 y Fz(+)k(\()2596 1531 -y Fl(d)2587 1553 y Fz(curl)c(^)-43 b Fx(v)p 2739 1566 -V 4 w Fz(\))2815 1565 y Fp(3)2866 1553 y Fz(det)14 b -Fs(B)3053 1519 y Fq(inv)3050 1574 y Fp(31)3170 1553 y -Fx(;)28 1725 y Fz(where)27 b Fs(B)326 1694 y Fq(inv)323 -1746 y(ij)456 1725 y Fz(is)h(the)g(2)18 b Fs(\002)g Fz(2-matrix)26 -b(arising)g(from)h Fx(B)1696 1689 y Fh(\000)p Fp(1)1692 -1749 y Fq(K)1813 1725 y Fz(when)h(cancelling)f(its)h(i-th)g(ro)n(w)e -(and)h(its)h(j-th)g(column.)28 1833 y(W)-7 b(e)28 b(recall)e(the)i -(form)n(ula)f(for)g(the)h(in)n(v)n(erse)e(of)i(a)f(matrix)g -Fx(A)c Fs(2)h Fr(R)2037 1803 y Fp(3)p Fh(\002)p Fp(3)1404 -2027 y Fz(\()p Fx(A)1498 1992 y Fh(\000)p Fp(1)1587 2027 -y Fz(\))1619 2039 y Fq(ij)1701 2027 y Fz(=)1874 1970 -y(1)p 1799 2007 192 4 v 1799 2083 a(det)14 b Fx(A)2000 -2027 y Fz(\()p Fs(\000)p Fz(1\))2171 1992 y Fq(i)p Fp(+)p -Fq(j)2294 2027 y Fz(det)g Fs(A)2489 2039 y Fq(j)s(i)2562 -2027 y Fx(;)1229 b Fz(\(21\))28 2221 y(where)27 b Fs(A)334 -2233 y Fq(ij)420 2221 y Fz(is)h(the)g(2)18 b Fs(\002)g -Fz(2-matrix)26 b(arising)g(from)h Fx(A)h Fz(when)g(cancelling)f(its)h -(i-th)f(ro)n(w)g(and)g(its)h(j-th)g(column.)28 2321 y(Replacing)f -Fx(B)475 2333 y Fq(K)566 2321 y Fz(in)h(the)g(righ)n(t)f(hand)g(side)h -(of)g(\(19\))f(b)n(y)g(the)h(expression)e(\(21\))h(for)h -Fx(A)23 b Fz(=)g Fx(B)2852 2285 y Fh(\000)p Fp(1)2848 -2345 y Fq(K)2941 2321 y Fz(,)28 b(w)n(e)f(get)145 2479 -y(1)p 38 2516 257 4 v 38 2592 a(det)14 b Fx(B)230 2604 -y Fq(K)449 2479 y Fz(1)p 327 2516 286 4 v 327 2599 a(det)h -Fx(B)524 2564 y Fh(\000)p Fp(1)520 2623 y Fq(K)623 2535 -y Fz(\()p Fs(\000)p Fz(1\))794 2501 y Fp(1+)p Fq(j)926 -2535 y Fz(det)f Fs(B)1113 2501 y Fq(inv)1110 2556 y(j)s -Fp(1)1217 2535 y Fz(\()1258 2513 y Fl(d)1249 2535 y Fz(curl)g(^)-43 -b Fx(v)p 1401 2548 44 4 v 3 w Fz(\))1476 2547 y Fq(j)1535 -2535 y Fz(=)22 b(\()1663 2513 y Fl(d)1654 2535 y Fz(curl)15 -b(^)-43 b Fx(v)p 1807 2548 V 3 w Fz(\))1882 2547 y Fp(1)1934 -2535 y Fz(det)14 b Fs(B)2121 2501 y Fq(inv)2118 2556 -y Fp(11)2228 2535 y Fs(\000)t Fz(\()2338 2513 y Fl(d)2329 -2535 y Fz(curl)g(^)-43 b Fx(v)p 2481 2548 V 3 w Fz(\))2556 -2547 y Fp(2)2607 2535 y Fz(det)15 b Fs(B)2795 2501 y -Fq(inv)2792 2556 y Fp(21)2901 2535 y Fz(+)t(\()3011 2513 -y Fl(d)3002 2535 y Fz(curl)f(^)-43 b Fx(v)p 3154 2548 -V 4 w Fz(\))3230 2547 y Fp(3)3281 2535 y Fz(det)14 b -Fs(B)3468 2501 y Fq(inv)3465 2556 y Fp(31)3594 2535 y -Fz(=)23 b(det)14 b(M)3887 2547 y Fp(1)3938 2535 y Fx(:)3897 -2760 y Fg(\003)28 2990 y Fv(2.2)112 b(N)n(\023)-54 b(ed)n(\023)g(elec) -36 b(Elemen)m(ts)g(on)i(a\016ne)g(quadrilateral)f(or)g(hexahedral)h -(grids)28 3143 y Fz(W)-7 b(e)29 b(w)n(an)n(t)f(to)h(presen)n(t)f(the)h -(ingredien)n(ts)f(for)h(N)n(\023)-39 b(ed)n(\023)g(elec's)27 -b(\014nite)i(elemen)n(ts)g(of)g(\014rst)f(t)n(yp)r(e)h(on)g(grids)f -(consisiting)g(of)h(parallel-)28 3243 y(ograms)f(\(in)i(2d\))h(or)e -(the)h(resp)r(ectiv)n(e)g(ob)5 b(jects)29 b(in)i(3d,)f(so)g(called)f -(parallelotops)g(\(cf.)45 b(section)29 b Fm(FE)k(built)f(on)g(cub)l(es) -37 b Fz(in)30 b([8]\).)28 3343 y(Suc)n(h)d(grids)g(consist)g(of)g -(elemen)n(ts)h Fx(C)34 b Fz(that)28 b(are)e(a\016ne)i(images)e(of)i -(the)g(square)e(or)h(cubic)h(reference)e(elemen)n(t)3536 -3322 y(^)3517 3343 y Fx(C)j Fz(=)23 b([0)p Fx(;)14 b -Fz(1])3860 3313 y Fq(d)3898 3343 y Fz(:)1252 3514 y Fx(C)30 -b Fz(=)22 b Fx(F)1481 3526 y Fq(C)1538 3514 y Fz(\()1589 -3493 y(^)1570 3514 y Fx(C)6 b Fz(\))83 b Fx(C)30 b Fs(3)23 -b Fx(x)h Fz(=)e Fx(B)2138 3526 y Fq(C)2199 3514 y Fz(^)-47 -b Fx(x)19 b Fz(+)f Fx(b)p 2343 3527 36 4 v 21 x Fq(C)2448 -3514 y Fx(;)i Fz(^)-48 b Fx(x)24 b Fs(2)2653 3493 y Fz(^)2634 -3514 y Fx(C)c(:)28 3741 y Fo(2.2.1)105 b(P)m(olynomial)35 -b(spaces)h(on)f(the)g(reference)g(elemen)m(t)28 3895 -y Fz(In)23 b(order)f(to)h(in)n(tro)r(duce)g(the)g(function)h(spaces)e -(needed)i(for)e(the)i(construction)e(of)h(N)n(\023)-39 -b(ed)n(\023)g(elec's)22 b(\014nite)h(elemen)n(ts,)h(let)g(us)f -(de\014ne)28 3994 y(some)k(spaces)f(of)i(v)n(ector-v)-5 -b(alued)26 b(p)r(olynomials)28 4158 y Fn(Definition)i -Fz(7)45 b Fs(Q)649 4170 y Fq(l;m)781 4158 y Fm(ar)l(e)28 -b(the)h(sp)l(ac)l(es)g(of)g(p)l(olynomials)h(on)e(the)g(r)l(efer)l(enc) -l(e)h(squar)l(e)2729 4137 y Fz(^)2710 4158 y Fx(C)35 -b Fm(with)28 b(maximal)h(de)l(gr)l(e)l(e)g Fx(l)h Fm(in)j -Fz(^)-47 b Fx(x)3764 4170 y Fp(1)3830 4158 y Fm(and)28 -4257 y Fx(m)29 b Fm(in)35 b Fz(^)-47 b Fx(x)279 4269 -y Fp(2)317 4257 y Fm(.)28 4357 y Fs(Q)96 4369 y Fq(l;m;n)291 -4357 y Fm(ar)l(e)30 b(the)h(sp)l(ac)l(es)g(of)g(p)l(olynomials)h(on)f -(the)f(r)l(efer)l(enc)l(e)h(cub)l(e)2185 4336 y Fz(^)2166 -4357 y Fx(C)37 b Fm(with)31 b(maximal)g(de)l(gr)l(e)l(e)g -Fx(l)g Fm(in)36 b Fz(^)-47 b Fx(x)3233 4369 y Fp(1)3271 -4357 y Fm(,)30 b Fx(m)h Fm(in)k Fz(^)-47 b Fx(x)3579 -4369 y Fp(2)3647 4357 y Fm(and)31 b Fx(n)f Fm(in)33 4456 -y Fz(^)-47 b Fx(x)75 4468 y Fp(3)112 4456 y Fm(.)28 4620 -y Fz(The)27 b(spaces)471 4599 y(^)453 4620 y Fx(R)h Fz(for)f(the)h -(reference)f(shap)r(e)g(functions)h(no)n(w)f(are)g(in)h(2d)1037 -4836 y Fs(P)1102 4802 y Fq(k)1165 4836 y Fz(=)1253 4719 -y Fl(\032)1318 4836 y Fz(^)-45 b Fx(u)p 1315 4849 48 -4 v 23 w Fz(=)1473 4719 y Fl(\022)1581 4786 y Fz(^)e -Fx(u)1624 4798 y Fp(1)1581 4885 y Fz(^)g Fx(u)1624 4897 -y Fp(2)1702 4719 y Fl(\023)1787 4836 y Fz(:)111 b(^)-47 -b Fx(u)1964 4848 y Fp(1)2023 4836 y Fs(2)24 b(Q)2170 -4848 y Fq(k)q Fh(\000)p Fp(1)p Fq(;k)2366 4836 y Fx(;)19 -b Fz(^)-47 b Fx(u)2451 4848 y Fp(2)2511 4836 y Fs(2)23 -b(Q)2657 4848 y Fq(k)q(;k)q Fh(\000)p Fp(1)2839 4719 -y Fl(\033)2929 4836 y Fx(;)862 b Fz(\(22\))28 5053 y(and)27 -b(in)h(3d)686 5232 y Fs(P)751 5197 y Fq(k)814 5232 y -Fz(=)902 5062 y Fl(8)902 5136 y(<)902 5286 y(:)979 5232 -y Fz(^)-45 b Fx(u)p 976 5245 V 22 w Fz(=)1134 5065 y -Fl(0)1134 5214 y(@)1253 5131 y Fz(^)e Fx(u)1296 5143 -y Fp(1)1253 5231 y Fz(^)g Fx(u)1296 5243 y Fp(2)1253 -5330 y Fz(^)g Fx(u)1296 5342 y Fp(3)1374 5065 y Fl(1)1374 -5214 y(A)1470 5232 y Fz(:)111 b(^)-47 b Fx(u)1647 5244 -y Fp(1)1707 5232 y Fs(2)23 b(Q)1853 5244 y Fq(k)q Fh(\000)p -Fp(1)p Fq(;k)q(;k)2106 5232 y Fx(;)c Fz(^)-47 b Fx(u)2191 -5244 y Fp(2)2250 5232 y Fs(2)24 b(Q)2397 5244 y Fq(k)q(;k)q -Fh(\000)p Fp(1)p Fq(;k)2649 5232 y Fx(;)19 b Fz(^)-47 -b Fx(u)2734 5244 y Fp(3)2794 5232 y Fs(2)23 b(Q)2940 -5244 y Fq(k)q(;k)q(;k)q Fh(\000)p Fp(1)3179 5062 y Fl(9)3179 -5136 y(=)3179 5286 y(;)3280 5232 y Fx(:)511 b Fz(\(23\))28 -5469 y(W)-7 b(e)28 b(renounce)e(an)i(example,)f(since)g(it)h(is)g -(quite)g(eviden)n(t,)f(what)h(these)f(spaces)g(lo)r(ok)g(lik)n(e)g(for) -g(a)g(sp)r(eci\014c)h Fx(k)s Fz(.)1949 5719 y Fk(10)p -eop -%%Page: 11 11 -11 10 bop 28 213 a Fo(2.2.2)105 b(Degrees)35 b(of)g(freedom)g(on)g(the) -f(reference)h(elemen)m(t)28 366 y Fz(W)-7 b(e)28 b(start)f(with)h(the)g -(degrees)e(of)h(freedoms)g(on)h(the)g(reference)e(square)2323 -345 y(^)2305 366 y Fx(C)j Fs(\032)23 b Fr(R)2535 336 -y Fp(2)2578 366 y Fz(:)28 540 y Fn(Definition)28 b Fz(8)45 -b Fm(L)l(et)748 519 y Fz(^)729 540 y Fx(C)c Fm(denote)35 -b(the)g(r)l(efer)l(enc)l(e)h(squar)l(e)e(and)2021 525 -y Fz(^)2027 540 y Fx(t)p 2027 553 30 4 v 34 w Fm(the)h(tangent)g(as)g -(de\014ne)l(d)g(in)g(c)l(onvention)g(1.)54 b(The)36 b(set)e(of)28 -640 y(de)l(gr)l(e)l(es)c(of)g(fr)l(e)l(e)l(dom)h Fs(A)f -Fm(on)g Fs(P)993 610 y Fq(k)1063 640 y Fm(in)g(the)g(2d)g(c)l(ase)g(c)l -(onsists)g(of)h(the)e(line)l(ar)i(functionals)28 789 -y Fy(edge)g(dofs)1409 927 y Fz(^)-51 b Fx(\013)q Fz(\()s(^)-45 -b Fx(u)p 1486 940 48 4 v Fz(\))23 b(:=)1700 814 y Fl(Z)1749 -1002 y Fp(^)-36 b Fq(e)1781 927 y Fz(\()1807 911 y(^)1813 -927 y Fx(t)p 1813 940 30 4 v 19 w Fs(\001)22 b Fz(^)-45 -b Fx(u)p 1904 940 48 4 v -1 w Fz(\))28 b(^)-56 b Fx(')14 -b(d)s Fz(^)-45 b Fx(s)14 b(;)99 b Fs(8)27 b Fz(^)-55 -b Fx(')23 b Fs(2)g Fr(P)2551 939 y Fq(k)q Fh(\000)p Fp(1)2676 -927 y Fz(\()s(^)-45 b Fx(e)o Fz(\))14 b Fx(;)255 1139 -y Fm(for)30 b(every)h(e)l(dge)j Fz(^)-45 b Fx(e)29 b -Fm(of)974 1118 y Fz(^)955 1139 y Fx(C)7 b Fm(.)38 b(We)30 -b(have)h(a)f(total)g(of)h Fz(4)p Fx(k)h Fm(of)e(e)l(dge)h(dofs.)28 -1289 y Fy(inner)g(dofs)758 1417 y Fz(^)-50 b Fx(\013)p -Fz(\()s(^)-45 b Fx(u)p 835 1430 V Fz(\))23 b(:=)1049 -1304 y Fl(Z)1110 1478 y Fp(^)1095 1493 y Fq(C)1168 1417 -y Fz(^)-45 b Fx(u)p 1165 1430 V 18 w Fs(\001)25 b Fz(^)-49 -b Fx(')p 1272 1447 55 4 v 14 w(d)5 b Fz(^)-47 b Fx(x)15 -b(;)99 b Fs(8)19 b Fz(^)-47 b Fx(')p 1628 1447 V 22 w -Fz(=)1792 1300 y Fl(\022)1908 1367 y Fz(^)-56 b Fx(')1948 -1379 y Fp(1)1908 1466 y Fz(^)g Fx(')1948 1478 y Fp(2)2027 -1300 y Fl(\023)2116 1417 y Fx(;)112 b Fz(^)-55 b Fx(')2292 -1429 y Fp(1)2352 1417 y Fs(2)24 b(Q)2499 1429 y Fq(k)q -Fh(\000)p Fp(2)p Fq(;k)q Fh(\000)p Fp(1)2780 1417 y Fx(;)112 -b Fz(^)-56 b Fx(')2955 1429 y Fp(2)3016 1417 y Fs(2)24 -b(Q)3163 1429 y Fq(k)q Fh(\000)p Fp(1)p Fq(;k)q Fh(\000)p -Fp(2)3443 1417 y Fx(:)255 1616 y Fm(We)30 b(have)h(a)f(total)g(of)g -Fz(2)p Fx(k)s Fz(\()p Fx(k)21 b Fs(\000)d Fz(1\))30 b -Fm(of)g(inner)g(dofs.)28 1816 y Fn(Definition)e Fz(9)45 -b Fm(L)l(et)741 1795 y Fz(^)722 1816 y Fx(C)33 b Fm(denote)28 -b(the)g(r)l(efer)l(enc)l(e)g(cub)l(e,)1763 1800 y Fz(^)1769 -1816 y Fx(t)p 1769 1829 30 4 v 27 w Fm(the)g(tangent)e(to)i(an)f(e)l -(dge)h(as)g(de\014ne)l(d)g(in)f(c)l(onvention)h(1)g(and)k -Fz(^)-46 b Fx(n)p 3776 1829 50 4 v 27 w Fm(the)28 1915 -y(outwar)l(d)32 b(unit)g(normal)h(ve)l(ctor)f(to)g(a)h(fac)l(e.)47 -b(The)34 b(set)e(of)h(de)l(gr)l(e)l(es)f(of)h(fr)l(e)l(e)l(dom)h -Fs(A)e Fm(on)g Fs(P)2827 1885 y Fq(k)2900 1915 y Fm(in)g(the)h(3d)g(c)l -(ase)g(c)l(onsists)f(of)h(the)28 2015 y(line)l(ar)d(functionals)28 -2164 y Fy(edge)h(dofs)1409 2302 y Fz(^)-51 b Fx(\013)q -Fz(\()s(^)-45 b Fx(u)p 1486 2315 48 4 v Fz(\))23 b(:=)1700 -2189 y Fl(Z)1749 2377 y Fp(^)-36 b Fq(e)1781 2302 y Fz(\()1807 -2287 y(^)1813 2302 y Fx(t)p 1813 2315 30 4 v 19 w Fs(\001)22 -b Fz(^)-45 b Fx(u)p 1904 2315 48 4 v -1 w Fz(\))28 b(^)-56 -b Fx(')14 b(d)s Fz(^)-45 b Fx(s)14 b(;)99 b Fs(8)27 b -Fz(^)-55 b Fx(')23 b Fs(2)g Fr(P)2551 2314 y Fq(k)q Fh(\000)p -Fp(1)2676 2302 y Fz(\()s(^)-45 b Fx(e)o Fz(\))14 b Fx(;)255 -2514 y Fm(for)30 b(every)h(e)l(dge)j Fz(^)-45 b Fx(e)29 -b Fm(of)974 2493 y Fz(^)955 2514 y Fx(C)7 b Fm(.)38 b(We)30 -b(have)h(a)f(total)g(of)h Fz(12)p Fx(k)g Fm(of)g(e)l(dge)f(dofs.)28 -2664 y Fy(face)i(dofs)556 2875 y Fz(^)-51 b Fx(\013)q -Fz(\()s(^)-45 b Fx(u)p 633 2888 V -1 w Fz(\))24 b(:=)847 -2762 y Fl(Z)906 2936 y Fp(^)893 2951 y Fq(f)936 2875 -y Fz(\()s(^)-45 b Fx(u)p 968 2888 V 18 w Fs(^)23 b Fz(^)-46 -b Fx(n)p 1108 2888 50 4 v Fz(\))18 b Fs(\001)25 b Fz(^)-48 -b Fx(')p 1250 2905 55 4 v 14 w(d)q Fz(^)-43 b Fx(a)14 -b(;)99 b Fs(8)19 b Fz(^)-47 b Fx(')p 1602 2905 V 22 w -Fz(=)1766 2758 y Fl(\022)1882 2825 y Fz(^)-56 b Fx(')1922 -2837 y Fp(1)1882 2924 y Fz(^)g Fx(')1922 2936 y Fp(2)2001 -2758 y Fl(\023)2090 2875 y Fx(;)112 b Fz(^)-55 b Fx(')2266 -2887 y Fp(1)2327 2875 y Fs(2)23 b(Q)2473 2887 y Fq(k)q -Fh(\000)p Fp(2)p Fq(;k)q Fh(\000)p Fp(1)2740 2875 y Fz(\()2790 -2853 y(^)2772 2875 y Fx(f)9 b Fz(\))14 b Fx(;)112 b Fz(^)-55 -b Fx(')3044 2887 y Fp(2)3104 2875 y Fs(2)24 b(Q)3251 -2887 y Fq(k)q Fh(\000)p Fp(1)p Fq(;k)q Fh(\000)p Fp(2)3518 -2875 y Fz(\()3568 2853 y(^)3550 2875 y Fx(f)9 b Fz(\))14 -b Fx(:)255 3133 y Fm(for)30 b(every)h(fac)l(e)795 3111 -y Fz(^)777 3133 y Fx(f)38 b Fm(of)972 3112 y Fz(^)954 -3133 y Fx(C)6 b Fm(.)39 b(We)29 b(have)i(a)f(total)g(of)h -Fz(6)18 b Fs(\001)h Fz(2)p Fx(k)s Fz(\()p Fx(k)h Fs(\000)e -Fz(1\))30 b Fm(of)h(fac)l(e)f(dofs.)28 3283 y Fy(inner)h(dofs)263 -3544 y Fz(^)-50 b Fx(\013)p Fz(\()s(^)-45 b Fx(u)p 340 -3557 48 4 v Fz(\))23 b(:=)554 3431 y Fl(Z)615 3605 y -Fp(^)600 3620 y Fq(C)673 3544 y Fz(^)-45 b Fx(u)p 670 -3557 V -1 w Fs(\001)6 b Fz(^)-48 b Fx(')p 740 3574 55 -4 v 15 w(d)5 b Fz(^)-47 b Fx(x)14 b(;)99 b Fs(8)19 b -Fz(^)-47 b Fx(')p 1096 3574 V 22 w Fz(=)1260 3377 y Fl(0)1260 -3527 y(@)1387 3444 y Fz(^)-55 b Fx(')1428 3456 y Fp(1)1387 -3543 y Fz(^)g Fx(')1428 3555 y Fp(2)1387 3643 y Fz(^)g -Fx(')1428 3655 y Fp(3)1507 3377 y Fl(1)1507 3527 y(A)1607 -3544 y Fx(;)113 b Fz(^)-56 b Fx(')1783 3556 y Fp(1)1844 -3544 y Fs(2)23 b(Q)1990 3556 y Fq(k)q Fh(\000)p Fp(1)p -Fq(;k)q Fh(\000)p Fp(2)p Fq(;k)q Fh(\000)p Fp(2)2412 -3544 y Fx(;)124 b Fz(^)-67 b Fx(')2588 3556 y Fp(2)2649 -3544 y Fs(2)23 b(Q)2795 3556 y Fq(k)q Fh(\000)p Fp(2)p -Fq(;k)q Fh(\000)p Fp(1)p Fq(;k)q Fh(\000)p Fp(2)3218 -3544 y Fx(;)123 b Fz(^)-67 b Fx(')3393 3556 y Fp(3)3454 -3544 y Fs(2)23 b(Q)3600 3556 y Fq(k)q Fh(\000)p Fp(2)p -Fq(;k)q Fh(\000)p Fp(2)p Fq(;k)q Fh(\000)p Fp(1)4023 -3544 y Fx(:)255 3832 y Fm(We)30 b(have)h(a)f(total)g(of)g -Fz(3)p Fx(k)s Fz(\()p Fx(k)21 b Fs(\000)d Fz(1\))1298 -3802 y Fp(2)1365 3832 y Fm(of)31 b(inner)e(dofs.)28 4031 -y Fn(Example)e Fz(4)45 b Fm(Pr)l(o)l(c)l(e)l(e)l(ding)d(the)f(same)g -(way)h(as)g(in)f(example)h(3)f(for)h(a)g(triangular)f(r)l(efer)l(enc)l -(e)h(element,)i(we)d(obtain)h(the)28 4131 y(r)l(efer)l(enc)l(e)30 -b(shap)l(e)h(functions)e(of)i(lowest)f(or)l(der)h(on)e(the)h(squar)l(e) -g Fz([0)p Fx(;)14 b Fz(1])2209 4101 y Fp(2)2245 4131 -y Fm(.)39 b(F)-6 b(or)30 b(the)g(unit)f(tangents)g(as)h(in)g(c)l -(onvention)g(1)825 4348 y Fz(^)831 4363 y Fx(t)p 831 -4376 30 4 v 21 x Fp(0)921 4363 y Fz(=)1009 4246 y Fl(\022)1111 -4312 y Fz(1)1111 4412 y(0)1195 4246 y Fl(\023)1283 4363 -y Fx(;)1399 4348 y Fz(^)1405 4363 y Fx(t)p 1405 4376 -V 21 x Fp(1)1495 4363 y Fz(=)1583 4246 y Fl(\022)1686 -4312 y Fz(0)1686 4412 y(1)1769 4246 y Fl(\023)1857 4363 -y Fx(;)1973 4348 y Fz(^)1979 4363 y Fx(t)p 1979 4376 -V 21 x Fp(2)2069 4363 y Fz(=)2157 4246 y Fl(\022)2260 -4312 y Fs(\000)p Fz(1)2292 4412 y(0)2407 4246 y Fl(\023)2496 -4363 y Fx(;)2612 4348 y Fz(^)2618 4363 y Fx(t)p 2618 -4376 V 21 x Fp(3)2708 4363 y Fz(=)2796 4246 y Fl(\022)2931 -4312 y Fz(0)2898 4412 y Fs(\000)p Fz(1)3046 4246 y Fl(\023)3135 -4363 y Fx(;)28 4591 y Fm(they)g(r)l(e)l(ad)638 4715 y -Fz(^)621 4736 y Fx(N)p 621 4749 76 4 v 696 4757 a Fp(0)757 -4736 y Fz(=)844 4619 y Fl(\022)947 4685 y Fz(1)18 b Fs(\000)24 -b Fz(^)-48 b Fx(y)1019 4785 y Fz(0)1175 4619 y Fl(\023)1264 -4736 y Fx(;)1403 4715 y Fz(^)1386 4736 y Fx(N)p 1386 -4749 V 1461 4757 a Fp(1)1522 4736 y Fz(=)1609 4619 y -Fl(\022)1715 4685 y Fz(0)1717 4785 y(^)h Fx(x)1801 4619 -y Fl(\023)1890 4736 y Fx(;)2029 4715 y Fz(^)2011 4736 -y Fx(N)p 2011 4749 V 2087 4757 a Fp(2)2148 4736 y Fz(=)2235 -4619 y Fl(\022)2338 4685 y Fs(\000)6 b Fz(^)-48 b Fx(y)2371 -4785 y Fz(0)2488 4619 y Fl(\023)2576 4736 y Fx(;)2715 -4715 y Fz(^)2698 4736 y Fx(N)p 2698 4749 V 2774 4757 -a Fp(3)2834 4736 y Fz(=)2922 4619 y Fl(\022)3099 4685 -y Fz(0)3030 4785 y(^)g Fx(x)19 b Fs(\000)f Fz(1)3256 -4619 y Fl(\023)3345 4736 y Fx(:)446 b Fz(\(24\))28 5002 -y Fo(2.2.3)105 b(T)-9 b(ransformation)34 b(of)h(the)g(v)m(ector)g -(\014eld)28 5156 y Fz(Since)24 b(the)g(elemen)n(ts)g(of)f(the)i -(considered)d(grids)h(are)g(still)h(a\016ne)g(images)f(of)h(the)g -(reference)f(elemen)n(t,)i(w)n(e)e(can)h(use)f(the)i(Piola)28 -5255 y(transformation)j(\(10\))i(to)g(transform)f(v)n(ector)f(\014elds) -j(and)e(the)i(results)e(stated)h(in)h(sections)e(2.1.3)g({)h(2.1.5)f -(can)g(b)r(e)i(carried)28 5355 y(o)n(v)n(er)25 b(one)j(to)f(one.)1949 -5719 y Fk(11)p eop -%%Page: 12 12 -12 11 bop 28 214 a Fv(2.3)112 b Fo(Construction)35 b(of)g(N)n(\023)-50 -b(ed)n(\023)g(elec)35 b(elemen)m(ts)f(on)h(bi-)g(or)g(trilinear)g -(elemen)m(ts)28 367 y Fz(W)-7 b(e)28 b(no)n(w)f(w)n(an)n(t)g(to)h -(consider)f(grids)g(that)h(are)f(comp)r(osed)h(of)g(elemen)n(ts)f(that) -i(are)e(a)g(bi-)h(resp.)37 b(trilinear)27 b(images)g -Fx(F)3680 379 y Fq(C)3736 367 y Fz(\()3788 346 y(^)3768 -367 y Fx(C)7 b Fz(\))28 b(of)28 467 y(the)f(reference)e(elemen)n(t)842 -446 y(^)823 467 y Fx(C)k Fz(=)23 b([0)p Fx(;)14 b Fz(1])1166 -436 y Fq(d)1204 467 y Fz(.)36 b(The)27 b(main)f(di\013erence)h(here)f -(is,)h(that)g(the)g(jacobian)2964 446 y(^)2944 467 y -Fx(D)r(F)3068 479 y Fq(C)3125 467 y Fz(\()5 b(^)-47 b -Fx(x)p Fz(\))27 b(of)g(the)g(elemen)n(t)f(map)28 566 -y Fx(F)81 578 y Fq(C)164 566 y Fz(is)i(not)g(constan)n(t,)e(and)i(w)n -(e)f(ha)n(v)n(e)g(to)g(use)g(Piola)g(transformation)f(\(9\))h(to)h -(transform)e(v)n(ector)h(\014elds.)28 892 y Fo(2.3.1)105 -b(Bilinear)35 b(elemen)m(ts)f(in)h(2d)28 1045 y Fz(The)27 -b(p)r(olynomial)g(spaces)g Fs(P)947 1015 y Fq(k)1015 -1045 y Fz(and)g(the)h(dofs)g(remain)f(the)h(same)f(as)g(in)g(the)h -(case)f(of)h(a\016ne)f(quadrilateral)f(elemen)n(ts.)28 -1145 y(A)i(transformed)e(v)n(ector)g(\014eld)i(on)f(a)h(general)e -(elemen)n(t)i(is)f(no)n(w)g(de\014ned)h(b)n(y)f(the)h(Piola)f -(transformation)f(\(9\))1501 1308 y Fx(v)p 1501 1321 -44 4 v 4 w Fz(\()p Fx(x)p Fz(\))e(=)e(\()1819 1287 y(^)1799 -1308 y Fx(D)s(F)1936 1273 y Fh(\000)p Fq(T)1924 1333 -y(C)2041 1308 y Fz(^)-43 b Fx(v)p 2040 1321 V 2083 1329 -a Fq(i)2111 1308 y Fz(\))18 b Fs(\016)g Fx(F)2286 1273 -y Fh(\000)p Fp(1)2274 1333 y Fq(C)2375 1308 y Fz(\()p -Fx(x)p Fz(\))28 1484 y(of)32 b(a)g(v)n(ector)f(\014eld)i(on)f(the)h -(reference)f(elemen)n(t.)51 b(Note)33 b(that)g(the)g(jacobian)2508 -1463 y(^)2488 1484 y Fx(D)r(F)2612 1496 y Fq(C)2669 1484 -y Fz(\()5 b(^)-47 b Fx(x)p Fz(\))33 b(is)g(not)f(constan)n(t)g(in)h -(this)f(case.)51 b(In)28 1584 y(con)n(trast)27 b(to)i(the)g(case)f(of)g -(a\016ne)h(elemen)n(ts,)g(the)g(gradien)n(t)e Fx(D)r(v)p -1997 1597 V 33 w Fz(do)r(es)h(not)h(transform)e(according)g(to)i(form)n -(ula)f(\(12\).)40 b(Non-)28 1683 y(v)-5 b(anishing)26 -b(second)g(deriv)-5 b(ativ)n(es)26 b(of)1187 1662 y(^)1167 -1683 y Fx(D)r(F)1291 1695 y Fq(C)1348 1683 y Fz(\()5 -b(^)-47 b Fx(x)p Fz(\))28 b(app)r(ear)d(in)i(the)g(transformation)f -(rule)g(for)g(gradien)n(ts)g(of)g(v)n(ector)g(\014elds.)36 -b(This)28 1797 y(requires)26 b(a)h(new)h(approac)n(h)e(to)i(express)e -(curl)14 b Fx(v)p 1482 1810 V 31 w Fz(in)28 b(terms)g(of)1986 -1775 y Fl(d)1976 1797 y Fz(curl)15 b(^)-43 b Fx(v)p 2129 -1810 V 3 w Fz(.)38 b(Nev)n(ertheless,)26 b(it)j(can)e(b)r(e)h(sho)n(wn) -f(that)h(the)h(curl)e(of)h(a)28 1896 y(v)n(ector)e(\014eld)i -(transforms)e(analogously)f(to)j(the)g(case)e(of)i(a\016ne)f(elemen)n -(ts.)28 2073 y Fn(Pr)n(oposition)g Fz(5)45 b Fm(L)l(et)809 -2052 y Fz(^)790 2073 y Fx(C)39 b Fm(b)l(e)32 b(the)h(r)l(efer)l(enc)l -(e)f(element)g Fz([0)p Fx(;)14 b Fz(1])1962 2043 y Fp(2)2031 -2073 y Fm(and)32 b Fx(C)39 b Fm(a)32 b(biline)l(ar)i(image)f(of)3030 -2052 y Fz(^)3011 2073 y Fx(C)7 b Fm(.)46 b(If)32 b(the)h(ve)l(ctor)f -(\014eld)h Fx(v)p 3806 2086 V 3 w Fz(\()p Fx(x)p Fz(\))28 -2173 y Fm(tr)l(ansforms)c(ac)l(c)l(or)l(ding)i(to)f(the)g(Piola)i(tr)l -(ansformation)e(\(9\),)h(then)e(the)h(tr)l(ansformation)h(of)f(the)g -(curl)g(ob)l(eys)1126 2350 y Fz(curl)13 b Fx(v)p 1278 -2363 V 3 w Fz(\()p Fx(x)p Fz(\))24 b(=)f(\(det)1725 2329 -y(^)1706 2350 y Fx(D)r(F)12 b Fz(\))1874 2316 y Fh(\000)p -Fp(1)1972 2328 y Fl(d)1963 2350 y Fz(curl)i(^)-43 b Fx(v)p -2115 2363 V 4 w Fz(\()5 b(^)-47 b Fx(x)p Fz(\))14 b Fx(;)184 -b(x)24 b Fz(=)e Fx(F)12 b Fz(\()5 b(^)-47 b Fx(x)q Fz(\))14 -b Fx(;)28 2514 y Fm(as)30 b(in)f(the)h(a\016ne)h(c)l(ase.)28 -2791 y Fn(Pr)n(oof.)40 b Fz(In)28 b(this)g(pro)r(of,)f(the)h(mapp)r(ed) -g(elemen)n(t)f Fx(C)34 b Fz(will)28 b(b)r(e)g(\014xed,)g(so)f(for)g -(simplicit)n(y)g(w)n(e)h(write)f Fx(F)40 b Fz(for)27 -b Fx(F)3428 2803 y Fq(C)3484 2791 y Fz(.)28 2890 y(First)37 -b(note)g(that)h(\()675 2869 y(^)656 2890 y Fx(D)r(F)12 -b Fz(\()p Fx(F)889 2860 y Fh(\000)p Fp(1)978 2890 y Fz(\()p -Fx(x)p Fz(\)\)\))1153 2860 y Fh(\000)p Fp(1)1283 2890 -y Fz(=)39 b Fx(D)r Fz(\()p Fx(F)1555 2860 y Fh(\000)p -Fp(1)1645 2890 y Fz(\)\()p Fx(x)p Fz(\).)67 b(W)-7 b(e)38 -b(use)f(the)h(notation)f Fx(D)r Fz(\()p Fx(F)2847 2860 -y Fh(\000)p Fp(1)2936 2890 y Fz(\))2968 2902 y Fq(ij)3027 -2890 y Fz(\()p Fx(x)p Fz(\))j(=)3295 2856 y Fq(@)8 b -Fp(^)-37 b Fq(x)3372 2864 y Ff(i)p 3292 2871 108 4 v -3292 2919 a Fq(@)t(x)3369 2927 y Ff(j)3410 2890 y Fz(\()p -Fx(x)p Fz(\))38 b(and)g(imlicit)28 3001 y(summation)27 -b(to)g(rewrite)g(the)h(Piola)f(transformation)f(of)h(the)h(v)n(ector)e -(\014eld)i(comp)r(onen)n(t)n(wise)1250 3204 y Fx(v)1290 -3216 y Fq(i)1318 3204 y Fz(\()p Fx(x)p Fz(\))c(=)1550 -3148 y Fx(@)10 b Fz(^)-47 b Fx(x)1646 3160 y Fq(j)p 1550 -3185 132 4 v 1554 3261 a Fx(@)5 b(x)1650 3273 y Fq(i)1691 -3204 y Fz(\()p Fx(x)p Fz(\))16 b(^)-44 b Fx(v)p 1816 -3217 44 4 v 1861 3225 a Fq(j)1895 3204 y Fz(\()p Fx(F)1992 -3170 y Fh(\000)p Fp(1)2082 3204 y Fz(\()p Fx(x)p Fz(\)\))14 -b Fx(;)181 b(i)23 b Fz(=)f(1)p Fx(;)14 b Fz(2)g Fx(:)28 -3404 y Fz(In)27 b(the)h(case)f(of)h(a\016ne)f(elemen)n(ts,)h(i.)f(e.)h -(for)f(constan)n(t)g(jacobian,)g(w)n(e)g(ha)n(v)n(e)1441 -3634 y Fx(@)5 b(v)1530 3646 y Fp(2)p 1437 3671 134 4 -v 1437 3747 a Fx(@)g(x)1533 3759 y Fp(1)1603 3690 y Fz(=)1706 -3634 y Fx(@)10 b Fz(^)-47 b Fx(x)1802 3646 y Fq(i)p 1701 -3671 V 1701 3747 a Fx(@)5 b(x)1797 3759 y Fp(2)1844 3690 -y Fz(\()p Fx(x)p Fz(\))2022 3634 y Fx(@)p 1980 3671 V -1980 3747 a(@)g(x)2076 3759 y Fp(1)2124 3690 y Fz(^)-43 -b Fx(v)p 2123 3703 44 4 v 2167 3711 a Fq(i)2194 3690 -y Fz(\()p Fx(F)2291 3656 y Fh(\000)p Fp(1)2381 3690 y -Fz(\()p Fx(x)p Fz(\)\))1441 3850 y Fx(@)5 b(v)1530 3862 -y Fp(1)p 1437 3887 134 4 v 1437 3963 a Fx(@)g(x)1533 -3975 y Fp(2)1603 3906 y Fz(=)1706 3850 y Fx(@)10 b Fz(^)-47 -b Fx(x)1802 3862 y Fq(i)p 1701 3887 V 1701 3963 a Fx(@)5 -b(x)1797 3975 y Fp(1)1844 3906 y Fz(\()p Fx(x)p Fz(\))2022 -3850 y Fx(@)p 1980 3887 V 1980 3963 a(@)g(x)2076 3975 -y Fp(2)2124 3906 y Fz(^)-43 b Fx(v)p 2123 3919 44 4 v -2167 3927 a Fq(i)2194 3906 y Fz(\()p Fx(F)2291 3872 y -Fh(\000)p Fp(1)2381 3906 y Fz(\()p Fx(x)p Fz(\)\))14 -b Fx(;)28 4106 y Fz(whereas)26 b(for)h(non-constan)n(t)f(jacobian)h(w)n -(e)g(ha)n(v)n(e)983 4346 y Fx(@)5 b(v)1072 4358 y Fp(2)p -979 4383 134 4 v 979 4459 a Fx(@)g(x)1075 4471 y Fp(1)1146 -4402 y Fz(=)1296 4346 y Fx(@)1345 4316 y Fp(2)1387 4346 -y Fz(^)-47 b Fx(x)1429 4358 y Fq(i)p 1243 4383 267 4 -v 1243 4459 a Fx(@)5 b(x)1339 4471 y Fp(1)1377 4459 y -Fx(@)g(x)1473 4471 y Fp(2)1520 4402 y Fz(\()p Fx(x)p -Fz(\))16 b(^)-44 b Fx(v)p 1645 4415 44 4 v 1689 4423 -a Fq(i)1717 4402 y Fz(\()p Fx(F)1814 4368 y Fh(\000)p -Fp(1)1903 4402 y Fz(\()p Fx(x)p Fz(\)\))20 b(+)2163 4346 -y Fx(@)10 b Fz(^)-47 b Fx(x)2259 4358 y Fq(i)p 2159 4383 -134 4 v 2159 4459 a Fx(@)5 b(x)2255 4471 y Fp(2)2302 -4402 y Fz(\()p Fx(x)p Fz(\))2480 4346 y Fx(@)p 2438 4383 -V 2438 4459 a(@)g(x)2534 4471 y Fp(1)2582 4402 y Fz(^)-43 -b Fx(v)p 2581 4415 44 4 v 2624 4423 a Fq(i)2652 4402 -y Fz(\()p Fx(F)2749 4368 y Fh(\000)p Fp(1)2838 4402 y -Fz(\()p Fx(x)p Fz(\)\))983 4572 y Fx(@)5 b(v)1072 4584 -y Fp(1)p 979 4609 134 4 v 979 4685 a Fx(@)g(x)1075 4697 -y Fp(2)1146 4628 y Fz(=)1296 4572 y Fx(@)1345 4542 y -Fp(2)1387 4572 y Fz(^)-47 b Fx(x)1429 4584 y Fq(i)p 1243 -4609 267 4 v 1243 4685 a Fx(@)5 b(x)1339 4697 y Fp(1)1377 -4685 y Fx(@)g(x)1473 4697 y Fp(2)1520 4628 y Fz(\()p -Fx(x)p Fz(\))16 b(^)-44 b Fx(v)p 1645 4641 44 4 v 1689 -4649 a Fq(i)1717 4628 y Fz(\()p Fx(F)1814 4594 y Fh(\000)p -Fp(1)1903 4628 y Fz(\()p Fx(x)p Fz(\)\))20 b(+)2163 4572 -y Fx(@)10 b Fz(^)-47 b Fx(x)2259 4584 y Fq(i)p 2159 4609 -134 4 v 2159 4685 a Fx(@)5 b(x)2255 4697 y Fp(1)2302 -4628 y Fz(\()p Fx(x)p Fz(\))2480 4572 y Fx(@)p 2438 4609 -V 2438 4685 a(@)g(x)2534 4697 y Fp(2)2582 4628 y Fz(^)-43 -b Fx(v)p 2581 4641 44 4 v 2624 4649 a Fq(i)2652 4628 -y Fz(\()p Fx(F)2749 4594 y Fh(\000)p Fp(1)2838 4628 y -Fz(\()p Fx(x)p Fz(\)\))14 b Fx(:)28 4828 y Fz(W)-7 b(e)28 -b(see)f(that)h(in)g Fm(b)l(oth)34 b Fz(cases)26 b(w)n(e)i(ha)n(v)n(e) -690 5014 y(curl)14 b Fx(v)p 843 5027 V 26 w Fz(=)1010 -4958 y Fx(@)5 b(v)1099 4970 y Fp(2)p 1007 4995 134 4 -v 1007 5071 a Fx(@)g(x)1103 5083 y Fp(1)1168 5014 y Fs(\000)1265 -4958 y Fx(@)g(v)1354 4970 y Fp(1)p 1261 4995 V 1261 5071 -a Fx(@)g(x)1357 5083 y Fp(2)1428 5014 y Fz(=)1530 4958 -y Fx(@)10 b Fz(^)-47 b Fx(x)1626 4970 y Fq(i)p 1525 4995 -V 1525 5071 a Fx(@)5 b(x)1621 5083 y Fp(2)1669 5014 y -Fz(\()p Fx(x)p Fz(\))1847 4958 y Fx(@)p 1804 4995 V 1804 -5071 a(@)g(x)1900 5083 y Fp(1)1949 5014 y Fz(^)-43 b -Fx(v)p 1948 5027 44 4 v 1991 5035 a Fq(i)2019 5014 y -Fz(\()p Fx(F)2116 4980 y Fh(\000)p Fp(1)2205 5014 y Fz(\()p -Fx(x)p Fz(\)\))20 b Fs(\000)2466 4958 y Fx(@)10 b Fz(^)-47 -b Fx(x)2562 4970 y Fq(i)p 2461 4995 134 4 v 2461 5071 -a Fx(@)5 b(x)2557 5083 y Fp(1)2604 5014 y Fz(\()p Fx(x)p -Fz(\))2782 4958 y Fx(@)p 2740 4995 V 2740 5071 a(@)g(x)2836 -5083 y Fp(2)2884 5014 y Fz(^)-43 b Fx(v)p 2883 5027 44 -4 v 2926 5035 a Fq(i)2954 5014 y Fz(\()p Fx(F)3051 4980 -y Fh(\000)p Fp(1)3140 5014 y Fz(\()p Fx(x)p Fz(\)\))28 -5214 y(that)33 b(is,)i(the)e(second)g(deriv)-5 b(ativ)n(es)32 -b(cancel)h(out)g(in)g(the)h(expression)e(for)h(the)g(curl)g(and)g(the)h -(curl)f(in)g(the)h(non-a\016ne)e(case)28 5314 y(transforms)26 -b(equally)h(to)g(the)h(curl)f(in)h(the)g(a\016ne)g(case.)3897 -5469 y Fg(\003)1949 5719 y Fk(12)p eop -%%Page: 13 13 -13 12 bop 28 213 a Fo(2.3.2)105 b(T)-9 b(rilinear)35 -b(elemen)m(ts)f(in)h(3d)28 366 y Fz(The)27 b(p)r(olynomial)g(spaces)g -Fs(P)947 336 y Fq(k)1015 366 y Fz(and)g(the)h(dofs)g(remain)f(the)h -(same)f(as)g(in)g(the)h(case)f(of)h(a\016ne)f(hexahedral)f(elemen)n -(ts.)28 465 y(The)h(v)n(ector)g(\014eld)g(on)h(a)f(genereal)f(elemen)n -(t)i(is)f(de\014ned)h(b)n(y)f(the)h(Piola)f(transformation)f(\(9\).)28 -565 y(The)h(problem)g(of)g(the)h(non-v)-5 b(anishing)26 -b(second)h(deriv)-5 b(ativ)n(es)26 b(of)h(the)h(jacobian)e -Fx(D)r Fz(\()p Fx(F)2701 530 y Fh(\000)p Fp(1)2689 589 -y Fq(C)2791 565 y Fz(\)\()p Fx(x)p Fz(\))j(arises)c(again,)i(and)g(w)n -(e)g(cannot)28 665 y(generalize)f(the)i(results)f(from)g(the)h(a\016ne) -f(case)g(straigh)n(t)f(a)n(w)n(a)n(y)-7 b(.)28 764 y(But)30 -b(analogously)e(to)i(the)g(2d)g(case,)g(one)g(can)g(c)n(hec)n(k)f(that) -i(in)f(in)g(the)h(transformation)e(rule)g(for)h(expressions)3597 -730 y Fq(@)t(v)3669 738 y Ff(i)p 3592 745 108 4 v 3592 -793 a Fq(@)t(x)3669 801 y Ff(j)3730 764 y Fs(\000)3825 -722 y Fq(@)t(v)3897 730 y Ff(j)p 3825 745 104 4 v 3825 -793 a Fq(@)t(x)3902 801 y Ff(i)3938 764 y Fz(,)28 875 -y Fx(i;)14 b(j)27 b Fz(=)c(1)p Fx(;)14 b Fz(2)p Fx(;)g -Fz(3,)21 b(whic)n(h)f(de\014ne)i(the)f(curl-op)r(erator,)f(the)h(terms) -g(con)n(taining)f(second)h(deriv)-5 b(ativ)n(es)19 b(v)-5 -b(anish.)35 b(W)-7 b(e)21 b(ha)n(v)n(e)f(therefore)28 -975 y(again)26 b(the)i(transformation)e(rule)h(\(16\))g(for)g(the)h(sk) -n(ew)f(matrix)g(Curl)14 b Fx(v)26 b Fz(=)d Fx(D)r(v)2482 -945 y Fq(T)2553 975 y Fs(\000)18 b Fx(D)r(v)s Fz(:)391 -1155 y(Curl)13 b Fx(v)s Fz(\()p Fx(x)p Fz(\))25 b(=)d(\(\()916 -1134 y(^)896 1155 y Fx(D)s(F)1033 1119 y Fh(\000)p Fq(T)1021 -1179 y(C)1158 1133 y Fl(d)1137 1155 y Fz(Curl)17 b(^)-45 -b Fx(v)1389 1134 y Fz(^)1370 1155 y Fx(D)r(F)1506 1119 -y Fh(\000)p Fp(1)1494 1179 y Fq(C)1595 1155 y Fz(\))18 -b Fs(\016)g Fx(F)1770 1119 y Fh(\000)p Fp(1)1758 1179 -y Fq(C)1859 1155 y Fz(\)\()p Fx(x)p Fz(\))25 b(=)d(\()p -Fx(D)r(F)2282 1119 y Fh(\000)p Fp(1)2270 1179 y Fq(C)2372 -1155 y Fz(\))2404 1120 y Fq(T)2456 1155 y Fz(\()p Fx(x)p -Fz(\))14 b(\()2635 1133 y Fl(d)2613 1155 y Fz(Curl)k(^)-45 -b Fx(v)22 b Fs(\016)c Fx(F)2977 1119 y Fh(\000)p Fp(1)2965 -1179 y Fq(C)3066 1155 y Fz(\)\()p Fx(x)p Fz(\))c Fx(D)r(F)3359 -1119 y Fh(\000)p Fp(1)3347 1179 y Fq(C)3449 1155 y Fz(\()p -Fx(x)p Fz(\))g Fx(:)28 1321 y Fz(It)35 b(follo)n(ws)e(that)i(the)g -(follo)n(wing)f(prop)r(osition)g(can)g(b)r(e)h(pro)n(v)n(ed)e -(analogously)g(to)h(the)h(case)f(of)h(a\016ne)f(elemen)n(ts)h -(\(replace)28 1434 y(there)27 b Fx(B)303 1446 y Fq(C)386 -1434 y Fz(b)n(y)521 1413 y(^)502 1434 y Fx(D)r(F)626 -1446 y Fq(C)682 1434 y Fz(\()709 1408 y(^)714 1434 y(\()q -Fx(x)p Fz(\)\)\).)28 1592 y Fn(Pr)n(oposition)g Fz(6)45 -b Fm(L)l(et)33 b(the)g(ve)l(ctor)h(\014eld)g Fx(v)p 1364 -1605 44 4 v 3 w Fz(\()p Fx(x)p Fz(\))g Fm(on)g(a)f(triline)l(ar)i -(image)f Fx(C)i Fz(=)29 b Fx(F)2564 1604 y Fq(C)2620 -1592 y Fz(\()2671 1571 y(^)2652 1592 y Fx(C)7 b Fz(\))34 -b Fm(b)l(e)f(de\014ne)l(d)h(by)g(the)f(Piola)i(tr)l(ansfor-)28 -1692 y(mation)30 b(of)g(a)g(r)l(efer)l(enc)l(e)h(\014eld)g -Fz(^)-43 b Fx(v)p 1008 1705 V 3 w Fz(\()5 b(^)-47 b Fx(x)q -Fz(\))30 b Fm(on)1330 1671 y Fz(^)1312 1692 y Fx(C)6 -b Fm(.)38 b(The)31 b(tr)l(ansformation)g(formula)f(for)h(the)f(curl)g -(then)f(r)l(e)l(ads)1279 1908 y Fz(curl)13 b Fx(v)p 1431 -1921 V 27 w Fz(=)1585 1791 y Fl(\022)1790 1852 y Fz(1)p -1656 1889 310 4 v 1656 1977 a(det)1805 1956 y(^)1786 -1977 y Fx(D)r(F)1910 1989 y Fq(C)2009 1887 y Fz(^)1990 -1908 y Fx(D)r(F)2114 1920 y Fq(C)2193 1886 y Fl(d)2184 -1908 y Fz(curl)h(^)-43 b Fx(v)p 2336 1921 44 4 v 2379 -1791 a Fl(\023)2459 1908 y Fs(\016)18 b Fx(F)2584 1872 -y Fh(\000)p Fp(1)2572 1932 y Fq(C)2687 1908 y Fx(:)28 -2176 y Fv(2.4)112 b Fo(Construction)35 b(of)g(global)h(shap)s(e)e -(functions)28 2329 y Fz(In)25 b(the)g(previous)f(sections)g(w)n(e)h(ha) -n(v)n(e)e(in)n(tro)r(duced)i(function)h(spaces)e(and)g(degrees)g(of)h -(freedom,)g(whic)n(h,)g(together)f(with)i(the)28 2428 -y(Piola)g(transformation,)h(will)h(allo)n(w)f(us)h(to)g(de\014ne)h(an)e -Fx(H)7 b Fz(\(curl;)14 b(\012\)-conforming)27 b(\014nite)i(elemen)n(t)f -(metho)r(d.)39 b(Indeed,)28 b(in)h([8)o(],)28 2528 y(N)n(\023)-39 -b(ed)n(\023)g(elec)24 b(sho)n(ws)h(the)i(in)n(v)-5 b(ariance)25 -b(of)h(the)h(spaces)e Fs(R)1661 2498 y Fq(k)1729 2528 -y Fz(and)h Fs(Q)1957 2498 y Fq(k)2024 2528 y Fz(under)g(Piola)f -(transformation)g(of)h(the)h(v)n(ector)e(\014eld,)i(as)f(w)n(ell)28 -2628 y(as)e(the)h(unisolv)n(ence)f(of)h(the)g(set)g(of)g(degrees)e(of)i -(freedom)g Fs(A)g Fz(from)g(sections)f(2.1.2)f(and)i(2.2.2)f(\(for)g -(details,)i(see)e([8],)h(Section)28 2727 y(1.2,)30 b(Theorem)g(1)g(and) -h(Section)g(2,)g(Theorem)f(5\).)46 b(This)30 b(leads)g(to)h(the)g(fact) -g(that)g Fx(H)7 b Fz(\(curl;)14 b(\012\)-conforming)29 -b(global)h(shap)r(e)28 2827 y(functions)24 b(can)f(b)r(e)h(de\014ned)g -(b)n(y)f(mapping)g(elemen)n(t)n(wise)g(the)h(reference)f(shap)r(e)h -(functions)g(with)g(the)g(Piola)e(transformation)28 2927 -y Fs(P)86 2939 y Fq(K)149 2927 y Fz(.)42 b(Ho)n(w)n(ev)n(er,)28 -b(w)n(e)h(m)n(ust)h(pa)n(y)e(some)h(care)f(to)h(the)h(orien)n(tation)e -(of)h(an)g(in)n(terface)g(on)g(whic)n(h)g(the)h(momen)n(ts)f -(de\014ning)g(the)28 3026 y(degrees)22 b(of)i(freedom)f(are)g(based.)36 -b(F)-7 b(or)23 b(the)h(2d)g(case,)g(w)n(e)f(will)h(illustrate)g(in)g -(this)g(section)g(ho)n(w)f(w)n(e)g(m)n(ust)h(tak)n(e)g(in)n(to)f -(accoun)n(t)28 3126 y(the)28 b Fm(orientation)j(of)g(an)f(e)l(dge)35 -b Fz(in)28 b(the)h(de\014nition)f(of)g(the)g(resp)r(ectiv)n(e)f(elemen) -n(t)h(edge)g(shap)r(e)g(function,)g(in)g(order)f(to)h(get)g(an)28 -3225 y Fx(H)7 b Fz(\(curl)o(;)14 b(\012\)-conforming)27 -b(\014nite)h(elemen)n(t)f(space)g(of)h(global)e(shap)r(e)i(functions.) -28 3425 y(Let)22 b Fx(K)29 b Fz(=)23 b Fx(F)12 b Fz(\()478 -3404 y(^)456 3425 y Fx(K)5 b Fz(\))23 b(b)r(e)g(an)g(a\016ne)f(or)g -(bilinear)g(image)g(of)h(a)f(reference)g(elemen)n(t,)i -Fx(e)e Fz(one)h(of)f(its)h(edges)f(and)k(^)-45 b Fx(e)22 -b Fz(the)h(corresp)r(onding)28 3524 y(edge)k(on)g(the)h(reference)f -(elemen)n(t.)28 3624 y(Let)20 b(further)h([0)p Fx(;)14 -b Fs(j)p Fx(e)p Fs(j)p Fz(])22 b Fs(3)i Fx(s)f Fs(7!)g -Fx(x)p 921 3637 48 4 v Fz(\()p Fx(s)p Fz(\))h Fs(2)f -Fx(e)d Fz(and)h([0)p Fx(;)14 b Fs(j)s Fz(^)-45 b Fx(e)o -Fs(j)p Fz(])23 b Fs(3)k Fz(^)-45 b Fx(s)23 b Fs(7!)j -Fz(^)-45 b Fx(x)p 1866 3637 V Fz(\()s(^)g Fx(s)p Fz(\))24 -b Fs(2)i Fz(^)-45 b Fx(e)20 b Fz(b)r(e)h(parametrizations)e(with)i -(resp)r(ect)f(to)h(the)g(arc)e(length)28 3724 y(of)25 -b Fx(e)h Fz(and)i(^)-45 b Fx(e)26 b Fz(resp)r(ectiv)n(ely)-7 -b(.)35 b(W)-7 b(e)26 b(can)f(assume)g(that)h(these)g(parametrizations)e -(endo)n(w)h(the)h(edges)f(with)h(a)f(coun)n(terclo)r(c)n(kwise)28 -3823 y(orien)n(tation.)35 b(Then,)28 b(the)g(unit)g(tangen)n(t)f(v)n -(ectors)f Fx(t)p 1624 3836 30 4 v 28 w Fz(and)1838 3808 -y(^)1843 3823 y Fx(t)p 1843 3836 V 28 w Fz(are)h(giv)n(en)f(b)n(y)2382 -3783 y Fq(dx)p 2417 3794 38 3 v 2382 3804 73 4 v 2385 -3852 a(ds)2492 3823 y Fz(and)2663 3783 y Fq(d)r Fp(^)-35 -b Fq(x)p 2698 3794 38 3 v 2663 3804 73 4 v 2666 3852 -a(d)s Fp(^)f Fq(s)2745 3823 y Fz(.)28 4003 y Fn(Lemma)27 -b Fz(1)45 b Fm(L)l(et)27 b Fz(^)-42 b Fx(v)p 561 4016 -44 4 v 3 w Fz(\()5 b(^)-47 b Fx(x)p Fz(\))28 b Fm(b)l(e)e(a)i(ve)l -(ctor)f(\014eld)g(on)g(the)g(r)l(efer)l(enc)l(e)g(element)g(and)g -Fx(v)p 2389 4016 V 3 w Fz(\()p Fx(x)p Fz(\))h Fm(b)l(e)f(the)g(c)l(orr) -l(esp)l(onding)h(ve)l(ctor)f(\014eld)g(on)g Fx(K)6 b -Fm(,)28 4102 y(de\014ne)l(d)30 b(by)g(the)g(Piola)h(tr)l(ansformation)g -(\(9\).)39 b(It)29 b(then)h(holds)1703 4316 y Fx(v)p -1703 4329 V 21 w Fs(\001)19 b Fx(t)p 1806 4329 30 4 v -23 w Fz(=)1957 4260 y Fs(j)s Fz(^)-45 b Fx(e)o Fs(j)p -1957 4297 85 4 v 1957 4373 a(j)p Fx(e)p Fs(j)2051 4316 -y Fz(\()q(^)i Fx(v)p 2083 4329 44 4 v 22 w Fs(\001)2181 -4301 y Fz(^)2187 4316 y Fx(t)p 2187 4329 30 4 v Fz(\))14 -b Fx(;)1528 b Fz(\(25\))28 4531 y Fm(wher)l(e)30 b Fs(j)s -Fz(^)-45 b Fx(e)p Fs(j)29 b Fm(and)i Fs(j)p Fx(e)p Fs(j)e -Fm(denote)h(the)g(length)g(of)h(the)f(e)l(dges)j Fz(^)-45 -b Fx(e)30 b Fm(and)g Fx(e)p Fm(.)28 4711 y Fn(Pr)n(oof.)40 -b Fz(With)1288 4833 y(\()p Fx(v)p 1320 4846 44 4 v 3 -w Fz(\()p Fx(x)p Fz(\)\))1506 4845 y Fq(i)1558 4833 y -Fz(=)23 b(\()p Fx(D)r Fz(\()p Fx(F)1846 4799 y Fh(\000)p -Fp(1)1936 4833 y Fz(\))1968 4799 y Fq(T)2021 4833 y Fz(^)-43 -b Fx(v)p 2020 4846 V 3 w Fz(\))2095 4845 y Fq(i)2146 -4833 y Fz(=)2244 4777 y Fx(@)10 b Fz(^)-47 b Fx(x)2340 -4789 y Fq(j)p 2244 4814 132 4 v 2248 4890 a Fx(@)5 b(x)2344 -4902 y Fq(i)2385 4833 y Fz(\()p Fx(x)p Fz(\))q(^)-43 -b Fx(v)p 2496 4846 44 4 v 2540 4854 a Fq(j)2575 4833 -y Fz(\()5 b(^)-47 b Fx(x)q Fz(\))28 5013 y(and)32 b(^)-47 -b Fx(x)236 5025 y Fq(j)294 5013 y Fz(=)28 b(^)-47 b Fx(x)429 -5025 y Fq(j)465 5013 y Fz(\()p Fx(x)p 497 5026 48 4 v -Fz(\()p Fx(s)p Fz(\)\))29 b(and)j(^)-47 b Fx(x)916 5025 -y Fq(j)975 5013 y Fz(=)28 b(^)-48 b Fx(x)1109 5025 y -Fq(j)1145 5013 y Fz(\()s(^)j Fx(s)p Fz(\()p Fx(s)p Fz(\)\))28 -b(on)g(the)g(edges,)f(w)n(e)g(ha)n(v)n(e)812 5232 y Fx(v)p -812 5245 44 4 v 21 w Fs(\001)19 b Fx(t)p 915 5245 30 -4 v 23 w Fz(=)k Fx(v)p 1056 5245 44 4 v 21 w Fs(\001)1169 -5176 y Fx(dx)p 1212 5189 48 4 v 1169 5213 91 4 v 1173 -5289 a(ds)1292 5232 y Fz(=)1380 5115 y Fl(\022)1442 5232 -y Fz(^)-43 b Fx(v)p 1441 5245 44 4 v 1484 5253 a Fq(j)1529 -5176 y Fx(@)10 b Fz(^)-47 b Fx(x)1625 5188 y Fq(j)p 1529 -5213 132 4 v 1533 5289 a Fx(@)5 b(x)1629 5301 y Fq(i)1670 -5115 y Fl(\023)1745 5232 y Fz(\()p Fx(x)p Fz(\))1866 -5176 y Fx(dx)1956 5188 y Fq(i)p 1867 5213 119 4 v 1885 -5289 a Fx(ds)2019 5232 y Fz(=)23 b(^)-43 b Fx(v)p 2106 -5245 44 4 v 2150 5253 a Fq(j)2194 5176 y Fx(d)5 b Fz(^)-47 -b Fx(x)2284 5188 y Fq(j)p 2194 5213 126 4 v 2216 5289 -a Fx(ds)2353 5232 y Fz(=)24 b(^)-43 b Fx(v)p 2441 5245 -44 4 v 2484 5253 a Fq(j)2529 5176 y Fx(d)5 b Fz(^)-47 -b Fx(x)2619 5188 y Fq(j)p 2529 5213 126 4 v 2551 5289 -a Fx(d)s Fz(^)i Fx(s)2675 5176 y(d)s Fz(^)g Fx(s)p 2675 -5213 83 4 v 2675 5289 a(ds)2790 5232 y Fz(=)22 b(\()q(^)-43 -b Fx(v)p 2909 5245 44 4 v 22 w Fs(\001)3007 5217 y Fz(^)3013 -5232 y Fx(t)p 3013 5245 30 4 v Fz(\))3085 5176 y Fx(d)s -Fz(^)e Fx(s)p 3085 5213 83 4 v 3085 5289 a(ds)28 5469 -y Fz(and)27 b(with)388 5437 y Fq(d)s Fp(^)-36 b Fq(s)p -388 5451 66 4 v 388 5498 a(ds)487 5469 y Fz(=)585 5429 -y Fh(j)s Fp(^)g Fq(e)p Fh(j)p 585 5450 71 4 v 585 5498 -a(j)p Fq(e)p Fh(j)693 5469 y Fz(the)28 b(lemma)g(follo)n(ws.)1949 -5719 y Fk(13)p eop -%%Page: 14 14 -14 13 bop 3897 205 a Fg(\003)28 380 y Fz(As)27 b(a)g(consequence,)g(w)n -(e)g(ha)n(v)n(e)28 579 y Fn(Pr)n(oposition)g Fz(7)g(\(In)n(v)-5 -b(ariance)26 b(of)i(the)g(edge)f(dofs\))46 b Fm(L)l(et)27 -b(the)h(ve)l(ctor)g(\014eld)h Fx(v)p 2406 592 44 4 v -3 w Fz(\()p Fx(x)p Fz(\))g Fm(on)f Fx(K)34 b Fm(b)l(e)28 -b(de\014ne)l(d)g(by)g(the)g(Piola)i(tr)l(ansfor-)28 679 -y(mation)i(\(9\))g(of)h(a)g(r)l(efer)l(enc)l(e)f(ve)l(ctor)g(\014eld)i -Fz(^)-43 b Fx(v)p 1409 692 V 3 w Fz(\()5 b(^)-47 b Fx(x)q -Fz(\))32 b Fm(on)1739 658 y Fz(^)1717 679 y Fx(K)5 b -Fm(.)46 b(Then,)34 b(the)e(functionals)g(\()13 b Fz(edge)30 -b(dofs)p Fm(\))i Fx(\013)3179 649 y Fp([)p Fq(K)t Fp(])3281 -679 y Fz(\()p Fx(u)p 3313 692 48 4 v Fz(\))27 b(:=)3535 -612 y Fl(R)3574 708 y Fq(e)3610 679 y Fz(\()p Fx(v)p -3642 692 44 4 v 24 w Fs(\001)20 b Fx(t)p 3749 692 30 -4 v Fz(\))p Fx(')14 b(ds)28 778 y Fm(ar)l(e)30 b(invariant)g(in)g(the)g -(sense)g(of)315 999 y Fx(\013)368 965 y Fp([)p Fq(K)t -Fp(])470 999 y Fz(\()p Fx(u)p 502 1012 48 4 v -1 w Fz(\))24 -b(=)692 886 y Fl(Z)739 1074 y Fq(e)774 999 y Fz(\()p -Fx(v)p 806 1012 44 4 v 22 w Fs(\001)19 b Fx(t)p 910 1012 -30 4 v Fz(\))p Fx(')14 b(ds)23 b Fz(=)1233 886 y Fl(Z)1282 -1074 y Fp(^)-36 b Fq(e)1315 999 y Fz(\()q(^)-43 b Fx(v)p -1347 1012 44 4 v 22 w Fs(\001)1445 983 y Fz(^)1450 999 -y Fx(t)p 1450 1012 30 4 v Fz(\))13 b(^)-55 b Fx(')15 -b(d)s Fz(^)-45 b Fx(s)37 b Fz(=)30 b(^)-50 b Fx(\013)q -Fz(\()s(^)-45 b Fx(u)p 1873 1012 48 4 v -1 w Fz(\))14 -b Fx(;)184 b Fs(8)26 b Fz(^)-54 b Fx(')22 b Fs(2)i Fr(P)2441 -1011 y Fq(k)q Fh(\000)p Fp(1)2565 999 y Fz(\()s(^)-45 -b Fx(e)p Fz(\))14 b Fx(;)99 b(')24 b Fz(=)36 b(^)-56 -b Fx(')19 b Fs(\016)f Fx(F)3167 965 y Fh(\000)p Fp(1)3279 -999 y Fs(2)24 b Fr(P)3410 1011 y Fq(k)q Fh(\000)p Fp(1)3534 -999 y Fz(\()p Fx(e)p Fz(\))14 b Fx(:)28 1261 y Fz(Let)28 -b(no)n(w)g Fx(K)422 1273 y Fh(\000)503 1261 y Fz(=)c -Fx(F)645 1273 y Fh(\000)702 1261 y Fz(\()756 1240 y(^)734 -1261 y Fx(K)5 b Fz(\))29 b(and)g Fx(K)1105 1273 y Fp(+)1184 -1261 y Fz(=)c Fx(F)1327 1273 y Fp(+)1382 1261 y Fz(\()1437 -1240 y(^)1414 1261 y Fx(K)6 b Fz(\))29 b(b)r(e)g(t)n(w)n(o)f(neigh)n(b) -r(ouring)g(triangles)f(with)i(common)f(edge)h Fx(e)p -Fz(.)40 b(Let)28 b Fx(N)p 3627 1274 76 4 v 38 w Fz(b)r(e)h(the)28 -1361 y(global)f(edge)g(shap)r(e)h(function)h(that)f('liv)n(es')g(on)g -Fx(e)p Fz(.)41 b(By)29 b Fx(N)p 1792 1374 V 1868 1381 -a Fh(\000)1953 1361 y Fz(and)g Fx(N)p 2116 1374 V 2192 -1381 a Fp(+)2276 1361 y Fz(w)n(e)g(denote)g(the)h(restriction)e(of)h -Fx(N)p 3309 1374 V 38 w Fz(to)g Fx(K)3588 1373 y Fp(+)3672 -1361 y Fz(and)g Fx(K)3906 1373 y Fh(\000)28 1460 y Fz(resp)r(ectiv)n -(ely)-7 b(.)50 b(Let)33 b Fx(e)713 1472 y Fp(+)798 1460 -y Fz(=)e Fx(F)947 1472 y Fp(+)1003 1460 y Fz(\()s(^)-45 -b Fx(e)1074 1472 y Fq(i)1101 1460 y Fz(\))33 b(and)f -Fx(e)1371 1472 y Fh(\000)1458 1460 y Fz(=)f Fx(F)1607 -1472 y Fh(\000)1663 1460 y Fz(\()s(^)-45 b Fx(e)1734 -1472 y Fq(j)1769 1460 y Fz(\).)52 b(W)-7 b(e)32 b(write)h -Fx(t)p 2241 1473 30 4 v 21 x Fp(+)2358 1460 y Fz(for)f(the)h(tangen)n -(tial)e(unit)i(v)n(ector)e(to)i Fx(e)p Fz(,)g(orien)n(ted)28 -1560 y(coun)n(terclo)r(c)n(kwise)28 b(with)j(resp)r(ect)g(to)f -Fx(K)1318 1572 y Fp(+)1404 1560 y Fz(and)g Fx(t)p 1568 -1573 V 21 x Fh(\000)1682 1560 y Fz(=)e Fs(\000)p Fx(t)p -1840 1573 V 1869 1581 a Fp(+)1955 1560 y Fz(for)i(the)h(resp)r(ectiv)n -(e)f(from)g Fx(K)2890 1572 y Fh(\000)2946 1560 y Fz(.)46 -b(F)-7 b(or)30 b(line)h(in)n(tegrals)e(o)n(v)n(er)g(the)28 -1660 y(edge)d Fx(e)g Fz(w)n(e)g(write)613 1593 y Fl(R)652 -1689 y Fq(e)683 1697 y Fi(+)761 1660 y Fz(if)h(w)n(e)f(c)n(hose)g(the)g -(orien)n(tation)f(induced)i(b)n(y)f Fx(t)p 2160 1673 -V 20 x Fp(+)2272 1660 y Fz(and)2432 1593 y Fl(R)2472 -1689 y Fq(e)2503 1697 y Fe(\000)2583 1660 y Fz(for)g(the)h(orien)n -(tation)e(of)h Fx(e)g Fz(induced)h(b)n(y)f Fx(t)p 3852 -1673 V 20 x Fh(\000)3938 1660 y Fz(.)28 1775 y(In)c(order)f(to)h -(obtain)g(an)g Fx(H)7 b Fz(\(curl)o(;)14 b(\012\)-conforming)21 -b(metho)r(d,)j(prop)r(osition)e(1)f(tells)i(us)f(that)g(w)n(e)g(m)n -(ust)h(ensure)e(the)i(con)n(tin)n(uit)n(y)28 1874 y(of)k(the)h(tangen)n -(tial)f(comp)r(onen)n(ts)g(of)g(the)h(global)f(shap)r(e)g(functions,)h -(that)g(is)1572 2057 y Fx(N)p 1572 2070 76 4 v 1648 2078 -a Fp(+)1722 2057 y Fs(\001)18 b Fx(t)p 1763 2070 30 4 -v 21 x Fp(+)1867 2057 y Fz(+)g Fx(N)p 1950 2070 76 4 -v 2025 2078 a Fh(\000)2100 2057 y Fs(\001)g Fx(t)p 2141 -2070 30 4 v 21 x Fh(\000)2251 2057 y Fz(=)k(0)14 b Fx(:)1397 -b Fz(\(26\))28 2240 y(The)30 b(follo)n(wing)f(lemma)i(will)f(justify)h -(the)g(c)n(hoice)f(of)g(the)h(momen)n(ts)f(describing)f(the)i(edge)f -(dofs.)45 b(A)30 b(consequence)g(of)g(the)28 2339 y(lemma)e(will)h(b)r -(e,)g(that)g(the)g(matc)n(hing)f(of)h(the)g(lo)r(cal)f(edge)g(dofs)g -Fx(\013)2133 2309 y Fp([)p Fq(K)2208 2317 y Fi(+)2255 -2309 y Fp(])2307 2339 y Fz(and)g Fx(\013)2522 2309 y -Fp([)p Fq(K)2597 2317 y Fe(\000)2646 2309 y Fp(])2698 -2339 y Fz(guaran)n(tees)e(the)j(p)r(oin)n(t)n(wise)g(condition)28 -2439 y(\(26\).)28 2613 y Fn(Lemma)e Fz(2)45 b Fm(L)l(et)584 -2592 y Fz(^)562 2613 y Fx(K)33 b Fm(denote)28 b(the)g(r)l(efer)l(enc)l -(e)g(triangle)h(and)i Fz(^)-45 b Fx(e)28 b Fm(one)g(of)g(its)g(e)l -(dges,)i(p)l(ar)l(ametrize)l(d)f(by)i Fz(^)-45 b Fx(e)23 -b Fs(3)28 b Fz(^)-47 b Fx(x)q Fz(\()p Fx(s)p Fz(\))23 -b(:=)g Fx(a)p 3565 2626 44 4 v 14 w Fz(+)14 b Fx(s)3749 -2598 y Fz(^)3755 2613 y Fx(t)p 3755 2626 30 4 v Fm(.)38 -b(L)l(et)28 2713 y Fz(^)-42 b Fx(p)p 28 2742 42 4 v 22 -w Fs(2)24 b(S)227 2683 y Fq(k)268 2713 y Fm(,)30 b Fs(S)379 -2683 y Fq(k)450 2713 y Fm(as)g(de\014ne)l(d)h(in)e(\(4\).)39 -b(It)30 b(then)f(holds)1658 2910 y Fz(\(^)-42 b Fx(p)p -1690 2939 V 18 w Fs(\001)1786 2895 y Fz(^)1792 2910 y -Fx(t)p 1792 2923 30 4 v Fz(\))p Fs(j)1880 2922 y Fp(^)-36 -b Fq(e)1936 2910 y Fs(2)23 b Fr(P)2066 2922 y Fq(k)q -Fh(\000)p Fp(1)2191 2910 y Fz(\()s(^)-45 b Fx(e)p Fz(\))14 -b Fx(:)28 3093 y Fn(Pr)n(oof.)704 3251 y Fz(^)-42 b Fx(p)p -704 3280 42 4 v 23 w Fs(2)23 b(S)903 3216 y Fq(k)1051 -3251 y Fz(=)-14 b Fs(\))105 b Fz(for)28 b Fx(i)22 b Fz(=)h(1)p -Fx(;)14 b Fz(2)p Fx(;)g Fz(3)21 b(:)113 b(^)-49 b Fx(p)1949 -3263 y Fq(i)1977 3251 y Fz(\()5 b(^)-47 b Fx(x)q Fz(\))23 -b(=)2240 3147 y Fp(3)2204 3172 y Fl(Y)2200 3348 y Fq(j)s -Fp(=1)2334 3251 y Fz(^)-48 b Fx(x)2375 3206 y Fq(k)2410 -3214 y Ff(ij)2375 3274 y Fq(j)2482 3251 y Fx(;)97 b Fz(where)2899 -3147 y Fp(3)2856 3172 y Fl(X)2858 3348 y Fq(j)s Fp(=1)2990 -3251 y Fx(k)3033 3263 y Fq(ij)3114 3251 y Fz(=)23 b Fx(k)17 -b(:)28 3488 y Fz(Hence,)27 b(with)h(the)g(parametrization)e(of)31 -b(^)-45 b Fx(e)27 b Fz(b)n(y)33 b(^)-48 b Fx(x)q Fz(\()p -Fx(s)p Fz(\))1073 3750 y(^)f Fx(p)1108 3762 y Fq(i)1135 -3750 y Fz(\()5 b(^)-47 b Fx(x)q Fz(\()p Fx(s)p Fz(\)\))24 -b(=)1502 3646 y Fp(3)1466 3671 y Fl(Y)1461 3848 y Fq(j)s -Fp(=1)1576 3750 y Fz(\()p Fx(a)1652 3762 y Fq(j)1706 -3750 y Fz(+)18 b Fx(s)1843 3735 y Fz(^)1842 3750 y Fx(t)1872 -3762 y Fq(j)1907 3750 y Fz(\))1939 3716 y Fq(k)1974 3724 -y Ff(ij)2055 3750 y Fz(=)k Fx(s)2181 3716 y Fq(k)2291 -3646 y Fp(3)2254 3671 y Fl(Y)2250 3848 y Fq(j)s Fp(=1)2380 -3735 y Fz(^)2378 3750 y Fx(t)2408 3705 y Fq(k)2443 3713 -y Ff(ij)2408 3773 y Fq(j)2519 3750 y Fz(+)32 b(^)-56 -b Fx(')2656 3762 y Fq(k)q Fh(\000)p Fp(1)2783 3750 y -Fz(\()p Fx(s)p Fz(\))14 b Fx(;)28 4021 y Fz(with)41 b(^)-55 -b Fx(')271 4033 y Fq(k)q Fh(\000)p Fp(1)397 4021 y Fz(\()p -Fx(s)p Fz(\))23 b Fs(2)h Fr(P)654 4033 y Fq(k)q Fh(\000)p -Fp(1)778 4021 y Fz(\()s(^)-45 b Fx(e)p Fz(\),)28 b(and)1246 -4220 y(\(^)-42 b Fx(p)p 1278 4250 V 18 w Fs(\001)1374 -4205 y Fz(^)1380 4220 y Fx(t)p 1380 4233 30 4 v Fz(\))p -Fs(j)1468 4232 y Fp(^)-36 b Fq(e)1524 4220 y Fz(=)23 -b Fx(s)1651 4186 y Fq(k)1762 4117 y Fp(3)1719 4142 y -Fl(X)1725 4318 y Fq(i)p Fp(=1)1854 4205 y Fz(^)1853 4220 -y Fx(t)1883 4232 y Fq(i)1924 4054 y Fl(0)1924 4203 y(@)2038 -4117 y Fp(3)2001 4142 y Fl(Y)1997 4318 y Fq(j)s Fp(=1)2127 -4205 y Fz(^)2126 4220 y Fx(t)2156 4175 y Fq(k)2191 4183 -y Ff(ij)2156 4244 y Fq(j)2248 4054 y Fl(1)2248 4203 y(A)2339 -4220 y Fz(+)32 b(^)-56 b Fx(')2476 4232 y Fq(k)q Fh(\000)p -Fp(1)2602 4220 y Fz(\()p Fx(s)p Fz(\))14 b Fx(:)28 4480 -y Fz(W)-7 b(e)25 b(observ)n(e)e(that)i(the)g(co)r(e\016cien)n(t)g(of)f -Fx(s)1293 4450 y Fq(k)1359 4480 y Fz(is)g(exactly)h(^)-42 -b Fx(p)p 1723 4510 42 4 v -1 w Fz(\()1790 4465 y(^)1796 -4480 y Fx(t)p 1796 4493 30 4 v 1 w Fz(\))13 b Fs(\001)1902 -4465 y Fz(^)1908 4480 y Fx(t)p 1908 4493 V -1 w Fz(.)36 -b(By)25 b(the)g(de\014nition)g(of)g(the)g(space)f Fs(S)3137 -4450 y Fq(k)3178 4480 y Fz(,)i(this)f(expression)e(m)n(ust)28 -4580 y(v)-5 b(anish.)3897 4754 y Fg(\003)28 4953 y Fn(Remark)28 -b Fz(5)45 b Fm(In)29 b(the)g(c)l(ase)h(of)1013 4932 y -Fz(^)991 4953 y Fx(K)k Fm(b)l(eing)c(a)g(quadrilater)l(al,)h(we)f(have) -2217 4932 y Fz(^)2199 4953 y Fx(R)24 b Fz(=)f Fs(P)2439 -4923 y Fq(k)2479 4953 y Fm(.)39 b(By)30 b(the)f(de\014nition)h(of)g -Fs(P)3341 4923 y Fq(k)3411 4953 y Fm(we)f(se)l(e)g(imme)l(di-)28 -5053 y(ately)h(that)g(her)l(e)g(also)h Fz(\()q(^)-43 -b Fx(v)p 778 5066 44 4 v 22 w Fs(\001)876 5038 y Fz(^)881 -5053 y Fx(t)p 881 5066 30 4 v Fz(\))p Fs(j)969 5065 y -Fp(^)-36 b Fq(e)1025 5053 y Fs(2)24 b Fr(P)1156 5065 -y Fq(k)q Fh(\000)p Fp(1)1280 5053 y Fz(\()s(^)-45 b Fx(e)p -Fz(\))p Fm(.)28 5252 y Fz(The)25 b(next)h(prop)r(osition)e(tells)i(us)f -(ho)n(w)g(exactly)g(to)g(de\014ne)h(elemen)n(t)f(shap)r(e)h(functions)f -(on)h(a)f(mapp)r(ed)g(elemen)n(t)h Fx(K)31 b Fz(in)26 -b(order)28 5352 y(to)h(get)g Fx(H)7 b Fz(\(curl;)14 b -(\012\)-conforming)26 b(global)h(shap)r(e)g(functions.)1949 -5719 y Fk(14)p eop -%%Page: 15 15 -15 14 bop 28 212 a Fn(Pr)n(oposition)27 b Fz(8)45 b Fm(Condition)38 -b(\(26\))f(is)f(saties\014e)l(d,)j(if)f(we)e(de\014ne)h(the)f(element)g -(shap)l(e)i(functions)e Fx(N)p 3235 225 76 4 v 3311 232 -a Fp(+)3402 212 y Fm(and)h Fx(N)p 3570 225 V 3646 232 -a Fh(\000)3738 212 y Fm(by)g(the)28 311 y(Piola)31 b(tr)l(ansformation) -g(\(10\))f(and)g(take)g(into)g(ac)l(c)l(ount)g(the)f(orientation)i(of)g -(the)f(e)l(dge)g Fx(e)p Fm(:)786 494 y Fx(N)p 786 507 -V 862 515 a Fp(+)940 494 y Fz(:=)23 b Fs(P)1109 506 y -Fp(+)1164 494 y Fz(\()1213 473 y(^)1196 494 y Fx(N)p -1196 507 V 1272 515 a Fq(i)1299 494 y Fz(\))h(=)1462 -473 y(^)1442 494 y Fx(D)r(F)1578 458 y Fh(\000)p Fq(T)1566 -515 y Fp(+)1700 473 y Fz(^)1683 494 y Fx(N)p 1683 507 -V 1758 515 a Fq(i)1800 494 y Fx(;)183 b(N)p 2006 507 -V 2082 515 a Fh(\000)2161 494 y Fz(:=)23 b Fs(\000)14 -b(P)2409 506 y Fh(\000)2464 494 y Fz(\()2514 473 y(^)2496 -494 y Fx(N)p 2496 507 V 2572 515 a Fq(j)2607 494 y Fz(\))24 -b(=)e Fs(\000)2834 473 y Fz(^)2815 494 y Fx(D)r(F)2951 -458 y Fh(\000)p Fq(T)2939 515 y Fh(\000)3072 473 y Fz(^)3055 -494 y Fx(N)p 3055 507 V 3131 515 a Fq(j)3179 494 y Fx(:)612 -b Fz(\(27\))28 696 y Fn(Pr)n(oof.)40 b Fz(Let)526 675 -y(^)504 696 y Fx(K)33 b Fz(b)r(e)28 b(the)f(reference)g(elemen)n(t)h -(and)f Fx(K)33 b Fz(its)28 b(a\016ne)f(or)g(bilinear)g(image.)36 -b(Let)28 b Fx(v)p 2944 709 44 4 v 26 w Fz(:=)23 b Fs(P)3179 -708 y Fq(K)3242 696 y Fz(\()q(^)-43 b Fx(v)p 3274 709 -V 4 w Fz(\))28 b(b)r(e)g(a)f(v)n(ector)f(\014eld)28 796 -y(on)j Fx(K)6 b Fz(,)29 b(de\014ned)h(b)n(y)f(the)h(Piola)e -(transformation)f(of)j(a)f(reference)f(v)n(ector)g(\014eld)j(^)-43 -b Fx(v)p 2557 809 V 29 w Fs(2)2725 775 y Fz(^)2707 796 -y Fx(R)q Fz(.)42 b(Let)30 b Fx(e)f Fz(b)r(e)h(one)f(of)g(the)h(edges)e -(of)i Fx(K)28 895 y Fz(and)d Fx(t)p 189 908 30 4 v 28 -w Fz(the)h(tangen)n(t)f(according)f(to)h(con)n(v)n(en)n(tion)f(1.)28 -995 y(In)f(the)h(case)f(of)558 974 y(^)536 995 y Fx(K)31 -b Fz(b)r(eing)26 b(a)f(triangle,)g(w)n(e)h(ha)n(v)n(e)1581 -974 y(^)1563 995 y Fx(R)e Fz(=)e Fs(R)1807 965 y Fq(k)1848 -995 y Fz(.)37 b(By)25 b(the)h(de\014nition)g(of)f(the)h(space)f -Fs(R)3067 965 y Fq(k)3108 995 y Fz(,)h(lemma)g(2)f(and)g(1)h(w)n(e)f -(can)28 1095 y(conclude)i(that)h(\()p Fx(v)p 581 1108 -44 4 v 22 w Fs(\001)18 b Fx(t)p 684 1108 30 4 v Fz(\))p -Fs(j)769 1107 y Fq(e)828 1095 y Fs(2)24 b Fr(P)959 1107 -y Fq(k)q Fh(\000)p Fp(1)1083 1095 y Fz(\()p Fx(e)p Fz(\).)28 -1194 y(If)133 1173 y(^)111 1194 y Fx(K)33 b Fz(is)27 -b(a)g(quadrilateral,)f(the)i(previous)f(remark)f(and)h(1)g(also)g(tell) -h(us)f(that)h(\()p Fx(v)p 2498 1207 44 4 v 22 w Fs(\001)19 -b Fx(t)p 2602 1207 30 4 v Fz(\))p Fs(j)2687 1206 y Fq(e)2746 -1194 y Fs(2)k Fr(P)2876 1206 y Fq(k)q Fh(\000)p Fp(1)3001 -1194 y Fz(\()p Fx(e)p Fz(\).)28 1294 y(Hence)k(the)h(condition)1048 -1302 y Fl(Z)1094 1491 y Fq(e)1125 1499 y Fi(+)1190 1348 -y Fl(\000)1228 1415 y Fz(\()p Fx(N)p 1260 1428 76 4 v -1336 1436 a Fp(+)1410 1415 y Fs(\001)18 b Fx(t)p 1451 -1428 30 4 v 21 x Fp(+)1537 1415 y Fz(\))g(+)g(\()p Fx(N)p -1702 1428 76 4 v 1778 1436 a Fh(\000)1853 1415 y Fs(\001)g -Fx(t)p 1894 1428 30 4 v 21 x Fh(\000)1980 1415 y Fz(\))2012 -1348 y Fl(\001)2078 1415 y Fx(')c(ds)g(;)180 b Fs(8)14 -b Fx(')23 b Fs(2)g Fr(P)2713 1427 y Fq(k)q Fh(\000)p -Fp(1)2838 1415 y Fz(\()p Fx(e)p Fz(\))28 1626 y(on)k(the)h(edge)f -(momen)n(ts)g(is)h(su\016cien)n(t)f(for)h(the)g(global)e(edge)h(shap)r -(e)g(functions)h(to)g(satiesfy)f(\(26\).)37 b(Note)27 -b(that)28 1659 y Fl(R)67 1755 y Fq(e)98 1763 y Fi(+)149 -1726 y Fz(\()p Fx(N)p 181 1739 76 4 v 257 1747 a Fh(\000)323 -1726 y Fs(\001)9 b Fx(t)p 355 1739 30 4 v 21 x Fh(\000)441 -1726 y Fz(\))14 b Fx(')g(ds)24 b Fz(=)e Fs(\000)827 1659 -y Fl(R)866 1755 y Fq(e)897 1763 y Fe(\000)951 1726 y -Fz(\()p Fx(N)p 983 1739 76 4 v 1059 1747 a Fh(\000)1124 -1726 y Fs(\001)9 b Fx(t)p 1156 1739 30 4 v 1187 1747 -a Fh(\000)1243 1726 y Fz(\))14 b Fx(')g(ds)p Fz(.)36 -b(So,)24 b(b)n(y)e(the)i(de\014nition)f(\(27\))g(of)g(the)h(elemen)n(t) -f(shap)r(e)g(functions)g(on)g Fx(K)3712 1738 y Fp(+)3790 -1726 y Fz(resp.)28 1841 y(on)31 b Fx(K)218 1853 y Fh(\000)273 -1841 y Fz(,)i(b)n(y)e(the)h(in)n(v)-5 b(ariance)30 b(of)h(the)h(dofs)g -(\(prop)r(osition)e(7\))i(and)f(b)n(y)g(the)h(de\014nition)g(of)f(the)h -(reference)f(shap)r(e)g(functions)28 1941 y(\(example)c(3\))g(w)n(e)h -(ha)n(v)n(e)227 2053 y Fl(Z)273 2242 y Fq(e)304 2250 -y Fi(+)355 2166 y Fz(\()p Fx(N)p 387 2179 76 4 v 463 -2187 a Fp(+)537 2166 y Fs(\001)18 b Fx(t)p 578 2179 30 -4 v 21 x Fp(+)663 2166 y Fz(\))p Fx(')c(ds)24 b Fz(=)957 -2053 y Fl(Z)1006 2242 y Fp(^)-36 b Fq(e)1034 2250 y Ff(i)1065 -2166 y Fz(\()1114 2145 y(^)1097 2166 y Fx(N)p 1097 2179 -76 4 v 1173 2187 a Fq(i)1219 2166 y Fs(\001)1255 2151 -y Fz(^)1260 2166 y Fx(t)p 1260 2179 30 4 v 21 x Fq(i)1318 -2166 y Fz(\))13 b(^)-55 b Fx(')15 b(d)s Fz(^)-45 b Fx(s)23 -b Fz(=)f(1)166 b(and)2133 2053 y Fl(Z)2179 2242 y Fq(e)2210 -2250 y Fe(\000)2263 2166 y Fz(\()p Fx(N)p 2295 2179 76 -4 v 2371 2187 a Fh(\000)2446 2166 y Fs(\001)18 b Fx(t)p -2487 2179 30 4 v 21 x Fh(\000)2573 2166 y Fz(\))p Fx(')c(ds)24 -b Fz(=)f Fs(\000)2946 2053 y Fl(Z)2994 2242 y Fp(^)-36 -b Fq(e)3022 2250 y Ff(j)3058 2166 y Fz(\()3107 2145 y(^)3090 -2166 y Fx(N)p 3090 2179 76 4 v 3166 2187 a Fq(j)3219 -2166 y Fs(\001)3255 2151 y Fz(^)3261 2166 y Fx(t)p 3261 -2179 30 4 v 21 x Fq(j)3326 2166 y Fz(\))13 b(^)-55 b -Fx(')14 b(d)s Fz(^)-45 b Fx(s)24 b Fz(=)e Fs(\000)p Fz(1)14 -b Fx(:)3897 2405 y Fg(\003)28 2580 y Fz(T)-7 b(o)22 b(close)f(this)i -(section,)g(let)g(us)f(mak)n(e)g(a)g(note)g(on)g(the)h(in)n -(terpretation)f(of)g(the)h(dofs)f(on)g(an)g(elemen)n(t)h -Fx(K)28 b Fz(in)23 b(the)f(case)g(of)g(lo)n(w)n(est)28 -2679 y(order)28 b(p)r(olynomial)h(degree.)41 b(In)30 -b(this)g(case,)f(all)g(dofs)h(are)e(edge)h(dofs,)h(the)g(degrees)f(of)g -(freedom)g(are)37 b(^)-50 b Fx(\013)3315 2691 y Fq(j)3350 -2679 y Fz(\()q(^)-43 b Fx(v)p 3382 2692 44 4 v 3 w Fz(\))27 -b(=)3575 2612 y Fl(R)3617 2709 y Fp(^)-36 b Fq(e)3645 -2717 y Ff(j)3695 2679 y Fz(^)-42 b Fx(v)p 3695 2692 V -23 w Fs(\001)3795 2664 y Fz(^)3800 2679 y Fx(t)p 3800 -2692 30 4 v 21 x Fq(j)3879 2679 y Fx(d)s Fz(^)d Fx(s)28 -2812 y Fz(and)25 b(the)h(tangen)n(tial)e(traces)h(of)g(shap)r(e)h -(functions)f(are)g(constan)n(t)g(on)g(eac)n(h)f(edge.)36 -b(Since)26 b(w)n(e)f(require)33 b(^)-51 b Fx(\013)3286 -2824 y Fq(j)3321 2812 y Fz(\()3371 2791 y(^)3353 2812 -y Fx(N)p 3353 2825 76 4 v 3429 2833 a Fq(i)3457 2812 -y Fz(\))23 b(=)g Fx(\016)3637 2824 y Fq(ij)3721 2812 -y Fz(for)i(the)28 2912 y(reference)h(shap)r(e)i(functions,)g(w)n(e)f -(ha)n(v)n(e)1258 3094 y Fx(v)1298 3106 y Fq(j)1356 3094 -y Fz(=)k(^)-50 b Fx(\013)1497 3106 y Fq(j)1532 3094 y -Fz(\()q(^)-43 b Fx(v)p 1564 3107 44 4 v 4 w Fz(\))23 -b(=)g(\()1800 3073 y(^)1783 3094 y Fx(N)p 1783 3107 76 -4 v 1859 3115 a Fq(j)1912 3094 y Fs(\001)1948 3079 y -Fz(^)1954 3094 y Fx(t)p 1954 3107 30 4 v -1 w Fz(\))14 -b Fs(j)s Fz(^)-45 b Fx(e)2091 3106 y Fq(j)2126 3094 y -Fs(j)23 b Fz(=)g(\()p Fx(N)p 2292 3107 76 4 v 2368 3115 -a Fq(j)2422 3094 y Fs(\001)18 b Fx(t)p 2463 3107 30 4 -v 21 x Fq(j)2528 3094 y Fz(\))c Fs(j)p Fx(e)2636 3106 -y Fq(j)2671 3094 y Fs(j)g Fx(;)28 3277 y Fz(where)29 -b(for)h(the)g(last)g(equalit)n(y)g(w)n(e)g(ha)n(v)n(e)e(used)j(lemma)f -(1.)44 b(W)-7 b(e)30 b(see)g(that)h(the)f(dof)g Fx(\013)2720 -3289 y Fq(j)2755 3277 y Fz(\()p Fx(v)p 2787 3290 44 4 -v 4 w Fz(\))h('sitting')f(on)g(the)g(edge)g Fx(e)3695 -3289 y Fq(j)3760 3277 y Fz(is)g(the)28 3377 y(v)-5 b(alue)27 -b(of)h(the)g Fm(sc)l(ale)l(d)37 b Fz(tangen)n(tial)26 -b(comp)r(onen)n(t)i Fs(j)p Fx(e)1600 3389 y Fq(j)1635 -3377 y Fs(j)1672 3309 y Fl(\000)1709 3377 y Fx(v)p 1709 -3390 V 22 w Fs(\001)19 b Fx(t)p 1813 3390 30 4 v 20 x -Fq(j)1878 3309 y Fl(\001)1930 3377 y Fs(j)1953 3389 y -Fq(e)1988 3377 y Fz(.)28 3651 y Fn(Remark)28 b Fz(6)45 -b Fm(F)-6 b(or)36 b(the)h(invarianc)l(e)h(of)f(the)g(e)l(dge)g(dofs)h -(it)e(is)h(essential)g(that)g(the)f(moments)g Fx(\013)3071 -3621 y Fp([)p Fq(K)t Fp(])3210 3651 y Fm(on)g Fx(K)42 -b Fm(ar)l(e)37 b(de\014ne)l(d)g(by)28 3759 y(using)c(the)40 -b Fz(unit)34 b Fm(tangent)f(ve)l(ctor)h Fx(t)p 1129 3772 -V 30 w Fz(=)1293 3719 y Fh(j)s Fp(^)-36 b Fq(e)p Fh(j)p -1293 3740 71 4 v 1293 3788 a(j)p Fq(e)p Fh(j)1388 3759 -y Fz(\()1440 3738 y(^)1420 3759 y Fx(D)r(F)12 b Fz(\))1596 -3744 y(^)1602 3759 y Fx(t)p 1602 3772 30 4 v 34 w Fm(on)33 -b Fx(K)6 b Fm(.)50 b(If)34 b(not,)g(e.)h(g.)f(if)g(we)g(just)f(use)l(d) -h(the)f(tangent)3403 3744 y Fz(~)3409 3759 y Fx(t)p 3409 -3772 V 30 w Fz(=)d(\()3615 3738 y(^)3596 3759 y Fx(D)r(F)12 -b Fz(\))3772 3744 y(^)3778 3759 y Fx(t)p 3778 3772 V -Fm(,)35 b(we)28 3868 y(would)d(lose)h(the)f(invarianc)l(e)h(of)g(the)f -(dofs.)47 b(In)32 b(that)g(c)l(ase)g(the)g(dofs)h(would)g(sc)l(ale)g -(by)f(a)g(factor)h(dep)l(ending)h(on)e(the)g(size)g(of)28 -3968 y(the)d(e)l(dge)i(or)f(fac)l(e)h(\([8)q(],)f(r)l(emark)g(on)g(p.)h -(326\).)28 4296 y Fv(2.5)112 b Fo(Appro)m(ximation)35 -b(and)f(con)m(v)m(ergence)j(results)28 4450 y Fz(Without)d(going)e(in)n -(to)h(details,)i(w)n(e)e(will)g(cite)h(here)f(some)f(results)h(on)g -(appro)n(ximation)f(prop)r(erties)g(and)h(con)n(v)n(ergence)e(of)28 -4549 y(N)n(\023)-39 b(ed)n(\023)g(elec)25 b(FEM)j(of)f(\014rst)h(t)n -(yp)r(e.)28 4649 y(W)-7 b(e)21 b(are)g(in)h(the)g(setting)f(of)h(a)f -Fm(c)l(onforming)30 b Fz(FEM)21 b(and)h(ha)n(v)n(e)e(quasi-optimal)g -(appro)n(ximation)g(prop)r(erties)h(of)g(the)h(FE-spaces)28 -4749 y Fx(V)76 4761 y Fq(h)142 4749 y Fs(\032)h Fx(H)7 -b Fz(\(curl)o(;)14 b(\012\))1150 4848 y Fs(k)p Fx(u)p -1192 4861 48 4 v 17 w Fs(\000)k Fz(\005)1402 4814 y Fq(k)1402 -4869 y(h)1446 4848 y Fx(u)p 1446 4861 V -1 w Fs(k)1535 -4863 y Fq(H)t Fp(\(curl)o(;\012\))1850 4848 y Fz(=)k -Fx(C)70 b Fz(inf)2030 4902 y Fq(w)r Fh(2)p Fq(V)2164 -4911 y Ff(h)2216 4848 y Fs(k)p Fx(u)p 2258 4861 V 18 -w Fs(\000)18 b Fx(w)p 2407 4861 62 4 v 2 w Fs(k)2510 -4863 y Fq(H)t Fp(\(curl;\012\))2816 4848 y Fx(;)28 5047 -y Fz(where)33 b(\005)336 5017 y Fq(k)336 5071 y(h)379 -5047 y Fx(u)p 379 5060 48 4 v 34 w Fs(2)h(R)620 5017 -y Fq(k)695 5047 y Fz(or)f(\005)865 5017 y Fq(k)865 5071 -y(h)909 5047 y Fx(u)p 909 5060 V 33 w Fs(2)h(P)1144 5017 -y Fq(k)1219 5047 y Fz(resp)r(ectiv)n(ely)-7 b(,)35 b(denotes)f(the)g -(in)n(terp)r(olate)f(of)h Fx(u)p 2679 5060 V 34 w Fz(with)h(regard)d -(to)i(the)g(N)n(\023)-39 b(ed)n(\023)g(elec)32 b(dofs:)28 -5147 y Fx(\013)p Fz(\()p Fx(u)p 113 5160 V Fz(\))26 b(=)f -Fx(\013)p Fz(\(\005)456 5117 y Fq(k)456 5171 y(h)500 -5147 y Fx(u)p 500 5160 V Fz(\))30 b(for)e(all)h(dofs)h -Fx(\013)p Fz(.)42 b(The)30 b(in)n(terp)r(olation)e(op)r(erator)g(\005) -2216 5117 y Fq(k)2216 5171 y(h)2288 5147 y Fz(is)h(de\014ned)h(for)f -(su\016cien)n(tly)g(smo)r(oth)g(v)n(ector)f(\014elds,)28 -5247 y(namely)f(for)g(all)g Fx(v)p 558 5260 44 4 v 27 -w Fs(2)c Fx(H)779 5217 y Fq(r)815 5247 y Fz(\(curl\))28 -b(for)f(an)n(y)g Fx(r)f(>)1491 5214 y Fp(1)p 1491 5228 -34 4 v 1491 5275 a(2)1561 5247 y Fz(\(see)i([1)o(],)g(Lemma)g(5.1.,)e -([7])i(and)f(references)g(therein\).)28 5346 y(F)-7 b(or)27 -b(N)n(\023)-39 b(ed)n(\023)g(elec's)25 b(FEM)j(of)f(\014rst)g(t)n(yp)r -(e)h(w)n(e)f(state)h(\(without)g(pro)r(of)6 b(\))28 b(the)g(follo)n -(wing)e(optimal)i(estimate)f(in)h(the)g(curl-norm:)1949 -5719 y Fk(15)p eop -%%Page: 16 16 -16 15 bop 28 220 a Fn(Theorem)28 b Fz(5)45 b Fm(If)31 -b Fs(T)649 232 y Fq(h)692 220 y Fm(,)g Fx(h)25 b(>)f -Fz(0)p Fm(,)31 b(is)g(a)g(r)l(e)l(gular)g(family)h(of)g(triangulations) -f(on)g Fz(\012)f Fm(and)h Fx(r)d(>)2866 187 y Fp(1)p -2866 201 34 4 v 2866 248 a(2)2909 220 y Fm(,)j(then)g(ther)l(e)g -(exists)f(a)h(c)l(onstant)28 319 y Fx(C)e(>)23 b Fz(0)p -Fm(,)29 b(dep)l(ending)i(on)f Fx(r)j Fm(but)c(not)g(on)h -Fx(h)f Fm(or)i Fx(v)p 1465 332 44 4 v 3 w Fm(,)f(such)g(that)1163 -495 y Fs(k)p Fx(v)p 1205 508 V 22 w Fs(\000)18 b Fz(\005)1412 -461 y Fq(k)1412 515 y(h)1455 495 y Fx(v)p 1455 508 V -3 w Fs(k)1540 510 y Fq(H)t Fp(\(curl)o(;\012\))1855 495 -y Fs(\024)k Fx(C)e(h)2069 461 y Fp(min)o Fh(f)p Fq(r)n(;k)q -Fh(g)2337 495 y Fs(k)p Fx(v)p 2379 508 V 3 w Fs(k)2464 -510 y Fq(H)2522 493 y Ff(r)2555 510 y Fp(\(curl)o(;\012\))2802 -495 y Fx(;)989 b Fz(\(28\))28 671 y Fm(for)30 b(al)t(l)h -Fx(v)p 279 684 V 26 w Fs(2)24 b Fx(H)500 641 y Fq(r)536 -671 y Fz(\(curl;)14 b(\012\))p Fm(.)28 838 y Fz(The)27 -b(result)f(in)i(\(28\))f(w)n(as)f(obtained)g(b)n(y)h(Alonso)g(and)g(V) --7 b(alli)27 b(in)g([1],)g(extending)g(earlier)f(in)n(terp)r(olation)g -(results)g(b)n(y)h(N)n(\023)-39 b(ed)n(\023)g(elec)28 -938 y(in)27 b([8])h(and)f(Monk)g(in)h([6].)28 1037 y(Optimal)34 -b(con)n(v)n(ergence)f(in)i(the)h Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\)-norm)35 b(for)f(the)h(error)e(of)i(the)h(FE-appro)n(ximation)c -(of)j(the)h(mo)r(del)f(problem)28 1137 y(\(3\))f(b)n(y)f(N)n(\023)-39 -b(ed)n(\023)g(elec's)32 b(elemen)n(ts)h(of)h(\014rst)g(t)n(yp)r(e)g -(follo)n(ws)e(from)i(\(28\))f(b)n(y)h(C)n(\023)-39 b(ea's)32 -b(lemma.)55 b(This)34 b(result)g(has)f(b)r(een)h(v)n(eri\014ed)f(in)28 -1237 y(n)n(umerical)h(exp)r(erimen)n(ts)g(with)h(a)g -Fd(MATLAB)d Fz(co)r(de,)37 b(whic)n(h)e(uses)f(lo)n(w)n(est)g(order)f -(N)n(\023)-39 b(ed)n(\023)g(elec)33 b(elemen)n(ts)i(on)f(a\016ne)h -(triangular)28 1336 y(meshes)23 b(for)h(2d)g(problems,)g(as)f(w)n(ell)h -(as)f(with)i(a)f Fd(deal.II)d Fz(co)r(de,)k(whic)n(h)f(uses)f(lo)n(w)n -(est)g(order)g(N)n(\023)-39 b(ed)n(\023)g(elec)22 b(elemen)n(ts)i(on)g -(bilinear)28 1436 y(resp.)36 b(trilinear)27 b(meshes)g(for)g(2d)g -(resp.)36 b(3d)28 b(problems.)28 1535 y(As)36 b(for)g(the)h -Fx(L)504 1505 y Fp(2)540 1535 y Fz(\(\012\)-appro)n(ximation)e(prop)r -(erties)h(of)g(FE)g(spaces)f(based)h(on)g Fs(R)2602 1505 -y Fq(k)2680 1535 y Fz(or)f Fs(P)2855 1505 y Fq(k)2896 -1535 y Fz(,)k(w)n(e)d(could)g(hop)r(e)g(for)g(a)g(b)r(etter)28 -1635 y(order)25 b(than)j Fs(O)r Fz(\()p Fx(h)586 1605 -y Fq(k)627 1635 y Fz(\))g(at)f(\014rst)g(sigh)n(t:)36 -b(still,)27 b(w)n(e)g(ha)n(v)n(e)f([)p Fr(P)1764 1605 -y Fq(k)q Fh(\000)p Fp(1)1889 1635 y Fz(\()p Fx(K)6 b -Fz(\)])2053 1605 y Fq(d)2115 1635 y Fs(\022)22 b(R)2272 -1605 y Fq(k)2313 1635 y Fz(\()p Fx(K)6 b Fz(\).)37 b(Ho)n(w)n(ev)n(er,) -26 b(N)n(\023)-39 b(ed)n(\023)g(elec)25 b(sho)n(ws)h(in)h([8])g(that)h -(only)28 1735 y(sub)r(optimalit)n(y)f(can)g(b)r(e)h(exp)r(ected:)1421 -1834 y Fs(k)p Fx(v)p 1463 1847 V 21 w Fs(\000)18 b Fz(\005)1669 -1800 y Fq(k)1669 1855 y(h)1712 1834 y Fx(v)p 1712 1847 -V 4 w Fs(k)1798 1849 y Fq(L)1844 1833 y Fi(2)1875 1849 -y Fp(\(\012\))2002 1834 y Fs(\024)k Fx(C)6 b(h)2202 1800 -y Fq(k)2243 1834 y Fs(j)p Fx(v)p 2266 1847 V 3 w Fs(j)2332 -1851 y Fq(H)2390 1835 y Ff(k)2428 1851 y Fp(\(\012\))2545 -1834 y Fx(:)1246 b Fz(\(29\))28 1990 y(N)n(\023)-39 b(ed)n(\023)g(elec) -24 b(uses)i(a)g(standard)f(scaling)h(and)g(Bram)n(ble-Hilb)r(ert)f -(argumen)n(t)h(to)g(deriv)n(e)g(\(29\).)36 b(Since)26 -b([)p Fr(P)3183 1960 y Fq(k)q Fh(\000)p Fp(1)3308 1990 -y Fz(\()p Fx(K)6 b Fz(\)])3472 1960 y Fq(d)3534 1990 -y Fs(\022)22 b(R)3691 1960 y Fq(k)3733 1990 y Fz(\()p -Fx(K)6 b Fz(\))23 b Fr(\()28 2090 y Fz([)p Fr(P)103 2060 -y Fq(k)142 2090 y Fz(\()p Fx(K)6 b Fz(\)])306 2060 y -Fq(d)345 2090 y Fz(,)24 b(the)g(Bram)n(ble-Hilb)r(ert)e(argumen)n(t)g -(only)h(guaran)n(tees)e(an)i(elemen)n(t)n(wise)g(appro)n(ximation)e(of) -j(order)e Fx(k)k Fz(of)d Fx(H)3752 2060 y Fq(k)3793 2090 -y Fz(\()p Fx(K)6 b Fz(\)-)28 2189 y(functions)27 b(from)h(the)g(space)f -Fs(R)1017 2159 y Fq(k)1058 2189 y Fz(\()p Fx(K)6 b Fz(\).)28 -2289 y(Ho)n(w)n(ev)n(er,)22 b(in)j(a)e(recen)n(t)h(pap)r(er)f(Hiptmair) -i(uses)e(a)h(dualit)n(y)g(tec)n(hnique)g(to)g(state)f(optimal)h(con)n -(v)n(ergence)e(of)i(the)g Fx(L)3596 2259 y Fp(2)3633 -2289 y Fz(\(\012\)-error)28 2389 y Fs(k)p Fx(u)p 70 2402 -48 4 v 6 w Fs(\000)8 b Fx(u)p 197 2402 V 244 2409 a Fq(h)287 -2389 y Fs(k)329 2404 y Fq(L)375 2387 y Fi(2)407 2404 -y Fp(\(\012\))533 2389 y Fz(for)21 b(the)i(3d)f(case)f(and)i(N)n(\023) --39 b(ed)n(\023)g(elec's)20 b(elemen)n(ts)i(of)g(\014rst)g(t)n(yp)r(e)h -(of)f(order)f Fx(k)k Fz(on)d(tetrahedral)f(meshes)h(\(see)g(Section)28 -2488 y(5.3,)k(Theorem)h(5.8)g(in)h([5)o(]\):)28 2656 -y Fn(Theorem)g Fz(6)45 b Fm(Ther)l(e)30 b(is)h(an)e Fx(s)23 -b(>)1122 2623 y Fp(1)p 1122 2637 34 4 v 1122 2684 a(2)1195 -2656 y Fm(such)30 b(that)1287 2831 y Fs(k)p Fx(u)p 1329 -2844 48 4 v 18 w Fs(\000)18 b Fx(u)p 1478 2844 V 1525 -2852 a Fq(h)1568 2831 y Fs(k)1610 2846 y Fq(L)1656 2830 -y Fi(2)1688 2846 y Fp(\(\012\))1814 2831 y Fs(\024)23 -b Fx(C)6 b(h)2015 2797 y Fq(s)2050 2831 y Fs(k)p Fx(u)p -2092 2844 V 18 w Fs(\000)18 b Fx(u)p 2241 2844 V 2288 -2852 a Fq(h)2331 2831 y Fs(k)2373 2846 y Fq(H)t Fp(\(curl;\012\))2679 -2831 y Fx(:)1112 b Fz(\(30\))28 3007 y Fm(Under)29 b(the)h(assumption)g -(that)g(the)g(b)l(oundary)g Fx(@)5 b Fz(\012)30 b Fm(is)g(smo)l(oth)g -(or)g(c)l(onvex,)g Fx(s)23 b Fz(=)g(1)29 b Fm(c)l(an)h(b)l(e)g(chosen.) -28 3174 y Fz(Sev)n(eral)23 b(k)n(ey)i(argumen)n(ts)f(of)h(the)h(pro)r -(of)f(in)g([5])h(mak)n(e)e(explicitely)h(use)h(of)f(features)g(that)g -(are)g(limited)h(to)f(3d)g(problems)f(and)28 3274 y(the)d(family)h(of)f -(\014nite)h(elemen)n(ts)g(based)f(on)g(tetrahedrons.)33 -b(They)22 b(cannot)f(b)r(e)g(mo)r(di\014ed)h(trivially)f(to)g(apply)h -(to)f(2d)g(problems)28 3374 y(or)30 b(3d)i(problems)e(on)i(hexahedral)e -(meshes.)48 b(Ev)n(en)31 b(w)n(orse,)g(it)h(is)g(suggested)e(b)n(y)h -(the)h(results)f(of)h(n)n(umerical)f(exp)r(erimen)n(ts)28 -3473 y(that)c(one)h(cannot)f(hop)r(e)g(to)h(obtain)f(a)g(result)h -(similar)f(to)g(\(30\).)28 3573 y(A)g(p)r(ossibilit)n(y)f(to)h(o)n(v)n -(ercome)d(this)j(de\014ciency)g(of)g(con)n(v)n(ergence)d(is)j(to)f(use) -h(N)n(\023)-39 b(ed)n(\023)g(elec)25 b(elemen)n(ts)i(of)f(second)g(t)n -(yp)r(e,)i(where)e(the)28 3673 y(full)i([)p Fr(P)248 -3685 y Fq(k)288 3673 y Fz(])311 3642 y Fq(d)377 3673 -y Fz(are)f(used)g(as)g(p)r(olynomial)g(spaces)g(\(see)g([10)o(]\).)28 -3913 y Fw(3)134 b Fv(Numerical)35 b(results)28 4095 y -Fz(The)27 b(n)n(umerical)f(results)h(in)g(this)g(section)g(pro)n(vide)f -(some)h(samples)f(of)h(the)h(qualit)n(y)e(of)h(the)h -Fx(H)7 b Fz(\(curl;)14 b(\012\)-conforming)25 b(FEM)28 -4194 y(with)j(N)n(\023)-39 b(ed)n(\023)g(elec)25 b(elemen)n(ts)j(of)f -(\014rst)h(t)n(yp)r(e)g(and)f(lo)n(w)n(est)g(order)f(\(p)r(olynomial)h -(degree)g Fx(k)e Fz(=)e(1\).)28 4294 y(W)-7 b(e)40 b(considered)f(the)i -(mo)r(del)f(problem)f(\(1\))i(in)f(\012)k(=)f([)p Fs(\000)p -Fz(1)p Fx(;)14 b Fz(1])2052 4264 y Fq(d)2090 4294 y Fz(,)43 -b Fx(d)h Fz(=)g(2)p Fx(;)14 b Fz(3,)42 b(with)f(homogeneous)d(Diric)n -(hlet)i(b)r(oundary)28 4393 y(condition)27 b(\(2\).)28 -4493 y(The)33 b(\014rst)g(few)h(results)e(for)h(the)h(t)n(w)n -(o-dimensional)e(problem)g(ha)n(v)n(e)h(b)r(een)g(obtained)g(b)n(y)g(a) -g Fd(MATLAB)e Fz(co)r(de.)54 b(F)-7 b(or)33 b(the)h(\014rst)28 -4593 y(example)27 b(w)n(e)g(used)h(the)g(data)1374 4738 -y Fx(c)23 b Fs(\021)f Fz(1)14 b Fx(;)180 b(f)p 1779 4767 -50 4 v 8 w Fz(\()p Fx(x;)14 b(y)s Fz(\))24 b(=)2131 4620 -y Fl(\022)2236 4687 y Fz(3)18 b Fs(\000)g Fx(y)2423 4657 -y Fp(2)2234 4787 y Fz(3)g Fs(\000)g Fx(x)2424 4756 y -Fp(2)2503 4620 y Fl(\023)2592 4738 y Fx(:)1199 b Fz(\(31\))28 -4928 y(F)-7 b(or)27 b(the)h(second)f(example)g(w)n(e)g(ha)n(v)n(e)f -(follo)n(w)n(ed)h(the)h(outlines)f(from)h(App)r(endix)g(A)g(and)f(tak)n -(en)g(the)h(data)g(from)f(example)g(5)1050 5149 y Fx(c)c -Fs(\021)g Fz(1)14 b Fx(;)179 b(f)p 1455 5178 V 8 w Fz(\()p -Fx(x;)14 b(y)s Fz(\))24 b(=)f(\(2)p Fx(\031)1932 5115 -y Fp(2)1988 5149 y Fz(+)18 b(1\))2159 5032 y Fl(\022)2300 -5098 y Fz(cos)13 b Fx(\031)s(x)h Fz(sin)g Fx(\031)s(y)2261 -5198 y Fs(\000)g Fz(sin)f Fx(\031)s(x)h Fz(cos)g Fx(\031)s(y)2827 -5032 y Fl(\023)2916 5149 y Fx(:)875 b Fz(\(32\))28 5370 -y(The)25 b(\014nite)i(elemen)n(t)f(solution)f(has)g(b)r(een)i(computed) -f(using)f(N)n(\023)-39 b(ed)n(\023)g(elec)24 b(elemen)n(ts)i(of)f -(\014rst)h(t)n(yp)r(e)g(and)f(of)h(p)r(olynomial)f(degree)28 -5469 y Fx(k)j Fz(=)d(1)k(on)f(a)h(family)g(of)g(a\016ne)g(triangular)e -(grids.)40 b(The)29 b(initial)h(coarse)d(grid)h(consisted)h(of)g(2)2983 -5439 y Fp(5)3049 5469 y Fz(triangles.)40 b(The)29 b(\014nest)g(grid) -1949 5719 y Fk(16)p eop -%%Page: 17 17 -17 16 bop 28 217 a Fz(with)28 b(2)259 187 y Fp(13)356 -217 y Fz(triangles)f(results)g(after)g(\014v)n(e)g(global)g -(re\014nemen)n(ts.)28 317 y(In)36 b(T)-7 b(able)35 b(1)h(w)n(e)f(see)h -(that)g(for)f(b)r(oth)h(examples)f(w)n(e)h(ha)n(v)n(e)f(optimal)g(con)n -(v)n(ergence)f(in)i(the)g Fx(H)7 b Fz(\(curl;)14 b(\012\)-semiorm,)37 -b(as)e(w)n(e)28 416 y(w)n(ould)e(exp)r(ect)h(from)g(the)g(theoretical)f -(results)h(of)g(the)g(previous)f(section.)55 b(As)34 -b(for)g(the)g Fx(L)2969 386 y Fp(2)3006 416 y Fz(\(\012\)-norm,)h(it)f -(app)r(ears)f(that)28 516 y(in)d(b)r(oth)h(examples)f(the)h(con)n(v)n -(ergence)d(of)j(the)f(n)n(umerical)g(solution)g(is)h(not)f(optimal)g -(for)g(our)g(c)n(hoice)g(of)g(\014nite)h(elemen)n(ts.)28 -616 y(In)e(the)h(case)f(of)g(N)n(\023)-39 b(ed)n(\023)g(elec)28 -b(elemen)n(ts)h(of)g(\014rst)h(t)n(yp)r(e)f(and)g(of)h(p)r(olynomial)f -(degree)f Fx(k)h Fz(=)d(1,)j(w)n(e)g(got)g(only)g Fs(O)r -Fz(\()p Fx(h)p Fz(\)-con)n(v)n(ergence)28 715 y(of)19 -b(the)i Fx(L)307 685 y Fp(2)344 715 y Fz(-error.)32 b(Ho)n(w)n(ev)n -(er,)19 b(this)h(order)f(of)h(con)n(v)n(ergence)e(is)h(consisten)n(t)h -(with)g(the)h(result)e(\(29\))h(obtained)g(b)n(y)f(N)n(\023)-39 -b(ed)n(\023)g(elec)18 b(in)j([8)o(].)p 725 918 2540 4 -v 723 1031 4 113 v 1224 1031 V 1276 997 a Fk(grid)p 1481 -1031 V 98 w(#)30 b(cells)p 1854 1031 V 1854 1031 V 147 -w Fc(H)7 b Fk(\(curl)o(\)-error)p 2578 1031 V 2578 1031 -V 279 w Fc(L)2822 964 y Fb(2)2861 997 y Fk(-error)p 3262 -1031 V 725 1034 2540 4 v 723 1147 4 113 v 1224 1147 V -1332 1113 a(1)p 1481 1147 V 338 w(32)p 1854 1147 V 120 -w(6.66e-01)p 2317 1147 V 181 w({)p 2578 1147 V 159 w(4.66e-01)p -3001 1147 V 161 w({)p 3262 1147 V 723 1260 V 1224 1260 -V 1332 1226 a(2)p 1481 1260 V 292 w(128)p 1854 1260 V -121 w(3.33e-01)p 2317 1260 V 123 w(1.00)p 2578 1260 V -102 w(2.35e-01)p 3001 1260 V 103 w(0.98)p 3262 1260 V -723 1373 V 775 1339 a(example)30 b(1)p 1224 1373 V 156 -w(3)p 1481 1373 V 292 w(512)p 1854 1373 V 121 w(1.66e-01)p -2317 1373 V 123 w(1.00)p 2578 1373 V 102 w(1.17e-01)p -3001 1373 V 103 w(0.99)p 3262 1373 V 723 1486 V 1224 -1486 V 1332 1452 a(4)p 1481 1486 V 247 w(2048)p 1854 -1486 V 121 w(8.33e-02)p 2317 1486 V 123 w(1.00)p 2578 -1486 V 102 w(5.89e-02)p 3001 1486 V 103 w(0.99)p 3262 -1486 V 723 1599 V 1224 1599 V 1332 1565 a(5)p 1481 1599 -V 247 w(8192)p 1854 1599 V 121 w(4.17e-02)p 2317 1599 -V 123 w(1.00)p 2578 1599 V 102 w(2.95e-02)p 3001 1599 -V 103 w(0.99)p 3262 1599 V 725 1602 2540 4 v 723 1715 -4 113 v 1224 1715 V 1332 1681 a(1)p 1481 1715 V 338 w(32)p -1854 1715 V 100 w(3.05e+00)p 2317 1715 V 160 w({)p 2578 -1715 V 159 w(6.48e-01)p 3001 1715 V 161 w({)p 3262 1715 -V 723 1828 V 1224 1828 V 1332 1794 a(2)p 1481 1828 V -292 w(128)p 1854 1828 V 101 w(1.61e+00)p 2317 1828 V -102 w(0.91)p 2578 1828 V 102 w(3.22e-01)p 3001 1828 V -103 w(1.00)p 3262 1828 V 723 1941 V 775 1907 a(example)g(2)p -1224 1941 V 156 w(3)p 1481 1941 V 292 w(512)p 1854 1941 -V 121 w(0.81e-01)p 2317 1941 V 123 w(0.97)p 2578 1941 -V 102 w(1.60e-01)p 3001 1941 V 103 w(1.00)p 3262 1941 -V 723 2053 V 1224 2053 V 1332 2020 a(4)p 1481 2053 V -247 w(2048)p 1854 2053 V 121 w(0.41e-01)p 2317 2053 V -123 w(0.99)p 2578 2053 V 102 w(8.02e-02)p 3001 2053 V -103 w(1.00)p 3262 2053 V 723 2166 V 1224 2166 V 1332 -2133 a(5)p 1481 2166 V 247 w(8192)p 1854 2166 V 121 w(2.05e-01)p -2317 2166 V 123 w(0.99)p 2578 2166 V 102 w(4.01e-02)p -3001 2166 V 103 w(1.00)p 3262 2166 V 725 2170 2540 4 -v 28 2436 a(T)-8 b(able)40 b(1:)63 b(Errors)40 b(and)h(con)m(v)m -(ergence)i(rates)f(in)e(the)h Fc(L)1993 2403 y Fb(2)2032 -2436 y Fk(\(\012\)-norm)h(and)e Fc(H)7 b Fk(\(curl)o(;)15 -b(\012\)-seminorm)41 b(for)f(the)i(t)m(w)m(o)28 2549 -y Fa(MATLAB)28 b Fk(examples.)872 4420 y @beginspecial -52 @llx 194 @lly 549 @urx 605 @ury 2693 @rwi 1984 @rhi -@setspecial -%%BeginDocument: example1_errors.eps -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: MATLAB, The Mathworks, Inc. -%%Title: examlpe1_error.eps -%%CreationDate: 08/26/2002 11:49:36 -%%DocumentNeededFonts: Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%Pages: 1 -%%BoundingBox: 52 194 549 605 -%%EndComments - -%%BeginProlog -% MathWorks dictionary -/MathWorks 160 dict begin -% definition operators -/bdef {bind def} bind def -/ldef {load def} bind def -/xdef {exch def} bdef -/xstore {exch store} bdef -% operator abbreviations -/c /clip ldef -/cc /concat ldef -/cp /closepath ldef -/gr /grestore ldef -/gs /gsave ldef -/mt /moveto ldef -/np /newpath ldef -/cm /currentmatrix ldef -/sm /setmatrix ldef -/rm /rmoveto ldef -/rl /rlineto ldef -/s /show ldef -/sc {setcmykcolor} bdef -/sr /setrgbcolor ldef -/sg /setgray ldef -/w /setlinewidth ldef -/j /setlinejoin ldef -/cap /setlinecap ldef -/rc {rectclip} bdef -/rf {rectfill} bdef -% page state control -/pgsv () def -/bpage {/pgsv save def} bdef -/epage {pgsv restore} bdef -/bplot /gsave ldef -/eplot {stroke grestore} bdef -% orientation switch -/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def -% coordinate system mappings -/dpi2point 0 def -% font control -/FontSize 0 def -/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] - makefont setfont} bdef -/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse - exch dup 3 1 roll findfont dup length dict begin - { 1 index /FID ne {def}{pop pop} ifelse } forall - /Encoding exch def currentdict end definefont pop} bdef -/isroman {findfont /CharStrings get /Agrave known} bdef -/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse - exch FMS} bdef -/csm {1 dpi2point div -1 dpi2point div scale neg translate - dup landscapeMode eq {pop -90 rotate} - {rotateMode eq {90 rotate} if} ifelse} bdef -% line types: solid, dotted, dashed, dotdash -/SO { [] 0 setdash } bdef -/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef -/DA { [6 dpi2point mul] 0 setdash } bdef -/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 - dpi2point mul] 0 setdash } bdef -% macros for lines and objects -/L {lineto stroke} bdef -/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef -/AP {{rlineto} repeat} bdef -/PDlw -1 def -/W {/PDlw currentlinewidth def setlinewidth} def -/PP {closepath eofill} bdef -/DP {closepath stroke} bdef -/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto - neg 0 exch rlineto closepath} bdef -/FR {MR stroke} bdef -/PR {MR fill} bdef -/L1i {{currentfile picstr readhexstring pop} image} bdef -/tMatrix matrix def -/MakeOval {newpath tMatrix currentmatrix pop translate scale -0 0 1 0 360 arc tMatrix setmatrix} bdef -/FO {MakeOval stroke} bdef -/PO {MakeOval fill} bdef -/PD {currentlinecap 1 cap 3 1 roll 2 copy mt lineto stroke - cap PDlw -1 eq not {PDlw w /PDlw -1 def} if} def -/FA {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef -/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef -/FAn {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef -/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef -/vradius 0 def /hradius 0 def /lry 0 def -/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def -/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef - /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly - vradius add translate hradius vradius scale 0 0 1 180 270 arc - tMatrix setmatrix lrx hradius sub uly vradius add translate - hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix - lrx hradius sub lry vradius sub translate hradius vradius scale - 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub - translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix - closepath} bdef -/FRR {MRR stroke } bdef -/PRR {MRR fill } bdef -/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix - closepath} bdef -/FlrRR {MlrRR stroke } bdef -/PlrRR {MlrRR fill } bdef -/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix - closepath} bdef -/FtbRR {MtbRR stroke } bdef -/PtbRR {MtbRR fill } bdef -/stri 6 array def /dtri 6 array def -/smat 6 array def /dmat 6 array def -/tmat1 6 array def /tmat2 6 array def /dif 3 array def -/asub {/ind2 exch def /ind1 exch def dup dup - ind1 get exch ind2 get sub exch } bdef -/tri_to_matrix { - 2 0 asub 3 1 asub 4 0 asub 5 1 asub - dup 0 get exch 1 get 7 -1 roll astore } bdef -/compute_transform { - dmat dtri tri_to_matrix tmat1 invertmatrix - smat stri tri_to_matrix tmat2 concatmatrix } bdef -/ds {stri astore pop} bdef -/dt {dtri astore pop} bdef -/db {2 copy /cols xdef /rows xdef mul dup string - currentfile exch readhexstring pop - /bmap xdef pop pop} bdef -/it {gs np dtri aload pop moveto lineto lineto cp c - cols rows 8 compute_transform - {bmap} image gr}bdef -/il {newpath moveto lineto stroke}bdef -currentdict end def -%%EndProlog - -%%BeginSetup -MathWorks begin - -0 cap - -end -%%EndSetup - -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 52 194 549 605 -MathWorks begin -bpage -%%EndPageSetup - -%%BeginObject: obj1 -bplot - -/dpi2point 12 def -portraitMode 0204 7344 csm - - 424 80 5969 4933 MR c np -92 dict begin %Colortable dictionary -/c0 { 0 0 0 sr} bdef -/c1 { 1 1 1 sr} bdef -/c2 { 1 0 0 sr} bdef -/c3 { 0 1 0 sr} bdef -/c4 { 0 0 1 sr} bdef -/c5 { 1 1 0 sr} bdef -/c6 { 1 0 1 sr} bdef -/c7 { 0 1 1 sr} bdef -c0 -1 j -1 sg - 0 0 6913 5185 PR -6 w -0 4225 5356 0 0 -4225 899 4614 4 MP -PP --5356 0 0 4225 5356 0 0 -4225 899 4614 5 MP stroke -4 w -DO -0 sg - 899 4614 mt 899 389 L - 899 389 mt 899 389 L -2684 4614 mt 2684 389 L -2684 389 mt 2684 389 L -4469 4614 mt 4469 389 L -4469 389 mt 4469 389 L -6255 4614 mt 6255 389 L -6255 389 mt 6255 389 L - 899 4614 mt 6255 4614 L -6255 4614 mt 6255 4614 L - 899 2501 mt 6255 2501 L -6255 2501 mt 6255 2501 L - 899 389 mt 6255 389 L -6255 389 mt 6255 389 L -SO -6 w - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L - 899 4614 mt 6255 4614 L - 899 4614 mt 899 389 L - 899 4614 mt 899 4587 L - 899 389 mt 899 415 L -DO - 899 4614 mt 899 389 L - 899 389 mt 899 389 L -SO - 899 4614 mt 899 4560 L - 899 389 mt 899 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 811 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 944 4722 mt -(1) s -1436 4614 mt 1436 4587 L -1436 389 mt 1436 415 L -DO -1436 4614 mt 1436 389 L -1436 389 mt 1436 389 L -SO -1750 4614 mt 1750 4587 L -1750 389 mt 1750 415 L -DO -1750 4614 mt 1750 389 L -1750 389 mt 1750 389 L -SO -1973 4614 mt 1973 4587 L -1973 389 mt 1973 415 L -DO -1973 4614 mt 1973 389 L -1973 389 mt 1973 389 L -SO -2146 4614 mt 2146 4587 L -2146 389 mt 2146 415 L -DO -2146 4614 mt 2146 389 L -2146 389 mt 2146 389 L -SO -2288 4614 mt 2288 4587 L -2288 389 mt 2288 415 L -DO -2288 4614 mt 2288 389 L -2288 389 mt 2288 389 L -SO -2407 4614 mt 2407 4587 L -2407 389 mt 2407 415 L -DO -2407 4614 mt 2407 389 L -2407 389 mt 2407 389 L -SO -2511 4614 mt 2511 4587 L -2511 389 mt 2511 415 L -DO -2511 4614 mt 2511 389 L -2511 389 mt 2511 389 L -SO -2602 4614 mt 2602 4587 L -2602 389 mt 2602 415 L -DO -2602 4614 mt 2602 389 L -2602 389 mt 2602 389 L -SO -2684 4614 mt 2684 4587 L -2684 389 mt 2684 415 L -DO -2684 4614 mt 2684 389 L -2684 389 mt 2684 389 L -SO -2684 4614 mt 2684 4560 L -2684 389 mt 2684 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -2596 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -2729 4722 mt -(2) s -3221 4614 mt 3221 4587 L -3221 389 mt 3221 415 L -DO -3221 4614 mt 3221 389 L -3221 389 mt 3221 389 L -SO -3536 4614 mt 3536 4587 L -3536 389 mt 3536 415 L -DO -3536 4614 mt 3536 389 L -3536 389 mt 3536 389 L -SO -3759 4614 mt 3759 4587 L -3759 389 mt 3759 415 L -DO -3759 4614 mt 3759 389 L -3759 389 mt 3759 389 L -SO -3932 4614 mt 3932 4587 L -3932 389 mt 3932 415 L -DO -3932 4614 mt 3932 389 L -3932 389 mt 3932 389 L -SO -4073 4614 mt 4073 4587 L -4073 389 mt 4073 415 L -DO -4073 4614 mt 4073 389 L -4073 389 mt 4073 389 L -SO -4193 4614 mt 4193 4587 L -4193 389 mt 4193 415 L -DO -4193 4614 mt 4193 389 L -4193 389 mt 4193 389 L -SO -4296 4614 mt 4296 4587 L -4296 389 mt 4296 415 L -DO -4296 4614 mt 4296 389 L -4296 389 mt 4296 389 L -SO -4387 4614 mt 4387 4587 L -4387 389 mt 4387 415 L -DO -4387 4614 mt 4387 389 L -4387 389 mt 4387 389 L -SO -4469 4614 mt 4469 4587 L -4469 389 mt 4469 415 L -DO -4469 4614 mt 4469 389 L -4469 389 mt 4469 389 L -SO -4469 4614 mt 4469 4560 L -4469 389 mt 4469 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -4381 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -4514 4722 mt -(3) s -5007 4614 mt 5007 4587 L -5007 389 mt 5007 415 L -DO -5007 4614 mt 5007 389 L -5007 389 mt 5007 389 L -SO -5321 4614 mt 5321 4587 L -5321 389 mt 5321 415 L -DO -5321 4614 mt 5321 389 L -5321 389 mt 5321 389 L -SO -5544 4614 mt 5544 4587 L -5544 389 mt 5544 415 L -DO -5544 4614 mt 5544 389 L -5544 389 mt 5544 389 L -SO -5717 4614 mt 5717 4587 L -5717 389 mt 5717 415 L -DO -5717 4614 mt 5717 389 L -5717 389 mt 5717 389 L -SO -5858 4614 mt 5858 4587 L -5858 389 mt 5858 415 L -DO -5858 4614 mt 5858 389 L -5858 389 mt 5858 389 L -SO -5978 4614 mt 5978 4587 L -5978 389 mt 5978 415 L -DO -5978 4614 mt 5978 389 L -5978 389 mt 5978 389 L -SO -6081 4614 mt 6081 4587 L -6081 389 mt 6081 415 L -DO -6081 4614 mt 6081 389 L -6081 389 mt 6081 389 L -SO -6173 4614 mt 6173 4587 L -6173 389 mt 6173 415 L -DO -6173 4614 mt 6173 389 L -6173 389 mt 6173 389 L -SO -6255 4614 mt 6255 4587 L -6255 389 mt 6255 415 L -DO -6255 4614 mt 6255 389 L -6255 389 mt 6255 389 L -SO -6255 4614 mt 6255 4560 L -6255 389 mt 6255 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -6167 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -6300 4722 mt -(4) s - 899 4614 mt 925 4614 L -6255 4614 mt 6228 4614 L -DO - 899 4614 mt 6255 4614 L -6255 4614 mt 6255 4614 L -SO - 899 4614 mt 952 4614 L -6255 4614 mt 6201 4614 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 4658 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 4584 mt -(-2) s - 899 3978 mt 925 3978 L -6255 3978 mt 6228 3978 L -DO - 899 3978 mt 6255 3978 L -6255 3978 mt 6255 3978 L -SO - 899 3606 mt 925 3606 L -6255 3606 mt 6228 3606 L -DO - 899 3606 mt 6255 3606 L -6255 3606 mt 6255 3606 L -SO - 899 3342 mt 925 3342 L -6255 3342 mt 6228 3342 L -DO - 899 3342 mt 6255 3342 L -6255 3342 mt 6255 3342 L -SO - 899 3137 mt 925 3137 L -6255 3137 mt 6228 3137 L -DO - 899 3137 mt 6255 3137 L -6255 3137 mt 6255 3137 L -SO - 899 2970 mt 925 2970 L -6255 2970 mt 6228 2970 L -DO - 899 2970 mt 6255 2970 L -6255 2970 mt 6255 2970 L -SO - 899 2828 mt 925 2828 L -6255 2828 mt 6228 2828 L -DO - 899 2828 mt 6255 2828 L -6255 2828 mt 6255 2828 L -SO - 899 2706 mt 925 2706 L -6255 2706 mt 6228 2706 L -DO - 899 2706 mt 6255 2706 L -6255 2706 mt 6255 2706 L -SO - 899 2598 mt 925 2598 L -6255 2598 mt 6228 2598 L -DO - 899 2598 mt 6255 2598 L -6255 2598 mt 6255 2598 L -SO - 899 2501 mt 925 2501 L -6255 2501 mt 6228 2501 L -DO - 899 2501 mt 6255 2501 L -6255 2501 mt 6255 2501 L -SO - 899 2501 mt 952 2501 L -6255 2501 mt 6201 2501 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 2545 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 2471 mt -(-1) s - 899 1865 mt 925 1865 L -6255 1865 mt 6228 1865 L -DO - 899 1865 mt 6255 1865 L -6255 1865 mt 6255 1865 L -SO - 899 1493 mt 925 1493 L -6255 1493 mt 6228 1493 L -DO - 899 1493 mt 6255 1493 L -6255 1493 mt 6255 1493 L -SO - 899 1229 mt 925 1229 L -6255 1229 mt 6228 1229 L -DO - 899 1229 mt 6255 1229 L -6255 1229 mt 6255 1229 L -SO - 899 1024 mt 925 1024 L -6255 1024 mt 6228 1024 L -DO - 899 1024 mt 6255 1024 L -6255 1024 mt 6255 1024 L -SO - 899 857 mt 925 857 L -6255 857 mt 6228 857 L -DO - 899 857 mt 6255 857 L -6255 857 mt 6255 857 L -SO - 899 716 mt 925 716 L -6255 716 mt 6228 716 L -DO - 899 716 mt 6255 716 L -6255 716 mt 6255 716 L -SO - 899 593 mt 925 593 L -6255 593 mt 6228 593 L -DO - 899 593 mt 6255 593 L -6255 593 mt 6255 593 L -SO - 899 485 mt 925 485 L -6255 485 mt 6228 485 L -DO - 899 485 mt 6255 485 L -6255 485 mt 6255 485 L -SO - 899 389 mt 925 389 L -6255 389 mt 6228 389 L -DO - 899 389 mt 6255 389 L -6255 389 mt 6255 389 L -SO - 899 389 mt 952 389 L -6255 389 mt 6201 389 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 433 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 359 mt -(0) s - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L -gs 899 389 5357 4226 MR c np -1075 636 1075 635 1075 634 1075 629 1800 1088 5 MP stroke -gs 1727 1015 4447 2681 MR c np - 36 36 1800 1088 FO - 36 36 2875 1717 FO - 36 36 3950 2351 FO - 36 36 5025 2986 FO - 36 36 6100 3622 FO -gr - -1075 636 1075 636 1075 636 1075 636 1800 760 5 MP stroke -gs 1727 687 4447 2691 MR c np -1764 760 mt 1836 760 L -1800 724 mt 1800 796 L -2839 1396 mt 2911 1396 L -2875 1360 mt 2875 1432 L -3914 2032 mt 3986 2032 L -3950 1996 mt 3950 2068 L -4989 2668 mt 5061 2668 L -5025 2632 mt 5025 2704 L -6064 3304 mt 6136 3304 L -6100 3268 mt 6100 3340 L -1775 735 mt 1825 785 L -1825 735 mt 1775 785 L -2850 1371 mt 2900 1421 L -2900 1371 mt 2850 1421 L -3925 2007 mt 3975 2057 L -3975 2007 mt 3925 2057 L -5000 2643 mt 5050 2693 L -5050 2643 mt 5000 2693 L -6075 3279 mt 6125 3329 L -6125 3279 mt 6075 3329 L -gr - -1075 636 1075 636 1075 636 1075 636 1800 1978 5 MP stroke -gr - -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 168 FMSR - -1883 284 mt -(L2- and H\(curl\)-error vs. number of elements) s -2523 4974 mt -(number of elements in mesh) s - 585 3278 mt -90 rotate -(error in H\(curl\)-norm) s -90 rotate -1 sg -0 437 1076 0 0 -437 5119 886 4 MP -PP --1076 0 0 437 1076 0 0 -437 5119 886 5 MP stroke -4 w -DO -SO -6 w -0 sg -5119 886 mt 6195 886 L -5119 449 mt 6195 449 L -5119 886 mt 5119 449 L -6195 886 mt 6195 449 L -5119 886 mt 6195 886 L -5119 886 mt 5119 449 L -5119 886 mt 6195 886 L -5119 449 mt 6195 449 L -5119 886 mt 5119 449 L -6195 886 mt 6195 449 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -5452 571 mt -(L2-error) s -5452 709 mt -(H\(curl\)-error) s -5452 847 mt -(Order 1) s -gs 5119 449 1077 438 MR c np -200 0 5185 531 2 MP stroke -gs 5212 458 147 147 MR c np - 36 36 5285 531 FO -gr - -200 0 5185 669 2 MP stroke -gs 5212 596 147 147 MR c np -5249 669 mt 5321 669 L -5285 633 mt 5285 705 L -5260 644 mt 5310 694 L -5310 644 mt 5260 694 L -gr - -200 0 5185 808 2 MP stroke -gr - - -end - -eplot -%%EndObject - -epage -end - -showpage - -%%Trailer -%%EOF - -%%EndDocument - @endspecial 28 4616 a(Figure)f(1:)39 b(Con)m(v)m(ergence)30 -b(of)d(the)h(FE-appro)m(ximation)f(to)i(the)e(smo)s(oth)h(solution)e -(of)i(the)f Fa(MATLAB)f Fk(example)i(\(31\))28 4729 y(in)h(the)h -Fc(L)352 4696 y Fb(2)392 4729 y Fk(\(\012\)-norm)g(and)g(the)g -Fc(H)7 b Fk(\(curl)o(;)15 b(\(\012\)\)-seminorm)28 5150 -y Fn(Remark)28 b Fz(7)45 b Fm(The)22 b(mesh)g(gener)l(ation)f(and)h(r)l -(e\014nement)e(was)i(done)g(by)g Fd(PDE-toolbox)16 b -Fm(c)l(ommands.)37 b(Sinc)l(e)21 b(the)g Fd(PDE-toolbox)28 -5250 y Fm(do)l(es)32 b(not)f(supp)l(ort)h(thr)l(e)l(e)g(dimensional)h -(grids,)h(we)e(r)l(estricte)l(d)g(ourselves)g(to)g(2d)g(pr)l(oblems,)i -(and)e(we)g(have)h(so)f(far)h(no)e(nu-)28 5349 y(meric)l(al)f(r)l -(esults)f(for)i(the)f(c)l(ase)g(of)h(tetr)l(ahe)l(dr)l(al)f(grids)h(in) -f(3d.)1949 5719 y Fk(17)p eop -%%Page: 18 18 -18 17 bop 872 1803 a @beginspecial 52 @llx 194 @lly 549 -@urx 605 @ury 2693 @rwi 1984 @rhi @setspecial -%%BeginDocument: example2_errors.eps -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: MATLAB, The Mathworks, Inc. -%%Title: pix.eps -%%CreationDate: 08/26/2002 11:52:50 -%%DocumentNeededFonts: Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%Pages: 1 -%%BoundingBox: 52 194 549 605 -%%EndComments - -%%BeginProlog -% MathWorks dictionary -/MathWorks 160 dict begin -% definition operators -/bdef {bind def} bind def -/ldef {load def} bind def -/xdef {exch def} bdef -/xstore {exch store} bdef -% operator abbreviations -/c /clip ldef -/cc /concat ldef -/cp /closepath ldef -/gr /grestore ldef -/gs /gsave ldef -/mt /moveto ldef -/np /newpath ldef -/cm /currentmatrix ldef -/sm /setmatrix ldef -/rm /rmoveto ldef -/rl /rlineto ldef -/s /show ldef -/sc {setcmykcolor} bdef -/sr /setrgbcolor ldef -/sg /setgray ldef -/w /setlinewidth ldef -/j /setlinejoin ldef -/cap /setlinecap ldef -/rc {rectclip} bdef -/rf {rectfill} bdef -% page state control -/pgsv () def -/bpage {/pgsv save def} bdef -/epage {pgsv restore} bdef -/bplot /gsave ldef -/eplot {stroke grestore} bdef -% orientation switch -/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def -% coordinate system mappings -/dpi2point 0 def -% font control -/FontSize 0 def -/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] - makefont setfont} bdef -/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse - exch dup 3 1 roll findfont dup length dict begin - { 1 index /FID ne {def}{pop pop} ifelse } forall - /Encoding exch def currentdict end definefont pop} bdef -/isroman {findfont /CharStrings get /Agrave known} bdef -/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse - exch FMS} bdef -/csm {1 dpi2point div -1 dpi2point div scale neg translate - dup landscapeMode eq {pop -90 rotate} - {rotateMode eq {90 rotate} if} ifelse} bdef -% line types: solid, dotted, dashed, dotdash -/SO { [] 0 setdash } bdef -/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef -/DA { [6 dpi2point mul] 0 setdash } bdef -/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 - dpi2point mul] 0 setdash } bdef -% macros for lines and objects -/L {lineto stroke} bdef -/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef -/AP {{rlineto} repeat} bdef -/PDlw -1 def -/W {/PDlw currentlinewidth def setlinewidth} def -/PP {closepath eofill} bdef -/DP {closepath stroke} bdef -/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto - neg 0 exch rlineto closepath} bdef -/FR {MR stroke} bdef -/PR {MR fill} bdef -/L1i {{currentfile picstr readhexstring pop} image} bdef -/tMatrix matrix def -/MakeOval {newpath tMatrix currentmatrix pop translate scale -0 0 1 0 360 arc tMatrix setmatrix} bdef -/FO {MakeOval stroke} bdef -/PO {MakeOval fill} bdef -/PD {currentlinecap 1 cap 3 1 roll 2 copy mt lineto stroke - cap PDlw -1 eq not {PDlw w /PDlw -1 def} if} def -/FA {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef -/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef -/FAn {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef -/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef -/vradius 0 def /hradius 0 def /lry 0 def -/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def -/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef - /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly - vradius add translate hradius vradius scale 0 0 1 180 270 arc - tMatrix setmatrix lrx hradius sub uly vradius add translate - hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix - lrx hradius sub lry vradius sub translate hradius vradius scale - 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub - translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix - closepath} bdef -/FRR {MRR stroke } bdef -/PRR {MRR fill } bdef -/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix - closepath} bdef -/FlrRR {MlrRR stroke } bdef -/PlrRR {MlrRR fill } bdef -/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix - closepath} bdef -/FtbRR {MtbRR stroke } bdef -/PtbRR {MtbRR fill } bdef -/stri 6 array def /dtri 6 array def -/smat 6 array def /dmat 6 array def -/tmat1 6 array def /tmat2 6 array def /dif 3 array def -/asub {/ind2 exch def /ind1 exch def dup dup - ind1 get exch ind2 get sub exch } bdef -/tri_to_matrix { - 2 0 asub 3 1 asub 4 0 asub 5 1 asub - dup 0 get exch 1 get 7 -1 roll astore } bdef -/compute_transform { - dmat dtri tri_to_matrix tmat1 invertmatrix - smat stri tri_to_matrix tmat2 concatmatrix } bdef -/ds {stri astore pop} bdef -/dt {dtri astore pop} bdef -/db {2 copy /cols xdef /rows xdef mul dup string - currentfile exch readhexstring pop - /bmap xdef pop pop} bdef -/it {gs np dtri aload pop moveto lineto lineto cp c - cols rows 8 compute_transform - {bmap} image gr}bdef -/il {newpath moveto lineto stroke}bdef -currentdict end def -%%EndProlog - -%%BeginSetup -MathWorks begin - -0 cap - -end -%%EndSetup - -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 52 194 549 605 -MathWorks begin -bpage -%%EndPageSetup - -%%BeginObject: obj1 -bplot - -/dpi2point 12 def -portraitMode 0204 7344 csm - - 424 80 5969 4933 MR c np -92 dict begin %Colortable dictionary -/c0 { 0 0 0 sr} bdef -/c1 { 1 1 1 sr} bdef -/c2 { 1 0 0 sr} bdef -/c3 { 0 1 0 sr} bdef -/c4 { 0 0 1 sr} bdef -/c5 { 1 1 0 sr} bdef -/c6 { 1 0 1 sr} bdef -/c7 { 0 1 1 sr} bdef -c0 -1 j -1 sg - 0 0 6913 5185 PR -6 w -0 4225 5356 0 0 -4225 899 4614 4 MP -PP --5356 0 0 4225 5356 0 0 -4225 899 4614 5 MP stroke -4 w -DO -0 sg - 899 4614 mt 899 389 L - 899 389 mt 899 389 L -2684 4614 mt 2684 389 L -2684 389 mt 2684 389 L -4469 4614 mt 4469 389 L -4469 389 mt 4469 389 L -6255 4614 mt 6255 389 L -6255 389 mt 6255 389 L - 899 4614 mt 6255 4614 L -6255 4614 mt 6255 4614 L - 899 3205 mt 6255 3205 L -6255 3205 mt 6255 3205 L - 899 1797 mt 6255 1797 L -6255 1797 mt 6255 1797 L - 899 389 mt 6255 389 L -6255 389 mt 6255 389 L -SO -6 w - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L - 899 4614 mt 6255 4614 L - 899 4614 mt 899 389 L - 899 4614 mt 899 4587 L - 899 389 mt 899 415 L -DO - 899 4614 mt 899 389 L - 899 389 mt 899 389 L -SO - 899 4614 mt 899 4560 L - 899 389 mt 899 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 811 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 944 4722 mt -(1) s -1436 4614 mt 1436 4587 L -1436 389 mt 1436 415 L -DO -1436 4614 mt 1436 389 L -1436 389 mt 1436 389 L -SO -1750 4614 mt 1750 4587 L -1750 389 mt 1750 415 L -DO -1750 4614 mt 1750 389 L -1750 389 mt 1750 389 L -SO -1973 4614 mt 1973 4587 L -1973 389 mt 1973 415 L -DO -1973 4614 mt 1973 389 L -1973 389 mt 1973 389 L -SO -2146 4614 mt 2146 4587 L -2146 389 mt 2146 415 L -DO -2146 4614 mt 2146 389 L -2146 389 mt 2146 389 L -SO -2288 4614 mt 2288 4587 L -2288 389 mt 2288 415 L -DO -2288 4614 mt 2288 389 L -2288 389 mt 2288 389 L -SO -2407 4614 mt 2407 4587 L -2407 389 mt 2407 415 L -DO -2407 4614 mt 2407 389 L -2407 389 mt 2407 389 L -SO -2511 4614 mt 2511 4587 L -2511 389 mt 2511 415 L -DO -2511 4614 mt 2511 389 L -2511 389 mt 2511 389 L -SO -2602 4614 mt 2602 4587 L -2602 389 mt 2602 415 L -DO -2602 4614 mt 2602 389 L -2602 389 mt 2602 389 L -SO -2684 4614 mt 2684 4587 L -2684 389 mt 2684 415 L -DO -2684 4614 mt 2684 389 L -2684 389 mt 2684 389 L -SO -2684 4614 mt 2684 4560 L -2684 389 mt 2684 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -2596 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -2729 4722 mt -(2) s -3221 4614 mt 3221 4587 L -3221 389 mt 3221 415 L -DO -3221 4614 mt 3221 389 L -3221 389 mt 3221 389 L -SO -3536 4614 mt 3536 4587 L -3536 389 mt 3536 415 L -DO -3536 4614 mt 3536 389 L -3536 389 mt 3536 389 L -SO -3759 4614 mt 3759 4587 L -3759 389 mt 3759 415 L -DO -3759 4614 mt 3759 389 L -3759 389 mt 3759 389 L -SO -3932 4614 mt 3932 4587 L -3932 389 mt 3932 415 L -DO -3932 4614 mt 3932 389 L -3932 389 mt 3932 389 L -SO -4073 4614 mt 4073 4587 L -4073 389 mt 4073 415 L -DO -4073 4614 mt 4073 389 L -4073 389 mt 4073 389 L -SO -4193 4614 mt 4193 4587 L -4193 389 mt 4193 415 L -DO -4193 4614 mt 4193 389 L -4193 389 mt 4193 389 L -SO -4296 4614 mt 4296 4587 L -4296 389 mt 4296 415 L -DO -4296 4614 mt 4296 389 L -4296 389 mt 4296 389 L -SO -4387 4614 mt 4387 4587 L -4387 389 mt 4387 415 L -DO -4387 4614 mt 4387 389 L -4387 389 mt 4387 389 L -SO -4469 4614 mt 4469 4587 L -4469 389 mt 4469 415 L -DO -4469 4614 mt 4469 389 L -4469 389 mt 4469 389 L -SO -4469 4614 mt 4469 4560 L -4469 389 mt 4469 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -4381 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -4514 4722 mt -(3) s -5007 4614 mt 5007 4587 L -5007 389 mt 5007 415 L -DO -5007 4614 mt 5007 389 L -5007 389 mt 5007 389 L -SO -5321 4614 mt 5321 4587 L -5321 389 mt 5321 415 L -DO -5321 4614 mt 5321 389 L -5321 389 mt 5321 389 L -SO -5544 4614 mt 5544 4587 L -5544 389 mt 5544 415 L -DO -5544 4614 mt 5544 389 L -5544 389 mt 5544 389 L -SO -5717 4614 mt 5717 4587 L -5717 389 mt 5717 415 L -DO -5717 4614 mt 5717 389 L -5717 389 mt 5717 389 L -SO -5858 4614 mt 5858 4587 L -5858 389 mt 5858 415 L -DO -5858 4614 mt 5858 389 L -5858 389 mt 5858 389 L -SO -5978 4614 mt 5978 4587 L -5978 389 mt 5978 415 L -DO -5978 4614 mt 5978 389 L -5978 389 mt 5978 389 L -SO -6081 4614 mt 6081 4587 L -6081 389 mt 6081 415 L -DO -6081 4614 mt 6081 389 L -6081 389 mt 6081 389 L -SO -6173 4614 mt 6173 4587 L -6173 389 mt 6173 415 L -DO -6173 4614 mt 6173 389 L -6173 389 mt 6173 389 L -SO -6255 4614 mt 6255 4587 L -6255 389 mt 6255 415 L -DO -6255 4614 mt 6255 389 L -6255 389 mt 6255 389 L -SO -6255 4614 mt 6255 4560 L -6255 389 mt 6255 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -6167 4796 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - -6300 4722 mt -(4) s - 899 4614 mt 925 4614 L -6255 4614 mt 6228 4614 L -DO - 899 4614 mt 6255 4614 L -6255 4614 mt 6255 4614 L -SO - 899 4614 mt 952 4614 L -6255 4614 mt 6201 4614 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 4658 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 4584 mt -(-2) s - 899 4190 mt 925 4190 L -6255 4190 mt 6228 4190 L -DO - 899 4190 mt 6255 4190 L -6255 4190 mt 6255 4190 L -SO - 899 3942 mt 925 3942 L -6255 3942 mt 6228 3942 L -DO - 899 3942 mt 6255 3942 L -6255 3942 mt 6255 3942 L -SO - 899 3766 mt 925 3766 L -6255 3766 mt 6228 3766 L -DO - 899 3766 mt 6255 3766 L -6255 3766 mt 6255 3766 L -SO - 899 3629 mt 925 3629 L -6255 3629 mt 6228 3629 L -DO - 899 3629 mt 6255 3629 L -6255 3629 mt 6255 3629 L -SO - 899 3518 mt 925 3518 L -6255 3518 mt 6228 3518 L -DO - 899 3518 mt 6255 3518 L -6255 3518 mt 6255 3518 L -SO - 899 3423 mt 925 3423 L -6255 3423 mt 6228 3423 L -DO - 899 3423 mt 6255 3423 L -6255 3423 mt 6255 3423 L -SO - 899 3342 mt 925 3342 L -6255 3342 mt 6228 3342 L -DO - 899 3342 mt 6255 3342 L -6255 3342 mt 6255 3342 L -SO - 899 3270 mt 925 3270 L -6255 3270 mt 6228 3270 L -DO - 899 3270 mt 6255 3270 L -6255 3270 mt 6255 3270 L -SO - 899 3205 mt 925 3205 L -6255 3205 mt 6228 3205 L -DO - 899 3205 mt 6255 3205 L -6255 3205 mt 6255 3205 L -SO - 899 3205 mt 952 3205 L -6255 3205 mt 6201 3205 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 3249 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 3175 mt -(-1) s - 899 2781 mt 925 2781 L -6255 2781 mt 6228 2781 L -DO - 899 2781 mt 6255 2781 L -6255 2781 mt 6255 2781 L -SO - 899 2533 mt 925 2533 L -6255 2533 mt 6228 2533 L -DO - 899 2533 mt 6255 2533 L -6255 2533 mt 6255 2533 L -SO - 899 2357 mt 925 2357 L -6255 2357 mt 6228 2357 L -DO - 899 2357 mt 6255 2357 L -6255 2357 mt 6255 2357 L -SO - 899 2221 mt 925 2221 L -6255 2221 mt 6228 2221 L -DO - 899 2221 mt 6255 2221 L -6255 2221 mt 6255 2221 L -SO - 899 2109 mt 925 2109 L -6255 2109 mt 6228 2109 L -DO - 899 2109 mt 6255 2109 L -6255 2109 mt 6255 2109 L -SO - 899 2015 mt 925 2015 L -6255 2015 mt 6228 2015 L -DO - 899 2015 mt 6255 2015 L -6255 2015 mt 6255 2015 L -SO - 899 1933 mt 925 1933 L -6255 1933 mt 6228 1933 L -DO - 899 1933 mt 6255 1933 L -6255 1933 mt 6255 1933 L -SO - 899 1861 mt 925 1861 L -6255 1861 mt 6228 1861 L -DO - 899 1861 mt 6255 1861 L -6255 1861 mt 6255 1861 L -SO - 899 1797 mt 925 1797 L -6255 1797 mt 6228 1797 L -DO - 899 1797 mt 6255 1797 L -6255 1797 mt 6255 1797 L -SO - 899 1797 mt 952 1797 L -6255 1797 mt 6201 1797 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 1841 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 1767 mt -(0) s - 899 1373 mt 925 1373 L -6255 1373 mt 6228 1373 L -DO - 899 1373 mt 6255 1373 L -6255 1373 mt 6255 1373 L -SO - 899 1125 mt 925 1125 L -6255 1125 mt 6228 1125 L -DO - 899 1125 mt 6255 1125 L -6255 1125 mt 6255 1125 L -SO - 899 949 mt 925 949 L -6255 949 mt 6228 949 L -DO - 899 949 mt 6255 949 L -6255 949 mt 6255 949 L -SO - 899 812 mt 925 812 L -6255 812 mt 6228 812 L -DO - 899 812 mt 6255 812 L -6255 812 mt 6255 812 L -SO - 899 701 mt 925 701 L -6255 701 mt 6228 701 L -DO - 899 701 mt 6255 701 L -6255 701 mt 6255 701 L -SO - 899 607 mt 925 607 L -6255 607 mt 6228 607 L -DO - 899 607 mt 6255 607 L -6255 607 mt 6255 607 L -SO - 899 525 mt 925 525 L -6255 525 mt 6228 525 L -DO - 899 525 mt 6255 525 L -6255 525 mt 6255 525 L -SO - 899 453 mt 925 453 L -6255 453 mt 6228 453 L -DO - 899 453 mt 6255 453 L -6255 453 mt 6255 453 L -SO - 899 389 mt 925 389 L -6255 389 mt 6228 389 L -DO - 899 389 mt 6255 389 L -6255 389 mt 6255 389 L -SO - 899 389 mt 952 389 L -6255 389 mt 6201 389 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 640 433 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 80 FMSR - - 773 359 mt -(1) s - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L -gs 899 389 5357 4226 MR c np -1075 424 1075 424 1075 427 1075 427 1800 2062 5 MP stroke -gs 1727 1989 4447 1849 MR c np - 36 36 1800 2062 FO - 36 36 2875 2489 FO - 36 36 3950 2916 FO - 36 36 5025 3340 FO - 36 36 6100 3764 FO -gr - -1075 423 1075 422 1075 415 1075 390 1800 1114 5 MP stroke -gs 1727 1041 4447 1797 MR c np -1764 1114 mt 1836 1114 L -1800 1078 mt 1800 1150 L -2839 1504 mt 2911 1504 L -2875 1468 mt 2875 1540 L -3914 1919 mt 3986 1919 L -3950 1883 mt 3950 1955 L -4989 2341 mt 5061 2341 L -5025 2305 mt 5025 2377 L -6064 2764 mt 6136 2764 L -6100 2728 mt 6100 2800 L -1775 1089 mt 1825 1139 L -1825 1089 mt 1775 1139 L -2850 1479 mt 2900 1529 L -2900 1479 mt 2850 1529 L -3925 1894 mt 3975 1944 L -3975 1894 mt 3925 1944 L -5000 2316 mt 5050 2366 L -5050 2316 mt 5000 2366 L -6075 2739 mt 6125 2789 L -6125 2739 mt 6075 2789 L -gr - -1075 424 1075 424 1075 424 1075 424 1800 2857 5 MP stroke -gr - -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 168 FMSR - -1883 284 mt -(L2- and H\(curl\)-error vs. number of elements) s -2523 4974 mt -(number of elements in mesh) s - 585 3278 mt -90 rotate -(error in H\(curl\)-norm) s -90 rotate -1 sg -0 437 1076 0 0 -437 5119 886 4 MP -PP --1076 0 0 437 1076 0 0 -437 5119 886 5 MP stroke -4 w -DO -SO -6 w -0 sg -5119 886 mt 6195 886 L -5119 449 mt 6195 449 L -5119 886 mt 5119 449 L -6195 886 mt 6195 449 L -5119 886 mt 6195 886 L -5119 886 mt 5119 449 L -5119 886 mt 6195 886 L -5119 449 mt 6195 449 L -5119 886 mt 5119 449 L -6195 886 mt 6195 449 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -5452 571 mt -(L2-error) s -5452 709 mt -(H\(curl\)-error) s -5452 847 mt -(Order 1) s -gs 5119 449 1077 438 MR c np -200 0 5185 531 2 MP stroke -gs 5212 458 147 147 MR c np - 36 36 5285 531 FO -gr - -200 0 5185 669 2 MP stroke -gs 5212 596 147 147 MR c np -5249 669 mt 5321 669 L -5285 633 mt 5285 705 L -5260 644 mt 5310 694 L -5310 644 mt 5260 694 L -gr - -200 0 5185 808 2 MP stroke -gr - - -end - -eplot -%%EndObject - -epage -end - -showpage - -%%Trailer -%%EOF - -%%EndDocument - @endspecial 28 1999 a Fk(Figure)27 b(2:)39 b(Con)m(v)m(ergence)30 -b(of)d(the)h(FE-appro)m(ximation)f(to)i(the)e(smo)s(oth)h(solution)e -(of)i(the)f Fa(MATLAB)f Fk(example)i(\(32\))28 2112 y(in)h(the)h -Fc(L)352 2079 y Fb(2)392 2112 y Fk(\(\012\)-norm)g(and)g(the)g -Fc(H)7 b Fk(\(curl)o(;)15 b(\(\012\)\)-seminorm)28 2458 -y Fz(As)27 b(for)f(meshes)h(with)g(quadrilateral)e(cells,)i(n)n -(umerical)f(results)g(w)n(ere)g(obtained)h(with)g(a)g -Fd(deal.II)d Fz(co)r(de,)j(using)f(the)i(\014nite)28 -2558 y(elemen)n(t)i(class)f Fd(fe/fe)p 754 2571 44 4 -v 42 w(nedelec.cc)p Fz(.)40 b(This)30 b(class)f(pro)n(vides)g(N)n(\023) --39 b(ed)n(\023)g(elec's)28 b Fx(H)7 b Fz(\(curl;)14 -b(\012\)-conforming)29 b(elemen)n(t)h(of)g(\014rst)g(t)n(yp)r(e)28 -2657 y(and)22 b(lo)n(w)n(est)f(order)h(in)g(t)n(w)n(o)g(and)h(three)f -(space)g(dimensions,)h(on)f(bilinear)g(quadrilateral,)g(resp.)34 -b(trilinear)22 b(hexahedral)f(grids.)28 2757 y(F)-7 b(or)29 -b(details)h(ab)r(out)g Fd(deal.II)p Fz(,)e(see)i([2)o(].)45 -b(In)30 b(the)h(follo)n(wing)e(results)h(w)n(ere)f(obtained)h(for)g -(the)g(mo)r(del)h(problem)e(\(1\))i(in)f(t)n(w)n(o)28 -2856 y(dimensions)25 b(using)g(the)h(data)f(\(32\).)35 -b(W)-7 b(e)26 b(computed)g(the)g(solution)f(on)g(\014v)n(e)g(successiv) -n(e)f(non-a\016ne)h(bilinear)g(grids)f(\()i(\014gure)28 -2956 y(3\),)h(eac)n(h)g(of)g(whic)n(h)h(w)n(as)f(obtained)g(b)n(y)g -(global)g(re\014nemen)n(t)g(of)h(the)g(previous)e(one.)1345 -4376 y @beginspecial 0 @llx 0 @lly 301 @urx 301 @ury -1559 @rwi 1559 @rhi @setspecial -%%BeginDocument: grid.eps -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: deal.II Output -%%Creator: the deal.II library -%%Creation Date: 2003/4/28 - 11: 4:40 -%%BoundingBox: 0 0 301 301 -/m {moveto} bind def -/x {lineto stroke} bind def -/b {0 0 0 setrgbcolor} def -/r {1 0 0 setrgbcolor} def -%%EndProlog - -0.5 setlinewidth -b 0 0 m 75 0 x -b 75 0 m 150 0 x -b 150 0 m 166.915 82.0968 x -b 166.915 82.0968 m 179.319 164.952 x -b 0 150 m 90.0209 159.679 x -b 90.0209 159.679 m 179.319 164.952 x -b 0 0 m 0 75 x -b 0 75 m 0 150 x -b 75 0 m 83.5481 81.6946 x -b 83.5481 81.6946 m 90.0209 159.679 x -b 0 75 m 83.5481 81.6946 x -b 83.5481 81.6946 m 166.915 82.0968 x -b 150 0 m 225 0 x -b 225 0 m 300 0 x -b 300 0 m 300 75 x -b 300 75 m 300 150 x -b 179.319 164.952 m 240.445 158.833 x -b 240.445 158.833 m 300 150 x -b 225 0 m 233.767 80.9701 x -b 233.767 80.9701 m 240.445 158.833 x -b 166.915 82.0968 m 233.767 80.9701 x -b 233.767 80.9701 m 300 75 x -b 300 150 m 300 225 x -b 300 225 m 300 300 x -b 150 300 m 225 300 x -b 225 300 m 300 300 x -b 179.319 164.952 m 166.039 233.741 x -b 166.039 233.741 m 150 300 x -b 240.445 158.833 m 234.054 230.742 x -b 234.054 230.742 m 225 300 x -b 166.039 233.741 m 234.054 230.742 x -b 234.054 230.742 m 300 225 x -b 0 300 m 75 300 x -b 75 300 m 150 300 x -b 0 150 m 0 225 x -b 0 225 m 0 300 x -b 90.0209 159.679 m 82.6087 231.699 x -b 82.6087 231.699 m 75 300 x -b 0 225 m 82.6087 231.699 x -b 82.6087 231.699 m 166.039 233.741 x -showpage - -%%EndDocument - @endspecial 276 4572 a Fk(Figure)k(3:)41 b(Non-a\016ne)31 -b(bilinear)d(grid)h(used)g(in)g(the)i Fa(deal.II)d Fk(co)s(de,)j(after) -g(one)g(re\014nemen)m(t)f(step.)28 4867 y Fz(Again,)25 -b(in)g(T)-7 b(able)25 b(2)g(w)n(e)f(can)h(observ)n(e)e(optimal)i(con)n -(v)n(ergence)e(of)i(order)e Fs(O)r Fz(\()p Fx(h)p Fz(\))j(in)g(the)f -Fx(H)7 b Fz(\(curl;)14 b(\012\)-norm.)35 b(The)25 b(same)g(order)28 -4967 y(of)i(con)n(v)n(ergence)e(is)j(obtained)f(for)g(the)h(error)e(in) -i(the)g Fx(L)1777 4937 y Fp(2)1813 4967 y Fz(\(\012\)-norm.)28 -5166 y(With)d Fd(deal.II)p Fz(,)d(w)n(e)j(are)f(also)f(able)i(to)f -(treat)h(3d)f(problems)g(on)h(hexahedral)e(grids.)35 -b(F)-7 b(or)25 b(our)f(t)n(yp)r(e)h(of)f(problem,)h(N)n(\023)-39 -b(ed)n(\023)g(elec's)28 5266 y Fx(H)7 b Fz(\(curl)o(;)14 -b(\012\)-conforming)k(elemen)n(ts)g(of)h(\014rst)f(t)n(yp)r(e)h(and)f -(lo)n(w)n(est)g(order,)h(based)f(on)h(a)f(cubic)h(reference)e(elemen)n -(t,)k(are)d(a)n(v)-5 b(ailable.)1949 5719 y Fk(18)p eop -%%Page: 19 19 -19 18 bop 910 153 2170 4 v 908 266 4 113 v 960 232 a -Fk(grid)p 1165 266 V 98 w(#)30 b(cells)p 1537 266 V 1537 -266 V 170 w Fc(H)7 b Fk(\(curl)o(\)-error)p 2307 266 -V 2307 266 V 344 w Fc(L)2594 199 y Fb(2)2633 232 y Fk(-error)p -3077 266 V 910 269 2170 4 v 908 382 4 113 v 1015 348 -a(1)p 1165 382 V 384 w(4)p 1537 382 V 100 w(6.112e+00)p -2046 382 V 168 w(-)p 2307 382 V 166 w(1.442e+00)p 2816 -382 V 168 w(-)p 3077 382 V 910 385 2170 4 v 908 498 4 -113 v 1015 464 a(2)p 1165 498 V 338 w(16)p 1537 498 V -101 w(3.688e+00)p 2046 498 V 103 w(0.73)p 2307 498 V -121 w(6.765e-01)p 2816 498 V 124 w(1.09)p 3077 498 V -910 501 2170 4 v 908 614 4 113 v 1015 580 a(3)p 1165 -614 V 338 w(64)p 1537 614 V 101 w(1.991e+00)p 2046 614 -V 103 w(0.89)p 2307 614 V 121 w(3.280e-01)p 2816 614 -V 124 w(1.04)p 3077 614 V 910 618 2170 4 v 908 731 4 -113 v 1015 697 a(4)p 1165 731 V 293 w(256)p 1537 731 -V 101 w(1.015e+00)p 2046 731 V 103 w(0.97)p 2307 731 -V 121 w(1.617e-01)p 2816 731 V 124 w(1.02)p 3077 731 -V 910 734 2170 4 v 908 847 4 113 v 1015 813 a(5)p 1165 -847 V 247 w(1024)p 1537 847 V 122 w(5.098e-01)p 2046 -847 V 124 w(0.99)p 2307 847 V 121 w(8.049e-02)p 2816 -847 V 124 w(1.01)p 3077 847 V 910 850 2170 4 v 28 1117 -a(T)-8 b(able)26 b(2:)39 b(Errors)26 b(and)g(con)m(v)m(ergence)j(rates) -f(in)d(the)i Fc(H)7 b Fk(\(curl)o(;)15 b(\012\)-)28 b(and)e -Fc(L)2511 1084 y Fb(2)2550 1117 y Fk(\(\012\)-norm)h(for)g(the)g -(2d-example)f(solv)m(ed)28 1230 y(with)j Fa(deal.II)p -Fk(.)28 1458 y Fz(W)-7 b(e)28 b(computed)f(an)h(appro)n(ximation)d(to)j -(the)g(mo)r(del)g(problem)f(\(1\))g(in)h(3d)g(using)f(the)h(data)675 -1740 y Fx(c)23 b Fs(\021)f Fz(1)14 b Fx(;)180 b(f)p 1080 -1770 50 4 v 8 w Fz(\()p Fx(x;)14 b(y)s(;)g(z)t Fz(\))23 -b(=)1512 1574 y Fl(0)1512 1723 y(@)1794 1640 y Fx(xy)s -Fz(\(1)18 b Fs(\000)g Fx(y)2104 1610 y Fp(2)2141 1640 -y Fz(\)\(1)g Fs(\000)g Fx(z)2391 1610 y Fp(2)2428 1640 -y Fz(\))h(+)f(2)p Fx(xy)s Fz(\(1)g Fs(\000)g Fx(z)2913 -1610 y Fp(2)2949 1640 y Fz(\))1626 1740 y Fx(y)1670 1709 -y Fp(2)1707 1740 y Fz(\(1)g Fs(\000)g Fx(x)1929 1709 -y Fp(2)1967 1740 y Fz(\)\(1)g Fs(\000)g Fx(z)2217 1709 -y Fp(2)2254 1740 y Fz(\))g(+)h(\(1)f Fs(\000)g Fx(y)2607 -1709 y Fp(2)2644 1740 y Fz(\)\(2)g Fs(\000)g Fx(x)2898 -1709 y Fp(2)2954 1740 y Fs(\000)g Fx(z)3080 1709 y Fp(2)3117 -1740 y Fz(\))1794 1839 y Fx(y)s(z)t Fz(\(1)f Fs(\000)h -Fx(x)2102 1809 y Fp(2)2139 1839 y Fz(\)\(1)h Fs(\000)f -Fx(y)2391 1809 y Fp(2)2428 1839 y Fz(\))h(+)f(2)p Fx(y)s(z)t -Fz(\(1)e Fs(\000)i Fx(x)2911 1809 y Fp(2)2949 1839 y -Fz(\))3191 1574 y Fl(1)3191 1723 y(A)3291 1740 y Fx(:)500 -b Fz(\(33\))28 2018 y(In)25 b(a)g(\014rst)f(exp)r(erimen)n(t,)i(the)f -(\014nite)h(elemen)n(t)f(solution)g(w)n(as)f(computed)h(on)g(\014v)n(e) -g(successiv)n(e)f(globally)f(re\014ned)i(a\016ne)g(grids.)28 -2118 y(In)c(a)g(second)g(computation,)i(w)n(e)e(appro)n(ximated)f(the)i -(solution)f(of)g(the)h(same)f(problem)g(on)g(\014v)n(e)g(successiv)n(e) -f(globally)h(re\014ned)28 2217 y(non-a\016ne)26 b(trilinear)h(grids.)28 -2317 y(W)-7 b(e)28 b(see)g(in)h(T)-7 b(able)28 b(3)g(that)g(in)h(b)r -(oth)g(cases)e(w)n(e)h(observ)n(e)e(again)h(con)n(v)n(ergence)f(of)j -(order)d Fs(O)r Fz(\()p Fx(h)p Fz(\))k(in)e(the)h Fx(H)7 -b Fz(\(curl;)14 b(\012\)-)28 b(and)g(the)28 2417 y Fx(L)85 -2386 y Fp(2)121 2417 y Fz(\(\012\)-norm.)p 594 2619 2800 -4 v 592 2732 4 113 v 1304 2732 V 1356 2698 a Fk(grid)p -1561 2732 V 98 w(#)i(cells)p 1934 2732 V 1934 2732 V -150 w Fc(H)7 b Fk(\(curl)o(\)-error)p 2663 2732 V 2663 -2732 V 303 w Fc(L)2929 2665 y Fb(2)2969 2698 y Fk(-error)p -3393 2732 V 594 2735 2800 4 v 592 2848 4 113 v 1304 2848 -V 1411 2814 a(1)p 1561 2848 V 384 w(8)p 1934 2848 V 100 -w(7.696e-01)p 2402 2848 V 169 w(-)p 2663 2848 V 166 w(6.609e-01)p -3131 2848 V 169 w(-)p 3393 2848 V 592 2961 V 1304 2961 -V 1411 2927 a(2)p 1561 2961 V 339 w(64)p 1934 2961 V -100 w(4.088e-01)p 2402 2961 V 103 w(0.91)p 2663 2961 -V 102 w(2.943e-01)p 3131 2961 V 103 w(1.17)p 3393 2961 -V 592 3074 V 733 3040 a(a\016ne)30 b(grids)p 1304 3074 -V 242 w(3)p 1561 3074 V 293 w(512)p 1934 3074 V 101 w(2.075e-01)p -2402 3074 V 103 w(0.98)p 2663 3074 V 102 w(1.408e-01)p -3131 3074 V 103 w(1.06)p 3393 3074 V 592 3187 V 1304 -3187 V 1411 3153 a(4)p 1561 3187 V 248 w(4096)p 1934 -3187 V 101 w(1.041e-01)p 2402 3187 V 103 w(0.99)p 2663 -3187 V 102 w(6.955e-02)p 3131 3187 V 103 w(1.02)p 3393 -3187 V 592 3300 V 1304 3300 V 1411 3266 a(5)p 1561 3300 -V 202 w(32768)p 1934 3300 V 102 w(5.210e-02)p 2402 3300 -V 103 w(1.00)p 2663 3300 V 102 w(3.467e-02)p 3131 3300 -V 103 w(1.00)p 3393 3300 V 594 3303 2800 4 v 592 3416 -4 113 v 1304 3416 V 1411 3382 a(1)p 1561 3416 V 384 w(8)p -1934 3416 V 100 w(7.716e-01)p 2402 3416 V 169 w(-)p 2663 -3416 V 166 w(6.611e-01)p 3131 3416 V 169 w(-)p 3393 3416 -V 592 3529 V 1304 3529 V 1411 3495 a(2)p 1561 3529 V -339 w(64)p 1934 3529 V 100 w(4.108e-01)p 2402 3529 V -103 w(0.91)p 2663 3529 V 102 w(2.955e-01)p 3131 3529 -V 103 w(1.16)p 3393 3529 V 592 3642 V 644 3608 a(non-a\016ne)g(grids)p -1304 3642 V 154 w(3)p 1561 3642 V 293 w(512)p 1934 3642 -V 101 w(2.085e-01)p 2402 3642 V 103 w(0.98)p 2663 3642 -V 102 w(1.413e-01)p 3131 3642 V 103 w(1.06)p 3393 3642 -V 592 3755 V 1304 3755 V 1411 3721 a(4)p 1561 3755 V -248 w(4096)p 1934 3755 V 101 w(1.046e-01)p 2402 3755 -V 103 w(0.99)p 2663 3755 V 102 w(6.982e-02)p 3131 3755 -V 103 w(1.02)p 3393 3755 V 592 3868 V 1304 3868 V 1411 -3834 a(5)p 1561 3868 V 202 w(32768)p 1934 3868 V 102 -w(5.237e-02)p 2402 3868 V 103 w(1.00)p 2663 3868 V 102 -w(3.480e-02)p 3131 3868 V 103 w(1.00)p 3393 3868 V 594 -3871 2800 4 v 28 4138 a(T)-8 b(able)26 b(3:)39 b(Errors)26 -b(and)g(con)m(v)m(ergence)j(rates)f(in)d(the)i Fc(H)7 -b Fk(\(curl)o(;)15 b(\012\)-)28 b(and)e Fc(L)2511 4105 -y Fb(2)2550 4138 y Fk(\(\012\)-norm)h(for)g(the)g(3d-example)f(solv)m -(ed)28 4251 y(with)g Fa(deal.II)p Fk(.)h(The)g(\014rst)h(data)g(set)h -(is)e(for)h(the)g(computation)g(on)g(a)h(family)d(of)i(a\016ne)h -(grids,)e(the)h(second)g(set)h(of)28 4364 y(data)i(is)e(for)h -(non-a\016ne)g(trilinear)e(grids.)28 4581 y Fz(The)18 -b(conclusion)g(that)g(can)g(b)r(e)h(dra)n(wn)e(from)h(these)h(n)n -(umerical)e(exp)r(erimen)n(ts)h(is,)i(that)f(the)g(restriction)e(to)h -(three-dimensional)28 4680 y(tetrahedral)26 b(grids)h(of)g(Hiptmair's)h -(result)f(on)g(the)h Fx(L)1715 4650 y Fp(2)1752 4680 -y Fz(-con)n(v)n(ergence)d(of)i(the)h(error)e(\(6\))i(cannot)f(b)r(e)h -(relaxed.)28 4879 y(Finally)-7 b(,)27 b(here)g(are)g(some)g(prett)n(y)g -(pictures:)37 b(the)28 b(v)n(ector)e(\014eld)i(plots)f(from)h(the)g -Fd(MATLAB)d Fz(computations.)1949 5719 y Fk(19)p eop -%%Page: 20 20 -20 19 bop 872 2130 a @beginspecial 55 @llx 201 @lly 549 -@urx 611 @ury 2692 @rwi 1984 @rhi @setspecial -%%BeginDocument: field1.eps -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: MATLAB, The Mathworks, Inc. -%%Title: field1.eps -%%CreationDate: 08/26/2002 11:46:33 -%%DocumentNeededFonts: Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%Pages: 1 -%%BoundingBox: 55 201 549 611 -%%EndComments - -%%BeginProlog -% MathWorks dictionary -/MathWorks 160 dict begin -% definition operators -/bdef {bind def} bind def -/ldef {load def} bind def -/xdef {exch def} bdef -/xstore {exch store} bdef -% operator abbreviations -/c /clip ldef -/cc /concat ldef -/cp /closepath ldef -/gr /grestore ldef -/gs /gsave ldef -/mt /moveto ldef -/np /newpath ldef -/cm /currentmatrix ldef -/sm /setmatrix ldef -/rm /rmoveto ldef -/rl /rlineto ldef -/s /show ldef -/sc {setcmykcolor} bdef -/sr /setrgbcolor ldef -/sg /setgray ldef -/w /setlinewidth ldef -/j /setlinejoin ldef -/cap /setlinecap ldef -/rc {rectclip} bdef -/rf {rectfill} bdef -% page state control -/pgsv () def -/bpage {/pgsv save def} bdef -/epage {pgsv restore} bdef -/bplot /gsave ldef -/eplot {stroke grestore} bdef -% orientation switch -/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def -% coordinate system mappings -/dpi2point 0 def -% font control -/FontSize 0 def -/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] - makefont setfont} bdef -/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse - exch dup 3 1 roll findfont dup length dict begin - { 1 index /FID ne {def}{pop pop} ifelse } forall - /Encoding exch def currentdict end definefont pop} bdef -/isroman {findfont /CharStrings get /Agrave known} bdef -/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse - exch FMS} bdef -/csm {1 dpi2point div -1 dpi2point div scale neg translate - dup landscapeMode eq {pop -90 rotate} - {rotateMode eq {90 rotate} if} ifelse} bdef -% line types: solid, dotted, dashed, dotdash -/SO { [] 0 setdash } bdef -/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef -/DA { [6 dpi2point mul] 0 setdash } bdef -/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 - dpi2point mul] 0 setdash } bdef -% macros for lines and objects -/L {lineto stroke} bdef -/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef -/AP {{rlineto} repeat} bdef -/PDlw -1 def -/W {/PDlw currentlinewidth def setlinewidth} def -/PP {closepath eofill} bdef -/DP {closepath stroke} bdef -/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto - neg 0 exch rlineto closepath} bdef -/FR {MR stroke} bdef -/PR {MR fill} bdef -/L1i {{currentfile picstr readhexstring pop} image} bdef -/tMatrix matrix def -/MakeOval {newpath tMatrix currentmatrix pop translate scale -0 0 1 0 360 arc tMatrix setmatrix} bdef -/FO {MakeOval stroke} bdef -/PO {MakeOval fill} bdef -/PD {currentlinecap 1 cap 3 1 roll 2 copy mt lineto stroke - cap PDlw -1 eq not {PDlw w /PDlw -1 def} if} def -/FA {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef -/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef -/FAn {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef -/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef -/vradius 0 def /hradius 0 def /lry 0 def -/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def -/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef - /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly - vradius add translate hradius vradius scale 0 0 1 180 270 arc - tMatrix setmatrix lrx hradius sub uly vradius add translate - hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix - lrx hradius sub lry vradius sub translate hradius vradius scale - 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub - translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix - closepath} bdef -/FRR {MRR stroke } bdef -/PRR {MRR fill } bdef -/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix - closepath} bdef -/FlrRR {MlrRR stroke } bdef -/PlrRR {MlrRR fill } bdef -/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix - closepath} bdef -/FtbRR {MtbRR stroke } bdef -/PtbRR {MtbRR fill } bdef -/stri 6 array def /dtri 6 array def -/smat 6 array def /dmat 6 array def -/tmat1 6 array def /tmat2 6 array def /dif 3 array def -/asub {/ind2 exch def /ind1 exch def dup dup - ind1 get exch ind2 get sub exch } bdef -/tri_to_matrix { - 2 0 asub 3 1 asub 4 0 asub 5 1 asub - dup 0 get exch 1 get 7 -1 roll astore } bdef -/compute_transform { - dmat dtri tri_to_matrix tmat1 invertmatrix - smat stri tri_to_matrix tmat2 concatmatrix } bdef -/ds {stri astore pop} bdef -/dt {dtri astore pop} bdef -/db {2 copy /cols xdef /rows xdef mul dup string - currentfile exch readhexstring pop - /bmap xdef pop pop} bdef -/it {gs np dtri aload pop moveto lineto lineto cp c - cols rows 8 compute_transform - {bmap} image gr}bdef -/il {newpath moveto lineto stroke}bdef -currentdict end def -%%EndProlog - -%%BeginSetup -MathWorks begin - -0 cap - -end -%%EndSetup - -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 55 201 549 611 -MathWorks begin -bpage -%%EndPageSetup - -%%BeginObject: obj1 -bplot - -/dpi2point 12 def -portraitMode 0204 7344 csm - - 457 4 5930 4927 MR c np -92 dict begin %Colortable dictionary -/c0 { 0 0 0 sr} bdef -/c1 { 1 1 1 sr} bdef -/c2 { 1 0 0 sr} bdef -/c3 { 0 1 0 sr} bdef -/c4 { 0 0 1 sr} bdef -/c5 { 1 1 0 sr} bdef -/c6 { 1 0 1 sr} bdef -/c7 { 0 1 1 sr} bdef -c0 -1 j -1 sg - 0 0 6913 5185 PR -6 w -0 4225 5356 0 0 -4225 899 4614 4 MP -PP --5356 0 0 4225 5356 0 0 -4225 899 4614 5 MP stroke -4 w -DO -SO -6 w -0 sg - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L - 899 4614 mt 6255 4614 L - 899 4614 mt 899 389 L - 899 4614 mt 899 4560 L - 899 389 mt 899 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 796 4759 mt -(-1) s -1970 4614 mt 1970 4560 L -1970 389 mt 1970 442 L -1817 4759 mt -(-0.5) s -3041 4614 mt 3041 4560 L -3041 389 mt 3041 442 L -3008 4759 mt -(0) s -4112 4614 mt 4112 4560 L -4112 389 mt 4112 442 L -4029 4759 mt -(0.5) s -5183 4614 mt 5183 4560 L -5183 389 mt 5183 442 L -5150 4759 mt -(1) s -6255 4614 mt 6255 4560 L -6255 389 mt 6255 442 L -6172 4759 mt -(1.5) s - 899 4614 mt 952 4614 L -6255 4614 mt 6201 4614 L - 628 4658 mt -(-1.5) s - 899 3909 mt 952 3909 L -6255 3909 mt 6201 3909 L - 728 3953 mt -(-1) s - 899 3205 mt 952 3205 L -6255 3205 mt 6201 3205 L - 628 3249 mt -(-0.5) s - 899 2501 mt 952 2501 L -6255 2501 mt 6201 2501 L - 798 2545 mt -(0) s - 899 1797 mt 952 1797 L -6255 1797 mt 6201 1797 L - 698 1841 mt -(0.5) s - 899 1093 mt 952 1093 L -6255 1093 mt 6201 1093 L - 798 1137 mt -(1) s - 899 389 mt 952 389 L -6255 389 mt 6201 389 L - 698 433 mt -(1.5) s - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L -gs 899 389 5357 4226 MR c np -15 0 899 3909 2 MP stroke -74 0 899 3708 2 MP stroke -137 0 899 3507 2 MP stroke -176 0 899 3306 2 MP stroke -217 0 899 3105 2 MP stroke -237 0 899 2903 2 MP stroke -257 0 899 2702 2 MP stroke -257 0 899 2501 2 MP stroke -247 0 899 2300 2 MP stroke -235 0 899 2099 2 MP stroke -206 0 899 1897 2 MP stroke -172 0 899 1696 2 MP stroke -123 0 899 1495 2 MP stroke -67 0 899 1294 2 MP stroke -899 1093 PD -0 -49 1205 3909 2 MP stroke -74 -40 1205 3708 2 MP stroke -124 -48 1205 3507 2 MP stroke -176 -41 1205 3306 2 MP stroke -206 -48 1205 3105 2 MP stroke -237 -41 1205 2903 2 MP stroke -248 -47 1205 2702 2 MP stroke -257 -42 1205 2501 2 MP stroke -254 -47 1205 2300 2 MP stroke -235 -43 1205 2099 2 MP stroke -210 -45 1205 1897 2 MP stroke -172 -44 1205 1696 2 MP stroke -126 -45 1205 1495 2 MP stroke -68 -45 1205 1294 2 MP stroke -0 -45 1205 1093 2 MP stroke -0 -90 1511 3909 2 MP stroke -73 -81 1511 3708 2 MP stroke -124 -89 1511 3507 2 MP stroke -176 -82 1511 3306 2 MP stroke -216 -82 1511 3105 2 MP stroke -237 -82 1511 2903 2 MP stroke -255 -82 1511 2702 2 MP stroke -257 -82 1511 2501 2 MP stroke -249 -83 1511 2300 2 MP stroke -235 -83 1511 2099 2 MP stroke -208 -82 1511 1897 2 MP stroke -172 -82 1511 1696 2 MP stroke -126 -83 1511 1495 2 MP stroke -68 -83 1511 1294 2 MP stroke -0 -82 1511 1093 2 MP stroke -0 -116 1817 3909 2 MP stroke -61 -116 1817 3708 2 MP stroke -124 -116 1817 3507 2 MP stroke -166 -116 1817 3306 2 MP stroke -207 -116 1817 3105 2 MP stroke -237 -110 1817 2903 2 MP stroke -249 -115 1817 2702 2 MP stroke -257 -112 1817 2501 2 MP stroke -253 -115 1817 2300 2 MP stroke -235 -113 1817 2099 2 MP stroke -210 -114 1817 1897 2 MP stroke -173 -114 1817 1696 2 MP stroke -125 -114 1817 1495 2 MP stroke -67 -114 1817 1294 2 MP stroke -0 -114 1817 1093 2 MP stroke -0 -143 2123 3909 2 MP stroke -72 -136 2123 3708 2 MP stroke -124 -142 2123 3507 2 MP stroke -175 -137 2123 3306 2 MP stroke -214 -137 2123 3105 2 MP stroke -237 -137 2123 2903 2 MP stroke -254 -137 2123 2702 2 MP stroke -257 -137 2123 2501 2 MP stroke -250 -138 2123 2300 2 MP stroke -236 -138 2123 2099 2 MP stroke -210 -138 2123 1897 2 MP stroke -173 -138 2123 1696 2 MP stroke -125 -137 2123 1495 2 MP stroke -69 -139 2123 1294 2 MP stroke -0 -136 2123 1093 2 MP stroke -0 -156 2429 3909 2 MP stroke -63 -156 2429 3708 2 MP stroke -125 -156 2429 3507 2 MP stroke -168 -156 2429 3306 2 MP stroke -208 -156 2429 3105 2 MP stroke -237 -152 2429 2903 2 MP stroke -250 -155 2429 2702 2 MP stroke -257 -154 2429 2501 2 MP stroke -252 -156 2429 2300 2 MP stroke -236 -156 2429 2099 2 MP stroke -209 -155 2429 1897 2 MP stroke -171 -155 2429 1696 2 MP stroke -125 -155 2429 1495 2 MP stroke -65 -155 2429 1294 2 MP stroke -0 -155 2429 1093 2 MP stroke -0 -169 2735 3909 2 MP stroke -71 -163 2735 3708 2 MP stroke -125 -168 2735 3507 2 MP stroke -175 -164 2735 3306 2 MP stroke -208 -168 2735 3105 2 MP stroke -236 -164 2735 2903 2 MP stroke -251 -166 2735 2702 2 MP stroke -257 -165 2735 2501 2 MP stroke -252 -166 2735 2300 2 MP stroke -236 -166 2735 2099 2 MP stroke -209 -164 2735 1897 2 MP stroke -174 -166 2735 1696 2 MP stroke -125 -164 2735 1495 2 MP stroke -70 -167 2735 1294 2 MP stroke -0 -163 2735 1093 2 MP stroke -0 -169 3041 3909 2 MP stroke -64 -169 3041 3708 2 MP stroke -125 -169 3041 3507 2 MP stroke -170 -169 3041 3306 2 MP stroke -209 -169 3041 3105 2 MP stroke -234 -169 3041 2903 2 MP stroke -251 -169 3041 2702 2 MP stroke -257 -169 3041 2501 2 MP stroke -251 -169 3041 2300 2 MP stroke -234 -169 3041 2099 2 MP stroke -209 -169 3041 1897 2 MP stroke -170 -169 3041 1696 2 MP stroke -125 -169 3041 1495 2 MP stroke -64 -169 3041 1294 2 MP stroke -0 -169 3041 1093 2 MP stroke -0 -163 3347 3909 2 MP stroke -71 -167 3347 3708 2 MP stroke -125 -164 3347 3507 2 MP stroke -174 -167 3347 3306 2 MP stroke -209 -165 3347 3105 2 MP stroke -236 -166 3347 2903 2 MP stroke -252 -165 3347 2702 2 MP stroke -257 -165 3347 2501 2 MP stroke -251 -167 3347 2300 2 MP stroke -237 -165 3347 2099 2 MP stroke -209 -167 3347 1897 2 MP stroke -175 -164 3347 1696 2 MP stroke -125 -168 3347 1495 2 MP stroke -72 -163 3347 1294 2 MP stroke -0 -169 3347 1093 2 MP stroke -0 -154 3653 3909 2 MP stroke -66 -155 3653 3708 2 MP stroke -125 -155 3653 3507 2 MP stroke -172 -155 3653 3306 2 MP stroke -210 -156 3653 3105 2 MP stroke -236 -155 3653 2903 2 MP stroke -252 -155 3653 2702 2 MP stroke -257 -154 3653 2501 2 MP stroke -250 -156 3653 2300 2 MP stroke -237 -153 3653 2099 2 MP stroke -208 -155 3653 1897 2 MP stroke -168 -156 3653 1696 2 MP stroke -125 -156 3653 1495 2 MP stroke -63 -156 3653 1294 2 MP stroke -0 -157 3653 1093 2 MP stroke -0 -136 3959 3909 2 MP stroke -70 -138 3959 3708 2 MP stroke -126 -137 3959 3507 2 MP stroke -174 -138 3959 3306 2 MP stroke -210 -138 3959 3105 2 MP stroke -236 -137 3959 2903 2 MP stroke -251 -137 3959 2702 2 MP stroke -257 -137 3959 2501 2 MP stroke -255 -137 3959 2300 2 MP stroke -237 -137 3959 2099 2 MP stroke -215 -136 3959 1897 2 MP stroke -176 -136 3959 1696 2 MP stroke -125 -142 3959 1495 2 MP stroke -73 -136 3959 1294 2 MP stroke -0 -144 3959 1093 2 MP stroke -0 -113 4265 3909 2 MP stroke -67 -113 4265 3708 2 MP stroke -126 -114 4265 3507 2 MP stroke -173 -114 4265 3306 2 MP stroke -210 -114 4265 3105 2 MP stroke -236 -112 4265 2903 2 MP stroke -253 -114 4265 2702 2 MP stroke -257 -112 4265 2501 2 MP stroke -250 -115 4265 2300 2 MP stroke -237 -111 4265 2099 2 MP stroke -208 -115 4265 1897 2 MP stroke -167 -115 4265 1696 2 MP stroke -125 -116 4265 1495 2 MP stroke -62 -116 4265 1294 2 MP stroke -0 -117 4265 1093 2 MP stroke -0 -81 4571 3909 2 MP stroke -69 -83 4571 3708 2 MP stroke -126 -83 4571 3507 2 MP stroke -173 -83 4571 3306 2 MP stroke -208 -83 4571 3105 2 MP stroke -236 -82 4571 2903 2 MP stroke -249 -82 4571 2702 2 MP stroke -257 -82 4571 2501 2 MP stroke -256 -82 4571 2300 2 MP stroke -237 -82 4571 2099 2 MP stroke -217 -82 4571 1897 2 MP stroke -176 -82 4571 1696 2 MP stroke -124 -89 4571 1495 2 MP stroke -74 -82 4571 1294 2 MP stroke -0 -91 4571 1093 2 MP stroke -0 -44 4877 3909 2 MP stroke -68 -45 4877 3708 2 MP stroke -126 -45 4877 3507 2 MP stroke -173 -44 4877 3306 2 MP stroke -211 -46 4877 3105 2 MP stroke -236 -43 4877 2903 2 MP stroke -255 -46 4877 2702 2 MP stroke -257 -42 4877 2501 2 MP stroke -249 -47 4877 2300 2 MP stroke -238 -42 4877 2099 2 MP stroke -207 -47 4877 1897 2 MP stroke -177 -40 4877 1696 2 MP stroke -124 -48 4877 1495 2 MP stroke -74 -40 4877 1294 2 MP stroke -0 -49 4877 1093 2 MP stroke -5183 3909 PD -68 0 5183 3708 2 MP stroke -124 0 5183 3507 2 MP stroke -172 0 5183 3306 2 MP stroke -207 0 5183 3105 2 MP stroke -236 0 5183 2903 2 MP stroke -248 0 5183 2702 2 MP stroke -257 0 5183 2501 2 MP stroke -257 0 5183 2300 2 MP stroke -238 0 5183 2099 2 MP stroke -218 0 5183 1897 2 MP stroke -177 0 5183 1696 2 MP stroke -138 0 5183 1495 2 MP stroke -75 0 5183 1294 2 MP stroke -5183 1093 PD --5 1 5 1 909 3908 3 MP stroke --25 5 25 5 948 3703 3 MP stroke --45 10 45 10 991 3497 3 MP stroke --58 12 58 13 1017 3293 3 MP stroke --71 15 71 16 1045 3089 3 MP stroke --78 17 78 17 1058 2886 3 MP stroke --85 19 85 18 1071 2684 3 MP stroke --85 18 85 18 1071 2483 3 MP stroke --81 18 81 18 1065 2282 3 MP stroke --78 16 78 17 1056 2082 3 MP stroke --68 15 68 14 1037 1883 3 MP stroke --57 13 57 12 1014 1684 3 MP stroke --40 9 40 9 982 1486 3 MP stroke --22 5 22 5 944 1289 3 MP stroke -899 1093 PD -8 17 9 -17 1196 3877 3 MP stroke --18 19 31 -8 1248 3676 3 MP stroke --33 24 49 -7 1280 3466 3 MP stroke --52 26 65 -1 1316 3266 3 MP stroke --60 30 76 -1 1335 3058 3 MP stroke --71 31 85 3 1357 2859 3 MP stroke --74 33 90 2 1363 2653 3 MP stroke --78 32 92 5 1370 2454 3 MP stroke --76 34 92 3 1367 2250 3 MP stroke --71 31 85 3 1355 2053 3 MP stroke --62 30 77 0 1338 1852 3 MP stroke --50 27 64 -2 1313 1654 3 MP stroke --34 24 49 -6 1282 1456 3 MP stroke --15 20 30 -10 1243 1259 3 MP stroke -7 15 8 -15 1197 1063 3 MP stroke -15 30 15 -30 1496 3849 3 MP stroke --11 32 38 -21 1546 3648 3 MP stroke --26 38 56 -20 1579 3438 3 MP stroke --45 40 72 -14 1615 3238 3 MP stroke --58 42 85 -11 1642 3034 3 MP stroke --65 44 92 -10 1656 2831 3 MP stroke --70 45 98 -9 1668 2629 3 MP stroke --71 45 99 -8 1669 2427 3 MP stroke --69 45 96 -10 1664 2227 3 MP stroke --64 44 91 -10 1655 2026 3 MP stroke --55 42 83 -12 1636 1827 3 MP stroke --43 39 70 -14 1613 1628 3 MP stroke --28 37 56 -19 1581 1431 3 MP stroke --9 32 36 -22 1543 1233 3 MP stroke -13 27 14 -27 1497 1038 3 MP stroke -19 38 20 -38 1797 3831 3 MP stroke --1 43 39 -34 1839 3626 3 MP stroke --22 47 60 -29 1881 3420 3 MP stroke --36 50 74 -26 1909 3216 3 MP stroke --49 53 87 -23 1937 3012 3 MP stroke --60 53 97 -19 1957 2812 3 MP stroke --63 56 101 -20 1965 2607 3 MP stroke --67 56 104 -19 1970 2408 3 MP stroke --65 56 103 -20 1967 2205 3 MP stroke --59 54 96 -20 1956 2006 3 MP stroke --51 53 88 -23 1939 1806 3 MP stroke --38 50 76 -26 1914 1608 3 MP stroke --22 47 60 -29 1882 1410 3 MP stroke --4 43 41 -33 1843 1213 3 MP stroke -18 38 19 -38 1798 1017 3 MP stroke -23 47 24 -47 2099 3813 3 MP stroke --1 50 46 -40 2149 3612 3 MP stroke --17 56 64 -38 2183 3403 3 MP stroke --35 58 80 -33 2218 3202 3 MP stroke --48 60 93 -30 2244 2998 3 MP stroke --56 63 101 -29 2259 2795 3 MP stroke --61 64 106 -27 2271 2592 3 MP stroke --62 63 108 -27 2272 2391 3 MP stroke --60 64 105 -28 2268 2190 3 MP stroke --55 62 101 -28 2258 1989 3 MP stroke --47 61 93 -31 2240 1790 3 MP stroke --34 58 80 -33 2216 1591 3 MP stroke --18 54 64 -36 2184 1394 3 MP stroke -0 51 46 -41 2146 1196 3 MP stroke -22 45 23 -45 2100 1002 3 MP stroke -26 52 26 -52 2403 3805 3 MP stroke -5 56 47 -47 2445 3599 3 MP stroke --16 60 67 -43 2487 3394 3 MP stroke --30 63 81 -39 2516 3189 3 MP stroke --43 66 95 -36 2542 2985 3 MP stroke --53 67 104 -33 2562 2784 3 MP stroke --57 69 108 -33 2571 2580 3 MP stroke --59 69 110 -32 2576 2379 3 MP stroke --57 70 109 -34 2572 2178 3 MP stroke --52 69 104 -35 2561 1978 3 MP stroke --43 66 94 -36 2544 1778 3 MP stroke --31 64 82 -39 2518 1580 3 MP stroke --15 60 67 -42 2487 1382 3 MP stroke -4 56 47 -46 2447 1185 3 MP stroke -25 51 26 -51 2403 989 3 MP stroke -28 56 28 -56 2707 3796 3 MP stroke -4 59 50 -49 2756 3594 3 MP stroke --14 64 69 -46 2791 3385 3 MP stroke --31 66 85 -41 2825 3183 3 MP stroke --41 70 96 -41 2847 2978 3 MP stroke --50 71 105 -37 2866 2776 3 MP stroke --55 73 111 -37 2875 2573 3 MP stroke --57 73 112 -36 2880 2372 3 MP stroke --56 73 111 -37 2876 2171 3 MP stroke --50 71 105 -38 2866 1971 3 MP stroke --42 69 96 -39 2848 1772 3 MP stroke --30 67 85 -42 2824 1572 3 MP stroke --14 63 68 -45 2792 1376 3 MP stroke -5 60 51 -50 2754 1177 3 MP stroke -27 53 27 -53 2708 983 3 MP stroke -28 56 28 -56 3013 3796 3 MP stroke -7 60 49 -51 3056 3590 3 MP stroke --13 65 69 -47 3097 3385 3 MP stroke --28 68 84 -43 3127 3180 3 MP stroke --41 70 97 -40 3153 2976 3 MP stroke --49 73 105 -39 3170 2773 3 MP stroke --55 74 111 -38 3181 2571 3 MP stroke --57 74 113 -37 3185 2369 3 MP stroke --55 74 111 -38 3181 2169 3 MP stroke --49 72 105 -39 3170 1969 3 MP stroke --41 71 97 -41 3153 1769 3 MP stroke --28 68 84 -44 3127 1571 3 MP stroke --13 65 69 -47 3097 1373 3 MP stroke -7 60 49 -51 3056 1176 3 MP stroke -28 55 28 -55 3013 979 3 MP stroke -27 54 27 -54 3320 3800 3 MP stroke -4 60 51 -50 3367 3591 3 MP stroke --14 63 68 -45 3404 3388 3 MP stroke --30 68 85 -43 3436 3182 3 MP stroke --42 69 96 -39 3460 2979 3 MP stroke --50 72 105 -38 3478 2775 3 MP stroke --56 72 111 -36 3488 2573 3 MP stroke --57 73 112 -36 3492 2372 3 MP stroke --55 73 111 -37 3487 2170 3 MP stroke --51 71 106 -37 3478 1971 3 MP stroke --42 70 97 -40 3459 1770 3 MP stroke --31 67 85 -42 3437 1574 3 MP stroke --13 64 69 -46 3403 1373 3 MP stroke -3 59 51 -48 3368 1179 3 MP stroke -28 55 28 -55 3319 979 3 MP stroke -26 51 26 -51 3627 3806 3 MP stroke -4 56 48 -47 3671 3600 3 MP stroke --15 60 67 -42 3711 3394 3 MP stroke --31 63 83 -39 3742 3190 3 MP stroke --44 67 95 -37 3768 2986 3 MP stroke --52 68 103 -34 3786 2782 3 MP stroke --57 69 109 -33 3796 2580 3 MP stroke --59 69 110 -32 3800 2379 3 MP stroke --56 70 108 -34 3795 2178 3 MP stroke --53 67 104 -33 3786 1979 3 MP stroke --43 66 94 -36 3767 1778 3 MP stroke --29 64 81 -40 3740 1580 3 MP stroke --16 60 67 -43 3711 1382 3 MP stroke -5 56 47 -47 3669 1185 3 MP stroke -26 52 26 -52 3627 988 3 MP stroke -23 45 22 -45 3937 3818 3 MP stroke -0 50 46 -40 3983 3610 3 MP stroke --19 54 64 -36 4021 3406 3 MP stroke --35 58 81 -33 4052 3201 3 MP stroke --46 60 92 -30 4077 2997 3 MP stroke --55 62 101 -28 4094 2794 3 MP stroke --60 63 106 -27 4104 2592 3 MP stroke --62 63 107 -27 4109 2391 3 MP stroke --62 63 107 -27 4107 2190 3 MP stroke --55 62 101 -28 4095 1990 3 MP stroke --48 60 94 -29 4080 1790 3 MP stroke --36 57 81 -32 4054 1592 3 MP stroke --18 56 65 -38 4019 1391 3 MP stroke --2 50 47 -40 3985 1198 3 MP stroke -24 48 24 -48 3935 997 3 MP stroke -19 37 19 -37 4246 3833 3 MP stroke --3 42 41 -32 4291 3627 3 MP stroke --23 47 60 -29 4331 3422 3 MP stroke --38 50 76 -25 4362 3217 3 MP stroke --50 52 88 -22 4387 3013 3 MP stroke --59 54 97 -20 4404 2811 3 MP stroke --64 56 102 -19 4416 2607 3 MP stroke --66 56 103 -19 4419 2408 3 MP stroke --64 56 102 -20 4413 2205 3 MP stroke --60 54 96 -20 4406 2008 3 MP stroke --50 53 88 -23 4385 1805 3 MP stroke --36 50 74 -26 4358 1607 3 MP stroke --22 47 61 -30 4329 1409 3 MP stroke --1 43 40 -34 4287 1212 3 MP stroke -19 39 19 -39 4246 1015 3 MP stroke -14 27 13 -27 4558 3855 3 MP stroke --9 33 37 -23 4603 3648 3 MP stroke --28 37 55 -18 4642 3442 3 MP stroke --43 40 71 -15 4673 3238 3 MP stroke --55 42 82 -12 4697 3034 3 MP stroke --64 44 92 -10 4715 2831 3 MP stroke --68 45 95 -9 4725 2629 3 MP stroke --71 45 98 -8 4730 2427 3 MP stroke --71 45 98 -8 4729 2226 3 MP stroke --64 44 91 -10 4717 2027 3 MP stroke --58 43 85 -12 4703 1827 3 MP stroke --44 40 71 -15 4676 1629 3 MP stroke --26 38 55 -20 4640 1426 3 MP stroke --11 32 38 -22 4607 1234 3 MP stroke -15 30 15 -30 4556 1032 3 MP stroke -8 15 7 -15 4870 3880 3 MP stroke --15 20 30 -10 4915 3673 3 MP stroke --34 24 49 -6 4954 3468 3 MP stroke --50 27 64 -2 4986 3264 3 MP stroke --62 30 77 0 5011 3059 3 MP stroke --71 31 85 2 5028 2858 3 MP stroke --77 33 92 3 5040 2653 3 MP stroke --77 32 91 5 5043 2454 3 MP stroke --75 33 90 3 5036 2250 3 MP stroke --72 31 86 3 5029 2054 3 MP stroke --60 30 76 -1 5008 1851 3 MP stroke --52 26 65 0 4989 1656 3 MP stroke --33 25 49 -7 4952 1454 3 MP stroke --18 19 31 -8 4920 1262 3 MP stroke -8 16 8 -16 4869 1060 3 MP stroke -5183 3909 PD --22 5 22 5 5229 3703 3 MP stroke --41 9 41 9 5266 3498 3 MP stroke --56 12 56 13 5299 3293 3 MP stroke --68 14 68 15 5322 3090 3 MP stroke --78 17 78 16 5341 2887 3 MP stroke --82 18 82 18 5349 2684 3 MP stroke --84 18 84 18 5356 2483 3 MP stroke --84 18 84 19 5356 2281 3 MP stroke --79 17 79 17 5342 2082 3 MP stroke --72 16 72 15 5329 1882 3 MP stroke --58 13 58 12 5302 1684 3 MP stroke --46 10 46 10 5275 1485 3 MP stroke --25 5 25 5 5233 1289 3 MP stroke -5183 1093 PD -gr - -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 168 FMSR - -2300 208 mt -(Vector-field plot of FE-solution E) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 132 FMSR - -4779 292 mt -(h) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -3546 4902 mt -(x) s - 573 2532 mt -90 rotate -(y) s -90 rotate - -end - -eplot -%%EndObject - -epage -end - -showpage - -%%Trailer -%%EOF - -%%EndDocument - @endspecial 758 2326 a Fk(Figure)30 b(4:)41 b(V)-8 b(ector-\014eld)32 -b(plot)d(of)i(the)f(FE-solution)g(of)g(example)h(\(31\).)872 -4824 y @beginspecial 55 @llx 201 @lly 549 @urx 611 @ury -2692 @rwi 1984 @rhi @setspecial -%%BeginDocument: field2.eps -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: MATLAB, The Mathworks, Inc. -%%Title: pix.eps -%%CreationDate: 08/26/2002 11:55:05 -%%DocumentNeededFonts: Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%Pages: 1 -%%BoundingBox: 55 201 549 611 -%%EndComments - -%%BeginProlog -% MathWorks dictionary -/MathWorks 160 dict begin -% definition operators -/bdef {bind def} bind def -/ldef {load def} bind def -/xdef {exch def} bdef -/xstore {exch store} bdef -% operator abbreviations -/c /clip ldef -/cc /concat ldef -/cp /closepath ldef -/gr /grestore ldef -/gs /gsave ldef -/mt /moveto ldef -/np /newpath ldef -/cm /currentmatrix ldef -/sm /setmatrix ldef -/rm /rmoveto ldef -/rl /rlineto ldef -/s /show ldef -/sc {setcmykcolor} bdef -/sr /setrgbcolor ldef -/sg /setgray ldef -/w /setlinewidth ldef -/j /setlinejoin ldef -/cap /setlinecap ldef -/rc {rectclip} bdef -/rf {rectfill} bdef -% page state control -/pgsv () def -/bpage {/pgsv save def} bdef -/epage {pgsv restore} bdef -/bplot /gsave ldef -/eplot {stroke grestore} bdef -% orientation switch -/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def -% coordinate system mappings -/dpi2point 0 def -% font control -/FontSize 0 def -/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] - makefont setfont} bdef -/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse - exch dup 3 1 roll findfont dup length dict begin - { 1 index /FID ne {def}{pop pop} ifelse } forall - /Encoding exch def currentdict end definefont pop} bdef -/isroman {findfont /CharStrings get /Agrave known} bdef -/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse - exch FMS} bdef -/csm {1 dpi2point div -1 dpi2point div scale neg translate - dup landscapeMode eq {pop -90 rotate} - {rotateMode eq {90 rotate} if} ifelse} bdef -% line types: solid, dotted, dashed, dotdash -/SO { [] 0 setdash } bdef -/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef -/DA { [6 dpi2point mul] 0 setdash } bdef -/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 - dpi2point mul] 0 setdash } bdef -% macros for lines and objects -/L {lineto stroke} bdef -/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef -/AP {{rlineto} repeat} bdef -/PDlw -1 def -/W {/PDlw currentlinewidth def setlinewidth} def -/PP {closepath eofill} bdef -/DP {closepath stroke} bdef -/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto - neg 0 exch rlineto closepath} bdef -/FR {MR stroke} bdef -/PR {MR fill} bdef -/L1i {{currentfile picstr readhexstring pop} image} bdef -/tMatrix matrix def -/MakeOval {newpath tMatrix currentmatrix pop translate scale -0 0 1 0 360 arc tMatrix setmatrix} bdef -/FO {MakeOval stroke} bdef -/PO {MakeOval fill} bdef -/PD {currentlinecap 1 cap 3 1 roll 2 copy mt lineto stroke - cap PDlw -1 eq not {PDlw w /PDlw -1 def} if} def -/FA {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef -/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef -/FAn {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef -/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef -/vradius 0 def /hradius 0 def /lry 0 def -/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def -/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef - /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly - vradius add translate hradius vradius scale 0 0 1 180 270 arc - tMatrix setmatrix lrx hradius sub uly vradius add translate - hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix - lrx hradius sub lry vradius sub translate hradius vradius scale - 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub - translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix - closepath} bdef -/FRR {MRR stroke } bdef -/PRR {MRR fill } bdef -/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix - closepath} bdef -/FlrRR {MlrRR stroke } bdef -/PlrRR {MlrRR fill } bdef -/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix - closepath} bdef -/FtbRR {MtbRR stroke } bdef -/PtbRR {MtbRR fill } bdef -/stri 6 array def /dtri 6 array def -/smat 6 array def /dmat 6 array def -/tmat1 6 array def /tmat2 6 array def /dif 3 array def -/asub {/ind2 exch def /ind1 exch def dup dup - ind1 get exch ind2 get sub exch } bdef -/tri_to_matrix { - 2 0 asub 3 1 asub 4 0 asub 5 1 asub - dup 0 get exch 1 get 7 -1 roll astore } bdef -/compute_transform { - dmat dtri tri_to_matrix tmat1 invertmatrix - smat stri tri_to_matrix tmat2 concatmatrix } bdef -/ds {stri astore pop} bdef -/dt {dtri astore pop} bdef -/db {2 copy /cols xdef /rows xdef mul dup string - currentfile exch readhexstring pop - /bmap xdef pop pop} bdef -/it {gs np dtri aload pop moveto lineto lineto cp c - cols rows 8 compute_transform - {bmap} image gr}bdef -/il {newpath moveto lineto stroke}bdef -currentdict end def -%%EndProlog - -%%BeginSetup -MathWorks begin - -0 cap - -end -%%EndSetup - -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 55 201 549 611 -MathWorks begin -bpage -%%EndPageSetup - -%%BeginObject: obj1 -bplot - -/dpi2point 12 def -portraitMode 0204 7344 csm - - 457 4 5930 4927 MR c np -92 dict begin %Colortable dictionary -/c0 { 0 0 0 sr} bdef -/c1 { 1 1 1 sr} bdef -/c2 { 1 0 0 sr} bdef -/c3 { 0 1 0 sr} bdef -/c4 { 0 0 1 sr} bdef -/c5 { 1 1 0 sr} bdef -/c6 { 1 0 1 sr} bdef -/c7 { 0 1 1 sr} bdef -c0 -1 j -1 sg - 0 0 6913 5185 PR -6 w -0 4225 5356 0 0 -4225 899 4614 4 MP -PP --5356 0 0 4225 5356 0 0 -4225 899 4614 5 MP stroke -4 w -DO -SO -6 w -0 sg - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L - 899 4614 mt 6255 4614 L - 899 4614 mt 899 389 L - 899 4614 mt 899 4560 L - 899 389 mt 899 442 L -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - - 746 4759 mt -(-1.5) s -1791 4614 mt 1791 4560 L -1791 389 mt 1791 442 L -1688 4759 mt -(-1) s -2684 4614 mt 2684 4560 L -2684 389 mt 2684 442 L -2531 4759 mt -(-0.5) s -3577 4614 mt 3577 4560 L -3577 389 mt 3577 442 L -3544 4759 mt -(0) s -4469 4614 mt 4469 4560 L -4469 389 mt 4469 442 L -4386 4759 mt -(0.5) s -5362 4614 mt 5362 4560 L -5362 389 mt 5362 442 L -5329 4759 mt -(1) s -6255 4614 mt 6255 4560 L -6255 389 mt 6255 442 L -6172 4759 mt -(1.5) s - 899 4614 mt 952 4614 L -6255 4614 mt 6201 4614 L - 628 4658 mt -(-1.5) s - 899 3909 mt 952 3909 L -6255 3909 mt 6201 3909 L - 728 3953 mt -(-1) s - 899 3205 mt 952 3205 L -6255 3205 mt 6201 3205 L - 628 3249 mt -(-0.5) s - 899 2501 mt 952 2501 L -6255 2501 mt 6201 2501 L - 798 2545 mt -(0) s - 899 1797 mt 952 1797 L -6255 1797 mt 6201 1797 L - 698 1841 mt -(0.5) s - 899 1093 mt 952 1093 L -6255 1093 mt 6201 1093 L - 798 1137 mt -(1) s - 899 389 mt 952 389 L -6255 389 mt 6201 389 L - 698 433 mt -(1.5) s - 899 4614 mt 6255 4614 L - 899 389 mt 6255 389 L - 899 4614 mt 899 389 L -6255 4614 mt 6255 389 L -gs 899 389 5357 4226 MR c np -1791 3909 PD -135 0 1791 3708 2 MP stroke -243 0 1791 3507 2 MP stroke -303 0 1791 3306 2 MP stroke -303 0 1791 3105 2 MP stroke -243 0 1791 2903 2 MP stroke -135 0 1791 2702 2 MP stroke -1791 2501 PD --135 0 1791 2300 2 MP stroke --243 0 1791 2099 2 MP stroke --303 0 1791 1897 2 MP stroke --303 0 1791 1696 2 MP stroke --243 0 1791 1495 2 MP stroke --135 0 1791 1294 2 MP stroke -1791 1093 PD -0 107 2046 3909 2 MP stroke -122 96 2046 3708 2 MP stroke -220 63 2046 3507 2 MP stroke -274 25 2046 3306 2 MP stroke -274 -26 2046 3105 2 MP stroke -220 -63 2046 2903 2 MP stroke -122 -96 2046 2702 2 MP stroke -0 -106 2046 2501 2 MP stroke --122 -96 2046 2300 2 MP stroke --220 -64 2046 2099 2 MP stroke --274 -26 2046 1897 2 MP stroke --274 26 2046 1696 2 MP stroke --220 63 2046 1495 2 MP stroke --122 96 2046 1294 2 MP stroke -0 106 2046 1093 2 MP stroke -0 192 2301 3909 2 MP stroke -80 174 2301 3708 2 MP stroke -145 114 2301 3507 2 MP stroke -181 46 2301 3306 2 MP stroke -181 -47 2301 3105 2 MP stroke -145 -114 2301 2903 2 MP stroke -81 -173 2301 2702 2 MP stroke -0 -192 2301 2501 2 MP stroke --80 -174 2301 2300 2 MP stroke --145 -115 2301 2099 2 MP stroke --181 -46 2301 1897 2 MP stroke --180 47 2301 1696 2 MP stroke --145 114 2301 1495 2 MP stroke --80 173 2301 1294 2 MP stroke -0 191 2301 1093 2 MP stroke -0 239 2556 3909 2 MP stroke -33 216 2556 3708 2 MP stroke -59 142 2556 3507 2 MP stroke -74 58 2556 3306 2 MP stroke -74 -59 2556 3105 2 MP stroke -59 -142 2556 2903 2 MP stroke -33 -216 2556 2702 2 MP stroke -0 -239 2556 2501 2 MP stroke --33 -216 2556 2300 2 MP stroke --59 -143 2556 2099 2 MP stroke --73 -58 2556 1897 2 MP stroke --73 58 2556 1696 2 MP stroke --59 142 2556 1495 2 MP stroke --32 216 2556 1294 2 MP stroke -0 239 2556 1093 2 MP stroke -0 239 2811 3909 2 MP stroke --33 216 2811 3708 2 MP stroke --59 143 2811 3507 2 MP stroke --73 58 2811 3306 2 MP stroke --73 -59 2811 3105 2 MP stroke --59 -142 2811 2903 2 MP stroke --32 -216 2811 2702 2 MP stroke -0 -239 2811 2501 2 MP stroke -33 -216 2811 2300 2 MP stroke -59 -143 2811 2099 2 MP stroke -74 -58 2811 1897 2 MP stroke -74 58 2811 1696 2 MP stroke -59 143 2811 1495 2 MP stroke -33 216 2811 1294 2 MP stroke -0 239 2811 1093 2 MP stroke -0 192 3066 3909 2 MP stroke --80 174 3066 3708 2 MP stroke --144 114 3066 3507 2 MP stroke --180 46 3066 3306 2 MP stroke --180 -47 3066 3105 2 MP stroke --144 -114 3066 2903 2 MP stroke --80 -173 3066 2702 2 MP stroke -0 -192 3066 2501 2 MP stroke -81 -174 3066 2300 2 MP stroke -145 -115 3066 2099 2 MP stroke -181 -46 3066 1897 2 MP stroke -181 47 3066 1696 2 MP stroke -145 114 3066 1495 2 MP stroke -81 173 3066 1294 2 MP stroke -0 191 3066 1093 2 MP stroke -0 107 3321 3909 2 MP stroke --122 96 3321 3708 2 MP stroke --219 64 3321 3507 2 MP stroke --274 26 3321 3306 2 MP stroke --274 -26 3321 3105 2 MP stroke --219 -63 3321 2903 2 MP stroke --121 -96 3321 2702 2 MP stroke -0 -106 3321 2501 2 MP stroke -122 -96 3321 2300 2 MP stroke -220 -64 3321 2099 2 MP stroke -274 -25 3321 1897 2 MP stroke -274 26 3321 1696 2 MP stroke -220 64 3321 1495 2 MP stroke -122 96 3321 1294 2 MP stroke -0 106 3321 1093 2 MP stroke -3577 3909 PD --135 0 3577 3708 2 MP stroke --243 0 3577 3507 2 MP stroke --303 0 3577 3306 2 MP stroke --303 0 3577 3105 2 MP stroke --244 0 3577 2903 2 MP stroke --135 0 3577 2702 2 MP stroke -3577 2501 PD -134 0 3577 2300 2 MP stroke -243 0 3577 2099 2 MP stroke -302 0 3577 1897 2 MP stroke -302 0 3577 1696 2 MP stroke -242 0 3577 1495 2 MP stroke -134 0 3577 1294 2 MP stroke -3577 1093 PD -0 -106 3832 3909 2 MP stroke --122 -96 3832 3708 2 MP stroke --220 -64 3832 3507 2 MP stroke --274 -26 3832 3306 2 MP stroke --274 25 3832 3105 2 MP stroke --220 64 3832 2903 2 MP stroke --122 96 3832 2702 2 MP stroke -0 106 3832 2501 2 MP stroke -121 96 3832 2300 2 MP stroke -219 63 3832 2099 2 MP stroke -274 26 3832 1897 2 MP stroke -274 -26 3832 1696 2 MP stroke -219 -64 3832 1495 2 MP stroke -122 -96 3832 1294 2 MP stroke -0 -107 3832 1093 2 MP stroke -0 -191 4087 3909 2 MP stroke --81 -173 4087 3708 2 MP stroke --145 -114 4087 3507 2 MP stroke --181 -47 4087 3306 2 MP stroke --181 46 4087 3105 2 MP stroke --145 115 4087 2903 2 MP stroke --81 174 4087 2702 2 MP stroke -0 192 4087 2501 2 MP stroke -80 173 4087 2300 2 MP stroke -144 114 4087 2099 2 MP stroke -180 47 4087 1897 2 MP stroke -180 -46 4087 1696 2 MP stroke -144 -114 4087 1495 2 MP stroke -80 -174 4087 1294 2 MP stroke -0 -192 4087 1093 2 MP stroke -0 -239 4342 3909 2 MP stroke --33 -216 4342 3708 2 MP stroke --59 -143 4342 3507 2 MP stroke --74 -58 4342 3306 2 MP stroke --74 58 4342 3105 2 MP stroke --59 143 4342 2903 2 MP stroke --33 216 4342 2702 2 MP stroke -0 239 4342 2501 2 MP stroke -32 216 4342 2300 2 MP stroke -59 142 4342 2099 2 MP stroke -73 59 4342 1897 2 MP stroke -73 -58 4342 1696 2 MP stroke -59 -143 4342 1495 2 MP stroke -33 -216 4342 1294 2 MP stroke -0 -239 4342 1093 2 MP stroke -0 -239 4597 3909 2 MP stroke -32 -216 4597 3708 2 MP stroke -59 -142 4597 3507 2 MP stroke -73 -58 4597 3306 2 MP stroke -73 58 4597 3105 2 MP stroke -59 143 4597 2903 2 MP stroke -33 216 4597 2702 2 MP stroke -0 239 4597 2501 2 MP stroke --33 216 4597 2300 2 MP stroke --59 142 4597 2099 2 MP stroke --74 59 4597 1897 2 MP stroke --74 -58 4597 1696 2 MP stroke --59 -142 4597 1495 2 MP stroke --33 -216 4597 1294 2 MP stroke -0 -239 4597 1093 2 MP stroke -0 -191 4852 3909 2 MP stroke -80 -173 4852 3708 2 MP stroke -145 -114 4852 3507 2 MP stroke -180 -47 4852 3306 2 MP stroke -181 46 4852 3105 2 MP stroke -145 115 4852 2903 2 MP stroke -80 174 4852 2702 2 MP stroke -0 192 4852 2501 2 MP stroke --81 173 4852 2300 2 MP stroke --145 114 4852 2099 2 MP stroke --181 47 4852 1897 2 MP stroke --181 -46 4852 1696 2 MP stroke --145 -114 4852 1495 2 MP stroke --80 -174 4852 1294 2 MP stroke -0 -192 4852 1093 2 MP stroke -0 -106 5107 3909 2 MP stroke -122 -96 5107 3708 2 MP stroke -220 -63 5107 3507 2 MP stroke -274 -26 5107 3306 2 MP stroke -274 26 5107 3105 2 MP stroke -220 64 5107 2903 2 MP stroke -122 96 5107 2702 2 MP stroke -0 106 5107 2501 2 MP stroke --122 96 5107 2300 2 MP stroke --220 63 5107 2099 2 MP stroke --274 26 5107 1897 2 MP stroke --274 -25 5107 1696 2 MP stroke --220 -63 5107 1495 2 MP stroke --122 -96 5107 1294 2 MP stroke -0 -107 5107 1093 2 MP stroke -5362 3909 PD -135 0 5362 3708 2 MP stroke -243 0 5362 3507 2 MP stroke -303 0 5362 3306 2 MP stroke -303 0 5362 3105 2 MP stroke -243 0 5362 2903 2 MP stroke -135 0 5362 2702 2 MP stroke -5362 2501 PD --135 0 5362 2300 2 MP stroke --243 0 5362 2099 2 MP stroke --303 0 5362 1897 2 MP stroke --303 0 5362 1696 2 MP stroke --243 0 5362 1495 2 MP stroke --135 0 5362 1294 2 MP stroke -5362 1093 PD -1791 3909 PD --45 12 45 11 1881 3697 3 MP stroke --80 21 80 21 1954 3486 3 MP stroke --100 26 100 26 1994 3280 3 MP stroke --100 26 100 26 1994 3079 3 MP stroke --80 21 80 20 1954 2883 3 MP stroke --45 12 45 11 1881 2691 3 MP stroke -1791 2501 PD -45 -12 -45 -11 1701 2311 3 MP stroke -80 -21 -80 -20 1628 2119 3 MP stroke -100 -26 -100 -26 1588 1923 3 MP stroke -100 -26 -100 -26 1588 1722 3 MP stroke -80 -21 -80 -21 1628 1516 3 MP stroke -45 -12 -45 -11 1701 1305 3 MP stroke -1791 1093 PD --14 -35 -15 35 2061 3981 3 MP stroke --53 -21 27 42 2141 3762 3 MP stroke --81 -2 64 40 2202 3530 3 MP stroke --94 15 87 32 2233 3299 3 MP stroke --87 32 94 15 2226 3064 3 MP stroke --64 40 81 -2 2185 2842 3 MP stroke --27 42 53 -21 2115 2627 3 MP stroke -15 35 14 -35 2032 2430 3 MP stroke -54 21 -27 -42 1951 2246 3 MP stroke -82 2 -64 -40 1890 2075 3 MP stroke -94 -15 -87 -33 1859 1904 3 MP stroke -87 -32 -94 -15 1866 1737 3 MP stroke -64 -39 -82 2 1908 1556 3 MP stroke -27 -42 -54 21 1978 1369 3 MP stroke --14 -35 -15 35 2061 1164 3 MP stroke --26 -63 -27 63 2328 4038 3 MP stroke --50 -51 2 65 2379 3817 3 MP stroke --63 -25 32 50 2414 3571 3 MP stroke --66 0 53 31 2429 3321 3 MP stroke --53 31 66 0 2416 3058 3 MP stroke --32 50 63 -25 2383 2814 3 MP stroke --3 64 51 -50 2331 2579 3 MP stroke -27 64 26 -64 2275 2373 3 MP stroke -50 51 -2 -65 2223 2191 3 MP stroke -64 26 -32 -50 2188 2034 3 MP stroke -67 0 -54 -31 2174 1882 3 MP stroke -53 -31 -66 0 2187 1743 3 MP stroke -32 -50 -64 25 2220 1584 3 MP stroke -3 -64 -50 50 2271 1417 3 MP stroke --26 -63 -27 63 2328 1221 3 MP stroke --33 -79 -33 79 2589 4069 3 MP stroke --41 -68 -19 74 2608 3850 3 MP stroke --39 -42 -1 52 2616 3597 3 MP stroke --32 -13 16 26 2614 3338 3 MP stroke --16 26 32 -13 2598 3059 3 MP stroke -1 52 39 -42 2576 2803 3 MP stroke -19 74 40 -69 2549 2555 3 MP stroke -33 79 33 -79 2523 2341 3 MP stroke -41 68 19 -74 2504 2158 3 MP stroke -39 42 0 -52 2497 2008 3 MP stroke -32 13 -16 -26 2499 1865 3 MP stroke -16 -25 -32 13 2515 1741 3 MP stroke -0 -52 -39 41 2536 1596 3 MP stroke --19 -74 -40 69 2564 1441 3 MP stroke --33 -79 -33 79 2589 1253 3 MP stroke --33 -79 -33 79 2844 4069 3 MP stroke --19 -74 -41 68 2819 3856 3 MP stroke -0 -53 -39 42 2791 3608 3 MP stroke -16 -26 -32 13 2770 3351 3 MP stroke -32 13 -16 -26 2754 3072 3 MP stroke -39 42 0 -52 2752 2813 3 MP stroke -40 69 19 -74 2760 2560 3 MP stroke -33 79 33 -79 2778 2341 3 MP stroke -19 74 41 -68 2803 2152 3 MP stroke -1 52 39 -42 2831 1998 3 MP stroke --16 26 32 -13 2853 1852 3 MP stroke --32 -12 16 25 2869 1729 3 MP stroke --39 -42 -1 52 2871 1586 3 MP stroke --40 -68 -19 74 2863 1436 3 MP stroke --33 -79 -33 79 2844 1253 3 MP stroke --26 -63 -27 63 3093 4038 3 MP stroke -2 -65 -50 51 3036 3831 3 MP stroke -32 -50 -63 25 2985 3596 3 MP stroke -53 -31 -66 -1 2952 3353 3 MP stroke -66 0 -53 -31 2939 3089 3 MP stroke -63 25 -32 -50 2954 2839 3 MP stroke -51 50 -3 -64 2989 2593 3 MP stroke -27 64 26 -64 3040 2373 3 MP stroke --3 65 51 -51 3096 2177 3 MP stroke --32 51 63 -26 3148 2010 3 MP stroke --53 31 66 0 3181 1851 3 MP stroke --66 0 53 31 3194 1712 3 MP stroke --63 -25 32 50 3179 1559 3 MP stroke --51 -50 3 64 3144 1403 3 MP stroke --26 -63 -27 63 3093 1221 3 MP stroke --14 -35 -15 35 3336 3981 3 MP stroke -27 -42 -54 21 3253 3783 3 MP stroke -63 -40 -81 3 3183 3568 3 MP stroke -87 -32 -94 -15 3141 3347 3 MP stroke -94 -15 -87 -32 3134 3111 3 MP stroke -81 2 -63 -40 3165 2880 3 MP stroke -53 21 -27 -42 3227 2648 3 MP stroke -15 35 14 -35 3307 2430 3 MP stroke --27 42 53 -21 3390 2225 3 MP stroke --64 40 81 -2 3460 2037 3 MP stroke --86 32 93 15 3502 1857 3 MP stroke --94 15 86 32 3509 1690 3 MP stroke --81 -2 64 40 3477 1519 3 MP stroke --53 -21 26 42 3417 1348 3 MP stroke --14 -35 -15 35 3336 1164 3 MP stroke -1 0 3576 3909 2 MP stroke -44 -11 -44 -12 3486 3720 3 MP stroke -80 -21 -80 -21 3414 3528 3 MP stroke -100 -26 -100 -26 3374 3332 3 MP stroke -100 -26 -100 -26 3374 3131 3 MP stroke -81 -21 -81 -21 3414 2924 3 MP stroke -44 -11 -44 -12 3486 2714 3 MP stroke -3577 2501 PD --44 11 44 12 3667 2288 3 MP stroke --81 21 81 21 3739 2078 3 MP stroke --100 26 100 26 3779 1871 3 MP stroke --100 26 100 26 3779 1670 3 MP stroke --80 21 80 21 3739 1474 3 MP stroke --44 11 44 12 3667 1282 3 MP stroke --1 0 3577 1093 2 MP stroke -14 35 15 -35 3817 3838 3 MP stroke -53 21 -26 -42 3736 3654 3 MP stroke -81 2 -64 -40 3676 3483 3 MP stroke -94 -15 -86 -32 3644 3312 3 MP stroke -86 -32 -93 -15 3651 3145 3 MP stroke -64 -40 -81 2 3693 2965 3 MP stroke -27 -42 -53 21 3763 2777 3 MP stroke --15 -35 -14 35 3846 2572 3 MP stroke --53 -21 27 42 3926 2354 3 MP stroke --81 -2 63 40 3988 2122 3 MP stroke --94 15 87 32 4019 1891 3 MP stroke --87 32 94 15 4012 1655 3 MP stroke --63 40 81 -3 3970 1434 3 MP stroke --27 42 54 -21 3900 1219 3 MP stroke -14 35 15 -35 3817 1021 3 MP stroke -26 63 27 -63 4060 3781 3 MP stroke -51 50 -3 -64 4009 3599 3 MP stroke -63 25 -32 -50 3974 3443 3 MP stroke -66 0 -53 -31 3959 3290 3 MP stroke -53 -31 -66 0 3972 3151 3 MP stroke -32 -51 -63 26 4005 2992 3 MP stroke -3 -65 -51 51 4057 2825 3 MP stroke --27 -64 -26 64 4113 2629 3 MP stroke --51 -50 3 64 4164 2409 3 MP stroke --63 -25 32 50 4199 2163 3 MP stroke --66 0 53 31 4214 1913 3 MP stroke --53 31 66 1 4201 1649 3 MP stroke --32 50 63 -25 4168 1406 3 MP stroke --2 65 50 -51 4117 1171 3 MP stroke -26 63 27 -63 4060 964 3 MP stroke -33 79 33 -79 4309 3749 3 MP stroke -40 68 19 -74 4290 3566 3 MP stroke -39 42 1 -52 4282 3416 3 MP stroke -32 12 -16 -25 4284 3273 3 MP stroke -16 -26 -32 13 4300 3150 3 MP stroke --1 -52 -39 42 4322 3004 3 MP stroke --19 -74 -41 68 4350 2850 3 MP stroke --33 -79 -33 79 4375 2661 3 MP stroke --40 -69 -19 74 4393 2442 3 MP stroke --39 -42 0 52 4401 2189 3 MP stroke --32 -13 16 26 4399 1930 3 MP stroke --16 26 32 -13 4383 1651 3 MP stroke -0 53 39 -42 4362 1394 3 MP stroke -19 74 41 -68 4334 1146 3 MP stroke -33 79 33 -79 4309 933 3 MP stroke -33 79 33 -79 4564 3749 3 MP stroke -19 74 40 -69 4589 3561 3 MP stroke -0 52 39 -41 4617 3406 3 MP stroke --16 25 32 -13 4638 3261 3 MP stroke --32 -13 16 26 4654 3137 3 MP stroke --39 -42 0 52 4656 2994 3 MP stroke --41 -68 -19 74 4649 2844 3 MP stroke --33 -79 -33 79 4630 2661 3 MP stroke --19 -74 -40 69 4604 2447 3 MP stroke --1 -52 -39 42 4577 2199 3 MP stroke -16 -26 -32 13 4555 1943 3 MP stroke -32 13 -16 -26 4539 1664 3 MP stroke -39 42 1 -52 4537 1405 3 MP stroke -41 68 19 -74 4545 1152 3 MP stroke -33 79 33 -79 4564 933 3 MP stroke -26 63 27 -63 4825 3781 3 MP stroke --3 64 50 -50 4882 3585 3 MP stroke --32 50 64 -25 4933 3418 3 MP stroke --53 31 66 0 4966 3259 3 MP stroke --67 0 54 31 4979 3120 3 MP stroke --64 -26 32 50 4965 2968 3 MP stroke --50 -51 2 65 4930 2811 3 MP stroke --27 -64 -26 64 4878 2629 3 MP stroke -3 -64 -51 50 4822 2423 3 MP stroke -32 -50 -63 25 4770 2188 3 MP stroke -53 -31 -66 0 4737 1944 3 MP stroke -66 0 -53 -31 4724 1681 3 MP stroke -63 25 -32 -50 4739 1431 3 MP stroke -50 51 -2 -65 4774 1185 3 MP stroke -26 63 27 -63 4825 964 3 MP stroke -14 35 15 -35 5092 3838 3 MP stroke --27 42 54 -21 5175 3633 3 MP stroke --64 39 82 -2 5245 3446 3 MP stroke --87 32 94 15 5287 3265 3 MP stroke --94 15 87 33 5294 3098 3 MP stroke --82 -2 64 40 5263 2927 3 MP stroke --54 -21 27 42 5202 2756 3 MP stroke --15 -35 -14 35 5121 2572 3 MP stroke -27 -42 -53 21 5038 2375 3 MP stroke -64 -40 -81 2 4968 2160 3 MP stroke -87 -32 -94 -15 4927 1938 3 MP stroke -94 -15 -87 -32 4920 1703 3 MP stroke -81 2 -64 -40 4951 1472 3 MP stroke -53 21 -27 -42 5012 1240 3 MP stroke -14 35 15 -35 5092 1021 3 MP stroke -5362 3909 PD --45 12 45 11 5452 3697 3 MP stroke --80 21 80 21 5525 3486 3 MP stroke --100 26 100 26 5565 3280 3 MP stroke --100 26 100 26 5565 3079 3 MP stroke --80 21 80 20 5525 2883 3 MP stroke --45 12 45 11 5452 2691 3 MP stroke -5362 2501 PD -45 -12 -45 -11 5272 2311 3 MP stroke -80 -21 -80 -20 5199 2119 3 MP stroke -100 -26 -100 -26 5159 1923 3 MP stroke -100 -26 -100 -26 5159 1722 3 MP stroke -80 -21 -80 -21 5199 1516 3 MP stroke -45 -12 -45 -11 5272 1305 3 MP stroke -5362 1093 PD -gr - -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 168 FMSR - -2300 208 mt -(Vector-field plot of FE-solution E) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 132 FMSR - -4779 292 mt -(h) s -%%IncludeResource: font Helvetica -/Helvetica /ISOLatin1Encoding 120 FMSR - -3546 4902 mt -(x) s - 573 2532 mt -90 rotate -(y) s -90 rotate - -end - -eplot -%%EndObject - -epage -end - -showpage - -%%Trailer -%%EOF - -%%EndDocument - @endspecial 758 5020 a(Figure)f(5:)41 b(V)-8 b(ector-\014eld)32 -b(plot)d(of)i(the)f(FE-solution)g(of)g(example)h(\(32\).)1949 -5719 y(20)p eop -%%Page: 21 21 -21 20 bop 28 232 a Fw(References)69 414 y Fz([1])45 b(A.)d(Alonso)f -(and)h(A.)g(V)-7 b(alli.)79 b(An)42 b(optimal)f(domain)g(decomp)r -(osition)h(preconditioner)e(for)h(lo)n(w-frequency)f(time-)202 -514 y(harmonic)27 b(Maxw)n(ell)g(equations.)36 b Fm(Math.)31 -b(Comp.)p Fz(,)e(68\(226\):607{631,)22 b(1999.)69 663 -y([2])45 b(W.)29 b(Bangerth,)f(R.)h(Hartmann,)f(and)h(G.)g(Kansc)n -(hat.)38 b Fd(deal.II)28 b Fm(Di\013er)l(ential)j(Equations)g(A)n -(nalysis)g(Libr)l(ary,)i(T)-6 b(e)l(ch-)202 763 y(nic)l(al)31 -b(R)l(efer)l(enc)l(e)p Fz(.)36 b(IWR,)29 b(Univ)n(ersit\177)-42 -b(at)27 b(Heidelb)r(erg.)36 b Fd(http://www.deali)o(i.o)o(rg)o -Fz(.)69 912 y([3])45 b(F.)33 b(Brezzi)e(and)h(M.)h(F)-7 -b(ortin.)51 b Fm(Mixe)l(d)34 b(and)h(Hybrid)g(Finite)g(Element)f(Metho) -l(ds)p Fz(,)h(v)n(olume)c(15)h(of)g Fm(Springer)j(Series)f(in)202 -1012 y(Computational)d(Mathematics)p Fz(.)39 b(Springer-V)-7 -b(erlag,)25 b(New)j(Y)-7 b(ork,)27 b(1991.)69 1162 y([4])45 -b(V.)34 b(Girault)f(and)g(P)-7 b(.-A.)33 b(Ra)n(viart.)52 -b Fm(Finite)36 b(Element)f(Appr)l(oximation)h(of)g(the)f(Navier-Stokes) -h(Equations)p Fz(,)f(v)n(olume)202 1261 y(749)26 b(of)i -Fm(L)l(e)l(ctur)l(e)h(Notes)g(in)h(Mathematics)p Fz(.)39 -b(Springer-V)-7 b(erlag,)25 b(Berlin,)i(Heidelb)r(erg,)g(1979,)f(1981.) -69 1411 y([5])45 b(R.)40 b(Hiptmair.)72 b(Finite)41 b(elemen)n(ts)e(in) -h(computational)e(electromagnetism.)71 b(In)40 b Fm(A)l(cta)g(Numeric)l -(a)p Fz(,)j(pages)c(1{103.)202 1510 y(Cam)n(bridge)26 -b(Univ)n(ersit)n(y)h(press,)g(2002.)69 1660 y([6])45 -b(P)-7 b(.)19 b(Monk.)k(Analysis)c(of)h(a)f(\014nite)h(elemen)n(t)f -(metho)r(d)h(for)f(Maxw)n(ell's)g(equations.)j Fm(SIAM)g(J.)g(Numer.)g -(A)n(nal)p Fz(,)g(29:714{729,)202 1759 y(1992.)69 1909 -y([7])45 b(P)-7 b(.)38 b(Monk.)67 b(A)38 b(simple)g(pro)r(of)g(for)f -(an)h(edge)f(elemen)n(t)h(discretization)f(of)h(Maxw)n(ell's)f -(equations.)67 b(Submitted)39 b(for)202 2008 y(publication.)28 -b(Do)n(wnload)e(v)n(ersion)g(a)n(v)-5 b(ailable)27 b(on)g(Monk's)g(w)n -(ebpage:)36 b(www.math.udel.edu./)28 b(monk,)f(2001.)69 -2158 y([8])45 b(J.)28 b(C.)f(N)n(\023)-39 b(ed)n(\023)g(elec.)35 -b(Mixed)28 b(\014nite)g(elemen)n(ts)f(in)h Fr(R)1701 -2128 y Fp(3)1745 2158 y Fz(.)36 b Fm(Numer.)30 b(Math.)p -Fz(,)f(35:315{341,)23 b(1980.)69 2307 y([9])45 b(J.)27 -b(C.)g(N)n(\023)-39 b(ed)n(\023)g(elec.)33 b(Elemen)n(ts)27 -b(\014nis)g(mixtes)f(incompressibles)g(p)r(our)h(l')n(\023)-39 -b(equation)25 b(de)i(Stok)n(es)f(dans)g Fr(R)3322 2277 -y Fp(3)3365 2307 y Fz(.)36 b Fm(Numer.)29 b(Math.)p Fz(,)202 -2407 y(39:97{112,)24 b(1982.)28 2556 y([10])44 b(J.)28 -b(C.)f(N)n(\023)-39 b(ed)n(\023)g(elec.)35 b(A)28 b(new)g(family)f(of)h -(mixed)g(\014nite)g(elemen)n(ts)f(in)h Fr(R)2303 2526 -y Fp(3)2346 2556 y Fz(.)37 b Fm(Numer.)30 b(Math.)p Fz(,)f(50:57{81,)24 -b(1986.)28 2706 y([11])44 b(W.)24 b(Rac)n(ho)n(wicz)e(and)i(L.)f(Demk)n -(o)n(wicz.)30 b(A)24 b(t)n(w)n(o-dimensional)e(hp-adaptiv)n(e)g -(\014nite)i(elemen)n(t)g(pac)n(k)-5 b(age)22 b(for)h(electromag-)202 -2805 y(netics)30 b(\(2Dhp90)p 758 2805 25 4 v 30 w(EM\).)44 -b(Ticam)29 b(Rep)r(ort)h(98{16,)f(TICAM,)h(1998.)42 b(Do)n(wnload)29 -b(v)n(ersion)g(a)n(v)-5 b(ailable)28 b(on)i(Demk)n(o)n(wicz')202 -2905 y(w)n(ebpage:)36 b(www.ices.utexas.edu/)27 b(Leszek.)28 -3054 y([12])44 b(W.)39 b(Rac)n(ho)n(wicz)e(and)h(L.)h(Demk)n(o)n(wicz.) -68 b(A)39 b(three-dimensional)f(hp-adaptiv)n(e)f(\014nite)i(elemen)n(t) -g(pac)n(k)-5 b(age)37 b(for)h(elec-)202 3154 y(tromagnetics)31 -b(\(3Dhp90)p 1019 3154 V 29 w(EM\).)50 b(Ticam)31 b(Rep)r(ort)h -(00-04.2000,)d(TICAM,)j(2000.)48 b(Do)n(wnload)31 b(v)n(ersion)f(a)n(v) --5 b(ailable)31 b(on)202 3254 y(Demk)n(o)n(wicz')c(w)n(ebpage:)36 -b(www.ices.utexas.edu/)26 b(Leszek.)1949 5719 y Fk(21)p -eop -%%Page: 22 22 -22 21 bop 28 231 a Fw(A)134 b Fv(Construction)36 b(of)i(solutions)e(in) -h(2d)28 413 y Fz(W)-7 b(e)28 b(presen)n(t)g(ho)n(w)g(div)n -(ergence-free)e(solutions)i(of)g(the)h(mo)r(del)f(problem)g(\(1\))h(on) -f(a)g(domain)g(\012)c Fs(\032)g Fr(R)3203 383 y Fp(2)3275 -413 y Fz(with)k(p)r(erfectly)h(con-)28 513 y(ducting)e(b)r(oundary)g -(can)g(b)r(e)h(constructed)g(from)f(solutions)g(of)g(the)h(scalar)e -(Laplace)h(equation.)28 812 y Fn(Pr)n(oposition)g Fz(9)45 -b Fm(L)l(et)28 b Fz(\012)g Fm(b)l(e)h(a)g(su\016ciently)g(smo)l(oth)g -(domain)h(in)e Fr(R)2196 782 y Fp(2)2239 812 y Fm(,)i -Fx(')p Fz(\()p Fx(x;)14 b(y)s Fz(\))29 b Fm(a)g(su\016c)l(ently)f(smo)l -(oth)h(sc)l(alar)h(function)e(on)28 911 y Fz(\012)h Fm(and)h(the)g(c)l -(o)l(e\016cient)h Fx(c)23 b(>)f Fz(0)30 b Fm(glob)l(al)t(ly)h(c)l -(onstant.)28 1011 y(L)l(et)e Fx(w)j Fm(b)l(e)e(a)g(solution)g(of)h(the) -f(sc)l(alar)g(e)l(quation)1513 1188 y Fs(\000)p Fz(\001)p -Fx(w)21 b Fz(+)d Fx(c)c(w)25 b Fz(=)e Fx(')85 b Fz(in)g(\012)1680 -1313 y Fx(n)p 1680 1326 50 4 v 19 w Fs(\001)18 b(r)p -Fx(w)26 b Fz(=)d(0)84 b(on)h Fx(@)5 b Fz(\012)14 b Fx(:)3814 -1252 y Fz(\(34\))28 1505 y Fm(Then,)30 b Fx(E)p 269 1518 -67 4 v 29 w Fz(:=)22 b Fs(r)538 1474 y Fh(?)594 1505 -y Fx(w)33 b Fm(is)d(a)g(solution)g(of)h(the)f(mo)l(del)g(e)l(quation) -1452 1682 y Fz(curl)p 1452 1695 139 4 v 14 w(curl)13 -b Fx(E)p 1757 1695 67 4 v 24 w Fz(+)18 b Fx(c)c(E)p 1975 -1695 V 28 w Fz(=)22 b Fx(f)p 2151 1712 50 4 v 94 w Fz(in)85 -b(\012)14 b Fx(;)1773 1818 y(E)p 1773 1831 67 4 v 24 -w Fs(^)19 b Fx(n)p 1932 1831 50 4 v 23 w Fz(=)j(0)85 -b(on)f Fx(@)5 b Fz(\012)14 b Fx(;)28 2010 y Fm(with)30 -b(right)g(hand)h(side)g Fx(f)p 780 2039 V 31 w Fz(:=)23 -b Fs(r)1032 1979 y Fh(?)1088 2010 y Fx(')p Fm(.)28 2171 -y(We)29 b(use)h(the)g(notation)g Fs(r)863 2141 y Fh(?)919 -2171 y Fx(')23 b Fz(:=)g Fj(R)q Fs(r)p Fx(')g Fz(=)1414 -2054 y Fl(\022)1550 2120 y Fx(@)1594 2132 y Fq(y)1634 -2120 y Fx(')1517 2220 y Fs(\000)p Fx(@)1626 2232 y Fq(x)1667 -2220 y Fx(')1763 2054 y Fl(\023)1824 2171 y Fm(.)28 2428 -y Fn(Pr)n(oof.)58 b Fz(W)-7 b(e)34 b(\014rst)g(sho)n(w)e(the)i(corresp) -r(ondence)e(of)h(the)h(b)r(oundary)f(conditions.)54 b(With)34 -b(the)g(de\014nition)g Fx(E)p 3466 2441 67 4 v 38 w Fz(:=)e -Fs(r)3754 2398 y Fh(?)3811 2428 y Fx(w)k Fz(it)28 2528 -y(holds)1285 2628 y Fx(E)p 1285 2641 V 24 w Fs(^)18 b -Fx(n)p 1443 2641 50 4 v 23 w Fz(=)23 b Fx(E)p 1604 2641 -67 4 v 24 w Fs(\001)18 b Fx(t)p 1730 2641 30 4 v 23 w -Fz(=)23 b Fs(r)p Fx(w)2002 2591 y Fq(T)2054 2628 y Fj(R)2127 -2591 y Fq(T)2179 2628 y Fj(R)15 b Fx(n)p 2266 2641 50 -4 v 22 w Fz(=)23 b Fs(r)p Fx(w)e Fs(\001)e Fx(n)p 2617 -2641 V 14 w(:)28 2777 y Fz(It)35 b(remains)f(to)g(sho)n(w)g(that)h -Fx(E)p 950 2790 67 4 v 40 w Fz(solv)n(es)e(the)i(mo)r(del)g(problem)f -(for)h(an)f(appropriate)f(righ)n(t)h(hand)h(side.)58 -b(First,)36 b(note)f(that)28 2877 y Fx(E)p 28 2890 V -38 w Fz(is)d(div)n(ergence-free:)45 b Fs(r)22 b(\001)g(r)1028 -2846 y Fh(?)1085 2877 y Fx(w)34 b Fz(=)d(0)i(for)f(all)g -Fx(w)r Fz(.)54 b(Hence,)34 b(the)f(iden)n(tit)n(y)g(curl)p -2475 2890 139 4 v 13 w(curl)14 b Fx(E)p 2780 2890 67 -4 v 37 w Fz(=)31 b Fs(r)p Fz(\()p Fs(r)23 b(\001)f Fx(E)p -3212 2890 V 5 w Fz(\))g Fs(\000)f Fz(\001)p Fx(E)p 3487 -2890 V 38 w Fz(reduces)32 b(to)28 2976 y(curl)p 28 2989 -139 4 v 13 w(curl)13 b Fx(E)p 332 2989 67 4 v 30 w Fz(=)24 -b Fs(\000)p Fz(\001)p Fx(E)p 646 2989 V 5 w Fz(.)39 b(The)28 -b(observ)-5 b(ation)27 b(that)i(for)f(smo)r(oth)g(data)g -Fs(r)2249 2946 y Fh(?)2305 2976 y Fx(w)j Fz(solv)n(es)c(the)i(Laplace)e -(equation)h(\(34\))g(with)h(righ)n(t)28 3076 y(hand)e(side)h -Fs(r)471 3046 y Fh(?)527 3076 y Fx(')g Fz(concludes)f(the)h(pro)r(of.) -3897 3250 y Fg(\003)28 3449 y Fn(Example)f Fz(5)g(\(Solutions)h(from)f -(eigenfunctions)g(of)h(the)g(Laplacian\))44 b Fm(Cho)l(ose)h -Fx(w)h Fm(to)d(b)l(e)g(a)h(solution)f(of)i(the)e(eigenvalue)28 -3549 y(pr)l(oblem)1642 3726 y Fs(\000)p Fz(\001)p Fx(w)25 -b Fz(=)e Fx(\025)14 b(w)88 b Fz(in)d(\012)1597 3851 y -Fx(n)p 1597 3864 50 4 v 18 w Fs(\001)18 b(r)p Fx(w)26 -b Fz(=)d(0)84 b(on)h Fx(@)5 b Fz(\012)14 b Fx(;)28 4034 -y Fm(and)30 b(set)f Fx(')24 b Fz(=)e(\()p Fx(\025)d Fz(+)f -Fx(c)p Fz(\))c Fx(w)r Fm(.)28 4134 y(As)28 b(an)h(example,)h(take)f -Fz(\012)23 b(=)f([)p Fs(\000)p Fz(1)p Fx(;)14 b Fz(1])1190 -4104 y Fp(2)1255 4134 y Fm(and)29 b Fx(\025)23 b Fz(=)g(2)p -Fx(\031)1666 4104 y Fp(2)1703 4134 y Fm(.)38 b(Then,)30 -b Fx(w)c Fz(=)d(cos)13 b Fx(\031)s(x)h Fz(cos)f Fx(\031)s(y)32 -b Fm(is)d(an)g(eigenfunction)g(and)g(we)g(c)l(ompute)724 -4366 y Fx(f)p 724 4396 V 31 w Fz(=)23 b(\(2)p Fx(\031)1008 -4332 y Fp(2)1064 4366 y Fz(+)18 b Fx(c)p Fz(\))p Fx(\031)1279 -4249 y Fl(\022)1421 4316 y Fz(cos)13 b Fx(\031)s(x)h -Fz(sin)g Fx(\031)s(y)1382 4415 y Fs(\000)g Fz(sin)f Fx(\031)s(x)h -Fz(cos)g Fx(\031)s(y)1948 4249 y Fl(\023)2037 4366 y -Fx(;)183 b(E)p 2243 4379 67 4 v 29 w Fz(=)22 b Fx(\031)2484 -4249 y Fl(\022)2626 4316 y Fz(cos)13 b Fx(\031)s(x)h -Fz(sin)h Fx(\031)s(y)2587 4415 y Fs(\000)f Fz(sin)f Fx(\031)s(x)h -Fz(cos)g Fx(\031)s(y)3153 4249 y Fl(\023)3242 4366 y -Fx(:)28 4621 y Fn(Example)27 b Fz(6)g(\(Solutions)h(from)f(an)n(y)g -(scalar)f(function)i(satiesfying)f(the)h(b)r(oundary)e(condition\))46 -b Fm(T)-6 b(ake)22 b(again)g Fz(\012)h(=)g([)p Fs(\000)p -Fz(1)p Fx(;)14 b Fz(1])3942 4591 y Fp(2)3978 4621 y Fm(.)28 -4720 y(We)34 b(have)h(to)f(\014nd)g(a)g(sc)l(alar)h(function)g -Fx(w)h Fm(which)g(saties\014es)e(the)h(homo)l(gene)l(ous)g(Neumann)e(b) -l(oundary)i(c)l(ondition.)52 b(T)-6 b(ake)28 4820 y(for)30 -b(example)h Fx(w)r Fz(\()p Fx(x;)14 b(y)s Fz(\))25 b(=)e(\(1)18 -b Fs(\000)g Fx(x)1067 4790 y Fp(2)1105 4820 y Fz(\))1137 -4790 y Fp(2)1174 4820 y Fz(\(1)h Fs(\000)f Fx(y)1394 -4790 y Fp(2)1431 4820 y Fz(\))1463 4790 y Fp(2)1500 4820 -y Fm(,)31 b(for)g(which)g(we)f(have)h Fx(n)p 2236 4833 -50 4 v 19 w Fs(\001)18 b(r)p Fx(w)27 b Fz(=)c(0)29 b -Fm(on)h Fx(@)5 b Fz([)p Fs(\000)p Fz(1)p Fx(;)14 b Fz(1])3060 -4790 y Fp(2)3095 4820 y Fm(.)40 b(The)31 b(right)f(hand)h(side)g(is)28 -4920 y(then)e Fx(')24 b Fz(=)e Fs(\000)p Fz(\001)p Fx(w)f -Fz(+)d Fx(cw)r Fm(.)1949 5719 y Fk(22)p eop -%%Page: 23 23 -23 22 bop 28 231 a Fw(B)134 b Fv(Time-harmonic)35 b(Maxw)m(ell's)i -(equations)h(with)e(lo)m(w-frequency)i(appro)m(ximation)28 -413 y Fz(W)-7 b(e)32 b(sho)n(w,)h(ho)n(w)f(the)h(mo)r(del)g(problem)f -(can)g(b)r(e)h(deriv)n(ed)f(from)g(the)h(time-harmonic)e(Maxw)n(ell's)h -(equations)g(in)g(the)h(lo)n(w-)28 513 y(frequency)27 -b(case.)36 b(W)-7 b(e)28 b(follo)n(w)f(the)h(outline)f(of)h([1)o(]:)28 -613 y(W)-7 b(e)28 b(consider)e(the)i(follo)n(wing)f(primal)g(form)n -(ulation)f(of)i(Maxw)n(ell's)f(equations:)1644 834 y -Fx(")1693 778 y(@)5 b Fs(E)p 1693 815 100 4 v 1704 891 -a Fx(@)g(t)1825 834 y Fz(=)23 b(curl)13 b Fs(H)20 b(\000)e -Fx(\033)s Fs(E)j Fx(;)1613 1038 y(\026)1673 982 y(@)5 -b Fs(H)p 1673 1019 120 4 v 1693 1095 a Fx(@)g(t)1825 -1038 y Fz(=)23 b Fs(\000)14 b Fz(curl)f Fs(E)21 b Fx(;)3814 -929 y Fz(\(35\))28 1248 y(where)31 b Fs(E)39 b Fz(and)31 -b Fs(H)i Fz(are)d(the)i(electric)g(and)f(magnetic)g(\014eld.)50 -b Fx(")p Fz(\()p Fx(x)p Fz(\))p Fx(;)14 b(\026)p Fz(\()p -Fx(x)p Fz(\))33 b(are)e(the)h(dielectric)f(and)h(magnetic)f(p)r -(ermeabilit)n(y)28 1348 y(co)r(e\016cien)n(ts,)36 b(and)e -Fx(\033)s Fz(\()p Fx(x)p Fz(\))i(denotes)f(the)g(electric)f -(conductivit)n(y)-7 b(.)58 b Fx(")p Fz(\()p Fx(x)p Fz(\))p -Fx(;)14 b(\026)p Fz(\()p Fx(x)p Fz(\))37 b(and)d Fx(\033)s -Fz(\()p Fx(x)p Fz(\))i(are)e(assumed)g(to)h(b)r(e)g(symmetric)28 -1448 y(matrices)29 b(in)h Fx(L)519 1417 y Fh(1)589 1448 -y Fz(\(\012\))713 1417 y Fq(d)p Fh(\002)p Fq(d)839 1448 -y Fz(,)h(and)f Fx(")p Fz(\()p Fx(x)p Fz(\))h(and)f Fx(\026)p -Fz(\()p Fx(x)p Fz(\))h(are)e(p)r(ositiv)n(e)h(de\014nite.)45 -b Fx(\033)s Fz(\()p Fx(x)p Fz(\))32 b(is)e(p)r(ositiv)n(e)f(de\014nite) -i(in)g(a)e(conductor)g(and)28 1547 y(v)-5 b(anishes)27 -b(in)h(an)f(insulator.)28 1776 y Fo(Time-harmonic,)33 -b(lo)m(w-frequency)i(case)28 1930 y Fz(W)-7 b(e)28 b(assume)e(that)i -Fs(E)7 b Fz(\()p Fx(x;)14 b(t)p Fz(\))29 b(and)f Fs(H)q -Fz(\()p Fx(x;)14 b(t)p Fz(\))28 b(are)f Fm(time-harmonic)p -Fz(,)i(i.)f(e.)f(they)h(can)f(b)r(e)h(represen)n(ted)f(as)1467 -2111 y Fs(E)7 b Fz(\()p Fx(x;)14 b(t)p Fz(\))24 b(=)f(Re)14 -b(\()p Fx(E)5 b Fz(\()p Fx(x)p Fz(\))14 b(exp)q(\()p -Fx(i!)s(t)p Fz(\)\))28 b Fx(;)1447 2236 y Fs(H)q Fz(\()p -Fx(x;)14 b(t)p Fz(\))24 b(=)f(Re)14 b(\()p Fx(H)7 b Fz(\()p -Fx(x)p Fz(\))14 b(exp)q(\()p Fx(i!)s(t)p Fz(\)\))27 b -Fx(:)28 2419 y Fz(Here,)g Fx(E)5 b Fz(\()p Fx(x)p Fz(\))p -Fx(;)14 b(H)7 b Fz(\()p Fx(x)p Fz(\))29 b(are)e(complex-v)-5 -b(alued)27 b(v)n(ector)f(\014elds)i(and)f Fx(!)f Fs(6)p -Fz(=)c(0)28 b(is)f(a)g(giv)n(en)g(angular)f(frequency)-7 -b(.)28 2594 y Fn(Remark)28 b Fz(8)45 b Fm(F)-6 b(or)30 -b(example,)h(a)f(monofr)l(e)l(quent)f(laser)i(c)l(an)f(b)l(e)f(describ) -l(e)l(d)j(by)e(the)g(time-harmonic)h(Maxwel)t(l's)g(e)l(quations.)28 -2768 y Fz(In)c(the)g(time-harmonic)f(case)g(the)h(space)f(and)h(time)g -(v)-5 b(ariables)26 b(decouple)g(and)h(w)n(e)g(can)f(eliminate)h(the)g -(time)h(dep)r(endency)-7 b(.)28 2868 y(F)g(or)28 b(this,)i(w)n(e)f(ask) -f Fx(E)5 b Fz(\()p Fx(x)p Fz(\))14 b(exp)q(\()p Fx(i!)s(t)p -Fz(\))29 b(and)g Fx(H)7 b Fz(\()p Fx(x)p Fz(\))14 b(exp\()p -Fx(i!)s(t)p Fz(\))30 b(to)f(satiesfy)f(\(35\).)42 b(By)28 -b(then)i(inserting)f(the)g(second)g(equation)f(of)28 -2967 y(\(35\))f(in)n(to)g(the)h(\014rst)g(one,)f(w)n(e)g(can)g -(eliminate)h(the)g(magnetic)f(\014eld)h Fx(H)7 b Fz(\()p -Fx(x)p Fz(\).)38 b(This)27 b(yields)1331 3150 y(curl\()p -Fx(\026)1552 3116 y Fh(\000)p Fp(1)1655 3150 y Fz(curl)14 -b Fx(E)5 b Fz(\))18 b Fs(\000)g Fx(!)2062 3116 y Fp(2)2099 -3150 y Fx("E)24 b Fz(+)18 b Fx(i!)s(\033)s(E)27 b Fz(=)c(0)28 -3333 y(In)30 b(the)g Fm(low-fr)l(e)l(quency)j(c)l(ase)k -Fz(where)29 b Fs(j)p Fx(!)s Fs(j)h Fz(is)g(small,)g(it)h(is)f(kno)n(wn) -f(that)h(for)g(general)f(materials)f(the)j(material)e(parameters)28 -3432 y(are)d(suc)n(h)h(that)1527 3532 y Fx(!)1582 3498 -y Fp(2)1619 3532 y Fx(")c Fs(\034)g Fx(\026)1837 3498 -y Fh(\000)p Fp(1)1940 3532 y Fx(;)97 b(!)2115 3498 y -Fp(2)2152 3532 y Fx(")23 b Fs(\034)g Fx(!)s(\033)17 b(:)28 -3681 y Fz(Hence,)28 b(neglecting)f(the)i(expression)d -Fx(!)1289 3651 y Fp(2)1326 3681 y Fx("E)5 b Fz(\()p Fx(x)p -Fz(\))29 b(is)f(reasonable)e(and)h(it)i(brings)e(us)h(to)f(the)i(lo)n -(w-frequency)d(appro)n(ximation)28 3781 y(of)h(the)h(time-harmonic)f -(Maxw)n(ell's)f(equations:)1480 3964 y(curl\()p Fx(\026)1701 -3929 y Fh(\000)p Fp(1)1804 3964 y Fz(curl)14 b Fx(E)5 -b Fz(\))18 b(+)h Fx(i!)s(\033)s(E)27 b Fz(=)c(0)28 4146 -y(W)-7 b(e)30 b(consider)f(this)i(equation)e(in)i(a)f(conductor)f(\012) -h(\()p Fx(\033)s Fz(\()p Fx(x)p Fz(\))i(p)r(os.)e(def.\))46 -b(and)30 b(a)g(imp)r(ose)g(Diric)n(hlet)g(b)r(oundary)g(condition)g(on) -28 4246 y(the)e(tangen)n(tial)e(trace)h(of)h(the)g(\014eld:)1605 -4346 y Fx(E)c Fs(^)19 b Fx(n)k Fz(=)f(\010)83 b(on)g -Fx(@)5 b Fz(\012)14 b Fx(:)1430 b Fz(\(36\))28 4495 y(Pro)r(ceeding)26 -b(as)h(in)h([1)o(],)g(w)n(e)g(assume)f(that)h(a)f(v)n(ector)f(funciton) -2046 4474 y(~)2027 4495 y Fx(E)33 b Fz(is)27 b(kno)n(wn,)g(satiesfying) -g(\(36\),)h(and)f(w)n(e)h(end)g(up)g(with)g(the)28 4595 -y(follo)n(wing)e(b)r(oundary)h(v)-5 b(alue)27 b(problem)h(for)f -Fx(u)p 1417 4608 48 4 v 22 w Fz(=)c Fx(E)g Fs(\000)1762 -4574 y Fz(~)1742 4595 y Fx(E)1299 4774 y Fz(curl\()p -Fx(\026)1520 4740 y Fh(\000)p Fp(1)1623 4774 y Fz(curl)14 -b Fx(u)p Fz(\))k(+)g Fx(i!)s(\033)s(u)k Fz(=)h Fx(F)95 -b Fz(in)83 b(\012)14 b Fx(;)1948 4899 y(u)k Fs(^)h Fx(n)k -Fz(=)g(0)82 b(on)h Fx(@)5 b Fz(\012)14 b Fx(:)3814 4837 -y Fz(\(37\))28 5082 y(Although)23 b(problem)g(\(37\))h(is)f(complex-v) --5 b(alued,)24 b(\014nding)f(a)g(\014nite)i(elemen)n(t)e(metho)r(d)h -(to)g(appro)n(ximate)e(\(37\))h(basically)f(b)r(oils)28 -5182 y(do)n(wn)27 b(to)g(\014nding)h(a)f(\014nite)h(elemen)n(t)g(metho) -r(d)g(for)f(the)h(real)f(v)-5 b(alued)27 b(mo)r(del)h(problem)f(\(1\).) -1949 5719 y Fk(23)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/deal.II/doc/reports/new-threads/index.html b/deal.II/doc/reports/new-threads/index.html deleted file mode 100644 index b146117901..0000000000 --- a/deal.II/doc/reports/new-threads/index.html +++ /dev/null @@ -1,1059 +0,0 @@ - -

        -A short description of the new threading scheme -

        - - -

        - Wolfgang Bangerth, May 2003 -

        - - -

        -Since the first deal.II report on -multithreading was written in 2000 (see the list of deal.II -publications), -we have put in place a new -implementation of the threading scheme (the first release to contain it is -4.0). The new scheme can do all that you could do before, so the report is in a -sense still valid, but it describes a syntax that is no more used. We will here -briefly describe this syntax as well as some considerations that guided us -while implementing it. For general questions on multithreading, how programs -that use it must look like, and for pitfalls to watch out for, please still -refer to the report mentioned above. -

        - -

        -We note that since this report was written, there has been another -incarnation of support for multicore machines, namely by using the -Threading Building Blocks and tasks. The documentation module on -parallel computing, available through the modules page of the deal.II -manual, explains this new direction in more detail. -

        - - -

        1. Rationale and Introduction

        - - -

        -POSIX and other thread libraries only allow functions as thread entry -points that satisfy the signature -

        -  void *  (*)  (void *)
        -
        -and starting threads involves a clumsy syntax. Thread entry points -with another signature need to be "wrapped", i.e. their arguments need -to be stored in a structure, and we need a function with above -signature that can be used to "unpack" the arguments and call the -desired function. This basically forces us to have one such structure -and entry function for each function signature that we want to start a -thread with. -

        - -

        -The first incarnations of the threading scheme in deal.II already got a long -way towards making this simpler, by hiding the thread entry points, the packing -and unpacking behind a layer of carefully crafted templates. It allowed you to -call (almost) any function with arbitrary argument lists on a new thread, -except that functions that returned values were not allowed. Implementing such -a template scheme is not simple, since, besides simplicity to use, it has to -take care of the lifetimes of objects that need to be synchronised across -threads, and in particular since templates do not allow for functions with -arbitrary numbers of arguments - they need to be repeated for every number of -arguments, which makes implementation tedious. Nevertheless, the old scheme was -very much usable. -

        - -

        -However, the old scheme had a number of shortcomings: -

          -
        • The implementation did not allow for functions returning - anything but void. We want to be able to call everything - on a new thread that can also be called on the present one.
        • -
        • Thread objects could not be copied. Rather, thread ids were put into a -thread manager object that took care of it, but handling single, or even -detached threads was not too convenient.
        • -
        • The general syntax for calling a function on a new thread was a - little clumsy and not intuitive.
        • -
        -

        - -

        -Regarding the last point, note that any other function is called by -

        -    f(arg1, arg2);
        -    obj.f(arg1, arg2);
        -
        -Ideally, the following syntax for starting any function on a new -thread would be nice: -
        -    spawn f(arg1, arg2);
        -    spawn obj.f(arg1,arg2);
        -
        -This syntax is not possible in C++, but the following syntax is, -making it relatively clear what the intent of the statement is: -
        -    spawn (f)(arg1, arg2);
        -    spawn (obj, &Class::f)(arg1,arg2);
        -
        -This is the syntax we will want to achieve (except for the fact that the -spawn function is in a namespace Threads, just like -all other entities described here). -

        - -

        -This text will discuss the details that are needed to implement -this syntax, as well as the following points: -

          -
        • Overloading spawn() so as to take unbound functions and member -functions, whether virtual or static. Of course, every call needs to be type -safe, i.e. the exact - same conversions of arguments need to be performed as in a usual call (except - for two additional copies that are necessary).
        • -
        • spawn() needs to return a value that allows us to identify, -and join a thread. The syntax for this will be -
          -      Thread<> t = spawn(f)(arg1, arg2);
          -      t.join ();
          -
          - If we don't save the return value of spawn(), as in the examples - above, then we have just created a detached thread.
        • -
        • Return values: if f() returns a value, say, an integer, then -we want to be able to retrieve it once the thread has finished: -
          -      Thread<int> t = spawn (f)(1., 1.);
          -      t.join ();
          -      int i = t.return_value ();
          -
          - This requires some care when functions return references, but some - template magic will save us. Another special case are functions that - return void.
        • -
        • Thread groups: if threads are created inside a loop, we will want to - put all of them into a ThreadGroup object, and wait for them - collectively, rather than one-by-one.
        • -
        -

        - -

        -Basically, the syntax above is all you need to know. It is as simple as -that. The rest of this text, in comparison is very much of technical nature. I -took most of it from a technical discussion I had with the author of the -threading scheme in boost, William Kempf. It describes the way the threading -scheme is implemented, the meaning of the various classes, etc. It probably -doesn't give you much insight how to use it, but should explain in -reasonable detail how it works. For more examples of use, take a look -at a number of the example programs in deal.II, or at some places in the -library itself. -

        - - -

        -This paper is divided into the following parts: -

          -
        1. This introduction
        2. -
        3. Entities (functions, classes) that are used by both and that - describe the newly created thread
        4. -
        5. Entities that are used on the calling thread
        6. -
        7. Entities that are used to create a thread
        8. -
        9. Tool classes
        10. -
        11. Open problems
        12. -
        13. Further suggestions
        14. -
        -We will present the main parts of the code in the text. The implementation is -in the library; all entities that -are not to be used by the user are placed into a namespace -internal, those to be used are in a namespace -Threads. The implementation uses Boost's shared_ptr. Some parts of -the implementation parallel the -boost::function library, but they are small and taylored to the -particular purpose at hand; in particular, they make heavy use of the -boost::tuple library. We note that the code has in some places already evolved -a little bit beyond the state of this paper, but the main ideas are all to be -found still. -

        - - - -

        2. Entities that describe threads

        - - -

        -Each thread that has been created is described by exactly one object -of type thread_description<RT>, where RT here and in the -sequel will always denote the return type of the function being called -on a new thread. The thread_description class is split into an -operating system dependent base class, and an independent derived -class. The base class is responsible for abstracting the OS -interface to the functions creating, joining, killing, and signalling -threads. For POSIX threads, this class looks as follows: -

        - -
        -    struct thread_description_base {
        -      private:
        -        pthread_t                 pt;
        -        mutable volatile bool     was_joined;
        -        mutable boost::mutex      join_mutex;
        -        mutable boost::condition  join_condition;
        -
        -      public:
        -        thread_description_base () : was_joined (false) {};
        -        virtual ~thread_description_base () { /* ... */ };
        -
        -        void create (void * (*p) (void *), void *d) {
        -          pthread_create (&pt, 0, p, d);
        -        };
        -
        -        void join () const {
        -          if (was_joined)
        -            return;
        -          boost::mutex::scoped_lock lock(join_mutex);
        -          if (!was_joined)
        -              pthread_join (pt, 0);
        -          was_joined = true;
        -        };
        -    };
        -
        - -

        -join() can be called more than once and uses Schmidt's thread-safe -double-checking pattern for speed. There could be additional functions -kill() or send_signal(), but these are not presently -implemented. -

        - -

        -In the destructor, we need to make sure that a thread is joined at -least once in its lifetime, or if not that it is being detached -(otherwise, we create the thread equivalent of a zombie process, which -will lead to a resource leak in the operating system). This is a -little tricky, since the destructor might be called while the thread -is still running; comments in the code explain how we work around -this. -

        - -

        -The thread_description<RT> class is derived from this base -class: -

        -    template <typename RT>
        -    struct thread_description : public thread_description_base
        -    {
        -        return_value<RT> ret_val;
        -    };
        -
        -

        - -

        -Its only purpose is to provide a place of storage for the return -value of the function being called on the new thread. Since functions -might return references or just nothing at all, the return_value -template is used. It is described below in the section on Tool -Classes. The return value will be set on exit of the function being -called. -

        - -

        -As mentioned, there is exactly one thread_description<RT> -object per created thread. It is accessed using boost::shared_ptr -objects, and references are held from each Thread<RT> object -for this thread as -well as from a wrapper function on the new thread. The object is thus -deleted, when all Thread<RT> objects for this thread have gone out of -scope (or point to different threads) and the thread itself has -finished; this is the appropriate time. -

        - - - -

        3. Entities that are used on the calling thread

        - - -

        -On the calling thread, we basically use the Thread<RT> -class, ThreadGroup<RT> class, and spawn -function. The Thread<RT> class has the following -implementation: -

        - -
        -    template <typename RT = void>
        -    class Thread {
        -      public:
        -        Thread () {};
        -        Thread (const boost::shared_ptr<thread_description<RT> > &td)
        -          : thread_description (td) {};
        -
        -        void join () const { thread_description->join (); };
        -
        -        RT return_value () {
        -          join ();
        -          return thread_description->ret_val.get();
        -        };
        -
        -        bool operator == (const thread &t) {
        -          return thread_description == t.thread_description;
        -        };
        -
        -      private:
        -        boost::shared_ptr<thread_description<RT> > thread_description;
        -    };
        -
        - -

        -Copy constructor and operator= are generated automatically by the -compiler. Note that asking for the return_value automatically waits -for the thread to finish, and that for this it is helpful that we can -call join() more than once on the thread description object. The -return_value() function also makes use of the fact that if RT=void, -then the return construct is still valid. Furthermore, since this is -the most common case, the template argument of the thread class has a -default of void. -

        - -

        -The ThreadGroup class is a container distributing calls to its -member functions to all its elements. Elements are added using -operator+=, and they are stored using a -std::vector. (A std::set would be more appropriate, -but then we would have to have operator< for -Thread<RT> objects.) It has the same default value for the -template argument: -

        - -
        -    template <typename RT = void>
        -    class ThreadGroup
        -    {
        -      public:
        -        ThreadGroup & operator += (const Thread<RT> &t) {
        -          threads.push_back (t);
        -	  return *this;
        -        };
        -
        -        void join_all () const {
        -          for (typename std::vector<Thread<RT> >::const_iterator
        -                 t=threads.begin(); t!=threads.end(); ++t)
        -            t->join ();
        -        };
        -
        -      private:
        -        std::vector<Thread<RT> > threads;
        -    };
        -
        - -

        -Since objects of type Thread<RT> are freely copyable, there -is no need -to provide an index operator for ThreadGroup; if you need to index -its elements (for example to get at the return value), use -std::vector<Thread<RT> >. -

        - -

        -Finally, there are overloads of the spawn template, for unbound -functions, as well as const and non-const member -functions. We only show them for unary member functions: -

        -    template <typename RT, typename C, typename Arg1>
        -    mem_fun_encapsulator<RT,C,boost::tuple<Arg1> >
        -    spawn (C &c, RT (C::*fun_ptr)(Arg1)) {
        -      return mem_fun_encapsulator<RT, C, boost::tuple<Arg1> > (c,fun_ptr);
        -    }
        -
        -    template <typename RT, typename C, typename Arg1>
        -    mem_fun_encapsulator<RT,const C,boost::tuple<Arg1> >
        -    spawn (const C &c, RT (C::*fun_ptr)(Arg1) const) {
        -      return mem_fun_encapsulator<RT, const C, boost::tuple<Arg1> > (c,fun_ptr);
        -    }
        -
        -

        - -

        -Note that we need two overloaded versions, for const and -non-const -member functions. Both create an intermediate object (in the -internal -namespace) that will accept arguments in place of the function being -called on the new thread, make sure a new thread is created, copy the -arguments to the new thread's stack, and only then return. The exact -mechanism is described in the next section. -

        - -

        -In the implementation, we have to repeat the functions above for -binary, ternary, ... member functions, and also for unbound member -functions. One would really like to have something also for objects other than -pointers to (member-)functions that provide an -operator(). However, this doesn't seem to be possible if -operator() returns something other than void or takes -arguments. This -would need some kind of typeof-operator which is not standard C++. See the -discussion in the Open Problems section. -

        - - -

        4. Entities that are used to create a thread

        - - -

        -In this section, we describe the gory details of copying arguments -from the stack of the old thread to the stack of the new one. These -details are not necessary to use the spawn() functions, -so are probably boring and may be skipped. -

        - -

        -The basic idea is the following: spawn() returns an object and provides -it with the address of the function to be called, and in the case of a -member function with the address of an object. mem_fun_encapsulator -looks like this: -

        - -
        -    template <typename RT, typename C, typename ArgList,
        -              int length = boost::tuples::length<ArgList>::value>
        -    class mem_fun_encapsulator;
        -
        -    template <typename RT, typename C, typename ArgList>
        -    class mem_fun_encapsulator<RT,C,ArgList,1> {
        -        typedef typename mem_fun_ptr<RT,C,ArgList>::type MemFunPtr;
        -
        -      public:
        -        mem_fun_encapsulator (C &c, MemFunPtr mem_fun_ptr)
        -            : c (c), mem_fun_ptr(mem_fun_ptr) {};
        -
        -        Thread<RT>
        -        operator() (typename boost::tuples::element<0,ArgList>::type arg1) {
        -            return mem_fun_wrapper<RT,C,ArgList> (mem_fun_ptr, c,
        -                                                  boost::tie(arg1)).fire_up ();
        -        };
        -
        -      private:
        -        C         &c;
        -        MemFunPtr  mem_fun_ptr;
        -    };
        -
        - -

        -(Note how the default value specification of the last template -argument automatically redirects uses with three template parameters -to the correct four-parameter specialization, even though the general -template is never used.) -

        - -

        -The constructor stores the two addresses. If one calls -

        -    spawn(obj, &C::f) (42);
        -
        -the next thing that is invoked is the operator() of this class. It -takes the argument(s), creates a temporary with the two addresses and -a reference to the argument (that's what boost::tie) does, and calls -fire_up() on this temporary. fire_up has all the information, and does -the work. Note that we will not pass references to the individual -arguments, but bind them all together with boost::tie, so that we need -not have different versions of the mem_fun_wrapper class for different -numbers of arguments. (However, we need a separate partial -specialization of the mem_fun_encapsulator class for each number of -function arguments.) The tie_args template is used to make a version -of the ArgList type with all reference types; it is described below. -

        - -

        -The next question, of course, is how mem_fun_wrapper looks like. Let -us first consider the base class that it has in common with -fun_wrapper, the wrapping class for non-member function objects: -

        -    template <typename RT, typename EntryPointClass>
        -    struct wrapper_base {
        -        Thread<RT> fire_up () {
        -          thread_descriptor
        -            = DescriptionPointer(new typename thread_description<RT>());
        -
        -          boost::mutex::scoped_lock lock (mutex);
        -          thread_descriptor->create (&EntryPointClass::entry_point,
        -                                        (void *)this);
        -          condition.wait (lock);
        -
        -          return thread_descriptor;
        -        }
        -
        -      protected:
        -        typedef boost::shared_ptr<thread_description<RT> >
        -        DescriptionPointer;
        -
        -        DescriptionPointer thread_descriptor;
        -
        -        mutable boost::mutex     mutex;
        -        mutable boost::condition condition;
        -    };
        -
        -

        -fire_up is the only real function; it creates a thread descriptor -object, and calls it with a pointer to the present object, and the address of -the starting point is EntryPointClass::entry_point, where -EntryPoint is the name of a class that implements this thread -starting function and is passed as a template argument to -wrapper_base. -Before it starts the new thread, it acquires a mutex and -afterwards wait until a condition is signalled before it finishes by -using the thread descriptor object to generate a Thread<RT> -object. -

        - -

        -The magic happens in the derived class: -

        -    template <typename RT, class C, typename ArgList>
        -    struct mem_fun_wrapper
        -       : public wrapper_base<RT, mem_fun_wrapper<RT,C,ArgList> >
        -    {
        -        typedef typename mem_fun_ptr<RT,C,ArgList>::type MemFunPtr;
        -        typedef typename tie_args<ArgList>::type ArgReferences;
        -        mem_fun_wrapper (MemFunPtr            mem_fun_ptr,
        -                         C                   &c,
        -                         const ArgReferences &args)
        -                        : c (c),
        -                          mem_fun_ptr (mem_fun_ptr),
        -                          args (args)  {};
        -      private:
        -        mem_fun_wrapper ();
        -        mem_fun_wrapper (const mem_fun_wrapper &);
        -
        -        C            &c;
        -        MemFunPtr     mem_fun_ptr;
        -        ArgReferences args;
        -
        -        static void * entry_point (void *arg)
        -          {
        -            const wrapper_base<RT> *w
        -              = reinterpret_cast<const wrapper_base<RT>*> (arg);
        -            const mem_fun_wrapper *wrapper
        -              = static_cast<const mem_fun_wrapper*> (w);
        -            MemFunPtr mem_fun_ptr = wrapper->mem_fun_ptr;
        -            C        &c           = wrapper->c;
        -            ArgList   args        = wrapper->args;
        -
        -            boost::shared_ptr<thread_description<RT> >
        -              thread_descriptor  = wrapper->thread_descriptor;
        -
        -            {
        -              boost::mutex::scoped_lock lock (wrapper->mutex);
        -              wrapper->condition.notify_one ();
        -            }
        -
        -            call (mem_fun_ptr, c, args, thread_descriptor->ret_val);
        -
        -            return 0;
        -          };
        -    };
        -
        -

        - -

        -Note in particular, how this class passes itself as second template parameter -to the base class, enabling the latter to call the -mem_fun_wrapper::entry_point function as entry point to the new -thread. When the fire_up function in the base -class is called, it creates a new thread that starts inside this -function, and the argument given to it is the address of the -wrapper_base object. The first thing the entry_point function does, is -to cast back this address to the real object's type (it knows the real -type of the object, since the address of this function has been handed -down through the template magic), then copies the address of -the object to work with and the address of the member function to be -called from the stack of the old thread to the stack of this new -thread. It then also copies the arguments, which so far have been held -only as references, but copies them by value. Next, it gets the -address of the return thread descriptor, and with it the address of -the return value (the shared_ptr will also make sure that the object -lives long enough). The part in braces signals the condition to the -old thread, which hangs in the fire_up function: the arguments have -been copied, and the old thread can go on, eventually also destroying -objects that have been copied by value. Finally, it calls the -requested function with the proper arguments through a generic -interface (described in the section on tools) and sets the return -value of the thread. -

        - - -

        5. Tool classes

        - - -

        -In the implementation above, some tool classes have been used. These -are briefly described here. -

        - -

        a) The return_value<T> class template

        - -

        -This class stores a value of type T if T is not a -reference or void. It offers get() and -set() functions that get and set the value. If T is a -reference type, then set() is obviously not possible since -references cannot be rebound after construction time. The class therefore -stores a pointer, and set() sets the pointer to the object the -reference references. get() then returns the reference again. If -T is void, then the class is empty and there is only -a get() function that returns void. -

        - -
        -    template <typename RT> struct return_value
        -    {
        -      private:
        -        RT value;
        -      public:
        -        RT get () const { return value; }
        -        void set (RT v) { value = v; }
        -    };
        -
        -    template <typename RT> struct return_value<RT &>
        -    {
        -      private:
        -        RT * value;
        -      public:
        -        RT & get () const { return *value; }
        -        void set (RT & v) { value = &v; }
        -    };
        -
        -    template <> struct return_value<void> {
        -        static void get () {};
        -    };
        -
        - - -

        b) The call function templates

        - -

        -The call function templates take a function pointer, an argument list -tuple, and the address of the return value object, and call the -function with these arguments. Since we have to unpack the argument -list, we have to dispatch to different functions, depending on the -number of arguments, in the usual way: -

        - -
        -    template <int> struct int2type;
        -
        -    template <typename RT, typename PFun, typename ArgList>
        -    static void call (PFun     fun_ptr,
        -                      ArgList &arg_list,
        -                      return_value<RT> &ret_val)
        -    {
        -      Caller<RT>::do_call (fun_ptr, arg_list, ret_val,
        -                           int2type<boost::tuples::length<ArgList>::value>());
        -    };
        -
        - -

        -The Caller class has the following member functions: - -

        -    template <typename RT> struct Caller
        -    {
        -        template <typename PFun, typename ArgList>
        -        static void do_call (PFun     fun_ptr,
        -                             ArgList &arg_list,
        -                             return_value<RT> &ret_val,
        -                             const int2type<1> &)
        -        {  ret_val.set ((*fun_ptr) (arg_list.template get<0>()));  };
        -
        -        // likewise for int2type<0>, int2type<2>, ...
        -    };
        -
        -

        - - -

        -There is a specialization Caller<void> that does not set a return -value, and for each call and do_call function there is a second -function for member function pointers that takes an object as -additional argument. -

        - - -

        c) mem_fun_ptr

        - -

        -In order to form a pointer to member function for both cases of const -and non-const member functions, we need a simple tool: -

        -    template <typename RT, class C, typename ArgList,
        -              int length = boost::tuples::length<ArgList>::value>
        -    struct mem_fun_ptr_helper;
        -
        -    template <typename RT, class C, typename ArgList>
        -    struct mem_fun_ptr_helper<RT, C, ArgList, 1>
        -    {
        -        typedef RT (C::*type) (typename boost::tuples::element<0,ArgList>::type);
        -    };
        -
        -    template <typename RT, class C, typename ArgList>
        -    struct mem_fun_ptr_helper<RT, const C, ArgList, 1>
        -    {
        -        typedef RT (C::*type) (typename boost::tuples::element<0,ArgList>::type) const;
        -    };
        -
        -    template <typename RT, class C, typename ArgList>
        -    struct mem_fun_ptr
        -    {
        -        typedef typename mem_fun_ptr_helper<RT,C,ArgList>::type type;
        -    };
        -
        -

        - -

        -Note that if the second template argument is a const C, then we mark -the member function const. The two templates for mem_fun_ptr_helper -have to be repeated for every number of arguments that we have in -mind. Note also that the specification of the default argument in the -declaration of the general template of mem_fun_ptr_helper saves us -from recomputing it in mem_fun_ptr. -

        - - - -

        d) add_reference for tuples

        - -

        -The following classes add references to the elements of a tuple, thus -providing the type equivalent of the return value of the boost::tie -functions. There are probably ways inside boost's tuples library to do -this, but I couldn't locate this. -

        -    template <int N, typename Tuple>
        -    struct add_reference_to_Nth
        -    {
        -        typedef typename boost::tuples::element<N,Tuple>::type ArgType;
        -        typedef typename boost::add_reference<ArgType>::type type;
        -    };
        -
        -    template <typename Tuple, int = boost::tuples::length<Tuple>::value>
        -    struct tie_args_helper;
        -
        -    template <typename Tuple>
        -    struct tie_args_helper<Tuple,1>
        -    {
        -        typedef
        -        boost::tuple<typename add_reference_to_Nth<0,Tuple>::type>
        -        type;
        -    };
        -
        -    template <typename Tuple>
        -    struct tie_args
        -    {
        -        typedef typename tie_args_helper<Tuple>::type type;
        -    };
        -
        -

        -

        -The tie_args_helper class is repeated for every number of elements we -want to use. -

        - - - -

        6. Open Problems

        - - -

        a) A variable lifetime problem

        -

        -The only unsolved semantic problem I am aware of at present is the -following: if we have a function -

        -    void f(const int &i);
        -
        -then this function can be called as -
        -    f(1);
        -
        -i.e. the compiler creates a temporary and passes its address to -f(). When invoking f() on a new thread, however, as in -
        -    spawn (f)(1);
        -
        -then it is only guaranteed that the call to spawn() does not return -before the new thread is started and has copied the arguments to -f(). However, the argument is only the reference to the temporary, not -its value. f() will thus likely observe corrupted values for its -argument. On the other hand, copying the value is no option either, of -course. Since to the author's best knowledge the language does not -provide means to avoid taking the address of a temporary, there is -presently no way to avoid this problem. Suggestions for healing it are -very welcome. -

        - - -

        b) Forwarding of operator()

        -

        -Above, we have not defined an overload of spawn for functor-like -objects, even though that would be desirable. One way to do so would be -

        -    template <typename C>
        -    mem_fun_encapsulator<void,C,boost::tuple<> >
        -    spawn (C &c) {
        -      return spawn (c, &C::operator());
        -    }
        -
        -This only works if operator() satisfies the signature -
        -    struct C {    void operator() ();  };
        -
        -

        -

        -We could add another overload if operator() is -const. However, what one -would like is an overload for more general signatures. Unfortunately, -this requires that we can infer type and number of arguments and -return type of operator() at the time we declare the return type of -above overload of spawn(). I have not found a way to infer this -information just by using the template parameter C -- it just seems -not possible. What would work if it were supported by compilers is a -kind of typeof-operator: -

        -    template <typename C>
        -    typeof(spawn(c,&C::operator()))          // **
        -    spawn (C &c) {
        -      return spawn (c, &C::operator());
        -    }
        -
        -

        -

        -When seeing the declaration, the compiler would automatically check -which version of the overloaded spawn() function it would call, and -correspondingly take the return type. gcc does support the typeof -keyword, but even present CVS snapshots generate an internal compiler -error on this construct. -

        - -

        c) Using a memory based scheme rather than condition variables

        -

        -The scheme using mutices and condition variables to synchronise -calling and called thread seems expensive. A simpler approach would be -to replace it by letting the creating thread generate an object on the -heap that holds copies of the arguments (instead of references as -presently), spawn the new thread and just go on without any -synchronisation. -

        - -

        -The calling thread would then not have to copy the arguments onto its -local stack and signal to the calling thread. It would only have to -delete the memory after the call to the user-supplied function -returns. Apart from replacing ArgReferences by -ArgList in some places, -the scheme would basically just replace *_encapsulator::operator(), -fire_up, and thread_entry_point: -

        - -
        -      thread<RT>
        -      operator() (typename boost::tuples::element<0,ArgList>::type arg1) {
        -        return (new mem_fun_wrapper<RT,C,ArgList> (mem_fun_ptr, c,
        -                                                   boost::tie(arg1)))->fire_up ();
        -      };
        -
        -      thread<RT> fire_up () {
        -        thread_descriptor
        -          = DescriptionPointer(new typename detail::thread_description<RT>());
        -
        -        thread_descriptor->create (entry_point, (void *)this);
        -        // no synchronisation here
        -        return thread_descriptor;
        -      }
        -
        -      static void * entry_point (void *arg) {
        -        wrapper_base<RT> *w       = reinterpret_cast<wrapper_base<RT>*> (arg);
        -        fun_wrapper      *wrapper = static_cast<fun_wrapper*> (w);
        -        // no copying here; no synchronisation necessary
        -        detail::call (wrapper->fun_ptr, wrapper->args,
        -                      wrapper->thread_descriptor->ret_val);
        -        // delete memory
        -        delete wrapper;
        -        return 0;
        -      }
        -
        - -

        -The perceived simplicity without using mutices and condition variable -might be deceptive, however, since memory allocation and deallocation -requires locking and unlocking mutices as well, and is generally not a -cheap operation. -

        - -

        -However, the main problem is that I get spurious segmentation faults -with this on my Linux box. These always happen inside the memory -allocation and deallocation functions in the C++ and C language -support libraries. I believe that these are not bugs in the -application, but in the language runtime. However, my motivation to -debug multithreading problems in the libc is very limited; for -reference, valgrind 1.94 does not show accesses to uninitialized or -already freed memory portions, even for runs that eventually crash -later on. -

        - - -

        7. Alternative Suggestions

        - - -

        -Here are some additional suggestions for discussion: -

        - -

        a) Conversions between return values

        - -

        -If f() is a function returning an integer, then the following is -legal: -

        -    double d = f(arg1, arg2);
        -
        -The question, then, would be: do we want to allow conversions between -Thread<double> and Thread<int> objects? -And do we want to allow a -conversion from Thread<T> to Thread<void> -(i.e.: casting away the return value)? -

        - -

        -Since one can still assign the return value of the thread to a double, -

        -    double d = thread.return_value();
        -
        -the only real merit in allowing conversions is in putting threads with -different return value types into a ThreadGroup: -
        -    double f1 ();
        -    int    f2 ();
        -
        -    ThreadTroup<double> tg;
        -    tg += spawn(f1)();
        -    tg += spawn(f2)();    // convert Thread<int> to Thread<double>
        -    tg.join_all ();
        -
        -

        -

        -Being able to do this is probably only syntactic sugar, except for the -case where we are not interested in the return values of all threads, -i.e. the conversion Thread<T> -> Thread<void> seems -like the only one that is really worth it. -

        - -

        -I have made some initial experiments with implementing general -conversions. The main problem is that we need to allow conversion -chains: -

        -    thread<double> t1 = spawn (f)(arg1, arg2);
        -    thread<int>    t2 = t1;
        -    thread<double> t3 = t2;
        -
        -

        -

        -If f() returns 1.5, then t3.return_value() needs to -return 1.0. I believe that such conversions could be implemented, by adding the -types in the chain into a boost::tuple of growing length, and writing -a function that converts a value of the first type of this tuple to -the second, to the third, ..., to the last type in the tuple. However, -a plethora of internal compiler errors has scared me off doing more -experiments in this direction. -

        - - -

        b) Conversions between class types I

        - -

        -When you have a class hierarchy like -

        -    struct B { void f(); };
        -    struct D : public B {};
        -
        -then calling -
        -    spawn (D(), &B::f);
        -
        -fails for gcc (but succeeds with Intel's icc). Presumably, gcc is -right: template arguments must match exactly, and D() is of type -D, while &B::f leads to a class type of -B. There is no function template for spawn for which this call can -match without a derived-to-base conversion. We could now change the template -
        -    template <typename RT, typename C, typename Arg1>
        -    mem_fun_encapsulator<RT,C,boost::tuple<Arg1> >
        -    spawn (C &c, RT (C::*fun_ptr)(Arg1)) {
        -      return mem_fun_encapsulator<RT, C, boost::tuple<Arg1> > (c,fun_ptr);
        -    }
        -
        -into -
        -    template <typename RT, typename A, typename C, typename Arg1>
        -    mem_fun_encapsulator<RT,C,boost::tuple<Arg1> >
        -    spawn (A &a, RT (C::*fun_ptr)(Arg1)) {
        -      return mem_fun_encapsulator<RT, C, boost::tuple<Arg1> > (a,fun_ptr);
        -    }
        -
        -i.e. introduce another class template A for the type of the -object. Since the arguments of the constructor to the -mem_fun_encapsulator object are known, the compiler would perform a -derived-to-base conversion for object a if necessary. I don't know -whether this is desirable, in particular since also other conversions -could happen here that one would not want (in the extreme case -generating a temporary).. -

        - - -

        c) Conversions between class types II

        - -

        -When one writes -

        -    spawn (this, &X::f)
        -
        -one gets an error that "'this' is not convertible to type X&". One has -to write *this instead. It would be simple to have another set of -overloads of spawn() that accepts a pointer instead of a reference, -and simply forwards to the existing function. This is just for the -lazy people, probably, but it is a common case. -

        - - -

        d) Catching exceptions

        - -

        -When a function on a new thread throws an exception, it only -propagates up to one of the two entry_point() functions, then vanishes -into the run-time system and kills the program. Ideally, we would have -a way to pass it over to the main thread. This, however, would need -some support from the language. Basically, we would need two -operations: -

          -
        • clone an exception without knowing its type; we could then in the - entry_point function catch it and stack it somewhere, just like we - do for the return value
        • -
        • back on the main thread, the Thread::join() function must raise this - stored exception if there was one, again without knowing its type.
        • -
        -Given how exceptions are implemented usually, the machinery for these -operations is probably there, but is not exported to the user through -the run-time environment. Thus, an implementation of such ideas has to -wait for changes in the language specification. -

        - - -
        - -
        -Wolfgang Bangerth, 2003 -
        -

         

        - - - - - - - diff --git a/deal.II/examples/README.example b/deal.II/examples/README.example new file mode 100644 index 0000000000..1f4f838258 --- /dev/null +++ b/deal.II/examples/README.example @@ -0,0 +1,4 @@ +This folder contains example programs for deal.II + +They are distributed under the same license as the deal.II library itself, +namely LGPL-2.1+. diff --git a/deal.II/examples/step-25/doc/animate.sh b/deal.II/examples/step-25/doc/animate.sh index 31807c2625..c3a7cf9fb0 100755 --- a/deal.II/examples/step-25/doc/animate.sh +++ b/deal.II/examples/step-25/doc/animate.sh @@ -1,4 +1,24 @@ #!/bin/sh +## --------------------------------------------------------------------- +## $Id$ +## +## Copyright (C) 2006 - 2013 by the deal.II authors +## +## This file is part of the deal.II library. +## +## The deal.II library is free software; you can use it, redistribute +## it, and/or modify it under the terms of the GNU Lesser General +## Public License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## The full text of the license can be found in the file LICENSE at +## the top level of the deal.II distribution. +## +## --------------------------------------------------------------------- + +# +# Author: Ivan Christov, Wolfgang Bangerth, Texas A&M University, 2006 +# + dim=1 tstep=0 tstepinc=20 @@ -35,4 +55,4 @@ done gnuplot -persist $batchfile # use ImageMagick to create an animated gif from the PNG files -convert -delay 0 -loop 0 "solution-"$dim"d-*.png" "solution-"$dim"d.gif" \ No newline at end of file +convert -delay 0 -loop 0 "solution-"$dim"d-*.png" "solution-"$dim"d.gif" diff --git a/deal.II/examples/step-42/step-42.cc b/deal.II/examples/step-42/step-42.cc index 29a165bd59..f4b600317f 100644 --- a/deal.II/examples/step-42/step-42.cc +++ b/deal.II/examples/step-42/step-42.cc @@ -1820,8 +1820,8 @@ namespace Step42 break; } - old_solution = solution; solution = tmp_vector; + old_solution = solution; } old_active_set = active_set; diff --git a/deal.II/include/deal.II/base/graph_coloring.h b/deal.II/include/deal.II/base/graph_coloring.h index 64f39e54ae..5de886009b 100644 --- a/deal.II/include/deal.II/base/graph_coloring.h +++ b/deal.II/include/deal.II/base/graph_coloring.h @@ -20,6 +20,7 @@ #include +#include #include #include #include @@ -31,344 +32,482 @@ DEAL_II_NAMESPACE_OPEN -/// This namespace contains the functions necessary to color a graph. -namespace graph_coloring { - - /** - * Create the partitioning using a simplified version of the Cuthill-McKee - * algorithm (Breadth First Search algorithm). - */ - template - std::vector > create_partitioning(Iterator const &begin, - typename identity::type const &end, - std_cxx1x::function (Iterator const &)> - const &get_conflict_indices) +/** + * A namespace containing functions that can color graphs. + */ +namespace GraphColoring +{ + namespace internal { - std::vector > partitioning(1,std::vector (1,begin)); - // Number of iterators. - unsigned int n_iterators(0); - // Create a map from conflict indices to iterators - boost::unordered_map > indices_to_iterators; - for (Iterator it=begin; it!=end; ++it) + /** + * Create a partitioning of the given range of iterators using a simplified + * version of the Cuthill-McKee algorithm (Breadth First Search algorithm). + * The function creates partitions that contain "zones" of iterators + * where the first partition contains the first iterator, the second + * zone contains all those iterators that have conflicts with the single + * element in the first zone, the third zone contains those iterators that + * have conflicts with the iterators of the second zone and have not previously + * been assigned to a zone, etc. If the iterators represent cells, then this + * generates partitions that are like onion shells around the very first + * cell. Note that elements in each zone may conflict with other elements in + * the same zone. + * + * The question whether two iterators conflict is determined by a user-provided + * function. The meaning of this function is discussed in the documentation of + * the GraphColoring::make_graph_coloring() function. + * + * @param[in] begin The first element of a range of iterators for which a + * partitioning is sought. + * @param[in] end The element past the end of the range of iterators. + * @param[in] get_conflict_indices A user defined function object returning + * a set of indicators that are descriptive of what represents a + * conflict. See above for a more thorough discussion. + * @return A set of sets of iterators (where sets are represented by + * std::vector for efficiency). Each element of the outermost set + * corresponds to the iterators pointing to objects that are in the + * same partition (i.e., the same zone). + * + * @author Martin Kronbichler, Bruno Turcksin + */ + template + std::vector > + create_partitioning(const Iterator &begin, + const typename identity::type &end, + const std_cxx1x::function (const Iterator &)> &get_conflict_indices) { - std::vector conflict_indices = get_conflict_indices(it); - const unsigned int n_conflict_indices(conflict_indices.size()); - for (unsigned int i=0; i used_it; - used_it.insert(begin); - while (used_it.size()!=n_iterators) - { - typename std::vector::iterator vector_it(partitioning.back().begin()); - typename std::vector::iterator vector_end(partitioning.back().end()); - std::vector new_zone; - for (; vector_it!=vector_end; ++vector_it) - { - std::vector conflict_indices = get_conflict_indices(*vector_it); - const unsigned int n_conflict_indices(conflict_indices.size()); - for (unsigned int i=0; i > indices_to_iterators; + for (Iterator it=begin; it!=end; ++it) { - std::vector iterator_vector(indices_to_iterators[conflict_indices[i]]); - for (unsigned int j=0; j conflict_indices = get_conflict_indices(it); + const unsigned int n_conflict_indices = conflict_indices.size(); + for (unsigned int i=0; i > zones(1,std::vector (1,begin)); + std::set used_it; + used_it.insert(begin); + while (used_it.size()!=n_iterators) + { + // loop over the elements of the previous zone. for each element of + // the previous zone, get the conflict indices and from there get + // those iterators that are conflicting with the current element + typename std::vector::iterator previous_zone_it(zones.back().begin()); + typename std::vector::iterator previous_zone_end(zones.back().end()); + std::vector new_zone; + for (; previous_zone_it!=previous_zone_end; ++previous_zone_it) { - new_zone.push_back(iterator_vector[j]); - used_it.insert(iterator_vector[j]); + std::vector conflict_indices = get_conflict_indices(*previous_zone_it); + const unsigned int n_conflict_indices(conflict_indices.size()); + for (unsigned int i=0; i &conflicting_elements + = indices_to_iterators[conflict_indices[i]]; + for (unsigned int j=0; j (1,it)); + used_it.insert(it); + break; + } } - } - // If there are iterators in the new zone, then the zone is added to the - // partition. Otherwise, the graph is disconnected and we need to find - // an iterator on the other part of the graph. - if (new_zone.size()!=0) - partitioning.push_back(new_zone); - else - for (Iterator it=begin; it!=end; ++it) - if (used_it.count(it)==0) - { - partitioning.push_back(std::vector (1,it)); - break; - } - } - return partitioning; - } + return zones; + } - /** - * This function uses DSATUR (Degree SATURation) to color one zone of the - * partition. DSATUR works as follows: - * -# Arrange the vertices by decreasing order of degrees. - * -# Color a vertex of maximal degree with color 1. - * -# Choose a vertex with a maximal saturation degree. If there is equality, - * choose any vertex of maximal degree in the uncolored subgraph. - * -# Color the chosen vertex with the least possible (lowest numbered) color. - * -# If all the vertices are colored, stop. Otherwise, return to 3. - */ - template - std::vector > make_dsatur_coloring(std::vector &partition, - std_cxx1x::function (Iterator const &)> - const &get_conflict_indices) - { - std::vector > partition_coloring; - // Number of zones composing the partitioning. - const unsigned int partition_size(partition.size()); - std::vector sorted_vertices(partition_size); - std::vector degrees(partition_size); - std::vector > conflict_indices(partition_size); - std::vector > graph(partition_size); - - // Get the conflict indices associated to each iterator. The conflict_indices have to be sorted so - // set_intersection can be used later. - for (unsigned int i=0; i + void + make_dsatur_coloring(std::vector &partition, + const std_cxx1x::function (const Iterator &)> &get_conflict_indices, + std::vector > &partition_coloring) { - conflict_indices[i] = get_conflict_indices(partition[i]); - std::sort(conflict_indices[i].begin(),conflict_indices[i].end()); - } - - // Compute the degree of each vertex of the graph using the - // intersection of the conflict indices. - std::vector conflict_indices_intersection; - std::vector::iterator intersection_it; - for (unsigned int i=0; i sorted_vertices(partition_size); + std::vector degrees(partition_size); + std::vector > conflict_indices(partition_size); + std::vector > graph(partition_size); + + // Get the conflict indices associated to each iterator. The conflict_indices have to be sorted so + // set_intersection can be used later. + for (unsigned int i=0; i::iterator degrees_it; - for (unsigned int i=0; i > colors_used; - for (unsigned int i=0; i conflict_indices_intersection; + std::vector::iterator intersection_it; + for (unsigned int i=0; i::iterator degrees_it; + for (unsigned int i=0; i (1, - partition[current_vertex])); - boost::unordered_set tmp; - tmp.insert(current_vertex); - colors_used.push_back(tmp); - } - } - return partition_coloring; - } + // Color the graph. + std::vector > colors_used; + for (unsigned int i=0; i (1, + partition[current_vertex])); + boost::unordered_set tmp; + tmp.insert(current_vertex); + colors_used.push_back(tmp); + } + } + } - /** - * Given a partition-coloring graph, gather the colors together. All the - * colors on even (resp. odd) partition can be executed simultaneously. This - * function tries to create colors of similar number of elements. - */ - template - std::vector > - gather_colors(std::vector > > const &partition_coloring) - { - std::vector > coloring; - - // Count the number of iterators in each color. - const unsigned int partition_size(partition_coloring.size()); - std::vector > colors_counter(partition_size); - for (unsigned int i=0; i + std::vector > + gather_colors(const std::vector > > &partition_coloring) { - const unsigned int n_colors(partition_coloring[i].size()); - colors_counter[i].resize(n_colors); - for (unsigned int j=0; j > coloring; - // Find the partition with the largest number of colors for the even partition. - unsigned int i_color(0); - unsigned int max_even_n_colors(0); - const unsigned int colors_size(colors_counter.size()); - for (unsigned int i=0; i > colors_counter(partition_size); + for (unsigned int i=0; i used_k; - for (unsigned int j=0; j::iterator it; - it = std::max_element(colors_counter[i].begin(),colors_counter[i].end()); - unsigned int min_iterators(-1); - unsigned int pos(0); - // Find the color of coloring with the least number of colors among - // the colors that have not been used yet. - for (unsigned int k=0; k used_k; + for (unsigned int j=0; j::iterator it; + it = std::max_element(colors_counter[i].begin(),colors_counter[i].end()); + unsigned int min_iterators(-1); + unsigned int pos(0); + // Find the color of coloring with the least number of colors among + // the colors that have not been used yet. + for (unsigned int k=0; k used_k; - for (unsigned int j=0; j1) { - // Find the color in the current partition with the largest number of - // iterators. - std::vector::iterator it; - it = std::max_element(colors_counter[i].begin(),colors_counter[i].end()); - unsigned int min_iterators(-1); - unsigned int pos(0); - // Find the color of coloring with the least number of colors among - // the colors that have not been used yet. - for (unsigned int k=0; k used_k; + for (unsigned int j=0; j::iterator it; + it = std::max_element(colors_counter[i].begin(),colors_counter[i].end()); + unsigned int min_iterators(-1); + unsigned int pos(0); + // Find the color of coloring with the least number of colors among + // the colors that have not been used yet. + for (unsigned int k=0; kall
        degrees of + * freedom for which anything is written into the matrix or right hand side. + * In other words, if the writing happens through a function like + * ConstraintMatrix::copy_local_to_global(), then the set of conflict indices + * must actually contain not only the degrees of freedom on the current + * cell, but also those they are linked to by constraints such as hanging + * nodes. + * + * In other situations, the conflict indicator sets may represent + * something different altogether -- it is up to the caller of this function + * to describe what it means for two iterators to conflict. Given this, + * computing conflict graph edges can be done significantly more cheaply + * than with ${\cal O}(N^2)$ operations. + * + * In any case, the result of the function will be so that iterators whose + * conflict indicator sets have overlap will not be assigned to the same + * color. + * + * @param[in] begin The first element of a range of iterators for which a + * coloring is sought. + * @param[in] end The element past the end of the range of iterators. + * @param[in] get_conflict_indices A user defined function object returning + * a set of indicators that are descriptive of what represents a + * conflict. See above for a more thorough discussion. + * @return A set of sets of iterators (where sets are represented by + * std::vector for efficiency). Each element of the outermost set + * corresponds to the iterators pointing to objects that are in the + * same partition (have the same color) and consequently do not + * conflict. The elements of different sets may conflict. + * + * @author Martin Kronbichler, Bruno Turcksin */ template - std::vector > - make_graph_coloring(Iterator const &begin,typename identity::type const &end, - std_cxx1x::function (Iterator const &)> - const &get_conflict_indices) + std::vector > + make_graph_coloring(const Iterator &begin, + const typename identity::type &end, + const std_cxx1x::function (const typename identity::type &)> &get_conflict_indices) { + Assert (begin != end, ExcMessage ("GraphColoring is not prepared to deal with empty ranges!")); + // Create the partitioning. - std::vector > partitioning = create_partitioning(begin,end, - get_conflict_indices); + std::vector > + partitioning = internal::create_partitioning (begin, + end, + get_conflict_indices); // Color the iterators within each partition. + // Run the coloring algorithm on each zone in parallel const unsigned int partitioning_size(partitioning.size()); - std::vector > > partition_coloring( - partitioning_size); - for (unsigned int i=0; i > > + partition_coloring(partitioning_size); - // Gather the colors together. - std::vector > coloring = gather_colors(partition_coloring); - - return coloring; + Threads::TaskGroup<> tasks; + for (unsigned int i=0; i, + partitioning[i], + get_conflict_indices, + partition_coloring[i]); + tasks.join_all(); + + // Gather the colors together. + return internal::gather_colors(partition_coloring); } } // End graph_coloring namespace diff --git a/deal.II/include/deal.II/base/parameter_handler.h b/deal.II/include/deal.II/base/parameter_handler.h index 0e6acd4ed0..2e1ce3b072 100644 --- a/deal.II/include/deal.II/base/parameter_handler.h +++ b/deal.II/include/deal.II/base/parameter_handler.h @@ -34,7 +34,6 @@ DEAL_II_NAMESPACE_OPEN //TODO: Allow long input lines to be broken by appending a backslash character -//TODO: Provide an "include" command for parameter files // public classes; to be declared below diff --git a/deal.II/include/deal.II/base/thread_management.h b/deal.II/include/deal.II/base/thread_management.h index a0d4418cfe..ab3cde9387 100644 --- a/deal.II/include/deal.II/base/thread_management.h +++ b/deal.II/include/deal.II/base/thread_management.h @@ -1279,50 +1279,14 @@ namespace Threads * While we have only one of these * objects per thread, several * Threads::Thread objects may refer to - * this descriptor. - * - * Note, however, that since this - * object holds the location - * where we store the return - * value of the thread, the - * object has to live at least as - * long as the thread - * executes. This means that even - * if all Threads::Thread objects - * that referred to this - * descriptor (through a - * std::shared_ptr) have gone out - * of scope, we must still hold - * on to the object. We do this - * by having the descriptor keep - * a pointer to itself and reset - * it to zero once it is done -- - * effectively keeping the use - * pointer above zero as long as - * work is going on. - * - * To enable the current class to - * obtain a shared_ptr from - * itself, we derive from the - * class - * std::enable_shared_from_this. + * this descriptor. If all Thread + * objects go out of scope the + * ThreadDescriptor will detach from + * the thread before being destructed. */ template - struct ThreadDescriptor : public std_cxx1x::enable_shared_from_this > + struct ThreadDescriptor { - /** - * A pointer to the current - * object, kept nonzero as - * long as the thread is - * executing to avoid - * destroying the current - * object while we are still - * expecting to write - * something into the return - * value location. - */ - std_cxx1x::shared_ptr > self; - /** * An object that represents the * thread started. @@ -1333,8 +1297,14 @@ namespace Threads * An object that will hold the value * returned by the function called on * the thread. + * + * The return value is stored + * in a shared_ptr because we might + * abandon the the ThreadDescriptor. + * This makes sure the object stays + * alive until the thread exits. */ - return_value ret_val; + std_cxx1x::shared_ptr > ret_val; /** * A bool variable that is initially @@ -1405,41 +1375,24 @@ namespace Threads thread_is_active (false) {} + ~ThreadDescriptor () + { + if (!thread_is_active) + return; + thread.detach(); + thread_is_active = false; + } /** * Start the thread and let * it put its return value * into the ret_val object. - * - * Note that we cannot - * already do this in the - * constructor of this class: - * we will call - * enable_shared_from_this::shared_from_this - * which requires that there - * is already a shared_ptr - * that owns this object; - * however, at the time of - * creation, there can of - * course be no shared_ptr - * that owns the object -- it - * is, after all, just being - * created and can not - * already have been handed - * off to a shared_ptr; as a - * consequence, we first - * create the object, give it - * to a shared_ptr, and then - * call shared_from_this. */ void start (const std_cxx1x::function &function) { - // set the self pointer - // and then start the - // thread - self = this->shared_from_this (); thread_is_active = true; - thread = std_cxx1x::thread (thread_entry_point, function, this); + ret_val.reset(new return_value()); + thread = std_cxx1x::thread (thread_entry_point, function, ret_val); } @@ -1472,7 +1425,7 @@ namespace Threads */ static void thread_entry_point (const std_cxx1x::function function, - ThreadDescriptor *descriptor) + std_cxx1x::shared_ptr > ret_val) { // call the function // in question. since an @@ -1489,7 +1442,7 @@ namespace Threads internal::register_thread (); try { - call (function, descriptor->ret_val); + call (function, *ret_val); } catch (const std::exception &exc) { @@ -1500,24 +1453,6 @@ namespace Threads internal::handle_unknown_exception (); } internal::deregister_thread (); - - // once we are done, - // we can release our - // hold on the thread - // descriptor - // object. if all - // Threads::Thread - // objects that - // pointed here - // should have gone - // out of scope - // already, then this - // will trigger - // destruction of the - // descriptor object - Assert (descriptor->self.use_count () > 0, - ExcInternalError()); - descriptor->self.reset (); } }; @@ -1542,7 +1477,7 @@ namespace Threads * returned by the function called on * the thread. */ - return_value ret_val; + std_cxx1x::shared_ptr > ret_val; /** * Start the thread and @@ -1551,7 +1486,8 @@ namespace Threads */ void start (const std_cxx1x::function &function) { - call (function, ret_val); + ret_val.reset(new return_value()); + call (function, *ret_val); } /** @@ -1615,15 +1551,7 @@ namespace Threads thread_descriptor (new internal::ThreadDescriptor()) { // in a second step, start - // the thread. this needs - // to be done in two steps - // because inside the start - // function we call - // enable_shared_from_this::shared_from_this - // which requires that - // there is already a - // shared_ptr that owns the - // object + // the thread. thread_descriptor->start (function); } @@ -1671,7 +1599,7 @@ namespace Threads RT return_value () { join (); - return thread_descriptor->ret_val.get(); + return thread_descriptor->ret_val->get(); } /** @@ -1712,29 +1640,6 @@ namespace Threads * sure that that object lives * as long as there is at least * one subscriber to it. - * - * Note that since the - * descriptor holds the - * location where the return - * value is stored, even if all - * Threads::Thread objects that - * point to the descriptor go - * out of scope, we must make - * sure that the descriptor is - * not yet destroyed. Rather, - * the descriptor must be - * destroyed when the last - * Threads::Thread object that - * points to it goes out of - * scope or whenever the thread - * is finished, whatever - * happens later. We do this by - * having the descriptor keep a - * pointer to itself and reset - * it to zero once it is done - * -- effectively keeping the use - * pointer above zero as long - * as work is going on. */ std_cxx1x::shared_ptr > thread_descriptor; }; diff --git a/deal.II/include/deal.II/base/work_stream.h b/deal.II/include/deal.II/base/work_stream.h index a029e9b0c5..330afcf1ce 100644 --- a/deal.II/include/deal.II/base/work_stream.h +++ b/deal.II/include/deal.II/base/work_stream.h @@ -146,87 +146,240 @@ namespace WorkStream // and that is available also as a fall-back whenever via boost or similar /** - * A class that creates a sequence of items from a range of iterators. + * A namespace for the implementation of details of the WorkStream pattern + * and function. This namespace holds classes that deal with the second + * implementation described in the paper by Turcksin, Kronbichler and + * Bangerth. + * + * Even though this implementation is slower than the third implementation + * discussed in that paper, we need to keep it around for two reasons: + * (i) a user may not give us a graph coloring, (ii) we want to use + * this implementation for colors that are just too small. */ - template - class IteratorRangeToItemStream : public tbb::filter + namespace Implementation2 { - public: /** - * A data type that we use to identify items to be worked on. This is - * the structure that is passed around between the different parts of - * the WorkStream implementation to identify what needs to be done by - * the various stages of the pipeline. + * A class that creates a sequence of items from a range of iterators. */ - struct ItemType + template + class IteratorRangeToItemStream : public tbb::filter { + public: /** - * A structure that contains a pointer to a scratch data object along - * with a flag that indicates whether this object is currently in use. + * A data type that we use to identify items to be worked on. This is + * the structure that is passed around between the different parts of + * the WorkStream implementation to identify what needs to be done by + * the various stages of the pipeline. */ - struct ScratchDataObject + struct ItemType { - std_cxx1x::shared_ptr scratch_data; - bool currently_in_use; - /** - * Default constructor. + * A structure that contains a pointer to a scratch data object along + * with a flag that indicates whether this object is currently in use. */ - ScratchDataObject () - : - currently_in_use (false) - {} - - ScratchDataObject (ScratchData *p, - const bool in_use) - : - scratch_data (p), - currently_in_use (in_use) - {} - -//TODO: when we push back an object to the list of scratch objects, in -// Worker::operator(), we first create an object and then copy -// it to the end of this list. this involves having two objects + struct ScratchDataObject + { + std_cxx1x::shared_ptr scratch_data; + bool currently_in_use; + + /** + * Default constructor. + */ + ScratchDataObject () + : + currently_in_use (false) + {} + + ScratchDataObject (ScratchData *p, + const bool in_use) + : + scratch_data (p), + currently_in_use (in_use) + {} + +//TODO: when we push back an object to the list of scratch objects, in +// Worker::operator(), we first create an object and then copy +// it to the end of this list. this involves having two objects // of the current type having pointers to it, each with their own // currently_in_use flag. there is probably little harm in this because // the original one goes out of scope right away again, but it's // certainly awkward. one way to avoid this would be to use unique_ptr // but we'd need to figure out a way to use it in non-C++11 mode - ScratchDataObject (const ScratchDataObject &o) + ScratchDataObject (const ScratchDataObject &o) + : + scratch_data (o.scratch_data), + currently_in_use (o.currently_in_use) + {} + }; + + + /** + * Typedef to a list of scratch data objects. The rationale for this + * list is provided in the variables that use these lists. + */ + typedef std::list ScratchDataList; + + /** + * A list of iterators that need to be worked on. Only the first + * n_items are relevant. + */ + std::vector work_items; + + /** + * The CopyData objects that the Worker part of the pipeline + * fills for each work item. Again, only the first n_items + * elements are what we care about. + */ + std::vector copy_datas; + + /** + * Number of items identified by the work_items array that the + * Worker and Copier pipeline stage need to work on. The maximum + * value of this variable will be chunk_size. + */ + unsigned int n_items; + + /** + * Pointer to a thread local variable identifying the scratch data objects + * this thread will use. The initial implementation of this + * class using thread local variables provided only a single + * scratch object per thread. This doesn't work, because + * the worker functions may start tasks itself and then call + * Threads::TaskGroup::join_all() or a similar function, which the + * TBB scheduler may use to run something else on the current + * thread -- for example another instance of the worker function. + * Consequently, there would be two instances of the worker + * function that use the same scratch object if we only + * provided a single scratch object per thread. The solution is + * to provide a list of scratch objects for each thread, together + * with a flag indicating whether this scratch object is currently + * used. If a thread needs a scratch object, it walks this list + * until it finds an unused object, or, if there is none, creates one + * itself. Note that we need not use synchronization primitives + * for this process since the lists are thread-local and + * we are guaranteed that only a single thread accesses them as long + * as we have no yield point in between the accesses to the list. + * + * The pointers to scratch objects stored in each of these lists must + * be so that they are deleted on all threads when the thread + * local object is destroyed. This is achieved by using shared_ptr. + * + * Note that when a worker needs to create a scratch object, it allocates + * it using sample_scratch_data to copy from. This has + * the advantage of a first-touch initialization, i.e., the + * memory for the scratch data object is allocated and initialized + * by the same thread that will later use it. + */ + Threads::ThreadLocalStorage *scratch_data; + + /** + * Pointer to a sample scratch data object, to be used to initialize + * the scratch data objects created for each individual thread. + */ + const ScratchData *sample_scratch_data; + + + /** + * Default constructor. + * Initialize everything that doesn't have a default constructor + * itself. + */ + ItemType () : - scratch_data (o.scratch_data), - currently_in_use (o.currently_in_use) + n_items (0), + scratch_data (0), + sample_scratch_data (0) {} }; /** - * Typedef to a list of scratch data objects. The rationale for this - * list is provided in the variables that use these lists. + * Constructor. Take an iterator range, the size of a buffer that can + * hold items, and the sample additional data object that will be passed + * to each worker and copier function invokation. */ - typedef std::list ScratchDataList; + IteratorRangeToItemStream (const Iterator &begin, + const Iterator &end, + const unsigned int buffer_size, + const unsigned int chunk_size, + const ScratchData &sample_scratch_data, + const CopyData &sample_copy_data) + : + tbb::filter (/*is_serial=*/true), + remaining_iterator_range (begin, end), + ring_buffer (buffer_size), + sample_scratch_data (sample_scratch_data), + n_emitted_items (0), + chunk_size (chunk_size) + { + // initialize the elements of the ring buffer + for (unsigned int element=0; element work_items; + virtual void *operator () (void *) + { + // store the current + // position of the pointer + ItemType *current_item + = &ring_buffer[n_emitted_items % ring_buffer.size()]; + + // initialize the next item. it may + // consist of at most chunk_size + // elements + current_item->n_items = 0; + while ((remaining_iterator_range.first != + remaining_iterator_range.second) + && + (current_item->n_items < chunk_size)) + { + current_item->work_items[current_item->n_items] + = remaining_iterator_range.first; + + ++remaining_iterator_range.first; + ++current_item->n_items; + } + + if (current_item->n_items == 0) + // there were no items + // left. terminate the pipeline + return 0; + else + { + ++n_emitted_items; + return current_item; + } + } + private: /** - * The CopyData objects that the Worker part of the pipeline - * fills for each work item. Again, only the first n_items - * elements are what we care about. + * The interval of iterators still to + * be worked on. This range will shrink + * over time. */ - std::vector copy_datas; + std::pair remaining_iterator_range; /** - * Number of items identified by the work_items array that the - * Worker and Copier pipeline stage need to work on. The maximum - * value of this variable will be chunk_size. + * A ring buffer that will store items. */ - unsigned int n_items; + std::vector ring_buffer; /** * Pointer to a thread local variable identifying the scratch data objects @@ -259,492 +412,741 @@ namespace WorkStream * memory for the scratch data object is allocated and initialized * by the same thread that will later use it. */ - Threads::ThreadLocalStorage *scratch_data; + Threads::ThreadLocalStorage thread_local_scratch; /** - * Pointer to a sample scratch data object, to be used to initialize - * the scratch data objects created for each individual thread. + * A reference to a sample scratch data that will be used to + * initialize the thread-local pointers to a scratch data object + * each of the worker tasks uses. */ - const ScratchData *sample_scratch_data; + const ScratchData &sample_scratch_data; + /** + * Counter for the number of emitted + * items. Each item may consist of up + * to chunk_size iterator elements. + */ + unsigned int n_emitted_items; /** - * Default constructor. - * Initialize everything that doesn't have a default constructor - * itself. + * Number of elements of the + * iterator range that each + * thread should work on + * sequentially; a large number + * makes sure that each thread + * gets a significant amount of + * work before the next task + * switch happens, whereas a + * small number is better for + * load balancing. */ - ItemType () - : - n_items (0), - scratch_data (0), - sample_scratch_data (0) - {} + const unsigned int chunk_size; + + /** + * Initialize the pointers and vector + * elements in the specified entry of + * the ring buffer. + */ + void init_buffer_elements (const unsigned int element, + const CopyData &sample_copy_data) + { + Assert (ring_buffer[element].n_items == 0, + ExcInternalError()); + + ring_buffer[element].work_items + .resize (chunk_size, remaining_iterator_range.second); + ring_buffer[element].scratch_data + = &thread_local_scratch; + ring_buffer[element].sample_scratch_data + = &sample_scratch_data; + ring_buffer[element].copy_datas + .resize (chunk_size, sample_copy_data); + } }; + /** - * Constructor. Take an iterator range, the size of a buffer that can - * hold items, and the sample additional data object that will be passed - * to each worker and copier function invokation. + * A class that manages calling the + * worker function on a number of + * parallel threads. Note that it is, in + * the TBB notation, a filter that can + * run in parallel. */ - IteratorRangeToItemStream (const Iterator &begin, - const Iterator &end, - const unsigned int buffer_size, - const unsigned int chunk_size, - const ScratchData &sample_scratch_data, - const CopyData &sample_copy_data) - : - tbb::filter (/*is_serial=*/true), - remaining_iterator_range (new std::pair (begin, end)), - ring_buffer (buffer_size), - sample_scratch_data (sample_scratch_data), - color(false), - n_emitted_items (0), - chunk_size (chunk_size) + template + class Worker : public tbb::filter { - // initialize the elements of the ring buffer - for (unsigned int element=0; element &worker) + : + tbb::filter (/* is_serial= */ false), + worker (worker) + {} + + + /** + * Work on an item. + */ + void *operator () (void *item) { - Assert (ring_buffer[element].n_items == 0, - ExcInternalError()); - - ring_buffer[element].work_items.resize (chunk_size, - remaining_iterator_range->second); - ring_buffer[element].scratch_data = &thread_local_scratch; - ring_buffer[element].sample_scratch_data = &sample_scratch_data; - ring_buffer[element].copy_datas.resize (chunk_size, - sample_copy_data); + // first unpack the current item + typedef + typename IteratorRangeToItemStream::ItemType + ItemType; + + ItemType *current_item = static_cast (item); + + // we need to find an unused scratch data object in the list that + // corresponds to the current thread and then mark it as used. if + // we can't find one, create one + // + // as discussed in the discussion of the documentation of the + // IteratorRangeToItemStream::scratch_data variable, there is no + // need to synchronize access to this variable using a mutex + // as long as we have no yield-point in between. this means that + // we can't take an iterator into the list now and expect it to + // still be valid after calling the worker, but we at least do + // not have to lock the following section + ScratchData *scratch_data = 0; + { + typename ItemType::ScratchDataList & + scratch_data_list = current_item->scratch_data->get(); + + // see if there is an unused object. if so, grab it and mark + // it as used + for (typename ItemType::ScratchDataList::iterator + p = scratch_data_list.begin(); + p != scratch_data_list.end(); ++p) + if (p->currently_in_use == false) + { + scratch_data = p->scratch_data.get(); + p->currently_in_use = true; + break; + } + + // if no object was found, create one and mark it as used + if (scratch_data == 0) + { + scratch_data = new ScratchData(*current_item->sample_scratch_data); + + typename ItemType::ScratchDataList::value_type + new_scratch_object (scratch_data, true); + scratch_data_list.push_back (new_scratch_object); + } + } + + // then call the worker function on each element of the chunk we were + // given. since these worker functions are called on separate threads, + // nothing good can happen if they throw an exception and we are best + // off catching it and showing an error message + for (unsigned int i=0; in_items; ++i) + { + try + { + if (worker) + worker (current_item->work_items[i], + *scratch_data, + current_item->copy_datas[i]); + } + catch (const std::exception &exc) + { + Threads::internal::handle_std_exception (exc); + } + catch (...) + { + Threads::internal::handle_unknown_exception (); + } + } + + // finally mark the scratch object as unused again. as above, there + // is no need to lock anything here since the object we work on + // is thread-local + { + typename ItemType::ScratchDataList & + scratch_data_list = current_item->scratch_data->get(); + + for (typename ItemType::ScratchDataList::iterator p = + scratch_data_list.begin(); p != scratch_data_list.end(); + ++p) + if (p->scratch_data.get() == scratch_data) + { + Assert(p->currently_in_use == true, ExcInternalError()); + p->currently_in_use = false; + } + } + + + + // then return the original pointer + // to the now modified object + return item; } - } - IteratorRangeToItemStream (const typename std::vector::iterator &begin, - const typename std::vector::iterator &end, - const unsigned int buffer_size, - const unsigned int chunk_size, - const ScratchData &sample_scratch_data, - const CopyData &sample_copy_data) - : - tbb::filter (/*is_serial=*/true), - color_remaining_iterator_range (new std::pair::iterator, - typename std::vector::iterator> (begin,end)), - ring_buffer (buffer_size), - sample_scratch_data (sample_scratch_data), - color(true), - n_emitted_items (0), - chunk_size (chunk_size) + + private: + /** + * Pointer to the function + * that does the assembling + * on the sequence of cells. + */ + const std_cxx1x::function worker; + }; + + + + /** + * A class that manages calling the + * copier function. Note that it is, in + * the TBB notation, a filter that runs + * sequentially, ensuring that all items + * are copied in the same order in which + * they are created. + */ + template + class Copier : public tbb::filter { - for (unsigned int element=0; element &copier) + : + tbb::filter (/*is_serial=*/true), + copier (copier) + {} + + + /** + * Work on a single item. + */ + void *operator () (void *item) { - Assert (ring_buffer[element].n_items == 0, - ExcInternalError()); - - // work_items is templated on iterator. Therefore, the resize must - // be done given *(color_remaining_iterator_range->firts) because - // iterator may not have a default constructor and - // *(color_remaining_iterator_range->second) is invalid. - ring_buffer[element].work_items.resize (chunk_size, - *(color_remaining_iterator_range->first)); - ring_buffer[element].scratch_data = &thread_local_scratch; - ring_buffer[element].sample_scratch_data = &sample_scratch_data; - ring_buffer[element].copy_datas.resize (chunk_size, - sample_copy_data); + // first unpack the current item + typedef + typename IteratorRangeToItemStream::ItemType + ItemType; + + ItemType *current_item = static_cast (item); + + // initiate copying data. for the same reasons as in the worker class + // above, catch exceptions rather than letting it propagate into + // unknown territories + for (unsigned int i=0; in_items; ++i) + { + try + { + if (copier) + copier (current_item->copy_datas[i]); + } + catch (const std::exception &exc) + { + Threads::internal::handle_std_exception (exc); + } + catch (...) + { + Threads::internal::handle_unknown_exception (); + } + } + + + // return an invalid item since we are at the end of the + // pipeline + return 0; } - } + + private: + /** + * Pointer to the function that does the copying of data. + */ + const std_cxx1x::function copier; + }; + + } + + + /** + * A namespace for the implementation of details of the WorkStream pattern + * and function. This namespace holds classes that deal with the third + * implementation described in the paper by Turcksin, Kronbichler and + * Bangerth. + */ + namespace Implementation3 + { /** - * Create a item and return a - * pointer to it. + * A class that creates a sequence of items from a range of iterators. */ - virtual void *operator () (void *) + template + class IteratorRangeToItemStream : public tbb::filter { - // store the current - // position of the pointer - ItemType *current_item - = &ring_buffer[n_emitted_items % ring_buffer.size()]; - - // initialize the next item. it may - // consist of at most chunk_size - // elements - current_item->n_items = 0; - if (color==false) - while ((remaining_iterator_range->first != - remaining_iterator_range->second) - && - (current_item->n_items < chunk_size)) + public: + /** + * A data type that we use to identify items to be worked on. This is + * the structure that is passed around between the different parts of + * the WorkStream implementation to identify what needs to be done by + * the various stages of the pipeline. + */ + struct ItemType + { + /** + * A structure that contains a pointer to scratch and copy data objects along + * with a flag that indicates whether this object is currently in use. + */ + struct ScratchAndCopyDataObjects { - current_item->work_items[current_item->n_items] - = remaining_iterator_range->first; + std_cxx1x::shared_ptr scratch_data; + std_cxx1x::shared_ptr copy_data; + bool currently_in_use; + + /** + * Default constructor. + */ + ScratchAndCopyDataObjects () + : + currently_in_use (false) + {} + + ScratchAndCopyDataObjects (ScratchData *p, + CopyData *q, + const bool in_use) + : + scratch_data (p), + copy_data (q), + currently_in_use (in_use) + {} + +//TODO: when we push back an object to the list of scratch objects, in +// Worker::operator(), we first create an object and then copy +// it to the end of this list. this involves having two objects +// of the current type having pointers to it, each with their own +// currently_in_use flag. there is probably little harm in this because +// the original one goes out of scope right away again, but it's +// certainly awkward. one way to avoid this would be to use unique_ptr +// but we'd need to figure out a way to use it in non-C++11 mode + ScratchAndCopyDataObjects (const ScratchAndCopyDataObjects &o) + : + scratch_data (o.scratch_data), + copy_data (o.copy_data), + currently_in_use (o.currently_in_use) + {} + }; - ++remaining_iterator_range->first; - ++current_item->n_items; - } - else - while ((color_remaining_iterator_range->first != - color_remaining_iterator_range->second) - && - (current_item->n_items < chunk_size)) - { - current_item->work_items[current_item->n_items] - = *(color_remaining_iterator_range->first); - ++color_remaining_iterator_range->first; - ++current_item->n_items; - } + /** + * Typedef to a list of scratch data objects. The rationale for this + * list is provided in the variables that use these lists. + */ + typedef std::list ScratchAndCopyDataList; - if (current_item->n_items == 0) - // there were no items - // left. terminate the pipeline - return 0; - else + /** + * A list of iterators that need to be worked on. Only the first + * n_items are relevant. + */ + std::vector work_items; + + /** + * Number of items identified by the work_items array that the + * Worker and Copier pipeline stage need to work on. The maximum + * value of this variable will be chunk_size. + */ + unsigned int n_items; + + /** + * Pointer to a thread local variable identifying the scratch + * and copy data objects this thread will use. The same considerations + * apply as documented in the Implementation2::IteratorRangeToItemStream + * class as well as in the paper by Turcksin, Kronbichler and Bangerth. + */ + Threads::ThreadLocalStorage *scratch_and_copy_data; + + /** + * Pointer to a sample scratch data object, to be used to initialize + * the scratch data objects created for each individual thread. + */ + const ScratchData *sample_scratch_data; + + /** + * Pointer to a sample copy data object. + */ + const CopyData *sample_copy_data; + + /** + * Flag is true if the buffer is used and false if the buffer can be + * used. + */ + bool currently_in_use; + + /** + * Default constructor. + * Initialize everything that doesn't have a default constructor + * itself. + */ + ItemType () + : + n_items (0), + sample_scratch_data (0), + sample_copy_data (0), + currently_in_use (false) + {} + }; + + + /** + * Constructor. Take range of iterators into an array of the kind of object we + * want to loop over, the size of a buffer that can + * hold items, and the sample additional data object that will be passed + * to each worker and copier function invokation. + */ + IteratorRangeToItemStream (const typename std::vector::const_iterator &begin, + const typename std::vector::const_iterator &end, + const unsigned int buffer_size, + const unsigned int chunk_size, + const ScratchData &sample_scratch_data, + const CopyData &sample_copy_data) + : + tbb::filter (/*is_serial=*/true), + remaining_iterator_range (begin, end), + item_buffer (buffer_size), + sample_scratch_data (sample_scratch_data), + sample_copy_data (sample_copy_data), + chunk_size (chunk_size) { - ++n_emitted_items; - return current_item; + Assert (begin != end, ExcMessage ("This class is not prepared to deal with empty ranges!")); + // initialize the elements of the item_buffer + for (unsigned int element=0; element > remaining_iterator_range; - /** - * When graph coloring is used the iterators to be worked on are given - * in a vector defined by a pair of iterators. - */ - std_cxx1x::shared_ptr::iterator, - typename std::vector::iterator> > - color_remaining_iterator_range; + /** + * Create an item and return a + * pointer to it. + */ + virtual void *operator () (void *) + { + // find first unused item. we know that there must be one + // because we have set the maximal number of tokens in flight + // and have set the ring buffer to have exactly this size. so + // if this function is called, we know that less than the + // maximal number of items in currently in flight + ItemType *current_item = 0; + for (unsigned int i=0; in_items = 0; + while ((remaining_iterator_range.first != + remaining_iterator_range.second) + && + (current_item->n_items < chunk_size)) + { + // initialize the iterators to work on with the elements + // of the vector that remaining_iterator_range + // points into + current_item->work_items[current_item->n_items] + = *remaining_iterator_range.first; + + ++remaining_iterator_range.first; + ++current_item->n_items; + } + + if (current_item->n_items == 0) + // there were no items + // left. terminate the pipeline + return 0; + else + return current_item; + } - /** - * A ring buffer that will store items. - */ - std::vector ring_buffer; + private: + /** + * The interval of iterators still to + * be worked on. This range will shrink + * over time. + */ + std::pair::const_iterator,typename std::vector::const_iterator> remaining_iterator_range; - /** - * Pointer to a thread local variable identifying the scratch data objects - * this thread will use. The initial implementation of this - * class using thread local variables provided only a single - * scratch object per thread. This doesn't work, because - * the worker functions may start tasks itself and then call - * Threads::TaskGroup::join_all() or a similar function, which the - * TBB scheduler may use to run something else on the current - * thread -- for example another instance of the worker function. - * Consequently, there would be two instances of the worker - * function that use the same scratch object if we only - * provided a single scratch object per thread. The solution is - * to provide a list of scratch objects for each thread, together - * with a flag indicating whether this scratch object is currently - * used. If a thread needs a scratch object, it walks this list - * until it finds an unused object, or, if there is none, creates one - * itself. Note that we need not use synchronization primitives - * for this process since the lists are thread-local and - * we are guaranteed that only a single thread accesses them as long - * as we have no yield point in between the accesses to the list. - * - * The pointers to scratch objects stored in each of these lists must - * be so that they are deleted on all threads when the thread - * local object is destroyed. This is achieved by using shared_ptr. - * - * Note that when a worker needs to create a scratch object, it allocates - * it using sample_scratch_data to copy from. This has - * the advantage of a first-touch initialization, i.e., the - * memory for the scratch data object is allocated and initialized - * by the same thread that will later use it. - */ - Threads::ThreadLocalStorage thread_local_scratch; + /** + * A ring buffer that will store items. + */ + std::vector item_buffer; - /** - * A reference to a sample scratch data that will be used to - * initialize the thread-local pointers to a scratch data object - * each of the worker tasks uses. - */ - const ScratchData &sample_scratch_data; + /** + * Pointer to a thread local variable identifying the scratch and + * copy data objects each thread will use. The same is true as + * discussed for the implementation in the + * Implementation2::IteratorRangeToItemStream class and the paper + * by Turcksin, Kronbichler and Bangerth. + */ + Threads::ThreadLocalStorage thread_local_scratch_and_copy; - /** - * This flag is used to know if graph coloring is used or not. - */ - bool color; + /** + * A reference to a sample scratch data that will be used to + * initialize the thread-local pointers to a scratch data object + * each of the worker tasks uses. + */ + const ScratchData &sample_scratch_data; + + /** + * A reference to a sample scratch data that will be used to + * initialize the thread-local pointers to a scratch data object + * each of the worker tasks uses. + */ + const CopyData &sample_copy_data; + + /** + * Number of elements of the + * iterator range that each + * thread should work on + * sequentially; a large number + * makes sure that each thread + * gets a significant amount of + * work before the next task + * switch happens, whereas a + * small number is better for + * load balancing. + */ + const unsigned int chunk_size; + + /** + * Initialize the pointers and vector + * elements in the specified entry of + * the item_buffer. + */ + void init_buffer_elements (const unsigned int element) + { + Assert (item_buffer[element].n_items == 0, + ExcInternalError()); + + item_buffer[element].work_items + .resize (chunk_size, remaining_iterator_range.second); + item_buffer[element].scratch_and_copy_data + = &thread_local_scratch_and_copy; + item_buffer[element].sample_scratch_data + = &sample_scratch_data; + item_buffer[element].sample_copy_data + = &sample_copy_data; + } + }; - /** - * Counter for the number of emitted - * items. Each item may consist of up - * to chunk_size iterator elements. - */ - unsigned int n_emitted_items; - /** - * Number of elements of the - * iterator range that each - * thread should work on - * sequentially; a large number - * makes sure that each thread - * gets a significant amount of - * work before the next task - * switch happens, whereas a - * small number is better for - * load balancing. - */ - const unsigned int chunk_size; /** - * Initialize the pointers and vector - * elements in the specified entry of - * the ring buffer. + * A class that manages calling the + * worker function on a number of + * parallel threads. Note that it is, in + * the TBB notation, a filter that can + * run in parallel. */ - void init_buffer_elements (const unsigned int element, - const CopyData &sample_copy_data) + template + class WorkerAndCopier : public tbb::filter { - Assert (ring_buffer[element].n_items == 0, - ExcInternalError()); - - ring_buffer[element].work_items - .resize (chunk_size, remaining_iterator_range->second); - ring_buffer[element].scratch_data - = &thread_local_scratch; - ring_buffer[element].sample_scratch_data - = &sample_scratch_data; - ring_buffer[element].copy_datas - .resize (chunk_size, sample_copy_data); - } - }; + public: + /** + * Constructor. Takes a + * reference to the object on + * which we will operate as + * well as a pointer to the + * function that will do the + * assembly. + */ + WorkerAndCopier (const std_cxx1x::function &worker, + const std_cxx1x::function &copier) + : + tbb::filter (/* is_serial= */ false), + worker (worker), + copier (copier) + {} + + /** + * Work on an item. + */ + void *operator () (void *item) + { + // first unpack the current item + typedef + typename IteratorRangeToItemStream::ItemType + ItemType; + + ItemType *current_item = static_cast (item); + + // we need to find an unused scratch and corresponding copy + // data object in the list that + // corresponds to the current thread and then mark it as used. if + // we can't find one, create one + // + // as discussed in the discussion of the documentation of the + // IteratorRangeToItemStream::scratch_data variable, there is no + // need to synchronize access to this variable using a mutex + // as long as we have no yield-point in between. this means that + // we can't take an iterator into the list now and expect it to + // still be valid after calling the worker, but we at least do + // not have to lock the following section + ScratchData *scratch_data = 0; + CopyData *copy_data = 0; + { + typename ItemType::ScratchAndCopyDataList & + scratch_and_copy_data_list = current_item->scratch_and_copy_data->get(); + + // see if there is an unused object. if so, grab it and mark + // it as used + for (typename ItemType::ScratchAndCopyDataList::iterator + p = scratch_and_copy_data_list.begin(); + p != scratch_and_copy_data_list.end(); ++p) + if (p->currently_in_use == false) + { + scratch_data = p->scratch_data.get(); + copy_data = p->copy_data.get(); + p->currently_in_use = true; + break; + } + + // if no element in the list was found, create one and mark it as used + if (scratch_data == 0) + { + Assert (copy_data==0, ExcInternalError()); + scratch_data = new ScratchData(*current_item->sample_scratch_data); + copy_data = new CopyData(*current_item->sample_copy_data); + + typename ItemType::ScratchAndCopyDataList::value_type + new_scratch_object (scratch_data, copy_data, true); + scratch_and_copy_data_list.push_back (new_scratch_object); + } + } + // then call the worker and copier function on each element of the chunk we were + // given. since these functions are called on separate threads, + // nothing good can happen if they throw an exception and we are best + // off catching it and showing an error message + for (unsigned int i=0; in_items; ++i) + { + try + { + if (worker) + worker (current_item->work_items[i], + *scratch_data, + *copy_data); + if (copier) + copier (*copy_data); + } + catch (const std::exception &exc) + { + Threads::internal::handle_std_exception (exc); + } + catch (...) + { + Threads::internal::handle_unknown_exception (); + } + } + + // finally mark the scratch object as unused again. as above, there + // is no need to lock anything here since the object we work on + // is thread-local + { + typename ItemType::ScratchAndCopyDataList & + scratch_and_copy_data_list = current_item->scratch_and_copy_data->get(); + + for (typename ItemType::ScratchAndCopyDataList::iterator p = + scratch_and_copy_data_list.begin(); p != scratch_and_copy_data_list.end(); + ++p) + if (p->scratch_data.get() == scratch_data) + { + Assert(p->currently_in_use == true, ExcInternalError()); + p->currently_in_use = false; + } + } - /** - * A class that manages calling the - * worker function on a number of - * parallel threads. Note that it is, in - * the TBB notation, a filter that can - * run in parallel. - */ - template - class Worker : public tbb::filter - { - public: - /** - * Constructor. Takes a - * reference to the object on - * which we will operate as - * well as a pointer to the - * function that will do the - * assembly. - */ - Worker (const std_cxx1x::function &worker) - : - tbb::filter (/* is_serial= */ false), - worker (worker) - {} - - - /** - * Work on an item. - */ - void *operator () (void *item) - { - // first unpack the current item - typedef - typename IteratorRangeToItemStream::ItemType - ItemType; - - ItemType *current_item = static_cast (item); - - // we need to find an unused scratch data object in the list that - // corresponds to the current thread and then mark it as used. if - // we can't find one, create one - // - // as discussed in the discussion of the documentation of the - // IteratorRangeToItemStream::scratch_data variable, there is no - // need to synchronize access to this variable using a mutex - // as long as we have no yield-point in between. this means that - // we can't take an iterator into the list now and expect it to - // still be valid after calling the worker, but we at least do - // not have to lock the following section - ScratchData *scratch_data = 0; - { - typename ItemType::ScratchDataList & - scratch_data_list = current_item->scratch_data->get(); - - // see if there is an unused object. if so, grab it and mark - // it as used - for (typename ItemType::ScratchDataList::iterator - p = scratch_data_list.begin(); - p != scratch_data_list.end(); ++p) - if (p->currently_in_use == false) - { - scratch_data = p->scratch_data.get(); - p->currently_in_use = true; - break; - } - - // if no object was found, create one and mark it as used - if (scratch_data == 0) - { - scratch_data = new ScratchData(*current_item->sample_scratch_data); - - typename ItemType::ScratchDataList::value_type - new_scratch_object (scratch_data, true); - scratch_data_list.push_back (new_scratch_object); - } - } - - // then call the worker function on each element of the chunk we were - // given. since these worker functions are called on separate threads, - // nothing good can happen if they throw an exception and we are best - // off catching it and showing an error message - for (unsigned int i=0; in_items; ++i) - { - try - { - if (worker) - worker (current_item->work_items[i], - *scratch_data, - current_item->copy_datas[i]); - } - catch (const std::exception &exc) - { - Threads::internal::handle_std_exception (exc); - } - catch (...) - { - Threads::internal::handle_unknown_exception (); - } - } - - // finally mark the scratch object as unused again. as above, there - // is no need to lock anything here since the object we work on - // is thread-local - { - typename ItemType::ScratchDataList & - scratch_data_list = current_item->scratch_data->get(); - - for (typename ItemType::ScratchDataList::iterator p = - scratch_data_list.begin(); p != scratch_data_list.end(); - ++p) - if (p->scratch_data.get() == scratch_data) - { - Assert(p->currently_in_use == true, ExcInternalError()); - p->currently_in_use = false; - } - } - - - - // then return the original pointer - // to the now modified object - return item; - } - - - private: - /** - * Pointer to the function - * that does the assembling - * on the sequence of cells. - */ - const std_cxx1x::function worker; - }; + // mark current item as usable again + current_item->currently_in_use = false; + // return an invalid item since we are at the end of the + // pipeline + return 0; + } - /** - * A class that manages calling the - * copier function. Note that it is, in - * the TBB notation, a filter that runs - * sequentially, ensuring that all items - * are copied in the same order in which - * they are created. - */ - template - class Copier : public tbb::filter - { - public: - /** - * Constructor. Takes a - * reference to the object on - * which we will operate as - * well as a pointer to the - * function that will do the - * copying from the - * additional data object to - * the global matrix or - * similar. - */ - Copier (const std_cxx1x::function &copier,bool is_serial) - : - tbb::filter (is_serial), - copier (copier) - {} - - - /** - * Work on a single item. - */ - void *operator () (void *item) - { - // first unpack the current item - typedef - typename IteratorRangeToItemStream::ItemType - ItemType; - - ItemType *current_item = static_cast (item); - - // initiate copying data. for the same reasons as in the worker class - // above, catch exceptions rather than letting it propagate into - // unknown territories - for (unsigned int i=0; in_items; ++i) - { - try - { - if (copier) - copier (current_item->copy_datas[i]); - } - catch (const std::exception &exc) - { - Threads::internal::handle_std_exception (exc); - } - catch (...) - { - Threads::internal::handle_unknown_exception (); - } - } - - - // return an invalid item since we are at the end of the - // pipeline - return 0; - } - - - private: - /** - * Pointer to the function that does the copying of data. - */ - const std_cxx1x::function copier; - }; + private: + /** + * Pointer to the function + * that does the assembling + * on the sequence of cells. + */ + const std_cxx1x::function worker; + /** + * Pointer to the function that does the copying from + * local contribution to global object. + */ + const std_cxx1x::function copier; + }; + } } - #endif // DEAL_II_WITH_THREADS /** - * This is the main function of the WorkStream concept, doing work as - * described in the introduction to this namespace. + * This is one of two main functions of the WorkStream concept, doing work as + * described in the introduction to this namespace. It corresponds to + * implementation 2 of the paper by Turcksin, Kronbichler and Bangerth. * - * This is the function that can be used for worker and copier objects that + * This function that can be used for worker and copier objects that * are either pointers to non-member functions or objects that allow to be * called with an operator(), for example objects created by std::bind. * @@ -776,8 +1178,8 @@ namespace WorkStream typename Iterator, typename ScratchData, typename CopyData> - void - run (const Iterator &begin, + void + run (const Iterator &begin, const typename identity::type &end, Worker worker, Copier copier, @@ -813,29 +1215,29 @@ namespace WorkStream { // need to check if the function is not the zero function. To // check zero-ness, create a C++ function out of it and check that - if (static_cast& >(worker)) - worker (i, scratch_data, copy_data); - if (static_cast& > - (copier)) - copier (copy_data); + if (static_cast& >(worker)) + worker (i, scratch_data, copy_data); + if (static_cast& > + (copier)) + copier (copy_data); } } #ifdef DEAL_II_WITH_THREADS else // have TBB and use more than one thread { // create the three stages of the pipeline - internal::IteratorRangeToItemStream + internal::Implementation2::IteratorRangeToItemStream iterator_range_to_item_stream (begin, end, - queue_length, - chunk_size, - sample_scratch_data, - sample_copy_data); + queue_length, + chunk_size, + sample_scratch_data, + sample_copy_data); - internal::Worker worker_filter (worker); - internal::Copier copier_filter (copier,true); + internal::Implementation2::Worker worker_filter (worker); + internal::Implementation2::Copier copier_filter (copier); // now create a pipeline from these stages tbb::pipeline assembly_line; @@ -852,34 +1254,28 @@ namespace WorkStream } - /** - * This is the main function of the WorkStream concept, doing work as - * described in the introduction to this namespace. + * This is one of two main functions of the WorkStream concept, doing work as + * described in the introduction to this namespace. It corresponds to + * implementation 3 of the paper by Turcksin, Kronbichler and Bangerth. + * As such, it takes not a range of iterators described by a begin + * and end iterator, but a "colored" graph of iterators where each + * color represents cells for which writing the cell contributions into + * the global object does not conflict (in other words, these cells + * are not neighbors). Each "color" is represented by std::vectors of cells. + * The first argument to this function, a set of sets of cells (which are + * represent as a vector of vectors, for efficiency), is typically + * constructed by calling GraphColoring::make_graph_coloring(). * - * This is the function that can be used for worker and copier objects that + * This function that can be used for worker and copier objects that * are either pointers to non-member functions or objects that allow to be * called with an operator(), for example objects created by std::bind. * - * The argument passed as @p end must be convertible to the same type as @p - * begin, but doesn't have to be of the same type itself. This allows to - * write code like WorkStream().run(dof_handler.begin_active(), - * dof_handler.end(), ... where the first is of type - * DoFHandler::active_cell_iterator whereas the second is of type - * DoFHandler::raw_cell_iterator. - * * The two data types ScratchData and CopyData need to * have a working copy constructor. ScratchData is only used in the * worker function, while CopyData is the object passed * from the worker to the copier. * - * The @p get_conflict_indices argument, is a function that given an - * iterator computes the conflict indices necessary for the - * graph_coloring. Graph coloring is necessary to be able to copy the data - * in parallel. If the number of elements in some colors is less than @p - * chunk_size time multithread_info.n_threads(), these elements are - * aggregated and copied serially. - * * The @p queue_length argument indicates the number of items that can be * live at any given time. Each item consists of @p chunk_size elements of * the input stream that will be worked on by the worker and copier @@ -896,15 +1292,12 @@ namespace WorkStream typename Iterator, typename ScratchData, typename CopyData> - void - run (const Iterator &begin, - const typename identity::type &end, + void + run (const std::vector > &colored_iterators, Worker worker, Copier copier, const ScratchData &sample_scratch_data, const CopyData &sample_copy_data, - const std_cxx1x::function (const Iterator &)> - &get_conflict_indices, const unsigned int queue_length = 2*multithread_info.n_threads(), const unsigned int chunk_size = 8) { @@ -916,171 +1309,73 @@ namespace WorkStream ExcMessage ("The chunk_size must be at least one.")); (void)chunk_size; // removes -Wunused-parameter warning in optimized mode - // if no work then skip. (only use - // operator!= for iterators since we may - // not have an equality comparison - // operator) - if (!(begin != end)) - return; - // we want to use TBB if we have support and if it is not disabled at // runtime: - #ifdef DEAL_II_WITH_THREADS - if (multithread_info.n_threads()==1) - #endif - { - // need to copy the sample since it is - // marked const - ScratchData scratch_data = sample_scratch_data; - CopyData copy_data = sample_copy_data; - - for (Iterator i=begin; i!=end; ++i) - { - if (static_cast& >(worker)) - worker (i, scratch_data, copy_data); - if (static_cast& > - (copier)) - copier (copy_data); - } - } #ifdef DEAL_II_WITH_THREADS - else - { - // color the graph - std::vector > coloring = graph_coloring::make_graph_coloring( - begin,end,get_conflict_indices); - - // colors that do not have cells, i.e., less than chunk_size times - // multithread_info.n_threads(), are gathered and the copier is - // called serially. - const unsigned int serial_limit(chunk_size*multithread_info.n_threads()); - std::vector serial_copying; - - for (unsigned int color=0; color - iterator_range_to_item_stream (coloring[color].begin(), coloring[color].end(), - queue_length, - chunk_size, - sample_scratch_data, - sample_copy_data); - - internal::Worker worker_filter (worker); - internal::Copier copier_filter (copier,false); - - // now create a pipeline from - // these stages - tbb::pipeline assembly_line; - assembly_line.add_filter (iterator_range_to_item_stream); - assembly_line.add_filter (worker_filter); - assembly_line.add_filter (copier_filter); - - // and run it - assembly_line.run (queue_length); - - assembly_line.clear (); - } - } - - // use the serial copier for all the colors that do not have enough cells - if (serial_copying.size()!=0) - { - internal::IteratorRangeToItemStream - iterator_range_to_item_stream (serial_copying.begin(), serial_copying.end(), - queue_length, - chunk_size, - sample_scratch_data, - sample_copy_data); - - internal::Worker worker_filter (worker); - internal::Copier copier_filter (copier,true); - - tbb::pipeline assembly_line; - assembly_line.add_filter (iterator_range_to_item_stream); - assembly_line.add_filter (worker_filter); - assembly_line.add_filter (copier_filter); - - // and run it - assembly_line.run (queue_length); - - assembly_line.clear (); - } - } + if (multithread_info.n_threads()==1) #endif - } - - + { + // need to copy the sample since it is marked const + ScratchData scratch_data = sample_scratch_data; + CopyData copy_data = sample_copy_data; - /** - * This is the main function of the WorkStream concept, doing work as - * described in the introduction to this namespace. - * - * This is the function that can be used for worker and copier functions - * that are member functions of a class. - * - * The argument passed as @p end must be convertible to the same type as @p - * begin, but doesn't have to be of the same type itself. This allows to - * write code like WorkStream().run(dof_handler.begin_active(), - * dof_handler.end(), ... where the first is of type - * DoFHandler::active_cell_iterator whereas the second is of type - * DoFHandler::raw_cell_iterator. - * - * The @p queue_length argument indicates the number of items that can be - * live at any given time. Each item consists of @p chunk_size elements of - * the input stream that will be worked on by the worker and copier - * functions one after the other on the same thread. - * - * @note If your data objects are large, or their constructors are - * expensive, it is helpful to keep in mind that queue_length - * copies of the ScratchData object and - * queue_length*chunk_size copies of the CopyData object - * are generated. - */ - template - void - run (const Iterator &begin, - const typename identity::type &end, - MainClass &main_object, - void (MainClass::*worker) (const Iterator &, - ScratchData &, - CopyData &), - void (MainClass::*copier) (const CopyData &), - const ScratchData &sample_scratch_data, - const CopyData &sample_copy_data, - const unsigned int queue_length = 2*multithread_info.n_threads(), - const unsigned int chunk_size = 8) - { - // forward to the other function - run (begin, end, - std_cxx1x::bind (worker, - std_cxx1x::ref (main_object), - std_cxx1x::_1, std_cxx1x::_2, std_cxx1x::_3), - std_cxx1x::bind (copier, - std_cxx1x::ref (main_object), - std_cxx1x::_1), - sample_scratch_data, - sample_copy_data, - queue_length, - chunk_size); + for (unsigned int color=0; color::const_iterator p = colored_iterators[color].begin(); + p != colored_iterators[color].end(); ++p) + { + // need to check if the function is not the zero function. To + // check zero-ness, create a C++ function out of it and check that + if (static_cast& >(worker)) + worker (*p, scratch_data, copy_data); + if (static_cast& >(copier)) + copier (copy_data); + } + } +#ifdef DEAL_II_WITH_THREADS + else // have TBB and use more than one thread + { + // loop over the various colors of what we're given + for (unsigned int color=0; color 0) + { + // create the three stages of the pipeline + internal::Implementation3::IteratorRangeToItemStream + iterator_range_to_item_stream (colored_iterators[color].begin(), + colored_iterators[color].end(), + queue_length, + chunk_size, + sample_scratch_data, + sample_copy_data); + + + internal::Implementation3::WorkerAndCopier + worker_and_copier_filter (worker, copier); + + // now create a pipeline from these stages + tbb::pipeline assembly_line; + assembly_line.add_filter (iterator_range_to_item_stream); + assembly_line.add_filter (worker_and_copier_filter); + + // and run it + assembly_line.run (queue_length); + + assembly_line.clear (); + } + } +#endif } + /** - * This is the main function of the WorkStream concept, doing work as - * described in the introduction to this namespace. + * This is a variant of one of the two main functions of the WorkStream + * concept, doing work as described in the introduction to this namespace. + * It corresponds to implementation 2 of the paper by Turcksin, Kronbichler + * and Bangerth. * * This is the function that can be used for worker and copier functions * that are member functions of a class. @@ -1092,13 +1387,6 @@ namespace WorkStream * DoFHandler::active_cell_iterator whereas the second is of type * DoFHandler::raw_cell_iterator. * - * The @p get_conflict_indices argument, is a function that given an - * iterator computes the conflict indices necessary for the - * graph_coloring. Graph coloring is necessary to be able to copy the data - * in parallel. If the number of elements in some colors is less than @p - * chunk_size time multithread_info.n_threads(), these elements are - * aggregated and copied serially. - * * The @p queue_length argument indicates the number of items that can be * live at any given time. Each item consists of @p chunk_size elements of * the input stream that will be worked on by the worker and copier @@ -1124,7 +1412,6 @@ namespace WorkStream void (MainClass::*copier) (const CopyData &), const ScratchData &sample_scratch_data, const CopyData &sample_copy_data, - std::vector (MainClass::*get_conflict_indices)(const Iterator &), const unsigned int queue_length = 2*multithread_info.n_threads(), const unsigned int chunk_size = 8) { @@ -1138,8 +1425,6 @@ namespace WorkStream std_cxx1x::_1), sample_scratch_data, sample_copy_data, - std_cxx1x::bind(get_conflict_indices, - std_cxx1x::ref (main_object)), queue_length, chunk_size); } diff --git a/deal.II/include/deal.II/dofs/dof_renumbering.h b/deal.II/include/deal.II/dofs/dof_renumbering.h index c52ddaafd9..9484864df3 100644 --- a/deal.II/include/deal.II/dofs/dof_renumbering.h +++ b/deal.II/include/deal.II/dofs/dof_renumbering.h @@ -120,7 +120,7 @@ DEAL_II_NAMESPACE_OPEN * results. However, after all there is no algorithm that * accomplishes this within reasonable time. There are situations * where the lack of optimality even leads to worse results than with - * the original, crude, levelwise numering scheme; one of these + * the original, crude, levelwise numbering scheme; one of these * examples is a mesh of four cells of which always those cells are * refined which are neighbors to the center (you may call this mesh a * `zoom in' mesh). In one such example the bandwidth was increased by @@ -345,7 +345,7 @@ DEAL_II_NAMESPACE_OPEN * after DoFHandler::distribute_dofs. The minimum degree algorithm does not * attempt to minimize the bandwidth of a matrix but to minimize the amount * of fill-in a LU decomposition would produce, i.e. the number of places in - * the matrix that would be occupied by elements of an LU decompisition that + * the matrix that would be occupied by elements of an LU decomposition that * are not already occupied by elements of the original matrix. The resulting * sparsity pattern obviously has an entirely different structure than the * ones produced by algorithms trying to minimize the bandwidth. @@ -428,14 +428,11 @@ namespace DoFRenumbering /** - * Point based comparator for downstream - * directions: it returns @p true if the - * second point is downstream of the first - * one with respect to the direction given - * to the constructor. If the points are - * the same with respect to the downstream - * direction, the point with the lower DoF - * number is considered smaller. + * Point based comparator for downstream directions: it returns @p true if + * the second point is downstream of the first one with respect to the + * direction given to the constructor. If the points are the same with + * respect to the downstream direction, the point with the lower DoF number + * is considered smaller. */ template struct ComparePointwiseDownstream @@ -465,48 +462,29 @@ namespace DoFRenumbering }; /** - * A namespace for the - * implementation of some - * renumbering algorithms based - * on algorithms implemented in - * the Boost Graph Library (BGL) - * by Jeremy Siek and others. + * A namespace for the implementation of some renumbering algorithms based + * on algorithms implemented in the Boost Graph Library (BGL) by Jeremy Siek + * and others. * - * While often slighty slower to - * compute, the algorithms using - * BOOST often lead to matrices - * with smaller bandwidths and - * sparse ILUs based on this - * numbering are therefore more - * efficient. + * While often slightly slower to compute, the algorithms using BOOST often + * lead to matrices with smaller bandwidths and sparse ILUs based on this + * numbering are therefore more efficient. * - * For a comparison of these - * algorithms with the ones - * defined in DoFRenumbering, see - * the comparison section in the - * documentation of the + * For a comparison of these algorithms with the ones defined in + * DoFRenumbering, see the comparison section in the documentation of the * DoFRenumbering namespace. */ namespace boost { /** - * Renumber the degrees of - * freedom according to the - * Cuthill-McKee method, - * eventually using the reverse - * numbering scheme. + * Renumber the degrees of freedom according to the Cuthill-McKee method, + * eventually using the reverse numbering scheme. * - * See the general - * documentation of the - * parent class for details - * on the different methods. + * See the general documentation of the parent class for details on the + * different methods. * - * As an example of the - * results of this algorithm, - * take a look at the - * comparison of various - * algorithms in the - * documentation of the + * As an example of the results of this algorithm, take a look at the + * comparison of various algorithms in the documentation of the * DoFRenumbering namespace. */ template @@ -516,13 +494,9 @@ namespace DoFRenumbering const bool use_constraints = false); /** - * Computes the renumbering - * vector needed by the - * Cuthill_McKee() function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the Cuthill_McKee() + * function. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. */ template void @@ -532,29 +506,16 @@ namespace DoFRenumbering const bool use_constraints = false); /** - * Renumber the degrees of - * freedom based on the BOOST - * implementation of the King - * algorithm. This often - * results in slightly larger - * (by a few percent) - * bandwidths than the - * Cuthill-McKee algorithm, - * but sparse ILUs are often - * slightly (also by a few - * percent) better - * preconditioners. + * Renumber the degrees of freedom based on the BOOST implementation of + * the King algorithm. This often results in slightly larger (by a few + * percent) bandwidths than the Cuthill-McKee algorithm, but sparse ILUs + * are often slightly (also by a few percent) better preconditioners. * - * As an example of the - * results of this algorithm, - * take a look at the - * comparison of various - * algorithms in the - * documentation of the + * As an example of the results of this algorithm, take a look at the + * comparison of various algorithms in the documentation of the * DoFRenumbering namespace. * - * This algorithm is used in - * step-22. + * This algorithm is used in step-22. */ template void @@ -563,11 +524,8 @@ namespace DoFRenumbering const bool use_constraints = false); /** - * Compute the renumbering - * for the King algorithm but - * do not actually renumber - * the degrees of freedom in - * the DoF handler argument. + * Compute the renumbering for the King algorithm but do not actually + * renumber the degrees of freedom in the DoF handler argument. */ template void @@ -577,28 +535,14 @@ namespace DoFRenumbering const bool use_constraints = false); /** - * Renumber the degrees of - * freedom based on the BOOST - * implementation of the - * minimum degree - * algorithm. Unlike the - * Cuthill-McKee algorithm, - * this algorithm does not - * attempt to minimize the - * bandwidth of a matrix but - * to minimize the amount of - * fill-in when doing an LU - * decomposition. It may - * sometimes yield better - * ILUs because of this - * property. + * Renumber the degrees of freedom based on the BOOST implementation of + * the minimum degree algorithm. Unlike the Cuthill-McKee algorithm, this + * algorithm does not attempt to minimize the bandwidth of a matrix but to + * minimize the amount of fill-in when doing an LU decomposition. It may + * sometimes yield better ILUs because of this property. * - * As an example of the - * results of this algorithm, - * take a look at the - * comparison of various - * algorithms in the - * documentation of the + * As an example of the results of this algorithm, take a look at the + * comparison of various algorithms in the documentation of the * DoFRenumbering namespace. */ template @@ -608,12 +552,8 @@ namespace DoFRenumbering const bool use_constraints = false); /** - * Compute the renumbering - * for the minimum degree - * algorithm but do not - * actually renumber the - * degrees of freedom in the - * DoF handler argument. + * Compute the renumbering for the minimum degree algorithm but do not + * actually renumber the degrees of freedom in the DoF handler argument. */ template void @@ -624,21 +564,14 @@ namespace DoFRenumbering } /** - * Renumber the degrees of - * freedom according to the - * Cuthill-McKee method, - * eventually using the reverse - * numbering scheme. + * Renumber the degrees of freedom according to the Cuthill-McKee method, + * eventually using the reverse numbering scheme. * - * See the general documentation - * of this class for details on - * the different methods. + * See the general documentation of this class for details on the different + * methods. * - * As an example of the results - * of this algorithm, take a look - * at the comparison of various - * algorithms in the - * documentation of the + * As an example of the results of this algorithm, take a look at the + * comparison of various algorithms in the documentation of the * DoFRenumbering namespace. */ template @@ -649,13 +582,9 @@ namespace DoFRenumbering const std::vector &starting_indices = std::vector()); /** - * Computes the renumbering - * vector needed by the - * Cuthill_McKee() function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the Cuthill_McKee() + * function. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. */ template void @@ -666,27 +595,17 @@ namespace DoFRenumbering const std::vector &starting_indices = std::vector()); /** - * Renumber the degrees of - * freedom according to the - * Cuthill-McKee method, - * eventually using the reverse - * numbering scheme, in this case - * for a multigrid numbering of - * degrees of freedom. + * Renumber the degrees of freedom according to the Cuthill-McKee method, + * eventually using the reverse numbering scheme, in this case for a + * multigrid numbering of degrees of freedom. * - * You can give a triangulation - * level to which this function - * is to be applied. Since with - * a level-wise numbering there - * are no hanging nodes, no - * constraints can be used, so - * the respective parameter of - * the previous function is - * ommitted. + * You can give a triangulation level to which this function is to be + * applied. Since with a level-wise numbering there are no hanging nodes, + * no constraints can be used, so the respective parameter of the previous + * function is omitted. * - * See the general documentation - * of this class for details on - * the different methods. + * See the general documentation of this class for details on the different + * methods. */ template void @@ -701,67 +620,34 @@ namespace DoFRenumbering */ /** - * Sort the degrees of freedom by - * vector component. The - * numbering within each - * component is not touched, so a - * degree of freedom with index - * $i$, belonging to some - * component, and another degree - * of freedom with index $j$ - * belonging to the same - * component will be assigned new - * indices $n(i)$ and $n(j)$ with - * $n(i)n(j)$ if $i>j$. + * Sort the degrees of freedom by vector component. The numbering within + * each component is not touched, so a degree of freedom with index $i$, + * belonging to some component, and another degree of freedom with index $j$ + * belonging to the same component will be assigned new indices $n(i)$ and + * $n(j)$ with $n(i)n(j)$ if $i>j$. * - * You can specify that the - * components are ordered in a - * different way than suggested - * by the FESystem object you - * use. To this end, set up the - * vector @p target_component - * such that the entry at index - * @p i denotes the number of the - * target component for dofs with - * component @p i in the - * FESystem. Naming the same - * target component more than once is - * possible and results in a - * blocking of several components - * into one. This is discussed in - * step-22. If you - * omit this argument, the same - * order as given by the finite - * element is used. + * You can specify that the components are ordered in a different way than + * suggested by the FESystem object you use. To this end, set up the vector + * @p target_component such that the entry at index @p i denotes the number + * of the target component for dofs with component @p i in the + * FESystem. Naming the same target component more than once is possible and + * results in a blocking of several components into one. This is discussed + * in step-22. If you omit this argument, the same order as given by the + * finite element is used. * - * If one of the base finite - * elements from which the global - * finite element under - * consideration here, is a - * non-primitive one, i.e. its - * shape functions have more than - * one non-zero component, then - * it is not possible to - * associate these degrees of - * freedom with a single vector - * component. In this case, they - * are associated with the first - * vector component to which they - * belong. + * If one of the base finite elements from which the global finite element + * under consideration here, is a non-primitive one, i.e. its shape + * functions have more than one non-zero component, then it is not possible + * to associate these degrees of freedom with a single vector component. In + * this case, they are associated with the first vector component to which + * they belong. * - * For finite elements with only - * one component, or a single - * non-primitive base element, - * this function is the identity - * operation. + * For finite elements with only one component, or a single non-primitive + * base element, this function is the identity operation. * - * @note A similar function, which - * renumbered all levels existed - * for MGDoFHandler. This function - * was deleted. Thus, you have to - * call the level function for each - * level now. + * @note A similar function, which renumbered all levels existed for + * MGDoFHandler. This function was deleted. Thus, you have to call the level + * function for each level now. */ template void @@ -771,9 +657,8 @@ namespace DoFRenumbering /** - * Sort the degrees of freedom by - * component. It does the same - * thing as the above function. + * Sort the degrees of freedom by component. It does the same thing as the + * above function. */ template void @@ -781,14 +666,10 @@ namespace DoFRenumbering const std::vector &target_component = std::vector ()); /** - * Sort the degrees of freedom by - * component. It does the same - * thing as the above function, - * only that it does this for one - * single level of a multi-level - * discretization. The - * non-multigrid part of the - * MGDoFHandler is not touched. + * Sort the degrees of freedom by component. It does the same thing as the + * above function, only that it does this for one single level of a + * multi-level discretization. The non-multigrid part of the MGDoFHandler is + * not touched. */ template void @@ -798,14 +679,9 @@ namespace DoFRenumbering /** - * Sort the degrees of freedom by - * component. It does the same - * thing as the previous - * functions, but more: it - * renumbers not only every level - * of the multigrid part, but - * also the global, - * i.e. non-multigrid components. + * Sort the degrees of freedom by component. It does the same thing as the + * previous functions, but more: it renumbers not only every level of the + * multigrid part, but also the global, i.e. non-multigrid components. */ template void @@ -813,13 +689,9 @@ namespace DoFRenumbering const std::vector &target_component = std::vector()); /** - * Computes the renumbering - * vector needed by the - * component_wise() - * functions. Does not perform - * the renumbering on the - * DoFHandler dofs but returns - * the renumbering vector. + * Computes the renumbering vector needed by the component_wise() + * functions. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. */ template types::global_dof_index @@ -839,19 +711,11 @@ namespace DoFRenumbering */ /** - * Sort the degrees of freedom by - * vector block. The - * numbering within each - * block is not touched, so a - * degree of freedom with index - * $i$, belonging to some - * block, and another degree - * of freedom with index $j$ - * belonging to the same - * block will be assigned new - * indices $n(i)$ and $n(j)$ with - * $n(i)n(j)$ if $i>j$. + * Sort the degrees of freedom by vector block. The numbering within each + * block is not touched, so a degree of freedom with index $i$, belonging to + * some block, and another degree of freedom with index $j$ belonging to the + * same block will be assigned new indices $n(i)$ and $n(j)$ with + * $n(i)n(j)$ if $i>j$. */ template void @@ -859,41 +723,29 @@ namespace DoFRenumbering /** - * Sort the degrees of freedom by - * block. It does the same - * thing as the above function. - * - * This function only succeeds if each of - * the elements in the hp::FECollection - * attached to the hp::DoFHandler argument - * has exactly the same number of blocks - * (see @ref GlossBlock "the glossary" for - * more information). Note that this is not - * always given: while the hp::FECollection - * class ensures that all of its elements - * have the same number of vector - * components, they need not have the same - * number of blocks. At the same time, this - * function here needs to match individual - * blocks across elements and therefore - * requires that elements have the same - * number of blocks and that subsequent - * blocks in one element have the same - * meaning as in another element. + * Sort the degrees of freedom by block. It does the same thing as the above + * function. + * + * This function only succeeds if each of the elements in the + * hp::FECollection attached to the hp::DoFHandler argument has exactly the + * same number of blocks (see @ref GlossBlock "the glossary" for more + * information). Note that this is not always given: while the + * hp::FECollection class ensures that all of its elements have the same + * number of vector components, they need not have the same number of + * blocks. At the same time, this function here needs to match individual + * blocks across elements and therefore requires that elements have the same + * number of blocks and that subsequent blocks in one element have the same + * meaning as in another element. */ template void block_wise (hp::DoFHandler &dof_handler); /** - * Sort the degrees of freedom by - * block. It does the same - * thing as the above function, - * only that it does this for one - * single level of a multi-level - * discretization. The - * non-multigrid part of the - * MGDoFHandler is not touched. + * Sort the degrees of freedom by block. It does the same thing as the above + * function, only that it does this for one single level of a multi-level + * discretization. The non-multigrid part of the MGDoFHandler is not + * touched. */ template void @@ -902,27 +754,18 @@ namespace DoFRenumbering /** - * Sort the degrees of freedom by - * block. It does the same - * thing as the previous - * functions, but more: it - * renumbers not only every level - * of the multigrid part, but - * also the global, - * i.e. non-multigrid components. + * Sort the degrees of freedom by block. It does the same thing as the + * previous functions, but more: it renumbers not only every level of the + * multigrid part, but also the global, i.e. non-multigrid components. */ template void block_wise (MGDoFHandler &dof_handler); /** - * Computes the renumbering - * vector needed by the - * block_wise() - * functions. Does not perform - * the renumbering on the - * DoFHandler dofs but returns - * the renumbering vector. + * Computes the renumbering vector needed by the block_wise() + * functions. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. */ template types::global_dof_index @@ -940,10 +783,9 @@ namespace DoFRenumbering */ /** - * Renumber the degrees cell by cell in hierarchical order - * (also known as z-order). The main usage is that this - * guarantees the same ordering independent of the - * number of processors involved in a parallel + * Renumber the degrees cell by cell in hierarchical order (also known as + * z-order). The main usage is that this guarantees the same ordering + * independent of the number of processors involved in a parallel * distributed computation. */ template @@ -951,16 +793,11 @@ namespace DoFRenumbering hierarchical (DoFHandler &dof_handler); /** - * Cell-wise renumbering. This function takes - * the ordered set of cells in - * cell_order, and makes - * sure that all degrees of - * freedom in a cell with higher - * index are behind all degrees - * of freedom of a cell with - * lower index. The order inside - * a cell block will be the same - * as before this renumbering. + * Cell-wise renumbering. This function takes the ordered set of cells in + * cell_order, and makes sure that all degrees of freedom in a cell + * with higher index are behind all degrees of freedom of a cell with lower + * index. The order inside a cell block will be the same as before this + * renumbering. */ template void @@ -968,13 +805,9 @@ namespace DoFRenumbering const std::vector &cell_order); /** - * Computes the renumbering - * vector needed by the - * cell_wise() function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the cell_wise() function. Does + * not perform the renumbering on the DoFHandler dofs but returns the + * renumbering vector. */ template void @@ -984,9 +817,8 @@ namespace DoFRenumbering const std::vector &cell_order); /** - * Cell-wise renumbering on one - * level. See the other function - * with the same name. + * Cell-wise renumbering on one level. See the other function with the same + * name. */ template void @@ -995,13 +827,9 @@ namespace DoFRenumbering const std::vector &cell_order); /** - * Computes the renumbering - * vector needed by the - * cell_wise() level renumbering function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the cell_wise() level + * renumbering function. Does not perform the renumbering on the DoFHandler + * dofs but returns the renumbering vector. */ template void @@ -1021,47 +849,29 @@ namespace DoFRenumbering */ /** - * Downstream numbering with respect to a - * constant flow direction. If the - * additional argument @p - * dof_wise_renumbering is set to @p false, - * the numbering is performed cell-wise, - * otherwise it is performed based on the + * Downstream numbering with respect to a constant flow direction. If the + * additional argument @p dof_wise_renumbering is set to @p false, the + * numbering is performed cell-wise, otherwise it is performed based on the * location of the support points. * - * The cells are sorted such that - * the centers of higher numbers - * are further downstream with - * respect to the constant vector - * @p direction than the centers - * of lower numbers. Even if this - * yields a downstream numbering - * with respect to the flux on - * the edges for fairly general - * grids, this might not be - * guaranteed for all meshes. + * The cells are sorted such that the centers of higher numbers are further + * downstream with respect to the constant vector @p direction than the + * centers of lower numbers. Even if this yields a downstream numbering with + * respect to the flux on the edges for fairly general grids, this might not + * be guaranteed for all meshes. * - * If the @p dof_wise_renumbering argument - * is set to @p false, this function - * produces a downstream ordering of the - * mesh cells and calls - * cell_wise(). Therefore, the output only - * makes sense for Discontinuous Galerkin - * Finite Elements (all degrees of freedom - * have to be associated with the interior - * of the cell in that case) in that case. + * If the @p dof_wise_renumbering argument is set to @p false, this function + * produces a downstream ordering of the mesh cells and calls + * cell_wise(). Therefore, the output only makes sense for Discontinuous + * Galerkin Finite Elements (all degrees of freedom have to be associated + * with the interior of the cell in that case) in that case. * - * If @p dof_wise_renumbering is set to @p - * true, the degrees of freedom are - * renumbered based on the support point - * location of the individual degrees of - * freedom (obviously, the finite element - * needs to define support points for this - * to work). The numbering of points with - * the same position in downstream location - * (e.g. those parallel to the flow - * direction, or several dofs within a - * FESystem) will be unaffected. + * If @p dof_wise_renumbering is set to @p true, the degrees of freedom are + * renumbered based on the support point location of the individual degrees + * of freedom (obviously, the finite element needs to define support points + * for this to work). The numbering of points with the same position in + * downstream location (e.g. those parallel to the flow direction, or + * several dofs within a FESystem) will be unaffected. */ template void @@ -1071,11 +881,8 @@ namespace DoFRenumbering /** - * Cell-wise downstream numbering - * with respect to a constant - * flow direction on one - * level. See the other function - * with the same name. + * Cell-wise downstream numbering with respect to a constant flow direction + * on one level. See the other function with the same name. */ template void @@ -1085,12 +892,11 @@ namespace DoFRenumbering const bool dof_wise_renumbering = false); /** - * This function does the downstream numbering for the individual - * levels of a multigrid hierarchy, but not for the global degrees - * of freedom. + * This function does the downstream numbering for the individual levels of + * a multigrid hierarchy, but not for the global degrees of freedom. * - * @deprecated Call downstream() function that takes a level - * argument for each of the levels of the multigrid hierarchy. + * @deprecated Call downstream() function that takes a level argument for + * each of the levels of the multigrid hierarchy. */ template void @@ -1134,13 +940,9 @@ namespace DoFRenumbering } /** - * Computes the renumbering - * vector needed by the - * downstream() function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the downstream() function. Does + * not perform the renumbering on the DoFHandler dofs but returns the + * renumbering vector. */ template void @@ -1151,13 +953,9 @@ namespace DoFRenumbering const bool dof_wise_renumbering); /** - * Computes the renumbering - * vector needed by the - * downstream() function. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the downstream() function. Does + * not perform the renumbering on the DoFHandler dofs but returns the + * renumbering vector. */ template void @@ -1171,16 +969,10 @@ namespace DoFRenumbering /** * Cell-wise clockwise numbering. * - * This function produces a - * (counter)clockwise ordering of - * the mesh cells with respect to - * the hub @p center and calls - * cell_wise(). Therefore, it - * only works with Discontinuous - * Galerkin Finite Elements, - * i.e. all degrees of freedom - * have to be associated with the - * interior of the cell. + * This function produces a (counter)clockwise ordering of the mesh cells + * with respect to the hub @p center and calls cell_wise(). Therefore, it + * only works with Discontinuous Galerkin Finite Elements, i.e. all degrees + * of freedom have to be associated with the interior of the cell. */ template void @@ -1189,9 +981,8 @@ namespace DoFRenumbering const bool counter = false); /** - * Cell-wise clockwise numbering - * on one level. See the other - * function with the same name. + * Cell-wise clockwise numbering on one level. See the other function with + * the same name. */ template void @@ -1201,13 +992,9 @@ namespace DoFRenumbering const bool counter = false); /** - * Computes the renumbering - * vector needed by the - * clockwise_dg() functions. Does - * not perform the renumbering on - * the DoFHandler dofs but - * returns the renumbering - * vector. + * Computes the renumbering vector needed by the clockwise_dg() + * functions. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. */ template void @@ -1226,22 +1013,13 @@ namespace DoFRenumbering */ /** - * Sort those degrees of freedom - * which are tagged with @p true - * in the @p selected_dofs array - * to the back of the DoF - * numbers. The sorting is - * stable, i.e. the relative - * order within the tagged - * degrees of freedom is - * preserved, as is the relative - * order within the untagged - * ones. + * Sort those degrees of freedom which are tagged with @p true in the @p + * selected_dofs array to the back of the DoF numbers. The sorting is + * stable, i.e. the relative order within the tagged degrees of freedom is + * preserved, as is the relative order within the untagged ones. * - * @pre The @p selected_dofs - * array must have as many elements as - * the @p dof_handler has degrees of - * freedom. + * @pre The @p selected_dofs array must have as many elements as the @p + * dof_handler has degrees of freedom. */ template void @@ -1249,14 +1027,14 @@ namespace DoFRenumbering const std::vector &selected_dofs); /** - * Sort those degrees of freedom which are tagged with @p true in - * the @p selected_dofs array on the level @p level to the back of - * the DoF numbers. The sorting is stable, i.e. the relative order - * within the tagged degrees of freedom is preserved, as is the - * relative order within the untagged ones. + * Sort those degrees of freedom which are tagged with @p true in the @p + * selected_dofs array on the level @p level to the back of the DoF + * numbers. The sorting is stable, i.e. the relative order within the tagged + * degrees of freedom is preserved, as is the relative order within the + * untagged ones. * - * @pre The @p selected_dofs array must have as many elements as the - * @p dof_handler has degrees of freedom on the given level. + * @pre The @p selected_dofs array must have as many elements as the @p + * dof_handler has degrees of freedom on the given level. */ template void @@ -1265,18 +1043,12 @@ namespace DoFRenumbering const unsigned int level); /** - * Computes the renumbering - * vector needed by the - * sort_selected_dofs_back() - * function. Does not perform the - * renumbering on the DoFHandler - * dofs but returns the - * renumbering vector. + * Computes the renumbering vector needed by the sort_selected_dofs_back() + * function. Does not perform the renumbering on the DoFHandler dofs but + * returns the renumbering vector. * - * @pre The @p selected_dofs - * array must have as many elements as - * the @p dof_handler has degrees of - * freedom. + * @pre The @p selected_dofs array must have as many elements as the @p + * dof_handler has degrees of freedom. */ template void @@ -1285,19 +1057,12 @@ namespace DoFRenumbering const std::vector &selected_dofs); /** - * Computes the renumbering - * vector on each level - * needed by the - * sort_selected_dofs_back() - * function. Does not perform the - * renumbering on the MGDoFHandler - * dofs but returns the - * renumbering vector. + * Computes the renumbering vector on each level needed by the + * sort_selected_dofs_back() function. Does not perform the renumbering on + * the MGDoFHandler dofs but returns the renumbering vector. * - * @pre The @p selected_dofs - * array must have as many elements as - * the @p dof_handler has degrees of - * freedom on the given level. + * @pre The @p selected_dofs array must have as many elements as the @p + * dof_handler has degrees of freedom on the given level. */ template void @@ -1307,19 +1072,15 @@ namespace DoFRenumbering const unsigned int level); /** - * Renumber the degrees of - * freedom in a random way. + * Renumber the degrees of freedom in a random way. */ template void random (DH &dof_handler); /** - * Computes the renumbering - * vector needed by the random() - * function. Does not perform the - * renumbering on the DoFHandler - * dofs but returns the + * Computes the renumbering vector needed by the random() function. Does not + * perform the renumbering on the DoFHandler dofs but returns the * renumbering vector. */ template @@ -1337,38 +1098,21 @@ namespace DoFRenumbering */ /** - * Renumber the degrees of - * freedom such that they are - * associated with the subdomain - * id of the cells they are - * living on, i.e. first all - * degrees of freedom that belong - * to cells with subdomain zero, - * then all with subdomain one, - * etc. This is useful when doing - * parallel computations after - * assigning subdomain ids using - * a partitioner (see the - * GridTools::partition_triangulation - * function for this). + * Renumber the degrees of freedom such that they are associated with the + * subdomain id of the cells they are living on, i.e. first all degrees of + * freedom that belong to cells with subdomain zero, then all with subdomain + * one, etc. This is useful when doing parallel computations after assigning + * subdomain ids using a partitioner (see the + * GridTools::partition_triangulation function for this). * - * Note that degrees of freedom - * associated with faces, edges, - * and vertices may be associated - * with multiple subdomains if - * they are sitting on partition - * boundaries. It would therefore - * be undefined with which - * subdomain they have to be - * associated. For this, we use - * what we get from the - * DoFTools::get_subdomain_association - * function. + * Note that degrees of freedom associated with faces, edges, and vertices + * may be associated with multiple subdomains if they are sitting on + * partition boundaries. It would therefore be undefined with which + * subdomain they have to be associated. For this, we use what we get from + * the DoFTools::get_subdomain_association function. * - * The algorithm is stable, i.e. if - * two dofs i,j have i and belong - * to the same subdomain, then they - * will be in this order also after + * The algorithm is stable, i.e. if two dofs i,j have i and + * belong to the same subdomain, then they will be in this order also after * reordering. */ template @@ -1376,13 +1120,9 @@ namespace DoFRenumbering subdomain_wise (DH &dof_handler); /** - * Computes the renumbering - * vector needed by the - * subdomain_wise() - * function. Does not perform the - * renumbering on the @p - * DoFHandler dofs but returns - * the renumbering vector. + * Computes the renumbering vector needed by the subdomain_wise() + * function. Does not perform the renumbering on the @p DoFHandler dofs but + * returns the renumbering vector. */ template void diff --git a/deal.II/include/deal.II/grid/tria.h b/deal.II/include/deal.II/grid/tria.h index 315e325a41..a15b9b0e26 100644 --- a/deal.II/include/deal.II/grid/tria.h +++ b/deal.II/include/deal.II/grid/tria.h @@ -128,16 +128,18 @@ struct CellData types::boundary_id boundary_id; types::material_id material_id; }; - /** - * Manifold identificator of this - * object. This identificator - * should be used to identify the - * manifold to which this object - * belongs, and from which this - * object will collect information - * on how to add points upon - * refinement.*/ + /** + * Manifold identificator of this object. This identificator should + * be used to identify the manifold to which this object belongs, + * and from which this object will collect information on how to add + * points upon refinement.*/ types::manifold_id manifold_id; + + /** + * Default constructor. Sets the vertex indices to invalid values and the boundary or material + * id the default value (zero). + */ + CellData (); }; @@ -3323,6 +3325,19 @@ private: #ifndef DOXYGEN + +template +inline +CellData::CellData () +{ + for (unsigned int i=0; i::vertices_per_cell; ++i) + vertices[i] = numbers::invalid_unsigned_int; + + material_id = 0; +} + + + namespace internal { namespace Triangulation diff --git a/deal.II/include/deal.II/lac/block_sparse_matrix.h b/deal.II/include/deal.II/lac/block_sparse_matrix.h index e5f91ad22b..75d3c5811e 100644 --- a/deal.II/include/deal.II/lac/block_sparse_matrix.h +++ b/deal.II/include/deal.II/lac/block_sparse_matrix.h @@ -186,8 +186,11 @@ public: * sparsity patterns of the * parameter. * - * The elements of the matrix are - * set to zero by this function. + * You have to make sure that the lifetime of the sparsity structure is at + * least as long as that of this matrix or as long as reinit(const + * SparsityPattern &) is not called with a new sparsity structure. + * + * The elements of the matrix are set to zero by this function. */ virtual void reinit (const BlockSparsityPattern &sparsity); //@} diff --git a/deal.II/include/deal.II/lac/sparse_matrix.h b/deal.II/include/deal.II/lac/sparse_matrix.h index 79b71911ac..6f9519ae27 100644 --- a/deal.II/include/deal.II/lac/sparse_matrix.h +++ b/deal.II/include/deal.II/lac/sparse_matrix.h @@ -453,6 +453,10 @@ namespace SparseMatrixIterators } +/** + * @} + */ + //TODO: Add multithreading to the other vmult functions. @@ -1492,7 +1496,9 @@ public: * elements in a row are written in ascending column order. */ template - void print (STREAM &out, bool across=false, bool diagonal_first=true) const; + void print (STREAM &out, + const bool across = false, + const bool diagonal_first = true) const; /** * Print the matrix in the usual format, i.e. as a matrix and not as a list @@ -1653,10 +1659,6 @@ private: template friend class SparseMatrixIterators::Accessor; }; -/** - * @} - */ - #ifndef DOXYGEN /*---------------------- Inline functions -----------------------------------*/ @@ -2474,13 +2476,15 @@ SparseMatrix::end (const size_type r) template template inline -void SparseMatrix::print (STREAM &out, bool across, bool diagonal_first) const +void SparseMatrix::print (STREAM &out, + const bool across, + const bool diagonal_first) const { Assert (cols != 0, ExcNotInitialized()); Assert (val != 0, ExcNotInitialized()); bool hanging_diagonal = false; - number diagonal; + number diagonal = number(); for (size_type i=0; irows; ++i) { diff --git a/deal.II/source/CMakeLists.txt b/deal.II/source/CMakeLists.txt index c221f854c6..cabda8f8fd 100644 --- a/deal.II/source/CMakeLists.txt +++ b/deal.II/source/CMakeLists.txt @@ -49,6 +49,9 @@ ADD_SUBDIRECTORY(integrators) ADD_SUBDIRECTORY(matrix_free) ADD_SUBDIRECTORY(meshworker) +# A custom target to build the library: +ADD_CUSTOM_TARGET(build_library) + FOREACH(build ${DEAL_II_BUILD_TYPES}) STRING(TOLOWER ${build} build_lowercase) @@ -64,6 +67,7 @@ FOREACH(build ${DEAL_II_BUILD_TYPES}) ${deal_ii_objects_${build_lowercase}} ) + ADD_DEPENDENCIES(build_library ${DEAL_II_BASE_NAME}${DEAL_II_${_build}_SUFFIX}) ADD_DEPENDENCIES(library ${DEAL_II_BASE_NAME}${DEAL_II_${_build}_SUFFIX}) SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME}${DEAL_II_${build}_SUFFIX} diff --git a/deal.II/source/base/data_out_base.cc b/deal.II/source/base/data_out_base.cc index f1e611fc5d..b000b1435e 100644 --- a/deal.II/source/base/data_out_base.cc +++ b/deal.II/source/base/data_out_base.cc @@ -5629,6 +5629,16 @@ void DataOutBase::write_vtu_main (const std::vector > &patch AssertThrow (out, ExcIO()); } +template <> +void DataOutBase::write_svg<1,1> (const std::vector > &patches, + const std::vector &data_names, + const std::vector > &vector_data_ranges, + const SvgFlags &flags, + std::ostream &out) +{ + AssertThrow (false, ExcNotImplemented()); +} + template void DataOutBase::write_svg (const std::vector > &patches, @@ -5648,9 +5658,7 @@ void DataOutBase::write_svg (const std::vector > &patches, if (flags.margin) margin_in_percent = 5; -// determine the bounding box in the model space - double x_min, y_min, z_min; - double x_max, y_max, z_max; + // determine the bounding box in the model space double x_dimension, y_dimension, z_dimension; typename std::vector >::const_iterator patch = patches.begin(); @@ -5672,12 +5680,12 @@ void DataOutBase::write_svg (const std::vector > &patches, patch->data.n_rows() == 0, ExcIndexRange (flags.height_vector, 0, patch->data.n_rows())); - x_min = projected_point[0]; - x_max = x_min; - y_min = projected_point[1]; - y_max = y_min; - z_min = patch->data.n_rows() != 0 ? patch->data(flags.height_vector,0) : 0; - z_max = z_min; + double x_min = projected_point[0]; + double x_max = x_min; + double y_min = projected_point[1]; + double y_max = y_min; + double z_min = patch->data.n_rows() != 0 ? patch->data(flags.height_vector,0) : 0; + double z_max = z_min; // iterate over the patches for (; patch != patches.end(); ++patch) @@ -5757,9 +5765,9 @@ void DataOutBase::write_svg (const std::vector > &patches, camera_focus = .5 * z_dimension; - Point<3> camera_position_temp(true); - Point<3> camera_direction_temp(true); - Point<3> camera_horizontal_temp(true); + Point<3> camera_position_temp; + Point<3> camera_direction_temp; + Point<3> camera_horizontal_temp; const float angle_factor = 3.14159265 / 180.; diff --git a/deal.II/source/base/data_out_base.inst.in b/deal.II/source/base/data_out_base.inst.in index 96cc2fea22..28547f6d17 100644 --- a/deal.II/source/base/data_out_base.inst.in +++ b/deal.II/source/base/data_out_base.inst.in @@ -111,6 +111,8 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS const std::vector > &vector_data_ranges, const TecplotFlags &flags, std::ostream &out); + +#if deal_II_space_dimension >1 template void DataOutBase::write_svg (const std::vector > &patches, @@ -118,6 +120,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS const std::vector > &vector_data_ranges, const SvgFlags &flags, std::ostream &out); +#endif template void DataOutBase::write_deal_II_intermediate (const std::vector > &patches, diff --git a/deal.II/source/base/multithread_info.cc b/deal.II/source/base/multithread_info.cc index 6ea0b132a6..a3a92163de 100644 --- a/deal.II/source/base/multithread_info.cc +++ b/deal.II/source/base/multithread_info.cc @@ -26,8 +26,11 @@ # include #endif -#ifdef DEAL_II_WITH_THREADS +#if defined(__FreeBSD__) +# include +#endif +#ifdef DEAL_II_WITH_THREADS # include # include #endif diff --git a/deal.II/source/dofs/dof_renumbering.inst.in b/deal.II/source/dofs/dof_renumbering.inst.in index c8c1115558..d35eeb5dcd 100644 --- a/deal.II/source/dofs/dof_renumbering.inst.in +++ b/deal.II/source/dofs/dof_renumbering.inst.in @@ -204,7 +204,7 @@ namespace DoFRenumbering template void downstream > - (DoFHandler&, const Point&, + (DoFHandler&, const Point::space_dimension>&, const bool); template void @@ -240,13 +240,13 @@ namespace DoFRenumbering template void downstream > (hp::DoFHandler&, - const Point&, + const Point::space_dimension>&, const bool); template void downstream > (MGDoFHandler&, - const Point&, + const Point::space_dimension>&, const bool); template void @@ -281,7 +281,8 @@ namespace DoFRenumbering template void downstream - (DoFHandler&, const unsigned int, + (DoFHandler&, + const unsigned int, const Point&, const bool); diff --git a/deal.II/source/dummy.cc b/deal.II/source/dummy.cc index f7cb351468..dc760cd36b 100644 --- a/deal.II/source/dummy.cc +++ b/deal.II/source/dummy.cc @@ -21,5 +21,5 @@ * the generated Xcode project. */ -const int _global_symbol_42 = 42; +const int global_symbol_42 = 42; diff --git a/deal.II/source/lac/trilinos_sparse_matrix.cc b/deal.II/source/lac/trilinos_sparse_matrix.cc index dddb391a86..8423493505 100644 --- a/deal.II/source/lac/trilinos_sparse_matrix.cc +++ b/deal.II/source/lac/trilinos_sparse_matrix.cc @@ -1040,6 +1040,9 @@ namespace TrilinosWrappers const VectorBase &V, const bool transpose_left) { +#ifdef DEAL_II_USE_LARGE_INDEX_TYPE + Assert(false,ExcNotImplemented()) +#endif const bool use_vector = (V.size() == inputright.m() ? true : false); if (transpose_left == false) { @@ -1254,6 +1257,9 @@ namespace TrilinosWrappers const SparseMatrix &B, const VectorBase &V) const { +#ifdef DEAL_II_USE_LARGE_INDEX_TYPE + Assert(false,ExcNotImplemented()) +#endif internals::perform_mmult (*this, B, C, V, false); } @@ -1264,6 +1270,9 @@ namespace TrilinosWrappers const SparseMatrix &B, const VectorBase &V) const { +#ifdef DEAL_II_USE_LARGE_INDEX_TYPE + Assert(false,ExcNotImplemented()) +#endif internals::perform_mmult (*this, B, C, V, true); } diff --git a/deal.II/tests/CMakeLists.txt b/deal.II/tests/CMakeLists.txt index 23449544a1..d594c3c3d4 100644 --- a/deal.II/tests/CMakeLists.txt +++ b/deal.II/tests/CMakeLists.txt @@ -105,8 +105,8 @@ FOREACH(_category ${_categories}) ) ADD_DEPENDENCIES(setup_tests setup_tests_${_category}) - # depend on a valid build directory: - ADD_DEPENDENCIES(setup_tests_${_category} setup_build_dir) + # depend on a compiled library: + ADD_DEPENDENCIES(setup_tests_${_category} build_library) ADD_CUSTOM_TARGET(regen_tests_${_category} COMMAND [ ! -d ${_category} ] || ${CMAKE_COMMAND} diff --git a/deal.II/tests/mesh_converter/meshes/README.txt b/deal.II/tests/mesh_converter/meshes/README.txt new file mode 100644 index 0000000000..9bc70cb14b --- /dev/null +++ b/deal.II/tests/mesh_converter/meshes/README.txt @@ -0,0 +1,66 @@ +==================================================== +MESH CONVERSION TOOL +v. 1.2 + +Use: Convert an ABAQUS .inp file to an AVS UCD file. + +Author: Jean-Paul Pelteret + jppelteret.uct@gmail.com + modified by: Timo Heister, heister@clemson.edu +=================================================== + + +This tool is intended to support converting ABAQUS .inp files into a +format that deal.II can read. To use this tool, you need to configure +deal.II using the "-DDEAL_II_COMPONENT_MESH_CONVERTER=ON" argument +when calling 'cmake'. The resulting executable will then be placed in +the installation directory. + + + +Cubit features captured by ABAQUS .inp files: +--------------------------------------------- +1. Multiple material-id's can be defined in the mesh. This is done by specifying blocksets in the pre-processor. +2. Arbitrary surface boundaries can be defined in the mesh. This is done by specifying sidesets in the pre-processor. In particular, boundaries are not confined to just surfaces (in 3d) - individual element faces can be added to the sideset as well. This is useful when a boundary condition is to be applied on a complex shape boundary that is difficult to define using "surfaces" alone. Similar can be done in 2d. + +How to use: +----------- +1. It is necessary to save the mesh as an Abaqus input file .inp. In Cubit, this is done as follows: +1.1. Go to "Analysis setup mode" by clicking on the disc icon in the toolbar on the right. +1.2. Select "Export Mesh" under "Operation" by clicking on the necessary icon in the toolbar on the right. +1.3. Select an output file. I have found that in Cubit version 11.0 and 12.0 that it is necessary to click on the browse button and type it in the dialogue that pops up. +1.4. Select the dimension to output in. +1.5. Tick the overwrite box. +1.6. If using Cubit v12.0 onwards, uncheck the box "Export using Cubit ID's". The conversion process will encounter errors if box if left checked. +1.7. Click apply. + +2. Converting the mesh +IMPORTANT NOTE: From v12.0 onwards, the format of the Abaqus file that Cubit outputted changed. This has been accounted for but an requires a flag to be passed to the conversion program. + I describe outputs from before v12.0 as "Abaqus OLD" and v12.0 an on (up to v12.1 at this point) as "Abaqus NEW". +2.1. Compile the program using 'make' or another suitable tool +2.2. Run the program with the following command line arguments: + './convert_mesh /path/to/input_file.inp /path/to/output_file.ucd' + + The first input argument is the spatial dimension of the input file, the second is the path to the read-in Abaqus .inp file, and the third is the name of the file to which you wish to write the output AVS .ucd file to. + An example of the correct program usage is: +e.g. './convert_mesh 3 mesh/3d/test_in.inp mesh/3d/test_out.ucd' + + +Notes: +------ +1. A few example / test meshes are provided in the directory "mesh". The .inp files that have been generated are all of the Abaqus OLD format except for one - CC.cub has been converted into both the "new" and "old" formats and both subsequently converted into deal.II readable meshes. + +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.* diff --git a/deal.II/tests/quick_tests/CMakeLists.txt b/deal.II/tests/quick_tests/CMakeLists.txt index 57ef944d87..727911cb15 100644 --- a/deal.II/tests/quick_tests/CMakeLists.txt +++ b/deal.II/tests/quick_tests/CMakeLists.txt @@ -85,11 +85,21 @@ IF (DEAL_II_WITH_P4EST) make_quicktest("p4est" ${_mybuild} 10) ENDIF() +# Test petsc +IF (DEAL_II_WITH_PETSC) + make_quicktest("step-petsc" ${_mybuild} "") +ENDIF() + +# Test slepc +IF (DEAL_II_WITH_PETSC AND DEAL_II_WITH_SLEPC) + make_quicktest("step-slepc" ${_mybuild} "") +ENDIF() # A custom test target: ADD_CUSTOM_TARGET(test COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) +ADD_DEPENDENCIES(test build_library) MESSAGE(STATUS "Setup quick_tests in ${_mybuild} mode - Done") diff --git a/deal.II/tests/quick_tests/step-petsc.cc b/deal.II/tests/quick_tests/step-petsc.cc new file mode 100644 index 0000000000..9290f55a11 --- /dev/null +++ b/deal.II/tests/quick_tests/step-petsc.cc @@ -0,0 +1,220 @@ +/* --------------------------------------------------------------------- + * $Id: step-petsc.cc $ + * + * 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. + * + * --------------------------------------------------------------------- + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace dealii; + +// Test that deal.II is working with PETSc by solving the Laplace's +// problem in 2d. +class LaplaceProblem +{ +public: + LaplaceProblem (); + void run (); + +private: + void setup_system (); + void assemble_system (); + void solve (); + + Triangulation<2> triangulation; + FE_Q<2> fe; + DoFHandler<2> dof_handler; + + PETScWrappers::SparseMatrix A; + PETScWrappers::Vector b, x; + ConstraintMatrix constraints; + + TableHandler output_table; +}; + +LaplaceProblem::LaplaceProblem () + : + fe (1), + dof_handler (triangulation) +{} + +void LaplaceProblem::setup_system () +{ + dof_handler.distribute_dofs (fe); + + constraints.clear (); + DoFTools::make_zero_boundary_constraints (dof_handler, constraints); + constraints.close (); + + A.reinit (dof_handler.n_dofs(), dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + b.reinit (dof_handler.n_dofs()); + x.reinit (dof_handler.n_dofs()); + + // some output + output_table.add_value ("cells", triangulation.n_active_cells()); + output_table.add_value ("dofs", dof_handler.n_dofs()); +} + +void LaplaceProblem::assemble_system () +{ + QGauss<2> quadrature_formula(2); + + FEValues<2> fe_values (fe, quadrature_formula, + update_values | + update_gradients | + update_quadrature_points | + update_JxW_values); + + const unsigned int dofs_per_cell = fe.dofs_per_cell; + const unsigned int n_q_points = quadrature_formula.size(); + + FullMatrix cell_A (dofs_per_cell, dofs_per_cell); + Vector cell_b (dofs_per_cell); + + std::vector local_dof_indices (dofs_per_cell); + + typename DoFHandler<2>::active_cell_iterator + cell = dof_handler.begin_active (), + endc = dof_handler.end (); + + for (; cell!=endc; ++cell) + { + fe_values.reinit (cell); + cell_A = 0; + cell_b = 0; + + for (unsigned int q_point=0; q_pointget_dof_indices (local_dof_indices); + + constraints.distribute_local_to_global (cell_A, local_dof_indices, A); + constraints.distribute_local_to_global (cell_b, local_dof_indices, b); + } + + A.compress (VectorOperation::add); + b.compress (VectorOperation::add); +} + +void LaplaceProblem::solve () +{ + SolverControl solver_control (1e03, 1e-03); + PETScWrappers::SolverCG cg_solver (solver_control); + PETScWrappers::PreconditionBlockJacobi preconditioner (A); + cg_solver.solve (A, x, b, preconditioner); + + // some output + // ? +} + +void LaplaceProblem::run () +{ + GridGenerator::hyper_cube (triangulation, -1, 1); + + for (unsigned int c=0; c<5; ++c) + { + triangulation.refine_global (1); + setup_system (); + assemble_system (); + solve (); + } + + // finialise output + output_table.write_text (std::cout); + deallog << std::endl; +} + + +int main (int argc, char **argv) +{ + try + { + dealii::Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv, 1); + { + deallog.depth_console (0); + LaplaceProblem problem; + problem.run (); + deallog << "OK" << std::endl; + } + } + + catch (std::exception &exc) + { + std::cerr << std::endl << std::endl + << "----------------------------------------------------" + << std::endl; + std::cerr << "Exception on processing: " << std::endl + << exc.what() << std::endl + << "Aborting!" << std::endl + << "----------------------------------------------------" + << std::endl; + + return 1; + } + catch (...) + { + std::cerr << std::endl << std::endl + << "----------------------------------------------------" + << std::endl; + std::cerr << "Unknown exception!" << std::endl + << "Aborting!" << std::endl + << "----------------------------------------------------" + << std::endl; + return 1; + } + + return 0; +} diff --git a/deal.II/tests/quick_tests/step-slepc.cc b/deal.II/tests/quick_tests/step-slepc.cc new file mode 100644 index 0000000000..e0818b475e --- /dev/null +++ b/deal.II/tests/quick_tests/step-slepc.cc @@ -0,0 +1,239 @@ +/* --------------------------------------------------------------------- + * $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. + * + * --------------------------------------------------------------------- + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace dealii; + +// Test that deal.II is working with SLEPc by solving the Laplace's +// eigenspectrum problem in 2d. +class LaplaceEigenspectrumProblem +{ +public: + LaplaceEigenspectrumProblem (); + void run (); + +private: + void setup_system (); + void assemble_system (); + void solve (); + + Triangulation<2> triangulation; + FE_Q<2> fe; + DoFHandler<2> dof_handler; + + PETScWrappers::SparseMatrix A, B; + std::vector x; + std::vector lambda; + ConstraintMatrix constraints; + + TableHandler output_table; +}; + +LaplaceEigenspectrumProblem::LaplaceEigenspectrumProblem () + : + fe (1), + dof_handler (triangulation) +{} + +void LaplaceEigenspectrumProblem::setup_system () +{ + dof_handler.distribute_dofs (fe); + + constraints.clear (); + DoFTools::make_zero_boundary_constraints (dof_handler, constraints); + constraints.close (); + + A.reinit (dof_handler.n_dofs(), dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + B.reinit (dof_handler.n_dofs(), dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + + x.resize (1); + x[0].reinit (dof_handler.n_dofs ()); + lambda.resize (1); + lambda[0] = 0.; + + // some output + output_table.add_value ("cells", triangulation.n_active_cells()); + output_table.add_value ("dofs", dof_handler.n_dofs()); +} + +void LaplaceEigenspectrumProblem::assemble_system () +{ + QGauss<2> quadrature_formula(2); + + FEValues<2> fe_values (fe, quadrature_formula, + update_values | + update_gradients | + update_quadrature_points | + update_JxW_values); + + const unsigned int dofs_per_cell = fe.dofs_per_cell; + const unsigned int n_q_points = quadrature_formula.size(); + + FullMatrix cell_A (dofs_per_cell, dofs_per_cell); + FullMatrix cell_B (dofs_per_cell, dofs_per_cell); + + std::vector local_dof_indices (dofs_per_cell); + + typename DoFHandler<2>::active_cell_iterator + cell = dof_handler.begin_active (), + endc = dof_handler.end (); + + for (; cell!=endc; ++cell) + { + fe_values.reinit (cell); + cell_A = 0; + cell_B = 0; + + for (unsigned int q_point=0; q_pointget_dof_indices (local_dof_indices); + + constraints.distribute_local_to_global (cell_A, local_dof_indices, A); + constraints.distribute_local_to_global (cell_B, local_dof_indices, B); + } + + A.compress (VectorOperation::add); + B.compress (VectorOperation::add); +} + +void LaplaceEigenspectrumProblem::solve () +{ + SolverControl solver_control (1000, 1e-03); + SLEPcWrappers::SolverArnoldi eigensolver (solver_control); + eigensolver.set_which_eigenpairs (EPS_SMALLEST_REAL); + eigensolver.solve (A, B, lambda, x, x.size()); + + // some output + output_table.add_value ("lambda", lambda[0]); + output_table.add_value ("error", std::fabs(2.-lambda[0])); +} + +void LaplaceEigenspectrumProblem::run () +{ + const double radius = dealii::numbers::PI/2.; + GridGenerator::hyper_cube (triangulation, -radius, radius); + + // set the old eigenvalue to a silly number. + double old_lambda = 1000; + + for (unsigned int c=0; c<5; ++c) + { + // obtain numerical result + triangulation.refine_global (1); + setup_system (); + assemble_system (); + solve (); + + // check energy convergence with previous result + AssertThrow (lambda[0]