]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Merge branch 'trunk' into branch_cmake
authorMatthias Maier <tamiko@kyomu.43-1.org>
Tue, 11 Sep 2012 15:14:21 +0000 (15:14 +0000)
committerMatthias Maier <tamiko@kyomu.43-1.org>
Tue, 11 Sep 2012 15:14:21 +0000 (15:14 +0000)
Conflicts:
deal.II/common/Make.global_options.in
deal.II/configure
deal.II/contrib/configure
deal.II/doc/news/changes.h
deal.II/doc/publications/index.html
deal.II/examples/step-42/doc/intro-step-42.tex
deal.II/include/deal.II/base/config.h.in
deal.II/include/deal.II/integrators/laplace.h
deal.II/source/Makefile
tests/integrators/laplacian_01.cc
tests/integrators/laplacian_01/cmp/generic

git-svn-id: https://svn.dealii.org/branches/branch_cmake@26288 0785d39b-7218-0410-832d-ea1e28bc413d

655 files changed:
deal.II/aclocal.m4
deal.II/common/Make.global_options.in
deal.II/common/scripts/report_features.cc
deal.II/configure.in
deal.II/doc/authors.html
deal.II/doc/development/makefiles.2.html
deal.II/doc/development/testsuite.html
deal.II/doc/development/toc.html
deal.II/doc/development/writing-documentation.html
deal.II/doc/documentation.html
deal.II/doc/doxygen/headers/distributed.h
deal.II/doc/doxygen/headers/glossary.h
deal.II/doc/doxygen/headers/vector_valued.h
deal.II/doc/external-libs/hdf5.html [new file with mode: 0644]
deal.II/doc/external-libs/hsl.html
deal.II/doc/external-libs/p4est.html
deal.II/doc/mail.html
deal.II/doc/news/7.1.0-vs-7.2.0.h [new file with mode: 0644]
deal.II/doc/news/changes.h
deal.II/doc/news/news.html
deal.II/doc/porting.html
deal.II/doc/publications/index.html
deal.II/doc/readme-petsc-trilinos.html
deal.II/doc/readme.html
deal.II/doc/screen.css
deal.II/examples/step-11/step-11.cc
deal.II/examples/step-13/step-13.cc
deal.II/examples/step-14/step-14.cc
deal.II/examples/step-15/step-15.cc
deal.II/examples/step-16/step-16.cc
deal.II/examples/step-17/doc/results.dox
deal.II/examples/step-17/step-17.cc
deal.II/examples/step-18/step-18.cc
deal.II/examples/step-20/step-20.cc
deal.II/examples/step-21/step-21.cc
deal.II/examples/step-22/step-22.cc
deal.II/examples/step-23/doc/intro.dox
deal.II/examples/step-23/step-23.cc
deal.II/examples/step-24/step-24.cc
deal.II/examples/step-25/step-25.cc
deal.II/examples/step-26/step-26.cc
deal.II/examples/step-27/step-27.cc
deal.II/examples/step-28/step-28.cc
deal.II/examples/step-29/step-29.cc
deal.II/examples/step-3/step-3.cc
deal.II/examples/step-31/step-31.cc
deal.II/examples/step-32/step-32.cc
deal.II/examples/step-33/step-33.cc
deal.II/examples/step-34/step-34.cc
deal.II/examples/step-35/step-35.cc
deal.II/examples/step-36/step-36.cc
deal.II/examples/step-37/step-37.cc
deal.II/examples/step-38/step-38.cc
deal.II/examples/step-39/output.reference.dat [new file with mode: 0644]
deal.II/examples/step-39/step-39.cc
deal.II/examples/step-4/step-4.cc
deal.II/examples/step-40/step-40.cc
deal.II/examples/step-41/Makefile
deal.II/examples/step-41/doc/intro.dox
deal.II/examples/step-41/step-41.cc
deal.II/examples/step-42/doc/intro-step-42.tex
deal.II/examples/step-42/step-42.cc
deal.II/examples/step-43/step-43.cc
deal.II/examples/step-44/step-44.cc
deal.II/examples/step-45/step-45.cc
deal.II/examples/step-46/step-46.cc
deal.II/examples/step-47/step-47.cc
deal.II/examples/step-48/step-48.cc
deal.II/examples/step-5/step-5.cc
deal.II/examples/step-6/step-6.cc
deal.II/examples/step-7/step-7.cc
deal.II/examples/step-8/step-8.cc
deal.II/examples/step-9/step-9.cc
deal.II/include/deal.II/base/data_out_base.h
deal.II/include/deal.II/base/geometry_info.h
deal.II/include/deal.II/base/numbers.h
deal.II/include/deal.II/base/parameter_handler.h
deal.II/include/deal.II/base/table.h
deal.II/include/deal.II/base/table_handler.h
deal.II/include/deal.II/base/table_indices.h
deal.II/include/deal.II/base/tensor.h
deal.II/include/deal.II/base/tensor_base.h
deal.II/include/deal.II/base/thread_management.h
deal.II/include/deal.II/base/types.h
deal.II/include/deal.II/distributed/tria.h
deal.II/include/deal.II/dofs/dof_accessor.templates.h
deal.II/include/deal.II/dofs/dof_handler.h
deal.II/include/deal.II/dofs/dof_handler_policy.h
deal.II/include/deal.II/dofs/dof_levels.h
deal.II/include/deal.II/dofs/dof_renumbering.h
deal.II/include/deal.II/dofs/dof_tools.h
deal.II/include/deal.II/dofs/function_map.h
deal.II/include/deal.II/fe/fe.h
deal.II/include/deal.II/fe/fe_base.h
deal.II/include/deal.II/fe/mapping_q1.h
deal.II/include/deal.II/grid/filtered_iterator.h
deal.II/include/deal.II/grid/grid_generator.h
deal.II/include/deal.II/grid/grid_out.h
deal.II/include/deal.II/grid/grid_tools.h
deal.II/include/deal.II/grid/tria.h
deal.II/include/deal.II/grid/tria_accessor.h
deal.II/include/deal.II/grid/tria_accessor.templates.h
deal.II/include/deal.II/grid/tria_iterator.h
deal.II/include/deal.II/grid/tria_levels.h
deal.II/include/deal.II/grid/tria_objects.h
deal.II/include/deal.II/hp/dof_handler.h
deal.II/include/deal.II/hp/dof_levels.h
deal.II/include/deal.II/hp/fe_collection.h
deal.II/include/deal.II/integrators/advection.h [new file with mode: 0644]
deal.II/include/deal.II/integrators/divergence.h
deal.II/include/deal.II/integrators/elasticity.h
deal.II/include/deal.II/integrators/l2.h
deal.II/include/deal.II/integrators/laplace.h
deal.II/include/deal.II/integrators/local_integrators.h
deal.II/include/deal.II/integrators/maxwell.h
deal.II/include/deal.II/integrators/patches.h
deal.II/include/deal.II/lac/block_list.h
deal.II/include/deal.II/lac/block_matrix_base.h
deal.II/include/deal.II/lac/block_vector.h
deal.II/include/deal.II/lac/block_vector_base.h
deal.II/include/deal.II/lac/constraint_matrix.h
deal.II/include/deal.II/lac/constraint_matrix.templates.h
deal.II/include/deal.II/lac/full_matrix.h
deal.II/include/deal.II/lac/full_matrix.templates.h
deal.II/include/deal.II/lac/parallel_vector.h
deal.II/include/deal.II/lac/petsc_matrix_base.h
deal.II/include/deal.II/lac/petsc_parallel_vector.h
deal.II/include/deal.II/lac/petsc_solver.h
deal.II/include/deal.II/lac/petsc_vector.h
deal.II/include/deal.II/lac/petsc_vector_base.h
deal.II/include/deal.II/lac/precondition_block.templates.h
deal.II/include/deal.II/lac/sparsity_tools.h
deal.II/include/deal.II/lac/tridiagonal_matrix.h
deal.II/include/deal.II/lac/trilinos_block_sparse_matrix.h
deal.II/include/deal.II/lac/trilinos_block_vector.h
deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h [new file with mode: 0644]
deal.II/include/deal.II/lac/trilinos_sparse_matrix.h
deal.II/include/deal.II/lac/trilinos_vector.h
deal.II/include/deal.II/lac/trilinos_vector_base.h
deal.II/include/deal.II/lac/vector.h
deal.II/include/deal.II/matrix_free/fe_evaluation.h
deal.II/include/deal.II/matrix_free/matrix_free.h
deal.II/include/deal.II/meshworker/output.h
deal.II/include/deal.II/multigrid/mg_dof_handler.h
deal.II/include/deal.II/multigrid/mg_transfer.h
deal.II/include/deal.II/multigrid/mg_transfer.templates.h
deal.II/include/deal.II/multigrid/mg_transfer_block.h
deal.II/include/deal.II/multigrid/mg_transfer_component.h
deal.II/include/deal.II/numerics/derivative_approximation.h
deal.II/include/deal.II/numerics/error_estimator.h
deal.II/include/deal.II/numerics/matrices.h
deal.II/include/deal.II/numerics/matrix_tools.h [new file with mode: 0644]
deal.II/include/deal.II/numerics/time_dependent.h
deal.II/include/deal.II/numerics/vector_tools.h [new file with mode: 0644]
deal.II/include/deal.II/numerics/vector_tools.templates.h [new file with mode: 0644]
deal.II/include/deal.II/numerics/vectors.h
deal.II/include/deal.II/numerics/vectors.templates.h
deal.II/lib/Makefile
deal.II/source/base/auto_derivative_function.cc
deal.II/source/base/data_out_base.cc
deal.II/source/base/geometry_info.cc
deal.II/source/base/logstream.cc
deal.II/source/base/parameter_handler.cc
deal.II/source/base/polynomial.cc
deal.II/source/base/quadrature_lib.cc
deal.II/source/base/table_handler.cc
deal.II/source/base/thread_management.cc
deal.II/source/base/utilities.cc
deal.II/source/distributed/solution_transfer.cc
deal.II/source/distributed/tria.cc
deal.II/source/dofs/dof_handler.cc
deal.II/source/dofs/dof_handler_policy.cc
deal.II/source/dofs/dof_levels.cc
deal.II/source/dofs/dof_renumbering.cc
deal.II/source/dofs/dof_renumbering.inst.in
deal.II/source/dofs/dof_tools.cc
deal.II/source/dofs/dof_tools.inst.in
deal.II/source/fe/fe.cc
deal.II/source/fe/fe_abf.cc
deal.II/source/fe/fe_nedelec.cc
deal.II/source/fe/fe_nothing.cc
deal.II/source/fe/fe_q.cc
deal.II/source/fe/fe_raviart_thomas.cc
deal.II/source/fe/fe_system.cc
deal.II/source/fe/fe_tools.cc
deal.II/source/fe/fe_values.cc
deal.II/source/fe/mapping_q1.cc
deal.II/source/grid/grid_generator.cc
deal.II/source/grid/grid_in.cc
deal.II/source/grid/grid_out.cc
deal.II/source/grid/grid_tools.cc
deal.II/source/grid/grid_tools.inst.in
deal.II/source/grid/tria.cc
deal.II/source/grid/tria_accessor.cc
deal.II/source/grid/tria_boundary_lib.cc
deal.II/source/hp/dof_handler.cc
deal.II/source/hp/dof_levels.cc
deal.II/source/lac/constraint_matrix.cc
deal.II/source/lac/operator.inst.in
deal.II/source/lac/petsc_matrix_base.cc
deal.II/source/lac/petsc_parallel_block_sparse_matrix.cc
deal.II/source/lac/petsc_precondition.cc
deal.II/source/lac/petsc_solver.cc
deal.II/source/lac/petsc_vector_base.cc
deal.II/source/lac/sparsity_tools.cc
deal.II/source/lac/trilinos_block_sparse_matrix.cc
deal.II/source/lac/trilinos_block_vector.cc
deal.II/source/lac/trilinos_sparse_matrix.cc
deal.II/source/lac/trilinos_vector.cc
deal.II/source/lac/trilinos_vector_base.cc
deal.II/source/multigrid/mg_dof_handler.cc
deal.II/source/multigrid/mg_tools.cc
deal.II/source/numerics/derivative_approximation.cc
deal.II/source/numerics/dof_output_operator.inst.in
deal.II/source/numerics/error_estimator.cc
deal.II/source/numerics/error_estimator.inst.in
deal.II/source/numerics/matrix_tools.cc [moved from deal.II/source/numerics/matrices.cc with 99% similarity]
deal.II/source/numerics/matrix_tools.inst.in [moved from deal.II/source/numerics/matrices.inst.in with 100% similarity]
deal.II/source/numerics/mesh_worker_vector_selector.inst.in
deal.II/source/numerics/point_value_history.cc
deal.II/source/numerics/time_dependent.cc
deal.II/source/numerics/vector_tools.cc [moved from deal.II/source/numerics/vectors.cc with 94% similarity]
deal.II/source/numerics/vector_tools.inst.in [moved from deal.II/source/numerics/vectors.inst.in with 97% similarity]
tests/Makefile
tests/Makefile.rules
tests/all-headers/Makefile
tests/aniso/solution_transfer.cc
tests/base/data_out_base/cmp/generic
tests/base/data_out_base_pvtu/cmp/generic
tests/base/data_out_reader_01/cmp/generic
tests/base/table_handler_07.cc [new file with mode: 0644]
tests/base/table_handler_07/cmp/generic [new file with mode: 0644]
tests/base/table_handler_08.cc [new file with mode: 0644]
tests/base/table_handler_08/cmp/generic [new file with mode: 0644]
tests/base/table_handler_09.cc [new file with mode: 0644]
tests/base/table_handler_09/cmp/generic [new file with mode: 0644]
tests/base/tensor_05.cc
tests/base/tensor_07.cc [new file with mode: 0644]
tests/base/tensor_07/cmp/generic [new file with mode: 0644]
tests/base/tensor_08.cc [new file with mode: 0644]
tests/base/tensor_08/cmp/generic [new file with mode: 0644]
tests/benchmarks/spec2006-447.dealII.cc
tests/bits/anna_4.cc
tests/bits/anna_6.cc
tests/bits/apply_boundary_values_01.cc
tests/bits/apply_boundary_values_02.cc
tests/bits/block_sparse_matrix_1.cc
tests/bits/christian_1.cc
tests/bits/data_out_01/cmp/generic
tests/bits/data_out_02/cmp/generic
tests/bits/data_out_curved_cells.cc
tests/bits/data_out_faces_01/cmp/generic
tests/bits/data_out_faces_02/cmp/generic
tests/bits/data_out_rotation_01/cmp/generic
tests/bits/data_out_rotation_02/cmp/generic
tests/bits/data_out_stack_01/cmp/generic
tests/bits/data_out_stack_02/cmp/generic
tests/bits/denis_1.cc
tests/bits/dof_tools_03.cc
tests/bits/dof_tools_03/cmp/generic
tests/bits/dof_tools_05.cc
tests/bits/dof_tools_09.cc
tests/bits/dof_tools_14.cc
tests/bits/dof_tools_16a.cc
tests/bits/dof_tools_16b.cc
tests/bits/dof_tools_16b_x.cc
tests/bits/dof_tools_16c.cc
tests/bits/dof_tools_16d.cc
tests/bits/dof_tools_16d_x.cc
tests/bits/dof_tools_19.cc
tests/bits/dof_tools_20.cc
tests/bits/dof_tools_21.cc
tests/bits/error_estimator_01.cc
tests/bits/error_estimator_02.cc
tests/bits/face_orientation_and_fe_nedelec_01.cc
tests/bits/face_orientation_and_fe_q_01.cc
tests/bits/face_orientation_and_fe_q_02.cc
tests/bits/face_orientation_crash.cc
tests/bits/fe_field_function_01.cc
tests/bits/fe_field_function_01_vector.cc
tests/bits/fe_field_function_02.cc
tests/bits/fe_field_function_02_vector.cc
tests/bits/fe_field_function_03.cc
tests/bits/fe_field_function_03_vector.cc
tests/bits/fe_field_function_04.cc
tests/bits/fe_field_function_04_vector.cc
tests/bits/fe_field_function_05.cc
tests/bits/fe_field_function_05_vector.cc
tests/bits/fe_field_function_06_vector.cc
tests/bits/fe_field_function_07_vector.cc
tests/bits/fe_field_function_08_vector.cc
tests/bits/fe_q_constraints.cc
tests/bits/fe_tools_12.cc
tests/bits/fe_tools_12/cmp/generic
tests/bits/gerold_1.cc
tests/bits/get_boundary_indicators_1d.cc
tests/bits/grid_generator_03.cc
tests/bits/joa_1.cc
tests/bits/make_boundary_constraints_01.cc
tests/bits/mapping_q1_eulerian_01.cc
tests/bits/mapping_q_eulerian_01.cc
tests/bits/mapping_q_eulerian_02.cc
tests/bits/mapping_q_eulerian_03.cc
tests/bits/mesh_3d_12.cc
tests/bits/mesh_3d_22.cc
tests/bits/mesh_3d_23.cc
tests/bits/mesh_3d_24.cc
tests/bits/mesh_3d_25.cc
tests/bits/mesh_3d_26.cc
tests/bits/point_difference_01.cc
tests/bits/point_difference_02.cc
tests/bits/point_value_01.cc
tests/bits/point_value_02.cc
tests/bits/point_value_hp_01.cc
tests/bits/point_value_hp_02.cc
tests/bits/rt_2.cc
tests/bits/solution_transfer.cc
tests/bits/step-11.cc
tests/bits/step-13.cc
tests/bits/step-14.cc
tests/bits/step-15.cc
tests/bits/step-16.cc
tests/bits/step-3.cc
tests/bits/step-4.cc
tests/bits/step-5.cc
tests/bits/step-6.cc
tests/bits/step-7.cc
tests/bits/step-8.cc
tests/codim_one/boundary_indicator_01.cc
tests/codim_one/data_out.cc
tests/codim_one/data_out_03.cc
tests/codim_one/error_estimator_01.cc
tests/codim_one/extract_boundary_mesh_00.cc
tests/codim_one/extract_boundary_mesh_04.cc
tests/codim_one/gradients.cc
tests/codim_one/gradients_1.cc
tests/codim_one/hanging_nodes_01.cc
tests/codim_one/hanging_nodes_02.cc
tests/codim_one/hanging_nodes_03.cc
tests/codim_one/interpolate_boundary_values_01.cc
tests/codim_one/interpolate_boundary_values_01_vector_valued.cc
tests/codim_one/interpolate_boundary_values_02.cc
tests/codim_one/interpolate_boundary_values_02_vector_valued.cc
tests/codim_one/interpolate_boundary_values_03.cc
tests/codim_one/interpolate_boundary_values_1d_closed_ring.cc
tests/codim_one/interpolation.cc
tests/codim_one/interpolation_2.cc
tests/codim_one/interpolation_3.cc
tests/codim_one/mean_value.cc
tests/codim_one/projection.cc
tests/codim_one/projection_dgp.cc
tests/codim_one/solution_transfer_01.cc
tests/codim_one/transform_01.cc
tests/deal.II/block_matrices.cc
tests/deal.II/boundaries.cc
tests/deal.II/constraints_block_01.cc [new file with mode: 0644]
tests/deal.II/constraints_block_01/cmp/generic [new file with mode: 0644]
tests/deal.II/constraints_hanging_nodes_bc.cc
tests/deal.II/constraints_local_to_global.cc
tests/deal.II/create_laplace_matrix_01.cc
tests/deal.II/create_laplace_matrix_01b.cc
tests/deal.II/create_laplace_matrix_02.cc
tests/deal.II/create_laplace_matrix_02b.cc
tests/deal.II/create_laplace_matrix_03.cc
tests/deal.II/create_laplace_matrix_03b.cc
tests/deal.II/create_laplace_matrix_04.cc
tests/deal.II/create_laplace_matrix_04b.cc
tests/deal.II/create_mass_matrix_01.cc
tests/deal.II/create_mass_matrix_01b.cc
tests/deal.II/create_mass_matrix_02.cc
tests/deal.II/create_mass_matrix_02b.cc
tests/deal.II/create_mass_matrix_03.cc
tests/deal.II/create_mass_matrix_03b.cc
tests/deal.II/create_mass_matrix_04.cc
tests/deal.II/create_mass_matrix_04b.cc
tests/deal.II/create_mass_matrix_05.cc
tests/deal.II/create_point_source.cc
tests/deal.II/create_point_source_hp.cc
tests/deal.II/data_out.cc
tests/deal.II/data_out_postprocessor_01.cc
tests/deal.II/data_out_postprocessor_scalar_01.cc
tests/deal.II/data_out_postprocessor_vector_01.cc
tests/deal.II/derivative_approximation.cc
tests/deal.II/derivative_approximation_2.cc
tests/deal.II/error_estimator.cc
tests/deal.II/error_estimator_01.cc
tests/deal.II/extract_dofs_by_component_01.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_01/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_01_hp.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_01_hp/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_02.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_02/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_02_hp.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_02_hp/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_03.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_03/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_04.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_04/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_05.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_05/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_05_hp.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_05_hp/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_06.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_06/cmp/generic [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_06_hp.cc [new file with mode: 0644]
tests/deal.II/extract_dofs_by_component_06_hp/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_04.cc
tests/deal.II/fe_values_view_09.cc
tests/deal.II/fe_values_view_09/cmp/generic
tests/deal.II/fe_values_view_10.cc
tests/deal.II/fe_values_view_10/cmp/generic
tests/deal.II/fe_values_view_10_single_01.cc
tests/deal.II/fe_values_view_10_single_01/cmp/generic
tests/deal.II/fe_values_view_10_single_02.cc
tests/deal.II/fe_values_view_10_single_02/cmp/generic
tests/deal.II/fe_values_view_10_single_03.cc
tests/deal.II/fe_values_view_10_single_03/cmp/generic
tests/deal.II/fe_values_view_15.cc
tests/deal.II/fe_values_view_15/cmp/generic
tests/deal.II/fe_values_view_16.cc
tests/deal.II/fe_values_view_16/cmp/generic
tests/deal.II/fe_values_view_18.cc
tests/deal.II/fe_values_view_18/cmp/generic
tests/deal.II/fe_values_view_21.cc
tests/deal.II/fe_values_view_22.cc
tests/deal.II/filtered_matrix.cc
tests/deal.II/inhomogeneous_constraints.cc
tests/deal.II/inhomogeneous_constraints_02.cc
tests/deal.II/inhomogeneous_constraints_03.cc
tests/deal.II/inhomogeneous_constraints_04.cc
tests/deal.II/inhomogeneous_constraints_block.cc
tests/deal.II/inhomogeneous_constraints_nonsymmetric.cc
tests/deal.II/inhomogeneous_constraints_vector.cc
tests/deal.II/interpolate_boundary_values_01.cc
tests/deal.II/interpolate_dgq_01.cc
tests/deal.II/interpolate_dgq_02.cc
tests/deal.II/interpolate_q_01.cc
tests/deal.II/interpolate_q_02.cc
tests/deal.II/interpolate_q_system_01.cc
tests/deal.II/interpolate_q_system_02.cc
tests/deal.II/matrices.cc
tests/deal.II/memory_consumption_01.cc
tests/deal.II/newton_01.cc
tests/deal.II/no_flux_01.cc
tests/deal.II/no_flux_02.cc
tests/deal.II/no_flux_03.cc
tests/deal.II/no_flux_04.cc
tests/deal.II/no_flux_05.cc
tests/deal.II/no_flux_06.cc
tests/deal.II/no_flux_07.cc
tests/deal.II/no_flux_08.cc
tests/deal.II/no_flux_09.cc
tests/deal.II/no_flux_10.cc
tests/deal.II/no_flux_hp_01.cc
tests/deal.II/no_flux_hp_02.cc
tests/deal.II/no_flux_hp_03.cc
tests/deal.II/no_flux_hp_04.cc
tests/deal.II/no_flux_hp_05.cc
tests/deal.II/project_01.cc
tests/deal.II/project_02.cc
tests/deal.II/project_boundary_rt_01.cc
tests/deal.II/project_bv_curl_conf.cc
tests/deal.II/project_bv_div_conf.cc
tests/deal.II/project_common.h
tests/deal.II/vectors_boundary_rhs_01.cc
tests/deal.II/vectors_boundary_rhs_02.cc
tests/deal.II/vectors_boundary_rhs_03.cc
tests/deal.II/vectors_point_source_01.cc
tests/deal.II/vectors_rhs_01.cc
tests/deal.II/vectors_rhs_03.cc
tests/deal.II/vertex_as_face_08.cc
tests/deal.II/vertex_as_face_10.cc
tests/distributed_grids/solution_transfer_02.cc
tests/distributed_grids/solution_transfer_03.cc
tests/fail/abf_approximation_01.cc
tests/fail/circular_01.cc
tests/fail/hp-step-14.cc
tests/fail/hp-step-15.cc
tests/fail/rt_crash_01.cc
tests/fail/rt_distorted_01.cc
tests/fail/rt_distorted_02.cc
tests/fail/vectors_boundary_rhs_hp_02.cc
tests/fail/vectors_rhs_hp_02.cc
tests/fe/abf_01.cc
tests/fe/deformed_projection.h
tests/fe/fe_tools.cc
tests/fe/fe_tools/cmp/generic
tests/fe/fe_tools_test.cc
tests/fe/internals.cc
tests/fe/mapping_q_eulerian.cc
tests/fe/mass_matrix_arbitrary_nodes.cc
tests/fe/rt_8.cc
tests/fe/rt_8/cmp/generic
tests/fe/rt_9.cc
tests/fe/rt_approximation_01.cc
tests/fe/rt_normal_02.cc
tests/hp/compare_hp_vs_nonhp_01.cc
tests/hp/crash_06.cc
tests/hp/crash_07.cc
tests/hp/crash_08.cc
tests/hp/crash_09.cc
tests/hp/crash_11.cc
tests/hp/crash_12.cc
tests/hp/crash_16.cc
tests/hp/crash_17.cc
tests/hp/crash_17_compressed_set_sparsity.cc
tests/hp/crash_18.cc
tests/hp/crash_18_compressed_set_sparsity.cc
tests/hp/crash_19.cc
tests/hp/create_laplace_matrix_01.cc
tests/hp/create_laplace_matrix_01b.cc
tests/hp/create_laplace_matrix_02.cc
tests/hp/create_laplace_matrix_02b.cc
tests/hp/create_laplace_matrix_03.cc
tests/hp/create_laplace_matrix_03b.cc
tests/hp/create_laplace_matrix_04.cc
tests/hp/create_laplace_matrix_04b.cc
tests/hp/create_mass_matrix_01.cc
tests/hp/create_mass_matrix_01b.cc
tests/hp/create_mass_matrix_02.cc
tests/hp/create_mass_matrix_02b.cc
tests/hp/create_mass_matrix_03.cc
tests/hp/create_mass_matrix_03b.cc
tests/hp/create_mass_matrix_04.cc
tests/hp/create_mass_matrix_04b.cc
tests/hp/create_mass_matrix_05.cc
tests/hp/create_rhs_01.cc
tests/hp/fe_nothing_08.cc
tests/hp/fe_nothing_09.cc
tests/hp/fe_nothing_11.cc
tests/hp/fe_nothing_12.cc
tests/hp/fe_nothing_13.cc
tests/hp/fe_nothing_14.cc
tests/hp/hp_constraints_common.h
tests/hp/hp_hanging_nodes_01.cc
tests/hp/hp_hanging_nodes_02.cc
tests/hp/integrate_difference.cc
tests/hp/integrate_difference_02.cc
tests/hp/interpolate_dgq_01.cc
tests/hp/interpolate_dgq_02.cc
tests/hp/interpolate_q_01.cc
tests/hp/interpolate_q_02.cc
tests/hp/interpolate_q_system_01.cc
tests/hp/interpolate_q_system_02.cc
tests/hp/matrices.cc
tests/hp/matrices_hp.cc
tests/hp/solution_transfer.cc
tests/hp/step-11.cc
tests/hp/step-11_compressed_set_sparsity.cc
tests/hp/step-13.cc
tests/hp/step-3.cc
tests/hp/step-3a.cc
tests/hp/step-3b.cc
tests/hp/step-3c.cc
tests/hp/step-4.cc
tests/hp/step-5.cc
tests/hp/step-6.cc
tests/hp/step-7.cc
tests/hp/step-8.cc
tests/hp/vectors_boundary_rhs_01.cc
tests/hp/vectors_boundary_rhs_02.cc
tests/hp/vectors_boundary_rhs_03.cc
tests/hp/vectors_boundary_rhs_hp_01.cc
tests/hp/vectors_boundary_rhs_hp_03.cc
tests/hp/vectors_point_source_01.cc
tests/hp/vectors_point_source_hp_01.cc
tests/hp/vectors_rhs_01.cc
tests/hp/vectors_rhs_02.cc
tests/hp/vectors_rhs_03.cc
tests/hp/vectors_rhs_hp_01.cc
tests/hp/vectors_rhs_hp_03.cc
tests/hsl/hsl_ma27_01.cc
tests/hsl/hsl_ma27_02.cc
tests/hsl/hsl_ma47_01.cc
tests/hsl/hsl_ma47_02.cc
tests/integrators/divergence_01.cc [new file with mode: 0644]
tests/integrators/divergence_01/cmp/generic [new file with mode: 0644]
tests/integrators/laplacian_01.cc
tests/integrators/laplacian_01/cmp/generic
tests/lac/constraints_c1.cc [new file with mode: 0644]
tests/lac/constraints_c1/cmp/generic [new file with mode: 0644]
tests/lac/constraints_c1_02.cc [new file with mode: 0644]
tests/lac/constraints_c1_02/cmp/generic [new file with mode: 0644]
tests/lac/identity_matrix_06.cc [new file with mode: 0644]
tests/lac/identity_matrix_06/cmp/generic [new file with mode: 0644]
tests/matrix_free/get_functions_common.h
tests/matrix_free/get_functions_multife.cc
tests/matrix_free/get_functions_multife2.cc
tests/matrix_free/get_functions_q_hierarchical.cc
tests/matrix_free/get_values_plain.cc
tests/matrix_free/integrate_functions.cc
tests/matrix_free/integrate_functions_multife.cc
tests/matrix_free/integrate_functions_multife2.cc
tests/matrix_free/matrix_vector_common.h
tests/matrix_free/matrix_vector_curl.cc
tests/matrix_free/matrix_vector_div.cc
tests/matrix_free/matrix_vector_stokes.cc
tests/matrix_free/matrix_vector_stokes_noflux.cc
tests/matrix_free/quadrature_points.cc
tests/mesh_converter/Makefile
tests/metis/metis_01/cmp/generic
tests/metis/metis_02/cmp/generic
tests/metis/metis_03/cmp/generic
tests/mpi/collective_02.cc
tests/mpi/collective_02/ncpu_1/cmp/generic
tests/mpi/collective_02/ncpu_10/cmp/generic
tests/mpi/collective_02/ncpu_4/cmp/generic
tests/mpi/collective_03.cc
tests/mpi/collective_03/ncpu_1/cmp/generic
tests/mpi/collective_03/ncpu_10/cmp/generic
tests/mpi/collective_03/ncpu_4/cmp/generic
tests/mpi/compute_mean_value.cc
tests/mpi/constraint_matrix_trilinos_bug.cc
tests/mpi/integrate_difference.cc
tests/mpi/interpolate_01.cc
tests/mpi/interpolate_02.cc
tests/mpi/interpolate_03.cc
tests/mpi/interpolate_03/ncpu_10/cmp/generic
tests/mpi/interpolate_03/ncpu_4/cmp/generic
tests/mpi/matrix_free_01.cc
tests/mpi/matrix_free_02.cc
tests/mpi/matrix_free_03.cc
tests/mpi/no_flux_constraints.cc
tests/mpi/no_flux_constraints_02.cc
tests/mpi/no_flux_constraints_03.cc
tests/mpi/no_flux_constraints_03/ncpu_1/cmp/generic
tests/mpi/no_flux_constraints_03/ncpu_9/cmp/generic
tests/mpi/p4est_2d_constraintmatrix_03.cc
tests/mpi/p4est_2d_constraintmatrix_04.cc
tests/mpi/p4est_2d_constraintmatrix_05.cc
tests/mpi/p4est_3d_constraintmatrix_03.cc
tests/mpi/parallel_vector_03.cc
tests/mpi/solution_transfer_01.cc
tests/mpi/trilinos_01.cc [new file with mode: 0644]
tests/mpi/trilinos_01/ncpu_10/cmp/generic [new file with mode: 0644]
tests/mpi/trilinos_01/ncpu_4/cmp/generic [new file with mode: 0644]
tests/mpi/trilinos_02.cc [new file with mode: 0644]
tests/mpi/trilinos_02/ncpu_10/cmp/generic [new file with mode: 0644]
tests/mpi/trilinos_02/ncpu_4/cmp/generic [new file with mode: 0644]
tests/multigrid/mg_renumbered_01.cc
tests/multigrid/mg_renumbered_02.cc
tests/multigrid/mg_renumbered_03.cc
tests/multigrid/step-16.cc
tests/petsc/vector_wrap_01.cc
tests/serialization/dof_handler_01.cc
tests/serialization/triangulation_01.cc
tests/serialization/triangulation_02.cc
tests/umfpack/umfpack_01.cc
tests/umfpack/umfpack_02.cc
tests/umfpack/umfpack_03.cc
tests/umfpack/umfpack_04.cc
tests/umfpack/umfpack_07.cc
tests/umfpack/umfpack_08.cc
tests/umfpack/umfpack_09.cc
tests/umfpack/umfpack_10.cc

index ccbdaec7bdaaf207fb049be60efa8eb2b068a765..97e5b93c7ce6601120c1430c20e74b5cee283df5 100644 (file)
@@ -435,8 +435,31 @@ AC_DEFUN(DEAL_II_SET_CXX_FLAGS, dnl
     dnl BOOST uses long long, so don't warn about this
     CXXFLAGSG="$CXXFLAGSG -Wno-long-long"
 
-    dnl See whether the gcc we use already has a flag for C++2011 features.
+    dnl Newer versions have a flag -Wunused-local-typedefs that, though in principle
+    dnl a good idea, triggers a lot in BOOST in various places. Unfortunately,
+    dnl this warning is included in -W/-Wall, so disable it if the compiler
+    dnl supports it.
+    CXXFLAGS="-Wunused-local-typedefs"
+    AC_MSG_CHECKING(whether the compiler supports the -Wunused-local-typedefs flag)
+    AC_TRY_COMPILE(
+          [
+          ],
+          [;],
+          [
+            AC_MSG_RESULT(yes)
+            CXXFLAGSG="$CXXFLAGSG -Wno-unused-local-typedefs"
+          ],
+          [
+            AC_MSG_RESULT(no)
+            dnl Nothing to do here then. We can't disable it if the
+           dnl flag doesn't exist
+          ])
+
+
+    dnl See whether the gcc we use already has a flag for C++2011 features
+    dnl and whether we can mark functions as deprecated with an attributed
     DEAL_II_CHECK_CXX1X
+    DEAL_II_CHECK_DEPRECATED
 
 
     dnl On some gcc 4.3 snapshots, a 'const' qualifier on a return type triggers a
@@ -977,8 +1000,12 @@ AC_DEFUN(DEAL_II_SET_CXX_FLAGS, dnl
           dnl       somewhere in BOOST with BOOST_ASSERT. I have no idea
           dnl       what happens here
           dnl #284: "NULL references not allowed"
-          CXXFLAGSG="$CXXFLAGSG -DDEBUG -g --display_error_number --diag_suppress 68 --diag_suppress 111 --diag_suppress 128 --diag_suppress 155 --diag_suppress 177 --diag_suppress 175 --diag_suppress 185 --diag_suppress 236 --diag_suppress 284"
-          CXXFLAGSO="$CXXFLAGSO -fast -O2 --display_error_number --diag_suppress 68 --diag_suppress 111 --diag_suppress 128 --diag_suppress 155 --diag_suppress 177 --diag_suppress 175 --diag_suppress 185 --diag_suppress 236 --diag_suppress 284"
+          dnl #497: "declaration of "dim" hides template parameter" (while
+         dnl       theoretically useful, pgCC unfortunately gets this one
+         dnl       wrong on legitimate code where no such parameter is
+         dnl       hidden, see the email by ayaydemir on 9/3/2012)
+          CXXFLAGSG="$CXXFLAGSG -DDEBUG -g --display_error_number --diag_suppress 68 --diag_suppress 111 --diag_suppress 128 --diag_suppress 155 --diag_suppress 177 --diag_suppress 175 --diag_suppress 185 --diag_suppress 236 --diag_suppress 284 --diag_suppress 497"
+          CXXFLAGSO="$CXXFLAGSO -fast -O2 --display_error_number --diag_suppress 68 --diag_suppress 111 --diag_suppress 128 --diag_suppress 155 --diag_suppress 177 --diag_suppress 175 --diag_suppress 185 --diag_suppress 236 --diag_suppress 284 --diag_suppress 497"
           CXXFLAGSPIC="-Kpic"
 
           dnl pgCC can't (as of writing this, with version 12.5 in mid-2012) compile a part of BOOST.
@@ -1156,7 +1183,7 @@ dnl -------------------------------------------------------------
 dnl Given the command line flag specified as argument to this macro,
 dnl test whether all components that we need from the C++1X
 dnl standard are actually available. If so, add the flag to
-dnl CXXFLAGS.g and CXXFLAGS.o, and set a flag in config.h
+dnl CXXFLAGSG and CXXFLAGSO, and set a flag in config.h
 dnl
 dnl Usage: DEAL_II_CHECK_CXX1X_COMPONENTS(cxxflag)
 dnl
@@ -1336,6 +1363,74 @@ AC_DEFUN(DEAL_II_CHECK_CXX1X_COMPONENTS, dnl
 ])
 
 
+
+dnl -------------------------------------------------------------
+dnl See if the compiler understands the attribute to mark functions
+dnl as deprecated.
+dnl
+dnl Usage: DEAL_II_CHECK_DEPRECATED
+dnl
+dnl -------------------------------------------------------------
+AC_DEFUN(DEAL_II_CHECK_DEPRECATED, dnl
+[
+  AC_MSG_CHECKING(whether compiler has attributes to deprecate functions)
+
+
+  OLD_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS=""
+
+  dnl First see if the following compiles without error (it should
+  dnl produce a warning but we don't care about this
+  AC_TRY_COMPILE(
+     [
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+     ],
+     [;],
+     [
+       test1=yes
+     ],
+     [
+       test1=no
+     ])
+
+  dnl Now try this again with -Werror. It should now fail
+  CXXFLAGS=-Werror
+  AC_TRY_COMPILE(
+     [
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+     ],
+     [;],
+     [
+       test2=yes
+     ],
+     [
+       test2=no
+     ])
+  CXXFLAGS="${OLD_CXXFLAGS}"
+
+  if test "$test1$test2" = "yesno" ; then
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(DEAL_II_DEPRECATED, [__attribute__((deprecated))],
+              [If the compiler supports this, then this variable is
+              defined to a string that when written after a function
+              name makes the compiler emit a warning whenever this
+              function is used somewhere that its use is deprecated.])
+  else
+    AC_MSG_RESULT(no)
+    AC_DEFINE(DEAL_II_DEPRECATED, [],
+              [If the compiler supports this, then this variable is
+              defined to a string that when written after a function
+              name makes the compiler emit a warning whenever this
+              function is used somewhere that its use is deprecated.])
+  fi
+])
+
+
+
 dnl -------------------------------------------------------------
 dnl Determine the C compiler in use. Return the name and possibly
 dnl version of this compiler in CC_VERSION. This function is almost
@@ -1680,7 +1775,7 @@ AC_DEFUN(DEAL_II_SET_CC_FLAGS, dnl
 
       clang)
           CFLAGS="$CFLAGS -g"
-          CFLAGSO="$CFLAGS -fast -O2"
+          CFLAGSO="$CFLAGS -O2"
           CFLAGSPIC="-fPIC"
           ;;
 
@@ -1978,6 +2073,7 @@ AC_DEFUN(DEAL_II_CHECK_DYNAMIC_CAST_BUG,
   AC_MSG_CHECKING(for dynamic_cast problem with shared libs)
 
   if (cd contrib/config/tests/darwin-dynamic-cast ; \
+      echo $CXX > compile_line; \
       $CXX -dynamiclib BaseClass.cpp -o libDynamicCastTestLib.dylib ; \
       $CXX -L. -lDynamicCastTestLib main.cc -o main ; \
       ./main) ; then
@@ -1987,9 +2083,11 @@ AC_DEFUN(DEAL_II_CHECK_DYNAMIC_CAST_BUG,
     AC_DEFINE(DEAL_II_HAVE_DARWIN_DYNACAST_BUG, 1,
               [Defined if the compiler has a bug with dynamic casting
                and dynamic libraries])
-    CXXFLAGSG="$CXXFLAGSG -mmacosx-version-min=10.4"
-    CXXFLAGSO="$CXXFLAGSO -mmacosx-version-min=10.4"
-    LDFLAGS="$LDFLAGS -mmacosx-version-min=10.4"
+    if(test "`sw_vers -productVersion`" != "10.8");then
+       CXXFLAGSG="$CXXFLAGSG -mmacosx-version-min=10.4"
+       CXXFLAGSO="$CXXFLAGSO -mmacosx-version-min=10.4"
+       LDFLAGS="$LDFLAGS -mmacosx-version-min=10.4"
+    fi
   fi
   rm -f contrib/config/tests/darwin-dynamic-cast/libDynamicCastTestLib.dylib
   rm -f contrib/config/tests/darwin-dynamic-cast/main.o
@@ -5602,12 +5700,6 @@ AC_DEFUN(DEAL_II_CONFIGURE_PETSC_ARCH, dnl
     dnl from time-to-time; so make sure that what was specified is
     dnl actually correct.
     case "${DEAL_II_PETSC_VERSION_MAJOR}.${DEAL_II_PETSC_VERSION_MINOR}.${DEAL_II_PETSC_VERSION_SUBMINOR}" in
-      2.3*) dnl
-        if test ! -d $DEAL_II_PETSC_DIR/lib/$DEAL_II_PETSC_ARCH \
-           ; then
-          AC_MSG_ERROR([PETSc has not been compiled for the architecture specified with --with-petsc-arch])
-        fi
-        ;;
       3.*) dnl
         if test ! -d $DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/lib \
            ; then
@@ -5683,18 +5775,6 @@ AC_DEFUN(DEAL_II_CHECK_PETSC_MPI_CONSISTENCY, dnl
   dnl
   dnl Like always, we have to cake care of version control!
     case "${DEAL_II_PETSC_VERSION_MAJOR}.${DEAL_II_PETSC_VERSION_MINOR}.${DEAL_II_PETSC_VERSION_SUBMINOR}" in
-      2.3.*) dnl
-        AC_TRY_COMPILE(
-        [#include "$DEAL_II_PETSC_DIR/bmake/$DEAL_II_PETSC_ARCH/petscconf.h"
-        ],
-        [#ifdef PETSC_HAVE_MPIUNI
-           compile error;
-         #endif
-        ],
-        [AC_MSG_RESULT(yes)],
-        [AC_MSG_ERROR([PETSc was not built for MPI, but deal.II is!]
-        )])
-      ;;
       3.*) dnl
         AC_TRY_COMPILE(
         [#include "$DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/include/petscconf.h"
@@ -5713,18 +5793,6 @@ AC_DEFUN(DEAL_II_CHECK_PETSC_MPI_CONSISTENCY, dnl
     esac
   else
     case "${DEAL_II_PETSC_VERSION_MAJOR}.${DEAL_II_PETSC_VERSION_MINOR}.${DEAL_II_PETSC_VERSION_SUBMINOR}" in
-      2.3*) dnl
-        AC_TRY_COMPILE(
-        [#include "$DEAL_II_PETSC_DIR/bmake/$DEAL_II_PETSC_ARCH/petscconf.h"
-        ],
-        [#ifndef PETSC_HAVE_MPIUNI
-           compile error;
-         #endif
-        ],
-        [AC_MSG_RESULT(yes)],
-        [AC_MSG_ERROR([PETSc was built for MPI, but deal.II is not!]
-        )])
-      ;;
       3.*) dnl
         AC_TRY_COMPILE(
         [#include "$DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/include/petscconf.h"
@@ -5757,11 +5825,6 @@ AC_DEFUN(DEAL_II_CONFIGURE_PETSC_MPIUNI_LIB, dnl
 [
   AC_MSG_CHECKING([for PETSc libmpiuni library])
   case "${DEAL_II_PETSC_VERSION_MAJOR}.${DEAL_II_PETSC_VERSION_MINOR}.${DEAL_II_PETSC_VERSION_SUBMINOR}" in
-    2.3*) dnl
-      if test -f $DEAL_II_PETSC_DIR/lib/$DEAL_II_PETSC_ARCH/libmpiuni.a ; then
-        DEAL_II_PETSC_MPIUNI_LIB="$DEAL_II_PETSC_DIR/lib/$DEAL_II_PETSC_ARCH/libmpiuni.a"
-      fi
-      ;;
     3.*) dnl
       if test -f $DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/lib/libmpiuni.a ; then
         DEAL_II_PETSC_MPIUNI_LIB="$DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/lib/libmpiuni.a"
@@ -5793,7 +5856,7 @@ dnl ------------------------------------------------------------
 AC_DEFUN(DEAL_II_CONFIGURE_PETSC_COMPLEX, dnl
 [
   case "${DEAL_II_PETSC_VERSION_MAJOR}.${DEAL_II_PETSC_VERSION_MINOR}.${DEAL_II_PETSC_VERSION_SUBMINOR}" in
-    3.1*)
+    3.3*)
       AC_MSG_CHECKING([for PETSc scalar complex])
       DEAL_II_PETSC_COMPLEX=`cat $DEAL_II_PETSC_DIR/$DEAL_II_PETSC_ARCH/include/petscconf.h \
                                | grep "#define PETSC_USE_COMPLEX" \
@@ -6550,6 +6613,252 @@ AC_DEFUN(DEAL_II_CHECK_TRILINOS_HEADER_FILES, dnl
   CXXFLAGS="${OLD_CXXFLAGS}"
 ])
 
+dnl ===========================================================================
+dnl        http://www.gnu.org/software/autoconf-archive/ax_lib_hdf5.html
+dnl ===========================================================================
+dnl
+dnl SYNOPSIS
+dnl
+dnl   AX_LIB_HDF5([serial/parallel])
+dnl
+dnl DESCRIPTION
+dnl
+dnl   This macro provides tests of the availability of HDF5 library.
+dnl
+dnl   The optional macro argument should be either 'serial' or 'parallel'. The
+dnl   former only looks for serial HDF5 installations via h5cc. The latter
+dnl   only looks for parallel HDF5 installations via h5pcc. If the optional
+dnl   argument is omitted, serial installations will be preferred over
+dnl   parallel ones.
+dnl
+dnl   The macro adds a --with-hdf5 option accepting one of three values:
+dnl
+dnl     no   - do not check for the HDF5 library.
+dnl     yes  - do check for HDF5 library in standard locations.
+dnl     path - complete path to where lib/libhdf5* libraries and
+dnl            include/H5* include files reside.
+dnl
+dnl   If HDF5 is successfully found, this macro calls
+dnl
+dnl     AC_SUBST(DEAL_II_HDF5_VERSION)
+dnl     AC_SUBST(DEAL_II_HDF5_CFLAGS)
+dnl     AC_SUBST(DEAL_II_HDF5_CPPFLAGS)
+dnl     AC_SUBST(DEAL_II_HDF5_LDFLAGS)
+dnl     AC_SUBST(DEAL_II_HDF5_INCDIR)
+dnl     AC_DEFINE(DEAL_II_HAVE_HDF5)
+dnl
+dnl   and sets with_hdf5="yes".
+dnl
+dnl   If HDF5 is disabled or not found, this macros sets with_hdf5="no".
+dnl
+dnl   Your configuration script can test $with_hdf to take any further
+dnl   actions. HDF5_{C,CPP,LD}FLAGS may be used when building with C or C++.
+dnl
+dnl LICENSE
+dnl
+dnl   Copyright (c) 2009 Timothy Brown <tbrown@freeshell.org>
+dnl   Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@gmail.com>
+dnl
+dnl   Copying and distribution of this file, with or without modification, are
+dnl   permitted in any medium without royalty provided the copyright notice
+dnl   and this notice are preserved. This file is offered as-is, without any
+dnl   warranty.
+
+AC_DEFUN(DEAL_II_CONFIGURE_HDF5, dnl
+[
+
+AC_REQUIRE([AC_PROG_SED])
+AC_REQUIRE([AC_PROG_AWK])
+AC_REQUIRE([AC_PROG_GREP])
+
+dnl Add a default --with-hdf5 configuration option.
+AC_ARG_WITH([hdf5],
+  AS_HELP_STRING(
+    [--with-hdf5=[yes/no/PATH]],
+    m4_case(m4_normalize([$1]),
+            [serial],   [location of h5cc for serial HDF5 configuration],
+            [parallel], [location of h5pcc for parallel HDF5 configuration],
+            [location of h5cc or h5pcc for HDF5 configuration])
+  ),
+  [if test "$withval" = "no"; then
+     with_hdf5="no"
+   elif test "$withval" = "yes"; then
+     with_hdf5="yes"
+     warn_if_cannot_find_hdf5="yes"
+   elif test -z "$withval"; then
+     with_hdf5="yes"
+     H5CC="$withval"
+   else
+     warn_if_cannot_find_hdf5="yes"
+     with_hdf5="yes"
+     H5CC="$withval"
+   fi],
+   [with_hdf5="yes"]
+)
+
+dnl Set defaults to blank
+USE_CONTRIB_HDF5=no
+DEAL_II_HDF5_VERSION=""
+DEAL_II_HDF5_CFLAGS=""
+DEAL_II_HDF5_CPPFLAGS=""
+DEAL_II_HDF5_LDFLAGS=""
+DEAL_II_HDF5_INCDIR=""
+
+dnl Try and find hdf5 compiler tools and options.
+if test "$with_hdf5" = "yes"; then
+    if test -z "$H5CC"; then
+        dnl Check to see if H5CC is in the path.
+        AC_PATH_PROGS(
+            [H5CC],
+            m4_case(m4_normalize([$1]),
+                [serial],   [h5cc],
+                [parallel], [h5pcc],
+                [h5cc h5pcc]),
+            [])
+    else
+        AC_MSG_CHECKING([Using provided HDF5 C wrapper])
+        AC_MSG_RESULT([$H5CC])
+    fi
+    AC_MSG_CHECKING([for HDF5 libraries])
+    if test ! -x "$H5CC"; then
+        AC_MSG_RESULT([no])
+        if test "$warn_if_cannot_find_hdf5" = "yes"; then
+            AC_MSG_WARN(m4_case(m4_normalize([$1]),
+                [serial],  [
+Unable to locate serial HDF5 compilation helper script 'h5cc'.
+Please specify --with-hdf5=<LOCATION> as the full path to h5cc.
+HDF5 support is being disabled (equivalent to --with-hdf5=no).
+],                [parallel],[
+Unable to locate parallel HDF5 compilation helper script 'h5pcc'.
+Please specify --with-hdf5=<LOCATION> as the full path to h5pcc.
+HDF5 support is being disabled (equivalent to --with-hdf5=no).
+],                [
+Unable to locate HDF5 compilation helper scripts 'h5cc' or 'h5pcc'.
+Please specify --with-hdf5=<LOCATION> as the full path to h5cc or h5pcc.
+HDF5 support is being disabled (equivalent to --with-hdf5=no).
+]))
+        fi
+        with_hdf5="no"
+    else
+        dnl h5cc provides both AM_ and non-AM_ options
+        dnl depending on how it was compiled either one of
+        dnl these are empty. Lets roll them both into one.
+
+        dnl Look for "HDF5 Version: X.Y.Z"
+        DEAL_II_HDF5_VERSION=$(eval $H5CC -showconfig | grep 'HDF5 Version:' \
+            | $AWK '{print $[]3}')
+
+dnl A ideal situation would be where everything we needed was
+dnl in the AM_* variables. However most systems are not like this
+dnl and seem to have the values in the non-AM variables.
+dnl
+dnl We try the following to find the flags:
+dnl (1) Look for "NAME:" tags
+dnl (2) Look for "NAME/H5_NAME:" tags
+dnl (3) Look for "AM_NAME:" tags
+dnl
+        dnl (1)
+        dnl Look for "CFLAGS: "
+        DEAL_II_HDF5_CFLAGS=$(eval $H5CC -showconfig | grep '\bCFLAGS:'   \
+            | $AWK -F: '{print $[]2}')
+        dnl Look for "CPPFLAGS"
+        DEAL_II_HDF5_CPPFLAGS=$(eval $H5CC -showconfig | grep '\bCPPFLAGS:' \
+            | $AWK -F: '{print $[]2}')
+        dnl Look for "LD_FLAGS"
+        DEAL_II_HDF5_LDFLAGS=$(eval $H5CC -showconfig | grep '\bLDFLAGS:'   \
+            | $AWK -F: '{print $[]2}')
+
+        dnl (2)
+        dnl CFLAGS/H5_CFLAGS: .../....
+        dnl We could use $SED with something like the following
+        dnl 's/CFLAGS.*\/H5_CFLAGS.*[:]\(.*\)\/\(.*\)/\1/p'
+        if test -z "$DEAL_II_HDF5_CFLAGS"; then
+            DEAL_II_HDF5_CFLAGS=$(eval $H5CC -showconfig \
+                | $SED -n 's/CFLAGS.*[:]\(.*\)\/\(.*\)/\1/p')
+        fi
+        dnl Look for "CPPFLAGS"
+        if test -z "$DEAL_II_HDF5_CPPFLAGS"; then
+            DEAL_II_HDF5_CPPFLAGS=$(eval $H5CC -showconfig \
+                | $SED -n 's/CPPFLAGS.*[:]\(.*\)\/\(.*\)/\1/p')
+        fi
+        dnl Look for "LD_FLAGS"
+        if test -z "$DEAL_II_HDF5_LDFLAGS"; then
+            DEAL_II_HDF5_LDFLAGS=$(eval $H5CC -showconfig \
+                | $SED -n 's/LDFLAGS.*[:]\(.*\)\/\(.*\)/\1/p')
+        fi
+
+        dnl (3)
+        dnl Check to see if these are not empty strings. If so
+        dnl find the AM_ versions and use them.
+        if test -z "$DEAL_II_HDF5_CFLAGS"; then
+            DEAL_II_HDF5_CFLAGS=$(eval $H5CC -showconfig \
+                | grep '\bAM_CFLAGS:' | $AWK -F: '{print $[]2}')
+        fi
+        if test -z "$DEAL_II_HDF5_CPPFLAGS"; then
+            DEAL_II_HDF5_CPPFLAGS=$(eval $H5CC -showconfig \
+                | grep '\bAM_CPPFLAGS:' | $AWK -F: '{print $[]2}')
+        fi
+        if test -z "$DEAL_II_HDF5_LDFLAGS"; then
+            DEAL_II_HDF5_LDFLAGS=$(eval $H5CC -showconfig \
+                | grep '\bAM_LDFLAGS:' | $AWK -F: '{print $[]2}')
+        fi
+
+        dnl Frustratingly, the necessary -Idir,-Ldir still may not be found!
+        dnl Attempt to pry any more required include directories from wrapper.
+        for arg in `$H5CC -c -show`
+        do
+          case "$arg" in #(
+            -I*) echo $DEAL_II_HDF5_CPPFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \
+                  || DEAL_II_HDF5_CPPFLAGS="$arg $DEAL_II_HDF5_CPPFLAGS"
+              ;;
+          esac
+        done
+        for arg in `$H5CC -show`
+        do
+          case "$arg" in #(
+            -L*) echo $DEAL_II_HDF5_LDFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \
+                  || DEAL_II_HDF5_LDFLAGS="$arg $DEAL_II_HDF5_LDFLAGS"
+              ;;
+          esac
+        done
+
+        AC_MSG_RESULT([yes (version $[DEAL_II_HDF5_VERSION])])
+
+        dnl Look for any extra libraries also needed to link properly
+        EXTRA_LIBS=$(eval $H5CC -showconfig | grep 'Extra libraries:'\
+            | $AWK -F: '{print $[]2}')
+
+        dnl Look for HDF5's high level library
+        ax_lib_hdf5_save_LDFLAGS=$LDFLAGS
+        ax_lib_hdf5_save_LIBS=$LIBS
+        LDFLAGS=$DEAL_II_HDF5_LDFLAGS
+        AC_HAVE_LIBRARY([hdf5_hl],
+                        [DEAL_II_HDF5_LDFLAGS="$DEAL_II_HDF5_LDFLAGS -lhdf5_hl"],
+                        [],
+                        [-lhdf5 $EXTRA_LIBS])
+        LIBS=$ax_lib_hdf5_save_LIBS
+        LDFLAGS=$ax_lib_hdf5_save_LDFLAGS
+
+        dnl Add the HDF5 library itself
+        DEAL_II_HDF5_LDFLAGS="$DEAL_II_HDF5_LDFLAGS -lhdf5"
+
+        dnl Add any EXTRA_LIBS afterwards
+        if test "$EXTRA_LIBS"; then
+            DEAL_II_HDF5_LDFLAGS="$DEAL_II_HDF5_LDFLAGS $EXTRA_LIBS"
+        fi
+
+       dnl remove "-I" from cpp flags to get include path
+       DEAL_II_HDF5_INCDIR=$(eval echo $DEAL_II_HDF5_CPPFLAGS | cut -c 3-)
+
+        LDFLAGS="$LDFLAGS $DEAL_II_HDF5_LDFLAGS"
+        USE_CONTRIB_HDF5=yes
+       AC_DEFINE([DEAL_II_HAVE_HDF5], [1], [Defined if you have HDF5 support])
+    fi
+fi
+])
+
+
+
 
 
 dnl ------------------------------------------------------------
@@ -6729,68 +7038,61 @@ AC_DEFUN(DEAL_II_CONFIGURE_METIS, dnl
 
   AC_ARG_WITH(metis,
               [AS_HELP_STRING([--with-metis=/path/to/metis],
-              [Specify the path to the Metis installation, of which the include and library directories are   subdirs; use this if you want to override the METIS_DIR environment variable.])],
+              [Specify the path to the Metis installation, of which the include and library directories are subdirs; use this if you want to override the METIS_DIR environment variable.])],
      [
+        AC_MSG_CHECKING([for METIS library directory])
         USE_CONTRIB_METIS=yes
         DEAL_II_METIS_DIR="$withval"
         AC_MSG_RESULT($DEAL_II_METIS_DIR)
 
-        dnl Make sure that what was specified is actually correct
-        if test ! -d $DEAL_II_METIS_DIR/Lib ; then
+        dnl Make sure that what was specified is actually correct. The
+        dnl libraries could be in either $DEAL_II_METIS_DIR/lib (metis was
+        dnl make installed) or $DEAL_II_METIS_DIR/libmetis (metis was make
+        dnl only and PETSc).
+        if test ! -d $DEAL_II_METIS_DIR/lib \
+           && test ! -d $DEAL_II_METIS_DIR/libmetis ; then
           AC_MSG_ERROR([Path to Metis specified with --with-metis does not point to a complete Metis installation])
         fi
 
-        DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR"
+        dnl If lib is not found, we must have libraries in libmetis
+        dnl (which was found above).
+        if test -d $DEAL_II_METIS_DIR/lib ; then
+          DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR/lib"
+        else
+          DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR/libmetis"
+        fi
+
+        if test ! -d $DEAL_II_METIS_DIR/include ; then
+          AC_MSG_ERROR([Path to Metis specified with --with-metis does not point to a complete Metis installation])
+        fi
+
+        DEAL_II_METIS_INCDIR="$DEAL_II_METIS_DIR/include"
      ],
      [
         dnl Take something from the environment variables, if it is there
         if test "x$METIS_DIR" != "x" ; then
+          AC_MSG_CHECKING([for METIS from the environment])
           USE_CONTRIB_METIS=yes
           DEAL_II_METIS_DIR="$METIS_DIR"
           AC_MSG_RESULT($DEAL_II_METIS_DIR)
 
-          dnl Make sure that what this is actually correct
-          if test ! -d $DEAL_II_METIS_DIR/Lib ; then
+          dnl Make sure that what this is actually correct (see notes above).
+          if test ! -d $DEAL_II_METIS_DIR/lib \
+             && test ! -d $DEAL_II_METIS_DIR/libmetis ; then
             AC_MSG_ERROR([The path to Metis specified in the METIS_DIR environment variable does not point to a complete Metis installation])
           fi
-          DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR"
-        else
-          USE_CONTRIB_METIS=no
-          DEAL_II_METIS_DIR=""
-        fi
-     ])
 
-  AC_ARG_WITH(metis-libs,
-              [AS_HELP_STRING([--with-metis-libs=/path/to/metis],
-              [Specify the path to the METIS libraries; use this if you want to override the METIS_LIBDIR environment variable.])],
-     [
-        USE_CONTRIB_METIS=yes
-        DEAL_II_METIS_LIBDIR="$withval"
-        AC_MSG_RESULT($DEAL_II_METIS_LIBDIR)
+          if test -d $DEAL_II_METIS_DIR/lib ; then
+            DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR/lib"
+          else
+            DEAL_II_METIS_LIBDIR="$DEAL_II_METIS_DIR/libmetis"
+          fi
 
-        dnl Make sure that what was specified is actually correct
-        if test ! -d $DEAL_II_METIS_LIBDIR ; then
-          AC_MSG_ERROR([Path to Metis specified with --with-metis does not point to a complete Metis installation])
-        fi
-     ],
-     [
-        dnl Take something from the environment variables, if it is there
-        if test "x$METIS_LIBDIR" != "x" ; then
-          USE_CONTRIB_METIS=yes
-          DEAL_II_METIS_LIBDIR="$METIS_LIBDIR"
-          AC_MSG_RESULT($DEAL_II_METIS_LIBDIR)
+          DEAL_II_METIS_INCDIR="$DEAL_II_METIS_DIR/include"
 
-          dnl Make sure that what this is actually correct
-          if test ! -d $DEAL_II_METIS_LIBDIR ; then
-            AC_MSG_ERROR([The path to Metis specified in the METIS_DIR environment variable does not point to a complete Metis installation])
-          fi
         else
-          dnl Unless --with-metis has been set before, declare that METIS
-          dnl is not desired.
-          if test "x$USE_CONTRIB_METIS" != "xyes" ; then
-            USE_CONTRIB_METIS=no
-            DEAL_II_METIS_LIBDIR=""
-          fi
+          USE_CONTRIB_METIS=no
+          DEAL_II_METIS_DIR=""
         fi
      ])
 
@@ -6800,6 +7102,10 @@ AC_DEFUN(DEAL_II_CONFIGURE_METIS, dnl
                to be used])
     LDFLAGS="$LDFLAGS -L$DEAL_II_METIS_LIBDIR -lmetis"
 
+    if test "x$DEAL_II_LD_UNDERSTANDS_RPATH" = "xyes" ; then
+      LDFLAGS="$LDFLAGS $LD_PATH_OPTION$DEAL_II_METIS_LIBDIR"
+    fi
+
     dnl AC_MSG_CHECKING(for Metis version)
     dnl DEAL_II_METIS_VERSION=`cat $DEAL_II_METIS_DIR/VERSION`
     dnl AC_MSG_RESULT($DEAL_II_METIS_VERSION)
index 80928d3ba8ae29ed3ca861f314682b6181fa561b..159d16c66d83b74effc3e13406ccba5b5f4dd87b 100644 (file)
@@ -76,6 +76,13 @@ DEAL_II_TRILINOS_VERSION_MINOR    = @DEAL_II_TRILINOS_VERSION_MINOR@
 DEAL_II_TRILINOS_VERSION_SUBMINOR = @DEAL_II_TRILINOS_VERSION_SUBMINOR@
 DEAL_II_TRILINOS_LIBPREFIX = @DEAL_II_TRILINOS_LIBPREFIX@
 
+USE_CONTRIB_HDF5 = @USE_CONTRIB_HDF5@
+DEAL_II_HDF5_VERSION = @DEAL_II_HDF5_VERSION@
+DEAL_II_HDF5_CFLAGS = @DEAL_II_HDF5_CFLAGS@
+DEAL_II_HDF5_CPPFLAGS = @DEAL_II_HDF5_CPPFLAGS@
+DEAL_II_HDF5_LDFLAGS = @DEAL_II_HDF5_LDFLAGS@
+DEAL_II_HDF5_INCDIR = @DEAL_II_HDF5_INCDIR@
+
 USE_CONTRIB_BLAS   = @USE_CONTRIB_BLAS@
 USE_CONTRIB_LAPACK = @USE_CONTRIB_LAPACK@
 
@@ -90,7 +97,9 @@ DEAL_II_ARPACK_DIR  = @DEAL_II_ARPACK_DIR@
 DEAL_II_ARPACK_ARCH = @DEAL_II_ARPACK_ARCH@
 
 USE_CONTRIB_METIS    = @USE_CONTRIB_METIS@
+DEAL_II_METIS_DIR = @DEAL_II_METIS_DIR@
 DEAL_II_METIS_LIBDIR = @DEAL_II_METIS_LIBDIR@
+DEAL_II_METIS_INCDIR = @DEAL_II_METIS_INCDIR@
 
 USE_CONTRIB_HSL      = @USE_CONTRIB_HSL@
 USE_CONTRIB_UMFPACK  = @USE_CONTRIB_UMFPACK@
@@ -162,31 +171,20 @@ endif
 # we can link to directly. This avoids problems with recent versions
 # of gcc.
 ifeq ($(USE_CONTRIB_PETSC),yes)
-  ifeq ($(DEAL_II_PETSC_VERSION_MAJOR),2)
-    lib-contrib-petsc-path.g = $(DEAL_II_PETSC_DIR)/lib/$(DEAL_II_PETSC_ARCH)
-    lib-contrib-petsc-path.o = $(DEAL_II_PETSC_DIR)/lib/$(DEAL_II_PETSC_ARCH)
-  else
-    lib-contrib-petsc-path.g = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib
-    lib-contrib-petsc-path.o = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib
-  endif
+  lib-contrib-petsc-path.g = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib
+  lib-contrib-petsc-path.o = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib
 
   ifeq ($(enable-shared),yes)
-    # Starting with PETSc versions 2.3.*:
-    ifeq ($(DEAL_II_PETSC_VERSION_MAJOR),2)
-      lib-contrib-petsc.g = $(shell echo $(DEAL_II_PETSC_DIR)/lib/$(DEAL_II_PETSC_ARCH)/*$(lib-suffix))
-      lib-contrib-petsc.o = $(shell echo $(DEAL_II_PETSC_DIR)/lib/$(DEAL_II_PETSC_ARCH)/*$(lib-suffix))
+    # Starting with PETSc versions 3.0.0:
+    ifeq ($(DEAL_II_PETSC_VERSION_MAJOR)$(DEAL_II_PETSC_VERSION_MINOR),30)
+      lib-contrib-petsc.g = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/*$(lib-suffix))
+      lib-contrib-petsc.o = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/*$(lib-suffix))
     else
-      # which is the similar as for PETSc 3.0.0:
-      ifeq ($(DEAL_II_PETSC_VERSION_MAJOR)$(DEAL_II_PETSC_VERSION_MINOR),30)
-        lib-contrib-petsc.g = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/*$(lib-suffix))
-        lib-contrib-petsc.o = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/*$(lib-suffix))
-      else
-        # but after that (petsc-3.1++), we can use the simpler PETSc
-        # default "--with-single-library=1" like this:
-        lib-contrib-petsc.g = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/libpetsc$(lib-suffix))
-        lib-contrib-petsc.o = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/libpetsc$(lib-suffix))
-      endif
-    endif # if PETSC_VERSION
+      # but after that (petsc-3.1++), we can use the simpler PETSc
+      # default "--with-single-library=1" like this:
+      lib-contrib-petsc.g = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/libpetsc$(lib-suffix))
+      lib-contrib-petsc.o = $(shell echo $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/lib/libpetsc$(lib-suffix))
+    endif
   else
     # and finally this goes for static libraries
     lib-contrib-petsc.g = $(LIBDIR)/libpetscall.g$(lib-suffix)
@@ -200,7 +198,7 @@ endif
 
 # same for metis, except that there is only one library in that case
 ifeq ($(USE_CONTRIB_METIS),yes)
-  lib-contrib-metis = $(DEAL_II_METIS_LIBDIR)/libmetis.a
+  lib-contrib-metis = $(DEAL_II_METIS_LIBDIR)/libmetis$(lib-suffix)
 endif
 
 # List all trilinos libraries that we want to link with. These must be sorted
@@ -273,16 +271,15 @@ lib-deal2.g     = $(LIBDIR)/libdeal_II.g$(lib-suffix) \
 # environment variable, since the compiler will evaluate the value of
 # that anyway at compile time
 include-path-petsc           = $(DEAL_II_PETSC_DIR)/include
-ifeq ($(DEAL_II_PETSC_VERSION_MAJOR),2)
-  include-path-petsc-bmake   = $(DEAL_II_PETSC_DIR)/bmake/$(DEAL_II_PETSC_ARCH)
-else
-  include-path-petsc-bmake   = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/include
-endif
+include-path-petsc-bmake     = $(DEAL_II_PETSC_DIR)/$(DEAL_II_PETSC_ARCH)/include
 include-path-slepc           = $(DEAL_II_SLEPC_DIR)/include
 include-path-slepc-bmake     = $(DEAL_II_SLEPC_DIR)/$(DEAL_II_PETSC_ARCH)/include
 include-path-slepc-conf      = $(DEAL_II_SLEPC_DIR)/$(DEAL_II_PETSC_ARCH)/conf
 include-path-trilinos        = $(DEAL_II_TRILINOS_INCDIR)
 include-path-mumps           = $(DEAL_II_MUMPS_DIR)/include
+include-path-metis           = $(DEAL_II_METIS_INCDIR)
+include-path-hdf5            = $(DEAL_II_HDF5_INCDIR)
+
 
 # include paths as command line flags. while compilers allow a space between
 # the '-I' and the actual path, we also send these flags to the
@@ -305,9 +302,6 @@ INCLUDE = -I$D/include \
 #
 # also, note that this only works for PETSc before 2.3 :-]
 ifeq ($(USE_CONTRIB_PETSC),yes)
-  ifeq ($(DEAL_II_PETSC_VERSION_MAJOR)$(DEAL_II_PETSC_VERSION_MINOR),22)
-    include $(DEAL_II_PETSC_DIR)/bmake/$(DEAL_II_PETSC_ARCH)/packages
-  endif
   INCLUDE += -I$(include-path-petsc) \
              -I$(include-path-petsc-bmake) \
                $(MPI_INCLUDE)
@@ -327,6 +321,15 @@ ifeq ($(USE_CONTRIB_MUMPS),yes)
   INCLUDE += -I$(include-path-mumps)
 endif
 
+ifeq ($(USE_CONTRIB_METIS),yes)
+  INCLUDE += -I$(include-path-metis)
+endif
+
+ifeq ($(USE_CONTRIB_HDF5),yes)
+  INCLUDE += -I$(include-path-hdf5)
+endif
+
+
 ifeq ($(enable-threads),yes)
   INCLUDE += -I$(shell echo $D/contrib/tbb/tbb*/include)
 endif
@@ -353,24 +356,25 @@ ifeq ($(USE_CONTRIB_PETSC),yes)
   # set PETSC_DIR and PETSC_ARCH to be used in variables file
   PETSC_DIR  = $(DEAL_II_PETSC_DIR)
   PETSC_ARCH = $(DEAL_II_PETSC_ARCH)
-  ifeq ($(DEAL_II_PETSC_VERSION_MAJOR),2)
-    ifeq ($(DEAL_II_PETSC_VERSION_MINOR),2)
-      include $(DEAL_II_PETSC_DIR)/bmake/$(DEAL_II_PETSC_ARCH)/variables
-    else
-      include $(DEAL_II_PETSC_DIR)/bmake/common/variables
-    endif
-  else
-    # PETSC's $(PETSC_ARCH)/conf/petscvariables include file happens
-    # to have a variable $(CXX) of itself. we need to save our own
-    # variable and restore it later. this isn't pretty :-(
-    SAVE_CXX := $(CXX)
-    include $(DEAL_II_PETSC_DIR)/conf/variables
-    CXX := $(SAVE_CXX)
-  endif
+
+  # PETSC's $(PETSC_ARCH)/conf/petscvariables include file happens
+  # to have a variable $(CXX) of itself. we need to save our own
+  # variable and restore it later. this isn't pretty :-(
+  SAVE_CXX := $(CXX)
+  include $(DEAL_II_PETSC_DIR)/conf/variables
+  CXX := $(SAVE_CXX)
+
   CXXFLAGS.g += $(GCXX_PETSCFLAGS)
   CXXFLAGS.o += $(OCXX_PETSCFLAGS)
 endif
 
+ifeq ($(USE_CONTRIB_HDF5),yes)
+  CFLAGS.g += $(DEAL_II_HDF5_CFLAGS)
+  CFLAGS.o += $(DEAL_II_HDF5_CFLAGS)
+  CXXFLAGS.g += $(DEAL_II_HDF5_CXXFLAGS)
+  CXXFLAGS.o += $(DEAL_II_HDF5_CXXFLAGS)
+endif
+
 ifneq ($(enable-threads),no)
   MT = MT
 else
@@ -380,15 +384,13 @@ endif
 
 ifeq ($(BUILDTEST),yes)
 print-summary:
-       @echo "dealii-feature: revision=`svn info .. | grep Revision | sed 's/Revision: //'`"
+       @svn info .. | perl -ne 'print "dealii-feature: revision=$$_\n" if s/Revision: //; print "dealii-feature: branch=$$1\n" if m/svn\/dealii\/(.+)\/deal.II/;'
        @echo "dealii-feature: user=$(USER)"
        @echo "dealii-feature: host=`hostname`"
        @echo "dealii-feature: target=$(TARGET)"
        @echo "dealii-feature: compiler=$(GXX-VERSION-DETAILED)"
        @echo "dealii-feature: multithreading=$(enable-threads)"
        @echo "dealii-feature: shared_libs=$(enable-shared)"
-       @echo "dealii-feature: parser=$(subst no,,$(enable-parser))"
-       @echo "dealii-feature: PETSc=$(subst ..,,$(DEAL_II_PETSC_VERSION_MAJOR).$(DEAL_II_PETSC_VERSION_MINOR).$(DEAL_II_PETSC_VERSION_SUBMINOR))"
        @echo "dealii-feature: METIS=$(subst no,,$(USE_CONTRIB_METIS))"
        @cd $D/common/scripts ; make report_features && ./report_features
 endif
index eb913867f6e0adc4ab836ad04c3200bd13d27368..70eed0faba0df636d383ebf2047838bd795aa061 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2010, 2011 by the deal.II authors
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -42,6 +42,12 @@ extern "C" {
 #  include <slepcversion.h>
 #endif
 
+// Output configuration options from config.h.
+// The format of each line is
+//
+// deal-feature: FEATURE=value
+//
+// no spaces in any token!
 
 int main()
 {
@@ -62,7 +68,7 @@ int main()
 
 #if defined(DEAL_II_COMPILER_SUPPORTS_MPI)
 #  ifdef OMPI_MAJOR_VERSION
-  std::cout << "dealii-feature: MPI=OpenMPI<br>"
+  std::cout << "dealii-feature: MPI=OpenMPI-"
            << OMPI_MAJOR_VERSION << '.'
            << OMPI_MINOR_VERSION << '.'
            << OMPI_RELEASE_VERSION << std::endl;
@@ -116,4 +122,31 @@ int main()
 #endif
   std::cout << std::endl;
 #endif
+
+#ifdef DEAL_II_USE_P4EST
+  std::cout << "dealii-feature: P4est=yes" << std::endl;
+#endif
+
+#ifdef DEAL_II_HAVE_HDF5
+   std::cout << "dealii-feature: HDF5=yes" << std::endl;
+#endif
+
+#ifdef DEAL_II_HAVE_TECPLOT
+   std::cout << "dealii-feature: Tecplot=yes" << std::endl;
+#endif
+   
+#ifdef HAVE_LIBNETCDF
+  std::cout << "dealii-feature: NetCDF=yes" << std::endl;
+#endif
+
+#ifdef HAVE_LIBZ
+  std::cout << "dealii-feature: LibZ=yes" << std::endl;
+#endif
+
+#ifdef DEAL_II_DISABLE_PARSER
+  std::cout << "dealii-feature: parser=no" << std::endl;
+#else
+  std::cout << "dealii-feature: parser=yes" << std::endl;
+#endif
+  
 }
index 747709fe0e953b1f1fc4a492f7721b0de7090731..c7f7c4d868b9c339d28ee3ad7918c3528bf2bca1 100644 (file)
@@ -23,7 +23,7 @@ dnl clearing the cache
 define([AC_CACHE_LOAD], )dnl
 define([AC_CACHE_SAVE], )dnl
 
-AC_INIT(deal.II, 7.2.pre, dealii@dealii.org, deal.II)
+AC_INIT(deal.II, 7.3.pre, dealii@dealii.org, deal.II)
 
 AC_REVISION($Revision$)
 AC_PREREQ(2.61)
@@ -507,6 +507,15 @@ AC_SUBST(DEAL_II_TRILINOS_LIBDIR)
 AC_SUBST(DEAL_II_TRILINOS_SHARED)
 AC_SUBST(DEAL_II_TRILINOS_STATIC)
 
+DEAL_II_CONFIGURE_HDF5
+AC_SUBST(USE_CONTRIB_HDF5)
+AC_SUBST(DEAL_II_HDF5_VERSION)
+AC_SUBST(DEAL_II_HDF5_CFLAGS)
+AC_SUBST(DEAL_II_HDF5_CPPFLAGS)
+AC_SUBST(DEAL_II_HDF5_LDFLAGS)
+AC_SUBST(DEAL_II_HDF5_INCDIR)
+
+
 DEAL_II_CONFIGURE_ARPACK
 AC_SUBST(USE_CONTRIB_ARPACK)
 AC_SUBST(DEAL_II_ARPACK_DIR)
@@ -650,7 +659,9 @@ DEAL_II_CONFIGURE_NETCDF
 
 DEAL_II_CONFIGURE_METIS
 AC_SUBST(USE_CONTRIB_METIS)
+AC_SUBST(DEAL_II_METIS_DIR)
 AC_SUBST(DEAL_II_METIS_LIBDIR)
+AC_SUBST(DEAL_II_METIS_INCDIR)
 
 dnl Check for UMFPack
 DEAL_II_WITH_UMFPACK
index 03dbf70f3f5187ba66d68c2a481f596fbfcef4da..cb7b7df9ec66d1d4b24e2b81a116076bb3c81e58 100644 (file)
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-                 "http://www.w3.org/TR/html4/loose.dtd">
+          "http://www.w3.org/TR/html4/loose.dtd">
 <html>
-<head>
-  <link href="screen.css" rel="StyleSheet">
-  <title>deal.II Credits</title>
-  <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors">
-  <meta name="date" content="$Date$">
-  <meta name="keywords" content="deal.II">
-  <meta name="svn_id" content="$Id$">
-
-</head>
-<body>
-<h1>deal.II Credits</h1>
-
-<p>
-  The <acronym>deal.II</acronym> project was initially started by members
-  of the Numerical Methods group at the University of Heidelberg, Germany but
-  has since become a global, open source project.
-  The current maintainers of the library are:
-</p>
-<ul>
-  <li>
-    <a href="http://www.math.tamu.edu/~bangerth"
-    target="_top">Wolfgang Bangerth</a>,
-    Texas A&amp;M University, TX, USA
-  </li>
-
-  <li>
-    <a href="http://www.math.tamu.edu/~heister"
-    target="_top">Timo Heister</a>,
-    Texas A&amp;M University, TX, USA
-  </li>
-
-  <li>
-    <a href="http://www.math.tamu.edu/~kanschat"
-    target="_top">Guido Kanschat</a>,
-    Texas A&amp;M University, TX, USA
-  </li>
-</ul>
-
-<p>In order to get in contact with them, send email to <tt>authors</tt>
-at <tt>dealii.org</tt>.
-</p>
-
-<p>Many people have contributed to deal.II over the years, some of them very
-  substantial parts of the library. Their work
-  is greatly appreciated: no open source project can survice without a
-  community. The following people contributed major parts
-  of the library (in alphabetical order):
-</p>
-
-<ul>
-<li><em>Moritz Allmaras:</em>
-    Step-29 tutorial program.
-
-<li><em>Michael Anderson:</em>
-    Linear complexity grid reordering algorithm in 2d and 3d.
-
-<li><em>Andrea Bonito:</em>
-    Step-38.
-
-<li><em>Markus B&uuml;rg:</em>
-    Conical meshes and geometries; &nbsp; step-45 tutorial program; &nbsp;
-    VectorTools::project_boundary_values_curl_conforming; &nbsp; MUMPS
-    interface, FE_Nedelec for arbitrary polynomial degrees.
-
-<li><em>John Burnell:</em>
-    Configuration on Microsoft Windows systems.
-
-<li><em>Brian Carnes:</em>
-    Hierarchical finite element classes; &nbsp;
+  <head>
+    <link href="screen.css" rel="StyleSheet">
+    <title>deal.II Credits</title>
+    <meta name="author" content="the deal.II authors <authors@dealii.org>">
+    <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors">
+    <meta name="date" content="$Date$">
+    <meta name="keywords" content="deal.II">
+    <meta name="svn_id" content="$Id$">
+
+  </head>
+  <body>
+    <h1>deal.II Credits</h1>
+
+    <p>
+      The <acronym>deal.II</acronym> project was initially started by members
+      of the Numerical Methods group at the University of Heidelberg, Germany but
+      has since become a global, open source project.
+      The current maintainers of the library are:
+    </p>
+    <ul>
+      <li>
+       <a href="http://www.math.tamu.edu/~bangerth"
+          target="_top">Wolfgang Bangerth</a>,
+       Texas A&amp;M University, TX, USA
+      </li>
+
+      <li>
+       <a href="http://www.math.tamu.edu/~heister"
+          target="_top">Timo Heister</a>,
+       Texas A&amp;M University, TX, USA
+      </li>
+
+      <li>
+       <a href="http://www.iwr.uni-heidelberg.de/groups/MathSim/"
+          target="_top">Guido Kanschat</a>,
+       Texas A&amp;M University, TX, USA and Universit&auml;t Heidelberg, Germany
+      </li>
+    </ul>
+
+    <p>In order to get in contact with them, send email to <tt>authors</tt>
+      at <tt>dealii.org</tt>.
+    </p>
+
+    <p>Many people have contributed to deal.II over the years, some of them very
+      substantial parts of the library. Their work
+      is greatly appreciated: no open source project can survice without a
+      community. The following people contributed major parts
+      of the library (in alphabetical order), with many more that have
+      sent in fixed and small enhancements:
+    </p>
+
+    <ul>
+      <li><em>Moritz Allmaras:</em>
+       Step-29 tutorial program.
+
+      <li><em>Michael Anderson:</em>
+       Linear complexity grid reordering algorithm in 2d and 3d.
+
+      <li><em>Andrea Bonito:</em>
+       Step-38.
+
+      <li><em>Markus B&uuml;rg:</em>
+       Conical meshes and geometries; &nbsp; step-45 tutorial program; &nbsp;
+       VectorTools::project_boundary_values_curl_conforming; &nbsp; MUMPS
+       interface, FE_Nedelec for arbitrary polynomial degrees.
+
+      <li><em>John Burnell:</em>
+       Configuration on Microsoft Windows systems.
+
+      <li><em>Brian Carnes:</em>
+       Hierarchical finite element classes; &nbsp;
        random fixes and enhancements.
 
-<li><em>Ivan Christov:</em>
-    Step-25 tutorial program.
-
-<li><em>Martin Genet:</em>
-    Make SparseDirectUMFPACK work with block matrices.
-
-<li><em>Ralf Hartmann:</em>
-  Ralf was one of the original developers and maintainers of the library until
-  2011. He has written significant chunks of code throughout the library.
-
-<li><em>Timo Heister:</em>
-    CompressedSimpleSparsityPattern class; &nbsp; a lot of the work for
-  massively parallel computations; &nbsp; step-32; &nbsp; step-40; &nbsp; many
-    enhancements all throughout the library.
-
-<li><em>Luca Heltai:</em>
-    Gmsh format mesh reader and writer; &nbsp;
-    some of the meshes in the GridGenerator class; &nbsp;
-    generalization of FilteredMatrix; &nbsp;
-    integration of the function parser library; &nbsp;
-    cubit journal file to export to ucd mesh format; &nbsp;
-    FEFieldFunction and ParsedFunction classes; &nbsp;
-    work on the codimension-one meshes, DoFHandler, and finite
-    elements; &nbsp;
-    singular integration; &nbsp;
-    Step-34 tutorial program; &nbsp;
-    random bug fixes and enhancements.
-
-<li><em>B&auml;rbel Janssen:</em>
-    Lots of work on multigrid for adaptive meshes; &nbsp; multigrid in the
-    MeshWorker framework; &nbsp; step-16.
-
-<li><em>Xing Jin:</em>
-    step-24 tutorial program.
-
-<li><em>Oliver Kayser-Herold:</em>
-    Lots of work on hp finite elements; &nbsp;
-    integration of PETSc's LU decomposition; &nbsp;
-    hanging node constraints for higher order elements in 3d.
-
-<li><em>Seungil Kim:</em>
-  Help on the step-16 tutorial program.
-
-<li><em>Benjamin Shelton Kirk:</em>
-    Tecplot output.
-
-<li><em>Katharina Kormann:</em>
-    Support for arbitrary nodes in FE_Q. Matrix-free
-    framework. step-37 and step-48 tutorial programs.
-
-<li><em>Martin Kronbichler:</em>
-    step-22, step-31, step-32, step-37, step-48, interfaces to
-    Trilinos, significant parts of ConstraintMatrix, matrix-free
-    computations, support for massively parallel computations, and
-    many enhancements in random places.
-
-<li><em>Tobias Leicht:</em>
-    Lots of work on internal data structures: anisotropic refinement
-    (including step-30), faces
-    without level,
-    support for previously unorientable meshes;
-    &nbsp; extension of DataOut to higher order mapping functions; DataPostprocessor;
-    &nbsp; GridIn::read_tecplot;
-    &nbsp; made SolutionTransfer independent of Triangulation::user_pointers;
-    &nbsp; random bug fixes and enhancements.
-
-<li><em>Yan Li:</em>
-    step-21 tutorial program.
-
-<li><em>Cataldo Manigrasso:</em>
-    Work on the codimension-one meshes, DoFHandler, and finite
-    elements.
-
-<li><em>Andrew McBride:</em>
-    FEValues extractors for symmetric tensors.
-
-<li><em>Helmut M&uuml;ller:</em>
-    Multiprocessor detection on Mac OS X.
-
-<li><em>Stefan Nauber:</em>
+      <li><em>Ivan Christov:</em>
+       Step-25 tutorial program.
+
+      <li><em>Chih-Che Chueh:</em>
+       Step-43 tutorial program.
+
+      <li><em>Marco Engelhard:</em>
+       Better support for output for Paraview.
+
+      <li><em>J&ouml;rg Frohne:</em>
+       step-41. Fixes in many places.
+
+      <li><em>Thomas Geenen:</em>
+       Support for different geometries.
+
+      <li><em>Martin Genet:</em>
+       Make SparseDirectUMFPACK work with block matrices.
+
+      <li><em>Christian Goll:</em>
+       Abstraction of material and boundary indicators. Enhancements in
+       various places.
+
+      <li><em>Ralf Hartmann:</em>
+       Ralf was one of the original developers and maintainers of the library until
+       2011. He has written significant chunks of code throughout the library.
+
+      <li><em>Eric Heien:</em>
+       HDF5 output.
+
+      <li><em>Timo Heister:</em>
+       CompressedSimpleSparsityPattern class; &nbsp; a lot of the work for
+       massively parallel computations; &nbsp; step-32; &nbsp; step-40; &nbsp; many
+       enhancements all throughout the library.
+
+      <li><em>Luca Heltai:</em>
+       Gmsh format mesh reader and writer; &nbsp;
+       some of the meshes in the GridGenerator class; &nbsp;
+       generalization of FilteredMatrix; &nbsp;
+       integration of the function parser library; &nbsp;
+       cubit journal file to export to ucd mesh format; &nbsp;
+       FEFieldFunction and ParsedFunction classes; &nbsp;
+       work on the codimension-one meshes, DoFHandler, and finite
+       elements; &nbsp;
+       singular integration; &nbsp;
+       Step-34 tutorial program; &nbsp;
+       random bug fixes and enhancements.
+
+      <li><em>B&auml;rbel Janssen:</em>
+       Lots of work on multigrid for adaptive meshes; &nbsp; multigrid in the
+       MeshWorker framework; &nbsp; step-16.
+
+      <li><em>Xing Jin:</em>
+       step-24 tutorial program.
+
+      <li><em>Oliver Kayser-Herold:</em>
+       Lots of work on hp finite elements; &nbsp;
+       integration of PETSc's LU decomposition; &nbsp;
+       hanging node constraints for higher order elements in 3d.
+
+      <li><em>Seungil Kim:</em>
+       Help on the step-16 tutorial program.
+
+      <li><em>Benjamin Shelton Kirk:</em>
+       Tecplot output.
+
+      <li><em>Katharina Kormann:</em>
+       Support for arbitrary nodes in FE_Q. Matrix-free
+       framework. step-37 and step-48 tutorial programs.
+
+      <li><em>Martin Kronbichler:</em>
+       step-22, step-31, step-32, step-37, step-48, interfaces to
+       Trilinos, significant parts of ConstraintMatrix, matrix-free
+       computations, support for massively parallel computations, and
+       many enhancements in random places.
+
+      <li><em>Tobias Leicht:</em>
+       Lots of work on internal data structures: anisotropic refinement
+       (including step-30), faces
+       without level,
+       support for previously unorientable meshes;
+       &nbsp; extension of DataOut to higher order mapping functions; DataPostprocessor;
+       &nbsp; GridIn::read_tecplot;
+       &nbsp; made SolutionTransfer independent of Triangulation::user_pointers;
+       &nbsp; random bug fixes and enhancements.
+
+      <li><em>Yan Li:</em>
+       step-21 tutorial program.
+
+      <li><em>Vijay Mahadevan:</em>
+       Enhancements in the interface to PETSc. Support for reading GMSH
+       2.5 format.
+
+      <li><em>Matthias Maier:</em>
+       Periodic boundary conditions. Enhancements throughout the library.
+
+      <li><em>Cataldo Manigrasso:</em>
+       Work on the codimension-one meshes, DoFHandler, and finite
+       elements.
+
+      <li><em>Andrew McBride:</em>
+       FEValues extractors for symmetric tensors. step-44.
+
+      <li><em>Scott Miller:</em>
+       Enhancements to FE_Nothing.
+
+      <li><em>Helmut M&uuml;ller:</em>
+       Multiprocessor detection on Mac OS X.
+
+      <li><em>Stefan Nauber:</em>
        Postscript output.
 
-<li><em>David Neckels:</em>
-    step-33 tutorial program.
+      <li><em>David Neckels:</em>
+       step-33 tutorial program.
+
+      <li><em>M. Sebastian Pauletti:</em>
+       Making meshes embedded in higher space dimensions more usable; &nbsp; many
+       bug fixes and enhancements for codimension-one computations and
+       throughout the library.
+
+      <li><em>Jean-Paul Pelteret:</em>
+       step-44.
 
-<li><em>M. Sebastian Pauletti:</em>
-    Making meshes embedded in higher space dimensions more usable; &nbsp; many
-    bug fixes and enhancements for codimension-one computations.
+      <li><em>Jonathan Pitt:</em>
+       Enhancements to FE_Nothing. Changes in a variety of places.
 
-<li><em>Adam Powell IV:</em>
-    Configuration issues, Debian packages.
+      <li><em>Adam Powell IV:</em>
+       Configuration issues, Debian packages.
 
-<li><em>Florian Prill:</em>
+      <li><em>Florian Prill:</em>
         Gauss Lobatto quadrature, random bug fixes.
 
-<li><em>Daniel Castanon Quiroz:</em>
-    Torus domain and boundary.
+      <li><em>Daniel Castanon Quiroz:</em>
+       Torus domain and boundary.
 
-<li><em>Michael Rapson:</em>
-    PointValueHistory class.
+      <li><em>Michael Rapson:</em>
+       PointValueHistory class.
 
-<li><em>Thomas Richter:</em>
+      <li><em>Thomas Richter:</em>
        Povray output;
        &nbsp; multi-threading work;
        &nbsp; refinement functions;
-    &nbsp; MinRes linear solver.
+       &nbsp; MinRes linear solver.
 
-<li><em>Abner Salgado-Gonzalez:</em>
+      <li><em>Abner Salgado-Gonzalez:</em>
        step-35 tutorial program.
 
-<li><em>Anna Schneebeli:</em>
+      <li><em>Anna Schneebeli:</em>
        Help and advice for Nedelec elements, writing the excellent
        report on Nedelec elements.
 
-<li><em>Jan Schrage:</em>
+      <li><em>Jan Schrage:</em>
        Initial parts of the tutorial.
 
-<li><em>Ralf B. Schulz:</em>
+      <li><em>Ralf B. Schulz:</em>
        Support for DLLs on Windows systems.
 
-<li><em>Michael Stadler:</em>
-    Reading 3d data in UCD, accepting boundary data in 3d;
+      <li><em>Jason Sheldon:</em>
+       More generic FESystems. Enhancements in a variety of places.
+
+      <li><em>Michael Stadler:</em>
+       Reading 3d data in UCD, accepting boundary data in 3d;
        &nbsp;
        Eulerian mappings.
 
-<li><em>Martin Steigemann:</em>
-    Graphical user interface for the ParameterHandler class.
+      <li><em>Martin Steigemann:</em>
+       Graphical user interface for the ParameterHandler class.
+
+      <li><em>Franz-Theo Suttmeier:</em>
+       Initial parts of the linear algebra libraries.
 
-<li><em>Franz-Theo Suttmeier:</em>
-    Initial parts of the linear algebra libraries.
+      <li><em>Habib Talavatifard:</em>
+       Bug fixes in the Trilinos interfaces.
 
-<li><em>Habib Talavatifard:</em>
-    Bug fixes in the Trilinos interfaces.
+      <li><em>Christophe Trophime:</em>
+       Packaging and configuration issues.
 
-<li><em>Christophe Trophime:</em>
-    Packaging and configuration issues.
+      <li><em>Yaqi Wang:</em>
+       The step-28 tutorial program;
+       &nbsp;
+       some grid generation functions.
 
-<li><em>Yaqi Wang:</em>
-    The step-28 tutorial program;
-    &nbsp;
-    some grid generation functions.
+      <li><em>Sven Wetterauer:</em>
+       Step-15 tutorial program.
 
-<li><em>Joshua White:</em>
-    Arbitrary order Eulerian mappings.
+      <li><em>Joshua White:</em>
+       Arbitrary order Eulerian mappings.
 
-<li><em>Toby D. Young:</em>
-    Interfaces to SLEPc; &nbsp; many changes in the interfaces to PETSc;
-    &nbsp; MUMPS interface.
-</ul>
+      <li><em>Toby D. Young:</em>
+       Interfaces to SLEPc; &nbsp; many changes in the interfaces to PETSc;
+       &nbsp; MUMPS interface;
+       &nbsp; METIS interface.
+    </ul>
 
 
 
-<h2>deal.II mailing list members</h2>
+    <h2>deal.II mailing list and discussion group members</h2>
 
-<p>
-  We thank the numerous people sending questions, suggestions, bug reports, bug
-  fixes and improvements. deal.II would be much less without their contribution.
-</p>
+    <p>
+      We thank the numerous people sending questions, suggestions, bug reports, bug
+      fixes and improvements. deal.II would be much less without their contribution.
+    </p>
 
-<h2>History</h2>
+    <h2>History</h2>
     <p>
-    deal.II draws from some ideas which were first implemented in the
-    predecessor library,
-    <A HREF="http://www.math.uni-siegen.de/suttmeier/deal/deal.html"
-    TARGET="_top">DEAL</a>, developed by Guido Kanschat, Franz-Theo
-    Suttmeier, and Roland Becker. This library is now being maintained
-    by Franz-Theo Suttmeier at the University of
-    Siegen, Germany.
+      deal.II draws from some ideas which were first implemented in the
+      predecessor library,
+      <A HREF="http://www.math.uni-siegen.de/suttmeier/deal/deal.html"
+        TARGET="_top">DEAL</a>, developed by Guido Kanschat, Franz-Theo
+      Suttmeier, and Roland Becker. This library is now being maintained
+      by Franz-Theo Suttmeier at the University of
+      Siegen, Germany.
     </p>
 
 
-<div class="right">
-    <a href="http://validator.w3.org/check?uri=referer" target="_top"><img
-        style="border:0"
-        src="http://www.w3.org/Icons/valid-html401"
-        alt="Valid HTML 4.01!"></a>
-    <a href="http://jigsaw.w3.org/css-validator/check/referer"
-    target="_top"><img
-       style="border:0;width:88px;height:31px"
-       src="http://jigsaw.w3.org/css-validator/images/vcss"
-       alt="Valid CSS!">
- </a>
- </div>
-
-</body>
+    <div class="right">
+      <a href="http://validator.w3.org/check?uri=referer" target="_top"><img
+                                                                          style="border:0"
+                                                                          src="http://www.w3.org/Icons/valid-html401"
+                                                                          alt="Valid HTML 4.01!"></a>
+      <a href="http://jigsaw.w3.org/css-validator/check/referer"
+        target="_top"><img
+                         style="border:0;width:88px;height:31px"
+                         src="http://jigsaw.w3.org/css-validator/images/vcss"
+                         alt="Valid CSS!">
     </a>
   </div>
+
+  </body>
 </html>
index f73a697c7c200f951bf344ff7226261072c5bac4..77e0eae3660d7ed3171c4b6008047ad8d62dbfa3 100644 (file)
@@ -77,7 +77,7 @@
     <hr>
     
     <address>
-      <a href="../mail.html">The deal.II mailing list</a></address>
+      <a href="../mail.html">The deal.II Group</a></address>
 
 <div class="right">
   <p>
index 8b6269e2371023280b8cb3c4c008081591ff15e5..a9becca692e657f55a5e2b8699574cabab4f2f94 100644 (file)
@@ -5,7 +5,7 @@
   <link href="../screen.css" rel="StyleSheet">
   <title>The deal.II Testsuite</title>
   <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors">
   <meta name="date" content="$Date$">
   <meta name="svn_id" content="$Id$">
   <meta name="keywords" content="deal dealii finite elements fem triangulation">
     tests nightly through a cron-job with this command, to have
     regular test runs.
     </p>
+    
+    <p>
+    To get a quick overview you can run
+    <pre>
+      make report+summary
+    </pre>
+    instead. This runs all the tests and outputs a table in the following format
+    at the end:
+    <pre>
+                Compiling Linking Running   Check      OK     all
+         a-framework   1       1       1       1       1       5       
+                base   0       0       0       2       185     187     
+                 lac   0       0       0       0       117     117     
+                  fe   0       0       0       4       114     118     
+             deal.II   0       0       0       2       291     293     
+         integrators   0       0       0       0       15      15      
+           multigrid   0       0       0       0       35      35            
+                ...
+    </pre>
+    </p>
 
     <p>
     If a test failed, you have to find out what exactly went
@@ -562,15 +582,15 @@ testname/cmp/generic
     </p>
 
     <p>
-    If you don't have subversion write access, talk to us on the mailing
-    list; writing testcases is a worthy and laudable task, and we would
+    If you don't have subversion write access, talk to us in the discussion group;
+    writing testcases is a worthy and laudable task, and we would
     like to encourage it by giving people the opportunity to
     contribute!
     </p>
 
 
     <address>
-      <a href="../mail.html">The deal.II mailing list</a></address>
+      <a href="../mail.html">The deal.II Group</a></address>
 <div class="right">
   <p>
     <a href="http://validator.w3.org/check?uri=referer"><img border="0"
index b18502857284daf95be358d8efd64623d134b409..f9d271739bc192e73fbb4f4cc7738e8a4a7edcab 100644 (file)
@@ -5,7 +5,7 @@
   <link href="../screen.css" rel="StyleSheet">
   <title>The deal.II Development Page</title>
   <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2012 by the deal.II authors">
   <meta name="date" content="$Date$">
   <meta name="svn_id" content="$Id$">
   <meta name="keywords" content="deal dealii finite elements fem triangulation">
     <hr>
 
     <address>
-      <a href="../mail.html">The deal.II mailing list</a></address>
+      <a href="../mail.html">The deal.II Group</a></address>
 <div class="right">
   <p>
     <a href="http://validator.w3.org/check?uri=referer"><img border="0"
index 47a43477ccd67ab913d1eb3be686b098724ffad1..fa819b088bd96fa41572408215f0489ab3e979db 100644 (file)
@@ -5,7 +5,7 @@
   <link href="../screen.css" rel="StyleSheet">
   <title>Writing documentation</title>
   <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2010 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2010, 2012 by the deal.II authors">
   <meta name="date" content="$Date$">
   <meta name="svn_id" content="$Id$">
   <meta name="keywords" content="deal dealii finite elements fem triangulation">
     <hr>
 
     <address>
-      <a href="../mail.html">The deal.II mailing list</a></address>
+      <a href="../mail.html">The deal.II Group</a></address>
 <div class="right">
   <p>
     <a href="http://validator.w3.org/check?uri=referer"><img border="0"
index 192429c7e51b5d717691668d9b3f4b52b8ddc067..7b69415d86d097b665e6d7e4d5873aaa19043d93 100644 (file)
@@ -5,7 +5,7 @@
   <link href="screen.css" rel="StyleSheet" type="text/css">
   <title>The deal.II Online Documentation</title>
   <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors">
   <meta name="date" content="2006/02/07 22:49:01">
   <meta name="keywords" content="deal.II">
   <meta name="svn_id" content="$Id$">
@@ -42,7 +42,7 @@
 
       <p>
       Note that along with the rest of the documentation, the local HTML pages
-      of the tutorials need to be generated first. Please follow the 
+      of the tutorials need to be generated first. Please follow the
       instructions in the
       <a href="readme.html" target="body">ReadMe file</a> on how to do
       this.
               Bangerth).
              </p>
 
-         <li> <p>
-              A report on how
-             <a href="reports/multithreading/index.html"
-                 target="body">multithreading</a> is implemented and
-              supported in <acronym>deal.II</acronym> (by Wolfgang
-              Bangerth). This report is also available as preprint
-             2000-11 from the
-             <a href="http://www.iwr.uni-heidelberg.de" target="_top">
-             IWR preprint server</a>. However, this report described a
-             previous version of the threading scheme. After
-             <acronym>deal.II</acronym> 3.4, this scheme was replaced by
-             another one that is more flexible and easier to use. While the
-             general observations of the report are still valid, the syntax
-             presented there is no longer. There is a <a
-             href="reports/new-threads/index.html" target="body">short
-             document</a> describing the new syntax and some considerations we
-             had in implementing it.
-             </p>
-
          <li> <p>
              A brief report on <a href="reports/mapping_q/index.html"
              target="body">mapping</a> functions of higher polynomial
 
     <h3>Contact</h3>
 
-      <p>We have a <a href="mail.html">mailing list</a> for discussion
+      <p>We have a <a href="mail.html">discussion group</a> for discussion
       of issues of general interest to users and developers of
       <acronym>deal.II</acronym>.</p>
 
       <p>More specific questions may be sent to the authors
-      immediately at the address <tt>firstName.last_name</tt><i> at
+      immediately at the address <tt>firstName.lastname</tt><i> at
       </i> <tt>dealii.org</tt>.</p>
 
 <div class="right">
index b549dd4c8389249302d01e3085c380a809240576..93830f4e6abb3c67337c7d1fc2749d3417b234f6 100644 (file)
  * too many details. All the algorithms described below are implement in
  * classes and functions in namespace parallel::distributed.
  *
+ * One important aspect in parallel computations using MPI is that write
+ * access to matrix and vector elements requires a call to compress() after
+ * the operation is finished and before the object is used (for example read
+ * from). Also see @ref GlossCompress.
  *
  * <h4>Other resources</h4>
  *
  * information is provided by the
  * DoFTools::extract_locally_relevant_dofs() function.
  *
+ * <h5>Vectors with Ghost-elements</h5>
+ * 
+ * A typical parallel application is dealing with two different kinds
+ * of parallel vectors: vectors with ghost elements (also called
+ * ghosted vectors) and vectors without ghost elements.  Of course
+ * these might be different flavours (BlockVector, Vector; using
+ * Trilinos or PETSc, etc.).
+ * 
+ * In vectors without ghost elements knowledge about a single entry i
+ * in the vector is only known to a single processor. They are
+ * constructed with an IndexSet reflecting the
+ * locally_owned_dofs(). There is no overlap in the IndexSets.
+ * Ghosted vectors are typically created using locally_active or
+ * locally_relevant IndexSets and contain elements on processors that
+ * are owned by a different processor.
+ *
+ * One important aspect is that we forbid any modification of ghosted
+ * vectors. This is because it would create subtle bugs if elements
+ * are edited on one processor but do not immediately transfer to the
+ * ghosted entries on the other processors.
+ *
+ * The usage is typically split up in the following way: ghosted
+ * vectors are used for data output, postprocessing, error estimation,
+ * input in integration. Vectors without ghost entries are used in all
+ * other places like assembling, solving, or any other form of
+ * manipulation. You can copy between vectors with and without ghost
+ * elements (you can see this in step-40 and step-32) using operator=.
  *
  * <h5>Sparsity patterns</h5>
  *
index 008ed4e1e481bdb4fabb2018b45f820746a9f0c3..f1129b7982aad4675fe357d1efb6a1575a565a1b 100644 (file)
@@ -1,3 +1,4 @@
+
 //-------------------------------------------------------------------------
 //    $Id$
 //    Version: $Name$
  * ways:
  *
  * - You tell the object that you want to compress what operation is
- *   intended. The TrilinosWrappers::VectorBase::compress() can take
- *   such an additional argument.
+ *   intended. This can be done using the VectorOperation argument in
+ *   the various compress() functions.
  * - You do a fake addition or set operation on the object in question. For
  *   example, you can add a zero to an element of the matrix or vector,
  *   which has no effect other than telling the object that the next
index a1642ae729f0b9fd24918b61d0c5a9d7af6dabb5..367b222e5fbda5f5e04bfc4b3c4376da9f079b52 100644 (file)
@@ -16,7 +16,8 @@
  * @defgroup vector_valued Handling vector valued problems
  *
  *
- * Vector-valued problems are partial differential equations in which the
+ * Vector-valued problems are systems of partial differential
+ * equations. These are problems where the
  * solution variable is not a scalar function, but a vector-valued function or
  * a set of functions. This includes, for example:
  * <ul>
@@ -36,7 +37,9 @@
  * </ul>
  *
  * This page gives an overview of how to implement such vector-valued problems
- * efficiently in deal.II.
+ * easily in deal.II. In particular, it explains the usage of the class
+ * FESystem, which allows us to write code for systems of partial
+ * differential very much like we write code for single equations.
  *
  * <table class="tutorial" width="50%">
  * <tr><th><b>%Table of contents</b></th></tr>
diff --git a/deal.II/doc/external-libs/hdf5.html b/deal.II/doc/external-libs/hdf5.html
new file mode 100644 (file)
index 0000000..e9e1018
--- /dev/null
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"                  
+         "http://www.w3.org/TR/html4/loose.dtd">                        
+
+<html>                                                                          
+  <head>                            
+    <title>The deal.II Readme on interfacing to HDF5</title>
+    <link href="screen.css" rel="StyleSheet">
+    <meta name="author" content="the deal.II authors <authors @ dealii.org>"> 
+    <meta name="copyright" content="Copyright (C) 2012 by the deal.II authors">
+    <meta name="date" content="$Date: 2010-05-05 (Thu, 05 May 2010) $">
+    <meta name="svn_id" content="$Id: readme-hdf5.html$">
+    <meta name="keywords" content="deal.II"> 
+  </head>                                                                      
+  <body> 
+
+    
+    <h1>Using and Installing <acronym>HDF5</acronym></h1>
+    <p> <a href="http://www.hdfgroup.org/HDF5/">HDF5</a> 
+    is a library for high-performance parallel data output. Deal.II can use it to write
+    graphical solutions. They can be displayed using paraview for example.
+    <p>
+
+    <p>
+    This is how you can download, configure, and build hdf5:
+    <code>
+    <pre>
+wget http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.9.tar.gz
+tar xf hdf5-1.8.9.tar.gz
+cd hdf5-1.8.9/
+./configure --prefix=`pwd`/build/ -enable-parallel
+make install
+    </pre>
+    </code>
+
+    You will end up with a script called <code>h5pcc</code> (or <code>h5cc</code> if you
+    decided to not build the parallel version) in the build/bin directory.
+
+    <h1>Interfacing <acronym>deal.II</acronym>
+      to <acronym>HDF5</acronym></h1>
+
+    <p> To be able to use the interface of <acronym>deal.II</acronym>
+    for <acronym>HDF5</acronym> we then
+      configure <acronym>deal.II</acronym> with the following
+      additional option:
+       <code>--with-hdf5=path/to/hdf5/build/bin/h5pcc</code>
+    </p>
+  </body>
+</html>
index fc70379a83434e8daa0bb20a30ebaf86006cc329..1851c620a0c5c08a0bed9178d5255f51a09064ec 100644 (file)
     <hr>
     
     <address>
-      <a href="mail.html">The deal.II mailing list</a>
+      <a href="mail.html">The deal.II Group</a>
       $Date$
     </address>
   </body>
index 8230fdc550e5ea8a9bc20f4ce22b9107149c33a5..d6ccafac9877e3cc5d42c4c05361787f11c0eb95 100644 (file)
@@ -56,7 +56,7 @@
     <hr>
 
     <address>
-      <a href="mail.html">The deal.II mailing list</a>
+      <a href="mail.html">The deal.II Group</a>
     </address>
   </body>
 </html>
index 3b64eabd91befdb222b4247769682e9adb5d0ee0..e1ea0cdc25bfcf29cae4b2aefea4a07789630156 100644 (file)
@@ -2,85 +2,66 @@
                  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
-  <title>deal.II Email Portal</title>
+  <title>deal.II Communications</title>
   <link href="screen.css" rel="StyleSheet">
   <meta name="author" content="the deal.II authors <authors at dealii.org>">
-  <meta name="copyright" content="Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2011 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2011, 2012 by the deal.II authors">
   <meta name="date" content="$Date$">
   <meta name="svn_id" content="$Id$">
   <meta name="keywords" content="deal.II">
 </head>
 <body>
     <h1>
-       <acronym>deal.II</acronym> Email Portal
+       <acronym>deal.II</acronym> Communications
     </h1>
     <p>
        This page summarizes your possibilities of establishing contact to other
       <acronym>deal.II</acronym> users and to the <acronym>deal.II</acronym>
-      authors. We are sorry if all this looks a little complicated, but since
-      public email addresses are abused too often, we want to protect all
-      members of our mailing lists.
+      authors.
     </p>
     <br>
      
     <h2>
-       Users
+       User Group
     </h2>
     <p>
-       All <acronym>deal.II</acronym> users (and everybody interested) can
-      enter themselves into the <acronym>deal.II</acronym> mailing list.
+       All <acronym>deal.II</acronym> users (and everybody interested)
+       are encouraged to join the <acronym>deal.II</acronym>
+       Discussion group on Google Groups.
     </p>
     <ul>
       <li>
-        <strong class="red"><strong>Join</strong> the mailing list</strong>
-        <p>
-           If you want to receive comments of other users and react to them,
-          you should join the mailing list. To do this, don't write to
-          the list.
-        </p>
-        <p>
-       Either write an email to <b>join</b> at <b>dealii.org</b> or
-       go to the <a
-       href="http://dealii.org/mailman/listinfo/dealii_dealii.org">list's web site</a> and follow the instructions.
-       </p>
+        In order to join, go to
+        the <a href="https://groups.google.com/d/forum/dealii">deal.II
+        Discussion Group web page</a> and register your email address
+        there. Or click on the membership button below. This is also a
+        good place to browse through existing discussion
+        topics. There, you can manage your group membership and email
+        delivery options.
       </li>
       <li>
-        <strong class="red"><strong>Unsubscribe</strong> from the list</strong>
-        <p>
-           You can decide to leave the mailing list whenever you want.
-        </p>
-        <p>
-       Write an email to <b>leave</b> at <b>dealii.org</b> from your
-       registered address or go to the <a
-       href="http://dealii.org/mailman/listinfo/dealii_dealii.org">list's web site</a> and follow the instructions.
-       </p>
-      </li>
-      <li>
-        <strong class="red"><strong>Write</strong> to the mailing list</strong>
-        <p>
-           Send an email to <b>dealii</b> at <b>dealii.org</b>.
-          Please, use a significant subject line, such that everybody
-          can identify your message. Note that you must be subscribed
-          to the list before you can send a message!
-        </p>
-       <p>
-       Remember that you <b>must be subscribed</b> to write to the list. Here,
-       <i>you</i> means the email address identifying the sender of your mail.
-       </p>
-      </li>
-      <li>
-        <strong class="red"><strong>Reading</strong> archives of the mailing list</strong>
-        <p>
-           All mails that have been sent through the mailing lists are
-          archived
-          and can be read from the <a href="http://dealii.org/pipermail/dealii_dealii.org/"
-          target="body">mailing list archive page</a>.
-        </p>
-       <p> The <a href="http://www.dealii.org/mail/maillist.html"
-          target="body">old archives</a> can also be checked for reference.
-       </p>
+       In order to post a question or a reply, you can either go to
+        the
+        the <a href="https://groups.google.com/d/forum/dealii">deal.II
+        Discussion Group page</a> and click on the corresponding
+        button (preferred), or you can send email
+        to <a href="mailto:dealii@googlegroups.com">dealii@googlegroups.com</a>. Or
+        just post from the window below. Note that you have to be a
+        group member with your specific sender address in order to be
+        allowed to post there.
       </li>
     </ul>
+<iframe id="forum_embed"
+  src="javascript:void(0)"
+  scrolling="no"
+  frameborder="0"
+  width="900"
+  height="700">
+</iframe>
+<script type="text/javascript">
+  document.getElementById('forum_embed').src =
+     "https://groups.google.com/forum/embed/?place=forum/dealii&showsearch=false&showpopout=true&showtabs=false&hideforumtitle=true";
+</script>
     <br>
      
     <h2>
      
     <hr>
     <address>
-      <a href="mail.html" target="body">The deal.II mailing list</a>
+      <a href="mail.html" target="body">The deal.II Group</a>
     </address>
 <div class="right">
   <p>
diff --git a/deal.II/doc/news/7.1.0-vs-7.2.0.h b/deal.II/doc/news/7.1.0-vs-7.2.0.h
new file mode 100644 (file)
index 0000000..94f3a16
--- /dev/null
@@ -0,0 +1,750 @@
+/**
+ * @page changes_between_7_1_and_7_2 Changes between Version 7.1 and 7.2
+
+<p>
+This is the list of changes made between the release of
+deal.II version 7.1.0 and that of 7.2.0.
+All entries are signed with the names of the author.
+</p>
+
+
+
+<!-- ----------- INCOMPATIBILITIES ----------------- -->
+
+<a name="incompatible"></a>
+<h3 style="color:red">Incompatibilities</h3>
+
+<p style="color:red">
+Following are a few modifications to the library that unfortunately
+are incompatible with previous versions of the library, but which we
+deem necessary for the future maintainability of the
+library. Unfortunately, some of these changes will require
+modifications to application programs. We apologize for the
+inconvenience this causes.
+</p>
+
+<ol>
+<li> Changed/fixed: Several operations on Trilinos vectors that change the
+elements of these vectors were allowed accidentally for vectors that have
+ghost elements. This is a source of errors because a change on one
+MPI process will not show up on a different processor. Consequently, we
+intended to disallow all functions that modify vectors with ghost elements
+but this was not enforced for all of these functions. This is now fixed
+but it may lead to errors if your code relied on the existing behavior. The
+way to work around this is to only ever modify fully distributed vectors,
+and then copy it into a vector with ghost elements.
+<br>
+(Wolfgang Bangerth, 2012/08/06)
+
+<li> Changed: The argument material_id of the estimate-functions of
+the KellyErrorEstimator class is now of type types::material_id
+with default value numbers::invalid_material_id, instead of type
+unsigned int with default value numbers::invalid_unsigned_int. This
+should not make a difference to most users unless you specified the
+argument's default value by hand.
+<br>
+(Wolfgang Bangerth, Christian Goll 2012/02/27)
+
+<li>
+The member functions Triangulation::set_boundary and
+Triangulation::get_boundary now take a types::boundary_id instead of
+an unsigned int as argument. This now matches the actual data type
+used to store boundary indicators internally.
+<br>
+(Wolfgang Bangerth, Christian Goll 2012/02/27)
+</ol>
+
+
+<!-- ----------- GENERAL IMPROVEMENTS ----------------- -->
+
+<a name="general"></a>
+<h3>General</h3>
+
+
+<ol>
+<li>
+New: We now support parallel output using HDF5/xdmf.
+<br>
+(Eric Heien, Timo Heister, 2012/08/28)
+
+<li>
+New: We are now compatible with Trilinos 10.4.2, 10.8.5, and 10.12.2. See the
+readme for more information.
+<br>
+(Timo Heister, 2012/08/24)
+
+<li>
+Changed: To make the naming of types defined in namespace types
+consistent, we have renamed types::subdomain_id_t to
+types::subdomain_id. The old name has been retained as a typedef
+but is now deprecated.
+<br>
+(Wolfgang Bangerth, 2012/08/22)
+
+<li>
+Changed: Unify the concept of compress() for all linear algebra
+objects. Introduce type VectorOperation to decide between
+add and insert. Implement also for serial vectors. Note:
+this breaks distributed::vector::compress(bool). See
+@ref GlossCompress for more information.
+<br>
+(Timo Heister, 2012/08/13)
+
+<li>
+Changed: Support for the METIS 4.x has been replaced with support for
+METIS 5.x. Use <code>--with-metis=path/to/metis</code> to configure
+with METIS 5.x.
+<br>
+(Stefano Zampini, Toby D. Young 2012/08/13)
+
+<li>
+Changed: numerics/vectors.h is now called numerics/vector_tools.h and
+numerics/matrices.h is now called numerics/matrix_tools.h The old files are
+deprecated.
+<br>
+(Timo Heister 2012/08/09)
+
+<li>
+New: officially added support for clang 3.1 or newer.
+<br>
+(Timo Heister and Wolfgang Bangerth, 2012/08/07)
+
+<li>
+Changed: PETSc linking now prefers to use the libpetsc.so generated
+by PETSc starting from version 3.1+. This fixes the problem
+of linker errors on recent gcc/ubuntu versions.
+<br>
+(Timo Heister, 2012/08/07)
+
+<li>
+Fixed: On some 64-bit systems, we build deal.II with the <code>-m64</code>
+flag but forgot to build UMFPACK with this flag as well, leading to
+linker errors. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2012/07/31)
+
+Fixed: The Intel compiler, when using MPI, wants that <code>mpi.h</code>
+is included before header files like <code>stdio.h</code>. This can't
+be ensured in general because the inclusion might be indirectly, but
+we now work around the problem in other ways.
+<br>
+(Timo Heister, Wolfgang Bangerth, Michael Thomadakis, 2012/07/26)
+
+<li>
+Fixed: On some systems, the p4est library we use for distributed
+parallel computations installs its libraries into a <code>lib64/</code>
+directory instead of the usual <code>lib/</code>. deal.II can now deal
+with this.
+<br>
+(Wolfgang Bangerth, 2012/07/25)
+
+<li>
+New: step-43 is an extension of step-21 that shows efficient methods
+to solve multi-phase flow.
+<br>
+(Chih-Che Chueh, Wolfgang Bangerth, 2012/06/06)
+
+<li>
+New: step-15 has been replaced by a program that demonstrates the
+solution of nonlinear problem (the minimal surface equation) using
+Newton's method.
+<br>
+(Sven Wetterauer, 2012/06/03)
+
+<li>
+New: step-48 demonstrates the solution of a nonlinear wave equation
+with an explicit time stepping method. The usage of Gauss-Lobatto
+elements gives diagonal mass matrices, which obviates the solution of
+linear systems of equations. The nonlinear right hand side is
+evaluated with the matrix-free framework.
+<br>
+(Katharina Kormann and Martin Kronbichler, 2012/05/05)
+
+<li>
+New: step-37 shows how the matrix-free framework can be utilized to
+efficiently solve the Poisson equation without building global
+matrices. It combines fast operator evaluation with a multigrid solver
+based on polynomial Chebyshev smoother.
+<br>
+(Katharina Kormann and Martin Kronbichler, 2012/05/05)
+
+<li>
+New: A new matrix-free interface has been implemented. The framework
+is parallelized with MPI, TBB, and explicit vectorization instructions
+(new data type VectorizedArray). The class MatrixFree caches
+cell-based data in an efficient way. Common operations can be
+implemented using the FEEvaluation class.
+<br>
+(Katharina Kormann and Martin Kronbichler, 2012/05/05)
+
+<li>
+New: step-44 demonstrates one approach to modeling large
+deformations of nearly-incompressible elastic solids. The
+elastic response is governed by a non-linear, hyperelastic
+free-energy function. The geometrical response is also
+nonlinear, i.e., the program considers finite deformations.
+<br>
+(Andrew McBride and Jean-Paul Pelteret, 2012/04/25)
+
+<li>
+New: step-41 demonstrates solving the obstacle problem,
+a variational inequality.
+<br>
+(Joerg Frohne, 2012/04/22)
+
+<li>
+Changed: The version of BOOST we ship with deal.II has been upgraded
+to 1.49.0.
+<br>
+(Martin Kronbichler, 2012/04/07)
+
+<li>
+New: We have added a brief section to the step-12 tutorial programs that
+compares the DG solution computed there with one that one would obtain by
+using a continuous finite element.
+<br>
+(Wolfgang Bangerth, 2012/03/25)
+
+<li>
+New: Added support for codimension 2, i.e. for dim-dimensional objects
+embedded into spacedim=dim+2 dimensional space.
+<br>
+(Sebastian Pauletti, 2012/03/02)
+
+<li> Changed: Material and Boundary indicators have been both of the
+type unsigned char. Throughout the library, we changed their datatype
+to <code>types::material_id</code>
+resp. <code>types::boundary_id</code>, both typedefs of unsigned
+char. Internal faces are now characterized by
+numbers::internal_face_boundary_id(<code>=static_cast@<types::boundary_id@>(-1)</code>)
+instead of 255, so we get rid of that mysterious number in the source
+code.  Material_ids are also assumed to lie in the range from 0 to
+numbers::invalid_material_id-1 (where <code>numbers::invalid_material_id =
+static_cast<types::material_id>(-1)</code>). With this change, it is now
+much easier to extend the range of boundary or material ids, if
+needed.
+<br>
+(Christian Goll 2012/02/27)
+
+<li> New: Functions like FEValues::get_function_values have long been
+able to extract values from pretty much any vector kind given to it (e.g.
+of kind Vector, BlockVector, PETScWrappers::Vector, etc). The list of
+allowed "vector" types now also includes IndexSet, which is interpreted
+as a vector of elements that are either zero or one, depending on whether
+an index is in the IndexSet or not.
+<br>
+As a consequence of this, the DataOut::add_data_vector functions now also
+work for such types of vectors, a use demonstrated in step-41.
+<br>
+(Wolfgang Bangerth, 2012/02/14)
+
+<li> New: It has long been a nuisance that the deal.II vector classes
+could only be accessed using <code>operator()</code> whereas the C++
+<code>std::vector</code> class required <code>operator[]</code>. This
+diminished the usefulness of template code. Historically, the reason
+was that the deal.II vector classes should use the same operator as
+the matrix classes, and C++ does not allow to use <code>operator[]</code>
+for matrices since this operator can only take a single argument.
+<br>
+In any case, all deal.II vector classes now support both kinds of
+access operators interchangeably.
+<br>
+(Wolfgang Bangerth, 2012/02/12)
+
+<li> Fixed: Linking shared libraries on PowerPC systems (e.g. on
+BlueGene systems) failed due to a miscommunication between compiler
+and linker. This is now worked around.
+<br>
+(Aron Ahmedia, Wolfgang Bangerth, 2012/02/06)
+
+<li> New: There is now a distributed deal.II vector class
+parallel::distributed::Vector that can be used with MPI. The
+vector is based on a contiguous locally owned range and allows easy
+access of ghost entries from other processors. The vector interface is
+very similar to the non-distributed class Vector<Number>.
+<br>
+(Katharina Kormann, Martin Kronbichler, 2012/01/25)
+
+<li> Fixed: The <code>common/scripts/make_dependencies</code> program
+now behaves like the C++ compiler when
+searching include paths for <code># include "..."</code> directives.
+<br>
+(Timo Heister, 2012/01/10)
+
+<li> Fixed: The Intel compiler complains that it can't copy Trilinos vector
+reference objects, preventing the compiling of step-32. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/11/09)
+
+<li> Fixed: Intel ICC 12.1 gets into trouble with BOOST because BOOST
+believes that the compiler supports C++0x but one then still has to
+specify the corresponding flag on the command line to avoid compiler
+errors. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/11/06)
+
+<li> Fixed: On some systems, <code>mpiCC</code> turns out to alias the
+C compiler, not the C++ compiler as expected. Consequently, try to use
+<code>mpic++</code> or <code>mpicxx</code> before <code>mpiCC</code> as
+these should really be unambiguous.
+<br>
+(Wolfgang Bangerth, 2011/11/05)
+
+<li> Fixed: Intel's ICC compiler identifies itself as <code>icpc version
+12.1.0 (gcc version 4.2.1 compatibility)</code> which we mistook as being
+GCC version 4.2. The same is true for the Intel C compiler. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/11/05)
+
+<li> Fixed: deal.II could not be compiled with gcc 4.6.1 when MPI is
+enabled due to a missing include file in file
+<code>source/base/utilities.cc</code>. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/10/25)
+</ol>
+
+
+<!-- ----------- SPECIFIC IMPROVEMENTS ----------------- -->
+
+<a name="specific"></a>
+<h3>Specific improvements</h3>
+
+<ol>
+<li> Changed: To support Trilinos version 10.12.x we need to cache the
+result of has_ghost_elements() in parallel vectors at construction time
+of the vector. Starting from 10.12 Trilinos will communicate in this
+call, which therefore only works if called from all CPUs.
+<br>
+(Timo Heister, 2012/08/22)
+
+<li> New: The copy constructor of FullMatrix from IdentityMatrix
+used to be explicit, but that didn't appear to be necessary in hindsight.
+Consequently, it is now a regular copy constructor.
+<br>
+(Wolfgang Bangerth, 2012/08/14)
+
+<li> New: The Patterns::Map pattern allows to describe maps from keys
+to values in input files.
+<br>
+(Wolfgang Bangerth, 2012/08/01)
+
+<li> Fixed: DoFTools::make_zero_boundary_constraints now also works for parallel distributed triangulations.
+<br>
+(Wolfgang Bangerth, 2012/07/24)
+
+<li> Fixed: GridTools::find_active_cell_around_point() works now also if the cell in which the point we look for lies is not adjacent to the closest vertex of p. The tests bits/find_cell_8 and _9 illustrate this.
+<br>
+(Wolfgang Bangerth, Christian Goll 2012/07/20)
+
+<li> Fixed: Using the SolutionTransfer class with hp::DoFHandler
+and on meshes where some cells are associated with a FE_Nothing element
+could result in an error. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2012/06/29)
+
+<li> Fixed: The MappingQ1::transform_real_to_unit_cell function as
+well as the equivalent ones in derived classes sometimes get into
+trouble if they are asked to compute the preimage of this point
+in reference cell coordinates. This is because for points outside
+the reference cell, the mapping from unit to real cell is not
+necessarily invertible, and consequently the Newton iteration to
+find the preimage did not always converge, leading to an exception.
+While this is not entirely wrong (we could, after all, not compute
+the desired quantity), not all callers of this function were prepared
+to accept this result -- in particular, the function
+CellAccessor<3>::point_inside should have really just returned false
+in such cases but instead let the exception so generated propagate
+through. This should now be fixed.
+<br>
+(Wolfgang Bangerth, Eric Heien, Sebastian Pauletti, 2012/06/27)
+
+<li> Fixed: The function VectorTools::compute_no_normal_flux_constraints had
+a bug that led to an exception whenever we were computing constraints for
+vector fields located on edges shared between two faces of a 3d cell if those
+faces were not parallel to the axes of the coordinate system. This is now fixed.
+<br>
+(Wolfgang Bangerth, Jennifer Worthen, 2012/06/27)
+
+<li>
+Fixed: Due to an apparent bug in autoconf, it was not possible to
+override the <code>F77</code> environment variable to select anything
+else than gfortran. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2012/06/08)
+
+<li> Fixed: TrilinosWrappers::VectorBase::swap() is now working as expected. (thanks Uwe K&ouml;cher)
+<br>
+(Timo Heister 2012/07/03)
+
+<li> Fixed: Some instantiations for
+DerivativeApproximation::approximate_derivative_tensor() were missing.
+<br>
+(Timo Heister 2012/06/07)
+
+<li> New: The finite element type FE_DGQArbitraryNodes is now
+working also in codimension one spaces.
+<br>
+(Luca Heltai, Andrea Mola 2012/06/06)
+
+<li> Fixed: Computing the $W^{1,\infty}$ norm and seminorm in
+VectorTools::integrate_difference was not implemented. This is now
+fixed.
+<br>
+(Wolfgang Bangerth 2012/06/02)
+
+<li> Fixed: A problem in MappingQ::transform_real_to_unit_cell
+that sometimes led the algorithm in this function to abort.
+<br>
+(Wolfgang Bangerth 2012/05/30)
+
+<li> New: The function DataOutInterface::write_pvd_record can be used
+to provide Paraview with metadata that describes which time in a
+simulation a particular output file corresponds to.
+<br>
+(Marco Engelhard 2012/05/30)
+
+<li> Fixed: A bug in 3d with hanging nodes in GridTools::find_cells_adjacent_to_vertex()
+that caused find_active_cell_around_point() to fail in those cases.
+<br>
+(Timo Heister, Wolfgang Bangerth 2012/05/30)
+
+<li> New: DoFTools::make_periodicity_constraints implemented which
+inserts algebraic constraints due to periodic boundary conditions
+into a ConstraintMatrix.
+<br>
+(Matthias Maier, 2012/05/22)
+
+<li> New: The GridIn::read_unv function can now read meshes generated
+by the Salome framework, see http://www.salome-platform.org/ .
+<br>
+(Valentin Zingan, 2012/04/27)
+
+<li> New: There is now a second DoFTools::map_dofs_to_support_points
+function that also works for parallel::distributed::Triangulation
+triangulations.
+<br>
+(Wolfgang Bangerth, 2012/04/26)
+
+<li> New: There is now a second DoFTools::extract_boundary_dofs
+function that also works for parallel::distributed::Triangulation
+triangulations.
+<br>
+(Wolfgang Bangerth, 2012/04/26)
+
+<li> New: The FullMatrix::extract_submatrix_from, FullMatrix::scatter_matrix_to,
+FullMatrix::set functions are new.
+<br>
+(Andrew McBride, Jean Paul Pelteret, Wolfgang Bangerth, 2012/04/24)
+
+<li> Fixed:
+The method FEValues<dim>::inverse_jacobian() previously returned the transpose of the
+inverse Jacobians instead of just the inverse Jacobian as documented. This is now fixed.
+<br>
+(Sebastian Pauletti, Katharina Kormann, Martin Kronbichler, 2012/03/11)
+
+<li> Extended:
+SolutionTransfer is now also able to transfer solutions between hp::DoFHandler where
+the finite element index changes during refinement.
+<br>
+(Katharina Kormann, Martin Kronbichler, 2012/03/10)
+
+<li> Changed:
+A new method to determine an initial guess for the Newton method was coded
+in MappingQ::transform_real_to_unit_cell.
+The code in transform_real_to_unit_cell was cleaned a little bit and a new code
+for the @<2,3@> case was added.
+<br>
+(Sebastian Pauletti, 2012/03/02)
+
+<li> Changed:
+In the context of codim@>0, Mapping::transform would require different inputs
+depending on the mapping type.
+For mapping_covariant, mapping_contravariant the input is DerivativeForm<1, dim, spacedim>
+but for mapping_covariant_gradient,  mapping_contravariant_gradient the input is Tensor<2,dim>.
+<br>
+(Sebastian Pauletti,  2012/03/02)
+
+<li> New:
+A new class DerivativeForm was added.
+This class is supposed to represent the derivatives of a mapping.
+<br>
+(Sebastian Pauletti, 2012/03/02)
+
+<li> Fixed: TrilinosWrappers::Vector::all_zero() in parallel.
+<br>
+(Timo Heister, J&ouml;rg Frohne, 2012/03/06)
+
+<li> New: GridGenerator::quarter_hyper_shell() in 3d.
+<br>
+(Thomas Geenen, 2012/03/05)
+
+<li> New: DataOut::write_vtu_in_parallel(). This routine uses MPI I/O to write
+a big vtu file in parallel.
+<br>
+(Timo Heister, 2012/02/29)
+
+<li> Fixed: parallel::distributed::Triangulation::clear() forgot
+to update the number cache of this class, leading to wrong results
+when calling functions like
+parallel::distributed::Triangulation::n_global_active_cells();
+<br>
+(Wolfgang Bangerth, 2012/02/20)
+
+<li> Improved: FEFieldFunction allows now for the computation of Laplacians.
+<br>
+(Christian Goll, 2012/02/16)
+
+<li> New: The function IndexSet::fill_binary_vector creates a numerical
+representation of an IndexSet containing zeros and ones.
+<br>
+(Wolfgang Bangerth, 2012/02/12)
+
+<li> New: The function IndexSet::clear resets an index set to be empty.
+<br>
+(Wolfgang Bangerth, 2012/02/12)
+
+<li> New: There are now global functions l1_norm() and linfty_norm() that compute
+the respective norms of a rank-2 tensor.
+<br>
+(Wolfgang Bangerth, 2012/02/08)
+
+<li> New: VectorTools::interpolate_to_different_mesh implemented which interpolates between
+     DoFHandlers with different triangulations based on a common coarse grid.
+<br>
+(Matthias Maier, 2012/02/08)
+
+<li> Improved: DoFTools::map_dofs_to_support_points() now also works within the hp framework.
+<br>
+(Christian Goll, 2012/02/02)
+
+<li> Improved: There is now a constructor for FESystem that allows to
+create collections of finite elements of arbitrary length.
+<br>
+(Jason Sheldon, 2012/01/27)
+
+<li> Improved: VectorTools::point_value() now also works within the hp framework.
+<br>
+(Christian Goll, 2012/01/26)
+
+<li> Fixed: GridTools::find_active_cell_around_point() for the hp-case works now also with MappingCollections containing only one mapping, as is the standard case in other functions using hp.
+<br>
+(Christian Goll, 2012/01/26)
+
+<li> Fixed: parallel::distributed::refine_and_coarsen_fixed_fraction()
+contained a rounding bug that often produced wrong results.
+<br>
+(Timo Heister, 2012/01/24)
+
+<li> Improved: Utilities::break_text_into_lines now also splits the string at '\\n'.
+<br>
+(Timo Heister, 2012/01/17)
+
+<li> Fixed: When <code>./configure</code> does not detect the presence
+of <code>zlib</code>, writing output in VTU format failed to produce
+a valid output file.
+<br>
+(Timo Heister, 2012/01/03)
+
+<li> Improved: <code>PETScWrappers::SolverXXX</code> class was
+restricted to using default solver options for the KSP only. It is now
+possible to override those by using PETSc command-line options
+<code>-ksp_*</code>; giving greater flexibility in controlling PETSc
+solvers. (See the class's documentation).
+<br>
+(Vijay S. Mahadevan, 2011/12/22)
+
+<li> New: The GridIn class now also reads the GMSH format 2.2 as written by
+GMSH 2.5.
+<br>
+(Vijay S. Mahadevan, Wolfgang Bangerth, 2011/12/19)
+
+<li> Improved: The GridRefinement::refine_and_coarsen_optimize function
+assumed that the expected convergence order was 2. It has now gotten an
+argument by which the user can prescribe a different value. A bug has also
+been fixed in which the function incorrectly assumed in its algorithm that
+the mesh was two-dimensional.
+<br>
+(Christian Goll, 2011/12/16)
+
+<li> Fixed: Restriction and prolongation didn't work for elements of
+kind FE_Nothing. Consequently, many other parts of the library also
+didn't work, such as the SolutionTransfer class. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/12/15)
+
+<li> Fixed: The DerivativeApproximation class now works for distributed computations.
+<br>
+(Timo Heister, 2011/12/15)
+
+<li> Changed: The ExcMessage exception class took an argument of
+type <code>char*</code> that was displayed when the exception
+was raised. However, character pointers are awkward to work with
+because (i) they can not easily be composed to contain things like
+file names that are only known at run-time, and (ii) the string
+pointed to by the pointer had to live longer than the local expression
+in which the exception is generated when using the AssertThrow macro
+(because, when we create an exception, the exception object is passed
+up the call stack until we find a catch-clause; at that time, however,
+the scope in which the exception object was created has long been left).
+This restriction made it impossible to construct the message using std::string
+and then just do something like <code>(std::string("file: ")+filename).c_str()</code>.
+<br>
+To remedy this flaw, the type of the argument to ExcMessage has been
+changed to std::string since objects of this type are readily copyable
+and therefore live long enough.
+<br>
+(Wolfgang Bangerth, 2011/12/14)
+
+<li> New: Setting up a class derived from DataPostprocessor required some
+pretty mechanical steps in which one has to overload four member functions.
+For common cases where a postprocessor only computes a single scalar or
+a single vector, this is tedious and unnecessary. For these cases, the
+new classes DataPostprocessorScalar and DataPostprocessorVector provide
+short cuts that make life simpler.
+<br>
+(Wolfgang Bangerth, 2011/12/14)
+
+<li> Changed: The DataPostprocessor class previously required users of this
+class to overload DataPostprocessor::get_names(),
+DataPostprocessor::get_data_component_interpretation()
+and DataPostprocessor::n_output_variables(). The latter function is redundant
+since its output must equal the length of the arrays returned by the
+first two of these functions. It has therefore been removed.
+<br>
+(Wolfgang Bangerth, 2011/12/14)
+
+<li> Improved: Objects of the type LogStream::Prefix can now be used
+as a safe implementation of the push and pop mechanism for log
+prefices.
+<br>
+(Guido Kanschat, 2011/12/09)
+
+<li> New: IndexSet::add_indices(IndexSet).
+<br>
+(Timo Heister, 2011/12/09)
+
+<li> Fixed: Finite element Hessians get computed for codimension one,
+at least for FE_Poly derived classes.
+<br>
+(Guido Kanschat, 2011/12/07)
+
+<li> Changed: Output of ParameterHandler::print_parameters with argument
+ParameterHandler::LaTeX was not particularly readable. The output has
+therefore been rewritten to be more structured and readable.
+<br>
+(Wolfgang Bangerth, 2011/11/28)
+
+<li> Fixed: The TimerOutput class set the alignment of output to right-aligned
+under some circumstances, but didn't reset this to the previous value at the
+end of output. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/11/28)
+
+<li> New: The copy constructor of the SparseMatrixEZ function now works
+(rather than throwing an exception) if the copied matrix has size zero.
+This is in accordance to the other matrix classes.
+<br>
+(Wolfgang Bangerth, 2011/11/15)
+
+<li> New: The class ScalarFunctionFromFunctionObject provides a quick way to
+convert an arbitrary function into a function object that can be passed
+to part of the library that require the Function@<dim@> interface.
+The VectorFunctionFromScalarFunctionObject class does a similar thing.
+<br>
+(Wolfgang Bangerth, 2011/11/15)
+
+<li> New: The DoFTools::count_dofs_per_block function now also works
+for objects of type hp::DoFHandler.
+<br>
+(Jason Sheldon, 2011/11/13)
+
+<li> New: FETools::get_fe_from_name() can now return objects of type FE_Nothing.
+<br>
+(Scott Miller, Jonathan Pitt, 2011/11/10)
+
+<li> New: Implementation of an alternative handling of
+inhomogeneous constraints in ConstraintMatrix. This is controlled with
+a new parameter use_inhomogeneities_for_rhs in
+distribute_local_to_global() and determines whether the correct or
+zero values (this was the case before and still is the default) are
+kept in the linear system during the solution process.
+<br>
+(J&ouml;rg Frohne, 2011/11/01)
+
+<li> Fixed: SparseMatrix::mmult and SpareMatrix::Tmmult had a number of
+issues that are now fixed: (i) rebuilding the sparsity pattern was allowed
+even if several of the matrices involved in these operations shared a
+sparsity pattern; (ii) the functions had a vector argument that had a default
+value but the default value could not be used because it wasn't used in a
+template context deducible by the compiler.
+<br>
+(Wolfgang Bangerth, 2011/10/30)
+
+<li> New:
+parallel::distributed::Triangulation::mesh_reconstruction_after_repartitioning
+setting which is necessary for save()/load() to be deterministic. Otherwise
+the matrix assembly is done in a different order depending on the order of old
+refinements.
+<br>
+(Timo Heister, 2011/10/26)
+
+<li> New: TriaAccessor<>::minimum_vertex_distance().
+<br>
+(Timo Heister, 2011/10/25)
+
+<li> New: TableHandler::print_text now supports not only printing column
+keys above their own column, but also in a separate header, to make it simpler
+for external plotting programs to skip this line.
+<br>
+(Wolfgang Bangerth, 2011/10/22)
+
+<li> Fixed: Trying to write a TableHandler object that is empty resulted
+in a segmentation fault. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/10/21)
+
+<li> New: The TableHandler class can now pad columns that have only been
+partially filled. See the documentation of the class for a description.
+<br>
+(Wolfgang Bangerth, 2011/10/18)
+
+<li> Fixed: In TableHandler::print_text, it can happen that the function
+wants to print an empty string as the element of the table to be printed.
+This can confuse machine readers of this table, for example for visualization,
+since they then do not see this column in that row. To prevent this, we now
+print <code>""</code> in such places.
+<br>
+(Wolfgang Bangerth, 2011/10/18)
+
+<li> Fixed: Using Trilinos versions 10.4 and later on Debian failed to
+configure due to a different naming scheme of Trilinos libraries on
+Debian. This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/10/17)
+
+<li> Changed: The TableHandler class has been changed significantly
+internally.  It could previously store arbitrary values (though in practice,
+only int, unsigned int, double and std::string were implemented). The class is
+now restricted to this particular set of types. On the other hand, the
+TableHandler class can now be serialized.
+<br>
+(Wolfgang Bangerth, 2011/10/17)
+
+<li> Fixed: searching in the doxygen documentation.
+<br>
+(Timo Heister, 2011/10/13)
+
+<li> New: parallel::distributed::Triangulation::save()/load() to store
+the refinement information to disk. Also supports saving solution vectors
+using the SolutionTransfer class.
+<br>
+(Timo Heister, 2011/10/12)
+
+<li> Fixed: The DataOut_DoFData::merge_patches did not compile with newer compilers.
+This is now fixed.
+<br>
+(Wolfgang Bangerth, 2011/10/11)
+</ol>
+
+
+*/
index 9fbc5f42bc3bee726cffe05f486af5832f368f08..649e991a9670b5670a901685d68906abfa8a7c7d 100644 (file)
@@ -1,9 +1,9 @@
 /**
- * @page changes_after_7_1 Changes after Version 7.1
+ * @page changes_after_7_2 Changes after Version 7.2
 
 <p>
 This is the list of changes made after the release of
-deal.II version 7.1.0.
+deal.II version 7.2.0.
 All entries are signed with the names of the author.
 </p>
 
@@ -24,34 +24,12 @@ inconvenience this causes.
 </p>
 
 <ol>
-<li> Changed/fixed: Several operations on Trilinos vectors that change the
-elements of these vectors were allowed accidentally for vectors that have
-ghost elements. This is a source of errors because a change on one
-MPI process will not show up on a different processor. Consequently, we
-intended to disallow all functions that modify vectors with ghost elements
-but this was not enforced for all of these functions. This is now fixed
-but it may lead to errors if your code relied on the existing behavior. The
-way to work around this is to only ever modify fully distributed vectors,
-and then copy it into a vector with ghost elements.
+<li> Changed: the optional argument offset got removed from
+DoFHandler and MGDoFHandler::distribute_dofs() because it was
+never working correctly and it is not used.
 <br>
-(Wolfgang Bangerth, 2012/08/06)
+(Timo Heister, 2012/09/03)
 
-<li> Changed: The argument material_id of the estimate-functions of
-the KellyErrorEstimator class is now of type types::material_id_type
-with default value types::invalid_material_id, instead of type
-unsigned int with default value numbers::invalid_unsigned_int. This
-should not make a difference to most users unless you specified the
-argument's default value by hand.
-<br>
-(Wolfgang Bangerth, Christian Goll 2012/02/27)
-
-<li>
-The member functions Triangulation::set_boundary and
-Triangulation::get_boundary now take a types::boundary_id_t instead of
-an unsigned int as argument. This now matches the actual data type
-used to store boundary indicators internally.
-<br>
-(Wolfgang Bangerth, Christian Goll 2012/02/27)
 </ol>
 
 
@@ -62,197 +40,7 @@ used to store boundary indicators internally.
 
 
 <ol>
-<li>
-New: officially added support for clang 3.1 or newer.
-<br>
-(Timo Heister and Wolfgang Bangerth, 2012/08/07)
-
-<li>
-Changed: PETSc linking now prefers to use the libpetsc.so generated
-by PETSc starting from version 3.1+. This fixes the problem
-of linker errors on recent gcc/ubuntu versions.
-<br>
-(Timo Heister, 2012/08/07)
-
-<li>
-Fixed: On some 64-bit systems, we build deal.II with the <code>-m64</code>
-flag but forgot to build UMFPACK with this flag as well, leading to
-linker errors. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2012/07/31)
-
-Fixed: The Intel compiler, when using MPI, wants that <code>mpi.h</code>
-is included before header files like <code>stdio.h</code>. This can't
-be ensured in general because the inclusion might be indirectly, but
-we now work around the problem in other ways.
-<br>
-(Timo Heister, Wolfgang Bangerth, Michael Thomadakis, 2012/07/26)
-
-<li>
-Fixed: On some systems, the p4est library we use for distributed
-parallel computations installs its libraries into a <code>lib64/</code>
-directory instead of the usual <code>lib/</code>. deal.II can now deal
-with this.
-<br>
-(Wolfgang Bangerth, 2012/07/25)
-
-<li>
-New: step-43 is an extension of step-21 that shows efficient methods
-to solve multi-phase flow.
-<br>
-(Chih-Che Chueh, Wolfgang Bangerth, 2012/06/06)
-
-<li>
-New: step-15 has been replaced by a program that demonstrates the
-solution of nonlinear problem (the minimal surface equation) using
-Newton's method.
-<br>
-(Sven Wetterauer, 2012/06/03)
-
-<li>
-New: step-48 demonstrates the solution of a nonlinear wave equation
-with an explicit time stepping method. The usage of Gauss-Lobatto
-elements gives diagonal mass matrices, which obviates the solution of
-linear systems of equations. The nonlinear right hand side is
-evaluated with the matrix-free framework.
-<br>
-(Katharina Kormann and Martin Kronbichler, 2012/05/05)
-
-<li>
-New: step-37 shows how the matrix-free framework can be utilized to
-efficiently solve the Poisson equation without building global
-matrices. It combines fast operator evaluation with a multigrid solver
-based on polynomial Chebyshev smoother.
-<br>
-(Katharina Kormann and Martin Kronbichler, 2012/05/05)
-
-<li>
-New: A new matrix-free interface has been implemented. The framework
-is parallelized with MPI, TBB, and explicit vectorization instructions
-(new data type VectorizedArray). The class MatrixFree caches
-cell-based data in an efficient way. Common operations can be
-implemented using the FEEvaluation class.
-<br>
-(Katharina Kormann and Martin Kronbichler, 2012/05/05)
-
-<li>
-New: step-44 demonstrates one approach to modeling large
-deformations of nearly-incompressible elastic solids. The
-elastic response is governed by a non-linear, hyperelastic
-free-energy function. The geometrical response is also
-nonlinear, i.e., the program considers finite deformations.
-<br>
-(Andrew McBride and Jean-Paul Pelteret, 2012/04/25)
-
-<li>
-Changed: The version of BOOST we ship with deal.II has been upgraded
-to 1.49.0.
-<br>
-(Martin Kronbichler, 2012/04/07)
-
-<li>
-New: We have added a brief section to the step-12 tutorial programs that
-compares the DG solution computed there with one that one would obtain by
-using a continuous finite element.
-<br>
-(Wolfgang Bangerth, 2012/03/25)
-
-<li>
-New: Added support for codimension 2, i.e. for dim-dimensional objects
-embedded into spacedim=dim+2 dimensional space.
-<br>
-(Sebastian Pauletti, 2012/03/02)
-
-<li> Changed: Material and Boundary indicators have been both of the
-type unsigned char. Throughout the library, we changed their datatype
-to <code>types::material_id_t</code>
-resp. <code>types::boundary_id_t</code>, both typedefs of unsigned
-char. Internal faces are now characterized by
-types::internal_face_boundary_id(<code>=static_cast@<boundary_id_t@>(-1)</code>)
-instead of 255, so we get rid of that mysterious number in the source
-code.  Material_ids are also assumed to lie in the range from 0 to
-types::invalid_material_id-1 (where <code>types::invalid_material_id =
-static_cast<material_id_t>(-1)</code>). With this change, it is now
-much easier to extend the range of boundary or material ids, if
-needed.
-<br>
-(Christian Goll 2012/02/27)
-
-<li> New: Functions like FEValues::get_function_values have long been
-able to extract values from pretty much any vector kind given to it (e.g.
-of kind Vector, BlockVector, PETScWrappers::Vector, etc). The list of
-allowed "vector" types now also includes IndexSet, which is interpreted
-as a vector of elements that are either zero or one, depending on whether
-an index is in the IndexSet or not.
-<br>
-As a consequence of this, the DataOut::add_data_vector functions now also
-work for such types of vectors, a use demonstrated in step-41.
-<br>
-(Wolfgang Bangerth, 2012/02/14)
-
-<li> New: It has long been a nuisance that the deal.II vector classes
-could only be accessed using <code>operator()</code> whereas the C++
-<code>std::vector</code> class required <code>operator[]</code>. This
-diminished the usefulness of template code. Historically, the reason
-was that the deal.II vector classes should use the same operator as
-the matrix classes, and C++ does not allow to use <code>operator[]</code>
-for matrices since this operator can only take a single argument.
-<br>
-In any case, all deal.II vector classes now support both kinds of
-access operators interchangeably.
-<br>
-(Wolfgang Bangerth, 2012/02/12)
-
-<li> Fixed: Linking shared libraries on PowerPC systems (e.g. on
-BlueGene systems) failed due to a miscommunication between compiler
-and linker. This is now worked around.
-<br>
-(Aron Ahmedia, Wolfgang Bangerth, 2012/02/06)
-
-<li> New: There is now a distributed deal.II vector class
-parallel::distributed::Vector that can be used with MPI. The
-vector is based on a contiguous locally owned range and allows easy
-access of ghost entries from other processors. The vector interface is
-very similar to the non-distributed class Vector<Number>.
-<br>
-(Katharina Kormann, Martin Kronbichler, 2012/01/25)
-
-<li> Fixed: The <code>common/scripts/make_dependencies</code> program
-now behaves like the C++ compiler when
-searching include paths for <code># include "..."</code> directives.
-<br>
-(Timo Heister, 2012/01/10)
-
-<li> Fixed: The Intel compiler complains that it can't copy Trilinos vector
-reference objects, preventing the compiling of step-32. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/11/09)
-
-<li> Fixed: Intel ICC 12.1 gets into trouble with BOOST because BOOST
-believes that the compiler supports C++0x but one then still has to
-specify the corresponding flag on the command line to avoid compiler
-errors. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/11/06)
-
-<li> Fixed: On some systems, <code>mpiCC</code> turns out to alias the
-C compiler, not the C++ compiler as expected. Consequently, try to use
-<code>mpic++</code> or <code>mpicxx</code> before <code>mpiCC</code> as
-these should really be unambiguous.
-<br>
-(Wolfgang Bangerth, 2011/11/05)
-
-<li> Fixed: Intel's ICC compiler identifies itself as <code>icpc version
-12.1.0 (gcc version 4.2.1 compatibility)</code> which we mistook as being
-GCC version 4.2. The same is true for the Intel C compiler. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/11/05)
-
-<li> Fixed: deal.II could not be compiled with gcc 4.6.1 when MPI is
-enabled due to a missing include file in file
-<code>source/base/utilities.cc</code>. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/10/25)
+<li> Nothing so far.
 </ol>
 
 
@@ -262,428 +50,22 @@ enabled due to a missing include file in file
 <h3>Specific improvements</h3>
 
 <ol>
-<li> New: The Patterns::Map pattern allows to describe maps from keys
-to values in input files.
-<br>
-(Wolfgang Bangerth, 2012/08/01)
-
-<ol>
-<li> Fixed: DoFTools::make_zero_boundary_constraints now also works for parallel distributed triangulations.
-<br>
-(Wolfgang Bangerth, 2012/07/24)
-
-<li> Fixed: GridTools::find_active_cell_around_point() works now also if the cell in which the point we look for lies is not adjacent to the closest vertex of p. The tests bits/find_cell_8 and _9 illustrate this.
-<br>
-(Wolfgang Bangerth, Christian Goll 2012/07/20)
-
-<li> Fixed: Using the SolutionTransfer class with hp::DoFHandler
-and on meshes where some cells are associated with a FE_Nothing element
-could result in an error. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2012/06/29)
-
-<li> Fixed: The MappingQ1::transform_real_to_unit_cell function as
-well as the equivalent ones in derived classes sometimes get into
-trouble if they are asked to compute the preimage of this point
-in reference cell coordinates. This is because for points outside
-the reference cell, the mapping from unit to real cell is not
-necessarily invertible, and consequently the Newton iteration to
-find the preimage did not always converge, leading to an exception.
-While this is not entirely wrong (we could, after all, not compute
-the desired quantity), not all callers of this function were prepared
-to accept this result -- in particular, the function
-CellAccessor<3>::point_inside should have really just returned false
-in such cases but instead let the exception so generated propagate
-through. This should now be fixed.
-<br>
-(Wolfgang Bangerth, Eric Heien, Sebastian Pauletti, 2012/06/27)
-
-<li> Fixed: The function VectorTools::compute_no_normal_flux_constraints had
-a bug that led to an exception whenever we were computing constraints for
-vector fields located on edges shared between two faces of a 3d cell if those
-faces were not parallel to the axes of the coordinate system. This is now fixed.
-<br>
-(Wolfgang Bangerth, Jennifer Worthen, 2012/06/27)
-
-<li>
-Fixed: Due to an apparent bug in autoconf, it was not possible to
-override the <code>F77</code> environment variable to select anything
-else than gfortran. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2012/06/08)
-
-<li> Fixed: TrilinosWrappers::VectorBase::swap() is now working as expected. (thanks Uwe K&ouml;cher)
-<br>
-(Timo Heister 2012/07/03)
-
-<li> Fixed: Some instantiations for
-DerivativeApproximation::approximate_derivative_tensor() were missing.
-<br>
-(Timo Heister 2012/06/07)
-
-<li> New: The finite element type FE_DGQArbitraryNodes is now
-working also in codimension one spaces.
-<br>
-(Luca Heltai, Andrea Mola 2012/06/06)
-
-<li> Fixed: Computing the $W^{1,\infty}$ norm and seminorm in
-VectorTools::integrate_difference was not implemented. This is now
-fixed.
-<br>
-(Wolfgang Bangerth 2012/06/02)
-
-<li> Fixed: A problem in MappingQ::transform_real_to_unit_cell
-that sometimes led the algorithm in this function to abort.
-<br>
-(Wolfgang Bangerth 2012/05/30)
-
-<li> New: The function DataOutInterface::write_pvd_record can be used
-to provide Paraview with metadata that describes which time in a
-simulation a particular output file corresponds to.
-<br>
-(Marco Engelhard 2012/05/30)
-
-<li> Fixed: A bug in 3d with hanging nodes in GridTools::find_cells_adjacent_to_vertex()
-that caused find_active_cell_around_point() to fail in those cases.
-<br>
-(Timo Heister, Wolfgang Bangerth 2012/05/30)
-
-<li> New: DoFTools::make_periodicity_constraints implemented which
-inserts algebraic constraints due to periodic boundary conditions
-into a ConstraintMatrix.
-<br>
-(Matthias Maier, 2012/05/22)
-
-<li> New: The GridIn::read_unv function can now read meshes generated
-by the Salome framework, see http://www.salome-platform.org/ .
-<br>
-(Valentin Zingan, 2012/04/27)
-
-<li> New: There is now a second DoFTools::map_dofs_to_support_points
-function that also works for parallel::distributed::Triangulation
-triangulations.
-<br>
-(Wolfgang Bangerth, 2012/04/26)
-
-<li> New: There is now a second DoFTools::extract_boundary_dofs
-function that also works for parallel::distributed::Triangulation
-triangulations.
-<br>
-(Wolfgang Bangerth, 2012/04/26)
-
-<li> New: The FullMatrix::extract_submatrix_from, FullMatrix::scatter_matrix_to,
-FullMatrix::set functions are new.
-<br>
-(Andrew McBride, Jean Paul Pelteret, Wolfgang Bangerth, 2012/04/24)
-
-<li> Fixed:
-The method FEValues<dim>::inverse_jacobian() previously returned the transpose of the
-inverse Jacobians instead of just the inverse Jacobian as documented. This is now fixed.
-<br>
-(Sebastian Pauletti, Katharina Kormann, Martin Kronbichler, 2012/03/11)
-
-<li> Extended:
-SolutionTransfer is now also able to transfer solutions between hp::DoFHandler where
-the finite element index changes during refinement.
-<br>
-(Katharina Kormann, Martin Kronbichler, 2012/03/10)
-
-<li> Changed:
-A new method to determine an initial guess for the Newton method was coded
-in MappingQ::transform_real_to_unit_cell.
-The code in transform_real_to_unit_cell was cleaned a little bit and a new code
-for the @<2,3@> case was added.
-<br>
-(Sebastian Pauletti, 2012/03/02)
-
-<li> Changed:
-In the context of codim@>0, Mapping::transform would require different inputs
-depending on the mapping type.
-For mapping_covariant, mapping_contravariant the input is DerivativeForm<1, dim, spacedim>
-but for mapping_covariant_gradient,  mapping_contravariant_gradient the input is Tensor<2,dim>.
-<br>
-(Sebastian Pauletti,  2012/03/02)
-
-<li> New:
-A new class DerivativeForm was added.
-This class is supposed to represent the derivatives of a mapping.
-<br>
-(Sebastian Pauletti, 2012/03/02)
-
-<li> Fixed: TrilinosWrappers::Vector::all_zero() in parallel.
-<br>
-(Timo Heister, J&ouml;rg Frohne, 2012/03/06)
-
-<li> New: GridGenerator::quarter_hyper_shell() in 3d.
-<br>
-(Thomas Geenen, 2012/03/05)
-
-<li> New: DataOut::write_vtu_in_parallel(). This routine uses MPI I/O to write
-a big vtu file in parallel.
-<br>
-(Timo Heister, 2012/02/29)
-
-<li> Fixed: parallel::distributed::Triangulation::clear() forgot
-to update the number cache of this class, leading to wrong results
-when calling functions like
-parallel::distributed::Triangulation::n_global_active_cells();
-<br>
-(Wolfgang Bangerth, 2012/02/20)
-
-<li> Improved: FEFieldFunction allows now for the computation of Laplacians.
-<br>
-(Christian Goll, 2012/02/16)
-
-<li> New: The function IndexSet::fill_binary_vector creates a numerical
-representation of an IndexSet containing zeros and ones.
-<br>
-(Wolfgang Bangerth, 2012/02/12)
-
-<li> New: The function IndexSet::clear resets an index set to be empty.
-<br>
-(Wolfgang Bangerth, 2012/02/12)
-
-<li> New: There are now global functions l1_norm() and linfty_norm() that compute
-the respective norms of a rank-2 tensor.
-<br>
-(Wolfgang Bangerth, 2012/02/08)
-
-<li> New: VectorTools::interpolate_to_different_mesh implemented which interpolates between
-     DoFHandlers with different triangulations based on a common coarse grid.
-<br>
-(Matthias Maier, 2012/02/08)
-
-<li> Improved: DoFTools::map_dofs_to_support_points() now also works within the hp framework.
-<br>
-(Christian Goll, 2012/02/02)
-
-<li> Improved: There is now a constructor for FESystem that allows to
-create collections of finite elements of arbitrary length.
-<br>
-(Jason Sheldon, 2012/01/27)
-
-<li> Improved: VectorTools::point_value() now also works within the hp framework.
-<br>
-(Christian Goll, 2012/01/26)
-
-<li> Fixed: GridTools::find_active_cell_around_point() for the hp-case works now also with MappingCollections containing only one mapping, as is the standard case in other functions using hp.
-<br>
-(Christian Goll, 2012/01/26)
-
-<li> Fixed: parallel::distributed::refine_and_coarsen_fixed_fraction()
-contained a rounding bug that often produced wrong results.
-<br>
-(Timo Heister, 2012/01/24)
-
-<li> Improved: Utilities::break_text_into_lines now also splits the string at '\\n'.
-<br>
-(Timo Heister, 2012/01/17)
-
-<li> Fixed: When <code>./configure</code> does not detect the presence
-of <code>zlib</code>, writing output in VTU format failed to produce
-a valid output file.
-<br>
-(Timo Heister, 2012/01/03)
-
-<li> Improved: <code>PETScWrappers::SolverXXX</code> class was
-restricted to using default solver options for the KSP only. It is now
-possible to override those by using PETSc command-line options
-<code>-ksp_*</code>; giving greater flexibility in controlling PETSc
-solvers. (See the class's documentation).
-<br>
-(Vijay S. Mahadevan, 2011/12/22)
-
-<li> New: The GridIn class now also reads the GMSH format 2.2 as written by
-GMSH 2.5.
-<br>
-(Vijay S. Mahadevan, Wolfgang Bangerth, 2011/12/19)
-
-<li> Improved: The GridRefinement::refine_and_coarsen_optimize function
-assumed that the expected convergence order was 2. It has now gotten an
-argument by which the user can prescribe a different value. A bug has also
-been fixed in which the function incorrectly assumed in its algorithm that
-the mesh was two-dimensional.
-<br>
-(Christian Goll, 2011/12/16)
-
-<li> Fixed: Restriction and prolongation didn't work for elements of
-kind FE_Nothing. Consequently, many other parts of the library also
-didn't work, such as the SolutionTransfer class. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/12/15)
-
-<li> Fixed: The DerivativeApproximation class now works for distributed computations.
-<br>
-(Timo Heister, 2011/12/15)
-
-<li> Changed: The ExcMessage exception class took an argument of
-type <code>char*</code> that was displayed when the exception
-was raised. However, character pointers are awkward to work with
-because (i) they can not easily be composed to contain things like
-file names that are only known at run-time, and (ii) the string
-pointed to by the pointer had to live longer than the local expression
-in which the exception is generated when using the AssertThrow macro
-(because, when we create an exception, the exception object is passed
-up the call stack until we find a catch-clause; at that time, however,
-the scope in which the exception object was created has long been left).
-This restriction made it impossible to construct the message using std::string
-and then just do something like <code>(std::string("file: ")+filename).c_str()</code>.
-<br>
-To remedy this flaw, the type of the argument to ExcMessage has been
-changed to std::string since objects of this type are readily copyable
-and therefore live long enough.
-<br>
-(Wolfgang Bangerth, 2011/12/14)
-
-<li> New: Setting up a class derived from DataPostprocessor required some
-pretty mechanical steps in which one has to overload four member functions.
-For common cases where a postprocessor only computes a single scalar or
-a single vector, this is tedious and unnecessary. For these cases, the
-new classes DataPostprocessorScalar and DataPostprocessorVector provide
-short cuts that make life simpler.
-<br>
-(Wolfgang Bangerth, 2011/12/14)
-
-<li> Changed: The DataPostprocessor class previously required users of this
-class to overload DataPostprocessor::get_names(),
-DataPostprocessor::get_data_component_interpretation()
-and DataPostprocessor::n_output_variables(). The latter function is redundant
-since its output must equal the length of the arrays returned by the
-first two of these functions. It has therefore been removed.
-<br>
-(Wolfgang Bangerth, 2011/12/14)
-
-<li> Improved: Objects of the type LogStream::Prefix can now be used
-as a safe implementation of the push and pop mechanism for log
-prefices.
-<br>
-(Guido Kanschat, 2011/12/09)
-
-<li> New: IndexSet::add_indices(IndexSet).
-<br>
-(Timo Heister, 2011/12/09)
-
-<li> Fixed: Finite element Hessians get computed for codimension one,
-at least for FE_Poly derived classes.
-<br>
-(Guido Kanschat, 2011/12/07)
-
-<li> Changed: Output of ParameterHandler::print_parameters with argument
-ParameterHandler::LaTeX was not particularly readable. The output has
-therefore been rewritten to be more structured and readable.
-<br>
-(Wolfgang Bangerth, 2011/11/28)
-
-<li> Fixed: The TimerOutput class set the alignment of output to right-aligned
-under some circumstances, but didn't reset this to the previous value at the
-end of output. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/11/28)
-
-<li> New: The copy constructor of the SparseMatrixEZ function now works
-(rather than throwing an exception) if the copied matrix has size zero.
-This is in accordance to the other matrix classes.
-<br>
-(Wolfgang Bangerth, 2011/11/15)
-
-<li> New: The class ScalarFunctionFromFunctionObject provides a quick way to
-convert an arbitrary function into a function object that can be passed
-to part of the library that require the Function@<dim@> interface.
-The VectorFunctionFromScalarFunctionObject class does a similar thing.
-<br>
-(Wolfgang Bangerth, 2011/11/15)
-
-<li> New: The DoFTools::count_dofs_per_block function now also works
-for objects of type hp::DoFHandler.
-<br>
-(Jason Sheldon, 2011/11/13)
-
-<li> New: FETools::get_fe_from_name() can now return objects of type FE_Nothing.
-<br>
-(Scott Miller, Jonathan Pitt, 2011/11/10)
-
-<li> New: Implementation of an alternative handling of
-inhomogeneous constraints in ConstraintMatrix. This is controlled with
-a new parameter use_inhomogeneities_for_rhs in
-distribute_local_to_global() and determines whether the correct or
-zero values (this was the case before and still is the default) are
-kept in the linear system during the solution process.
-<br>
-(J&ouml;rg Frohne, 2011/11/01)
-
-<li> Fixed: SparseMatrix::mmult and SpareMatrix::Tmmult had a number of
-issues that are now fixed: (i) rebuilding the sparsity pattern was allowed
-even if several of the matrices involved in these operations shared a
-sparsity pattern; (ii) the functions had a vector argument that had a default
-value but the default value could not be used because it wasn't used in a
-template context deducible by the compiler.
-<br>
-(Wolfgang Bangerth, 2011/10/30)
-
-<li> New:
-parallel::distributed::Triangulation::mesh_reconstruction_after_repartitioning
-setting which is necessary for save()/load() to be deterministic. Otherwise
-the matrix assembly is done in a different order depending on the order of old
-refinements.
-<br>
-(Timo Heister, 2011/10/26)
-
-<li> New: TriaAccessor<>::minimum_vertex_distance().
-<br>
-(Timo Heister, 2011/10/25)
-
-<li> New: TableHandler::print_text now supports not only printing column
-keys above their own column, but also in a separate header, to make it simpler
-for external plotting programs to skip this line.
-<br>
-(Wolfgang Bangerth, 2011/10/22)
-
-<li> Fixed: Trying to write a TableHandler object that is empty resulted
-in a segmentation fault. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/10/21)
-
-<li> New: The TableHandler class can now pad columns that have only been
-partially filled. See the documentation of the class for a description.
-<br>
-(Wolfgang Bangerth, 2011/10/18)
-
-<li> Fixed: In TableHandler::print_text, it can happen that the function
-wants to print an empty string as the element of the table to be printed.
-This can confuse machine readers of this table, for example for visualization,
-since they then do not see this column in that row. To prevent this, we now
-print <code>""</code> in such places.
-<br>
-(Wolfgang Bangerth, 2011/10/18)
-
-<li> Fixed: Using Trilinos versions 10.4 and later on Debian failed to
-configure due to a different naming scheme of Trilinos libraries on
-Debian. This is now fixed.
-<br>
-(Wolfgang Bangerth, 2011/10/17)
-
-<li> Changed: The TableHandler class has been changed significantly
-internally.  It could previously store arbitrary values (though in practice,
-only int, unsigned int, double and std::string were implemented). The class is
-now restricted to this particular set of types. On the other hand, the
-TableHandler class can now be serialized.
-<br>
-(Wolfgang Bangerth, 2011/10/17)
-
-<li> Fixed: searching in the doxygen documentation.
+<li> New: TableHandler TextOutputFormat::simple_table_with_separate_column_description
+that skips aligning the columns for increased performance.
 <br>
-(Timo Heister, 2011/10/13)
+(Timo Heister, 2012/09/10)
 
-<li> New: parallel::distributed::Triangulation::save()/load() to store
-the refinement information to disk. Also supports saving solution vectors
-using the SolutionTransfer class.
+<li> Fixed: The Clang C++ compiler had some trouble dealing with obtaining
+the return value of a Threads::Task object, due to a compiler bug in
+dealing with friend declarations. This is now fixed.
 <br>
-(Timo Heister, 2011/10/12)
+(Wolfgang Bangerth, 2012/09/04)
 
-<li> Fixed: The DataOut_DoFData::merge_patches did not compile with newer compilers.
+<li> Fixed: When applying a ConstraintMatrix to a block matrix
+where the last few rows are empty, we ran into an unrelated assertion.
 This is now fixed.
 <br>
-(Wolfgang Bangerth, 2011/10/11)
+(Jason Sheldon, Wolfgang Bangerth, 2012/09/04)
 </ol>
 
 
index 4c0b4cc0eec96913c63199b7166e6b834c10d5d1..c8523aeaede12e3f6cba597566102f52c6601747 100644 (file)
     mailing list</a> for additional news.
     </p>
 
-    <p> Changes in the library since the last major release are
-    <a href="../doxygen/deal.II/changes_after_7_1.html">here.</a></p>
+    <p>
+      <dt><strong>Recent changes</strong></dt>
+      <dd>
+       Changes in the library since the last major release are
+       <strong><a href="../doxygen/deal.II/changes_after_7_2.html">here.</a></strong>
+      </dd>
+    </p>
 
     <dl>
+      <dt>
+          <strong style="color:red">2012/09/03: Version 7.2 released</strong>
+      </dt>
+      <dd>
+          Version 7.2.0 was released today. This release provides four
+         new tutorial programs, a framework for matrix-free
+         computations, and a large number of enhancements and bug fixes
+         throughout the entire library. A complete list of new
+         features is found <a
+         href="../doxygen/deal.II/changes_between_7_1_and_7_2.html" target="body">here</a>.
+      </dd>
+
+
       <dt>
         <strong>2012/06/06: step-43 &mdash; an efficient solver for
         two-phase flow</strong>
index 4c6be0b7c4d29f823ebec9e3fec6f0b9da936589..b554ad4620442f76769fb89698161d778d7f9695 100644 (file)
@@ -5,7 +5,7 @@
   <title>Porting deal.II</title>
   <link href="screen.css" rel="StyleSheet" media="screen">
   <meta name="author" content="the deal.II authors <authors@dealii.org>">
-  <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2005, 2010 by the deal.II authors">
+  <meta name="copyright" content="Copyright (C) 2000, 2001, 2002, 2005, 2010, 2012 by the deal.II authors">
   <meta name="date" content="$Date$">
   <meta name="svn_id" content="$Id$">
   <meta name="keywords" content="deal.II porting">
 <hr>
     
 <address>
-<a href="mail.html" target="body">The deal.II
-mailing list</a>
+<a href="mail.html" target="body">The deal.II Group</a>
 </address>
 
 </body>
index e10389e24a692a9bb4242fa8a905f7a814a83a22..d824f9f8d2a06de318fb744fa19eb583c3a24d79 100644 (file)
          <strong>Preconditioning for Allen-Cahn variational
            inequalities with non-local constraints</strong>
          <br>
-         Journal of Computational Physics, vol. 231, pp. 5406-5420, 2012.
+         Journal of Computational Physics, vol. 231, pp. 5406-5402, 2012.
        </li>
 
        <li> A. Bonito, I. Kyza, R. H. Nochetto
             <it>hp</it>-adaptive finite element strategy for Maxwell's equations
           </strong>
          <br>
-         Preprint 12/04, Karlsruhe Institute of Technology, 2012.
+         Preprint 12/04, Karlsruhe Institute of Technology (KIT), 2012.
+       </li>
+
+       <li> <a href="http://www.math.kit.edu/ianm2/~buerg/"
+               target="_top">M. B&uuml;rg</a>
+          <br>
+          <strong>A Fully Automatic <it>hp</it>-Adaptive Refinement Strategy
+          </strong>
+         <br>
+         PhD Thesis, Karlsruhe Institute of Technology (KIT), 2012.
        </li>
 
        <li> A. Cangiani, J. Chapman, E. Georgoulis, M. Jensen
          <!-- http://arxiv.org/abs/1201.2878 -->
        </li>
 
+       <li> A. Cangiani, J. Chapman, E. Georgoulis, M. Jensen
+         <br>
+         <strong>On Local Super-Penalization of Interior Penalty Discontinuous Galerkin Methods</strong>
+         <br>
+         arXiv:1205.5672v1 [math.NA], 2012.
+         <!-- http://arxiv.org/abs/1205.5672 -->
+       </li>
+
+       <li> T. Carraro, J. Joos, B. R&uuml;ger, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>3D finite element model for reconstructed mixed-conducting
+         cathodes: I. Performance quantification</strong>
+         <br>
+         Electrochimica Acta, Volume 77, pp. 315-323, 2012.
+       </li>
+
+       <li> T. Carraro, J. Joos, B. R&uuml;ger, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>3D finite element model for reconstructed mixed-conducting
+         cathodes: II. Parameter sensitivity analysis</strong>
+         <br>
+         Electrochimica Acta, Volume 77, pp. 309-314, 2012.
+       </li>
+
        <li> C.-C. Chueh, N. Djilali, W. Bangerth
          <br>
          <strong>An h-adaptive Operator Splitting Method for
          arXiv:1202.3583v1 [nlin.PS], 2012.
        </li>
 
+       <li> J. J. Gaitero, J. S. Dolado, C. Neuen, F. Heber, E. Koenders
+          <br>
+          <strong>Computational 3d simulation of Calcium leaching in
+          cement matrices
+          </strong>
+          <br>
+          Institut f&uuml;r numerische Simulation, Rheinische
+          Friedrich-Wilhelms-Universit&auml;t Bonn, INS Preprint 1203, 2012.
+        </li>
+
        <li> T. George, A. Gupta, V. Sarin
           <br>
           <strong>An empirical analysis of the performance of iterative
          <!-- http://onlinelibrary.wiley.com/doi/10.1002/jnm.840/full -->
         </li>
 
+       <li> O. Jirousek, P. Zlamal
+         <br>
+         <strong>Large-scale micro-finite element simulation of
+         compressive behavior of trabecular bone microstructure</strong>
+         <br>
+         Proceedings of the 18th Conference on Engineering Mechanics,
+         Svratka, Czech Republic, May 14-17, 2012; paper #206,
+         pp. 543-549, 2012.
+       </li>
+
+       <li> J. Joos, M. Ender, T. Carraro, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>Representative Volume Element Size for Accurate Solid Oxide
+         Fuel Cell Cathode Reconstructions from Focused Ion Beam Tomography
+         Data</strong>
+         <br>
+         Electrochimica Acta, in press, 2012.
+         <!-- http://www.sciencedirect.com/science/article/pii/S001346861200761X -->
+       </li>
+
        <li> S. Joshi
           <br>
           <strong>A model for the estimation of residual stresses in
          arXiv:1203.3384v1 [math.NA], 2012.
        </li>
 
-       <li>
-          T. Rees, M. Stoll
+       <li> M. J. Rapson, J. C. Tapson, D. Karpul
          <br>
-         <strong>A fast solver for an H<sub>1</sub> regularized
-           optimal control problem
+         <strong>Unification and Extension of Monolithic State Space
+          and Iterative Cochlear Models
          </strong>
          <br>
-         Preprint 12-06, Max-Planck-Institute Magdeburg, 2012.
+         Journal of the Acoustical Society of America, vol. 131, pp. 3935-3952, 2012.
         </li>
 
        <li> N. Richardson
          Vol. 28, pp. 111–132, 2012.
        </li>
 
-       <li> M. J. Rapson, D. Karpul, J. C. Tapson
+       <li> M. Stoll, A. Wathen
          <br>
-          <strong>Unification and extension of monolithic state space and
-           iterative cochlear models
+          <strong>All-at-once solution of time-dependent PDE-constrained optimization problems
           </strong>
          <br>
-         J. Acoust. Soc. Am. Volume 131, Issue 5, pp. 3935-3952, 2012.
+         Preprint, University of Magdeburg, 2012
+         <!-- http://www.mpi-magdeburg.mpg.de/people/stollm/pub.html -->
        </li>
 
-       <li> M. Stoll, A. Wathen
+       <li> M. Thalhammer, J. Abhau
          <br>
-          <strong>All-at-once solution of time-dependent PDE-constrained optimization problems
+          <strong>A numerical study of adaptive space and time discretisations for Gross–Pitaevskii equations
           </strong>
          <br>
-         Preprint, University of Magdeburg, 2012
-         <!-- http://www.mpi-magdeburg.mpg.de/people/stollm/pub.html -->
+         Journal of Computational Physics, vol. 231, pp. 6665-6681, 2012.
        </li>
 
        <li> M. Vavalis, M. Mu, G. Sarailidis
        <li> M. Wallraff, T. Leicht, M. Lange-Hegermann
           <br>
           <strong>Numerical flux functions for Reynolds-averaged Navier-Stokes
-          and k&#969 turbulence model computations with a line-preconditioned
+          and k&#969; turbulence model computations with a line-preconditioned
           p-multigrid discontinuous Galerkin solver</strong>
           <br>
           Int. J. Numer. Meth. Fluids, published online, 2012.
+         <!-- http://onlinelibrary.wiley.com/doi/10.1002/fld.3702/full  -->
        </li>
 
        <li> M. Wallraff, T. Leicht, M. Lange-Hegermann
          <br>
          RICAM Report 2012-06, 2012.
        </li>
-      </ol>
 
+       <li> S. Yoon, M. A. Walkley, O. G. Harlen
+         <br>
+          <strong>Two particle interactions in a confined viscoelastic fluid under shear
+          </strong>
+         <br>
+         Journal of Non-Newtonian Fluid Mechanics, in press, 2012.
+         <!-- http://www.sciencedirect.com/science/article/pii/S0377025712001309 -->
+       </li>
+
+       <li> <a href="http://www.ippt.gov.pl/~tyoung"
+               target="_top">T. D. Young</a>, E. Romero, J. E. Roman
+         <br>
+         <strong>Parallel finite element density functional theory exploiting grid refinement and subspace recycling
+         </strong>
+         <br>
+         Comput. Phys. Commun., accepted, 2012.
+        </li>
+
+       <li> S. Zhang, X. Lin, H. Zhang, D. A. Yuen, Y. Shi
+         <br>
+          <strong>A new method for calculating displacements from
+          elastic dislocation over arbitrary 3-D fault surface with
+          extended FEM and Adaptive Mesh Refinement (AMR)</strong>
+         <br>
+         Proceedings of the International Workshop on Deep Geothermal
+         Systems, Wuhan, China, June 29-30, 2012.
+       </li>
+      </ol>
 
       <a name="2011"> </a>
       <h3>Publications in 2011</h3>
         </li>
 
 
+       <li> J. Joos, T. Carraro, M. Ender, B. R&uuml;ger, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>Detailed Microstructure Analysis and 3D Simulations of Porous Electrodes</strong>
+         <br>
+         ECS Trans. 35, pp. 2357-2368, 2011.
+       </li>
+
        <li> F. Keller, H. Nirschl, W. D&ouml;rfler
          <br>
           <strong>Primary charge effects on prolate spheroids with moderate aspect ratios
           2011
         </li>
 
-       <li> M. J. Rapson, D. Karpul, J. C. Tapson
-         <br>
-         <strong>Unification and Extension of Monolithic State Space
-          and Iterative Cochlear Models
-         </strong>
-         <br>
-         Journal of the Acoustical Society of America, accepted, 2011.
-        </li>
-
        <li> M. J. Rapson, J. C. Tapson
          <br>
          <strong>Investigations into Time
           Submitted to Archive of Numerical Software, 2011.
         </li>
 
-       <li> M. Steigemann
-         <br>
-          <strong>Simulation of Quasi-static Crack Propagation in Functionally
-            Graded Materials
-         </strong>
-         <br>
-         in: Functionally Graded Materials, N.J. Reynolds, ed., Nova Science
-         Publishers, pp. 193-248, 2011.
-       </li>
-
-       <li>
-          M. Stoll
-         <br>
-         <strong>One-shot solution of a time-dependent time-periodic
-         PDE-constrained optimization problem
-         </strong>
-         <br>
-         Preprint 11-04, Max-Planck-Institute Magdeburg, 2011.
-        </li>
-
        <li>
           M. Stoll, J. Pearson, A. Wathen
          <br>
           Reduction of Drift-Diffusion Equations in Electrical
           Networks</strong>
          <br>
-          Hamburger Beitr&auml;ge zur Angewandten Mathematik, Nr. 2010-09.
+         Scientific Computing in Electrical Engineering, SCEE 2010
+         Mathematics in Industry, Volume 16, Part 5, 423-431, 2012.
        </li>
 
        <li> M. Hinze, M. Kunkel
           J. C. F. Pereira and A. Sequeira (eds.), 2010.
        </li>
 
+       <li> J. Joos, B. R&uuml;ger, T. Carraro, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>Electrode Reconstruction by FIB/SEM and Microstructure
+         Modeling</strong>
+         <br>
+         ECS Trans. 28, pp. 81-91, 2010.
+       </li>
+
        <li> G. Kanschat, B. Rivi&egrave;re
           <br>
           <strong>A strongly conservative finite element method for the coupling
          Engineering Fracture Mechanics, vol. 77, pp. 2145-2157, 2010
         </li>
 
-       <li>
-          M. Stoll, A. Wathen
-         <br>
-         <strong>All-at-once solution of time-dependent Stokes control
-         </strong>
-         <br>
-         Preprint 10-03, Max-Planck-Institute Magdeburg, 2010.
-        </li>
-
        <li>
           M. Stoll, A. Wathen
          <br>
          G. Choi and J. Y. Yoo, eds.), pp. 31-45, Springer, 2009.
         </li>
 
+       <li> B. R&uuml;ger, J. Joos, T. Carraro, A. Weber, E. Ivers-Tiff&eacute;e
+         <br>
+         <strong>3D Electrode Microstructure Reconstruction and
+         Modelling</strong>
+         <br>
+         ECS Trans. 25, pp. 1211-1220, 2009.
+       </li>
+
        <li>
           D. Sch&ouml;tzau, L. Zhu
          <br>
           <br>
           Preprint 2000-11 (SFB 359), IWR Heidelberg, October 1999.
          <br>
-         This paper is also available
-         <a href="../reports/multithreading/index.html" target="body">online</a>.
-         <br>
          (<a href="2000/bangerth-2.html" target="body">Abstract</a>,
          <a href="2000/bangerth-2.bib" target="body">BiBTeX entry</a>)
        </li>
       <hr>
 
       <address>
-       <a href="../mail.html">The deal.II mailing list</a></address>
+       <a href="../mail.html">The deal.II Group</a></address>
 
   </body>
 </html>
index d99508a796ca4c0be0fe288159d7bde127e69ea0..fd35d55b3acc835be315be183a2b99573e72b7dd 100644 (file)
       configuration.
       </p>
 
-      <p>
-      Note that in order to use PETSc with <acronym>deal.II</acronym>
-      with the current release version of <acronym>deal.II</acronym>
-      you will need to have at least PETSc version 2.3.0 installed,
-      earlier releases are no longer supported. There is no
-      correlation between <acronym>deal.II</acronym> version numbers
-      and PETSc version numbers. <acronym>deal.II</acronym> version
-      7.0 has been tested up to PETSc release 3.1.0-p8, and newer version up
-      to at least PETSc release 3.2.
-      </p>
-
       <p>
       There is an additional caveat: PETSc appears not to co-operate
       well when using threads and some programs crash when deal.II is
       <h5>Trilinos starting with version 10.0</h5>
 
       <p style="color: red">
-      Note: Trilinos versions 10.6.x, 10.8.0, 10.8.1, and 10.10.2 are not compatible with
+      Note: Trilinos versions 10.6.x, 10.8.0, 10.8.1, 10.10.2, 10.12.1 are not compatible with
       deal.II. They contain subtle bugs related to (parallel) matrices and vectors.
-      We recommend staying with 10.4.2 for the time being.
+      Versions tested to work are 10.4.2, 10.8.5, and 10.12.2. We recommend only using
+      one of the tested versions for the time being.
       </p>
 
       <p>
@@ -274,7 +264,7 @@ configure: error: *** Your Trilinos installation is not compatible with the C++
     <hr>
 
     <address>
-      <a href="mail.html" target="body">The deal.II mailing list</a>
+      <a href="mail.html" target="body">The deal.II Group</a>
       $Date: 2008-10-14 05:36:48 -0500 (Tue, 14 Oct 2008) $
     </address>
   </body>
index 10c07e859aa56e8a721484fb9f7e6fd77ede76e1..bbb9dc291b5d0964aeba7792ee1e16580786867d 100644 (file)
       at the command line, or, <a href="readme-petsc-trilinos.html"
       target="body">here</a>.
       </p>
+
+      <p>
+       (<acronym>deal.II</acronym>) version 7.2 (and higher) support
+       PETSc 3.x.x only; earlier releases are no longer supported.
+      </p>
     </dd>
 
     <a name="slepc"></a>
     <dt>Trilinos</dt>
     <dd>
       <p>
-      <acronym>deal.II</acronym> can also interface to <a
-      href="http://trilinos.sandia.gov" target="_top">Trilinos</a>. The
+      <acronym>deal.II</acronym> can also interface
+      to <a href="http://trilinos.sandia.gov" target="_top">Trilinos</a>. The
       simplest way to use these interfaces is to
       pass <code>--with-trilinos=/path/to/trilinos</code>
-      to <acronym>deal.II</acronym>'s <code>./configure</code> script. More
-      configuration options can be found <a href="readme-petsc-trilinos.html"
+      to <acronym>deal.II</acronym>'s <code>./configure</code> script.  Note
+      that not all versions of Trilinos are compatible
+      with <acronym>deal.II</acronym>.  More details about compatibility and
+      configuration can be found <a href="readme-petsc-trilinos.html"
       target="body">here</a>.
       </p>
     </dd>
 
-
     <a name="metis"></a>
     <dt>Metis</dt>
     <dd>
       <p>
-      In order to generate partitionings of triangulations, we have
-      functions that
-      call <a href="http://www-users.cs.umn.edu/~karypis/metis/index.html"
-      target="_top">METIS</a> library. METIS is a library that
-      provides various methods to partition graphs, which we use to
-      define which cell belongs to which part of a triangulation. The
-      main point in using METIS is to generate partitions so that the
-      interfaces between cell blocks are as small as possible. This
-      data can, in turn, be used to distribute degrees of freedom onto
-      different processors when using PETSc and/or SLEPc in parallel
-      mode.
-      </p>
-
-      <p>
-      As with PETSc and SLEPc, the use of METIS is optional. If you
-      wish to use it, you can do so by having a METIS installation
-      around at the time of calling
-      <code>./configure</code> by either
-      setting the <code>METIS_DIR</code> environment
-      variable denoting the path to the METIS library, or using the
-      <code>--with-metis</code> flag. If METIS was installed as part
-      of <code>/usr</code> or <code>/opt</code>, instead of local directories
-      in a home directory for example, you can use configure
-      switches <code>--with-metis-include, --with-metis-libs</code>.
+       In order to generate partitionings of triangulations, we have
+       functions that
+       call <a href="http://glaros.dtc.umn.edu/gkhome/metis/metis/overview"
+       target="_top">METIS</a> library. METIS is a library that
+       provides various methods to partition graphs, which we use to
+       define which cell belongs to which part of a
+       triangulation. The main point in using METIS is to generate
+       partitions so that the interfaces between cell blocks are as
+       small as possible. This data can, in turn, be used to
+       distribute degrees of freedom onto different processors when
+       using PETSc and/or SLEPc in parallel mode.
       </p>
 
       <p>
-       On some systems, when using shared libraries for deal.II, you may get
-       warnings of the kind <code>libmetis.a(pmetis.o): relocation R_X86_64_32
-         against `a local symbol' can not be used when making a shared
-         object; recompile with -fPIC</code> when linking. This can be
-       avoided by recompiling METIS with <code>-fPIC</code> as a compiler
-       flag.
+       As with PETSc and SLEPc, the use of METIS is optional.  If you
+       wish to use it, you can do so by having a METIS installation
+       around at the time of calling
+       <code>./configure</code> by either setting
+       the <code>METIS_DIR</code> environment variable denoting the
+       path to the METIS library, or using the
+       <code>--with-metis</code> flag.
       </p>
 
       <p>
-       METIS is not needed when using <code>p4est</code> to parallelize
-       programs, see below.
+       (<acronym>deal.II</acronym>) version 7.2 (and higher) support
+       METIS 5.x.x only; earlier releases are no longer
+       supported.  <br>METIS is not needed when
+       using <code>p4est</code> to parallelize programs, see below.
       </p>
     </dd>
 
       <a href="external-libs/arpack.html" target="body">this page</a>.
     </dd>
 
-
+    <a name="HDF5"></a>
+    <dt>HDF5</dt>
+    <dd>
+      This adds HDF5/XDMF graphical output capabilities to deal.II. You need to
+      install the <a href="http://www.hdfgroup.org/HDF5/">HDF5 library</a>
+      separately. Configure with <code>--with-hdf5=</code> and point it to
+      the h5pcc or h5cc script inside your hdf5 installation.
+      
+      For a detailed description of how to compile HDF5 and linking with
+      deal.II, see <a href="external-libs/hdf5.html" target="body">this
+      page</a>.
+    </dd>
 
     </dl>
 
     <hr>
 
     <address>
-      <a href="mail.html" target="body">The deal.II mailing list</a>
+      <a href="mail.html" target="body">The deal.II Group</a>
       $Date$
     </address>
   </body>
index edeebac807718b18f4c4f8813c55701135cee379..83ed8ce46b63a85b3bd86b562131f3f25c974370 100644 (file)
@@ -205,6 +205,7 @@ code.global { color: #005030; }
 td.build {
        text-align: center;
        vertical-align: middle;
+       font-size: small;
 }
 
 
index 55615a90eeda024a07a36e8580668c986c96b8cc..627fcdbbcfecdbe54d532e09be9fabb8383fccef 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
                                  // Just this one is new: it declares
                                  // a class
index 9c911d6d374b6dfb148501cff93ce9804a2f4a06..e8182e5bd044c40d35face98661c382818450dc4 100644 (file)
@@ -40,8 +40,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index e3167db652103065b234493246db65091e9bc212..4a6185ee26f0ebe0ff3f90d8b643649d229c0b02 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index a3375ddf0e85939d9aac853bd526bd3037acaead..c1bf2328bced34b1eed4e1a87dfd844f9c89b1d4 100644 (file)
@@ -43,8 +43,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_q.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 1e84f87815f9d5b02729e8cfefcac70c43cf6e2f..ce5053886f30cfd232ffd3ca59d11257e45cd462 100644 (file)
@@ -55,7 +55,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 1fdc303d36923e6f8141846a9a1875faf76e26cb..3c01f39891a898f1c8297d941896a4a5fafcc0b9 100644 (file)
@@ -9,7 +9,10 @@ have different calling syntaxes - on my system, I have to use the command
 <code>bsub</code> with a whole host of options to run a job in parallel - so
 that the exact command line syntax varies. If you have found out how to run a
 job on your system, you should get output like this for a job on 8 processors,
-and with a few more refinement cycles than in the code above:
+and with a few more refinement cycles than in the code above (these
+results were generated in 2004 with older versions of deal.II and a
+version of METIS that generated different partitionings; consequently,
+the numbers you get today are slightly different):
 @code
 Cycle 0:
    Number of active cells:       64
@@ -90,12 +93,12 @@ cycle 14, and 14 minutes including the second to last step. I lost the timing
 information for the last step, though, but you get the idea. All this is if
 the debug flag in the Makefile was changed to "off", i.e. "optimized", and
 with the generation of graphical output switched off for the reasons stated in
-the program comments above. The biggest 2d computations we did had roughly 7.1 
+the program comments above. The biggest 2d computations we did had roughly 7.1
 million unknowns, and were done on 32 processes. It took about 40 minutes.
 Not surprisingly, the limiting factor for how far one can go is how much memory
-one has, since every process has to hold the entire mesh and DoFHandler objects, 
+one has, since every process has to hold the entire mesh and DoFHandler objects,
 although matrices and vectors are split up. For the 7.1M computation, the memory
-consumption was about 600 bytes per unknown, which is not bad, but one has to 
+consumption was about 600 bytes per unknown, which is not bad, but one has to
 consider that this is for every unknown, whether we store the matrix and vector
 entries locally or not.
 
@@ -195,7 +198,7 @@ Cycle 6:
 
 The last step, going up to 1.5 million unknowns, takes about 55 minutes with
 16 processes on 8 dual-processor machines (of the kind available in 2003). The
-graphical output generated by 
+graphical output generated by
 this job is rather large (cycle 5 already prints around 82 MB of GMV data), so
 we contend ourselves with showing output from cycle 4:
 
index 03d0f2422db10fd31cd2636903ccb78cdd9defbe..ae10f61ebd4b027c1feb4a34e8d0b894f0a65c0d 100644 (file)
@@ -31,8 +31,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 0297cdfab857fe4ac0b63045f3cb5cedb4073112..58607567163d9e7408531e22e3db47802a53de66 100644 (file)
@@ -41,8 +41,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index b0553e01263f1b68a2d61e858a996ecf4750adf5..8a3e1093f37e836cc297e1ca83aa4d2f5a428c1a 100644 (file)
@@ -45,8 +45,8 @@
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index ac1853b7c84644d232ebe7a60dcfa6e19d5049ab..a4d9e6148a3dc3e2749ce7147933d0c051c72468 100644 (file)
@@ -48,8 +48,8 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 491147154770453ed1ccefd96aa650355751dba5..5829d34fbfe9f25cb71c54c883437d2530af2939 100644 (file)
@@ -43,8 +43,8 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index c8feb1dba81ad76af066829c793a44694f518aef..c7b70487afc512ae3ba84566e334fd4d653785af 100644 (file)
@@ -403,9 +403,12 @@ a square $[-1,1]^2$ and
        \\
        u_1 &=& 0,
        \\
-       g &=& \left\{\begin{matrix}\sin (4\pi t) \\ 0\end{matrix}
-       \qquad {\textrm{for}\ t\le \frac 12, x=-1, -\frac 13<y<\frac 13
-       \atop \textrm{otherwise}}
+       g &=& \left\{\begin{matrix}\sin (4\pi t)
+       &\qquad& \text{for }\ t\le \frac 12, x=-1, -\frac 13<y<\frac 13
+       \\
+        0
+       &&\text{otherwise}
+       \end{matrix}
        \right.
 @f}
 This corresponds to a membrane initially at rest and clamped all around, where
index fb10bb96e0d3c31a6d88fde0679c0868ff02b93e..6b09a2329ce5ee353c7f5e3f253569b72d114da4 100644 (file)
@@ -68,7 +68,7 @@
                                  // code. However, we're too lazy to
                                  // do that here, so simply use a
                                  // library function:
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
                                  // In a very similar vein, we are
                                  // also too lazy to write the code to
@@ -84,7 +84,7 @@
                                  // and
                                  // MatrixTools::create_laplace_matrix
                                  // functions. They are declared here:
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
                                  // Finally, here is an include file
                                  // that contains all sorts of tool
index f959cadbba20115dc63e618a270c8a6a3ed04b2f..742205e70db94ddc00776716f6e103c1271fe703 100644 (file)
@@ -39,8 +39,8 @@
 #include <deal.II/fe/fe_values.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/matrices.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/matrix_tools.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 19f401aad83a09aa6c3bd30a857a54c4b7571c2b..eb57fcd4b408ce0dbf2133a09bb03e4938b2db3d 100644 (file)
@@ -45,8 +45,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 2597a72ae263823877fadd83e0644b4634fc6601..29b16208554e47cd11cde17d37442716a045365b 100644 (file)
@@ -28,8 +28,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/sparse_matrix.h>
index 5d917cf626f902dc675480389d9b43067cdf725a..e5c5d798bde406c8b1638ac2eebd1f87a7024b68 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index c74b2c4e2f6c45464ed7f1538605492e29868be5..64b0276c58082b37667b8417be5a98fce35be455 100644 (file)
@@ -40,8 +40,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index cd369dd70b4b7315bc0ad61ba3c84e131dacc342..0c2bfeb3a999b77ba6cbd3e78fc8d7a20867f9eb 100644 (file)
@@ -36,9 +36,9 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 1e9fa84ff980072cf1190daf1a28a43e07c1fda4..5b4976d421b0827e15112fe0bdedfb9a42b0b892 100644 (file)
@@ -58,8 +58,8 @@
                                  // we need for the treatment of
                                  // boundary values:
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
                                  // We're now almost to the end. The second to
                                  // last group of include files is for the
index e294cf2016316dc68ae7e8868cb2ae8a72ea5b36..0d78aa904670447b53bc0ddd016f12d85d011032 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/solution_transfer.h>
@@ -1085,7 +1085,7 @@ namespace Step31
       stokes_constraints.clear ();
       DoFTools::make_hanging_node_constraints (stokes_dof_handler,
                                                stokes_constraints);
-      std::set<types::boundary_id_t> no_normal_flux_boundaries;
+      std::set<types::boundary_id> no_normal_flux_boundaries;
       no_normal_flux_boundaries.insert (0);
       VectorTools::compute_no_normal_flux_constraints (stokes_dof_handler, 0,
                                                        no_normal_flux_boundaries,
index 386b9b1affc222f82b67084ec33184621ddc1655..e01eb034f470f126f4fe2d232fbafd1eed9ae5a6 100644 (file)
@@ -57,8 +57,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/mapping_q.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/solution_transfer.h>
@@ -2554,7 +2554,7 @@ namespace Step32
                                                stokes_constraints,
                                                velocity_mask);
 
-      std::set<types::boundary_id_t> no_normal_flux_boundaries;
+      std::set<types::boundary_id> no_normal_flux_boundaries;
       no_normal_flux_boundaries.insert (1);
       VectorTools::compute_no_normal_flux_constraints (stokes_dof_handler, 0,
                                                        no_normal_flux_boundaries,
@@ -4343,11 +4343,25 @@ namespace Step32
         old_temperature_solution     = temperature_solution;
         if (old_time_step > 0)
           {
-            stokes_solution.sadd (1.+time_step/old_time_step, -time_step/old_time_step,
-                                  old_old_stokes_solution);
-            temperature_solution.sadd (1.+time_step/old_time_step,
-                                       -time_step/old_time_step,
-                                       old_old_temperature_solution);
+            //Trilinos sadd does not like ghost vectors even as input. Copy into distributed vectors for now:
+            {
+              TrilinosWrappers::MPI::BlockVector distr_solution (stokes_rhs);
+              distr_solution = stokes_solution;
+              TrilinosWrappers::MPI::BlockVector distr_old_solution (stokes_rhs);
+              distr_old_solution = old_old_stokes_solution;
+              distr_solution .sadd (1.+time_step/old_time_step, -time_step/old_time_step,
+                  distr_old_solution);
+              stokes_solution = distr_solution;
+            }
+            {
+              TrilinosWrappers::MPI::Vector distr_solution (temperature_rhs);
+              distr_solution = temperature_solution;
+              TrilinosWrappers::MPI::Vector distr_old_solution (temperature_rhs);
+              distr_old_solution = old_old_temperature_solution;
+              distr_solution .sadd (1.+time_step/old_time_step, -time_step/old_time_step,
+                  distr_old_solution);
+              temperature_solution = distr_solution;
+            }
           }
 
         if ((timestep_number > 0) && (timestep_number % 100 == 0))
index 9394797e2003d9d04b5d24be0b38cffc4350cf1b..dccad4abe0915dfd3c9c418d90dd7d268fc2dcc4 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/solution_transfer.h>
 
                                  // Then, as mentioned in the introduction, we
index cc27622bebd9a8c2095ae36135c18169bb9bfc9f..30e12e799746fe4981794fa47c8b067b03dea65b 100644 (file)
@@ -46,7 +46,7 @@
 #include <deal.II/fe/mapping_q.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
                                  // And here are a few C++ standard header
                                  // files that we will need:
index 92674e08e90d40a5eacda396d0a5c6a4ba113b05..cd57ab99b77b8d93ef49a22c63a1597573243593 100644 (file)
@@ -55,8 +55,8 @@
 #include <deal.II/fe/fe_tools.h>
 #include <deal.II/fe/fe_system.h>
 
-#include <deal.II/numerics/matrices.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/matrix_tools.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
@@ -433,7 +433,7 @@ namespace Step35
 
       EquationData::Velocity<dim>       vel_exact;
       std::map<unsigned int, double>    boundary_values;
-      std::vector<types::boundary_id_t> boundary_indicators;
+      std::vector<types::boundary_id> boundary_indicators;
 
       Triangulation<dim> triangulation;
 
@@ -1118,7 +1118,7 @@ namespace Step35
 
         vel_exact.set_component(d);
         boundary_values.clear();
-        for (std::vector<types::boundary_id_t>::const_iterator
+        for (std::vector<types::boundary_id>::const_iterator
                boundaries = boundary_indicators.begin();
              boundaries != boundary_indicators.end();
              ++boundaries)
index 40862d2aeed8945a151bd6e3ba32de58343c9a7a..932c5990ae19d340e487d4ee16127d2445738fe2 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/full_matrix.h>
 
index 9f6e4b898771716ea0229cd20323f33effd4b582..a664f42dcce96bef0aabbe69430af62eaf3f26a6 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/multigrid/mg_matrix.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
                                 // This includes the data structures for the
                                 // efficient implementation of matrix-free
index dd89748fa8e5aee4dad71dcc51a49b046aff9714..b26b6b8db1ec2f97f1721090204c4fafc6df0897 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 #include <iostream>
@@ -381,7 +381,7 @@ namespace Step38
       Triangulation<spacedim> volume_mesh;
       GridGenerator::half_hyper_ball(volume_mesh);
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       boundary_ids.insert (0);
 
       GridTools::extract_boundary_mesh (volume_mesh, triangulation,
diff --git a/deal.II/examples/step-39/output.reference.dat b/deal.II/examples/step-39/output.reference.dat
new file mode 100644 (file)
index 0000000..35de96d
--- /dev/null
@@ -0,0 +1,13 @@
+#step dofs error estimate l2error iterations efficiency order l2order
+0      256     2.974190e-01    9.904600e-01    4.524470e-03    14      0.300284        0.000000        0.000000
+1      400     2.585590e-01    7.386240e-01    2.885100e-03    16      0.350055        0.627480        2.016374
+2      544     1.892340e-01    6.575070e-01    1.479540e-03    16      0.287805        2.030277        4.343815
+3      688     1.503620e-01    4.547120e-01    9.005740e-04    16      0.330675        1.958261        4.228028
+4      832     1.053170e-01    3.548790e-01    4.750150e-04    17      0.296769        3.747254        6.731991
+5      1024    7.459510e-02    2.539050e-01    2.362060e-04    17      0.293791        3.322106        6.729380
+6      1216    5.291920e-02    1.836100e-01    1.224410e-04    17      0.288215        3.995439        7.647065
+7      1504    3.756820e-02    1.335280e-01    6.804430e-05    17      0.281351        3.223616        5.527534
+8      1984    2.657860e-02    9.576030e-02    3.998000e-05    17      0.277553        2.498686        3.839747
+9      2608    1.880990e-02    6.816520e-02    1.951950e-05    17      0.275946        2.528429        5.243492
+10     3472    1.328020e-02    4.780300e-02    1.006070e-05    17      0.277811        2.433078        4.632422
+11     4672    9.367220e-03    3.336360e-02    5.766390e-06    17      0.280762        2.351695        3.749897
index e29c8ff7825288823f45fab9a6db8b6216be1c00..5672cb156f3b1c4367da99aa5d9831f6050e3cb4 100644 (file)
@@ -59,7 +59,7 @@
                                  // as quadrature and additional tools.
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <iostream>
index 40bf96d41ce7a706be77c212c58aff3dd2b821f1..30a9ce595bb4b017a4e1d7cfafc3ec7c806cd369 100644 (file)
@@ -27,8 +27,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/sparse_matrix.h>
index bc536fc339bff64c581f6bb9be774f67057ea259..3b201990e59ac87f63d5a01e3c3e6f457fd31a27 100644 (file)
@@ -39,7 +39,7 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 74459bdba84928e839381bacda7dcc75d35192c3..150d91c19f4b9b0a56f4cfa5af2f737415e6df41 100644 (file)
@@ -45,6 +45,22 @@ clean-up-files = *gmv *gnuplot *gpl *eps *pov *vtk *ucd *.d2
 # settings
 include $D/common/Make.global_options
 
+################################################################ 
+# This example program will only work if Trilinos is installed. If this
+# is not the case, then simply redefine the main targets to do nothing
+ifneq ($(USE_CONTRIB_TRILINOS),yes)
+default run clean:
+       @echo
+       @echo "===========================================================" 
+       @echo "=   This program cannot be compiled without Trilinos. Make="
+       @echo "=   sure you have Trilinos installed and detected during  ="
+       @echo "=   configuration of deal.II                              ="
+       @echo "==========================================================="
+       @echo
+
+else
+#
+################################################################
 
 # Since the whole project consists of only one file, we need not
 # consider difficult dependencies. We only have to declare the
@@ -141,4 +157,4 @@ Makefile.dep: $(target).cc Makefile \
 # them:
 include Makefile.dep
 
-
+endif  # CONTRIB_USE_TRILINOS
index 42dec00a16644118ff3502353b6e77d54d00ff56..0014f3fd56456d0ed1b3c68c32e0b850d006ffe3 100644 (file)
@@ -7,6 +7,7 @@ This material is based upon work partly supported by ThyssenKrupp Steel Europe.
 </i>
 
 
+<a name="Intro"></a>
 <h3>Introduction</h3>
 
 This example is based on the Laplace equation in 2d and deals with the
@@ -91,7 +92,7 @@ obstacle).
 
 An obvious way to obtain the variational formulation of the obstacle problem is to consider the total potential energy:
 @f{equation*}
- E(u):=\dfrac{1}{2}\int\limits_{\Omega} \nabla u \cdot \nabla - \int\limits_{\Omega} fu.
+ E(u):=\dfrac{1}{2}\int\limits_{\Omega} \nabla u \cdot \nabla - \int\limits_{\Omega} fu.
 @f}
 We have to find a solution $u\in G$ of the following minimization problem:
 @f{equation*}
@@ -157,7 +158,7 @@ This yields:
 <i>with</i>
 @f{align*}
  a(u,v) &:= \left(\nabla u, \nabla v\right),\quad &&u,v\in V\\
- b(u,\mu) &:= \langle g-u,\mu\rangle,\quad &&u\in V,\quad\mu\in V'.
+ b(u,\mu) &:= \langle u,\mu\rangle,\quad &&u\in V,\quad\mu\in V'.
 @f}
 In other words, we can consider $\lambda$ as the negative of the additional, positive force that the
 obstacle exerts on the membrane. The inequality in the second line of the
@@ -165,9 +166,8 @@ statement above only appears to have the wrong sign because we have
 $\mu-\lambda<0$ at points where $\lambda=0$, given the definition of $K$.
 
 The existence and uniqueness of $(u,\lambda)\in V\times K$ of this saddle
-point problem has been stated in Grossmann and Roos: Numerical treatment of
-partial differential equations, Springer-Verlag, Heidelberg-Berlin, 2007, 596
-pages, ISBN 978-3-540-71582-5.
+point problem has been stated in Glowinski, Lions and Tr\'{e}moli\`{e}res: Numerical Analysis of Variational
+Inequalities, North-Holland, 1981.
 
 
 
index e5639e8a4eaf3cfc301c11da6cb70b6fb728a33f..a3d015cb24641c23ba39100d59d10c4d9c2c72ff 100644 (file)
@@ -43,7 +43,7 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index a7e1fce28db190778844bb5456d670b90164937d..68f3e495d1a2e6267d0a8a8c7d760d8a96975068 100644 (file)
@@ -62,39 +62,42 @@ vanishes, because we consider a frictionless situation and the normal stress is
 As a starting point we want to minimise an energy functional:
 $$E(\tau) := \dfrac{1}{2}\int\limits_{\Omega}\tau A \tau d\tau,\quad \tau\in \Pi W^{div}$$
 with
-$$W^{div}:=\lbrace \tau\in L^2(\Omega,\mathbb{R}^{dim\times\dim}_{sym}),div(\tau)\in L^2(\Omega,\mathbb{R}^{dim})\rbrace$$
-and
+$$W^{div}:=\lbrace \tau\in
+L^2(\Omega,\mathbb{R}^{dim\times\dim}_{sym}):div(\tau)\in L^2(\Omega,\mathbb{R}^{dim})\rbrace$$ and
 $$\Pi \Sigma:=\lbrace \tau\in \Sigma, \mathcal{F}(\tau)\leq 0\rbrace$$
 as the set of admissible stresses which is defined
 by a continious, convex flow function $\mathcal{F}$.
 
 With the goal to derive the dual formulation of the minimisation problem, we define a lagrange function:
-$$L(\tau,\varphi) := E(\tau) + (\varphi, div(\tau)),\quad \lbrace\tau,\varphi\rbrace\in\Pi W^{div}\times U$$
-with $U := \lbrace u\in H^1(\Omega), u = g \text{ on } \Gamma_D,u_n\leq 0 \text{ on } \Gamma_C \rbrace$.\\
+$$L(\tau,\varphi) := E(\tau) + (\varphi, div(\tau)),\quad \lbrace\tau,\varphi\rbrace\in\Pi W^{div}\times V^+$$
+with
+$$V^+ := \lbrace u\in V: u_n\leq g \text{ on } \Gamma_C \rbrace$$
+$$V:=\left[ H_0^1 \right]^{dim}:=\lbrace u\in \left[H^1(\Omega)\right]^{dim}: u
+= 0 \text{ on } \Gamma_D\rbrace$$
 By building the fr\'echet derivatives of $L$ for both components we obtain the dual formulation for the stationary case
 which is known as \textbf{Hencky-Type-Model}:\\
-Find a pair $\lbrace\sigma,u\rbrace\in \Pi W\times U$ with
+Find a pair $\lbrace\sigma,u\rbrace\in \Pi W\times V^+$ with
 $$\left(A\sigma,\tau - \sigma\right) + \left(u, div(\tau) - div(\sigma)\right) \geq 0,\quad \forall \tau\in \Pi W^{div}$$
-$$-\left(div(\sigma),\varphi - u\right) \geq 0,\quad \forall \varphi\in U.$$
+$$-\left(div(\sigma),\varphi - u\right) \geq 0,\quad \forall \varphi\in V^+.$$
 By integrating by parts and multiplying the first inequality by $C=A^{-1}$  we achieve the primal-mixed version of our problem:\\
-Find a pair $\lbrace\sigma,u\rbrace\in \Pi W\times U$ with
+Find a pair $\lbrace\sigma,u\rbrace\in \Pi W\times V^+$ with
 $$\left(\sigma,\tau - \sigma\right) - \left(C\varepsilon(u), \tau - \sigma\right) \geq 0,\quad \forall \tau\in \Pi W$$
-$$\left(\sigma,\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in U.$$
+$$\left(\sigma,\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in V^+.$$
 Therein $\varepsilon$ denotes the linearised deformation tensor with $\varepsilon(u) := \dfrac{1}{2}\left(\nabla u + \nabla u^T\right)$ for small deformations.\\
 Most materials - especially metals - have the property that they show some hardening effects during the forming process.
 There are different constitutive laws to describe those material behaviour. The most simple one is called linear isotropic hardening
 with the flow function $\mathcal{F}(\tau,\eta) = \vert\tau^D\vert - (\sigma_0 + \gamma\eta)$.
 It can be considered by establishing an additional term in our primal-mixed formulation:\\
-Find a pair $\lbrace(\sigma,\xi),u\rbrace\in \Pi (W\times L^2(\Omega,\mathbb{R}))\times U$ with
+Find a pair $\lbrace(\sigma,\xi),u\rbrace\in \Pi (W\times L^2(\Omega,\mathbb{R}))\times V^+$ with
 $$\left(\sigma,\tau - \sigma\right) - \left(C\varepsilon(u), \tau - \sigma\right) + \gamma\left( \xi, \eta - \xi\right) \geq 0,\quad \forall (\tau,\eta)\in \Pi (W,L^2(\Omega,\mathbb{R}))$$
-$$\left(\sigma,\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in U,$$
+$$\left(\sigma,\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in V^+,$$
 with the hardening parameter $\gamma > 0$.\\
 Now we want to derive a primal problem which only depends on the displacement $u$. For that purpose we
 set $\eta = \xi$ and eliminate the stress $\sigma$ by applying the projection theorem on\\
 $$\left(\sigma - C\varepsilon(u), \tau - \sigma\right) \geq 0,\quad \forall \tau\in \Pi W,$$
 which yields with the second inequality:\\
-Find the displacement $u\in U$ with
-$$\left(P_{\Pi}(C\varepsilon(u)),\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in U,$$
+Find the displacement $u\in V^+$ with
+$$\left(P_{\Pi}(C\varepsilon(u)),\varepsilon(\varphi) - \varepsilon(u)\right) \geq 0,\quad \forall \varphi\in V^+,$$
 with the projection:
 $$P_{\Pi}(\tau):=\begin{cases}
                        \tau, & \text{if }\vert\tau^D\vert \leq \sigma_0 +  \gamma\xi,\\
@@ -111,7 +114,7 @@ $$\alpha := \sigma_0 + \dfrac{\gamma}{2\mu+\gamma}\left(\vert\tau^D\vert - \sigm
 with a further material parameter $\mu>0$ called shear modulus.\\
 So what we do is to calculate the stresses by using Hooke's law for linear elastic,  isotropic materials
 $$\sigma = C \varepsilon(u) = 2\mu \varepsilon^D(u) + \kappa tr(\varepsilon(u))I = \left[2\mu\left(\mathbb{I} -\dfrac{1}{3} I\otimes I\right) + \kappa I\otimes I\right]\varepsilon(u)$$
-with the new material parameter $\kappa>0$ (bulk modulus). The variables $I$ and $\mathbb{I}$ denote the identity tensors of second and forth order.\\
+with the material parameter $\kappa>0$ (bulk modulus). The variables $I$ and $\mathbb{I}$ denote the identity tensors of second and forth order.\\
 In the next step we test in a pointwise sense where the deviator part of the stress in a norm is bigger as the yield stress.
 If there are such points we project the deviator stress in those points back to the yield surface. Methods of this kind
 are called projections algorithm or radial-return-algorithm.\\
@@ -126,25 +129,28 @@ method - inexact since we use an iterative solver for the linearised problems in
 
 For the newton method we have to linearise the following semi-linearform
 $$a(\psi;\varphi) := \left(P_{\Pi}(C\varepsilon(\varphi)),\varepsilon(\varphi)\right).$$
-Becaus we have to find the solution $u$ in the convex set $U$, we have to apply an SQP-method (SQP: sequential quadratic
+Becaus we have to find the solution $u$ in the convex set $V^+$, we have to apply an SQP-method (SQP: sequential quadratic
 programming). That means we have to solve a minimisation problem for a known $u^i$ in every SQP-step of the form
 \begin{eqnarray*}
  & & a(u^{i};u^{i+1} - u^i) + \dfrac{1}{2}a'(u^i;u^{i+1} - u^i,u^{i+1} - u^i)\\
  &=&  a(u^i;u^{i+1}) -  a(u^i;u^i) +\\
  & & \dfrac{1}{2}\left( a'(u^i;u^{i+1},u^{i+1}) - 2a'(u^i;u^i,u^{i+1}) - a'(u^i;u^i,u^i)\right)\\
- &\rightarrow& min,\quad u^{i+1}\in U.
+ &\rightarrow& min,\quad u^{i+1}\in V^+.
 \end{eqnarray*}
 Neglecting the constant terms $ a(u^i;u^i)$ and $ a'(u^i;u^i,u^i)$ we obtain the following minimisation problem
-$$\dfrac{1}{2} a'(u^i;u^{i+1},u^{i+1}) - F(u^i)\rightarrow min,\quad u^{i+1}\in U$$
+$$\dfrac{1}{2} a'(u^i;u^{i+1},u^{i+1}) - F(u^i)\rightarrow min,\quad u^{i+1}\in V^+$$
 with
 $$F(\varphi) := \left(a'(\varphi;\varphi,u^{i+1}) -  a(\varphi;u^{i+1}) \right).$$
-In the case of our constitutive law the derivitive of the semi-linearform $a(.;.)$ at the point $u^i$ is
+In the case of our constitutive law the derivative of the semi-linearform $a(.;.)$ at the point $u^i$ is
 
 $$a'(u^i;\psi,\varphi) =$$
 $$
 \begin{cases}
-\left(\left[2\mu\left(\mathbb{I}  - \dfrac{1}{3} I\otimes I\right) + \kappa I\otimes I\right]\varepsilon(\psi),\varepsilon(\varphi)\right), & \quad  \vert\tau^D\vert \leq \sigma_0\\
-\left(\left[\dfrac{\alpha}{\vert\tau^D\vert}2\mu\left(\mathbb{I}  - \dfrac{1}{3} I\otimes I - \dfrac{\tau^D\otimes\tau^D}{\vert\tau^D\vert}\right) + \kappa I\otimes I\right]\varepsilon(\psi),\varepsilon(\varphi) \right), & \quad \vert\tau^D\vert > \sigma_0
+\left(\left[2\mu\left(\mathbb{I}  - \dfrac{1}{3} I\otimes I\right) + \kappa I\otimes I\right]\varepsilon(\psi),\varepsilon(\varphi)\right), & \quad
+      \vert \tau^D \vert \leq \sigma_0\\
+\left(\left[\dfrac{\alpha}{\vert\tau^D\vert}2\mu\left(\mathbb{I}  - \dfrac{1}{3} I\otimes I - \dfrac{\tau^D\otimes\tau^D}{\vert\tau^D\vert}\right) +
+      \kappa I\otimes I\right]\varepsilon(\psi),\varepsilon(\varphi) \right), &
+ \quad \vert \tau^D \vert > \sigma_0
 \end{cases}
 $$
 with
@@ -154,13 +160,59 @@ Again the first case is for elastic and the second for plastic deformation.
 \section{Formulation as a saddle point problem}
 
 On the line of step-41 we compose a saddle point problem out of the minimisation problem. Again we do so to gain a formulation
-that allows us to solve a linear system of equations finally.
+that allows us to solve a linear system of equations finally.\\
+We introduce a Lagrange multiplier $\lambda$ and the convex cone $K\subset W'$,
+$W'$ dual space of the trace space $W$ of $V$ restricted to $\Gamma_C$,
+$$K:=\{\mu\in W':\mu_T = 0,\quad\langle\mu n,v\rangle_{\Gamma_C}\geq 0,\quad
+\forall v\in W, v \ge 0\text{ on }\Gamma_C \}$$
+of Lagrange multipliers, where $\langle\cdot,\cdot\rangle$
+denotes the duality pairing between $W'$ and $W$. Intuitively, $K$ is the cone
+of all "non-positive functions", except that $ K\subset
+\left( \left[ H_0^{\frac{1}{2}} \right]^{dim} \right)' $ and so contains other
+objects besides regular functions as well. This yields:\\
+
+\noindent
+\textit{Find $u\in V$ and $\lambda\in K$ such that}
+\begin{align*}
+ \hat{a}(u,v) + b(v,\lambda) &= f(v),\quad &&v\in V\\
+ b(u,\mu - \lambda) &\leq \langle g,(\mu -
+ \lambda)n\rangle_{\Gamma_C},\quad&&\mu\in K,
+\end{align*}
+\textit{with}
+\begin{align*}
+ \hat{a}(u,v) &:= a'(u^i;u,v)\\
+ b(u,\mu) &:= \langle un,\mu n\rangle_{\Gamma_C},\quad &&u\in V,\quad\mu\in W'.
+\end{align*}
+As in the section before $u^i$ denotes the linearization point for the
+semi-linearform $a(.;.)$. In contrast to step-41 we directly consider $\lambda$
+as the additional, positive force $\sigma(u)n$ that the obstacle
+exerts on the boundary $\Gamma_C$ of the body.\\
+
+\noindent
+The existence and uniqueness of $(u,\lambda)\in V\times K$ of this saddle point
+problem has been stated in Glowinski, Lions and Tr\'{e}moli\`{e}res: Numerical
+Analysis of Variational Inequalities, North-Holland, 1981.\\
+
+\noindent
+NOTE: In this example as well as in the further documentation we make the
+assumption that the normal vector $n$ equals to $(0,0,1)$. This comes up with
+the starting condition of our deformable body.
 
 \section{Active Set methods to solve the saddle point problem}
 
-\section{The primal-dual active set algorithm combined with the inexact semi smooth newton method}
+The linearized problem is essentially like a pure elastic problem with contact like
+in step-41. The only difference consists in the fact that the contact area
+adjudges at the boundary instead of in the domain. But this has no further consequence
+so that we refer to the documentation of step-41 with the only hint that
+$\mathcal{S}$ containts all the vertices at the contact boundary $\Gamma_C$ this
+time.
+
+\section{The primal-dual active set algorithm combined with the inexact semi smooth
+newton method}
 
-The inexact newton method works as follows:
+Now we describe an algorithm that combines the newton-method, which we use for
+the nonlinear constitutive law, with the semismooth newton method for the contact. It
+works as follows:
 \begin{itemize}
  \item[(0)] Initialize $\mathcal{A}_k$ and $\mathcal{F}_k$, such that $\mathcal{S} = \mathcal{A}_k \cup \mathcal{F}_k$ and $\mathcal{A}_k \cap \mathcal{F}_k = \emptyset$ and set $k = 1$.
  \item[(1)] Assembel the newton matrix $a'(U^k;\varphi_i,\varphi_j)$ and the right-hand-side $F(U^k)$.
@@ -172,11 +224,15 @@ The inexact newton method works as follows:
  \end{align*}
 % Note that $\mathcal{S}$ contains only dofs related to the boundary $\Gamma_C$. So in contrast to step-41 there are much more than $\vert \mathcal{S}\vert$ equations necessary to determine $U$ and $\Lambda$.
  \item[(3)] Define the new active and inactive sets by
- $$\mathcal{A}_{k+1}:=\lbrace i\in\mathcal{S}:\Lambda^k_i + c\left(\left[BU^k\right]_i - G_i\left) < 0\rbrace,$$
- $$\mathcal{F}_{k+1}:=\lbrace i\in\mathcal{S}:\Lambda^k_i + c\left(\left[BU^k\right]_i - G_i\left) \geq 0\rbrace.$$
- \item[(4)] If $\mathcal{A}_{k+1} = \mathcal{A}_k$ and $\vert F(U^{k+1}\vert < \delta$ then stop, else set $k=k+1$ and go to step (1).
+ $$\mathcal{A}_{k+1}:=\lbrace i\in\mathcal{S}:\Lambda^k_i +
+ c\left(\left[BU^k\right]_i - G_i\right) > 0\rbrace,$$
+ $$\mathcal{F}_{k+1}:=\lbrace i\in\mathcal{S}:\Lambda^k_i +
+ c\left(\left[BU^k\right]_i - G_i\right) \leq 0\rbrace.$$
+ \item[(4)] If $\mathcal{A}_{k+1} = \mathcal{A}_k$ and $\vert
+ F\left(U^{k+1}\right) \vert < \delta$ then stop, else set $k=k+1$ and go to
+ step (1).
 \end{itemize}
 
 \section{Implementation}
 
-\end{document}
\ No newline at end of file
+\end{document}
index 1f434510dd6d86bb5659dc7c7e9454348c846ebb..3085e6a0cecb498619bbb646e1d88de0da848adf 100644 (file)
 
                                  // @sect3{Include files}
 
-                                // The first few (many?) include
-                                // files have already been used in
-                                // the previous example, so we will
-                                // not explain their meaning here
-                                // again.
+                                // We are using the the same
+                                 // include files as in step-42:
 
 #include <deal.II/grid/tria.h>
 #include <deal.II/dofs/dof_handler.h>
@@ -31,8 +28,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/distributed/grid_refinement.h>
 
 #include <deal.II/numerics/data_out.h>
+#include <deal.II/numerics/error_estimator.h>
 #include <deal.II/base/timer.h>
 #include <fstream>
 #include <iostream>
 #include <list>
 #include <time.h>
 
-                                // This is new, however: in the previous
-                                // example we got some unwanted output from
-                                // the linear solvers. If we want to suppress
-                                // it, we have to include this file and add a
-                                // single line somewhere to the program (see
-                                // the main() function below for that):
-#include <deal.II/base/logstream.h>
-
-                                // The final step, as in previous
-                                // programs, is to import all the
-                                // deal.II class and function names
-                                // into the global namespace:
-using namespace dealii;
 
-                                 // @sect3{The <code>Step4</code> class template}
-
-template <int dim> class ConstitutiveLaw;
+#include <deal.II/base/logstream.h>
 
-template <int dim>
-class Step4
+namespace Step42
 {
-public:
-  Step4 (int _n_refinements_global, int _n_refinements_local);
-  void run ();
-
-private:
-  void make_grid ();
-  void setup_system();
-  void assemble_mass_matrix ();
-  void assemble_nl_system (TrilinosWrappers::MPI::Vector &u);
-  void residual_nl_system (TrilinosWrappers::MPI::Vector &u,
-                          Vector<double>                &sigma_eff_vector);
-  void projection_active_set ();
-  void dirichlet_constraints ();
-  void solve ();
-  void solve_newton ();
-  void output_results (const std::string& title) const;
-  void move_mesh (const TrilinosWrappers::MPI::Vector &_complete_displacement) const;
-  void output_results (TrilinosWrappers::MPI::Vector vector, const std::string& title) const;
-  void output_results (Vector<double> vector, const std::string& title) const;
-
-  MPI_Comm             mpi_communicator;
-
-  parallel::distributed::Triangulation<dim>   triangulation;
-
-  FESystem<dim>        fe;
-  DoFHandler<dim>      dof_handler;
-
-  IndexSet             locally_owned_dofs;
-  IndexSet             locally_relevant_dofs;
-
-  int                  n_refinements_global;
-  int                  n_refinements_local;
-  unsigned int         number_iterations;
-  std::vector<double>  run_time;
-
-  ConstraintMatrix     constraints;
-  ConstraintMatrix     constraints_hanging_nodes;
-  ConstraintMatrix     constraints_dirichlet_hanging_nodes;
-
-  TrilinosWrappers::SparseMatrix system_matrix_newton;
-  TrilinosWrappers::SparseMatrix mass_matrix;
-
-  TrilinosWrappers::MPI::Vector       solution;
-  TrilinosWrappers::MPI::Vector       old_solution;
-  TrilinosWrappers::MPI::Vector       system_rhs_newton;
-  TrilinosWrappers::MPI::Vector       resid_vector;
-  TrilinosWrappers::MPI::Vector       diag_mass_matrix_vector;
-  IndexSet                            active_set;
-
-  ConditionalOStream pcout;
-
-  TrilinosWrappers::PreconditionAMG::AdditionalData additional_data;
-  TrilinosWrappers::PreconditionAMG preconditioner_u;
-  TrilinosWrappers::PreconditionAMG preconditioner_t;
-
-  std::auto_ptr<ConstitutiveLaw<dim> > plast_lin_hard;
-
-  double sigma_0;    // Yield stress
-  double gamma;      // Parameter for the linear isotropic hardening
-  double e_modul;    // E-Modul
-  double nu;         // Poisson ratio
-
-  std_cxx1x::shared_ptr<TrilinosWrappers::PreconditionAMG>  Mp_preconditioner;
-};
-
-template <int dim>
-class ConstitutiveLaw
-{
-public:
-  ConstitutiveLaw (double _E, double _nu, double _sigma_0, double _gamma, MPI_Comm _mpi_communicator, ConditionalOStream _pcout);
-  //     ConstitutiveLaw (double mu, double kappa);
-  void plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor,
-                              SymmetricTensor<2,dim>  &strain_tensor,
-                              unsigned int            &elast_points,
-                              unsigned int            &plast_points,
-                              double                  &sigma_eff,
-                              double                  &yield);
-  void linearized_plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor_linearized,
-                                         SymmetricTensor<4,dim>  &stress_strain_tensor,
-                                         SymmetricTensor<2,dim>  &strain_tensor);
-  inline SymmetricTensor<2,dim> get_strain (const FEValues<dim> &fe_values,
-                                           const unsigned int  shape_func,
-                                           const unsigned int  q_point) const;
-
-private:
-  SymmetricTensor<4,dim>  stress_strain_tensor_mu;
-  SymmetricTensor<4,dim>  stress_strain_tensor_kappa;
-  double E;
-  double nu;
-  double sigma_0;
-  double gamma;
-  double mu;
-  double kappa;
-  MPI_Comm mpi_communicator;
-  ConditionalOStream pcout;
-};
-
-template <int dim>
-ConstitutiveLaw<dim>::ConstitutiveLaw(double _E, double _nu, double _sigma_0, double _gamma, MPI_Comm _mpi_communicator, ConditionalOStream _pcout)
- :E (_E),
-  nu (_nu),
-  sigma_0 (_sigma_0),
-  gamma (_gamma),
-  mpi_communicator (_mpi_communicator),
-  pcout (_pcout)
-{
-  mu = E/(2*(1+nu));
-  kappa = E/(3*(1-2*nu));
-  pcout<< "-----> mu = " << mu << ", kappa = " << kappa <<std::endl;
-  stress_strain_tensor_kappa = kappa*outer_product(unit_symmetric_tensor<dim>(), unit_symmetric_tensor<dim>());
-  stress_strain_tensor_mu = 2*mu*(identity_tensor<dim>() - outer_product(unit_symmetric_tensor<dim>(), unit_symmetric_tensor<dim>())/3.0);
-}
+  using namespace dealii;
+
+                                   // @sect3{The <code>PlasticityContactProblem</code> class template}
+
+                                   // This class provides an interface
+                                   // for a constitutive law. In this
+                                   // example we are using an elastic
+                                   // plastic material with linear,
+                                   // isotropic hardening.
+
+  template <int dim> class ConstitutiveLaw;
+
+                                   // @sect3{The <code>PlasticityContactProblem</code> class template}
+
+                                   // This class supplies all function
+                                   // and variables needed to describe
+                                   // the nonlinear contact problem. It is
+                                   // close to step-41 but with some additional
+                                   // features like: handling hanging nodes,
+                                   // a newton method, using Trilinos and p4est
+                                   // for parallel distributed computing.
+                                   // To deal with hanging nodes makes
+                                   // life a bit more complicated since
+                                   // we need an other ConstraintMatrix now.
+                                   // We create a newton method for the
+                                   // active set method for the contact
+                                   // situation and to handle the nonlinear
+                                   // operator for the constitutive law.
 
-template <int dim>
-inline
-SymmetricTensor<2,dim> ConstitutiveLaw<dim>::get_strain (const FEValues<dim> &fe_values,
-                                                    const unsigned int   shape_func,
-                                                    const unsigned int   q_point) const
-{
-  const FEValuesExtractors::Vector displacement (0);
-  SymmetricTensor<2,dim> tmp;
+  template <int dim>
+  class PlasticityContactProblem
+  {
+  public:
+    PlasticityContactProblem (int _n_refinements_global, int _n_refinements_local);
+    void run ();
 
-  tmp = fe_values[displacement].symmetric_gradient (shape_func,q_point);
+  private:
+    void make_grid ();
+    void setup_system();
+    void assemble_nl_system (TrilinosWrappers::MPI::Vector &u);
+    void residual_nl_system (TrilinosWrappers::MPI::Vector &u);
+    void assemble_mass_matrix_diagonal (TrilinosWrappers::SparseMatrix &mass_matrix);
+    void update_solution_and_constraints ();
+    void dirichlet_constraints ();
+    void solve ();
+    void solve_newton ();
+    void refine_grid ();
+    void move_mesh (const TrilinosWrappers::MPI::Vector &_complete_displacement) const;
+    void output_results (const std::string& title) const;
 
-  return tmp;
-}
+    int                  n_refinements_global;
+    int                  n_refinements_local;
 
-template <int dim>
-void ConstitutiveLaw<dim>::plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor,
-                                                  SymmetricTensor<2,dim>  &strain_tensor,
-                                                  unsigned int            &elast_points,
-                                                  unsigned int            &plast_points,
-                                                  double                  &sigma_eff,
-                                                  double                  &yield)
-{
-  if (dim == 3)
-  {
-    SymmetricTensor<2,dim> stress_tensor;
-    stress_tensor = (stress_strain_tensor_kappa + stress_strain_tensor_mu)*strain_tensor;
-    double tmp = E/((1+nu)*(1-2*nu));
+    MPI_Comm             mpi_communicator;
 
-    SymmetricTensor<2,dim> deviator_stress_tensor = deviator(stress_tensor);
+    parallel::distributed::Triangulation<dim>   triangulation;
 
-    double deviator_stress_tensor_norm = deviator_stress_tensor.norm ();
+    FESystem<dim>        fe;
+    DoFHandler<dim>      dof_handler;
 
-    yield = 0;
-    stress_strain_tensor = stress_strain_tensor_mu;
-    double beta = 1.0;
-    if (deviator_stress_tensor_norm >= sigma_0)
-    {
-      beta = (sigma_0 + gamma)/deviator_stress_tensor_norm;
-      stress_strain_tensor *= beta;
-      yield = 1;
-      plast_points += 1;
-    }
-    else
-      elast_points += 1;
+    IndexSet             locally_owned_dofs;
+    IndexSet             locally_relevant_dofs;
 
-//     std::cout<< beta <<std::endl;
-    stress_strain_tensor += stress_strain_tensor_kappa;
+    unsigned int         number_iterations;
+    std::vector<double>  run_time;
 
-    sigma_eff = beta * deviator_stress_tensor_norm;
-  }
-}
+    ConstraintMatrix     constraints;
+    ConstraintMatrix     constraints_hanging_nodes;
+    ConstraintMatrix     constraints_dirichlet_hanging_nodes;
 
-template <int dim>
-void ConstitutiveLaw<dim>::linearized_plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor_linearized,
-                                                             SymmetricTensor<4,dim>  &stress_strain_tensor,
-                                                             SymmetricTensor<2,dim>  &strain_tensor)
-{
-  if (dim == 3)
-  {
-    SymmetricTensor<2,dim> stress_tensor;
-    stress_tensor = (stress_strain_tensor_kappa + stress_strain_tensor_mu)*strain_tensor;
-    double tmp = E/((1+nu)*(1-2*nu));
+    TrilinosWrappers::SparseMatrix system_matrix_newton;
 
-    stress_strain_tensor = stress_strain_tensor_mu;
-    stress_strain_tensor_linearized = stress_strain_tensor_mu;
+    TrilinosWrappers::MPI::Vector       solution;
+    TrilinosWrappers::MPI::Vector       old_solution;
+    TrilinosWrappers::MPI::Vector       system_rhs_newton;
+    TrilinosWrappers::MPI::Vector       resid_vector;
+    TrilinosWrappers::MPI::Vector       diag_mass_matrix_vector;
+    IndexSet                            active_set;
 
-    SymmetricTensor<2,dim> deviator_stress_tensor = deviator(stress_tensor);
+    ConditionalOStream pcout;
 
-    double deviator_stress_tensor_norm = deviator_stress_tensor.norm ();
+    TrilinosWrappers::PreconditionAMG::AdditionalData additional_data;
+    TrilinosWrappers::PreconditionAMG preconditioner_u;
+    TrilinosWrappers::PreconditionAMG preconditioner_t;
 
-    double beta = 1.0;
-    if (deviator_stress_tensor_norm >= sigma_0)
-    {
-      beta = (sigma_0 + gamma)/deviator_stress_tensor_norm;
-      stress_strain_tensor *= beta;
-      stress_strain_tensor_linearized *= beta;
-      deviator_stress_tensor /= deviator_stress_tensor_norm;
-      stress_strain_tensor_linearized -= beta*2*mu*outer_product(deviator_stress_tensor, deviator_stress_tensor);
-    }
+    std::auto_ptr<ConstitutiveLaw<dim> > plast_lin_hard;
 
-    stress_strain_tensor += stress_strain_tensor_kappa;
-    stress_strain_tensor_linearized += stress_strain_tensor_kappa;
-  }
-}
+    double sigma_0;    // Yield stress
+    double gamma;      // Parameter for the linear isotropic hardening
+    double e_modul;    // E-Modul
+    double nu;         // Poisson ratio
+  };
 
-namespace EquationData
-{
   template <int dim>
-  class RightHandSide : public Function<dim>
+  class ConstitutiveLaw
   {
   public:
-    RightHandSide () : Function<dim>(dim) {}
-
-    virtual double value (const Point<dim>   &p,
-                         const unsigned int  component = 0) const;
-
-    virtual void vector_value (const Point<dim> &p,
-                              Vector<double>   &values) const;
+    ConstitutiveLaw (double _E,
+                     double _nu,
+                     double _sigma_0,
+                     double _gamma,
+                     MPI_Comm _mpi_communicator,
+                     ConditionalOStream _pcout);
+
+    void plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor,
+                                 SymmetricTensor<2,dim>  &strain_tensor,
+                                 unsigned int           &elast_points,
+                                 unsigned int           &plast_points,
+                                 double                  &yield);
+    void linearized_plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor_linearized,
+                                            SymmetricTensor<4,dim>  &stress_strain_tensor,
+                                            SymmetricTensor<2,dim>  &strain_tensor);
+    inline SymmetricTensor<2,dim> get_strain (const FEValues<dim> &fe_values,
+                                              const unsigned int  shape_func,
+                                              const unsigned int  q_point) const;
+
+  private:
+    SymmetricTensor<4,dim>  stress_strain_tensor_mu;
+    SymmetricTensor<4,dim>  stress_strain_tensor_kappa;
+    double E;
+    double nu;
+    double sigma_0;
+    double gamma;
+    double mu;
+    double kappa;
+    MPI_Comm mpi_communicator;
+    ConditionalOStream pcout;
   };
 
   template <int dim>
-  double RightHandSide<dim>::value (const Point<dim> &p,
-                                   const unsigned int component) const
+  ConstitutiveLaw<dim>::ConstitutiveLaw(double _E, double _nu, double _sigma_0, double _gamma, MPI_Comm _mpi_communicator, ConditionalOStream _pcout)
+   :E (_E),
+    nu (_nu),
+    sigma_0 (_sigma_0),
+    gamma (_gamma),
+    mpi_communicator (_mpi_communicator),
+    pcout (_pcout)
   {
-    double return_value = 0.0;
-
-    if (component == 0)
-      return_value = 0.0;
-    if (component == 1)
-      return_value = 0.0;
-    if (component == 2)
-      // if ((p(0)-0.5)*(p(0)-0.5)+(p(1)-0.5)*(p(1)-0.5) < 0.2)
-      //       return_value = -5000;
-      // else
-      return_value = 0.0;
-    // for (unsigned int i=0; i<dim; ++i)
-    //   return_value += 4*std::pow(p(i), 4);
-
-    return return_value;
+    mu = E/(2*(1+nu));
+    kappa = E/(3*(1-2*nu));
+    pcout<< "-----> mu = " << mu << ", kappa = " << kappa <<std::endl;
+    stress_strain_tensor_kappa = kappa*outer_product(unit_symmetric_tensor<dim>(), unit_symmetric_tensor<dim>());
+    stress_strain_tensor_mu = 2*mu*(identity_tensor<dim>() - outer_product(unit_symmetric_tensor<dim>(), unit_symmetric_tensor<dim>())/3.0);
   }
 
   template <int dim>
-  void RightHandSide<dim>::vector_value (const Point<dim> &p,
-                                        Vector<double>   &values) const
+  inline
+  SymmetricTensor<2,dim> ConstitutiveLaw<dim>::get_strain (const FEValues<dim> &fe_values,
+                                                       const unsigned int   shape_func,
+                                                       const unsigned int   q_point) const
   {
-    for (unsigned int c=0; c<this->n_components; ++c)
-      values(c) = RightHandSide<dim>::value (p, c);
-  }
+    const FEValuesExtractors::Vector displacement (0);
+    SymmetricTensor<2,dim> tmp;
 
+    tmp = fe_values[displacement].symmetric_gradient (shape_func,q_point);
+
+    return tmp;
+  }
 
   template <int dim>
-  class BoundaryValues : public Function<dim>
+  void ConstitutiveLaw<dim>::plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor,
+                                                     SymmetricTensor<2,dim>  &strain_tensor,
+                                                     unsigned int            &elast_points,
+                                                     unsigned int            &plast_points,
+                                                     double                  &yield)
   {
-  public:
-    BoundaryValues () : Function<dim>(dim) {};
-
-    virtual double value (const Point<dim>   &p,
-                         const unsigned int  component = 0) const;
+    if (dim == 3)
+    {
+      SymmetricTensor<2,dim> stress_tensor;
+      stress_tensor = (stress_strain_tensor_kappa + stress_strain_tensor_mu)*strain_tensor;
+      double tmp = E/((1+nu)*(1-2*nu));
 
-    virtual void vector_value (const Point<dim> &p,
-                              Vector<double>   &values) const;
-  };
+      SymmetricTensor<2,dim> deviator_stress_tensor = deviator(stress_tensor);
 
-  template <int dim>
-  double BoundaryValues<dim>::value (const Point<dim> &p,
-                                    const unsigned int component) const
-  {
-    double return_value = 0;
+      double deviator_stress_tensor_norm = deviator_stress_tensor.norm ();
 
-    if (component == 0)
-      return_value = 0.0;
-    if (component == 1)
-      return_value = 0.0;
-    if (component == 2)
-      return_value = 0.0;
+      yield = 0;
+      stress_strain_tensor = stress_strain_tensor_mu;
+      double beta = 1.0;
+      if (deviator_stress_tensor_norm >= sigma_0)
+      {
+        beta = (sigma_0 + gamma)/deviator_stress_tensor_norm;
+        stress_strain_tensor *= beta;
+        yield = 1;
+        plast_points += 1;
+      }
+      else
+        elast_points += 1;
 
-    return return_value;
+      stress_strain_tensor += stress_strain_tensor_kappa;
+    }
   }
 
   template <int dim>
-  void BoundaryValues<dim>::vector_value (const Point<dim> &p,
-                                          Vector<double>   &values) const
+  void ConstitutiveLaw<dim>::linearized_plast_linear_hardening (SymmetricTensor<4,dim>  &stress_strain_tensor_linearized,
+                                                                SymmetricTensor<4,dim>  &stress_strain_tensor,
+                                                                SymmetricTensor<2,dim>  &strain_tensor)
   {
-    for (unsigned int c=0; c<this->n_components; ++c)
-      values(c) = BoundaryValues<dim>::value (p, c);
-  }
-
+    if (dim == 3)
+    {
+      SymmetricTensor<2,dim> stress_tensor;
+      stress_tensor = (stress_strain_tensor_kappa + stress_strain_tensor_mu)*strain_tensor;
+      double tmp = E/((1+nu)*(1-2*nu));
 
-  template <int dim>
-  class Obstacle : public Function<dim>
-  {
-  public:
-    Obstacle () : Function<dim>(dim) {};
+      stress_strain_tensor = stress_strain_tensor_mu;
+      stress_strain_tensor_linearized = stress_strain_tensor_mu;
 
-    virtual double value (const Point<dim>   &p,
-                         const unsigned int  component = 0) const;
+      SymmetricTensor<2,dim> deviator_stress_tensor = deviator(stress_tensor);
 
-    virtual void vector_value (const Point<dim> &p,
-                              Vector<double>   &values) const;
-  };
+      double deviator_stress_tensor_norm = deviator_stress_tensor.norm ();
 
-  template <int dim>
-  double Obstacle<dim>::value (const Point<dim> &p,
-                              const unsigned int component) const
-  {
-    double R = 0.03;
-    double return_value = 0.0;
-    if (component == 0)
-      return_value = p(0);
-    if (component == 1)
-      return_value = p(1);
-    if (component == 2)
+      double beta = 1.0;
+      if (deviator_stress_tensor_norm >= sigma_0)
       {
-       // double hz = 0.98;
-       // double position_x = 0.5;
-       // double alpha = 12.0;
-       // double s_x = 0.5039649116;
-       // double s_y = hz + 0.00026316298;
-       // if (p(0) > position_x - R && p(0) < s_x)
-       //   {
-       //     return_value = -sqrt(R*R - (p(0)-position_x)*(p(0)-position_x)) + hz + R;
-       //   }
-       // else if (p(0) >= s_x)
-       //   {
-       //     return_value = 12.0/90.0*p(0) + (s_y - alpha/90.0*s_x);
-       //   }
-       // else
-       //   return_value = 1e+10;
-
-       // Hindernis Dortmund
-       double x1 = p(0);
-       double x2 = p(1);
-       if (((x2-0.5)*(x2-0.5)+(x1-0.5)*(x1-0.5)<=0.3*0.3)&&((x2-0.5)*(x2-0.5)+(x1-1.0)*(x1-1.0)>=0.4*0.4)&&((x2-0.5)*(x2-0.5)+x1*x1>=0.4*0.4))
-         return_value = 0.999;
-       else
-         return_value = 1e+10;
-
-       // Hindernis Werkzeug TKSE
-       // double shift_walze_x = 0.0;
-       // double shift_walze_y = 0.0;
-       // return_value = 0.032 + data->dicke - input_copy->mikro_height (p(0) + shift_walze_x, p(1) + shift_walze_y, p(2));
-
-       // Ball with radius R
-       // double R = 0.5;
-       // if (std::pow ((p(0)-1.0/2.0), 2) + std::pow ((p(1)-1.0/2.0), 2) < R*R)
-       //   return_value = 1.0 + R - 0.001 - sqrt (R*R  - std::pow ((p(0)-1.0/2.0), 2)
-       //                                       - std::pow ((p(1)-1.0/2.0), 2));
-       // else
-       //   return_value = 1e+5;
+        beta = (sigma_0 + gamma)/deviator_stress_tensor_norm;
+        stress_strain_tensor *= beta;
+        stress_strain_tensor_linearized *= beta;
+        deviator_stress_tensor /= deviator_stress_tensor_norm;
+        stress_strain_tensor_linearized -= beta*2*mu*outer_product(deviator_stress_tensor, deviator_stress_tensor);
       }
-    return return_value;
 
-    // return 1e+10;//0.98;
+      stress_strain_tensor += stress_strain_tensor_kappa;
+      stress_strain_tensor_linearized += stress_strain_tensor_kappa;
+    }
   }
 
-  template <int dim>
-  void Obstacle<dim>::vector_value (const Point<dim> &p,
-                                   Vector<double> &values) const
+  namespace EquationData
   {
-    for (unsigned int c=0; c<this->n_components; ++c)
-      values(c) = Obstacle<dim>::value (p, c);
-  }
-}
+    template <int dim>
+    class RightHandSide : public Function<dim>
+    {
+    public:
+      RightHandSide () : Function<dim>(dim) {}
 
+      virtual double value (const Point<dim>   &p,
+                            const unsigned int  component = 0) const;
 
-                                 // @sect3{Implementation of the <code>Step4</code> class}
-
-                                 // Next for the implementation of the class
-                                 // template that makes use of the functions
-                                 // above. As before, we will write everything
-
-template <int dim>
-Step4<dim>::Step4 (int _n_refinements_global, int _n_refinements_local)
-  :
-  n_refinements_global (_n_refinements_global),
-  n_refinements_local (_n_refinements_local),
-  mpi_communicator (MPI_COMM_WORLD),
-  triangulation (mpi_communicator),
-  fe (FE_Q<dim>(1), dim),
-  dof_handler (triangulation),
-  pcout (std::cout,
-        (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)),
-  sigma_0 (400),
-  gamma (1.e-2),
-  e_modul (2.0e5),
-  nu (0.3)
-{
-  // double _E, double _nu, double _sigma_0, double _gamma
-  plast_lin_hard.reset (new ConstitutiveLaw<dim> (e_modul, nu, sigma_0, gamma, mpi_communicator, pcout));
-}
+      virtual void vector_value (const Point<dim> &p,
+                                 Vector<double>   &values) const;
+    };
 
-template <int dim>
-void Step4<dim>::make_grid ()
-{
-  std::vector<unsigned int> repet(3);
-  repet[0] = 1;//20;
-  repet[1] = 1;
-  repet[2] = 1;
-
-  Point<dim> p1 (0,0,0);
-  Point<dim> p2 (1.0, 1.0, 1.0);
-  GridGenerator::subdivided_hyper_rectangle (triangulation, repet, p1, p2);
-
-  Triangulation<3>::active_cell_iterator
-    cell = triangulation.begin_active(),
-    endc = triangulation.end();
-
-  /* boundary_indicators:
-            _______
-           /  9    /|
-          /______ / |
-        8|       | 8|
-         |   8   | /
-         |_______|/
-             6
-   */
-
-  for (; cell!=endc; ++cell)
-    for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-      {
-       if (cell->face (face)->center ()[2] == p2(2))
-         cell->face (face)->set_boundary_indicator (9);
-       if (cell->face (face)->center ()[0] == p1(0) ||
-           cell->face (face)->center ()[0] == p2(0) ||
-           cell->face (face)->center ()[1] == p1(1) ||
-           cell->face (face)->center ()[1] == p2(1))
-         cell->face (face)->set_boundary_indicator (8);
-       if (cell->face (face)->center ()[2] == p1(2))
-         cell->face (face)->set_boundary_indicator (6);
-      }
+    template <int dim>
+    double RightHandSide<dim>::value (const Point<dim> &p,
+                                      const unsigned int component) const
+    {
+      double return_value = 0.0;
+
+      if (component == 0)
+        return_value = 0.0;
+      if (component == 1)
+        return_value = 0.0;
+      if (component == 2)
+        // if ((p(0)-0.5)*(p(0)-0.5)+(p(1)-0.5)*(p(1)-0.5) < 0.2)
+        //     return_value = -5000;
+        // else
+        return_value = 0.0;
+      // for (unsigned int i=0; i<dim; ++i)
+      //   return_value += 4*std::pow(p(i), 4);
+
+      return return_value;
+    }
+
+    template <int dim>
+    void RightHandSide<dim>::vector_value (const Point<dim> &p,
+                                           Vector<double>   &values) const
+    {
+      for (unsigned int c=0; c<this->n_components; ++c)
+        values(c) = RightHandSide<dim>::value (p, c);
+    }
 
-  triangulation.refine_global (n_refinements_global);
 
-  // Lokale Verfeinerung des Gitters
-  for (int step=0; step<n_refinements_local; ++step)
+    template <int dim>
+    class BoundaryValues : public Function<dim>
     {
-      cell = triangulation.begin_active();  // Iterator ueber alle Zellen
-
-      for (; cell!=endc; ++cell)
-         for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-         {
-//        if (cell->face (face)->at_boundary()
-//            && cell->face (face)->boundary_indicator () == 9)
-//          {
-//            cell->set_refine_flag ();
-//            break;
-//          }
-//        else if (cell->level () == n_refinements + n_refinements_local - 1)
-//          {
-//            cell->set_refine_flag ();
-//            break;
-//          }
-
-//        if (cell->face (face)->at_boundary()
-//            && cell->face (face)->boundary_indicator () == 9)
-//          {
-//            if (cell->face (face)->vertex (0)(0) <= 0.7 &&
-//                cell->face (face)->vertex (1)(0) >= 0.3 &&
-//                cell->face (face)->vertex (0)(1) <= 0.875 &&
-//                cell->face (face)->vertex (2)(1) >= 0.125)
-//              {
-//                cell->set_refine_flag ();
-//                break;
-//              }
-//          }
-           
-           if (step == 0 &&
-               cell->center ()(2) < n_refinements_local*9.0/64.0)
-            {
-              cell->set_refine_flag ();
-              break;
-            }     
-        };
-      triangulation.execute_coarsening_and_refinement ();
+    public:
+      BoundaryValues () : Function<dim>(dim) {};
+
+      virtual double value (const Point<dim>   &p,
+                            const unsigned int  component = 0) const;
+
+      virtual void vector_value (const Point<dim> &p,
+                                 Vector<double>   &values) const;
     };
-}
 
-template <int dim>
-void Step4<dim>::setup_system ()
-{
-  // setup dofs
-  {
-    dof_handler.distribute_dofs (fe);
+    template <int dim>
+    double BoundaryValues<dim>::value (const Point<dim> &p,
+                                       const unsigned int component) const
+    {
+      double return_value = 0;
+
+      if (component == 0)
+        return_value = 0.0;
+      if (component == 1)
+        return_value = 0.0;
+      if (component == 2)
+        return_value = 0.0;
+
+      return return_value;
+    }
 
-    locally_owned_dofs = dof_handler.locally_owned_dofs ();
-    locally_relevant_dofs.clear();
-    DoFTools::extract_locally_relevant_dofs (dof_handler,
-                                            locally_relevant_dofs);
+    template <int dim>
+    void BoundaryValues<dim>::vector_value (const Point<dim> &p,
+                                             Vector<double>   &values) const
+    {
+      for (unsigned int c=0; c<this->n_components; ++c)
+        values(c) = BoundaryValues<dim>::value (p, c);
+    }
+
+
+    template <int dim>
+    class Obstacle : public Function<dim>
+    {
+    public:
+      Obstacle () : Function<dim>(dim) {};
+
+      virtual double value (const Point<dim>   &p,
+                            const unsigned int  component = 0) const;
+
+      virtual void vector_value (const Point<dim> &p,
+                                 Vector<double>   &values) const;
+    };
+
+    template <int dim>
+    double Obstacle<dim>::value (const Point<dim> &p,
+                                 const unsigned int component) const
+    {
+      double R = 0.03;
+      double return_value = 0.0;
+      if (component == 0)
+        return_value = p(0);
+      if (component == 1)
+        return_value = p(1);
+      if (component == 2)
+        {
+          // double hz = 0.98;
+          // double position_x = 0.5;
+          // double alpha = 12.0;
+          // double s_x = 0.5039649116;
+          // double s_y = hz + 0.00026316298;
+          // if (p(0) > position_x - R && p(0) < s_x)
+          //   {
+          //     return_value = -sqrt(R*R - (p(0)-position_x)*(p(0)-position_x)) + hz + R;
+          //   }
+          // else if (p(0) >= s_x)
+          //   {
+          //     return_value = 12.0/90.0*p(0) + (s_y - alpha/90.0*s_x);
+          //   }
+          // else
+          //   return_value = 1e+10;
+
+          // Hindernis Dortmund
+          double x1 = p(0);
+          double x2 = p(1);
+          if (((x2-0.5)*(x2-0.5)+(x1-0.5)*(x1-0.5)<=0.3*0.3)&&((x2-0.5)*(x2-0.5)+(x1-1.0)*(x1-1.0)>=0.4*0.4)&&((x2-0.5)*(x2-0.5)+x1*x1>=0.4*0.4))
+            return_value = 0.999;
+          else
+            return_value = 1e+10;
+
+          // Hindernis Werkzeug TKSE
+          // double shift_walze_x = 0.0;
+          // double shift_walze_y = 0.0;
+          // return_value = 0.032 + data->dicke - input_copy->mikro_height (p(0) + shift_walze_x, p(1) + shift_walze_y, p(2));
+
+          // Ball with radius R
+          // double R = 0.5;
+          // if (std::pow ((p(0)-1.0/2.0), 2) + std::pow ((p(1)-1.0/2.0), 2) < R*R)
+          //   return_value = 1.0 + R - 0.001 - sqrt (R*R  - std::pow ((p(0)-1.0/2.0), 2)
+          //                                    - std::pow ((p(1)-1.0/2.0), 2));
+          // else
+          //   return_value = 1e+5;
+        }
+      return return_value;
+    }
+
+    template <int dim>
+    void Obstacle<dim>::vector_value (const Point<dim> &p,
+                                      Vector<double> &values) const
+    {
+      for (unsigned int c=0; c<this->n_components; ++c)
+        values(c) = Obstacle<dim>::value (p, c);
+    }
   }
 
-  // setup hanging nodes and dirichlet constraints
+
+                                   // @sect3{Implementation of the <code>PlasticityContactProblem</code> class}
+
+                                   // Next for the implementation of the class
+                                   // template that makes use of the functions
+                                   // above. As before, we will write everything
+
+  template <int dim>
+  PlasticityContactProblem<dim>::PlasticityContactProblem (int _n_refinements_global, int _n_refinements_local)
+    :
+    n_refinements_global (_n_refinements_global),
+    n_refinements_local (_n_refinements_local),
+    mpi_communicator (MPI_COMM_WORLD),
+    triangulation (mpi_communicator),
+    fe (FE_Q<dim>(1), dim),
+    dof_handler (triangulation),
+    pcout (std::cout,
+           (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)),
+    sigma_0 (400),
+    gamma (1.e-2),
+    e_modul (2.0e5),
+    nu (0.3)
   {
-    // constraints_hanging_nodes.clear ();
-    constraints_hanging_nodes.reinit (locally_relevant_dofs);
-    DoFTools::make_hanging_node_constraints (dof_handler,
-                                            constraints_hanging_nodes);
-    constraints_hanging_nodes.close ();
-
-    pcout << "Number of active cells: "
-              << triangulation.n_active_cells()
-              << std::endl
-              << "Total number of cells: "
-              << triangulation.n_cells()
-              << std::endl
-              << "Number of degrees of freedom: "
-              << dof_handler.n_dofs ()
-              << std::endl;
-
-    dirichlet_constraints ();
+    // double _E, double _nu, double _sigma_0, double _gamma
+    plast_lin_hard.reset (new ConstitutiveLaw<dim> (e_modul, nu, sigma_0, gamma, mpi_communicator, pcout));
   }
 
-  // Initialzation for matrices and vectors
+  template <int dim>
+  void PlasticityContactProblem<dim>::make_grid ()
   {
-    solution.reinit (locally_relevant_dofs, mpi_communicator);
-    system_rhs_newton.reinit (locally_owned_dofs, mpi_communicator);
-    old_solution.reinit (system_rhs_newton);
-    resid_vector.reinit (system_rhs_newton);
-    diag_mass_matrix_vector.reinit (system_rhs_newton);
-    active_set.set_size (locally_relevant_dofs.size ());
+    std::vector<unsigned int> repet(3);
+    repet[0] = 1;//20;
+    repet[1] = 1;
+    repet[2] = 1;
+
+    Point<dim> p1 (0,0,0);
+    Point<dim> p2 (1.0, 1.0, 1.0);
+    GridGenerator::subdivided_hyper_rectangle (triangulation, repet, p1, p2);
+
+    Triangulation<3>::active_cell_iterator
+      cell = triangulation.begin_active(),
+      endc = triangulation.end();
+
+    /* boundary_indicators:
+              _______
+             /  9    /|
+            /______ / |
+          8|       | 8|
+           |   8   | /
+           |_______|/
+               6
+     */
+
+    for (; cell!=endc; ++cell)
+      for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+        {
+          if (cell->face (face)->center ()[2] == p2(2))
+            cell->face (face)->set_boundary_indicator (9);
+          if (cell->face (face)->center ()[0] == p1(0) ||
+              cell->face (face)->center ()[0] == p2(0) ||
+              cell->face (face)->center ()[1] == p1(1) ||
+              cell->face (face)->center ()[1] == p2(1))
+            cell->face (face)->set_boundary_indicator (8);
+          if (cell->face (face)->center ()[2] == p1(2))
+            cell->face (face)->set_boundary_indicator (6);
+        }
+
+    triangulation.refine_global (n_refinements_global);
+
+    // Lokale Verfeinerung des Gitters
+//    for (int step=0; step<n_refinements_local; ++step)
+//      {
+//        cell = triangulation.begin_active();  // Iterator ueber alle Zellen
+//
+//        for (; cell!=endc; ++cell)
+//           for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+//           {
+//  //            if (cell->face (face)->at_boundary()
+//  //                && cell->face (face)->boundary_indicator () == 9)
+//  //              {
+//  //                cell->set_refine_flag ();
+//  //                break;
+//  //              }
+//  //            else if (cell->level () == n_refinements + n_refinements_local - 1)
+//  //              {
+//  //                cell->set_refine_flag ();
+//  //                break;
+//  //              }
+//
+//  //            if (cell->face (face)->at_boundary()
+//  //                && cell->face (face)->boundary_indicator () == 9)
+//  //              {
+//  //                if (cell->face (face)->vertex (0)(0) <= 0.7 &&
+//  //                    cell->face (face)->vertex (1)(0) >= 0.3 &&
+//  //                    cell->face (face)->vertex (0)(1) <= 0.875 &&
+//  //                    cell->face (face)->vertex (2)(1) >= 0.125)
+//  //                  {
+//  //                    cell->set_refine_flag ();
+//  //                    break;
+//  //                  }
+//  //              }
+//
+//              if (step == 0 &&
+//                  cell->center ()(2) < n_refinements_local*9.0/64.0)
+//               {
+//                 cell->set_refine_flag ();
+//                 break;
+//               }
+//          };
+//        triangulation.execute_coarsening_and_refinement ();
+//      };
   }
 
-  // setup sparsity pattern
+  template <int dim>
+  void PlasticityContactProblem<dim>::setup_system ()
   {
-    TrilinosWrappers::SparsityPattern sp (locally_owned_dofs,
-                                         mpi_communicator);
+    // setup dofs
+    {
+      dof_handler.distribute_dofs (fe);
+
+      locally_owned_dofs = dof_handler.locally_owned_dofs ();
+      locally_relevant_dofs.clear();
+      DoFTools::extract_locally_relevant_dofs (dof_handler,
+                                               locally_relevant_dofs);
+    }
+
+    // setup hanging nodes and dirichlet constraints
+    {
+      constraints_hanging_nodes.clear ();
+      constraints_hanging_nodes.reinit (locally_relevant_dofs);
+      DoFTools::make_hanging_node_constraints (dof_handler,
+                                               constraints_hanging_nodes);
+      constraints_hanging_nodes.close ();
+
+      pcout << "Number of active cells: "
+                 << triangulation.n_active_cells()
+                 << std::endl
+                 << "Total number of cells: "
+                 << triangulation.n_cells()
+                 << std::endl
+                 << "Number of degrees of freedom: "
+                 << dof_handler.n_dofs ()
+                 << std::endl;
+
+      dirichlet_constraints ();
+    }
 
-    DoFTools::make_sparsity_pattern (dof_handler, sp, constraints_dirichlet_hanging_nodes, false,
-                                    Utilities::MPI::this_mpi_process(mpi_communicator));
+    // Initialzation for matrices and vectors
+    {
+      solution.reinit (locally_relevant_dofs, mpi_communicator);
+      system_rhs_newton.reinit (locally_owned_dofs, mpi_communicator);
+      old_solution.reinit (system_rhs_newton);
+      resid_vector.reinit (system_rhs_newton);
+      diag_mass_matrix_vector.reinit (system_rhs_newton);
+      active_set.clear ();
+      active_set.set_size (locally_relevant_dofs.size ());
+    }
 
-    sp.compress();
+    // setup sparsity pattern
+    {
+      TrilinosWrappers::SparsityPattern sp (locally_owned_dofs,
+                                            mpi_communicator);
 
-    system_matrix_newton.reinit (sp);
+      DoFTools::make_sparsity_pattern (dof_handler, sp, constraints_dirichlet_hanging_nodes, false,
+                                       Utilities::MPI::this_mpi_process(mpi_communicator));
 
-    mass_matrix.reinit (sp);
-  }    
+      sp.compress();
 
-  assemble_mass_matrix ();
-  const unsigned int
-    start = (system_rhs_newton.local_range().first),
-    end   = (system_rhs_newton.local_range().second);
-  for (unsigned int j=start; j<end; j++)
-    diag_mass_matrix_vector (j) = mass_matrix.diag_element (j);
-  number_iterations = 0;
-  
-  diag_mass_matrix_vector.compress ();
-}
+      system_matrix_newton.reinit (sp);
 
-template <int dim>
-void Step4<dim>::assemble_mass_matrix ()
-{
-  QTrapez<dim-1>  face_quadrature_formula;
+      TrilinosWrappers::SparseMatrix mass_matrix;
+      mass_matrix.reinit (sp);
+      assemble_mass_matrix_diagonal (mass_matrix);
+      const unsigned int
+        start = (system_rhs_newton.local_range().first),
+        end   = (system_rhs_newton.local_range().second);
+      for (unsigned int j=start; j<end; j++)
+        diag_mass_matrix_vector (j) = mass_matrix.diag_element (j);
+      number_iterations = 0;
 
-  FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
-                                     update_values   | update_quadrature_points | update_JxW_values);
+      diag_mass_matrix_vector.compress ();
+    }
+  }
 
-  const unsigned int   dofs_per_cell      = fe.dofs_per_cell;
-  const unsigned int   dofs_per_face      = fe.dofs_per_face;
-  const unsigned int   n_face_q_points    = face_quadrature_formula.size();
+  template <int dim>
+  void PlasticityContactProblem<dim>::assemble_nl_system (TrilinosWrappers::MPI::Vector &u)
+  {
+    QGauss<dim>  quadrature_formula(2);
+    QGauss<dim-1>  face_quadrature_formula(2);
+
+    FEValues<dim> fe_values (fe, quadrature_formula,
+                             UpdateFlags(update_values    |
+                                         update_gradients |
+                                         update_q_points  |
+                                         update_JxW_values));
+
+    FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
+                                      update_values   | 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 ();
+    const unsigned int   n_face_q_points = face_quadrature_formula.size();
+
+    const EquationData::RightHandSide<dim> right_hand_side;
+    std::vector<Vector<double> > right_hand_side_values (n_q_points,
+                                                         Vector<double>(dim));
+    std::vector<Vector<double> > right_hand_side_values_face (n_face_q_points,
+                                                              Vector<double>(dim));
+
+    FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+    Vector<double>       cell_rhs (dofs_per_cell);
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+    typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active(),
+                                                   endc = dof_handler.end();
+
+    const FEValuesExtractors::Vector displacement (0);
+
+    TrilinosWrappers::MPI::Vector   test_rhs(solution);
+    const double kappa = 1.0;
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        {
+          fe_values.reinit (cell);
+          cell_matrix = 0;
+          cell_rhs = 0;
+
+          right_hand_side.vector_value_list (fe_values.get_quadrature_points(),
+                                             right_hand_side_values);
+
+          std::vector<SymmetricTensor<2,dim> > strain_tensor (n_q_points);
+          fe_values[displacement].get_function_symmetric_gradients (u, strain_tensor);
+
+          for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+            {
+              SymmetricTensor<4,dim> stress_strain_tensor_linearized;
+              SymmetricTensor<4,dim> stress_strain_tensor;
+              SymmetricTensor<2,dim> stress_tensor;
+
+              plast_lin_hard->linearized_plast_linear_hardening (stress_strain_tensor_linearized,
+                                                                 stress_strain_tensor,
+                                                                 strain_tensor[q_point]);
+
+              //       if (q_point == 0)
+              //       std::cout<< stress_strain_tensor_linearized <<std::endl;
+              //       std::cout<< stress_strain_tensor <<std::endl;
+              for (unsigned int i=0; i<dofs_per_cell; ++i)
+                {
+                  stress_tensor = stress_strain_tensor_linearized * plast_lin_hard->get_strain(fe_values, i, q_point);
+
+                  for (unsigned int j=0; j<dofs_per_cell; ++j)
+                    {
+                      cell_matrix(i,j) += (stress_tensor *
+                                           plast_lin_hard->get_strain(fe_values, j, q_point) *
+                                           fe_values.JxW (q_point));
+                    }
+
+                  // the linearized part a(v^i;v^i,v) of the rhs
+                  cell_rhs(i) += (stress_tensor *
+                                  strain_tensor[q_point] *
+                                  fe_values.JxW (q_point));
+
+                  // the residual part a(v^i;v) of the rhs
+                  cell_rhs(i) -= (strain_tensor[q_point] * stress_strain_tensor *
+                                  plast_lin_hard->get_strain(fe_values, i, q_point) *
+                                  fe_values.JxW (q_point));
+
+                  // the residual part F(v) of the rhs
+                  Tensor<1,dim> rhs_values;
+                  rhs_values = 0;
+                  cell_rhs(i) += (fe_values[displacement].value (i, q_point) *
+                                  rhs_values *
+                                  fe_values.JxW (q_point));
+                }
+            }
+
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            {
+              if (cell->face (face)->at_boundary()
+                  && cell->face (face)->boundary_indicator () == 9)
+                {
+                  fe_values_face.reinit (cell, face);
+
+                  right_hand_side.vector_value_list (fe_values_face.get_quadrature_points(),
+                                                     right_hand_side_values_face);
+
+                  for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
+                    {
+                      Tensor<1,dim> rhs_values;
+                      rhs_values = 0;
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        cell_rhs(i) += (fe_values_face[displacement].value (i, q_point) *
+                                        rhs_values *
+                                        fe_values_face.JxW (q_point));
+                    }
+                }
+            }
+
+          cell->get_dof_indices (local_dof_indices);
+          constraints.distribute_local_to_global (cell_matrix, cell_rhs,
+                                                  local_dof_indices,
+                                                  system_matrix_newton, system_rhs_newton, true);
+        };
 
-  FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+    system_matrix_newton.compress ();
+    system_rhs_newton.compress (Add);
+  }
 
-  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+  template <int dim>
+  void PlasticityContactProblem<dim>::residual_nl_system (TrilinosWrappers::MPI::Vector &u)
+  {
+    QGauss<dim>  quadrature_formula(2);
+    QGauss<dim-1> face_quadrature_formula(2);
+
+    FEValues<dim> fe_values (fe, quadrature_formula,
+                             UpdateFlags(update_values    |
+                                         update_gradients |
+                                         update_q_points  |
+                                         update_JxW_values));
+
+    FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
+                                      update_values   | 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 ();
+    const unsigned int   n_face_q_points = face_quadrature_formula.size();
+
+    const EquationData::RightHandSide<dim> right_hand_side;
+    std::vector<Vector<double> > right_hand_side_values (n_q_points,
+                                                         Vector<double>(dim));
+    std::vector<Vector<double> > right_hand_side_values_face (n_face_q_points,
+                                                              Vector<double>(dim));
+
+    Vector<double>       cell_rhs (dofs_per_cell);
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+    const FEValuesExtractors::Vector displacement (0);
+
+    typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active(),
+                                                   endc = dof_handler.end();
+
+    unsigned int elast_points = 0;
+    unsigned int plast_points = 0;
+    double       yield = 0;
+    unsigned int cell_number = 0;
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        {
+          fe_values.reinit (cell);
+          cell_rhs = 0;
+
+          right_hand_side.vector_value_list (fe_values.get_quadrature_points(),
+                                             right_hand_side_values);
+
+          std::vector<SymmetricTensor<2,dim> > strain_tensor (n_q_points);
+          fe_values[displacement].get_function_symmetric_gradients (u, strain_tensor);
+
+          for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+            {
+              SymmetricTensor<4,dim> stress_strain_tensor;
+              SymmetricTensor<2,dim> stress_tensor;
+
+              plast_lin_hard->plast_linear_hardening (stress_strain_tensor, strain_tensor[q_point],
+                                                      elast_points, plast_points, yield);
+
+              for (unsigned int i=0; i<dofs_per_cell; ++i)
+                {
+                  cell_rhs(i) -= (strain_tensor[q_point] * stress_strain_tensor * //(stress_tensor) *
+                                  plast_lin_hard->get_strain(fe_values, i, q_point) *
+                                  fe_values.JxW (q_point));
+
+                  Tensor<1,dim> rhs_values;
+                  rhs_values = 0;
+                  cell_rhs(i) += ((fe_values[displacement].value (i, q_point) *
+                                   rhs_values) *
+                                  fe_values.JxW (q_point));
+                };
+            };
+
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            {
+              if (cell->face (face)->at_boundary()
+                  && cell->face (face)->boundary_indicator () == 9)
+                {
+                  fe_values_face.reinit (cell, face);
+
+                  right_hand_side.vector_value_list (fe_values_face.get_quadrature_points(),
+                                                     right_hand_side_values_face);
+
+                  for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
+                    {
+                      Tensor<1,dim> rhs_values;
+                      rhs_values = 0;
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        cell_rhs(i) += (fe_values_face[displacement].value (i, q_point) *
+                                        rhs_values *
+                                        fe_values_face.JxW (q_point));
+                    }
+                }
+            }
+
+          cell->get_dof_indices (local_dof_indices);
+          constraints_dirichlet_hanging_nodes.distribute_local_to_global (cell_rhs,
+                                                                          local_dof_indices,
+                                                                          system_rhs_newton);
+
+          cell_number += 1;
+        };
 
-  const FEValuesExtractors::Vector displacement (0);
+    system_rhs_newton.compress ();
 
-  typename DoFHandler<dim>::active_cell_iterator
-    cell = dof_handler.begin_active(),
-    endc = dof_handler.end();
+    unsigned int sum_elast_points = Utilities::MPI::sum(elast_points, mpi_communicator);
+    unsigned int sum_plast_points = Utilities::MPI::sum(plast_points, mpi_communicator);
+    pcout<< "Elast-Points = " << sum_elast_points <<std::endl;
+    pcout<< "Plast-Points = " << sum_plast_points <<std::endl;
+  }
 
-  for (; cell!=endc; ++cell)
-    if (cell->is_locally_owned())
-      for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-       if (cell->face (face)->at_boundary()
-           && cell->face (face)->boundary_indicator () == 9)
-         {
-           fe_values_face.reinit (cell, face);
-           cell_matrix = 0;
-
-           for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
-             for (unsigned int i=0; i<dofs_per_cell; ++i)
-               cell_matrix(i,i) += (fe_values_face[displacement].value (i, q_point) *
-                                    fe_values_face[displacement].value (i, q_point) *
-                                    fe_values_face.JxW (q_point));
-
-           cell->get_dof_indices (local_dof_indices);
-
-           constraints_dirichlet_hanging_nodes.distribute_local_to_global (cell_matrix,
-                                                                           local_dof_indices,
-                                                                           mass_matrix);
-         }
-
-  mass_matrix.compress ();
-}
+  template <int dim>
+  void PlasticityContactProblem<dim>::assemble_mass_matrix_diagonal (TrilinosWrappers::SparseMatrix &mass_matrix)
+  {
+    QTrapez<dim-1>  face_quadrature_formula;
 
-template <int dim>
-void Step4<dim>::assemble_nl_system (TrilinosWrappers::MPI::Vector &u)
-{
-  QGauss<dim>  quadrature_formula(2);
-  QGauss<dim-1>  face_quadrature_formula(2);
+    FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
+                                      update_values   |
+                                      update_quadrature_points |
+                                      update_JxW_values);
 
-  FEValues<dim> fe_values (fe, quadrature_formula,
-                          UpdateFlags(update_values    |
-                                      update_gradients |
-                                      update_q_points  |
-                                      update_JxW_values));
+    const unsigned int   dofs_per_cell      = fe.dofs_per_cell;
+    const unsigned int   n_face_q_points    = face_quadrature_formula.size();
 
-  FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
-                                   update_values   | update_quadrature_points |
-                                   update_JxW_values);
+    FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
 
-  const unsigned int   dofs_per_cell = fe.dofs_per_cell;
-  const unsigned int   n_q_points    = quadrature_formula.size ();
-  const unsigned int   n_face_q_points = face_quadrature_formula.size();
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
 
-  const EquationData::RightHandSide<dim> right_hand_side;
-  std::vector<Vector<double> > right_hand_side_values (n_q_points,
-                                                       Vector<double>(dim));
-  std::vector<Vector<double> > right_hand_side_values_face (n_face_q_points,
-                                                           Vector<double>(dim));
+    const FEValuesExtractors::Vector displacement (0);
 
-  FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
-  Vector<double>       cell_rhs (dofs_per_cell);
+    typename DoFHandler<dim>::active_cell_iterator
+      cell = dof_handler.begin_active(),
+      endc = dof_handler.end();
 
-  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+          if (cell->face (face)->at_boundary()
+              && cell->face (face)->boundary_indicator () == 9)
+            {
+              fe_values_face.reinit (cell, face);
+              cell_matrix = 0;
 
-  typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active(),
-                                                endc = dof_handler.end();
+              for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
+                for (unsigned int i=0; i<dofs_per_cell; ++i)
+                  cell_matrix(i,i) += (fe_values_face[displacement].value (i, q_point) *
+                                       fe_values_face[displacement].value (i, q_point) *
+                                       fe_values_face.JxW (q_point));
 
-  const FEValuesExtractors::Vector displacement (0);
+              cell->get_dof_indices (local_dof_indices);
 
-  TrilinosWrappers::MPI::Vector   test_rhs(solution);
-  const double kappa = 1.0;
-  for (; cell!=endc; ++cell)
-    if (cell->is_locally_owned())
-      {
-       fe_values.reinit (cell);
-       cell_matrix = 0;
-       cell_rhs = 0;
-
-       right_hand_side.vector_value_list (fe_values.get_quadrature_points(),
-                                          right_hand_side_values);
-
-       std::vector<SymmetricTensor<2,dim> > strain_tensor (n_q_points);
-       fe_values[displacement].get_function_symmetric_gradients (u, strain_tensor);
-
-       for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
-         {
-           SymmetricTensor<4,dim> stress_strain_tensor_linearized;
-           SymmetricTensor<4,dim> stress_strain_tensor;
-           SymmetricTensor<2,dim> stress_tensor;
-
-           plast_lin_hard->linearized_plast_linear_hardening (stress_strain_tensor_linearized,
-                                                              stress_strain_tensor,
-                                                              strain_tensor[q_point]);
-
-           //          if (q_point == 0)
-           //          std::cout<< stress_strain_tensor_linearized <<std::endl;
-           //          std::cout<< stress_strain_tensor <<std::endl;
-           for (unsigned int i=0; i<dofs_per_cell; ++i)
-             {
-               stress_tensor = stress_strain_tensor_linearized * plast_lin_hard->get_strain(fe_values, i, q_point);
-
-               for (unsigned int j=0; j<dofs_per_cell; ++j)
-                 {
-                   cell_matrix(i,j) += (stress_tensor *
-                                        plast_lin_hard->get_strain(fe_values, j, q_point) *
-                                        fe_values.JxW (q_point));
-                 }
-
-               // the linearized part a(v^i;v^i,v) of the rhs
-               cell_rhs(i) += (stress_tensor *
-                               strain_tensor[q_point] *
-                               fe_values.JxW (q_point));
-
-               // the residual part a(v^i;v) of the rhs
-               cell_rhs(i) -= (strain_tensor[q_point] * stress_strain_tensor *
-                               plast_lin_hard->get_strain(fe_values, i, q_point) *
-                               fe_values.JxW (q_point));
-
-               // the residual part F(v) of the rhs
-               Tensor<1,dim> rhs_values;
-               rhs_values = 0;
-               cell_rhs(i) += (fe_values[displacement].value (i, q_point) *
-                               rhs_values *
-                               fe_values.JxW (q_point));
-             }
-         }
-
-       for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-         {
-           if (cell->face (face)->at_boundary()
-               && cell->face (face)->boundary_indicator () == 9)
-             {
-               fe_values_face.reinit (cell, face);
-
-               right_hand_side.vector_value_list (fe_values_face.get_quadrature_points(),
-                                                  right_hand_side_values_face);
-
-               for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
-                 {
-                   Tensor<1,dim> rhs_values;
-                   rhs_values = 0;
-                   for (unsigned int i=0; i<dofs_per_cell; ++i)
-                     cell_rhs(i) += (fe_values_face[displacement].value (i, q_point) *
-                                     rhs_values *
-                                     fe_values_face.JxW (q_point));
-                 }
-             }
-         }
-
-       cell->get_dof_indices (local_dof_indices);
-       constraints.distribute_local_to_global (cell_matrix, cell_rhs,
-                                               local_dof_indices,
-                                               system_matrix_newton, system_rhs_newton, true);
-      };
-
-  system_matrix_newton.compress ();
-  system_rhs_newton.compress (Add);
-}
+              constraints_dirichlet_hanging_nodes.distribute_local_to_global (cell_matrix,
+                                                                              local_dof_indices,
+                                                                              mass_matrix);
+            }
 
-template <int dim>
-void Step4<dim>::residual_nl_system (TrilinosWrappers::MPI::Vector &u,
-                                    Vector<double>                &sigma_eff_vector)
-{
-  QGauss<dim>  quadrature_formula(2);
-  QGauss<dim-1> face_quadrature_formula(2);
-
-  FEValues<dim> fe_values (fe, quadrature_formula,
-                          UpdateFlags(update_values    |
-                                      update_gradients |
-                                      update_q_points  |
-                                      update_JxW_values));
-
-  FEFaceValues<dim> fe_values_face (fe, face_quadrature_formula,
-                                   update_values   | 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 ();
-  const unsigned int   n_face_q_points = face_quadrature_formula.size();
-
-  const EquationData::RightHandSide<dim> right_hand_side;
-  std::vector<Vector<double> > right_hand_side_values (n_q_points,
-                                                       Vector<double>(dim));
-  std::vector<Vector<double> > right_hand_side_values_face (n_face_q_points,
-                                                           Vector<double>(dim));
-
-  Vector<double>       cell_rhs (dofs_per_cell);
-  Vector<double>       cell_sigma_eff (dofs_per_cell);
-
-  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-
-  const FEValuesExtractors::Vector displacement (0);
-
-  typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active(),
-                                                endc = dof_handler.end();
-
-  unsigned int elast_points = 0;
-  unsigned int plast_points = 0;
-  double       sigma_eff = 0;
-  double       yield = 0;
-  unsigned int cell_number = 0;
-  for (; cell!=endc; ++cell)
-    if (cell->is_locally_owned())
-      {
-       fe_values.reinit (cell);
-       cell_rhs = 0;
-
-       right_hand_side.vector_value_list (fe_values.get_quadrature_points(),
-                                          right_hand_side_values);
-
-       std::vector<SymmetricTensor<2,dim> > strain_tensor (n_q_points);
-       fe_values[displacement].get_function_symmetric_gradients (u, strain_tensor);
-
-       for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
-         {
-           SymmetricTensor<4,dim> stress_strain_tensor;
-           SymmetricTensor<2,dim> stress_tensor;
-
-           plast_lin_hard->plast_linear_hardening (stress_strain_tensor, strain_tensor[q_point],
-                                                   elast_points, plast_points, sigma_eff, yield);
-
-           // sigma_eff_vector (cell_number) += sigma_eff;
-           sigma_eff_vector (cell_number) += yield;
-
-           /*  if (q_point == 0)
-               std::cout<< stress_strain_tensor <<std::endl;*/
-           for (unsigned int i=0; i<dofs_per_cell; ++i)
-             {
-               cell_rhs(i) -= (strain_tensor[q_point] * stress_strain_tensor * //(stress_tensor) *
-                               plast_lin_hard->get_strain(fe_values, i, q_point) *
-                               fe_values.JxW (q_point));
-
-               Tensor<1,dim> rhs_values;
-               rhs_values = 0;
-               cell_rhs(i) += ((fe_values[displacement].value (i, q_point) *
-                                rhs_values) *
-                               fe_values.JxW (q_point));
-             };
-         };
-
-       for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-         {
-           if (cell->face (face)->at_boundary()
-               && cell->face (face)->boundary_indicator () == 9)
-             {
-               fe_values_face.reinit (cell, face);
-
-               right_hand_side.vector_value_list (fe_values_face.get_quadrature_points(),
-                                                  right_hand_side_values_face);
-
-               for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
-                 {
-                   Tensor<1,dim> rhs_values;
-                   rhs_values = 0;
-                   for (unsigned int i=0; i<dofs_per_cell; ++i)
-                     cell_rhs(i) += (fe_values_face[displacement].value (i, q_point) *
-                                     rhs_values *
-                                     fe_values_face.JxW (q_point));
-                 }
-             }
-         }
-
-       cell->get_dof_indices (local_dof_indices);
-       constraints_dirichlet_hanging_nodes.distribute_local_to_global (cell_rhs,
-                                                                       local_dof_indices,
-                                                                       system_rhs_newton);
-
-       sigma_eff_vector(cell_number) /= n_q_points;
-       cell_number += 1;
-      };
-
-  system_rhs_newton.compress ();
-
-  unsigned int sum_elast_points = Utilities::MPI::sum(elast_points, mpi_communicator);
-  unsigned int sum_plast_points = Utilities::MPI::sum(plast_points, mpi_communicator);
-  pcout<< "Elast-Points = " << sum_elast_points <<std::endl;
-  pcout<< "Plast-Points = " << sum_plast_points <<std::endl;
-}
+    mass_matrix.compress ();
+  }
 
-                                 // @sect4{Step4::projection_active_set}
+                                   // @sect4{PlasticityContactProblem::update_solution_and_constraints}
 
-                                // Projection and updating of the active set
-                                 // for the dofs which penetrates the obstacle.
-template <int dim>
-void Step4<dim>::projection_active_set ()
-{
-  clock_t                        start_proj, end_proj;
-  
-  const EquationData::Obstacle<dim>     obstacle;
-  std::vector<bool>                     vertex_touched (dof_handler.n_dofs (), false);
-  
-  typename DoFHandler<dim>::active_cell_iterator
-  cell = dof_handler.begin_active(),
-  endc = dof_handler.end();
-
-  TrilinosWrappers::MPI::Vector         distributed_solution (system_rhs_newton);
-  distributed_solution = solution;
-  TrilinosWrappers::MPI::Vector         lambda (solution);
-  lambda = resid_vector;
-  TrilinosWrappers::MPI::Vector         diag_mass_matrix_vector_relevant (solution);
-  diag_mass_matrix_vector_relevant = diag_mass_matrix_vector;
-    
-  constraints.reinit(locally_relevant_dofs);
-  active_set.clear ();
-  IndexSet     active_set_locally_owned;
-  active_set_locally_owned.set_size (locally_owned_dofs.size ());
-  const double c = 100.0*e_modul;
-
-  for (; cell!=endc; ++cell)
-    if (cell->is_locally_owned())
-      for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-       if (cell->face (face)->at_boundary()
-           && cell->face (face)->boundary_indicator () == 9)
-         for (unsigned int v=0; v<GeometryInfo<dim-1>::vertices_per_cell; ++v)
-           {
-             unsigned int index_z = cell->face (face)->vertex_dof_index (v,2);
-
-             if (vertex_touched[cell->face (face)->vertex_index(v)] == false)
-               vertex_touched[cell->face (face)->vertex_index(v)] = true;
-             else
-               continue;
-
-             // the local row where
-             Point<dim> point (cell->face (face)->vertex (v)[0],/* + solution (index_x),*/
-                               cell->face (face)->vertex (v)[1],
-                               cell->face (face)->vertex (v)[2]);
-
-             double obstacle_value = obstacle.value (point, 2);
-             double solution_index_z = solution (index_z);
-             double gap = obstacle_value - point (2);
-
-             if (lambda (index_z) +
-                 c*diag_mass_matrix_vector_relevant (index_z)*(solution_index_z - gap) > 0)
-               {
-                 constraints.add_line (index_z);
-                 constraints.set_inhomogeneity (index_z, gap);
-
-                 distributed_solution (index_z) = gap;
-
-                 if (locally_relevant_dofs.is_element (index_z))
-                   active_set.add_index (index_z);
-
-                 if (locally_owned_dofs.is_element (index_z))
-                   active_set_locally_owned.add_index (index_z);
-
-                 // std::cout<< index_z << ", "
-                 //       << "Error: " << lambda (index_z) +
-                 //   diag_mass_matrix_vector_relevant (index_z)*c*(solution_index_z - gap)
-                 //       << ", " << lambda (index_z)
-                 //       << ", " << diag_mass_matrix_vector_relevant (index_z)
-                 //       << ", " << obstacle_value
-                 //       << ", " << solution_index_z
-                 //       <<std::endl;
-               }
-           }
-  distributed_solution.compress(Insert);
-
-  unsigned int sum_contact_constraints = Utilities::MPI::sum(active_set_locally_owned.n_elements (),
-                                                            mpi_communicator);
-  pcout << "Number of Contact-Constaints: " << sum_contact_constraints <<std::endl;
-
-  solution = distributed_solution;
-
-  constraints.close ();
-
-  const ConstraintMatrix::MergeConflictBehavior
-    merge_conflict_behavior = ConstraintMatrix::left_object_wins;
-  constraints.merge (constraints_dirichlet_hanging_nodes, merge_conflict_behavior);
-}
+                                   // Projection and updating of the active set
+                                   // for the dofs which penetrates the obstacle.
+  template <int dim>
+  void PlasticityContactProblem<dim>::update_solution_and_constraints ()
+  {
+    clock_t                        start_proj, end_proj;
 
-template <int dim>
-void Step4<dim>::dirichlet_constraints ()
-{
-  /* boundary_indicators:
-            _______
-           /  9    /|
-          /______ / |
-        8|       | 8|
-         |   8   | /
-         |_______|/
-             6
-   */
-
-  constraints_dirichlet_hanging_nodes.reinit (locally_relevant_dofs);
-  constraints_dirichlet_hanging_nodes.merge (constraints_hanging_nodes);
-
-  std::vector<bool> component_mask (dim, true);
-  component_mask[0] = true;
-  component_mask[1] = true;
-  component_mask[2] = true;
-  VectorTools::interpolate_boundary_values (dof_handler,
-                                           6,
-                                           EquationData::BoundaryValues<dim>(),
-                                           constraints_dirichlet_hanging_nodes,
-                                           component_mask);
-
-  component_mask[0] = true;
-  component_mask[1] = true;
-  component_mask[2] = false;
-  VectorTools::interpolate_boundary_values (dof_handler,
-                                           8,
-                                           EquationData::BoundaryValues<dim>(),
-                                           constraints_dirichlet_hanging_nodes,
-                                           component_mask);
-  constraints_dirichlet_hanging_nodes.close ();
-}
+    const EquationData::Obstacle<dim>     obstacle;
+    std::vector<bool>                     vertex_touched (dof_handler.n_dofs (), false);
 
-template <int dim>
-void Step4<dim>::solve ()
-{
-  pcout << "Solving ..." << std::endl;
-  Timer t;
+    typename DoFHandler<dim>::active_cell_iterator
+    cell = dof_handler.begin_active(),
+    endc = dof_handler.end();
 
-  TrilinosWrappers::MPI::Vector    distributed_solution (system_rhs_newton);
-  distributed_solution = solution;
-  
-  constraints_hanging_nodes.set_zero (distributed_solution);
+    TrilinosWrappers::MPI::Vector         distributed_solution (system_rhs_newton);
+    distributed_solution = solution;
+    TrilinosWrappers::MPI::Vector         lambda (solution);
+    lambda = resid_vector;
+    TrilinosWrappers::MPI::Vector         diag_mass_matrix_vector_relevant (solution);
+    diag_mass_matrix_vector_relevant = diag_mass_matrix_vector;
+
+    constraints.reinit(locally_relevant_dofs);
+    active_set.clear ();
+    IndexSet     active_set_locally_owned;
+    active_set_locally_owned.set_size (locally_owned_dofs.size ());
+    const double c = 100.0*e_modul;
+
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+          if (cell->face (face)->at_boundary()
+              && cell->face (face)->boundary_indicator () == 9)
+            for (unsigned int v=0; v<GeometryInfo<dim-1>::vertices_per_cell; ++v)
+              {
+                unsigned int index_z = cell->face (face)->vertex_dof_index (v,2);
+
+                if (vertex_touched[cell->face (face)->vertex_index(v)] == false)
+                  vertex_touched[cell->face (face)->vertex_index(v)] = true;
+                else
+                  continue;
+
+                // the local row where
+                Point<dim> point (cell->face (face)->vertex (v)[0],/* + solution (index_x),*/
+                                  cell->face (face)->vertex (v)[1],
+                                  cell->face (face)->vertex (v)[2]);
+
+                double obstacle_value = obstacle.value (point, 2);
+                double solution_index_z = solution (index_z);
+                double gap = obstacle_value - point (2);
+
+                if (lambda (index_z) +
+                    c *
+                    diag_mass_matrix_vector_relevant (index_z) *
+                    (solution_index_z - gap)
+                    > 0)
+                  {
+                    constraints.add_line (index_z);
+                    constraints.set_inhomogeneity (index_z, gap);
+
+                    distributed_solution (index_z) = gap;
+
+                    if (locally_relevant_dofs.is_element (index_z))
+                      active_set.add_index (index_z);
+
+                    if (locally_owned_dofs.is_element (index_z))
+                      active_set_locally_owned.add_index (index_z);
+
+                    // std::cout<< index_z << ", "
+                    //            << "Error: " << lambda (index_z) +
+                    //   diag_mass_matrix_vector_relevant (index_z)*c*(solution_index_z - gap)
+                    //            << ", " << lambda (index_z)
+                    //            << ", " << diag_mass_matrix_vector_relevant (index_z)
+                    //            << ", " << obstacle_value
+                    //            << ", " << solution_index_z
+                    //            <<std::endl;
+                  }
+              }
+    distributed_solution.compress(Insert);
+
+    unsigned int sum_contact_constraints = Utilities::MPI::sum(active_set_locally_owned.n_elements (),
+                                                               mpi_communicator);
+    pcout << "Number of Contact-Constaints: " << sum_contact_constraints <<std::endl;
+
+    solution = distributed_solution;
+
+    constraints.close ();
+
+    const ConstraintMatrix::MergeConflictBehavior
+      merge_conflict_behavior = ConstraintMatrix::left_object_wins;
+    constraints.merge (constraints_dirichlet_hanging_nodes, merge_conflict_behavior);
+  }
+
+  template <int dim>
+  void PlasticityContactProblem<dim>::dirichlet_constraints ()
+  {
+    /* boundary_indicators:
+              _______
+             /  9    /|
+            /______ / |
+          8|       | 8|
+           |   8   | /
+           |_______|/
+               6
+     */
+
+    constraints_dirichlet_hanging_nodes.reinit (locally_relevant_dofs);
+    constraints_dirichlet_hanging_nodes.merge (constraints_hanging_nodes);
+
+    std::vector<bool> component_mask (dim, true);
+    component_mask[0] = true;
+    component_mask[1] = true;
+    component_mask[2] = true;
+    VectorTools::interpolate_boundary_values (dof_handler,
+                                              6,
+                                              EquationData::BoundaryValues<dim>(),
+                                              constraints_dirichlet_hanging_nodes,
+                                              component_mask);
+
+    component_mask[0] = true;
+    component_mask[1] = true;
+    component_mask[2] = false;
+    VectorTools::interpolate_boundary_values (dof_handler,
+                                              8,
+                                              EquationData::BoundaryValues<dim>(),
+                                              constraints_dirichlet_hanging_nodes,
+                                              component_mask);
+    constraints_dirichlet_hanging_nodes.close ();
+  }
+
+  template <int dim>
+  void PlasticityContactProblem<dim>::solve ()
+  {
+    pcout << "Solving ..." << std::endl;
+    Timer t;
 
-  // Solving iterative
+    TrilinosWrappers::MPI::Vector    distributed_solution (system_rhs_newton);
+    distributed_solution = solution;
 
-  MPI_Barrier (mpi_communicator);
-  t.restart();
+    constraints_hanging_nodes.set_zero (distributed_solution);
 
-  preconditioner_u.initialize (system_matrix_newton, additional_data);
-  
-  MPI_Barrier (mpi_communicator);
-  t.stop();
-  if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-  run_time[6] += t.wall_time();
-  
-  MPI_Barrier (mpi_communicator);
-  t.restart();
-
-//   ReductionControl                 reduction_control (10000, 1e-15, 1e-4);
-//   SolverCG<TrilinosWrappers::MPI::Vector>
-//     solver (reduction_control, mpi_communicator);
-//   solver.solve (system_matrix_newton, distributed_solution, system_rhs_newton, preconditioner_u);
-
-  PrimitiveVectorMemory<TrilinosWrappers::MPI::Vector> mem;
-  TrilinosWrappers::MPI::Vector    tmp (system_rhs_newton);
-  const double solver_tolerance = 1e-4 *
-       system_matrix_newton.residual (tmp, distributed_solution, system_rhs_newton);
-  SolverControl solver_control (system_matrix_newton.m(), solver_tolerance);
-  SolverFGMRES<TrilinosWrappers::MPI::Vector>
-     solver(solver_control, mem,
-     SolverFGMRES<TrilinosWrappers::MPI::Vector>::
-     AdditionalData(30, true));
-  solver.solve(system_matrix_newton, distributed_solution, system_rhs_newton, preconditioner_u);           
-
-  pcout << "Initial error: " << solver_control.initial_value() <<std::endl;
-  pcout << "   " << solver_control.last_step()
-           << " CG iterations needed to obtain convergence with an error: "
-           <<  solver_control.last_value()
-           << std::endl;
-
-  MPI_Barrier (mpi_communicator);
-  t.stop();
-  if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-  run_time[7] += t.wall_time();
-
-  number_iterations += solver_control.last_step();
-
-  constraints.distribute (distributed_solution);
-
-  solution = distributed_solution;
-}
+    // Solving iterative
 
-template <int dim>
-void Step4<dim>::solve_newton ()
-{
-  double                         resid=0;
-  double                         resid_old=100000;
-  TrilinosWrappers::MPI::Vector  res (system_rhs_newton);
-  TrilinosWrappers::MPI::Vector  tmp_vector (system_rhs_newton);
-  Timer                          t;
-
-  std::vector<std::vector<bool> > constant_modes;
-  std::vector<bool>  components (dim,true);
-  components[dim] = false;
-  DoFTools::extract_constant_modes (dof_handler, components,
-                                   constant_modes);
-
-  additional_data.elliptic = true;
-  additional_data.n_cycles = 1;
-  additional_data.w_cycle = false;
-  additional_data.output_details = false;
-  additional_data.smoother_sweeps = 2;
-  additional_data.aggregation_threshold = 1e-2;
-
-  IndexSet                            active_set_old (active_set);
-  Vector<double>                      sigma_eff_vector;
-  sigma_eff_vector.reinit (triangulation.n_active_cells());  
-  unsigned int j = 0;
-  unsigned int number_assemble_system = 0;
-  for (; j<=100;j++)
-    {
-      pcout<< " " <<std::endl;
-      pcout<< j << ". Iteration of the inexact Newton-method." <<std::endl;
-      pcout<< "Update of active set" <<std::endl;
-      
-      MPI_Barrier (mpi_communicator);
-      t.restart(); 
-      
-      projection_active_set ();
-      
-      MPI_Barrier (mpi_communicator);
-      t.stop();
-      if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-        run_time[5] += t.wall_time();
-      
-      pcout<< "Assembling ... " <<std::endl;
-      MPI_Barrier (mpi_communicator);
-      t.restart(); 
-      system_matrix_newton = 0;
-      system_rhs_newton = 0;
-      assemble_nl_system (solution);  //compute Newton-Matrix
-      MPI_Barrier (mpi_communicator);
-      t.stop();
-      if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-        run_time[1] += t.wall_time();
-
-      number_assemble_system += 1;
-
-      MPI_Barrier (mpi_communicator);
-      t.restart();
-      solve ();
-      MPI_Barrier (mpi_communicator);
-      t.stop();
-      if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-        run_time[2] += t.wall_time();
-       
-      TrilinosWrappers::MPI::Vector    distributed_solution (system_rhs_newton);
-      distributed_solution = solution;
-
-      int damped = 0;
-      tmp_vector = old_solution;
-      double a = 0;
-      for (unsigned int i=0; (i<10)&&(!damped); i++)
-       {
-         a=pow(0.5, static_cast<double>(i));
-         old_solution = tmp_vector;
-         old_solution.sadd(1-a,a, distributed_solution);
-
-         MPI_Barrier (mpi_communicator);
-          t.restart();
-         system_rhs_newton = 0;
-         sigma_eff_vector = 0;
-         solution = old_solution;
-         residual_nl_system (solution, sigma_eff_vector);
-         res = system_rhs_newton;
-
-         const unsigned int
-           start_res     = (res.local_range().first),
-           end_res       = (res.local_range().second);
-         for (unsigned int n=start_res; n<end_res; ++n)
-           if (constraints.is_inhomogeneously_constrained (n))
-             {
-               // pcout<< i << ". " << constraints.get_inhomogeneity (n)
-               //       << ". " << res (n)
-               //       << ", start = " << start_res
-               //       << ", end = " << end_res
-               //       <<std::endl;
-               res(n) = 0;
-             }
-
-         resid = res.l2_norm ();
-         pcout<< "Residual: " << resid <<std::endl;
-
-         if (resid<resid_old)
-           {
-             pcout<< "Newton-damping parameter alpha = " << a <<std::endl;
-             damped=1;
-           }
-         MPI_Barrier (mpi_communicator);
-          t.stop();
-          if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-            run_time[3] += t.wall_time();
-       }
-
-      if (resid<1e-8)
-       {
-         pcout<< "Inexact Newton-method stopped with residual = " << resid <<std::endl;
-         pcout<< "Number of Assembling systems = " << number_assemble_system <<std::endl;
-         break;
-       }
-      resid_old=resid;
-
-      resid_vector = system_rhs_newton;
-
-      if (active_set == active_set_old && resid < 1e-10)
-       break;
-      active_set_old = active_set;
-    } // End of active-set-loop
+    MPI_Barrier (mpi_communicator);
+    t.restart();
 
-  
-  pcout<< "Creating output." <<std::endl;
-  MPI_Barrier (mpi_communicator);
-  t.restart();
-  std::ostringstream filename_solution;
-  filename_solution << "solution";
-  // filename_solution << "solution_";
-  // filename_solution << k;
-  output_results (filename_solution.str ());
-  // output_results (sigma_eff_vector, "sigma_eff");
-  MPI_Barrier (mpi_communicator);
-  t.stop();
-  if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-    run_time[4] += t.wall_time();
-
-  pcout<< "Number of Solver-Iterations = " << number_iterations <<std::endl;
-
-  pcout<< "%%%%%% Rechenzeit make grid and setup = " << run_time[0] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit projection active set = " << run_time[5] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit assemble system = " << run_time[1] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit solve system = " << run_time[2] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit preconditioner = " << run_time[6] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit solve with CG = " << run_time[7] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit error and lambda = " << run_time[3] <<std::endl;
-  pcout<< "%%%%%% Rechenzeit output = " << run_time[4] <<std::endl;
-}
+    preconditioner_u.initialize (system_matrix_newton, additional_data);
 
-template <int dim>
-void Step4<dim>::output_results (const std::string& title) const
-{
-  move_mesh (solution);
+    MPI_Barrier (mpi_communicator);
+    t.stop();
+    if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+    run_time[6] += t.wall_time();
 
-  TrilinosWrappers::MPI::Vector         lambda (solution);
-  lambda = resid_vector;
+    MPI_Barrier (mpi_communicator);
+    t.restart();
 
-  DataOut<dim> data_out;
+  //   ReductionControl                 reduction_control (10000, 1e-15, 1e-4);
+  //   SolverCG<TrilinosWrappers::MPI::Vector>
+  //     solver (reduction_control, mpi_communicator);
+  //   solver.solve (system_matrix_newton, distributed_solution, system_rhs_newton, preconditioner_u);
 
-  data_out.attach_dof_handler (dof_handler);
+    PrimitiveVectorMemory<TrilinosWrappers::MPI::Vector> mem;
+    TrilinosWrappers::MPI::Vector    tmp (system_rhs_newton);
+    const double solver_tolerance = 1e-4 *
+          system_matrix_newton.residual (tmp, distributed_solution, system_rhs_newton);
+    SolverControl solver_control (system_matrix_newton.m(), solver_tolerance);
+    SolverFGMRES<TrilinosWrappers::MPI::Vector>
+       solver(solver_control, mem,
+       SolverFGMRES<TrilinosWrappers::MPI::Vector>::
+       AdditionalData(30, true));
+    solver.solve(system_matrix_newton, distributed_solution, system_rhs_newton, preconditioner_u);
 
-  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
-    data_component_interpretation
-    (dim, DataComponentInterpretation::component_is_part_of_vector);
-  data_out.add_data_vector (solution, std::vector<std::string>(dim, "Displacement"),
-                           DataOut<dim>::type_dof_data,
-                           data_component_interpretation);
-  data_out.add_data_vector (lambda, std::vector<std::string>(dim, "Residual"),
-                           DataOut<dim>::type_dof_data,
-                           data_component_interpretation);
-  data_out.add_data_vector (active_set, std::vector<std::string>(dim, "ActiveSet"),
-                           DataOut<dim>::type_dof_data,
-                           data_component_interpretation);
+    pcout << "Initial error: " << solver_control.initial_value() <<std::endl;
+    pcout << "   " << solver_control.last_step()
+              << " CG iterations needed to obtain convergence with an error: "
+              <<  solver_control.last_value()
+              << std::endl;
 
-  Vector<float> subdomain (triangulation.n_active_cells());
-  for (unsigned int i=0; i<subdomain.size(); ++i)
-    subdomain(i) = triangulation.locally_owned_subdomain();
-  data_out.add_data_vector (subdomain, "subdomain");
+    MPI_Barrier (mpi_communicator);
+    t.stop();
+    if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+    run_time[7] += t.wall_time();
 
-  data_out.build_patches ();
+    number_iterations += solver_control.last_step();
 
-  const std::string filename = (title + "-" +
-                               Utilities::int_to_string
-                               (triangulation.locally_owned_subdomain(), 4));
+    constraints.distribute (distributed_solution);
 
-  std::ofstream output_vtu ((filename + ".vtu").c_str ());
-  data_out.write_vtu (output_vtu);
+    solution = distributed_solution;
+  }
 
-  if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
-    {
-      std::vector<std::string> filenames;
-      for (unsigned int i=0;
-          i<Utilities::MPI::n_mpi_processes(mpi_communicator);
-          ++i)
-       filenames.push_back ("solution-" +
-                            Utilities::int_to_string (i, 4) +
-                            ".vtu");
-
-      std::ofstream master_output ((filename + ".pvtu").c_str());
-      data_out.write_pvtu_record (master_output, filenames);
-    }
+  template <int dim>
+  void PlasticityContactProblem<dim>::solve_newton ()
+  {
+    double                         resid=0;
+    double                         resid_old=100000;
+    TrilinosWrappers::MPI::Vector  res (system_rhs_newton);
+    TrilinosWrappers::MPI::Vector  tmp_vector (system_rhs_newton);
+    Timer                          t;
+
+    std::vector<std::vector<bool> > constant_modes;
+    std::vector<bool>  components (dim,true);
+    components[dim] = false;
+    DoFTools::extract_constant_modes (dof_handler, components,
+                                      constant_modes);
+
+    additional_data.elliptic = true;
+    additional_data.n_cycles = 1;
+    additional_data.w_cycle = false;
+    additional_data.output_details = false;
+    additional_data.smoother_sweeps = 2;
+    additional_data.aggregation_threshold = 1e-2;
+
+    IndexSet                            active_set_old (active_set);
+    unsigned int j = 0;
+    unsigned int number_assemble_system = 0;
+    for (; j<=100;j++)
+      {
+        pcout<< " " <<std::endl;
+        pcout<< j << ". Iteration of the inexact Newton-method." <<std::endl;
+        pcout<< "Update of active set" <<std::endl;
+
+        MPI_Barrier (mpi_communicator);
+        t.restart();
+
+        update_solution_and_constraints ();
+
+        MPI_Barrier (mpi_communicator);
+        t.stop();
+        if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+          run_time[5] += t.wall_time();
+
+        pcout<< "Assembling ... " <<std::endl;
+        MPI_Barrier (mpi_communicator);
+        t.restart();
+        system_matrix_newton = 0;
+        system_rhs_newton = 0;
+        assemble_nl_system (solution);  //compute Newton-Matrix
+        MPI_Barrier (mpi_communicator);
+        t.stop();
+        if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+          run_time[1] += t.wall_time();
+
+        number_assemble_system += 1;
+
+        MPI_Barrier (mpi_communicator);
+        t.restart();
+        solve ();
+        MPI_Barrier (mpi_communicator);
+        t.stop();
+        if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+          run_time[2] += t.wall_time();
+
+        TrilinosWrappers::MPI::Vector    distributed_solution (system_rhs_newton);
+        distributed_solution = solution;
+
+        int damped = 0;
+        tmp_vector = old_solution;
+        double a = 0;
+        for (unsigned int i=0; (i<10)&&(!damped); i++)
+          {
+            a=pow(0.5, static_cast<double>(i));
+            old_solution = tmp_vector;
+            old_solution.sadd(1-a,a, distributed_solution);
+
+            MPI_Barrier (mpi_communicator);
+            t.restart();
+            system_rhs_newton = 0;
+            solution = old_solution;
+            residual_nl_system (solution);
+            res = system_rhs_newton;
+
+            const unsigned int
+              start_res     = (res.local_range().first),
+              end_res       = (res.local_range().second);
+            for (unsigned int n=start_res; n<end_res; ++n)
+              if (constraints.is_inhomogeneously_constrained (n))
+                {
+                  // pcout<< i << ". " << constraints.get_inhomogeneity (n)
+                  //    << ". " << res (n)
+                  //    << ", start = " << start_res
+                  //    << ", end = " << end_res
+                  //    <<std::endl;
+                  res(n) = 0;
+                }
+
+            resid = res.l2_norm ();
+            pcout<< "Residual: " << resid <<std::endl;
+
+            if (resid<resid_old)
+              {
+                pcout<< "Newton-damping parameter alpha = " << a <<std::endl;
+                damped=1;
+              }
+            MPI_Barrier (mpi_communicator);
+            t.stop();
+            if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+              run_time[3] += t.wall_time();
+          }
+
+        if (resid<1e-8)
+          {
+            pcout<< "Inexact Newton-method stopped with residual = " << resid <<std::endl;
+            pcout<< "Number of Assembling systems = " << number_assemble_system <<std::endl;
+            break;
+          }
+        resid_old=resid;
+
+        resid_vector = system_rhs_newton;
+
+        if (active_set == active_set_old && resid < 1e-10)
+          break;
+        active_set_old = active_set;
+      } // End of active-set-loop
+
+    pcout<< "Number of Solver-Iterations = " << number_iterations <<std::endl;
+
+    pcout<< "%%%%%% Rechenzeit make grid and setup = " << run_time[0] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit projection active set = " << run_time[5] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit assemble system = " << run_time[1] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit solve system = " << run_time[2] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit preconditioner = " << run_time[6] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit solve with CG = " << run_time[7] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit error and lambda = " << run_time[3] <<std::endl;
+    pcout<< "%%%%%% Rechenzeit output = " << run_time[4] <<std::endl;
+  }
 
-  TrilinosWrappers::MPI::Vector  tmp (solution);
-  tmp *= -1;
-  move_mesh (tmp);
-}
+  template <int dim>
+  void PlasticityContactProblem<dim>::refine_grid ()
+  {
+    Vector<float> estimated_error_per_cell (triangulation.n_active_cells());
+    KellyErrorEstimator<dim>::estimate (dof_handler,
+                                             QGauss<dim-1>(3),
+                                             typename FunctionMap<dim>::type(),
+                                             solution,
+                                             estimated_error_per_cell);
+    parallel::distributed::GridRefinement::
+      refine_and_coarsen_fixed_number (triangulation,
+                                       estimated_error_per_cell,
+                                       0.3, 0.03);
+    triangulation.execute_coarsening_and_refinement ();
 
-template <int dim>
-void Step4<dim>::move_mesh (const TrilinosWrappers::MPI::Vector &_complete_displacement) const
-{
-  pcout<< "Moving mesh." <<std::endl;
-
-  std::vector<bool> vertex_touched (triangulation.n_vertices(),
-                                   false);
-
-  for (typename DoFHandler<dim>::active_cell_iterator
-        cell = dof_handler.begin_active ();
-       cell != dof_handler.end(); ++cell)
-    if (cell->is_locally_owned())
-      for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
-       {
-         if (vertex_touched[cell->vertex_index(v)] == false)
-           {
-             vertex_touched[cell->vertex_index(v)] = true;
-
-             Point<dim> vertex_displacement;
-             for (unsigned int d=0; d<dim; ++d)
-               {
-                 if (_complete_displacement(cell->vertex_dof_index(v,d)) != 0)
-                   vertex_displacement[d]
-                     = _complete_displacement(cell->vertex_dof_index(v,d));
-               }
-
-             cell->vertex(v) += vertex_displacement;
-           }
-       }
-}
+  }
 
-template <int dim>
-void Step4<dim>::output_results (TrilinosWrappers::MPI::Vector vector,
-                                const std::string& title) const
-{
-  DataOut<dim> data_out;
+  template <int dim>
+  void PlasticityContactProblem<dim>::move_mesh (const TrilinosWrappers::MPI::Vector &_complete_displacement) const
+  {
+    pcout<< "Moving mesh." <<std::endl;
+
+    std::vector<bool> vertex_touched (triangulation.n_vertices(),
+                                      false);
+
+    for (typename DoFHandler<dim>::active_cell_iterator
+           cell = dof_handler.begin_active ();
+         cell != dof_handler.end(); ++cell)
+      if (cell->is_locally_owned())
+        for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+          {
+            if (vertex_touched[cell->vertex_index(v)] == false)
+              {
+                vertex_touched[cell->vertex_index(v)] = true;
+
+                Point<dim> vertex_displacement;
+                for (unsigned int d=0; d<dim; ++d)
+                  {
+                    if (_complete_displacement(cell->vertex_dof_index(v,d)) != 0)
+                      vertex_displacement[d]
+                        = _complete_displacement(cell->vertex_dof_index(v,d));
+                  }
+
+                cell->vertex(v) += vertex_displacement;
+              }
+          }
+  }
 
-  data_out.attach_dof_handler (dof_handler);
-  data_out.add_data_vector (vector, "vector_to_plot");
+  template <int dim>
+  void PlasticityContactProblem<dim>::output_results (const std::string& title) const
+  {
+    move_mesh (solution);
 
-  data_out.build_patches ();
+    TrilinosWrappers::MPI::Vector         lambda (solution);
+    lambda = resid_vector;
 
-  std::ofstream output_vtk (dim == 2 ?
-                           (title + ".vtk").c_str () :
-                           (title + ".vtk").c_str ());
-  data_out.write_vtk (output_vtk);
-}
+    DataOut<dim> data_out;
 
-template <int dim>
-void Step4<dim>::output_results (Vector<double> vector, const std::string& title) const
-{
-  DataOut<dim> data_out;
+    data_out.attach_dof_handler (dof_handler);
 
-  data_out.attach_dof_handler (dof_handler);
-  data_out.add_data_vector (vector, "vector_to_plot");
+    const std::vector<DataComponentInterpretation::DataComponentInterpretation>
+      data_component_interpretation
+      (dim, DataComponentInterpretation::component_is_part_of_vector);
+    data_out.add_data_vector (solution, std::vector<std::string>(dim, "Displacement"),
+                              DataOut<dim>::type_dof_data,
+                              data_component_interpretation);
+    data_out.add_data_vector (lambda, std::vector<std::string>(dim, "Residual"),
+                              DataOut<dim>::type_dof_data,
+                              data_component_interpretation);
+    data_out.add_data_vector (active_set, std::vector<std::string>(dim, "ActiveSet"),
+                              DataOut<dim>::type_dof_data,
+                              data_component_interpretation);
 
-  data_out.build_patches ();
+    Vector<float> subdomain (triangulation.n_active_cells());
+    for (unsigned int i=0; i<subdomain.size(); ++i)
+      subdomain(i) = triangulation.locally_owned_subdomain();
+    data_out.add_data_vector (subdomain, "subdomain");
 
-  std::ofstream output_vtk (dim == 2 ?
-                           (title + ".vtk").c_str () :
-                           (title + ".vtk").c_str ());
-  data_out.write_vtk (output_vtk);
-}
+    data_out.build_patches ();
 
-template <int dim>
-void Step4<dim>::run ()
-{
-  pcout << "Solving problem in " << dim << " space dimensions." << std::endl;
+    const std::string filename = (title + "-" +
+                                  Utilities::int_to_string
+                                  (triangulation.locally_owned_subdomain(), 4));
 
-  run_time.resize (8);
+    std::ofstream output_vtu ((filename + ".vtu").c_str ());
+    data_out.write_vtu (output_vtu);
 
-  clock_t     start, end;
+    if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+      {
+        std::vector<std::string> filenames;
+        for (unsigned int i=0;
+             i<Utilities::MPI::n_mpi_processes(mpi_communicator);
+             ++i)
+          filenames.push_back ("solution-" +
+                               Utilities::int_to_string (i, 4) +
+                               ".vtu");
+
+        std::ofstream master_output ((filename + ".pvtu").c_str());
+        data_out.write_pvtu_record (master_output, filenames);
+      }
 
-  start = clock();
-  make_grid();
-  //  mesh_surface ();
-  
-  setup_system (); 
+    TrilinosWrappers::MPI::Vector  tmp (solution);
+    tmp *= -1;
+    move_mesh (tmp);
+  }
+
+  template <int dim>
+  void PlasticityContactProblem<dim>::run ()
+  {
+    pcout << "Solving problem in " << dim << " space dimensions." << std::endl;
   
-  end = clock();
-  run_time[0] = (double)(end-start)/CLOCKS_PER_SEC;
+    Timer                          t;
+    run_time.resize (8);
 
-  solve_newton ();
+    const unsigned int n_cycles = 5;
+    for (unsigned int cycle=0; cycle<n_cycles; ++cycle)
+      {
+        pcout << "Cycle " << cycle << ':' << std::endl;
+
+        MPI_Barrier (mpi_communicator);
+        t.restart();
+
+        if (cycle == 0)
+          {
+            make_grid();
+          }
+        else
+          refine_grid ();
+
+        setup_system ();
+
+        MPI_Barrier (mpi_communicator);
+        t.stop();
+        run_time[0] += t.wall_time();;
+
+        solve_newton ();
+
+        pcout<< "Creating output." <<std::endl;
+        MPI_Barrier (mpi_communicator);
+        t.restart();
+        std::ostringstream filename_solution;
+        filename_solution << "solution_";
+        filename_solution << cycle;
+        output_results (filename_solution.str ());
+        MPI_Barrier (mpi_communicator);
+        t.stop();
+        if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
+          run_time[4] += t.wall_time();
+      }
+  }
 }
 
-
                                  // @sect3{The <code>main</code> function}
 
-                                // And this is the main function. It also
-                                // looks mostly like in step-3, but if you
-                                // look at the code below, note how we first
-                                // create a variable of type
-                                // <code>Step4@<2@></code> (forcing
-                                // the compiler to compile the class template
-                                // with <code>dim</code> replaced by
-                                // <code>2</code>) and run a 2d simulation,
-                                // and then we do the whole thing over in 3d.
-                                //
-                                // In practice, this is probably not what you
-                                // would do very frequently (you probably
-                                // either want to solve a 2d problem, or one
-                                // in 3d, but not both at the same
-                                // time). However, it demonstrates the
-                                // mechanism by which we can simply change
-                                // which dimension we want in a single place,
-                                // and thereby force the compiler to
-                                // recompile the dimension independent class
-                                // templates for the dimension we
-                                // request. The emphasis here lies on the
-                                // fact that we only need to change a single
-                                // place. This makes it rather trivial to
-                                // debug the program in 2d where computations
-                                // are fast, and then switch a single place
-                                // to a 3 to run the much more computing
-                                // intensive program in 3d for `real'
-                                // computations.
-                                //
-                                // Each of the two blocks is enclosed in
-                                // braces to make sure that the
-                                // <code>laplace_problem_2d</code> variable
-                                // goes out of scope (and releases the memory
-                                // it holds) before we move on to allocate
-                                // memory for the 3d case. Without the
-                                // additional braces, the
-                                // <code>laplace_problem_2d</code> variable
-                                // would only be destroyed at the end of the
-                                // function, i.e. after running the 3d
-                                // problem, and would needlessly hog memory
-                                // while the 3d run could actually use it.
-                                 //
-                                 // Finally, the first line of the function is
-                                 // used to suppress some output.  Remember
-                                 // that in the previous example, we had the
-                                 // output from the linear solvers about the
-                                 // starting residual and the number of the
-                                 // iteration where convergence was
-                                 // detected. This can be suppressed through
-                                 // the <code>deallog.depth_console(0)</code>
-                                 // call.
-                                 //
-                                 // The rationale here is the following: the
-                                 // deallog (i.e. deal-log, not de-allog)
-                                 // variable represents a stream to which some
-                                 // parts of the library write output. It
-                                 // redirects this output to the console and
-                                 // if required to a file. The output is
-                                 // nested in a way so that each function can
-                                 // use a prefix string (separated by colons)
-                                 // for each line of output; if it calls
-                                 // another function, that may also use its
-                                 // prefix which is then printed after the one
-                                 // of the calling function. Since output from
-                                 // functions which are nested deep below is
-                                 // usually not as important as top-level
-                                 // output, you can give the deallog variable
-                                 // a maximal depth of nested output for
-                                 // output to console and file. The depth zero
-                                 // which we gave here means that no output is
-                                 // written. By changing it you can get more
-                                 // information about the innards of the
-                                 // library.
 int main (int argc, char *argv[])
 {
+  using namespace dealii;
+  using namespace Step42;
+
   deallog.depth_console (0);
 
   clock_t     start, end;
@@ -1488,16 +1412,16 @@ int main (int argc, char *argv[])
 
   Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
   {
-    int _n_refinements_global = 1;
+    int _n_refinements_global = 2;
     int _n_refinements_local = 1;
-    
+
     if (argc == 3)
     {
       _n_refinements_global = atoi(argv[1]);
       _n_refinements_local = atoi(argv[2]);
     }
-    
-    Step4<3> laplace_problem_3d (_n_refinements_global, _n_refinements_local);
+
+    PlasticityContactProblem<3> laplace_problem_3d (_n_refinements_global, _n_refinements_local);
     laplace_problem_3d.run ();
   }
 
index 0410e92663fecb8ad330342b261b30a3cddb78c7..551453329df16cada7be95611f5d38f36cd42773 100644 (file)
@@ -53,7 +53,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/solution_transfer.h>
 
index ee3bfd05e4f48f4b7cafa4cea753bce5acb1bca4..a60ee65ff43afbe494385c0706e492587fff6a5c 100644 (file)
@@ -49,7 +49,7 @@
 #include <deal.II/lac/sparse_direct.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 #include <fstream>
index 9a01ff0c5b3b4e7982d8d0eb1ca914fc260de66d..1374b9708ab3011faaee8aca8c9bc9cf62eb972f 100644 (file)
@@ -38,7 +38,7 @@
 #include <deal.II/fe/fe_values.h>
 
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index dbef54992bc78b762e1216c1ee5b23606fccbad6..54a73832795d42707f0f6166de3808cbfd14603a 100644 (file)
@@ -48,7 +48,7 @@
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index cb905c9c48b7583511753a191a76b7142d4d676e..4bcd524b5fc45bb21596be4ab11ebdba12e7fcb2 100644 (file)
@@ -31,8 +31,8 @@
 #include <deal.II/fe/fe_nothing.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 451281dc28532359610579b6c8d56af061d098e6..7a4259e428020b7189b9857ca25afc9d455674af 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/trilinos_vector.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/distributed/tria.h>
 
index c5bd15aedf7dd64ebd253a990d721194bb727507..9231a64bf44d147dd0bc153f46183020d5732cd6 100644 (file)
@@ -31,8 +31,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
                                  // This one is new. We want to read a
index fca0d404aa1c6ddb68117fd0d30bcc8a1f1a59dc..caf09197cd07c12e7a57e54d4b2af369b018fc54 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index c6e3cce6cec8fd64a776cf4d23c202c43117970a..6b2e40229e2305deb825a7837a0add0ecabe22c0 100644 (file)
@@ -34,7 +34,7 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/data_out.h>
 
@@ -61,7 +61,7 @@
                                  // collects all important data during a run
                                  // and prints it at the end as a table. These
                                  // comes from the following two files:
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/convergence_table.h>
                                  // And finally, we need to use the
                                  // FEFaceValues class, which is
index 37c3d8bdf7d0d77e69490e44355c57ff24564a69..34beba20e0e7e93738821832cca62620fe2e9e25 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 53374f6cb788b4b8309669b9037ec83f2b97087d..40d12c9b88839548012e0c050f77cf06f1e3385b 100644 (file)
@@ -32,8 +32,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/grid/grid_out.h>
index d126f615aa70fb2e020193f1dbd58b925f851b6f..7a0523028a6c441c742ec24dc2984a3e94d622dd 100644 (file)
@@ -43,7 +43,7 @@ DEAL_II_NAMESPACE_OPEN
 
 
 class ParameterHandler;
-
+class XDMFEntry;
 
 /**
  * This is a base class for output of data on meshes of very general
@@ -1407,7 +1407,13 @@ class DataOutBase
                                             * Output in deal.II
                                             * intermediate format.
                                             */
-          deal_II_intermediate
+          deal_II_intermediate,
+        
+                                           /**
+                                            * Output in
+                                            * HDF5 format.
+                                            */
+          hdf5
     };
 
 
@@ -1808,7 +1814,29 @@ class DataOutBase
       const Deal_II_IntermediateFlags         &flags,
       std::ostream                            &out);
 
+    template <int dim, int spacedim>
+    static void write_hdf5_parallel (
+     const std::vector<Patch<dim,spacedim> > &patches,
+     const std::vector<std::string>          &data_names,
+     const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
+     const char* filename,
+     MPI_Comm comm);
+    
+    template <int dim, int spacedim>
+    static XDMFEntry create_xdmf_entry (const std::vector<Patch<dim,spacedim> > &patches,
+     const std::vector<std::string>          &data_names,
+     const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
+     const char* h5_filename,
+     const double cur_time,
+     MPI_Comm comm);
 
+    template <int dim, int spacedim>
+    static void write_xdmf_file (
+     const std::vector<Patch<dim,spacedim> > &patches,
+     const std::vector<XDMFEntry> &entries,
+     const char *filename,
+     MPI_Comm comm);
+    
                                      /**
                                       * Given an input stream that contains
                                       * data written by
@@ -2462,6 +2490,15 @@ class DataOutInterface : private DataOutBase
                                       */
     void write_deal_II_intermediate (std::ostream &out) const;
 
+    XDMFEntry create_xdmf_entry (const char *h5_filename,
+                                 const double cur_time,
+                                 MPI_Comm comm) const;
+
+    void write_xdmf_file (const std::vector<XDMFEntry> &entries,
+                          const char *filename,
+                          MPI_Comm comm) const;
+    
+    void write_hdf5_parallel (const char* filename, MPI_Comm comm) const;
                                      /**
                                       * Write data and grid to <tt>out</tt>
                                       * according to the given data
@@ -3012,6 +3049,45 @@ class DataOutReader : public DataOutInterface<dim,spacedim>
 
 
 
+// A class to store relevant data to use when writing the light data XDMF file
+// This should only contain valid data on the root node which writes the files,
+// the rest of the nodes will have valid set to false
+class XDMFEntry {
+private:
+    // Whether this entry is valid and contains data to be written
+    bool                                valid;
+    // The name of the HDF5 heavy data file this entry references
+    std::string                         h5_filename;
+    // The simulation time associated with this entry
+    double                              entry_time;
+    // The number of nodes, cells and dimensionality associated with the data
+    unsigned int                        num_nodes, num_cells, dimension;
+    // The attributes associated with this entry and their dimension
+    std::map<std::string, unsigned int> attribute_dims;
+    
+    // Small function to create indentation for XML file
+    std::string indent(const unsigned int indent_level) const {
+        std::string res = "";
+        for (unsigned int i=0;i<indent_level;++i) res += "  ";
+        return res;
+    }
+    
+public:
+    XDMFEntry(void) : valid(false) {};
+    XDMFEntry(const std::string filename, const double time, const unsigned int nodes, const unsigned int cells, const unsigned int dim) : valid(true), h5_filename(filename), entry_time(time), num_nodes(nodes), num_cells(cells), dimension(dim) {};
+    
+    // Record an attribute and associated dimensionality
+    void add_attribute(const std::string &attr_name, const unsigned int dimension) {
+        attribute_dims[attr_name] = dimension;
+    }
+    
+    // Get the XDMF content associated with this entry
+    // If the entry is not valid, this returns false
+    std::string get_xdmf_content(const unsigned int indent_level) const;
+};
+
+
+
 /* -------------------- inline functions ------------------- */
 
 inline
index f33bac3968019b753a32f723391bd8b8a2014675..cd6485273dac9ed618ded6cc0b04ed99335da57b 100644 (file)
@@ -715,7 +715,7 @@ namespace internal
                                         * would like to have code like
                                         * <code>switch
                                         * (subface_case)... case
-                                        * SubfaceCase@<dim@>::case_x:
+                                        * SubfaceCase::case_x:
                                         * ... </code>, which can be
                                         * written as <code>switch
                                         * (static_cast@<unsigned
@@ -1564,7 +1564,14 @@ struct GeometryInfo
                                       * The first index in this 2D-array
                                       * runs over all vertices, the second
                                       * index over @p dim faces to which
-                                      * the vertex belongs
+                                      * the vertex belongs.
+                                     *
+                                     * The order of the faces for
+                                     * each vertex is such that the
+                                     * first listed face bounds the
+                                     * reference cell in <i>x</i>
+                                     * direction, the second in
+                                     * <i>y</i> direction, and so on.
                                       */
     static const unsigned int vertex_to_face[vertices_per_cell][dim];
 
@@ -1598,7 +1605,7 @@ struct GeometryInfo
                                       * area(=1) of the face.
                                       *
                                       * E.g. for
-                                      * <code>internal::SubfaceCase@<3@>::cut_xy</code>
+                                      * internal::SubfaceCase::cut_xy
                                       * the ratio is 1/4 for each of
                                       * the subfaces.
                                       */
index 0a51cea75f5b5bba3ac594813803d28fa8a8644e..05cdce2e968871f3efa90f473aec1b8f65085d7c 100644 (file)
@@ -14,6 +14,7 @@
 
 
 #include <deal.II/base/config.h>
+#include <deal.II/base/types.h>
 #include <complex>
 
 DEAL_II_NAMESPACE_OPEN
@@ -35,24 +36,6 @@ DEAL_II_NAMESPACE_OPEN
  */
 namespace numbers
 {
-                                   /**
-                                    * Representation of the
-                                    * largest number that
-                                    * can be put into an
-                                    * unsigned integer. This
-                                    * value is widely used
-                                    * throughout the library
-                                    * as a marker for an
-                                    * invalid unsigned
-                                    * integer value, such as
-                                    * an invalid array
-                                    * index, an invalid
-                                    * array size, and the
-                                    * like.
-                                    */
-  static const unsigned int
-  invalid_unsigned_int = static_cast<unsigned int> (-1);
-
                                    /**
                                     * e
                                     */
index e7643d852da77d55e5249467e5af13e1782e0277..9a81d2a33a0ef859eb6c24ca7b7b6cc963c61365 100644 (file)
@@ -2866,7 +2866,7 @@ ParameterHandler::load (Archive & ar, const unsigned int)
 
   patterns.clear ();
   for (unsigned int j=0; j<descriptions.size(); ++j)
-    patterns.push_back (std_cxx1x::shared_ptr<Patterns::PatternBase>(Patterns::pattern_factory(descriptions[j])));
+    patterns.push_back (std_cxx1x::shared_ptr<const Patterns::PatternBase>(Patterns::pattern_factory(descriptions[j])));
 }
 
 
index 7d1f7d4658ba0ca194df88df6e900d2895e69ed2..531226662a74db98e89ac38b702e4a6870dd55de 100644 (file)
@@ -2055,7 +2055,7 @@ inline
 unsigned int
 TableBase<N,T>::n_elements () const
 {
-  unsigned s = 1;
+  unsigned int s = 1;
   for (unsigned int n=0; n<N; ++n)
     s *= table_size[n];
   return s;
index 034bd82542398a29b9deb1554b0a4e9f010b5b71..8200af5b2229b691d110d6cbcdbab5147b701ea3 100644 (file)
@@ -280,11 +280,26 @@ class TableHandler
      *     2 13 a
      *     1 0  ""
      *   @endcode
+     * - <code>simple_table_with_separate_column_description</code>: This format
+     *   is very similar to <code>table_with_separate_column_description</code>,
+     *   but it skips aligning the columns with additional white space. This
+     *   increases the performance o fwrite_text() for large tables. Example output:
+     *   @code
+     *     # 1: key1
+     *     # 2: key2
+     *     # 3: key3
+     *     0 0 ""
+     *     1 0 ""
+     *     2 13 a
+     *     1 0 ""
+     *   @endcode
+     *
      **/
     enum TextOutputFormat
     {
       table_with_headers,
-      table_with_separate_column_description
+      table_with_separate_column_description,
+      simple_table_with_separate_column_description,
     };
 
                                      /**
index a5b99fc594d24d1e83b1b0dac510f78c3d423fc9..00cb35584f86f83e27c22f69d0f960e2a88c2cb4 100644 (file)
@@ -79,7 +79,7 @@ class TableIndicesBase
                                      /**
                                       * Store the indices in an array.
                                       */
-    unsigned indices[N];
+    unsigned int indices[N];
 };
 
 
@@ -99,7 +99,7 @@ class TableIndicesBase
  * @author Wolfgang Bangerth, 2002
  */
 template <int N>
-class TableIndices
+class TableIndices : public TableIndicesBase<N>
 {
                                      /**
                                       * Standard constructor, setting
@@ -147,7 +147,8 @@ class TableIndices<1> : public TableIndicesBase<1>
     TableIndices (const unsigned int index1);
 };
 
-
+//TODO: Remove the default arguments and trickery below and put all
+//the constructors into the class demplate
 
 /**
  * Array of indices of fixed size used for the TableBase
index c5a5bf12166e28cf62882ddb8c2330e855c51461..e95edccfbff6a2110daba6134c3b93dd0e0142bf 100644 (file)
@@ -555,7 +555,7 @@ Tensor<rank_, dim, Number>::unroll (Vector<Number2> &result) const
 {
   AssertDimension (result.size(),(Utilities::fixed_power<rank_, unsigned int>(dim)));
 
-  unsigned index = 0;
+  unsigned int index = 0;
   unroll_recursion (result, index);
 }
 
@@ -568,7 +568,7 @@ void
 Tensor<rank_, dim, Number>::unroll_recursion (Vector<Number2> &result,
                                               unsigned int    &index) const
 {
-  for (unsigned i=0; i<dim; ++i)
+  for (unsigned int i=0; i<dim; ++i)
     {
       operator[](i).unroll_recursion(result, index);
     }
@@ -696,7 +696,7 @@ operator * (const Tensor<1,dim,Number> &src1,
  * inner product <tt> sum<sub>i,j</sub> src1[i][j]*src2[i][j]</tt>.
  *
  * @relates Tensor
- * @author Guido Kanschat, 2000 
+ * @author Guido Kanschat, 2000
  */
 template <int dim, typename Number>
 inline
@@ -706,7 +706,7 @@ Number double_contract (const Tensor<2, dim, Number> &src1,
   Number res = 0.;
   for (unsigned int i=0; i<dim; ++i)
     res += contract(src1[i],src2[i]);
-  
+
   return res;
 }
 
index cdf9ddf3bb27e27fedfaa62f36588572332d2dd8..7c4f7390e33f52cbbd84d2c0fc4226169c14f51d 100644 (file)
@@ -1198,7 +1198,7 @@ Tensor<1,dim,Number>::unroll (Vector<Number2> &result) const
   Assert (result.size()==dim,
           ExcDimensionMismatch(dim, result.size()));
 
-  unsigned index = 0;
+  unsigned int index = 0;
   unroll_recursion (result,index);
 }
 
@@ -1211,7 +1211,7 @@ void
 Tensor<1,dim,Number>::unroll_recursion (Vector<Number2> &result,
                                         unsigned int    &index) const
 {
-  for (unsigned i=0; i<dim; ++i)
+  for (unsigned int i=0; i<dim; ++i)
     result(index++) = operator[](i);
 }
 
index 6b5f941cfcccaefa8a613d460a9ab29e7f89406e..d2f83f0333aebf111fcba8dee47b9920584fbd08 100644 (file)
@@ -3739,7 +3739,6 @@ namespace Threads
 
     template <typename> struct TaskDescriptor;
 
-
                                      /**
                                       * The task class for TBB that is
                                       * used by the TaskDescriptor
@@ -3910,7 +3909,7 @@ namespace Threads
 
 
         template <typename> friend struct TaskEntryPoint;
-        template <typename> friend struct Task;
+        friend class dealii::Threads::Task<RT>;
     };
 
 
index a1d59a441811d3f40708afb3e728848e1760ffca..e0a7aac194051d59e43d815df61a7d1696bf6cb3 100644 (file)
@@ -29,8 +29,120 @@ namespace types
                                     *
                                     * See the @ref GlossSubdomainId
                                     * "glossary" for more information.
+                                   *
+                                   * There is a special value,
+                                   * numbers::invalid_subdomain_id
+                                   * that is used to indicate an
+                                   * invalid value of this type.
                                     */
-  typedef unsigned int subdomain_id_t;
+  typedef unsigned int subdomain_id;
+
+                                  /**
+                                   * @deprecated Old name for the typedef above.
+                                   */
+  typedef subdomain_id subdomain_id_t;
+
+                                   /**
+                                   * @deprecated Use numbers::invalid_subdomain_id
+                                    */
+  const unsigned int invalid_subdomain_id = static_cast<subdomain_id>(-1);
+
+                                   /**
+                                    * @deprecated Use numbers::artificial_subdomain_id
+                                    */
+  const unsigned int artificial_subdomain_id = static_cast<subdomain_id>(-2);
+
+                                   /**
+                                    * The type used to denote global dof
+                                    * indices.
+                                    */
+  typedef unsigned int global_dof_index;
+
+                                   /**
+                                   *  @deprecated Use numbers::invalid_dof_index
+                                    */
+  const global_dof_index invalid_dof_index = static_cast<global_dof_index>(-1);
+
+          /**
+           * The type used to denote boundary indicators associated with every
+           * piece of the boundary and, in the case of meshes that describe
+           * manifolds in higher dimensions, associated with every cell.
+          *
+          * There is a special value, numbers::internal_face_boundary_id
+          * that is used to indicate an invalid value of this type and that
+          * is used as the boundary indicator for faces that are in the interior
+          * of the domain and therefore not part of any addressable boundary
+          * component.
+           */
+  typedef unsigned char boundary_id;
+
+                                  /**
+                                   * @deprecated Old name for the typedef above.
+                                   */
+  typedef boundary_id boundary_id_t;
+
+          /**
+           * The type used to denote material indicators associated with every
+           * cell.
+          *
+          * There is a special value, numbers::invalid_material_id
+          * that is used to indicate an invalid value of this type.
+           */
+  typedef unsigned char material_id;
+
+                                  /**
+                                   * @deprecated Old name for the typedef above.
+                                   */
+  typedef material_id material_id_t;
+
+}
+
+// this part of the namespace numbers got moved to the bottom types.h file,
+// because otherwise we get a circular inclusion of config.h, types.h, and
+// numbers.h
+namespace numbers
+{
+                                   /**
+                                    * Representation of the
+                                    * largest number that
+                                    * can be put into an
+                                    * unsigned integer. This
+                                    * value is widely used
+                                    * throughout the library
+                                    * as a marker for an
+                                    * invalid unsigned
+                                    * integer value, such as
+                                    * an invalid array
+                                    * index, an invalid
+                                    * array size, and the
+                                    * like.
+                                    */
+  static const unsigned int
+  invalid_unsigned_int = static_cast<unsigned int> (-1);
+
+                                  /**
+                                    * An invalid value for indices of degrees
+                                    * of freedom.
+                                    */
+  const types::global_dof_index invalid_dof_index = static_cast<types::global_dof_index>(-1);
+
+                                  /**
+                                   * Invalid material_id which we
+                                   * need in several places as a
+                                   * default value.  We assume that
+                                   * all material_ids lie in the
+                                   * range [0, invalid_material_id).
+                                   */
+  const types::material_id invalid_material_id = static_cast<types::material_id>(-1);
+
+                                  /**
+                                   * The number which we reserve for
+                                   * internal faces.  We assume that
+                                   * all boundary_ids lie in the
+                                   * range [0,
+                                   * internal_face_boundary_id).
+                                   */
+  const types::boundary_id internal_face_boundary_id = static_cast<types::boundary_id>(-1);
 
                                    /**
                                     * A special id for an invalid
@@ -44,7 +156,7 @@ namespace types
                                     * See the @ref GlossSubdomainId
                                     * "glossary" for more information.
                                     */
-  const unsigned int invalid_subdomain_id = static_cast<subdomain_id_t>(-1);
+  const types::subdomain_id invalid_subdomain_id = static_cast<types::subdomain_id>(-1);
 
                                    /**
                                     * The subdomain id assigned to a
@@ -63,44 +175,7 @@ namespace types
                                     * the @ref distributed module for
                                     * more information.
                                     */
-  const unsigned int artificial_subdomain_id = static_cast<subdomain_id_t>(-2);
-
-                                   /**
-                                    * The type used to denote global dof
-                                    * indices.
-                                    */
-  typedef unsigned int global_dof_index;
-
-                                   /**
-                                    * An invalid value for indices of degrees
-                                    * of freedom.
-                                    */
-  const global_dof_index invalid_dof_index = static_cast<global_dof_index>(-1);
-
-          /**
-           * The type used to denote boundary indicators associated with every
-           * piece of the boundary and, in the case of meshes that describe
-           * manifolds in higher dimensions, associated with every cell.
-           */
-  typedef unsigned char boundary_id_t;
-
-          /**
-           * The number which we reserve for internal faces.
-           * We assume that all boundary_ids lie in the range [0, internal_face_boundary_id).
-           */
-  const boundary_id_t internal_face_boundary_id = static_cast<boundary_id_t>(-1);
-
-          /**
-           * The type used to denote material indicators associated with every
-           * cell.
-           */
-  typedef unsigned char material_id_t;
-
-          /**
-           * Invalid material_id which we need in several places as a default value.
-           * We assume that all material_ids lie in the range [0, invalid_material_id).
-           */
-  const material_id_t invalid_material_id = static_cast<material_id_t>(-1);
+  const types::subdomain_id artificial_subdomain_id = static_cast<types::subdomain_id>(-2);
 
 }
 
index 333216b6d35a23da48e637af144f74fc4fcb2902..c91de99454fa3d441f1d977c1b7fcd095e7a0f49 100644 (file)
@@ -174,6 +174,42 @@ namespace parallel
  * it relies on the p4est library that does not support this. Attempts
  * to refine cells anisotropically will result in errors.
  *
+ *
+ * <h3> Interaction with boundary description </h3>
+ *
+ * Refining and coarsening a distributed triangulation is a complicated
+ * process because cells may have to be migrated from one processor to
+ * another. On a single processor, materializing that part of the global
+ * mesh that we want to store here from what we have stored before therefore
+ * may involve several cycles of refining and coarsening the locally stored
+ * set of cells until we have finally gotten from the previous to the next
+ * triangulation. (This process is described in more detail in the
+ * @ref distributed_paper.) Unfortunately, in this process, some information
+ * can get lost relating to flags that are set by user code and that are
+ * inherited from mother to child cell but that are not moved along with
+ * a cell if that cell is migrated from one processor to another.
+ *
+ * An example are boundary indicators. Assume, for example, that you start
+ * with a single cell that is refined once globally, yielding four children.
+ * If you have four processors, each one owns one cell. Assume now that processor
+ * 1 sets the boundary indicators of the external boundaries of the cell it owns
+ * to 42. Since processor 0 does not own this cell, it doesn't set the boundary
+ * indicators of its ghost cell copy of this cell. Now, assume we do several mesh
+ * refinement cycles and end up with a configuration where suddenly finds itself
+ * as the owner of this cell. If boundary indicator 42 means that we need to
+ * integrate Neumann boundary conditions along this boundary, then processor 0
+ * will forget to do so because it has never set the boundary indicator along
+ * this cell's boundary to 42.
+ *
+ * The way to avoid this dilemma is to make sure that things like setting
+ * boundary indicators or material ids is done immediately
+ * every time a parallel triangulation is refined. This is not necessary
+ * for sequential triangulations because, there, these flags are inherited
+ * from mother to child cell and remain with a cell even if it is refined
+ * and the children are later coarsened again, but this does not hold for
+ * distributed triangulations.
+ *
+ *
  * @author Wolfgang Bangerth, Timo Heister 2008, 2009, 2010, 2011
  * @ingroup distributed
  */
@@ -356,7 +392,7 @@ namespace parallel
                                           * children that only exist
                                           * on other processors.
                                           */
-        types::subdomain_id_t locally_owned_subdomain () const;
+        types::subdomain_id locally_owned_subdomain () const;
 
                                          /**
                                           * Return the number of
@@ -575,7 +611,7 @@ namespace parallel
                                           * used for the current
                                           * processor.
                                           */
-        types::subdomain_id_t my_subdomain;
+        types::subdomain_id my_subdomain;
 
                                          /**
                                           * A flag that indicates whether the
@@ -813,7 +849,7 @@ namespace parallel
                                           * children that only exist
                                           * on other processors.
                                           */
-        types::subdomain_id_t locally_owned_subdomain () const;
+        types::subdomain_id locally_owned_subdomain () const;
 
                                          /**
                                           * Dummy arrays. This class
@@ -878,7 +914,7 @@ namespace parallel
                                           * children that only exist
                                           * on other processors.
                                           */
-        types::subdomain_id_t locally_owned_subdomain () const;
+        types::subdomain_id locally_owned_subdomain () const;
 
                                          /**
                                           * Return the MPI
index dedeae99682708ba998074bf1de33ef6f734a8aa..3db0ddefe88551ed39cbe10abe11ad89e12663c7 100644 (file)
@@ -226,7 +226,7 @@ namespace internal
                        const unsigned int                      local_index,
                        dealii::internal::int2type<1>)
           {
-            return dof_handler.levels[obj_level]->lines.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -245,7 +245,7 @@ namespace internal
                        dealii::internal::int2type<1>,
                        const unsigned int              global_index)
           {
-            dof_handler.levels[obj_level]->lines.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -306,7 +306,7 @@ namespace internal
                        const unsigned int              local_index,
                        dealii::internal::int2type<2>)
           {
-            return dof_handler.levels[obj_level]->quads.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -325,7 +325,7 @@ namespace internal
                        dealii::internal::int2type<2>,
                        const unsigned int              global_index)
           {
-            dof_handler.levels[obj_level]->quads.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -430,7 +430,7 @@ namespace internal
                        const unsigned int              local_index,
                        dealii::internal::int2type<3>)
           {
-            return dof_handler.levels[obj_level]->hexes.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -449,7 +449,7 @@ namespace internal
                        dealii::internal::int2type<3>,
                        const unsigned int              global_index)
           {
-            dof_handler.levels[obj_level]->hexes.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -468,7 +468,7 @@ namespace internal
                        const unsigned int       local_index,
                        const dealii::internal::int2type<1> &)
           {
-            return dof_handler.levels[obj_level]->lines.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -488,7 +488,7 @@ namespace internal
                        const dealii::internal::int2type<1> &,
                        const unsigned int       global_index)
           {
-            dof_handler.levels[obj_level]->lines.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -548,7 +548,7 @@ namespace internal
                        const unsigned int       local_index,
                        const dealii::internal::int2type<2> &)
           {
-            return dof_handler.levels[obj_level]->quads.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -568,7 +568,7 @@ namespace internal
                        const dealii::internal::int2type<2> &,
                        const unsigned int       global_index)
           {
-            dof_handler.levels[obj_level]->quads.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -668,7 +668,7 @@ namespace internal
                        const unsigned int       local_index,
                        const dealii::internal::int2type<3> &)
           {
-            return dof_handler.levels[obj_level]->hexes.
+            return dof_handler.levels[obj_level]->dof_object.
               get_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -688,7 +688,7 @@ namespace internal
                        const dealii::internal::int2type<3> &,
                        const unsigned int       global_index)
           {
-            dof_handler.levels[obj_level]->hexes.
+            dof_handler.levels[obj_level]->dof_object.
               set_dof_index (dof_handler,
                              obj_index,
                              fe_index,
@@ -821,7 +821,7 @@ namespace internal
                             const unsigned int fe_index,
                             const dealii::internal::int2type<1> &)
           {
-            return dof_handler.levels[obj_level]->lines.fe_index_is_active(dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.fe_index_is_active(dof_handler,
                                                                            obj_index,
                                                                            fe_index,
                                                                            obj_level);
@@ -836,7 +836,7 @@ namespace internal
                              const unsigned int obj_index,
                              const dealii::internal::int2type<1> &)
           {
-            return dof_handler.levels[obj_level]->lines.n_active_fe_indices (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.n_active_fe_indices (dof_handler,
                                                                              obj_index);
           }
 
@@ -851,7 +851,7 @@ namespace internal
                              const unsigned int n,
                              const dealii::internal::int2type<1> &)
           {
-            return dof_handler.levels[obj_level]->lines.nth_active_fe_index (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.nth_active_fe_index (dof_handler,
                                                                              obj_level,
                                                                              obj_index,
                                                                              n);
@@ -913,7 +913,7 @@ namespace internal
                             const unsigned int fe_index,
                             const dealii::internal::int2type<2> &)
           {
-            return dof_handler.levels[obj_level]->quads.fe_index_is_active(dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.fe_index_is_active(dof_handler,
                                                                            obj_index,
                                                                            fe_index,
                                                                            obj_level);
@@ -928,7 +928,7 @@ namespace internal
                              const unsigned int obj_index,
                              const dealii::internal::int2type<2> &)
           {
-            return dof_handler.levels[obj_level]->quads.n_active_fe_indices (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.n_active_fe_indices (dof_handler,
                                                                              obj_index);
           }
 
@@ -943,7 +943,7 @@ namespace internal
                              const unsigned int n,
                              const dealii::internal::int2type<2> &)
           {
-            return dof_handler.levels[obj_level]->quads.nth_active_fe_index (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.nth_active_fe_index (dof_handler,
                                                                              obj_level,
                                                                              obj_index,
                                                                              n);
@@ -1022,7 +1022,7 @@ namespace internal
                             const unsigned int fe_index,
                             const dealii::internal::int2type<3> &)
           {
-            return dof_handler.levels[obj_level]->hexes.fe_index_is_active(dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.fe_index_is_active(dof_handler,
                                                                            obj_index,
                                                                            fe_index,
                                                                            obj_level);
@@ -1068,7 +1068,7 @@ namespace internal
                              const unsigned int obj_index,
                              const dealii::internal::int2type<3> &)
           {
-            return dof_handler.levels[obj_level]->hexes.n_active_fe_indices (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.n_active_fe_indices (dof_handler,
                                                                              obj_index);
           }
 
@@ -1083,7 +1083,7 @@ namespace internal
                              const unsigned int n,
                              const dealii::internal::int2type<3> &)
           {
-            return dof_handler.levels[obj_level]->hexes.nth_active_fe_index (dof_handler,
+            return dof_handler.levels[obj_level]->dof_object.nth_active_fe_index (dof_handler,
                                                                              obj_level,
                                                                              obj_index,
                                                                              n);
index 86fd9cbbe04bfc78e634bb36ea987f5802a87ff6..68fdcc45d8c2c96401179430f3e867c675c34522 100644 (file)
@@ -293,18 +293,6 @@ class DoFHandler  :  public Subscriptor
                                       * is first discussed in the introduction
                                       * to the step-2 tutorial program.
                                       *
-                                      * The additional optional
-                                      * parameter @p offset allows you
-                                      * to reserve space for a finite
-                                      * number of additional vector
-                                      * entries in the beginning of
-                                      * all discretization vectors, by
-                                      * starting the enumeration of
-                                      * degrees of freedom on the grid
-                                      * at a nonzero value. By
-                                      * default, this value is of
-                                      * course zero.
-                                      *
                                       * A pointer of the transferred
                                       * finite element is
                                       * stored. Therefore, the
@@ -317,8 +305,7 @@ class DoFHandler  :  public Subscriptor
                                       * releases the lock of this
                                       * object to the finite element.
                                       */
-    virtual void distribute_dofs (const FiniteElement<dim,spacedim> &fe,
-                                  const unsigned int        offset = 0);
+    virtual void distribute_dofs (const FiniteElement<dim,spacedim> &fe);
 
                                      /**
                                       * After distribute_dofs() with
@@ -1073,7 +1060,7 @@ class DoFHandler  :  public Subscriptor
                                       * consideration.
                                       */
     unsigned int
-    n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const;
+    n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const;
 
                                      /**
                                       * Access to an object informing
@@ -1419,7 +1406,7 @@ class DoFHandler  :  public Subscriptor
 
 template <> unsigned int DoFHandler<1>::n_boundary_dofs () const;
 template <> unsigned int DoFHandler<1>::n_boundary_dofs (const FunctionMap &) const;
-template <> unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id_t> &) const;
+template <> unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id> &) const;
 
 
 /* ----------------------- Inline functions ---------------------------------- */
index 65c90440169a3a1f43d31ee70390185918079bc9..c5c0f80d843b65d33dd6991a0534ff83bb4f3a08 100644 (file)
@@ -65,8 +65,7 @@ namespace internal
                                             */
           virtual
           NumberCache
-          distribute_dofs (const unsigned int        offset,
-                           dealii::DoFHandler<dim,spacedim> &dof_handler) const = 0;
+          distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const = 0;
 
                                            /**
                                             * Renumber degrees of freedom as
@@ -95,8 +94,7 @@ namespace internal
                                             */
           virtual
           NumberCache
-          distribute_dofs (const unsigned int        offset,
-                           dealii::DoFHandler<dim,spacedim> &dof_handler) const;
+          distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const;
 
                                            /**
                                             * Renumber degrees of freedom as
@@ -126,8 +124,7 @@ namespace internal
                                             */
           virtual
           NumberCache
-          distribute_dofs (const unsigned int        offset,
-                           dealii::DoFHandler<dim,spacedim> &dof_handler) const;
+          distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const;
 
                                            /**
                                             * Renumber degrees of freedom as
index cb9c40d7332006bc75346a42bc2626536fba7e7e..5e9875551f10baf838fbb88666c826aa4d5eea76 100644 (file)
@@ -141,7 +141,7 @@ namespace internal
                                           * The object containing dof-indices
                                           * and related access-functions
                                           */
-        DoFObjects<1> lines;
+        DoFObjects<1> dof_object;
 
                                          /**
                                           * Determine an estimate for the
@@ -174,7 +174,7 @@ namespace internal
                                           * The object containing dof-indices
                                           * and related access-functions
                                           */
-        internal::DoFHandler::DoFObjects<2> quads;
+        internal::DoFHandler::DoFObjects<2> dof_object;
 
                                          /**
                                           * Determine an estimate for the
@@ -207,7 +207,7 @@ namespace internal
                                           * The object containing dof-indices
                                           * and related access-functions
                                           */
-        internal::DoFHandler::DoFObjects<3> hexes;
+        internal::DoFHandler::DoFObjects<3> dof_object;
 
                                          /**
                                           * Determine an estimate for the
@@ -241,7 +241,7 @@ namespace internal
                                  const unsigned int version)
     {
       this->DoFLevel<0>::serialize (ar, version);
-      ar & lines;
+      ar & dof_object;
     }
 
 
@@ -250,7 +250,7 @@ namespace internal
                                  const unsigned int version)
     {
       this->DoFLevel<0>::serialize (ar, version);
-      ar & quads;
+      ar & dof_object;
     }
 
 
@@ -259,7 +259,7 @@ namespace internal
                                  const unsigned int version)
     {
       this->DoFLevel<0>::serialize (ar, version);
-      ar & hexes;
+      ar & dof_object;
     }
   }
 }
index f760b6d86cde97bbb6d4c204d3a589ef3cf20af2..8316bd811f65e06012bf5852341db7db7e5e72bd 100644 (file)
@@ -1149,12 +1149,42 @@ namespace DoFRenumbering
                                     * 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.
                                     */
   template <class DH>
   void
   sort_selected_dofs_back (DH&                      dof_handler,
                            const std::vector<bool>& selected_dofs);
 
+                                   /**
+                                    * Sort those degrees of freedom
+                                    * which are tagged with @p true
+                                    * in the @p selected_dofs array
+                                    * on the level #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.
+                                    */
+  template <class DH>
+  void
+  sort_selected_dofs_back (DH&                      dof_handler,
+                           const std::vector<bool>& selected_dofs,
+                           const unsigned int       level);
+
                                    /**
                                     * Computes the renumbering
                                     * vector needed by the
@@ -1163,6 +1193,11 @@ namespace DoFRenumbering
                                     * 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.
                                     */
   template <class DH>
   void
@@ -1170,6 +1205,28 @@ namespace DoFRenumbering
                                    const DH&                  dof_handler,
                                    const std::vector<bool>&   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.
+                                    *
+                                    * @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 <class DH>
+  void
+  compute_sort_selected_dofs_back (std::vector<unsigned int>& new_dof_indices,
+                                   const DH&                  dof_handler,
+                                   const std::vector<bool>&   selected_dofs,
+                                   const unsigned int         level);
+
                                    /**
                                     * Renumber the degrees of
                                     * freedom in a random way.
index 0f6212e786825aeed021b856e7735c6a132a6faa..22a9d90963ddc6e80939107d7b8dfdf1847dc8d7 100644 (file)
@@ -496,7 +496,7 @@ namespace DoFTools
                          SparsityPattern        &sparsity_pattern,
                          const ConstraintMatrix &constraints = ConstraintMatrix(),
                          const bool              keep_constrained_dofs = true,
-                         const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id);
+                         const types::subdomain_id subdomain_id = types::invalid_subdomain_id);
 
                                    /**
                                     * Locate non-zero entries for
@@ -658,7 +658,7 @@ namespace DoFTools
                          SparsityPattern          &sparsity_pattern,
                          const ConstraintMatrix   &constraints = ConstraintMatrix(),
                          const bool                keep_constrained_dofs = true,
-                         const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id);
+                         const types::subdomain_id subdomain_id = types::invalid_subdomain_id);
 
                                    /**
                                     * @deprecated This is the old
@@ -815,7 +815,7 @@ namespace DoFTools
                               SparsityPattern &sparsity_pattern,
                               const ConstraintMatrix   &constraints,
                               const bool                keep_constrained_dofs = true,
-                              const types::subdomain_id_t  subdomain_id = numbers::invalid_unsigned_int);
+                              const types::subdomain_id  subdomain_id = numbers::invalid_unsigned_int);
 
                                    /**
                                     * This function does the same as
@@ -1084,7 +1084,7 @@ namespace DoFTools
   template<typename DH>
   void
   make_periodicity_constraints (const DH                   &dof_handler,
-                                const types::boundary_id_t boundary_component,
+                                const types::boundary_id boundary_component,
                                 const int                  direction,
                                 dealii::ConstraintMatrix   &constraint_matrix,
                                 const std::vector<bool>    &component_mask = std::vector<bool>());
@@ -1104,7 +1104,7 @@ namespace DoFTools
   template<typename DH>
   void
   make_periodicity_constraints (const DH                       &dof_handler,
-                                const types::boundary_id_t     boundary_component,
+                                const types::boundary_id     boundary_component,
                                 const int                      direction,
                                 dealii::Tensor<1,DH::space_dimension>
                                                                &offset,
@@ -1335,7 +1335,7 @@ namespace DoFTools
   extract_boundary_dofs (const DH                   &dof_handler,
                          const std::vector<bool>    &component_mask,
                          std::vector<bool>          &selected_dofs,
-                         const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
+                         const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
 
   /**
    * This function does the same as the previous one but it
@@ -1371,7 +1371,7 @@ namespace DoFTools
   extract_boundary_dofs (const DH                   &dof_handler,
                          const std::vector<bool>    &component_mask,
                          IndexSet                    &selected_dofs,
-                         const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
+                         const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
 
                                    /**
                                     * This function is similar to
@@ -1408,7 +1408,7 @@ namespace DoFTools
   extract_dofs_with_support_on_boundary (const DH                   &dof_handler,
                                          const std::vector<bool>    &component_mask,
                                          std::vector<bool>          &selected_dofs,
-                                         const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
+                                         const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
 
                                    /**
                                     * @name Hanging Nodes
@@ -1458,7 +1458,7 @@ namespace DoFTools
   template <class DH>
   void
   extract_subdomain_dofs (const DH           &dof_handler,
-                          const types::subdomain_id_t subdomain_id,
+                          const types::subdomain_id subdomain_id,
                           std::vector<bool>  &selected_dofs);
 
 
@@ -1589,7 +1589,7 @@ namespace DoFTools
   template <class DH>
   void
   get_subdomain_association (const DH                  &dof_handler,
-                             std::vector<types::subdomain_id_t> &subdomain);
+                             std::vector<types::subdomain_id> &subdomain);
 
                                    /**
                                     * Count how many degrees of freedom are
@@ -1633,7 +1633,7 @@ namespace DoFTools
   template <class DH>
   unsigned int
   count_dofs_with_subdomain_association (const DH           &dof_handler,
-                                         const types::subdomain_id_t subdomain);
+                                         const types::subdomain_id subdomain);
 
                                    /**
                                     * Count how many degrees of freedom are
@@ -1670,7 +1670,7 @@ namespace DoFTools
   template <class DH>
   void
   count_dofs_with_subdomain_association (const DH           &dof_handler,
-                                         const types::subdomain_id_t subdomain,
+                                         const types::subdomain_id subdomain,
                                          std::vector<unsigned int> &n_dofs_on_subdomain);
 
                                    /**
@@ -1712,7 +1712,7 @@ namespace DoFTools
   template <class DH>
   IndexSet
   dof_indices_with_subdomain_association (const DH           &dof_handler,
-                                          const types::subdomain_id_t subdomain);
+                                          const types::subdomain_id subdomain);
 
                                    // @}
                                    /**
@@ -2054,7 +2054,7 @@ namespace DoFTools
                                     * target_component. If this is
                                     * not the case, an assertion is
                                     * thrown. The indices not
-                                    * targetted by target_components
+                                    * targeted by target_components
                                     * are left untouched.
                                     */
   template <class DH>
@@ -2100,7 +2100,7 @@ namespace DoFTools
   void
   count_dofs_per_block (const DH &dof,
                         std::vector<unsigned int> &dofs_per_block,
-                        std::vector<unsigned int>  target_block
+                        const std::vector<unsigned int>  &target_block
                           = std::vector<unsigned int>());
 
                                    /**
@@ -2419,7 +2419,7 @@ namespace DoFTools
   template <class DH>
   void
   map_dof_to_boundary_indices (const DH                      &dof_handler,
-                               const std::set<types::boundary_id_t> &boundary_indicators,
+                               const std::set<types::boundary_id> &boundary_indicators,
                                std::vector<unsigned int>     &mapping);
 
                                    /**
index da45ed52fc4a499f97a1a7654e2493f86bcc6050..40b3635e4fc3c4f835b1b364ec7879288b74239f 100644 (file)
@@ -48,7 +48,7 @@ struct FunctionMap
                                       * name it in the fashion of the
                                       * STL local typedefs.
                                       */
-    typedef std::map<types::boundary_id_t, const Function<dim>*> type;
+    typedef std::map<types::boundary_id, const Function<dim>*> type;
 };
 
 DEAL_II_NAMESPACE_CLOSE
index 63ebb18a036baab267dec13996dd5b9cd1b7b1c4..d27e5a514d4e32ed1c8a6d3756894426b135a17c 100644 (file)
@@ -1344,12 +1344,13 @@ class FiniteElement : public Subscriptor,
                                       * system_to_component_index()
                                       * returns.
                                       *
-                                      * Only for those
-                                      * spaces that couple the
-                                      * components, for example to
-                                      * make a shape function
-                                      * divergence free, will there be
-                                      * more than one @p true entry.
+                                      * Only for those spaces that couple the
+                                      * components, for example to make a
+                                      * shape function divergence free, will
+                                      * there be more than one @p true entry.
+                                      * Elements for which this is true are
+                                      * called non-primitive (see
+                                     * @ref GlossPrimitive).
                                       */
     const std::vector<bool> &
     get_nonzero_components (const unsigned int i) const;
index f2ccd8d29aa032543a94c052aa4cfe8d43aa9e0a..865bd7f33f29aba6ba0af3d2d6620fe9c30c0e72 100644 (file)
@@ -518,17 +518,21 @@ class FiniteElementData
     unsigned int n_dofs_per_object () const;
 
                                      /**
-                                      * Number of components.
+                                      * Number of components. See
+                                     * @ref GlossComponent "the glossary"
+                                     * for more information.
                                       */
     unsigned int n_components () const;
 
                                      /**
-                                      * Number of blocks.
+                                      * Number of blocks. See
+                                     * @ref GlossBlock "the glossary"
+                                     * for more information.
                                       */
     unsigned int n_blocks () const;
 
                                      /**
-                                      * Detailed infromation on block sizes.
+                                      * Detailed information on block sizes.
                                       */
     const BlockIndices& block_indices() const;
 
index 5c319e3839d1a39359bdf024ae2aff23d734bb13..b13c46cb6767dee5e8a0e3726bc4c16af932be3a 100644 (file)
@@ -313,13 +313,13 @@ class MappingQ1 : public Mapping<dim,spacedim>
                                           * vectors.
                                           *
                                           * This vector has
-                                          * (dim-1)*GeometryInfo::faces_per_cell
+                                          * (dim-1)GeometryInfo::faces_per_cell
                                           * entries. The first
-                                          * GeometryInfo<dim>::faces_per_cell
+                                          * GeometryInfo::faces_per_cell
                                           * contain the vectors in the first
                                           * tangential direction for each
                                           * face; the second set of
-                                          * GeometryInfo<dim>::faces_per_cell
+                                          * GeometryInfo::faces_per_cell
                                           * entries contain the vectors in the
                                           * second tangential direction (only
                                           * in 3d, since there we have 2
index 6ddbcb3a0513ac028f983f9b99d80ead653a8bd7..895c407bd0b6ab91ce1a08fb59b69d74796292b6 100644 (file)
@@ -169,7 +169,7 @@ namespace IteratorFilters
                                         * shall have to be evaluated
                                         * to true.
                                         */
-      SubdomainEqualTo (const types::subdomain_id_t subdomain_id);
+      SubdomainEqualTo (const types::subdomain_id subdomain_id);
 
                                        /**
                                         * Evaluation operator. Returns
@@ -187,7 +187,7 @@ namespace IteratorFilters
                                         * Stored value to compare the
                                         * subdomain with.
                                         */
-      const types::subdomain_id_t subdomain_id;
+      const types::subdomain_id subdomain_id;
   };
 
 
@@ -296,7 +296,7 @@ namespace IteratorFilters
  *   class SubdomainEqualTo
  *   {
  *     public:
- *       SubdomainEqualTo (const types::subdomain_id_t subdomain_id)
+ *       SubdomainEqualTo (const types::subdomain_id subdomain_id)
  *                   : subdomain_id (subdomain_id) {};
  *
  *       template <class Iterator>
@@ -305,7 +305,7 @@ namespace IteratorFilters
  *       }
  *
  *     private:
- *       const types::subdomain_id_t subdomain_id;
+ *       const types::subdomain_id subdomain_id;
  *   };
  * @endcode
  * Objects like <code>SubdomainEqualTo(3)</code> can then be used as predicates.
@@ -402,7 +402,7 @@ namespace IteratorFilters
  * Since comparison between filtered and unfiltered iterators is
  * defined, we could as well have let the @p endc variable in the
  * last example be of type
- * <code>Triangulation@<dim@>::active_cell_iterator</code> since it is unchanged
+ * Triangulation::active_cell_iterator since it is unchanged
  * and its value does not depend on the filter.
  *
  * @ingroup grid
@@ -1124,7 +1124,7 @@ namespace IteratorFilters
 
 // ---------------- IteratorFilters::SubdomainEqualTo ---------
   inline
-  SubdomainEqualTo::SubdomainEqualTo (const types::subdomain_id_t subdomain_id)
+  SubdomainEqualTo::SubdomainEqualTo (const types::subdomain_id subdomain_id)
                   :
                   subdomain_id (subdomain_id)
   {}
index 500f5e86242cbc9898c765bd48be316d3233ca05..044daec67472e4c9bf3ed4d6e0ba8de6310428ca 100644 (file)
@@ -280,7 +280,7 @@ class GridGenerator
     subdivided_hyper_rectangle (Triangulation<dim>                       &tria,
                                 const std::vector< std::vector<double> > &spacing,
                                 const Point<dim>                         &p,
-                                const Table<dim,types::material_id_t>           &material_id,
+                                const Table<dim,types::material_id>           &material_id,
                                 const bool                               colorize=false);
 
                                      /**
index 824d896e5fea04524ca11f2617cc741ba3412d31..4fdc09c9429942b0227cf12a08b2178214e4588b 100644 (file)
@@ -1545,7 +1545,7 @@ class GridOut
                                       * these faces are explicitly printed
                                       * in the <tt>write_*</tt> functions;
                                       * all faces with indicator
-                                      * types::internal_face_boundary_id are
+                                      * numbers::internal_face_boundary_id are
                                       * interior ones and an indicator with
                                       * value zero for faces at the boundary
                                       * are considered default.
@@ -1580,7 +1580,7 @@ class GridOut
                                       * these lines are explicitly printed
                                       * in the <tt>write_*</tt> functions;
                                       * all lines with indicator
-                                      * types::internal_face_boundary_id are
+                                      * numbers::internal_face_boundary_id are
                                       * interior ones and an indicator with
                                       * value zero for faces at the boundary
                                       * are considered default.
index 31d9e344c3207bda1f0290a63e41ef1658ed6016..08a74019f5d8a3cf1d7b2588c0755dbce6f23980 100644 (file)
@@ -266,6 +266,19 @@ namespace GridTools
                        const Point<spacedim>     &p);
 
                                    /**
+                                   * @deprecated This function might
+                                    * be acceptable to find a patch
+                                    * around a single vertex, but it
+                                    * wastes resources creating
+                                    * patches around all vertices. The
+                                    * function mail fail on
+                                    * anisotropic meshes, and an easy
+                                    * fix is not obvious. Therefore,
+                                    * it should be replaced by a
+                                    * function which computes all
+                                    * active vertex patches by looping
+                                    * over cells.
+                                   *
                                     * Find and return a vector of
                                     * iterators to active cells that
                                     * surround a given vertex @p vertex.
@@ -575,7 +588,7 @@ namespace GridTools
   template <int dim, int spacedim>
   void
   get_subdomain_association (const Triangulation<dim, spacedim>  &triangulation,
-                             std::vector<types::subdomain_id_t> &subdomain);
+                             std::vector<types::subdomain_id> &subdomain);
 
                                    /**
                                     * Count how many cells are uniquely
@@ -602,7 +615,7 @@ namespace GridTools
   template <int dim, int spacedim>
   unsigned int
   count_cells_with_subdomain_association (const Triangulation<dim, spacedim> &triangulation,
-                                          const types::subdomain_id_t         subdomain);
+                                          const types::subdomain_id         subdomain);
 
                                    /**
                                     * Given two mesh containers
@@ -897,8 +910,8 @@ namespace GridTools
            typename Container<dim,spacedim>::face_iterator>
   extract_boundary_mesh (const Container<dim,spacedim> &volume_mesh,
                          Container<dim-1,spacedim>     &surface_mesh,
-                         const std::set<types::boundary_id_t> &boundary_ids
-                         = std::set<types::boundary_id_t>());
+                         const std::set<types::boundary_id> &boundary_ids
+                         = std::set<types::boundary_id>());
 
 
                                    /**
@@ -945,7 +958,7 @@ namespace GridTools
   std::map<CellIterator, CellIterator>
   collect_periodic_cell_pairs (const CellIterator                          &begin,
                                const typename identity<CellIterator>::type &end,
-                               const types::boundary_id_t                  boundary_component,
+                               const types::boundary_id                  boundary_component,
                                int                                         direction,
                                const dealii::Tensor<1,CellIterator::AccessorType::space_dimension>
                                  &offset = dealii::Tensor<1,CellIterator::AccessorType::space_dimension>());
@@ -962,7 +975,7 @@ namespace GridTools
   template<typename DH>
   std::map<typename DH::cell_iterator, typename DH::cell_iterator>
   collect_periodic_cell_pairs (const DH                   &dof_handler,
-                               const types::boundary_id_t boundary_component,
+                               const types::boundary_id boundary_component,
                                int                        direction,
                                const dealii::Tensor<1,DH::space_dimension>
                                  &offset = Tensor<1,DH::space_dimension>());
index d6daa52fa27351bedf668c86dba70d5494a9aa4f..366b45cdbd00d80a0ec85a3afdde605c888161d8 100644 (file)
@@ -110,8 +110,8 @@ struct CellData
                                       */
     union
     {
-        types::boundary_id_t boundary_id;
-        types::material_id_t material_id;
+        types::boundary_id boundary_id;
+        types::material_id material_id;
     };
 };
 
@@ -136,8 +136,8 @@ struct CellData
  *  number describing the boundary condition to hold on this part of the
  *  boundary. The triangulation creation function gives lines not in this
  *  list either the boundary indicator zero (if on the boundary) or
- *  types::internal_face_boundary_id (if in the interior). Explicitely giving a
- *  line the indicator types::internal_face_boundary_id will result in an error, as well as giving
+ *  numbers::internal_face_boundary_id (if in the interior). Explicitely giving a
+ *  line the indicator numbers::internal_face_boundary_id will result in an error, as well as giving
  *  an interior line a boundary indicator.
  *
  * @ingroup grid
@@ -440,57 +440,41 @@ namespace internal
  *  data is spread over quite a lot of arrays and other places. However,
  *  there are ways powerful enough to work on these data structures
  *  without knowing their exact relations. This is done through the
- *  concept of iterators (see the STL documentation and TriaRawIterator).
+ *  concept of iterators (see the STL documentation and TriaIterator).
  *  In order to make things as easy and dimension independent as possible,
  *  use of class local typedefs is made, see below.
  *
  *  The Triangulation class provides iterator which enable looping over all
- *  lines, cells, etc without knowing the exact representation used to
+ *  cells without knowing the exact representation used to
  *  describe them. Their names are typedefs imported from the Iterators
  *  class (thus making them local types to this class) and are as follows:
  *
  *  <ul>
- *  <li> @p raw_line_iterator: loop over all lines, used or not (declared for
- *  all dimensions).
- *
- *  <li> @p line_iterator: loop over all used lines (declared for all dimensions).
- *
- *  <li> @p active_line_iterator: loop over all active lines (declared for all
- *  dimensions).
- *
- *  <li> @p raw_quad_iterator: loop over all quads, used or not (declared only
- *  for <tt>dim>=2</tt>).
- *
- *  <li> @p quad_iterator: loop over all quads (declared only for @p dim>=2).
- *
- *  <li> @p active_quad_iterator: loop over all active quads (declared only for
- *  @p dim>=2).
+ *  <li> <tt>cell_iterator</tt>: loop over all cells used in the Triangulation
+ *  <li> <tt>active_cell_iterator</tt>: loop over all active cells
  *  </ul>
  *
- *  Additionaly, for @p dim==1, the following identities hold:
+ *  For <tt>dim==1</tt>, these iterators are mapped as follows:
  *  @verbatim
- *    typedef raw_line_iterator    raw_cell_iterator;
  *    typedef line_iterator        cell_iterator;
  *    typedef active_line_iterator active_cell_iterator;
  *  @endverbatim
- *  while for @p dim==2
+ *  while for @p dim==2 we have the additional face iterator:
  *  @verbatim
- *    typedef quad_line_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 line_iterator        face_iterator;
  *    typedef active_line_iterator active_face_iterator;
  *  @endverbatim
  *
- *  By using the cell iterators, you can write code nearly independent of
+ *  By using the cell iterators, you can write code independent of
  *  the spatial dimension. The same applies for substructure iterators,
  *  where a substructure is defined as a face of a cell. The face of a
  *  cell is a vertex in 1D and a line in 2D; however, vertices are
  *  handled in a different way and therefore lines have no faces.
  *
- *  The Triangulation class offers functions like @p begin_active which gives
+ *  The Triangulation class offers functions like begin_active() which gives
  *  you an iterator to the first active cell. There are quite a lot of functions
  *  returning iterators. Take a look at the class doc to get an overview.
  *
@@ -600,7 +584,7 @@ namespace internal
  *        more information. The mentioned class uses the interface described
  *        directly below to transfer the data into the triangulation.
  *
- *     <li> Explicitely creating a triangulation: you can create a triangulation
+ *     <li> Explicitly creating a triangulation: you can create a triangulation
  *        by providing a list of vertices and a list of cells. Each such cell
  *        consists of a vector storing the indices of the vertices of this cell
  *        in the vertex list. To see how this works, you can take a look at the
@@ -612,7 +596,7 @@ namespace internal
  *        quite a complex task.  For example in 2D, we have to create
  *        lines between vertices (but only once, though there are two
  *        cells which link these two vertices) and we have to create
- *        neighborship information. Grids being read in should
+ *        neighborhood information. Grids being read in should
  *        therefore not be too large, reading refined grids would be
  *        inefficient (although there is technically no problem in
  *        reading grids with several 10.000 or 100.000 cells; the
@@ -627,7 +611,7 @@ namespace internal
  *        vertex indices for each cell have to be in a defined order, see the
  *        documentation of GeometryInfo<dim>. In one dimension, the first vertex
  *        index must refer to that vertex with the lower coordinate value. In 2D
- *        and 3D, the correspondoing conditions are not easy to verify and no
+ *        and 3D, the corresponding conditions are not easy to verify and no
  *        full attempt to do so is made.
  *        If you violate this condition, you may end up with matrix entries
  *        having the wrong sign (clockwise vertex numbering, which results in
@@ -638,9 +622,8 @@ namespace internal
  *        There are more subtle conditions which must be imposed upon
  *        the vertex numbering within cells. They do not only hold for
  *        the data read from an UCD or any other input file, but also
- *        for the data passed to the
- *        <tt>Triangulation<dim,spacedim>::create_triangulation ()</tt>
- *        function. See the documentation for the GridIn class
+ *        for the data passed to create_triangulation().
+ *        See the documentation for the GridIn class
  *        for more details on this, and above all to the
  *        GridReordering class that explains many of the
  *        problems and an algorithm to reorder cells such that they
@@ -657,13 +640,13 @@ namespace internal
  *        parallel. It may be conceivable to implement a clean-up in the copy
  *        operation, which eliminates holes of unused memory, re-joins
  *        scattered data and so on. In principle this would be a useful
- *        operation but guaranteeing some parallelity in the two triangulations
+ *        operation but guaranteeing some parallelism in the two triangulations
  *        seems more important since usually data will have to be transferred
  *        between the grids.
  *   </ul>
  *
  *   Finally, there is a special function for folks who like bad grids:
- *   <tt>Triangulation<dim,spacedim>::distort_random</tt>. It moves all the vertices in the
+ *   distort_random(). It moves all the vertices in the
  *   grid a bit around by a random value, leaving behind a distorted mesh.
  *   Note that you should apply this function to the final mesh, since
  *   refinement smoothes the mesh a bit.
@@ -693,8 +676,8 @@ namespace internal
  *   function call <tt>i->set_refine_flag()</tt> marks the respective cell for
  *   refinement. Marking non-active cells results in an error.
  *
- *   After all the cells you wanted to mark for refinement, call the
- *   @p execute_coarsening_and_refinement function to actually perform
+ *   After all the cells you wanted to mark for refinement, call
+ *   execute_coarsening_and_refinement() to actually perform
  *   the refinement. This function itself first calls the
  *   @p prepare_coarsening_and_refinement function to regularize the resulting
  *   triangulation: since a face between two adjacent cells may only
@@ -709,7 +692,7 @@ namespace internal
  *   step than one needed by the finite element method.
  *
  *   To coarsen a grid, the same way as above is possible by using
- *   <tt>i->set_coarsen_flag</tt> and calling @p execute_coarsening_and_refinement.
+ *   <tt>i->set_coarsen_flag</tt> and calling execute_coarsening_and_refinement().
  *
  *   The reason for first coarsening, then refining is that the
  *   refinement usually adds some additional cells to keep the triangulation
@@ -725,20 +708,20 @@ namespace internal
  *   towards the boundary or always at the center (see the example programs,
  *   they do exactly these things). There are more advanced functions,
  *   however, which are more suitable for automatic generation of hierarchical
- *   grids in the context of a-posteriori error estimation and adaptive finite
+ *   grids in the context of a posteriori error estimation and adaptive finite
  *   elements. These functions can be found in the GridRefinement class.
  *
  *
  *   <h3>Smoothing of a triangulation</h3>
  *
  *   Some degradation of approximation properties has been observed
- *   for grids which are too unstructured. Therefore, the
- *   @p prepare_coarsening_and_refinement function which is automatically called
- *   by the @p execute_coarsening_and_refinement function can do some
+ *   for grids which are too unstructured. Therefore,
+ *   prepare_coarsening_and_refinement() which is automatically called
+ *   by execute_coarsening_and_refinement() can do some
  *   smoothing of the triangulation. Note that mesh smoothing is only
  *   done for two or more space dimensions, no smoothing is available
  *   at present for one spatial dimension. In the following, let
- *   <tt>execute_*</tt> stand for @p execute_coarsening_and_refinement.
+ *   <tt>execute_*</tt> stand for execute_coarsening_and_refinement().
  *
  *   For the purpose of smoothing, the
  *   Triangulation constructor takes an argument specifying whether a
@@ -755,188 +738,11 @@ namespace internal
  *   and once with smoothing, since then in some refinement steps would need
  *   to be refined twice.
  *
- *   The parameter taken by the constructor is an integer which may be composed
- *   bitwise by the constants defined in the <tt>enum MeshSmoothing</tt>. The meaning
- *   of these constants is explained in the following:
- *   <ul>
- *   <li> @p limit_level_difference_at_vertices:
- *     It can be shown, that degradation of approximation occurs if the
- *     triangulation contains vertices which are member of cells with levels
- *     differing by more than one. One such example is the following:
- *
- *     @image html limit_level_difference_at_vertices.png ""
- *
- *     It would seem that in two space dimensions, the maximum jump in levels
- *     between cells sharing a common vertex is two (as in the example
- *     above). However, this is not true if more than four cells meet at a
- *     vertex. It is not uncommon that a coarse (initial) mesh contains
- *     vertices at which six or even eight cells meet, when small features of
- *     the domain have to be resolved even on the coarsest mesh. In that case,
- *     the maximum difference in levels is three or four, respectively. The
- *     problem gets even worse in three space dimensions.
- *
- *     Looking at an interpolation of the second derivative of the finite
- *     element solution (assuming bilinear finite elements), one sees that the
- *     numerical solution is almost totally wrong, compared with the true
- *     second derivative. Indeed, on regular meshes, there exist sharp
- *     estimations that the $H^2$-error is only $O(1)$, so we should not be
- *     surprised; however, the numerical solution may show a value for the
- *     second derivative which may be a factor of ten away from the true
- *     value. These problems are located on the small cell adjacent to the
- *     center vertex, where cells of non-subsequent levels meet, as well as on
- *     the upper and right neighbor of this cell (but with a less degree of
- *     deviation from the true value).
- *
- *     If the smoothing indicator given to the constructor contains the bit for
- *     @p limit_level_difference_at_vertices, situations as the above one are
- *     eliminated by also marking the lower left cell for refinement.
- *
- *     In case of anisotropic refinement, the level of a cell is not linked to
- *     the refinement of a cell as directly as in case of isotropic
- *     refinement. Furthermore, a cell can be strongly refined in one
- *     direction and not or at least much less refined in another. Therefore,
- *     it is very difficult to decide, which cases should be excluded from the
- *     refinement process. As a consequence, when using anisotropic
- *     refinement, the @p limit_level_difference_at_vertices flag must not be
- *     set. On the other hand, the implementation of multigrid methods in
- *     deal.II requires that this bit be set.
- *
- *   <li> @p eliminate_unrefined_islands:
- *     Single cells which are not refined and are surrounded by cells which are
- *     refined usually also lead to a sharp decline in approximation properties
- *     locally. The reason is that the nodes on the faces between unrefined and
- *     refined cells are not real degrees of freedom but carry constraints. The
- *     patch without additional degrees of freedom is thus significantly larger
- *     then the unrefined cell itself. If in the parameter passed to the
- *     constructor the bit for @p eliminate_unrefined_islands is set, all cells
- *     which are not flagged for refinement but which are surrounded by more
- *     refined cells than unrefined cells are flagged for refinement. Cells
- *     which are not yet refined but flagged for that are accounted for the
- *     number of refined neighbors. Cells on the boundary are not accounted for
- *     at all. An unrefined island is, by this definition
- *     also a cell which (in 2D) is surrounded by three refined cells and one
- *     unrefined one, or one surrounded by two refined cells, one unrefined one
- *     and is at the boundary on one side. It is thus not a true island, as the
- *     name of the flag may indicate. However, no better name came to mind to
- *     the author by now.
- *
- *   <li> <tt>eliminate_refined_*_islands</tt>:
- *     This algorithm seeks for isolated cells which are refined or flagged
- *     for refinement. This definition is unlike that for
- *     @p eliminate_unrefined_islands, which would mean that an island is
- *     defined as a cell which
- *     is refined but more of its neighbors are not refined than are refined.
- *     For example, in 2D, a cell's refinement would be reverted if at most
- *     one of its neighbors is also refined (or refined but flagged for
- *     coarsening).
- *
- *     The reason for the change in definition of an island is, that this
- *     option would be a bit dangerous, since if you consider a
- *     chain of refined cells (e.g. along a kink in the solution), the cells
- *     at the two ends would be coarsened, after which the next outermost cells
- *     would need to be coarsened. Therefore, only one loop of flagging cells
- *     like this could be done to avoid eating up the whole chain of refined
- *     cells (`chain reaction'...).
- *
- *     This algorithm also takes into account cells which are not actually
- *     refined but are flagged for refinement. If necessary, it takes away the
- *     refinement flag.
- *
- *     Actually there are two versions of this flag,
- *     @p eliminate_refined_inner_islands and @p eliminate_refined_boundary_islands.
- *     There first eliminates islands defined by the definition above which are
- *     in the interior of the domain, while the second eliminates only those
- *     islands if the cell is at the boundary. The reason for this split of
- *     flags is that one often wants to eliminate such islands in the interior
- *     while those at the boundary may well be wanted, for example if one
- *     refines the mesh according to a criterion associated with a boundary
- *     integral or if one has rough boundary data.
- *
- *   <li> @p do_not_produce_unrefined_islands:
- *     This flag prevents the occurrence of unrefined islands. In more detail:
- *     It prohibits the coarsening of a cell if 'most of the neighbors' will
- *     be refined after the step.
- *
- *   <li> @p patch_level_1:
- *     A triangulation of patch level 1 consists of patches, i.e. of
- *     cells that are refined once. This flag ensures that a mesh of
- *     patch level 1 is still of patch level 1 after coarsening and
- *     refinement. It is, however, the user's responsibility to ensure
- *     that the mesh is of patch level 1 before calling
- *     execute_coarsening_and_refinement the first time. The easiest
- *     way to achieve this is by calling global_refine(1) straight
- *     after creation of the triangulation.  It follows that if at
- *     least one of the children of a cell is or will be refined than
- *     all children need to be refined. If the @p patch_level_1 flag
- *     is set, than the flags @p eliminate_unrefined_islands, @p
- *     eliminate_refined_inner_islands and @p
- *     eliminate_refined_boundary_islands will be ignored as they will
- *     be fulfilled automatically.
- *
- *   <li> @p coarsest_level_1:
- *     Each coarse grid cell is refined at least once, i.e. the
- *     triangulation might have active cells on level 1 but not on
- *     level 0. This flag ensures that a mesh which has
- *     coarsest_level_1 has still coarsest_level_1 after coarsening
- *     and refinement. It is, however, the user's responsibility to
- *     ensure that the mesh has coarsest_level_1 before calling
- *     execute_coarsening_and_refinement the first time. The easiest
- *     way to achieve this is by calling global_refine(1) straight
- *     after creation of the triangulation. It follows that active
- *     cells on level 1 may not be coarsenend.
- *
- *     The main use of this flag is to ensure that each cell has at least one
- *     neighbor in each coordinate direction (i.e. each cell has at least a
- *     left or right, and at least an upper or lower neighbor in 2d). This is
- *     a necessary precondition for some algorihms that compute finite
- *     differences between cells. The DerivativeApproximation class is one of
- *     these algorithms that require that a triangulation is coarsest_level_1
- *     unless all cells already have at least one neighbor in each coordinate
- *     direction on the coarsest level.
+ *   The parameter taken by the constructor is an integer which may be
+ *   composed bitwise by the constants defined in the enum
+ *   #MeshSmoothing (see there for the possibilities).
  *
- *   <li> @p smoothing_on_refinement:
- *     This flag sums up all smoothing algorithms which may be performed upon
- *     refinement by flagging some more cells for refinement.
- *
- *   <li> @p smoothing_on_coarsening:
- *     This flag sums up all smoothing algorithms which may be performed upon
- *     coarsening by flagging some more cells for coarsening.
- *
- *   <li> @p maximum_smoothing:
- *     This flag includes all the above ones and therefore combines all
- *     smoothing algorithms implemented.
- *
- *   <li> @p allow_anisotropic_smoothing:
- *     This flag is not included in @p maximum_smoothing. The flag is
- *     concerned with the following case: consider the case that an
- *     unrefined and a refined cell share a common face and that one
- *     of the children of the refined cell along the common face is
- *     flagged for further refinement. In that case, the resulting
- *     mesh would have more than one hanging node along one or more of
- *     the edges of the triangulation, a situation that is not
- *     allowed. Consequently, in order to perform the refinement, the
- *     coarser of the two original cells is also going to be refined.
- *
- *     However, in many cases it is sufficient to refine the coarser
- *     of the two original cells in an anisotropic way to avoid the
- *     case of multiple hanging vertices on a single edge. Doing only
- *     the minimal anisotropic refinement can save cells and degrees
- *     of freedom. By specifying this flag, the library can produce
- *     these anisotropic refinements.
- *
- *     The flag is not included by default since it may lead to
- *     anisotropically refined meshes even though no cell has ever
- *     been refined anisotropically explicitly by a user command. This
- *     surprising fact may lead to programs that do the wrong thing
- *     since they are not written for the additional cases that can
- *     happen with anisotropic meshes, see the discussion in the
- *     introduction to step-30.
- *
- *   <li> @p none:
- *     Select no smoothing at all.
- *   </ul>
- *
- *   @note While it is possible to pass all of the flags discussed above to
+ *   @note While it is possible to pass all of the flags in #MeshSmoothing to
  *   objects of type parallel::distributed::Triangulation, it is not always
  *   possible to honor all of these smoothing options if they would require
  *   knowledge of refinement/coarsening flags on cells not locally owned by
@@ -977,12 +783,12 @@ namespace internal
  *   use is like the material id of cells).
 
  *   Boundary indicators may be in the range from zero to
- *   types::internal_face_boundary_id-1. The value
- *   types::internal_face_boundary_id is reserved to denote interior lines (in 2D)
+ *   numbers::internal_face_boundary_id-1. The value
+ *   numbers::internal_face_boundary_id is reserved to denote interior lines (in 2D)
  *   and interior lines and quads (in 3D), which do not have a
  *   boundary indicator. This way, a program can easily
  *   determine, whether such an object is at the boundary or not.
- *   Material indicators may be in the range from zero to types::invalid_material_id-1.
+ *   Material indicators may be in the range from zero to numbers::invalid_material_id-1.
  *
  *   Lines in two dimensions and quads in three dimensions inherit their
  *   boundary indicator to their children upon refinement. You should therefore
@@ -1458,45 +1264,238 @@ class Triangulation : public Subscriptor
                                       */
     enum MeshSmoothing
     {
+/**
+ * No mesh smoothing at all, except that meshes have to remain one-irregular.
+ */
           none                               = 0x0,
+/**
+ *     It can be shown, that degradation of approximation occurs if the
+ *     triangulation contains vertices which are member of cells with levels
+ *     differing by more than one. One such example is the following:
+ *
+ *     @image html limit_level_difference_at_vertices.png ""
+ *
+ *     It would seem that in two space dimensions, the maximum jump in levels
+ *     between cells sharing a common vertex is two (as in the example
+ *     above). However, this is not true if more than four cells meet at a
+ *     vertex. It is not uncommon that a coarse (initial) mesh contains
+ *     vertices at which six or even eight cells meet, when small features of
+ *     the domain have to be resolved even on the coarsest mesh. In that case,
+ *     the maximum difference in levels is three or four, respectively. The
+ *     problem gets even worse in three space dimensions.
+ *
+ *     Looking at an interpolation of the second derivative of the finite
+ *     element solution (assuming bilinear finite elements), one sees that the
+ *     numerical solution is almost totally wrong, compared with the true
+ *     second derivative. Indeed, on regular meshes, there exist sharp
+ *     estimations that the H<sup>2</sup>-error is only of order one, so we should not be
+ *     surprised; however, the numerical solution may show a value for the
+ *     second derivative which may be a factor of ten away from the true
+ *     value. These problems are located on the small cell adjacent to the
+ *     center vertex, where cells of non-subsequent levels meet, as well as on
+ *     the upper and right neighbor of this cell (but with a less degree of
+ *     deviation from the true value).
+ *
+ *     If the smoothing indicator given to the constructor contains the bit for
+ *     #limit_level_difference_at_vertices, situations as the above one are
+ *     eliminated by also marking the lower left cell for refinement.
+ *
+ *     In case of anisotropic refinement, the level of a cell is not linked to
+ *     the refinement of a cell as directly as in case of isotropic
+ *     refinement. Furthermore, a cell can be strongly refined in one
+ *     direction and not or at least much less refined in another. Therefore,
+ *     it is very difficult to decide, which cases should be excluded from the
+ *     refinement process. As a consequence, when using anisotropic
+ *     refinement, the #limit_level_difference_at_vertices flag must not be
+ *     set. On the other hand, the implementation of multigrid methods in
+ *     deal.II requires that this bit be set.
+ */
           limit_level_difference_at_vertices = 0x1,
-          eliminate_unrefined_islands        = 0x2,
+/**
+ *     Single cells which are not refined and are surrounded by cells which are
+ *     refined usually also lead to a sharp decline in approximation properties
+ *     locally. The reason is that the nodes on the faces between unrefined and
+ *     refined cells are not real degrees of freedom but carry constraints. The
+ *     patch without additional degrees of freedom is thus significantly larger
+ *     then the unrefined cell itself. If in the parameter passed to the
+ *     constructor the bit for #eliminate_unrefined_islands is set, all cells
+ *     which are not flagged for refinement but which are surrounded by more
+ *     refined cells than unrefined cells are flagged for refinement. Cells
+ *     which are not yet refined but flagged for that are accounted for the
+ *     number of refined neighbors. Cells on the boundary are not accounted for
+ *     at all. An unrefined island is, by this definition
+ *     also a cell which (in 2D) is surrounded by three refined cells and one
+ *     unrefined one, or one surrounded by two refined cells, one unrefined one
+ *     and is at the boundary on one side. It is thus not a true island, as the
+ *     name of the flag may indicate. However, no better name came to mind to
+ *     the author by now.
+  */
+         eliminate_unrefined_islands        = 0x2,
+/**
+ *     A triangulation of patch level 1 consists of patches, i.e. of
+ *     cells that are refined once. This flag ensures that a mesh of
+ *     patch level 1 is still of patch level 1 after coarsening and
+ *     refinement. It is, however, the user's responsibility to ensure
+ *     that the mesh is of patch level 1 before calling
+ *     Triangulation::execute_coarsening_and_refinement() the first time. The easiest
+ *     way to achieve this is by calling global_refine(1) straight
+ *     after creation of the triangulation.  It follows that if at
+ *     least one of the children of a cell is or will be refined than
+ *     all children need to be refined. If the #patch_level_1 flag
+ *     is set, than the flags #eliminate_unrefined_islands,
+ *     #eliminate_refined_inner_islands and
+ *     #eliminate_refined_boundary_islands will be ignored as they will
+ *     be fulfilled automatically.
+ */
           patch_level_1                      = 0x4,
+/**
+ *     Each coarse grid cell is refined at least once, i.e. the
+ *     triangulation might have active cells on level 1 but not on
+ *     level 0. This flag ensures that a mesh which has
+ *     coarsest_level_1 has still coarsest_level_1 after coarsening
+ *     and refinement. It is, however, the user's responsibility to
+ *     ensure that the mesh has coarsest_level_1 before calling
+ *     execute_coarsening_and_refinement the first time. The easiest
+ *     way to achieve this is by calling global_refine(1) straight
+ *     after creation of the triangulation. It follows that active
+ *     cells on level 1 may not be coarsenend.
+ *
+ *     The main use of this flag is to ensure that each cell has at least one
+ *     neighbor in each coordinate direction (i.e. each cell has at least a
+ *     left or right, and at least an upper or lower neighbor in 2d). This is
+ *     a necessary precondition for some algorihms that compute finite
+ *     differences between cells. The DerivativeApproximation class is one of
+ *     these algorithms that require that a triangulation is coarsest_level_1
+ *     unless all cells already have at least one neighbor in each coordinate
+ *     direction on the coarsest level.
+ */
           coarsest_level_1                   = 0x8,
-
+/**
+ *     This flag is not included in @p maximum_smoothing. The flag is
+ *     concerned with the following case: consider the case that an
+ *     unrefined and a refined cell share a common face and that one
+ *     of the children of the refined cell along the common face is
+ *     flagged for further refinement. In that case, the resulting
+ *     mesh would have more than one hanging node along one or more of
+ *     the edges of the triangulation, a situation that is not
+ *     allowed. Consequently, in order to perform the refinement, the
+ *     coarser of the two original cells is also going to be refined.
+ *
+ *     However, in many cases it is sufficient to refine the coarser
+ *     of the two original cells in an anisotropic way to avoid the
+ *     case of multiple hanging vertices on a single edge. Doing only
+ *     the minimal anisotropic refinement can save cells and degrees
+ *     of freedom. By specifying this flag, the library can produce
+ *     these anisotropic refinements.
+ *
+ *     The flag is not included by default since it may lead to
+ *     anisotropically refined meshes even though no cell has ever
+ *     been refined anisotropically explicitly by a user command. This
+ *     surprising fact may lead to programs that do the wrong thing
+ *     since they are not written for the additional cases that can
+ *     happen with anisotropic meshes, see the discussion in the
+ *     introduction to step-30.
+ */
           allow_anisotropic_smoothing        = 0x10,
-
+/**
+ *     This algorithm seeks for isolated cells which are refined or flagged
+ *     for refinement. This definition is unlike that for
+ *     #eliminate_unrefined_islands, which would mean that an island is
+ *     defined as a cell which
+ *     is refined but more of its neighbors are not refined than are refined.
+ *     For example, in 2D, a cell's refinement would be reverted if at most
+ *     one of its neighbors is also refined (or refined but flagged for
+ *     coarsening).
+ *
+ *     The reason for the change in definition of an island is, that this
+ *     option would be a bit dangerous, since if you consider a
+ *     chain of refined cells (e.g. along a kink in the solution), the cells
+ *     at the two ends would be coarsened, after which the next outermost cells
+ *     would need to be coarsened. Therefore, only one loop of flagging cells
+ *     like this could be done to avoid eating up the whole chain of refined
+ *     cells (`chain reaction'...).
+ *
+ *     This algorithm also takes into account cells which are not actually
+ *     refined but are flagged for refinement. If necessary, it takes away the
+ *     refinement flag.
+ *
+ *     Actually there are two versions of this flag,
+ *     #eliminate_refined_inner_islands and #eliminate_refined_boundary_islands.
+ *     There first eliminates islands defined by the definition above which are
+ *     in the interior of the domain, while the second eliminates only those
+ *     islands if the cell is at the boundary. The reason for this split of
+ *     flags is that one often wants to eliminate such islands in the interior
+ *     while those at the boundary may well be wanted, for example if one
+ *     refines the mesh according to a criterion associated with a boundary
+ *     integral or if one has rough boundary data.
+ */
           eliminate_refined_inner_islands    = 0x100,
+/**
+ * The result of this flag is very similar to
+ * #eliminate_refined_inner_islands. See the documentation there.
+ */
           eliminate_refined_boundary_islands = 0x200,
+/**
+ *     This flag prevents the occurrence of unrefined islands. In more detail:
+ *     It prohibits the coarsening of a cell if 'most of the neighbors' will
+ *     be refined after the step.
+ */
           do_not_produce_unrefined_islands   = 0x400,
 
+/**
+ *     This flag sums up all smoothing algorithms which may be performed upon
+ *     refinement by flagging some more cells for refinement.
+ */
           smoothing_on_refinement            = (limit_level_difference_at_vertices |
                                                 eliminate_unrefined_islands),
+/**
+ *     This flag sums up all smoothing algorithms which may be performed upon
+ *     coarsening by flagging some more cells for coarsening.
+ */
           smoothing_on_coarsening            = (eliminate_refined_inner_islands |
                                                 eliminate_refined_boundary_islands |
                                                 do_not_produce_unrefined_islands),
 
+/**
+ *     This flag includes all the above ones and therefore combines all
+ *     smoothing algorithms implemented with the exception of
+ *     anisotropic smoothening.
+ */
           maximum_smoothing                  = 0xffff ^ allow_anisotropic_smoothing
     };
 
-
+    /**
+     *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+     */
     typedef TriaRawIterator   <CellAccessor<dim,spacedim>         > raw_cell_iterator;
     typedef TriaIterator      <CellAccessor<dim,spacedim>         > cell_iterator;
     typedef TriaActiveIterator<CellAccessor<dim,spacedim>         > active_cell_iterator;
 
+    /**
+     *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+     */
     typedef TriaRawIterator   <TriaAccessor<dim-1, dim, spacedim> > raw_face_iterator;
     typedef TriaIterator      <TriaAccessor<dim-1, dim, spacedim> > face_iterator;
     typedef TriaActiveIterator<TriaAccessor<dim-1, dim, spacedim> > active_face_iterator;
 
+    /**
+     *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+     */
     typedef typename IteratorSelector::raw_line_iterator    raw_line_iterator;
     typedef typename IteratorSelector::line_iterator        line_iterator;
     typedef typename IteratorSelector::active_line_iterator active_line_iterator;
 
+    /**
+     *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+     */
     typedef typename IteratorSelector::raw_quad_iterator    raw_quad_iterator;
     typedef typename IteratorSelector::quad_iterator        quad_iterator;
     typedef typename IteratorSelector::active_quad_iterator active_quad_iterator;
 
-    typedef typename IteratorSelector::raw_hex_iterator    raw_hex_iterator;
+    /**
+     *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+     */
+   typedef typename IteratorSelector::raw_hex_iterator    raw_hex_iterator;
     typedef typename IteratorSelector::hex_iterator        hex_iterator;
     typedef typename IteratorSelector::active_hex_iterator active_hex_iterator;
 
@@ -1806,7 +1805,7 @@ class Triangulation : public Subscriptor
                                       * boundary, for instance the material id
                                       * in a UCD input file. They are not
                                       * necessarily consecutive but must be in
-                                      * the range 0-(types::boundary_id_t-1).
+                                      * the range 0-(types::boundary_id-1).
                                       * Material IDs on boundaries are also
                                       * called boundary indicators and are
                                       * accessed with accessor functions
@@ -1835,7 +1834,7 @@ class Triangulation : public Subscriptor
                                      *
                                      * @ingroup boundary
                                       */
-    void set_boundary (const types::boundary_id_t   number,
+    void set_boundary (const types::boundary_id   number,
                        const Boundary<dim,spacedim> &boundary_object);
 
                                      /**
@@ -1849,7 +1848,7 @@ class Triangulation : public Subscriptor
                                      *
                                      * @ingroup boundary
                                       */
-    void set_boundary (const types::boundary_id_t number);
+    void set_boundary (const types::boundary_id number);
 
                                      /**
                                       * Return a constant reference to
@@ -1860,7 +1859,7 @@ class Triangulation : public Subscriptor
                                      *
                                      * @ingroup boundary
                                       */
-    const Boundary<dim,spacedim> & get_boundary (const types::boundary_id_t number) const;
+    const Boundary<dim,spacedim> & get_boundary (const types::boundary_id number) const;
 
                                      /**
                                       * Returns a vector containing
@@ -1877,7 +1876,7 @@ class Triangulation : public Subscriptor
                                      *
                                      * @ingroup boundary
                                       */
-    std::vector<types::boundary_id_t> get_boundary_indicators() const;
+    std::vector<types::boundary_id> get_boundary_indicators() const;
 
                                      /**
                                       *  Copy a triangulation. This
@@ -2605,6 +2604,8 @@ class Triangulation : public Subscriptor
                                       */
                                      /*@{*/
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Iterator to the first cell, used
                                       *  or not, on level @p level. If a level
                                       *  has no cells, a past-the-end iterator
@@ -2654,6 +2655,8 @@ class Triangulation : public Subscriptor
     cell_iterator        end (const unsigned int level) const;
 
                                      /**
+                                       *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Return a raw iterator which is the first
                                       * iterator not on level. If @p level is
                                       * the last level, then this returns
@@ -2671,6 +2674,8 @@ class Triangulation : public Subscriptor
 
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last cell, used or not.
                                       *
@@ -2680,6 +2685,8 @@ class Triangulation : public Subscriptor
     raw_cell_iterator    last_raw () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last cell of the level @p level, used
                                       *  or not.
@@ -2735,6 +2742,8 @@ class Triangulation : public Subscriptor
                                       */
                                      /*@{*/
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Iterator to the first face, used
                                       *  or not. As faces have no level,
                                       *  no argument can be given.
@@ -2774,6 +2783,8 @@ class Triangulation : public Subscriptor
     raw_face_iterator    end_face () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Return a raw iterator which is past
                                       * the end.  This is the same as
                                       * <tt>end()</tt> and is only for
@@ -2790,6 +2801,8 @@ class Triangulation : public Subscriptor
     active_face_iterator end_active_face () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last face, used or not.
                                       *
@@ -2827,6 +2840,8 @@ class Triangulation : public Subscriptor
                                       */
                                      /*@{*/
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Iterator to the first line, used or
                                       *  not, on level @p level. If a level
                                       *  has no lines, a past-the-end iterator
@@ -2871,6 +2886,8 @@ class Triangulation : public Subscriptor
     line_iterator        end_line (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Return a raw iterator which is the
                                       * first iterator not on level. If @p
                                       * level is the last level, then this
@@ -2887,6 +2904,8 @@ class Triangulation : public Subscriptor
     active_line_iterator end_active_line (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last line, used or not.
                                       */
@@ -2894,6 +2913,8 @@ class Triangulation : public Subscriptor
     last_raw_line () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last line of the level @p level, used
                                       *  or not.
@@ -2938,6 +2959,8 @@ class Triangulation : public Subscriptor
                                      /*@{
                                       */
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Iterator to the first quad, used or
                                       *  not, on the given level. If a level
                                       *  has no quads, a past-the-end iterator
@@ -2980,6 +3003,8 @@ class Triangulation : public Subscriptor
     quad_iterator        end_quad (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Return a raw iterator which is the
                                       * first iterator not on level. If @p
                                       * level is the last level, then this
@@ -2996,6 +3021,8 @@ class Triangulation : public Subscriptor
     active_quad_iterator end_active_quad (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last quad, used or not.
                                       */
@@ -3003,6 +3030,8 @@ class Triangulation : public Subscriptor
     last_raw_quad () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last quad of the level @p level, used
                                       *  or not.
@@ -3048,6 +3077,8 @@ class Triangulation : public Subscriptor
                                      /*@{
                                       */
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Iterator to the first hex, used
                                       *  or not, on level @p level. If a level
                                       *  has no hexs, a past-the-end iterator
@@ -3087,6 +3118,8 @@ class Triangulation : public Subscriptor
     hex_iterator        end_hex (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Return a raw iterator which is the first
                                       * iterator not on level. If @p level is
                                       * the last level, then this returns
@@ -3103,12 +3136,16 @@ class Triangulation : public Subscriptor
     active_hex_iterator end_active_hex (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last hex, used or not.
                                       */
     raw_hex_iterator    last_raw_hex () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return an iterator pointing to the
                                       *  last hex of the level @p level, used
                                       *  or not.
@@ -3171,12 +3208,16 @@ class Triangulation : public Subscriptor
                                       */
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Total Number of lines, used or
                                       * unused.
                                       */
     unsigned int n_raw_lines () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Number of lines, used or
                                       * unused, on the given level.
                                       */
@@ -3206,12 +3247,16 @@ class Triangulation : public Subscriptor
     unsigned int n_active_lines (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Total number of quads, used or
                                       * unused.
                                       */
     unsigned int n_raw_quads () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Number of quads, used or
                                       * unused, on the given level.
                                       */
@@ -3242,12 +3287,16 @@ class Triangulation : public Subscriptor
     unsigned int n_active_quads (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Total number of hexs, used or
                                       * unused.
                                       */
     unsigned int n_raw_hexs () const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Number of hexs, used or
                                       * unused, on the given level.
                                       */
@@ -3280,6 +3329,8 @@ class Triangulation : public Subscriptor
     unsigned int n_active_hexs(const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       * Number of cells, used or
                                       * unused, on the given level.
                                       */
@@ -3317,6 +3368,8 @@ class Triangulation : public Subscriptor
     unsigned int n_active_cells (const unsigned int level) const;
 
                                      /**
+                                      *  @deprecated The use of raw iterators is highly disencouraged and they might go away in future releases
+                                      *
                                       *  Return total number of faces,
                                       *  used or not. In 2d, the result
                                       *  equals n_raw_lines(), while in 3d it
@@ -3452,7 +3505,7 @@ class Triangulation : public Subscriptor
                                       * of those cells that are owned
                                       * by the current processor.
                                       */
-    virtual types::subdomain_id_t locally_owned_subdomain () const;
+    virtual types::subdomain_id locally_owned_subdomain () const;
                                      /*@}*/
 
                                      /**
@@ -3712,7 +3765,7 @@ class Triangulation : public Subscriptor
                                       *  objects, which are not
                                       *  of type StraightBoundary.
                                       */
-    std::map<types::boundary_id_t, SmartPointer<const Boundary<dim, spacedim> , Triangulation<dim, spacedim> > >  boundary;
+    std::map<types::boundary_id, SmartPointer<const Boundary<dim, spacedim> , Triangulation<dim, spacedim> > >  boundary;
 
                                      /**
                                       * Flag indicating whether
@@ -3771,7 +3824,7 @@ class Triangulation : public Subscriptor
                                       * TriaAccessor::set_boundary_indicator)
                                       * were not a pointer.
                                       */
-    std::map<unsigned int, types::boundary_id_t> *vertex_to_boundary_id_map_1d;
+    std::map<unsigned int, types::boundary_id> *vertex_to_boundary_id_map_1d;
 
     /**
      * A map that correlates each refinement listener that has been added
index 25f0a3e24db4c9bd95b424be61c00a217f551820..b12710e3f56c4cb819b50f3d9304fd224bd0a14b 100644 (file)
@@ -1019,11 +1019,11 @@ class TriaAccessor : public TriaAccessorBase<structdim, dim, spacedim>
                                       * object.
                                       *
                                       * If the return value is the special
-                                      * value types::internal_face_boundary_id,
+                                      * value numbers::internal_face_boundary_id,
                                       * then this object is in the
                                       * interior of the domain.
                                       */
-    types::boundary_id_t boundary_indicator () const;
+    types::boundary_id boundary_indicator () const;
 
                                      /**
                                       * Set the boundary indicator.
@@ -1052,14 +1052,14 @@ class TriaAccessor : public TriaAccessorBase<structdim, dim, spacedim>
                                       * (a face not at the boundary of the
                                       * domain), or set set the boundary
                                       * indicator of an exterior face to
-                                      * types::internal_face_boundary_id
+                                      * numbers::internal_face_boundary_id
                                       * (this value is reserved for another
                                       * purpose). Algorithms may not work or
                                       * produce very confusing results if
                                       * boundary cells have a boundary
-                                      * indicator of types::internal_face_boundary_id
+                                      * indicator of numbers::internal_face_boundary_id
                                       * or if interior cells have boundary
-                                      * indicators other than types::internal_face_boundary_id.
+                                      * indicators other than numbers::internal_face_boundary_id.
                                       * Unfortunately, the current object
                                       * has no means of finding out whether it
                                       * really is at the boundary of the
@@ -1069,7 +1069,7 @@ class TriaAccessor : public TriaAccessorBase<structdim, dim, spacedim>
                                       *
                                       * @ingroup boundary
                                       */
-    void set_boundary_indicator (const types::boundary_id_t) const;
+    void set_boundary_indicator (const types::boundary_id) const;
 
                                      /**
                                       * Do as set_boundary_indicator()
@@ -1089,7 +1089,7 @@ class TriaAccessor : public TriaAccessorBase<structdim, dim, spacedim>
                                       *
                                       * @ingroup boundary
                                       */
-    void set_all_boundary_indicators (const types::boundary_id_t) const;
+    void set_all_boundary_indicators (const types::boundary_id) const;
 
                                      /**
                                       * Return whether this object is at the
@@ -1930,11 +1930,11 @@ class TriaAccessor<0, 1, spacedim>
                                       * boundary indicator one.
                                       *
                                       * If the return value is the special
-                                      * value types::internal_face_boundary_id,
+                                      * value numbers::internal_face_boundary_id,
                                       * then this object is in the
                                       * interior of the domain.
                                       */
-    types::boundary_id_t boundary_indicator () const;
+    types::boundary_id boundary_indicator () const;
 
                                      /**
                                       *  @name Orientation of sub-objects
@@ -2054,14 +2054,14 @@ class TriaAccessor<0, 1, spacedim>
                                       * (a face not at the boundary of the
                                       * domain), or set set the boundary
                                       * indicator of an exterior face to
-                                      *  types::internal_face_boundary_id
+                                      *  numbers::internal_face_boundary_id
                                       * (this value is reserved for another
                                       * purpose). Algorithms may not work or
                                       * produce very confusing results if
                                       * boundary cells have a boundary
-                                      * indicator of types::internal_face_boundary_id
+                                      * indicator of numbers::internal_face_boundary_id
                                       * or if interior cells have boundary
-                                      * indicators other than types::internal_face_boundary_id.
+                                      * indicators other than numbers::internal_face_boundary_id.
                                       * Unfortunately, the current object
                                       * has no means of finding out whether it
                                       * really is at the boundary of the
@@ -2072,7 +2072,7 @@ class TriaAccessor<0, 1, spacedim>
                                       * @ingroup boundary
                                       */
     void
-    set_boundary_indicator (const types::boundary_id_t);
+    set_boundary_indicator (const types::boundary_id);
 
                                      /**
                                       * Since this object only represents a
@@ -2083,7 +2083,7 @@ class TriaAccessor<0, 1, spacedim>
                                       * @ingroup boundary
                                       */
     void
-    set_all_boundary_indicators (const types::boundary_id_t);
+    set_all_boundary_indicators (const types::boundary_id);
                                      /**
                                       * @}
                                       */
@@ -2621,7 +2621,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * "glossary" for more
                                       * information.
                                       */
-    types::material_id_t material_id () const;
+    types::material_id material_id () const;
 
                                      /**
                                       * Set the material id of this
@@ -2635,7 +2635,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * "glossary" for more
                                       * information.
                                       */
-    void set_material_id (const types::material_id_t new_material_id) const;
+    void set_material_id (const types::material_id new_material_id) const;
 
                                      /**
                                       * Set the material id of this
@@ -2647,7 +2647,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * "glossary" for more
                                       * information.
                                       */
-    void recursively_set_material_id (const types::material_id_t new_material_id) const;
+    void recursively_set_material_id (const types::material_id new_material_id) const;
                                      /**
                                       * @}
                                       */
@@ -2671,7 +2671,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * parallel::distributed::Triangulation
                                       * object.
                                       */
-    types::subdomain_id_t subdomain_id () const;
+    types::subdomain_id subdomain_id () const;
 
                                      /**
                                       * Set the subdomain id of this
@@ -2685,7 +2685,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * parallel::distributed::Triangulation
                                       * object.
                                       */
-    void set_subdomain_id (const types::subdomain_id_t new_subdomain_id) const;
+    void set_subdomain_id (const types::subdomain_id new_subdomain_id) const;
 
                                      /**
                                       * Set the subdomain id of this
@@ -2701,7 +2701,7 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                       * parallel::distributed::Triangulation
                                       * object.
                                       */
-    void recursively_set_subdomain_id (const types::subdomain_id_t new_subdomain_id) const;
+    void recursively_set_subdomain_id (const types::subdomain_id new_subdomain_id) const;
                                      /**
                                       * @}
                                       */
index e15a341ac36acf4fe389983de09be9c7dab01a93..fd90e894a4e3377109a3f5fe2a35bce674e33abd 100644 (file)
@@ -1820,7 +1820,7 @@ TriaAccessor<structdim, dim, spacedim>::number_of_children () const
 
 
 template <int structdim, int dim, int spacedim>
-types::boundary_id_t
+types::boundary_id
 TriaAccessor<structdim, dim, spacedim>::boundary_indicator () const
 {
   Assert (structdim<dim, ExcImpossibleInDim(dim));
@@ -1834,7 +1834,7 @@ TriaAccessor<structdim, dim, spacedim>::boundary_indicator () const
 template <int structdim, int dim, int spacedim>
 void
 TriaAccessor<structdim, dim, spacedim>::
-set_boundary_indicator (const types::boundary_id_t boundary_ind) const
+set_boundary_indicator (const types::boundary_id boundary_ind) const
 {
   Assert (structdim<dim, ExcImpossibleInDim(dim));
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
@@ -1847,7 +1847,7 @@ set_boundary_indicator (const types::boundary_id_t boundary_ind) const
 template <int structdim, int dim, int spacedim>
 void
 TriaAccessor<structdim, dim, spacedim>::
-set_all_boundary_indicators (const types::boundary_id_t boundary_ind) const
+set_all_boundary_indicators (const types::boundary_id boundary_ind) const
 {
   set_boundary_indicator (boundary_ind);
 
@@ -1878,7 +1878,7 @@ TriaAccessor<structdim, dim, spacedim>::at_boundary () const
 {
                                    // error checking is done
                                    // in boundary_indicator()
-  return (boundary_indicator() != types::internal_face_boundary_id);
+  return (boundary_indicator() != numbers::internal_face_boundary_id);
 }
 
 
@@ -2236,7 +2236,7 @@ TriaAccessor<0, 1, spacedim>::at_boundary () const
 
 template <int spacedim>
 inline
-types::boundary_id_t
+types::boundary_id
 TriaAccessor<0, 1, spacedim>::boundary_indicator () const
 {
   switch (vertex_kind)
@@ -2252,7 +2252,7 @@ TriaAccessor<0, 1, spacedim>::boundary_indicator () const
       }
 
       default:
-            return types::internal_face_boundary_id;
+            return numbers::internal_face_boundary_id;
     }
 
 }
@@ -2373,7 +2373,7 @@ int TriaAccessor<0, 1, spacedim>::isotropic_child_index (const unsigned int)
 template <int spacedim>
 inline
 void
-TriaAccessor<0, 1, spacedim>::set_boundary_indicator (const types::boundary_id_t b)
+TriaAccessor<0, 1, spacedim>::set_boundary_indicator (const types::boundary_id b)
 {
   Assert (tria->vertex_to_boundary_id_map_1d->find (this->vertex_index())
           != tria->vertex_to_boundary_id_map_1d->end(),
@@ -2386,7 +2386,7 @@ TriaAccessor<0, 1, spacedim>::set_boundary_indicator (const types::boundary_id_t
 
 template <int spacedim>
 inline
-void TriaAccessor<0, 1, spacedim>::set_all_boundary_indicators (const types::boundary_id_t b)
+void TriaAccessor<0, 1, spacedim>::set_all_boundary_indicators (const types::boundary_id b)
 {
   set_boundary_indicator (b);
 }
@@ -2856,7 +2856,7 @@ CellAccessor<dim,spacedim>::is_locally_owned () const
 #ifndef DEAL_II_USE_P4EST
   return true;
 #else
-  const types::subdomain_id_t subdomain = this->subdomain_id();
+  const types::subdomain_id subdomain = this->subdomain_id();
   if (subdomain == types::artificial_subdomain_id)
     return false;
 
@@ -2879,7 +2879,7 @@ CellAccessor<dim,spacedim>::is_ghost () const
 #ifndef DEAL_II_USE_P4EST
   return false;
 #else
-  const types::subdomain_id_t subdomain = this->subdomain_id();
+  const types::subdomain_id subdomain = this->subdomain_id();
   if (subdomain == types::artificial_subdomain_id)
     return false;
 
index e24919e9a0d3277453d9e3e24ea1ede8ce5b5cba..0c32918742a7d34f14f2707cfe23b044013ddfec 100644 (file)
@@ -231,12 +231,7 @@ template <typename> class TriaActiveIterator;
  * @author documentation update Guido Kanschat, 2004
  */
 template <typename Accessor>
-class TriaRawIterator :
-#ifdef HAVE_STD_ITERATOR_CLASS
-               public std::iterator<std::bidirectional_iterator_tag,Accessor>
-#else
-               public bidirectional_iterator<Accessor,int>
-#endif
+class TriaRawIterator : public std::iterator<std::bidirectional_iterator_tag,Accessor>
 {
   public:
                                      /**
index 37b0bac873192cb7b3333deeb22f4fa1a8e29509..24bf5a87a72431ace226f2ef2e48083d2f4d62a7 100644 (file)
@@ -138,7 +138,7 @@ namespace internal
                                           * cells with a given subdomain
                                           * number.
                                           */
-        std::vector<types::subdomain_id_t> subdomain_ids;
+        std::vector<types::subdomain_id> subdomain_ids;
 
                                          /**
                                           * One integer for every consecutive
@@ -242,7 +242,7 @@ namespace internal
         std::vector<unsigned char> refine_flags;
         std::vector<bool> coarsen_flags;
         std::vector<std::pair<int,int> > neighbors;
-        std::vector<types::subdomain_id_t> subdomain_ids;
+        std::vector<types::subdomain_id> subdomain_ids;
         std::vector<int> parents;
 
                                          // The following is not used
index 23d6bda87f4e67a4f68d3e775fa384d73d5e662f..f64e7fd589b05764daeb4ae9b2f7dd1874f053cd 100644 (file)
@@ -141,8 +141,8 @@ namespace internal
         {
             union
             {
-                types::boundary_id_t boundary_id;
-                types::material_id_t material_id;
+                types::boundary_id boundary_id;
+                types::material_id material_id;
             };
 
 
@@ -174,7 +174,7 @@ namespace internal
                                           * example, in one dimension, this field
                                           * stores the material id of a line, which
                                           * is a number between 0 and
-                                          * types::invalid_material_id-1. In more
+                                          * numbers::invalid_material_id-1. In more
                                           * than one dimension, lines have no
                                           * material id, but they may be at the
                                           * boundary; then, we store the
@@ -184,8 +184,8 @@ namespace internal
                                           * boundary conditions hold on this
                                           * part. The boundary indicator also
                                           * is a number between zero and
-                                          * types::internal_face_boundary_id-1;
-                                          * the id types::internal_face_boundary_id
+                                          * numbers::internal_face_boundary_id-1;
+                                          * the id numbers::internal_face_boundary_id
                                           * is reserved for lines
                                           * in the interior and may be used
                                           * to check whether a line is at the
@@ -712,7 +712,7 @@ namespace internal
     inline
     TriaObjects<G>::BoundaryOrMaterialId::BoundaryOrMaterialId ()
     {
-      material_id = types::invalid_material_id;
+      material_id = numbers::invalid_material_id;
     }
 
 
index e26959fca6d21ed8d049457345af794a1282d1af..a4933492181ef8dd64ad29ff480924744559724f 100644 (file)
@@ -863,7 +863,7 @@ namespace hp
                                         * consideration.
                                         */
       unsigned int
-      n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const;
+      n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const;
 
                                        /**
                                         * Return the number of
@@ -1107,7 +1107,7 @@ namespace hp
                                         *  Create default tables for
                                         *  the active_fe_indices in
                                         *  the
-                                        *  dealii::internal::hp::DoFLevels. They
+                                        *  dealii::internal::hp::DoFLevel. They
                                         *  are initialized with the a
                                         *  zero indicator, meaning
                                         *  that fe[0] is going to be
@@ -1239,7 +1239,7 @@ namespace hp
                                         * form of a linked list, is
                                         * the same as used for the
                                         * arrays used in the
-                                        * hp::DoFLevel
+                                        * internal::hp::DoFLevel
                                         * hierarchy. Starting indices
                                         * into this array are provided
                                         * by the vertex_dofs_offsets
index f526ccab2a7ea6b830821998981c5e32ae56ebd3..7fc4b81bedbfbbd01deb581586c4f525183cd49a 100644 (file)
@@ -164,7 +164,7 @@ namespace internal
                                           *  store the dof-indices and related functions of
                                           *  lines
                                           */
-        internal::hp::DoFObjects<1> lines;
+        internal::hp::DoFObjects<1> dof_object;
 
                                          /**
                                           * Determine an estimate for the
@@ -190,7 +190,7 @@ namespace internal
                                           *  store the dof-indices and related functions of
                                           *  quads
                                           */
-        internal::hp::DoFObjects<2> quads;
+        internal::hp::DoFObjects<2> dof_object;
 
                                          /**
                                           * Determine an estimate for the
@@ -217,7 +217,7 @@ namespace internal
                                           *  store the dof-indices and related functions of
                                           *  hexes
                                           */
-        internal::hp::DoFObjects<3> hexes;
+        internal::hp::DoFObjects<3> dof_object;
 
                                          /**
                                           * Determine an estimate for the
index 1255ea88cab9b3f854b87ff7f3249882ea6927b9..cfe276996492b5690f3e3db97fbfc431056e93d7 100644 (file)
@@ -116,6 +116,11 @@ namespace hp
                                         * this collection.  This number must
                                         * be the same for all elements in the
                                         * collection.
+                                       *
+                                       * This function calls
+                                       * FiniteElement::n_components.  See
+                                       * @ref GlossComponent "the glossary"
+                                       * for more information.
                                         */
       unsigned int n_components () const;
 
@@ -236,6 +241,15 @@ namespace hp
   FECollection<dim,spacedim>::n_components () const
   {
     Assert (finite_elements.size () > 0, ExcNoFiniteElements());
+
+                                    // note that there is no need
+                                    // here to enforce that indeed
+                                    // all elements have the same
+                                    // number of components since we
+                                    // have already done this when
+                                    // adding a new element to the
+                                    // collection.
+
     return finite_elements[0]->n_components ();
   }
 
diff --git a/deal.II/include/deal.II/integrators/advection.h b/deal.II/include/deal.II/integrators/advection.h
new file mode 100644 (file)
index 0000000..56cdbbc
--- /dev/null
@@ -0,0 +1,390 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+#ifndef __deal2__integrators_advection_h
+#define __deal2__integrators_advection_h
+
+
+#include <deal.II/base/config.h>
+#include <deal.II/base/exceptions.h>
+#include <deal.II/base/quadrature.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/fe/mapping.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/meshworker/dof_info.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+namespace LocalIntegrators
+{
+/**
+ * @brief Local integrators related to advection along a vector field and its DG formulations
+ *
+ * All advection operators depend on an advection velocity denoted by
+ * <b>w</b> in the formulas below. It is denoted as <tt>velocity</tt>
+ * in the parameter lists.
+ *
+ * The functions cell_matrix() and both upwind_value_matrix() are
+ * taking the equation in weak form, that is, the directional
+ * derivative is on the test function.
+ *
+ * @ingroup Integrators
+ * @author Guido Kanschat
+ * @date 2012
+ */
+  namespace Advection
+  {
+/**
+ * Advection along the direction <b>w</b> in weak form
+ * with derivative on the test function
+ * \f[
+ * m_{ij} = \int_Z u_j\,(\mathbf w \cdot \nabla) v_i \, dx.
+ * \f]
+ *
+ * The FiniteElement in <tt>fe</tt> may be scalar or vector valued. In
+ * the latter case, the advection operator is applied to each component
+ * separately.
+ *
+ * @param M: The advection matrix obtained as result
+ * @param fe: The FEValues object describing the local trial function
+ * space. #update_values and #update_gradients, and #update_JxW_values
+ * must be set.
+ * @param fetest: The FEValues object describing the local test
+ * function space. #update_values and #update_gradients must be set.
+ * @param velocity: The advection velocity, a vector of dimension
+ * <tt>dim</tt>. Each component may either contain a vector of length
+ * one, in which case a constant velocity is assumed, or a vector with
+ * as many entries as quadrature points if the velocity is not constant.
+ * @param factor is an optional multiplication factor for the result.
+ *
+ * @ingroup Integrators
+ * @author Guido Kanschat
+ * @date 2012
+ */
+    template<int dim>
+      void cell_matrix (
+       FullMatrix<double>& M,
+       const FEValuesBase<dim>& fe,
+       const FEValuesBase<dim>& fetest,
+       const VectorSlice<const std::vector<std::vector<double> > >& velocity,
+       const double factor = 1.)
+      {
+       const unsigned int n_dofs = fe.dofs_per_cell;
+       const unsigned int t_dofs = fetest.dofs_per_cell;
+       const unsigned int n_components = fe.get_fe().n_components();
+       
+       AssertDimension(velocity.size(), dim);
+                                        // If the size of the
+                                        // velocity vectors is one,
+                                        // then do not increment
+                                        // between quadrature points.
+       const unsigned int v_increment = (velocity[0].size() == 1) ? 0 : 1;
+       
+       if (v_increment == 1)
+         {
+           AssertVectorVectorDimension(velocity, dim, fe.n_quadrature_points);
+         }
+       
+       AssertDimension(M.n(), n_dofs);
+       AssertDimension(M.m(), t_dofs);
+      
+       for (unsigned k=0;k<fe.n_quadrature_points;++k)
+         {
+           const double dx = factor * fe.JxW(k);
+           const unsigned int vindex = k * v_increment;
+             
+           for (unsigned j=0;j<n_dofs;++j)
+             for (unsigned i=0;i<t_dofs;++i)
+               for (unsigned int c=0;c<n_components;++c)
+                 {
+                   double wgradv = velocity[0][vindex]
+                                   * fe.shape_grad_component(i,k,c)[0];
+                   for (unsigned int d=1;d<dim;++d)
+                     wgradv += velocity[d][vindex]
+                               * fe.shape_grad_component(i,k,c)[d];
+                   M(i,j) -= dx * wgradv * fe.shape_value_component(j,k,c);
+                 }
+         }
+      }
+
+/**
+ * Advection residual operator in weak form
+ *
+ * \f[
+ * r_i = \int_Z  u\,(\mathbf w \cdot \nabla) v_i \, dx.
+ * \f]
+ */
+    template <int dim>
+      inline void
+      cell_residual  (
+       Vector<double>& result,
+       const FEValuesBase<dim>& fe,
+       const std::vector<Tensor<1,dim> >& input,
+       const VectorSlice<const std::vector<std::vector<double> > >& velocity,
+       double factor = 1.)
+      {
+       const unsigned int nq = fe.n_quadrature_points;
+       const unsigned int n_dofs = fe.dofs_per_cell;
+       Assert(input.size() == nq, ExcDimensionMismatch(input.size(), nq));
+       Assert(result.size() == n_dofs, ExcDimensionMismatch(result.size(), n_dofs));
+      
+       AssertDimension(velocity.size(), dim);
+       const unsigned int v_increment = (velocity[0].size() == 1) ? 0 : 1;
+       if (v_increment == 1)
+         {
+         AssertVectorVectorDimension(velocity, dim, fe.n_quadrature_points);
+         }
+       
+       for (unsigned k=0;k<nq;++k)
+         {
+           const double dx = factor * fe.JxW(k);             
+           for (unsigned i=0;i<n_dofs;++i)
+             for (unsigned int d=0;d<dim;++d)
+               result(i) += dx * input[k]
+                            * fe.shape_grad(i,k)[d] * velocity[d][k * v_increment];
+         }
+      }
+    
+
+/**
+ * Vector-valued advection residual operator in weak form
+ *
+ *
+ * \f[
+ * r_i = \int_Z  \mathbf u\cdot\bigl((\mathbf w \cdot \nabla) \mathbf v_i\bigr) \, dx.
+ * \f]
+ */
+    template <int dim>
+      inline void
+      cell_residual  (
+       Vector<double>& result,
+       const FEValuesBase<dim>& fe,
+       const VectorSlice<const std::vector<std::vector<Tensor<1,dim> > > >& input,
+       const VectorSlice<const std::vector<std::vector<double> > >& velocity,
+       double factor = 1.)
+      {
+       const unsigned int nq = fe.n_quadrature_points;
+       const unsigned int n_dofs = fe.dofs_per_cell;      
+       const unsigned int n_comp = fe.get_fe().n_components();
+      
+       AssertVectorVectorDimension(input, n_comp, fe.n_quadrature_points);
+       Assert(result.size() == n_dofs, ExcDimensionMismatch(result.size(), n_dofs));
+      
+       AssertDimension(velocity.size(), dim);
+       const unsigned int v_increment = (velocity[0].size() == 1) ? 0 : 1;
+       if (v_increment == 1)
+         {
+         AssertVectorVectorDimension(velocity, dim, fe.n_quadrature_points);
+         }
+       
+       for (unsigned k=0;k<nq;++k)
+         {
+           const double dx = factor * fe.JxW(k);
+           for (unsigned i=0;i<n_dofs;++i)
+             for (unsigned int c=0;c<n_comp;++c)
+               for (unsigned int d=0;d<dim;++d)
+                 result(i) += dx * input[c][k]
+                              * fe.shape_grad_component(i,k,c)[d] * velocity[d][k * v_increment];
+         }
+      }
+    
+                                    /**
+                                     * Upwind flux at the boundary
+                                     * for weak advection
+                                     * operator. This is the value of
+                                     * the trial function at the
+                                     * outflow boundary and zero
+                                     * else:
+                                     * @f[
+                                     * a_{ij} = \int_{\partial\Omega}
+                                     * [\mathbf w\cdot\mathbf n]_+
+                                     * u_i v_j \, ds
+                                     * @f]
+                                     *
+                                     * The <tt>velocity</tt> is
+                                     * provided as a VectorSlice,
+                                     * having <tt>dim</tt> vectors,
+                                     * one for each velocity
+                                     * component. Each of the
+                                     * vectors must either have only
+                                     * a single entry, if t he
+                                     * advection velocity is
+                                     * constant, or have an entry
+                                     * for each quadrature point.
+                                     *
+                                     * The finite element can have
+                                     * several components, in which
+                                     * case each component is
+                                     * advected by the same velocity.
+                                     */
+    template <int dim>
+      void upwind_value_matrix(
+       FullMatrix<double>& M,
+       const FEValuesBase<dim>& fe,
+       const FEValuesBase<dim>& fetest,
+       const VectorSlice<const std::vector<std::vector<double> > >& velocity,
+       double factor = 1.)
+      {
+       const unsigned int n_dofs = fe.dofs_per_cell; 
+       const unsigned int t_dofs = fetest.dofs_per_cell; 
+       unsigned int n_components = fe.get_fe().n_components();
+       AssertDimension (M.m(), n_dofs);
+       AssertDimension (M.n(), n_dofs);
+       
+       AssertDimension(velocity.size(), dim);
+       const unsigned int v_increment = (velocity[0].size() == 1) ? 0 : 1;
+       if (v_increment == 1)
+         {
+         AssertVectorVectorDimension(velocity, dim, fe.n_quadrature_points);
+         }     
+       
+       for (unsigned k=0;k<fe.n_quadrature_points;++k)
+         {
+           const double dx = factor * fe.JxW(k);
+             
+           double nv = 0.;
+           for (unsigned int d=0;d<dim;++d)
+             nv += fe.normal_vector(k)[d] * velocity[d][k * v_increment];
+             
+           if (nv > 0)
+             {
+               for (unsigned i=0;i<t_dofs;++i)
+                 for (unsigned j=0;j<n_dofs;++j)
+                   {
+                     if (fe.get_fe().is_primitive())
+                       M(i,j) += dx * nv * fe.shape_value(i,k) * fe.shape_value(j,k);
+                     else
+                       for (unsigned int c=0;c<n_components;++c)
+                         M(i,j) += dx * nv * fetest.shape_value_component(i,k,c)
+                                   * fe.shape_value_component(j,k,c);
+                   }
+             }
+         }
+      }
+
+                                    /**
+                                     * Upwind flux in the interior
+                                     * for weak advection
+                                     * operator. Matrix entries
+                                     * correspond to the upwind value
+                                     * of the trial function, multiplied
+                                     * by the jump of the test
+                                     * functions
+                                     * @f[
+                                     * a_{ij} = \int_F \left|\mathbf w
+                                     * \cdot \mathbf n\right|
+                                     * u^\uparrow
+                                     * (v^\uparrow-v^\downarrow)
+                                     * \,ds
+                                     * @f]
+                                     *
+                                     * The <tt>velocity</tt> is
+                                     * provided as a VectorSlice,
+                                     * having <tt>dim</tt> vectors,
+                                     * one for each velocity
+                                     * component. Each of the
+                                     * vectors must either have only
+                                     * a single entry, if t he
+                                     * advection velocity is
+                                     * constant, or have an entry
+                                     * for each quadrature point.
+                                     *
+                                     * The finite element can have
+                                     * several components, in which
+                                     * case each component is
+                                     * advected the same way.
+                                     */
+    template <int dim>
+      void upwind_value_matrix (
+       FullMatrix<double>& M11,
+       FullMatrix<double>& M12,
+       FullMatrix<double>& M21,
+       FullMatrix<double>& M22,
+       const FEValuesBase<dim>& fe1,
+       const FEValuesBase<dim>& fe2,
+       const FEValuesBase<dim>& fetest1,
+       const FEValuesBase<dim>& fetest2,
+       const VectorSlice<const std::vector<std::vector<double> > >& velocity,
+       const double factor = 1.)
+      {
+       const unsigned int n1 = fe1.dofs_per_cell;
+                                        // Multiply the quadrature point
+                                        // index below with this factor to
+                                        // have simpler data for constant
+                                        // velocities.
+       AssertDimension(velocity.size(), dim);
+       const unsigned int v_increment = (velocity[0].size() == 1) ? 0 : 1;
+       if (v_increment == 1)
+         {
+           AssertVectorVectorDimension(velocity, dim, fe1.n_quadrature_points);
+         }
+       
+       for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+         {
+           double nbeta = fe1.normal_vector(k)[0] * velocity[0][k * v_increment];
+           for (unsigned int d=1;d<dim;++d)
+             nbeta += fe1.normal_vector(k)[d] * velocity[d][k * v_increment];
+           const double dx_nbeta = factor * nbeta * fe1.JxW(k);
+             
+           for (unsigned i=0;i<n1;++i)
+             for (unsigned j=0;j<n1;++j)
+               if (fe1.get_fe().is_primitive())
+                 {
+                   if (nbeta > 0)
+                     {
+                       M11(i,j) += dx_nbeta
+                                   * fe1.shape_value(j,k)
+                                   * fetest1.shape_value(i,k);
+                       M21(i,j) -= dx_nbeta
+                                   * fe1.shape_value(j,k)
+                                   * fetest2.shape_value(i,k);
+                     }
+                   else
+                     {
+                       M22(i,j) -= dx_nbeta
+                                   * fe2.shape_value(j,k)
+                                   * fetest2.shape_value(i,k);
+                       M12(i,j) += dx_nbeta
+                                   * fe2.shape_value(j,k)
+                                   * fetest1.shape_value(i,k);
+                     }
+                 }
+               else
+                 {
+                   for (unsigned int d=0;d<fe1.get_fe().n_components();++d)
+                     if (nbeta > 0)
+                       {
+                         M11(i,j) += dx_nbeta
+                                     * fe1.shape_value_component(j,k,d)
+                                     * fetest1.shape_value_component(i,k,d);
+                         M21(i,j) -= dx_nbeta
+                                     * fe1.shape_value_component(j,k,d)
+                                     * fetest2.shape_value_component(i,k,d);
+                       }
+                     else
+                       {
+                         M22(i,j) -= dx_nbeta
+                                     * fe2.shape_value_component(j,k,d)
+                                     * fetest2.shape_value_component(i,k,d);
+                         M12(i,j) += dx_nbeta
+                                     * fe2.shape_value_component(j,k,d)
+                                     * fetest1.shape_value_component(i,k,d);
+                       }             
+                 }
+         }
+      }
+  }
+}
+
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
index 8734fff170486f0d2c575dbee1dced7f53607fe0..665fd73caf666bd57ccd72838e72d3c0ebe42b8b 100644 (file)
@@ -87,14 +87,14 @@ namespace LocalIntegrators
       AssertDimension(M.m(), t_dofs);
       AssertDimension(M.n(), n_dofs);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
-          for (unsigned i=0;i<t_dofs;++i)
+          for (unsigned int i=0;i<t_dofs;++i)
             {
               const double vv = fetest.shape_value(i,k);
               for (unsigned int d=0;d<dim;++d)
-                for (unsigned j=0;j<n_dofs;++j)
+                for (unsigned int j=0;j<n_dofs;++j)
                   {
                     const double du = fe.shape_grad_component(j,k,d)[d];
                     M(i,j) += dx * du * vv;
@@ -102,6 +102,40 @@ namespace LocalIntegrators
             }
         }
     }
+
+/**
+ * The residual of the divergence operator in strong form.
+ * \f[
+ * \int_Z v\nabla \cdot \mathbf u \,dx
+ * \f]
+ * This is the strong divergence operator and the trial
+ * space should be at least <b>H</b><sup>div</sup>. The test functions
+ * may be discontinuous.
+ *
+ * The function cell_matrix() is the Frechet derivative of this function with respect
+ * to the test functions.
+ */
+    template <int dim>
+    void cell_residual(
+                       Vector<double>& result,
+                       const FEValuesBase<dim>& fetest,
+                       const VectorSlice<const std::vector<std::vector<Tensor<1,dim> > > >& input,
+                       const double factor = 1.)
+    {
+       AssertDimension(fetest.get_fe().n_components(), 1);
+       AssertVectorVectorDimension(input, dim, fetest.n_quadrature_points);
+       const unsigned int t_dofs = fetest.dofs_per_cell;
+       Assert (result.size() == t_dofs, ExcDimensionMismatch(result.size(), t_dofs));
+
+       for (unsigned int k=0;k<fetest.n_quadrature_points;++k)
+           {
+             const double dx = factor * fetest.JxW(k);
+
+             for (unsigned int i=0;i<t_dofs;++i)
+               for (unsigned int d=0;d<dim;++d)
+                 result(i) += dx * input[d][k][d] * fetest.shape_value(i,k);
+           }
+    }
 /**
  * Cell matrix for gradient. The derivative is on the trial
  * function.
@@ -128,14 +162,14 @@ namespace LocalIntegrators
       AssertDimension(M.m(), t_dofs);
       AssertDimension(M.n(), n_dofs);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
           for (unsigned int d=0;d<dim;++d)
-            for (unsigned i=0;i<t_dofs;++i)
+            for (unsigned int i=0;i<t_dofs;++i)
               {
                 const double vv = fetest.shape_value_component(i,k,d);
-                for (unsigned j=0;j<n_dofs;++j)
+                for (unsigned int j=0;j<n_dofs;++j)
                   {
                     const Tensor<1,dim>& Du = fe.shape_grad(j,k);
                     M(i,j) += dx * vv * Du[d];
@@ -144,15 +178,44 @@ namespace LocalIntegrators
         }
     }
 
+    /**
+     * The residual of the gradient operator in strong form.
+     * \f[
+     * \int_Z \mathbf v\cdot\nabla u \,dx
+     * \f]
+     * This is the strong gradient operator and the trial
+     * space should be at least <b>H</b><sup>1</sup>. The test functions
+     * may be discontinuous.
+     *
+     * The function cell_residual() is the Frechet derivative of this function with respect to the test functions.
+     */
+        template <int dim>
+        void gradient_residual(
+                               Vector<double>& result,
+                               const FEValuesBase<dim>& fetest,
+                               const std::vector<Tensor<1,dim> >& input,
+                               const double factor = 1.)
+        {
+               AssertDimension(fetest.get_fe().n_components(), dim);
+               AssertDimension(input.size(), fetest.n_quadrature_points);
+               const unsigned int t_dofs = fetest.dofs_per_cell;
+               Assert (result.size() == t_dofs, ExcDimensionMismatch(result.size(), t_dofs));
+
+               for (unsigned int k=0;k<fetest.n_quadrature_points;++k)
+                   {
+                     const double dx = factor * fetest.JxW(k);
+
+                     for (unsigned int i=0;i<t_dofs;++i)
+                       for (unsigned int d=0;d<dim;++d)
+                         result(i) += dx * input[k][d] * fetest.shape_value_component(i,k,d);
+                   }
+        }
+
 /**
- * The trace of the divergence
- * operator, namely the product
- * of the normal component of the
- * vector valued trial space and
- * the test space.
- * @f[
- * \int_F (\mathbf u\cdot \mathbf n) v \,ds
- * @f]
+ * The trace of the divergence operator, namely the product of the
+ * normal component of the vector valued trial space and the test
+ * space.
+ * @f[ \int_F (\mathbf u\cdot \mathbf n) v \,ds @f]
  */
     template<int dim>
     void
@@ -171,11 +234,11 @@ namespace LocalIntegrators
       AssertDimension(M.m(), t_dofs);
       AssertDimension(M.n(), n_dofs);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const Tensor<1,dim> ndx = factor * fe.JxW(k) * fe.normal_vector(k);
-          for (unsigned i=0;i<t_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<t_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<dim;++d)
                 M(i,j) += ndx[d] * fe.shape_value_component(j,k,d)
                           * fetest.shape_value(i,k);
@@ -189,7 +252,7 @@ namespace LocalIntegrators
  * vector valued trial space and
  * the test space.
  * @f[
- * \int_F (\mathbf f\cdot \mathbf n) v \,ds
+ * \int_F (\mathbf u\cdot \mathbf n) v \,ds
  * @f]
  */
     template<int dim>
@@ -209,15 +272,16 @@ namespace LocalIntegrators
       AssertDimension(result.size(), t_dofs);
       AssertVectorVectorDimension (data, dim, fe.n_quadrature_points);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const Tensor<1,dim> ndx = factor * fe.normal_vector(k) * fe.JxW(k);
 
-          for (unsigned i=0;i<t_dofs;++i)
+          for (unsigned int i=0;i<t_dofs;++i)
             for (unsigned int d=0;d<dim;++d)
               result(i) += ndx[d] * fetest.shape_value(i,k) * data[d][k];
         }
     }
+
 /**
  * The trace of the divergence
  * operator, namely the product
@@ -257,11 +321,11 @@ namespace LocalIntegrators
       AssertDimension(M22.m(), t_dofs);
       AssertDimension(M22.n(), n_dofs);
 
-      for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
         {
           const double dx = factor * fe1.JxW(k);
-          for (unsigned i=0;i<t_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<t_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<dim;++d)
                 {
                   const double un1 = fe1.shape_value_component(j,k,d) * fe1.normal_vector(k)[d];
@@ -295,11 +359,11 @@ namespace LocalIntegrators
       AssertDimension(M.m(), n_dofs);
       AssertDimension(M.n(), n_dofs);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = factor * fe.JxW(k);
-          for (unsigned i=0;i<n_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<n_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               {
                 double dv = 0.;
                 double du = 0.;
@@ -347,11 +411,11 @@ namespace LocalIntegrators
       AssertDimension(M22.m(), n_dofs);
       AssertDimension(M22.n(), n_dofs);
 
-      for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
         {
           const double dx = factor * fe1.JxW(k);
-          for (unsigned i=0;i<n_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<n_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<dim;++d)
                 {
                   const double un1 = fe1.shape_value_component(j,k,d) * fe1.normal_vector(k)[d];
@@ -377,7 +441,7 @@ namespace LocalIntegrators
       AssertVectorVectorDimension (Du, dim, fe.n_quadrature_points);
 
       double result = 0;
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           double div = Du[0][k][0];
           for (unsigned int d=1;d<dim;++d)
index 69783504b6807ff1f40a2f2d7e1c4df9d1140f19..406a23117ede17a2fc1cab42283f2a958914f159 100644 (file)
@@ -53,11 +53,11 @@ namespace LocalIntegrators
       AssertDimension(M.m(), n_dofs);
       AssertDimension(M.n(), n_dofs);
       
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
        {
          const double dx = factor * fe.JxW(k);
-         for (unsigned i=0;i<n_dofs;++i)
-           for (unsigned j=0;j<n_dofs;++j)
+         for (unsigned int i=0;i<n_dofs;++i)
+           for (unsigned int j=0;j<n_dofs;++j)
              for (unsigned int d1=0;d1<dim;++d1)
                for (unsigned int d2=0;d2<dim;++d2)
                  M(i,j) += dx * .25 *
@@ -85,12 +85,12 @@ namespace LocalIntegrators
       AssertDimension(M.m(), n_dofs);
       AssertDimension(M.n(), n_dofs);
       
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
        {
          const double dx = factor * fe.JxW(k);
          const Point<dim>& n = fe.normal_vector(k);
-         for (unsigned i=0;i<n_dofs;++i)
-           for (unsigned j=0;j<n_dofs;++j)
+         for (unsigned int i=0;i<n_dofs;++i)
+           for (unsigned int j=0;j<n_dofs;++j)
              for (unsigned int d1=0;d1<dim;++d1)
                {
                  const double u = fe.shape_value_component(j,k,d1);
@@ -144,12 +144,12 @@ namespace LocalIntegrators
       const double nu2 = (ext_factor < 0) ? int_factor : ext_factor;
       const double penalty = .5 * pen * (nu1 + nu2);
        
-      for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
        {
          const double dx = fe1.JxW(k);
          const Point<dim>& n = fe1.normal_vector(k);
-         for (unsigned i=0;i<n_dofs;++i)
-           for (unsigned j=0;j<n_dofs;++j)
+         for (unsigned int i=0;i<n_dofs;++i)
+           for (unsigned int j=0;j<n_dofs;++j)
              for (unsigned int d1=0;d1<dim;++d1)
                {
                  const double u1 = fe1.shape_value_component(j,k,d1);
index 6255b02d047a82c7a4eb246a4dff90f771cbdb35..92369feeb83ea4f9c642d9521cad3da85f69833d 100644 (file)
@@ -58,12 +58,12 @@ namespace LocalIntegrators
       const unsigned int n_dofs = fe.dofs_per_cell;
       const unsigned int n_components = fe.get_fe().n_components();
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
 
-          for (unsigned i=0;i<n_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<n_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<n_components;++d)
                 M(i,j) += dx
                           * fe.shape_value_component(j,k,d)
@@ -90,8 +90,8 @@ namespace LocalIntegrators
       AssertDimension(fe.get_fe().n_components(), 1);
       AssertDimension(input.size(), fe.n_quadrature_points);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
-        for (unsigned i=0;i<n_dofs;++i)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
+        for (unsigned int i=0;i<n_dofs;++i)
           result(i) += fe.JxW(k) * factor * input[k] * fe.shape_value(i,k);
     }
 
@@ -122,8 +122,8 @@ namespace LocalIntegrators
       AssertDimension(result.size(), n_dofs);
       AssertDimension(input.size(), fe_components);
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
-        for (unsigned i=0;i<n_dofs;++i)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
+        for (unsigned int i=0;i<n_dofs;++i)
           for (unsigned int d=0;d<n_components;++d)
             result(i) += fe.JxW(k) * factor * fe.shape_value_component(i,k,d) * input[d][k];
     }
@@ -171,12 +171,12 @@ namespace LocalIntegrators
       AssertDimension(M21.n(), n1_dofs);
       AssertDimension(M22.n(), n2_dofs);
 
-      for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
         {
           const double dx = fe1.JxW(k);
 
-          for (unsigned i=0;i<n1_dofs;++i)
-            for (unsigned j=0;j<n1_dofs;++j)
+          for (unsigned int i=0;i<n1_dofs;++i)
+            for (unsigned int j=0;j<n1_dofs;++j)
               for (unsigned int d=0;d<n_components;++d)
                 {
                   const double u1 = factor1*fe1.shape_value_component(j,k,d);
index 802943abfa23bdbf33a177d5557799c9dd30a371..abde3902346e6425be3e78ca1f71746b61f44fc8 100644 (file)
@@ -57,12 +57,12 @@ namespace LocalIntegrators
       const unsigned int n_dofs = fe.dofs_per_cell;
       const unsigned int n_components = fe.get_fe().n_components();
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
-          for (unsigned i=0;i<n_dofs;++i)
+          for (unsigned int i=0;i<n_dofs;++i)
             {
-              for (unsigned j=0;j<n_dofs;++j)
+              for (unsigned int j=0;j<n_dofs;++j)
                 for (unsigned int d=0;d<n_components;++d)
                   M(i,j) += dx *
                             (fe.shape_grad_component(j,k,d) * fe.shape_grad_component(i,k,d));
@@ -90,10 +90,10 @@ namespace LocalIntegrators
       Assert(input.size() == nq, ExcDimensionMismatch(input.size(), nq));
       Assert(result.size() == n_dofs, ExcDimensionMismatch(result.size(), n_dofs));
       
-      for (unsigned k=0;k<nq;++k)
+      for (unsigned int k=0;k<nq;++k)
        {
          const double dx = factor * fe.JxW(k);       
-         for (unsigned i=0;i<n_dofs;++i)
+         for (unsigned int i=0;i<n_dofs;++i)
            result(i) += dx * (input[k] * fe.shape_grad(i,k));
        }
     }
@@ -121,10 +121,17 @@ namespace LocalIntegrators
       AssertVectorVectorDimension(input, n_comp, fe.n_quadrature_points);
       Assert(result.size() == n_dofs, ExcDimensionMismatch(result.size(), n_dofs));
       
+<<<<<<< HEAD
       for (unsigned k=0;k<nq;++k)
        {
          const double dx = factor * fe.JxW(k);
          for (unsigned i=0;i<n_dofs;++i)
+=======
+      for (unsigned int k=0;k<nq;++k)
+       {
+         const double dx = factor * fe.JxW(k);
+         for (unsigned int i=0;i<n_dofs;++i)
+>>>>>>> trunk
            for (unsigned int d=0;d<n_comp;++d)
              {
                
@@ -160,12 +167,12 @@ namespace LocalIntegrators
       Assert (M.m() == n_dofs, ExcDimensionMismatch(M.m(), n_dofs));
       Assert (M.n() == n_dofs, ExcDimensionMismatch(M.n(), n_dofs));
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
           const Point<dim>& n = fe.normal_vector(k);
-          for (unsigned i=0;i<n_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<n_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<n_comp;++d)
                 M(i,j) += dx *
                           (2. * fe.shape_value_component(i,k,d) * penalty * fe.shape_value_component(j,k,d)
@@ -206,11 +213,19 @@ namespace LocalIntegrators
         AssertDimension(Dinput.size(), fe.n_quadrature_points);
         AssertDimension(data.size(), fe.n_quadrature_points);
 
+<<<<<<< HEAD
         for (unsigned k=0;k<fe.n_quadrature_points;++k)
           {
             const double dx = factor * fe.JxW(k);
             const Point<dim>& n = fe.normal_vector(k);
             for (unsigned i=0;i<n_dofs;++i)
+=======
+        for (unsigned int k=0;k<fe.n_quadrature_points;++k)
+          {
+            const double dx = factor * fe.JxW(k);
+            const Point<dim>& n = fe.normal_vector(k);
+            for (unsigned int i=0;i<n_dofs;++i)
+>>>>>>> trunk
               {
                 const double dnv = fe.shape_grad(i,k) * n;
                 const double dnu = Dinput[k] * n;
@@ -257,11 +272,15 @@ namespace LocalIntegrators
         AssertVectorVectorDimension(Dinput, n_comp, fe.n_quadrature_points);
         AssertVectorVectorDimension(data, n_comp, fe.n_quadrature_points);
 
-        for (unsigned k=0;k<fe.n_quadrature_points;++k)
+        for (unsigned int k=0;k<fe.n_quadrature_points;++k)
           {
             const double dx = factor * fe.JxW(k);
             const Point<dim>& n = fe.normal_vector(k);
+<<<<<<< HEAD
             for (unsigned i=0;i<n_dofs;++i)
+=======
+            for (unsigned int i=0;i<n_dofs;++i)
+>>>>>>> trunk
               for (unsigned int d=0;d<n_comp;++d)
                 {
                   const double dnv = fe.shape_grad_component(i,k,d) * n;
@@ -319,16 +338,17 @@ namespace LocalIntegrators
 
       const double nui = factor1;
       const double nue = (factor2 < 0) ? factor1 : factor2;
-
-      for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+      const double nu = .5*(nui+nue);
+      
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
        {
          const double dx = fe1.JxW(k);
          const Point<dim>& n = fe1.normal_vector(k);
          for (unsigned int d=0;d<fe1.get_fe().n_components();++d)
            {
-             for (unsigned i=0;i<n_dofs;++i)
+             for (unsigned int i=0;i<n_dofs;++i)
                {
-                 for (unsigned j=0;j<n_dofs;++j)
+                 for (unsigned int j=0;j<n_dofs;++j)
                    {
                      const double vi = fe1.shape_value_component(i,k,d);
                      const double dnvi = n * fe1.shape_grad_component(i,k,d);
@@ -338,10 +358,10 @@ namespace LocalIntegrators
                      const double dnui = n * fe1.shape_grad_component(j,k,d);
                      const double ue = fe2.shape_value_component(j,k,d);
                      const double dnue = n * fe2.shape_grad_component(j,k,d);
-                     M11(i,j) += dx*(-.5*nui*dnvi*ui-.5*nui*dnui*vi+penalty*ui*vi);
-                     M12(i,j) += dx*( .5*nui*dnvi*ue-.5*nue*dnue*vi-penalty*vi*ue);
-                     M21(i,j) += dx*(-.5*nue*dnve*ui+.5*nui*dnui*ve-penalty*ui*ve);
-                     M22(i,j) += dx*( .5*nue*dnve*ue+.5*nue*dnue*ve+penalty*ue*ve);
+                     M11(i,j) += dx*(-.5*nui*dnvi*ui-.5*nui*dnui*vi+nu*penalty*ui*vi);
+                     M12(i,j) += dx*( .5*nui*dnvi*ue-.5*nue*dnue*vi-nu*penalty*vi*ue);
+                     M21(i,j) += dx*(-.5*nue*dnve*ui+.5*nui*dnui*ve-nu*penalty*ui*ve);
+                     M22(i,j) += dx*( .5*nue*dnve*ue+.5*nue*dnue*ve+nu*penalty*ue*ve);
                    }
                }
            }
@@ -381,12 +401,20 @@ namespace LocalIntegrators
   
   const unsigned int n_dofs = fe1.dofs_per_cell;
   
+<<<<<<< HEAD
   for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+=======
+  for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
+>>>>>>> trunk
     {
       const double dx = fe1.JxW(k);
       const Point<dim>& n = fe1.normal_vector(k);
       
+<<<<<<< HEAD
       for (unsigned i=0;i<n_dofs;++i)
+=======
+      for (unsigned int i=0;i<n_dofs;++i)
+>>>>>>> trunk
        {
          const double vi = fe1.shape_value(i,k);
          const Tensor<1,dim>& Dvi = fe1.shape_grad(i,k);
@@ -446,12 +474,20 @@ namespace LocalIntegrators
       const double penalty = .5 * pen * (nui + nue);
       
   
+<<<<<<< HEAD
       for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+=======
+      for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
+>>>>>>> trunk
        {
          const double dx = fe1.JxW(k);
          const Point<dim>& n = fe1.normal_vector(k);
          
+<<<<<<< HEAD
          for (unsigned i=0;i<n1;++i)
+=======
+         for (unsigned int i=0;i<n1;++i)
+>>>>>>> trunk
            for (unsigned int d=0;d<n_comp;++d)
              {
                const double vi = fe1.shape_value_component(i,k,d);
index 22c28c070de12096af83f38351a146677745e07c..22cbef8a6a14bedb2fca6c73b3bafb9ef6b2705c 100644 (file)
@@ -141,7 +141,7 @@ void MatrixIntegrator<dim>::cell(
   L2::cell_matrix(dinfo.matrix(2,false).matrix, info.fe_values(1));
 }
  * @endcode
- * See step-42 for a worked out example of this code.
+ * See step-39 for a worked out example of this code.
  *
  * @ingroup Integrators
  */
index 4c9d61efe837e5bbb14a8b60aa169e5e34a5fd2b..077690306e995a4f1358fc058c744c56ade1d080 100644 (file)
@@ -184,11 +184,11 @@ namespace LocalIntegrators
                                        // all dimensions
       const unsigned int d_max = (dim==2) ? 1 : dim;
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = factor * fe.JxW(k);
-          for (unsigned i=0;i<n_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<n_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<d_max;++d)
                 {
                   const unsigned int d1 = (d+1)%dim;
@@ -232,11 +232,11 @@ namespace LocalIntegrators
 
       const unsigned int d_max = (dim==2) ? 1 : dim;
 
-      for (unsigned k=0;k<fe.n_quadrature_points;++k)
+      for (unsigned int k=0;k<fe.n_quadrature_points;++k)
         {
           const double dx = fe.JxW(k) * factor;
-          for (unsigned i=0;i<t_dofs;++i)
-            for (unsigned j=0;j<n_dofs;++j)
+          for (unsigned int i=0;i<t_dofs;++i)
+            for (unsigned int j=0;j<n_dofs;++j)
               for (unsigned int d=0;d<d_max;++d)
                 {
                   const unsigned int d1 = (d+1)%dim;
@@ -292,12 +292,12 @@ namespace LocalIntegrators
                                          // over all dimensions
         const unsigned int d_max = (dim==2) ? 1 : dim;
 
-        for (unsigned k=0;k<fe.n_quadrature_points;++k)
+        for (unsigned int k=0;k<fe.n_quadrature_points;++k)
           {
             const double dx = factor * fe.JxW(k);
             const Point<dim>& n = fe.normal_vector(k);
-            for (unsigned i=0;i<n_dofs;++i)
-              for (unsigned j=0;j<n_dofs;++j)
+            for (unsigned int i=0;i<n_dofs;++i)
+              for (unsigned int j=0;j<n_dofs;++j)
                 for (unsigned int d=0;d<d_max;++d)
                   {
                     const unsigned int d1 = (d+1)%dim;
@@ -347,12 +347,12 @@ namespace LocalIntegrators
                                          // over all dimensions
         const unsigned int d_max = (dim==2) ? 1 : dim;
 
-        for (unsigned k=0;k<fe.n_quadrature_points;++k)
+        for (unsigned int k=0;k<fe.n_quadrature_points;++k)
           {
             const double dx = factor * fe.JxW(k);
             const Point<dim>& n = fe.normal_vector(k);
-            for (unsigned i=0;i<n_dofs;++i)
-              for (unsigned j=0;j<n_dofs;++j)
+            for (unsigned int i=0;i<n_dofs;++i)
+              for (unsigned int j=0;j<n_dofs;++j)
                 for (unsigned int d=0;d<d_max;++d)
                   {
                     const unsigned int d1 = (d+1)%dim;
@@ -423,13 +423,13 @@ namespace LocalIntegrators
                                          // over all dimensions
         const unsigned int d_max = (dim==2) ? 1 : dim;
 
-        for (unsigned k=0;k<fe1.n_quadrature_points;++k)
+        for (unsigned int k=0;k<fe1.n_quadrature_points;++k)
           {
             const double dx = fe1.JxW(k);
             const Point<dim>& n = fe1.normal_vector(k);
-            for (unsigned i=0;i<n_dofs;++i)
-              for (unsigned j=0;j<n_dofs;++j)
-                for (unsigned d=0;d<d_max;++d)
+            for (unsigned int i=0;i<n_dofs;++i)
+              for (unsigned int j=0;j<n_dofs;++j)
+                for (unsigned int d=0;d<d_max;++d)
                   {
                     const unsigned int d1 = (d+1)%dim;
                     const unsigned int d2 = (d+2)%dim;
index 160e4455c0f103a02146a9185027c5bd6a7aa12c..80e90eb9ae4d6e20baed4ddf58c9a4aa91db352a 100644 (file)
@@ -1,5 +1,5 @@
 //---------------------------------------------------------------------------
-//    $Id: laplace.h 23983 2011-07-29 22:45:15Z kanschat $
+//    $Id$
 //
 //    Copyright (C) 2010, 2011, 2012 by the deal.II authors
 //
index 1504f9de1332d64c7d3a8b4e540bbe35b215c60f..9b323d7972932d6aa1f1d0224514235dea7a0026 100644 (file)
@@ -641,7 +641,7 @@ BlockList::local_index(unsigned int block, unsigned int index) const
 {
   AssertIndexRange(block, index_sets.size());
   const block_container& b = index_sets[block];
-  for (unsigned i=0;i<b.size();++i)
+  for (unsigned int i=0; i<b.size(); ++i)
     if (b[i] == index)
       return i;
   return numbers::invalid_unsigned_int;
index c910989653fcf4f58345ae2b64f81c80c7141d32..8f68491ec64a12a3e638c156a56bdd74a0447815 100644 (file)
@@ -22,6 +22,7 @@
 #include <deal.II/lac/exceptions.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/matrix_iterator.h>
+#include <deal.II/lac/vector.h>
 
 #include <cmath>
 
@@ -736,8 +737,14 @@ class BlockMatrixBase : public Subscriptor
                                      /**
                                       * Call the compress() function on all
                                       * the subblocks of the matrix.
+                                     *
+                                     *
+                                     * See @ref GlossCompress "Compressing
+                                     * distributed objects" for more
+                                     * information.
                                       */
-    void compress ();
+    void compress (::dealii::VectorOperation::values operation
+                  =::dealii::VectorOperation::unknown);
 
                                      /**
                                       * Multiply the entire matrix by a
@@ -2316,11 +2323,11 @@ BlockMatrixBase<MatrixType>::diag_element (const unsigned int i) const
 template <class MatrixType>
 inline
 void
-BlockMatrixBase<MatrixType>::compress ()
+BlockMatrixBase<MatrixType>::compress (::dealii::VectorOperation::values operation)
 {
   for (unsigned int r=0; r<n_block_rows(); ++r)
     for (unsigned int c=0; c<n_block_cols(); ++c)
-      block(r,c).compress ();
+      block(r,c).compress (operation);
 }
 
 
index 7344af92cd5a0bb64b4eb130150eca76c8c74c0f..800e4cf5e0b522c354fcd0d85c99ab9c44c22078 100644 (file)
@@ -194,6 +194,22 @@ class BlockVector : public BlockVectorBase<Vector<Number> >
                                       */
     ~BlockVector ();
 
+                                     /**
+                                      * Call the compress() function on all
+                                      * the subblocks.
+                                     *
+                                     * This functionality only needs to be
+                                     * called if using MPI based vectors and
+                                     * exists in other objects for
+                                     * compatibility.
+                                     *
+                                     * See @ref GlossCompress "Compressing
+                                     * distributed objects" for more
+                                     * information.
+                                      */
+    void compress (::dealii::VectorOperation::values operation
+                  =::dealii::VectorOperation::unknown);
+
                                      /**
                                       * Copy operator: fill all components of
                                       * the vector with the given scalar
@@ -523,6 +539,14 @@ BlockVector<Number>::operator = (const BlockVector<Number2> &v)
   return *this;
 }
 
+template <typename Number>
+inline
+void BlockVector<Number>::compress (::dealii::VectorOperation::values operation)
+{
+  for (unsigned int i=0; i<this->n_blocks();++i)
+    this->components[i].compress(operation);
+}
+
 
 
 template <typename Number>
index 88c9e0e18384de54e1d3467562938ef77a62cf1e..f5f3aaecbc4cc6a279bbfa24f1f2984bdecf7d58 100644 (file)
@@ -280,12 +280,8 @@ namespace internal
                                       */
     template <class BlockVectorType, bool constness>
     class Iterator :
-#ifdef HAVE_STD_ITERATOR_CLASS
         public std::iterator<std::random_access_iterator_tag,
                              typename Types<BlockVectorType,constness>::value_type>
-#else
-    random_access_iterator<typename Types<BlockVectorType,constness>::value_type,int>
-#endif
     {
       private:
                                          /**
@@ -787,8 +783,19 @@ class BlockVectorBase : public Subscriptor
                                      /**
                                       * Call the compress() function on all
                                       * the subblocks of the matrix.
+                                     *
+                                     * This functionality only needs to be
+                                     * called if using MPI based vectors and
+                                     * exists in other objects for
+                                     * compatibility.
+                                     *
+                                     * See @ref GlossCompress "Compressing
+                                     * distributed objects" for more
+                                     * information.
                                       */
-    void compress ();
+    void compress (::dealii::VectorOperation::values operation
+                    =::dealii::VectorOperation::unknown);
+
 
                                      /**
                                       * Access to a single block.
@@ -1633,8 +1640,8 @@ namespace internal
 
     template <class BlockVectorType, bool constness>
     Iterator<BlockVectorType,constness>::
-    Iterator (BlockVector    &parent,
-              const unsigned  global_index)
+    Iterator (BlockVector       &parent,
+              const unsigned int global_index)
                     :
                     parent (&parent),
                     global_index (global_index)
@@ -1824,10 +1831,10 @@ BlockVectorBase<VectorType>::collect_sizes ()
 template <class VectorType>
 inline
 void
-BlockVectorBase<VectorType>::compress ()
+BlockVectorBase<VectorType>::compress (::dealii::VectorOperation::values operation)
 {
   for (unsigned int i=0; i<n_blocks(); ++i)
-    block(i).compress ();
+    block(i).compress (operation);
 }
 
 
index eb39e8c5927ac9c3c402a47515856cf8ca87fc57..446aebe8b934eff524a35b0ed88e0baf6becbb80 100644 (file)
@@ -68,8 +68,8 @@ namespace internals
  * constraints is extensively described in the @ref constraints module. The
  * class is meant to deal with a limited number of constraints relative to the
  * total number of degrees of freedom, for example a few per cent up to maybe
- * 30 per cent; and with a linear combination of $M$ other degrees of freedom
- * where $M$ is also relatively small (no larger than at most around the
+ * 30 per cent; and with a linear combination of <i>M</i> other degrees of freedom
+ * where <i>M</i> is also relatively small (no larger than at most around the
  * average number of entries per row of a linear system). It is <em>not</em>
  * meant to describe full rank linear systems.
  *
@@ -82,18 +82,34 @@ namespace internals
  * <h3>Description of constraints</h3>
  *
  * Each "line" in objects of this class corresponds to one constrained degree
- * of freedom, with the number of the line being $i_1$, and the entries in
- * this line being pairs $(i_j,a_{i_j})$. Note that the constraints are linear
- * in the $x_i$, and that there might be a constant (non-homogeneous) term in
+ * of freedom, with the number of the line being <i>i</i>, entered by
+ * using add_line() or add_lines(). The entries in
+ * this line are pairs of the form
+ * (<i>j</i>,<i>a<sub>ij</sub></i>), which are added by add_entry() or
+ * add_entries(). The organization is essentially a
+ * SparsityPattern, but with only a few lines containing nonzero
+ * elements, and  therefore no data wasted on the others. For each
+ * line, which has been added by the mechanism above, an elimination
+ * of the constrained degree of freedom of the form
+ * @f[
+ *  x_i = \sum_j a_{ij} x_j + b_i
+ * @f]
+ * is performed, where <i>b<sub>i</sub></i> is optional and set by
+ * set_inhomogeneity(). Thus, if a constraint is formulated for
+ * instance as a zero mean value of several degrees of freedom, one of
+ * the degrees has to be chosen to be eliminated.
+ *
+ * Note that the constraints are linear
+ * in the <i>x<sub>i</sub></i>, and that there might be a constant (non-homogeneous) term in
  * the constraint. This is exactly the form we need for hanging node
  * constraints, where we need to constrain one degree of freedom in terms of
  * others. There are other conditions of this form possible, for example for
  * implementing mean value conditions as is done in the step-11
  * tutorial program. The name of the class stems from the fact that these
- * constraints can be represented in matrix form as $X x = b$, and this object
- * then describes the matrix $X$ (as well as, incidentally, the vector $b$ --
+ * constraints can be represented in matrix form as <b>X</b> <i>x</i> = <i>b</i>, and this object
+ * then describes the matrix <b>X</b> (and the vector <i>b</i>;
  * originally, the ConstraintMatrix class was only meant to handle homogenous
- * constraints where $b=0$, thus the name). The most frequent way to
+ * constraints where <i>b</i>=0, thus the name). The most frequent way to
  * create/fill objects of this type is using the
  * DoFTools::make_hanging_node_constraints() function. The use of these
  * objects is first explained in step-6.
@@ -264,8 +280,8 @@ class ConstraintMatrix : public Subscriptor
                                       *
                                       * This function essentially exists to
                                       * allow adding several constraints of
-                                      * the form $x_i=0$ all at once, where
-                                      * the set of indices $i$ for which these
+                                      * the form <i>x<sub>i</sub></i>=0 all at once, where
+                                      * the set of indices <i>i</i> for which these
                                       * constraints should be added are given
                                       * by the argument of this function. On
                                       * the other hand, just as if the
@@ -286,8 +302,8 @@ class ConstraintMatrix : public Subscriptor
                                       *
                                       * This function essentially exists to
                                       * allow adding several constraints of
-                                      * the form $x_i=0$ all at once, where
-                                      * the set of indices $i$ for which these
+                                      * the form <i>x<sub>i</sub></i>=0 all at once, where
+                                      * the set of indices <i>i</i> for which these
                                       * constraints should be added are given
                                       * by the argument of this function. On
                                       * the other hand, just as if the
@@ -308,8 +324,8 @@ class ConstraintMatrix : public Subscriptor
                                       *
                                       * This function essentially exists to
                                       * allow adding several constraints of
-                                      * the form $x_i=0$ all at once, where
-                                      * the set of indices $i$ for which these
+                                      * the form <i>x<sub>i</sub></i>=0 all at once, where
+                                      * the set of indices <i>i</i> for which these
                                       * constraints should be added are given
                                       * by the argument of this function. On
                                       * the other hand, just as if the
@@ -393,16 +409,16 @@ class ConstraintMatrix : public Subscriptor
                                       * This function also resolves chains
                                       * of constraints. For example, degree
                                       * of freedom 13 may be constrained to
-                                      * $u_{13}=u_3/2+u_7/2$ while degree of
+                                      * <i>u</i><sub>13</sub>=<i>u</i><sub>3</sub>/2+<i>u</i><sub>7</sub>/2 while degree of
                                       * freedom 7 is itself constrained as
-                                      * $u_7=u_2/2+u_4/2$. Then, the
+                                      * <i>u</i><sub>7</sub>=<i>u</i><sub>2</sub>/2+<i>u</i><sub>4</sub>/2. Then, the
                                       * resolution will be that
-                                      * $u_{13}=u_3/2+u_2/4+u_4/4$. Note,
+                                      * <i>u</i><sub>13</sub>=<i>u</i><sub>3</sub>/2+<i>u</i><sub>2</sub>/4+<i>u</i><sub>4</sub>/4. Note,
                                       * however, that cycles in this graph
                                       * of constraints are not allowed,
-                                      * i.e. for example $u_4$ may not be
+                                      * i.e. for example <i>u</i><sub>4</sub> may not be
                                       * constrained, directly or indirectly,
-                                      * to $u_{13}$ again.
+                                      * to <i>u</i><sub>13</sub> again.
                                       */
     void close ();
 
@@ -412,7 +428,7 @@ class ConstraintMatrix : public Subscriptor
                                       * the constraints represented by this
                                       * object. Both objects may or may not
                                       * be closed (by having their function
-                                      * @p close called before). If this
+                                      * close() called before). If this
                                       * object was closed before, then it
                                       * will be closed afterwards as
                                       * well. Note, however, that if the
@@ -443,7 +459,7 @@ class ConstraintMatrix : public Subscriptor
                                       *
                                       * This function is useful if you are
                                       * building block matrices, where all
-                                      * blocks are built by the same @p
+                                      * blocks are built by the same
                                       * DoFHandler object, i.e. the matrix
                                       * size is larger than the number of
                                       * degrees of freedom. Since several
@@ -451,7 +467,7 @@ class ConstraintMatrix : public Subscriptor
                                       * to the same degrees of freedom,
                                       * you'd generate several constraint
                                       * objects, then shift them, and
-                                      * finally @p merge them together
+                                      * finally merge() them together
                                       * again.
                                       */
     void shift (const unsigned int offset);
@@ -489,12 +505,12 @@ class ConstraintMatrix : public Subscriptor
                                       * with number @p index is a
                                       * constrained one.
                                       *
-                                      * Note that if @p close was called
+                                      * Note that if close() was called
                                       * before, then this function is
                                       * significantly faster, since then the
                                       * constrained degrees of freedom are
                                       * sorted and we can do a binary
-                                      * search, while before @p close was
+                                      * search, while before close() was
                                       * called, we have to perform a linear
                                       * search through all entries.
                                       */
@@ -527,7 +543,7 @@ class ConstraintMatrix : public Subscriptor
                                       * to. For example, in 2d a hanging
                                       * node is constrained only to its two
                                       * neighbors, so the returned value
-                                      * would be @p 2. However, for higher
+                                      * would be 2. However, for higher
                                       * order elements and/or higher
                                       * dimensions, or other types of
                                       * constraints, this number is no more
@@ -1384,7 +1400,7 @@ class ConstraintMatrix : public Subscriptor
                                       * any other type having the same
                                       * interface.
                                       *
-                                      * Note that if called with a @p
+                                      * Note that if called with a
                                       * TrilinosWrappers::MPI::Vector it may
                                       * not contain ghost elements.
                                       */
@@ -1566,11 +1582,12 @@ class ConstraintMatrix : public Subscriptor
                                       * A list of unsigned integers that
                                       * contains the position of the
                                       * ConstraintLine of a constrained degree
-                                      * of freedom, or @p
+                                      * of freedom, or
                                       * numbers::invalid_unsigned_int if the
                                       * degree of freedom is not
-                                      * constrained. The @p invalid_unsigned
-                                      * int return value returns thus whether
+                                      * constrained. The
+                                      * numbers::invalid_unsigned_int
+                                     * return value returns thus whether
                                       * there is a constraint line for a given
                                       * degree of freedom index. Note that
                                       * this class has no notion of how many
@@ -1737,7 +1754,7 @@ class ConstraintMatrix : public Subscriptor
                                       * Creates a list of affected rows for
                                       * distribution without any additional
                                       * information, otherwise similar to the
-                                      * other @p make_sorted_row_list
+                                      * other make_sorted_row_list()
                                       * function.
                                       */
     void
index ea3f98ab400a69d4ff8d9fe6d26f0c6ebee70319..970ee190aa8a440f6865023736fdda9b2a86d8e4 100644 (file)
@@ -1455,7 +1455,7 @@ namespace internals
                                      // check whether the
                                      // constraints are really empty.
     const unsigned int length = size();
-#ifdef DEBUG
+
                                      // make sure that we are in the
                                      // range of the vector
     AssertIndexRange (length, total_row_indices.size()+1);
@@ -1463,7 +1463,6 @@ namespace internals
       Assert (total_row_indices[i].constraint_position ==
               numbers::invalid_unsigned_int,
               ExcInternalError());
-#endif
 
     step = length/2;
     while (step > 0)
@@ -1757,25 +1756,20 @@ namespace internals
 
     AssertIndexRange (column_end-1, global_rows.size());
     const SparsityPattern & sparsity = sparse_matrix->get_sparsity_pattern();
-#ifndef DEBUG
+
     if (sparsity.n_nonzero_elements() == 0)
       return;
-#endif
+
     const std::size_t * row_start = sparsity.get_rowstart_indices();
     const unsigned int * sparsity_struct = sparsity.get_column_numbers();
 
     const unsigned int row = global_rows.global_row(i);
     const unsigned int loc_row = global_rows.local_row(i);
 
-#ifdef DEBUG
-    const unsigned int * col_ptr = sparsity.n_nonzero_elements() == 0 ? 0 :
+    const unsigned int * col_ptr = sparsity.row_length(row) == 0 ? 0 :
                                    &sparsity_struct[row_start[row]];
-    number * val_ptr = sparsity.n_nonzero_elements() == 0 ? 0 :
+    number * val_ptr = sparsity.row_length(row) == 0 ? 0 :
                        &sparse_matrix->global_entry (row_start[row]);
-#else
-    const unsigned int * col_ptr = &sparsity_struct[row_start[row]];
-    number * val_ptr = &sparse_matrix->global_entry (row_start[row]);
-#endif
     const bool optimize_diagonal = sparsity.optimize_diagonal();
     unsigned int counter = optimize_diagonal;
 
index 6e33ecc93a4854de2ba447be5d86c5c2302fc9bc..eab4bd0d8d0131355a388978b7f8fbe88d874e9a 100644 (file)
@@ -290,7 +290,7 @@ class FullMatrix : public Table<2,number>
                                       * FullMatrix<double> M(IdentityMatrix(n));
                                       * @endverbatim
                                       */
-    explicit FullMatrix (const IdentityMatrix &id);
+    FullMatrix (const IdentityMatrix &id);
     /**
      * @}
      */
@@ -921,10 +921,12 @@ class FullMatrix : public Table<2,number>
                const unsigned int src_offset_j = 0);
 
                                      /**
-                                      * Adda single element at the
+                                      * Add a single element at the
                                       * given position.
                                       */
-    void add(const unsigned int row, const unsigned int column, const number value);
+    void add (const unsigned int row,
+             const unsigned int column,
+             const number value);
 
                                        /**
                                         * Add an array of values given by
index 6ec578dd756df7d7620334366505a90f1698f3fc..77b7b2672e4d3b22e3dc8628cb5afc126699b583 100644 (file)
@@ -397,7 +397,7 @@ void FullMatrix<number>::add_row (const unsigned int i,
   Assert (!this->empty(), ExcEmptyMatrix());
 
   const unsigned int size_m = m();
-  for (unsigned l=0; l<size_m; ++l)
+  for (unsigned int l=0; l<size_m; ++l)
     (*this)(i,l) += s*(*this)(j,l) + t*(*this)(k,l);
 }
 
index 2ae2dc5dfc90efd929ea8af1762cc3015581857e..e28dbc101fdf0ef87806ee20135d3af0c51b964d 100644 (file)
@@ -285,25 +285,17 @@ namespace parallel
                                          /**
                                           * This function copies the data that has
                                           * accumulated in the data buffer for ghost
-                                          * indices to the owning processor. If the
-                                          * optional argument @p add_ghost_data is set
-                                          * to true, the data is added into the
-                                          * respective positions of the owning
-                                          * processor, otherwise the new data
-                                          * overwrites the old content in the host
-                                          * vector. In that case, data coming from
-                                          * different processor to the same target
-                                          * entry should be identical. However, no
-                                          * checking is performed, so it is the user's
-                                          * responsibility to ensure consistency of
-                                          * data.
+                                          * indices to the owning processor. 
                                           *
-                                          * For the meaning of this argument, see the
-                                          * entry on
-                                          * @ref GlossCompress "Compressing distributed vectors and matrices"
+                                          * For the meaning of this argument,
+                                          * see the entry on @ref
+                                          * GlossCompress "Compressing
+                                          * distributed vectors and matrices"
                                           * in the glossary.
                                           */
-        void compress (const bool add_ghost_data = true);
+       void compress (::dealii::VectorOperation::values operation
+                      =::dealii::VectorOperation::unknown);
+
 
                                          /**
                                           * Fills the data field for ghost indices with
@@ -1137,10 +1129,13 @@ namespace parallel
     template <typename Number>
     inline
     void
-    Vector<Number>::compress (const bool add_ghost_data)
+    Vector<Number>::compress (::dealii::VectorOperation::values operation)
     {
       compress_start ();
-      compress_finish (add_ghost_data);
+      if (operation == ::dealii::VectorOperation::insert)
+       compress_finish (false);
+      else
+       compress_finish (true);
     }
 
 
index 727eee8567714bf134be7d103c10e6c6bd9fa7ed..03d6f676ba901902ce4d4ba6884a96a4e867bc43 100644 (file)
@@ -20,6 +20,7 @@
 #  include <deal.II/base/subscriptor.h>
 #  include <deal.II/lac/full_matrix.h>
 #  include <deal.II/lac/exceptions.h>
+#  include <deal.II/lac/vector.h>
 
 #  include <petscmat.h>
 #  include <deal.II/base/std_cxx1x/shared_ptr.h>
@@ -671,8 +672,8 @@ namespace PETScWrappers
                                         * for more information.
                                         * more information.
                                         */
-      void compress ();
-
+      void compress (::dealii::VectorOperation::values operation
+                    =::dealii::VectorOperation::unknown);
                                        /**
                                         * Return the value of the entry
                                         * (<i>i,j</i>).  This may be an
@@ -837,6 +838,72 @@ namespace PETScWrappers
                                         */
       PetscReal frobenius_norm () const;
 
+
+                                       /**
+                                        * Return the square of the norm
+                                        * of the vector $v$ with respect
+                                        * to the norm induced by this
+                                        * matrix,
+                                        * i.e. $\left(v,Mv\right)$. This
+                                        * is useful, e.g. in the finite
+                                        * element context, where the
+                                        * $L_2$ norm of a function
+                                        * equals the matrix norm with
+                                        * respect to the mass matrix of
+                                        * the vector representing the
+                                        * nodal values of the finite
+                                        * element function.
+                                        *
+                                        * Obviously, the matrix needs to
+                                        * be quadratic for this operation.
+                                        *
+                                        * The implementation of this function
+                                        * is not as efficient as the one in
+                                        * the @p MatrixBase class used in
+                                        * deal.II (i.e. the original one, not
+                                        * the PETSc wrapper class) since PETSc
+                                        * doesn't support this operation and
+                                        * needs a temporary vector.
+                                        *
+                                        * Note that if the current object
+                                        * represents a parallel distributed
+                                        * matrix (of type
+                                        * PETScWrappers::MPI::SparseMatrix),
+                                        * then the given vector has to be
+                                        * a distributed vector as
+                                        * well. Conversely, if the matrix is
+                                        * not distributed, then neither
+                                        * may the vector be.
+                                        */
+      PetscScalar matrix_norm_square (const VectorBase &v) const;
+
+
+                                       /**
+                                        * Compute the matrix scalar
+                                        * product $\left(u,Mv\right)$.
+                                        *
+                                        * The implementation of this function
+                                        * is not as efficient as the one in
+                                        * the @p MatrixBase class used in
+                                        * deal.II (i.e. the original one, not
+                                        * the PETSc wrapper class) since PETSc
+                                        * doesn't support this operation and
+                                        * needs a temporary vector.
+                                        *
+                                        * Note that if the current object
+                                        * represents a parallel distributed
+                                        * matrix (of type
+                                        * PETScWrappers::MPI::SparseMatrix),
+                                        * then both vectors have to be
+                                        * distributed vectors as
+                                        * well. Conversely, if the matrix is
+                                        * not distributed, then neither of the
+                                        * vectors may be.
+                                        */
+      PetscScalar matrix_scalar_product (const VectorBase &u,
+                                        const VectorBase &v) const;
+
+
 #if DEAL_II_PETSC_VERSION_GTE(3,1,0)
                                        /**
                                         * Return the trace of the
@@ -1053,7 +1120,6 @@ namespace PETScWrappers
 #endif
         is_symmetric (const double tolerance = 1.e-12);
 
-#if DEAL_II_PETSC_VERSION_GTE(2,3,0)
                                         /**
                                          * Test whether a matrix is
                                          * Hermitian, i.e. it is the
@@ -1069,9 +1135,8 @@ namespace PETScWrappers
         PetscBool
 #endif
         is_hermitian (const double tolerance = 1.e-12);
-#endif
 
-                                        /*
+                                        /**
                                          * Abstract PETSc object that helps view
                                          * in ASCII other PETSc objects. Currently
                                          * this function simply writes non-zero
index d7f40bfbcf83e679655f2c73e73b32096546bfc6..df431183bd0e040d7cd3eabf94f12c8caeac8828 100644 (file)
@@ -543,7 +543,7 @@ namespace PETScWrappers
       for (unsigned int i=0; i<v.size(); ++i)
         (*this)(i) = v(i);
 
-      compress ();
+      compress (::dealii::VectorOperation::insert);
 
       return *this;
     }
index 3c00e1ed95f6cafcf004bbc1ed34c76477c8393a..984ea7b6b5ebd18c7e2818a4bf38671d9144b326 100644 (file)
@@ -270,12 +270,6 @@ namespace PETScWrappers
                                             */
           ~SolverData ();
 
-#if (PETSC_VERSION_MAJOR == 2) && (PETSC_VERSION_MINOR < 2)
-                                           /**
-                                            * A PETSc solver object.
-                                            */
-          SLES sles;
-#endif
                                            /**
                                             * Objects for Krylov subspace
                                             * solvers and preconditioners.
@@ -1148,6 +1142,91 @@ namespace PETScWrappers
       virtual void set_solver_type (KSP &ksp) const;
   };
 
+/**
+ * An implementation of the solver interface using the MUMPS lu solver 
+ * through PETSc.
+ *
+ * @ingroup PETScWrappers
+ * @author Daniel Brauss, 2012
+ */
+  class SparseDirectMUMPS : public SolverBase
+  {
+    public:
+                               /**
+                                * Standardized data structure
+                                * to pipe additional data to 
+                                * the solver.
+                                */
+      struct AdditionalData
+      {};
+                               /**
+                                * constructor
+                                */
+      SparseDirectMUMPS (SolverControl        &cn,
+                         const MPI_Comm       &mpi_communicator = PETSC_COMM_SELF,
+                         const AdditionalData &data = AdditionalData());
+
+                               /**
+                                * the method to solve the 
+                                * linear system. SolverBase has a method
+                                * with this name already. However, the
+                                * different function calls and objects used here 
+                                * were not easily incorporated
+                                */
+      void solve (const MatrixBase &A,
+                  VectorBase       &x,
+                  const VectorBase &b);
+
+    protected:
+                               /**
+                                * Store a copy of flags for this
+                                * particular solver.
+                                */
+      const AdditionalData additional_data;
+
+      virtual void set_solver_type (KSP &ksp) const;
+
+    private:
+                               /**
+                                * A function that is used in PETSc 
+                                * as a callback to check convergence.
+                                * It takes the information provided
+                                * from PETSc and checks it against
+                                * deal.II's own SolverControl objects
+                                * to see if convergence has been reached.
+                                */
+      static
+#ifdef PETSC_USE_64BIT_INDICES
+      PetscErrorCode
+#else
+      int
+#endif
+      convergence_test (KSP                   ksp,
+#ifdef PETSC_USE_64BIT_INDICES
+                        const PetscInt     iteration,
+#else
+                        const int          iteration,
+#endif
+                        const PetscReal    residual_norm,
+                        KSPConvergedReason *reason,
+                        void               *solver_control);
+                               /**
+                                * A structure that contains the 
+                                * PETSc solver and preconditioner
+                                * objects.  Since the solve member
+                                * function in the base is not used
+                                * here, the private SolverData struct
+                                * located in the base could not be used 
+                                * either
+                                */
+      struct SolverDataMUMPS
+      {
+           KSP ksp;
+           PC  pc;
+      };
+
+      std_cxx1x::shared_ptr<SolverDataMUMPS> solver_data;
+  };
 }
 
 DEAL_II_NAMESPACE_CLOSE
index 5c34f2bd0ad71a00339538e5ac9cbcb6ea1c10de..cdee29885419ff88a80f0bd5a3780cc4b7194ac8 100644 (file)
@@ -399,7 +399,7 @@ namespace PETScWrappers
     for (unsigned int i=0; i<v.size(); ++i)
       (*this)(i) = v(i);
 
-    compress ();
+    compress (::dealii::VectorOperation::insert);
 
     return *this;
   }
index a5df5e3d60b4e5710ec9af748dbc466dbb28b2bb..c897e523feeb4f49476ca68a09806456b711fa94 100644 (file)
@@ -19,6 +19,7 @@
 
 #  include <deal.II/base/subscriptor.h>
 #  include <deal.II/lac/exceptions.h>
+#  include <deal.II/lac/vector.h>
 
 #  include <vector>
 #  include <utility>
@@ -294,9 +295,9 @@ namespace PETScWrappers
                                         *
                                         * See @ref GlossCompress "Compressing distributed objects"
                                         * for more information.
-                                        * more information.
                                         */
-      void compress ();
+      void compress (::dealii::VectorOperation::values operation
+                    =::dealii::VectorOperation::unknown);
 
                                        /**
                                         * Set all components of the vector to
@@ -564,7 +565,7 @@ namespace PETScWrappers
                                         * collective piecewise
                                         * multiply operation of
                                         * <code>this</code> vector
-                                        * with \f$v\f$.
+                                        * with <b>v</b>.
                                         */
       VectorBase & mult (const VectorBase &v);
 
@@ -572,7 +573,7 @@ namespace PETScWrappers
                                         * Same as above, but a
                                         * collective piecewise
                                         * multiply operation of
-                                        * \f$u\f$ with \f$v\f$.
+                                        * <b>u</b> with <b>v</b>.
                                         */
       VectorBase & mult (const VectorBase &u,
                         const VectorBase &v);
@@ -823,33 +824,6 @@ namespace PETScWrappers
                                         */
       IndexSet ghost_indices;
 
-                                       /**
-                                        * PETSc doesn't allow to mix additions
-                                        * to matrix entries and overwriting
-                                        * them (to make synchronisation of
-                                        * parallel computations
-                                        * simpler). Since the interface of the
-                                        * existing classes don't support the
-                                        * notion of not interleaving things,
-                                        * we have to emulate this
-                                        * ourselves. The way we do it is to,
-                                        * for each access operation, store
-                                        * whether it is an insertion or an
-                                        * addition. If the previous one was of
-                                        * different type, then we first have
-                                        * to flush the PETSc buffers;
-                                        * otherwise, we can simply go on.
-                                        *
-                                        * The following structure and variable
-                                        * declare and store the previous
-                                        * state.
-                                        */
-      struct LastAction
-      {
-          enum Values { none, insert, add };
-      };
-
-
                                        /**
                                         * Store whether the last action was a
                                         * write or add operation. This
@@ -858,7 +832,7 @@ namespace PETScWrappers
                                         * even though the vector object they
                                         * refer to is constant.
                                         */
-      mutable LastAction::Values last_action;
+      mutable ::dealii::VectorOperation::values last_action;
 
                                        /**
                                         * Make the reference class a friend.
@@ -954,10 +928,10 @@ namespace PETScWrappers
     const VectorReference &
     VectorReference::operator = (const PetscScalar &value) const
     {
-      Assert ((vector.last_action == VectorBase::LastAction::insert)
+      Assert ((vector.last_action == VectorOperation::insert)
               ||
-              (vector.last_action == VectorBase::LastAction::none),
-              ExcWrongMode (VectorBase::LastAction::insert,
+              (vector.last_action == VectorOperation::unknown),
+              ExcWrongMode (VectorOperation::insert,
                             vector.last_action));
 
 #ifdef PETSC_USE_64BIT_INDICES
@@ -970,7 +944,7 @@ namespace PETScWrappers
         = VecSetValues (vector, 1, &petsc_i, &value, INSERT_VALUES);
       AssertThrow (ierr == 0, ExcPETScError(ierr));
 
-      vector.last_action = VectorBase::LastAction::insert;
+      vector.last_action = VectorOperation::insert;
 
       return *this;
     }
@@ -981,13 +955,13 @@ namespace PETScWrappers
     const VectorReference &
     VectorReference::operator += (const PetscScalar &value) const
     {
-      Assert ((vector.last_action == VectorBase::LastAction::add)
+      Assert ((vector.last_action == VectorOperation::add)
               ||
-              (vector.last_action == VectorBase::LastAction::none),
-              ExcWrongMode (VectorBase::LastAction::add,
+              (vector.last_action == VectorOperation::unknown),
+              ExcWrongMode (VectorOperation::add,
                             vector.last_action));
 
-      vector.last_action = VectorBase::LastAction::add;
+      vector.last_action = VectorOperation::add;
 
                                        // we have to do above actions in any
                                        // case to be consistent with the MPI
@@ -1019,13 +993,13 @@ namespace PETScWrappers
     const VectorReference &
     VectorReference::operator -= (const PetscScalar &value) const
     {
-      Assert ((vector.last_action == VectorBase::LastAction::add)
+      Assert ((vector.last_action == VectorOperation::add)
               ||
-              (vector.last_action == VectorBase::LastAction::none),
-              ExcWrongMode (VectorBase::LastAction::add,
+              (vector.last_action == VectorOperation::unknown),
+              ExcWrongMode (VectorOperation::add,
                             vector.last_action));
 
-      vector.last_action = VectorBase::LastAction::add;
+      vector.last_action = VectorOperation::add;
 
                                        // we have to do above actions in any
                                        // case to be consistent with the MPI
@@ -1058,13 +1032,13 @@ namespace PETScWrappers
     const VectorReference &
     VectorReference::operator *= (const PetscScalar &value) const
     {
-      Assert ((vector.last_action == VectorBase::LastAction::insert)
+      Assert ((vector.last_action == VectorOperation::insert)
               ||
-              (vector.last_action == VectorBase::LastAction::none),
-              ExcWrongMode (VectorBase::LastAction::insert,
+              (vector.last_action == VectorOperation::unknown),
+              ExcWrongMode (VectorOperation::insert,
                             vector.last_action));
 
-      vector.last_action = VectorBase::LastAction::insert;
+      vector.last_action = VectorOperation::insert;
 
                                        // we have to do above actions in any
                                        // case to be consistent with the MPI
@@ -1098,13 +1072,13 @@ namespace PETScWrappers
     const VectorReference &
     VectorReference::operator /= (const PetscScalar &value) const
     {
-      Assert ((vector.last_action == VectorBase::LastAction::insert)
+      Assert ((vector.last_action == VectorOperation::insert)
               ||
-              (vector.last_action == VectorBase::LastAction::none),
-              ExcWrongMode (VectorBase::LastAction::insert,
+              (vector.last_action == VectorOperation::unknown),
+              ExcWrongMode (VectorOperation::insert,
                             vector.last_action));
 
-      vector.last_action = VectorBase::LastAction::insert;
+      vector.last_action = VectorOperation::insert;
 
                                        // we have to do above actions in any
                                        // case to be consistent with the MPI
index 3e2771741c7ac6e122201e5435feda7b74a913ee..a4c97a8bc1b28459f4ff8f1fe5143b0bd928a867 100644 (file)
@@ -561,23 +561,6 @@ void PreconditionBlockJacobi<MATRIX,inverse_type>
             const Vector<number2> &src,
             bool adding) const
 {
-                                   // introduce the following typedef
-                                   // since in the use of exceptions,
-                                   // strict C++ requires us to
-                                   // specify them fully as they are
-                                   // from a template dependent base
-                                   // class. thus, we'd have to write
-                                   // PreconditionBlock<number,inverse_type>::ExcNoMatrixGivenToUse,
-                                   // which is lengthy, but also poses
-                                   // some problems to the
-                                   // preprocessor due to the comma in
-                                   // the template arg list. we could
-                                   // then wrap the whole thing into
-                                   // parentheses, but that creates a
-                                   // parse error for gcc for the
-                                   // exceptions that do not take
-                                   // args...
-  typedef PreconditionBlock<MATRIX,inverse_type> BaseClass;
   Assert(this->A!=0, ExcNotInitialized());
 
   const MATRIX &M=*this->A;
@@ -741,24 +724,6 @@ void PreconditionBlockSOR<MATRIX,inverse_type>::forward (
   const bool transpose_diagonal,
   const bool) const
 {
-                                   // introduce the following typedef
-                                   // since in the use of exceptions,
-                                   // strict C++ requires us to
-                                   // specify them fully as they are
-                                   // from a template dependent base
-                                   // class. thus, we'd have to write
-                                   // PreconditionBlock<number,inverse_type>::ExcNoMatrixGivenToUse,
-                                   // which is lengthy, but also poses
-                                   // some problems to the
-                                   // preprocessor due to the comma in
-                                   // the template arg list. we could
-                                   // then wrap the whole thing into
-                                   // parentheses, but that creates a
-                                   // parse error for gcc for the
-                                   // exceptions that do not take
-                                   // args...
-  typedef PreconditionBlock<MATRIX,inverse_type> BaseClass;
-
   Assert (this->A!=0, ExcNotInitialized());
 
   const MATRIX &M=*this->A;
@@ -849,24 +814,6 @@ void PreconditionBlockSOR<MATRIX,inverse_type>::backward (
   const bool transpose_diagonal,
   const bool) const
 {
-                                   // introduce the following typedef
-                                   // since in the use of exceptions,
-                                   // strict C++ requires us to
-                                   // specify them fully as they are
-                                   // from a template dependent base
-                                   // class. thus, we'd have to write
-                                   // PreconditionBlock<number,inverse_type>::ExcNoMatrixGivenToUse,
-                                   // which is lengthy, but also poses
-                                   // some problems to the
-                                   // preprocessor due to the comma in
-                                   // the template arg list. we could
-                                   // then wrap the whole thing into
-                                   // parentheses, but that creates a
-                                   // parse error for gcc for the
-                                   // exceptions that do not take
-                                   // args...
-  typedef PreconditionBlock<MATRIX,inverse_type> BaseClass;
-
   Assert (this->A!=0, ExcNotInitialized());
 
   const MATRIX &M=*this->A;
index a0d9531ac2679bd47d2754ecdb99fd28445e9f60..4434860f5d771a1afc2546e8c4b6bdc41f320bc6 100644 (file)
@@ -254,6 +254,15 @@ namespace SparsityTools
                   int,
                   << "The number of partitions you gave is " << arg1
                   << ", but must be greater than zero.");
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException1 (ExcMETISError,
+                 int,
+                 << "    An error with error number " << arg1
+                 << " occurred while calling a METIS function");
+
                                    /**
                                     * Exception
                                     */
index b512c5517cf65e165140b70e912dad40c9c09fb9..857ef2027a3efa75284c66f76cd16d10c577dbf8 100644 (file)
@@ -294,7 +294,7 @@ class TridiagonalMatrix
                                       * compute_eigenvalues(), you can
                                       * access each eigenvalue here.
                                       */
-    number eigenvalue(const unsigned i) const;
+    number eigenvalue(const unsigned int i) const;
 //@}
 ///@name Miscellanea
 //@{
index 20034ccfc487c7fb160b7327d7e4b5d71a5b8eab..767c2082a479afe4fa6a680ec37e437fd310e2b1 100644 (file)
@@ -246,20 +246,6 @@ namespace TrilinosWrappers
       void reinit (const ::dealii::BlockSparseMatrix<double> &deal_ii_sparse_matrix,
                    const double                               drop_tolerance=1e-13);
 
-                                       /**
-                                        * This function calls the compress()
-                                        * command of all matrices after
-                                        * the assembly is
-                                        * completed. Note that all MPI
-                                        * processes need to call this
-                                        * command (whereas the individual
-                                        * assembly routines will most probably
-                                        * only be called on each processor
-                                        * individually) before any
-                                        * can complete it.
-                                        */
-      void compress ();
-
                                        /**
                                         * Returns the state of the
                                         * matrix, i.e., whether
index 9ad16d347a748f724d1e9658651cb67bd4224fa0..a5c22e2d03c70406013af7f0bd9a70725cbf3b2c 100644 (file)
@@ -18,6 +18,7 @@
 #ifdef DEAL_II_USE_TRILINOS
 
 #  include <deal.II/lac/trilinos_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #  include <deal.II/lac/block_indices.h>
 #  include <deal.II/lac/block_vector_base.h>
 #  include <deal.II/lac/exceptions.h>
@@ -42,489 +43,6 @@ namespace TrilinosWrappers
   class BlockSparseMatrix;
 
 
-  namespace MPI
-  {
-/**
- * An implementation of block vectors based on the vector class
- * implemented in TrilinosWrappers. While the base class provides for
- * most of the interface, this class handles the actual allocation of
- * vectors and provides functions that are specific to the underlying
- * vector type.
- *
- * The model of distribution of data is such that each of the blocks
- * is distributed across all MPI processes named in the MPI
- * communicator. I.e. we don't just distribute the whole vector, but
- * each component. In the constructors and reinit() functions, one
- * therefore not only has to specify the sizes of the individual
- * blocks, but also the number of elements of each of these blocks to
- * be stored on the local process.
- *
- * @ingroup Vectors
- * @ingroup TrilinosWrappers
- * @see @ref GlossBlockLA "Block (linear algebra)"
- * @author Martin Kronbichler, Wolfgang Bangerth, 2008, 2009
- */
-    class BlockVector : public BlockVectorBase<Vector>
-    {
-      public:
-                                       /**
-                                        * Typedef the base class for simpler
-                                        * access to its own typedefs.
-                                        */
-        typedef BlockVectorBase<Vector> BaseClass;
-
-                                       /**
-                                        * Typedef the type of the underlying
-                                        * vector.
-                                        */
-        typedef BaseClass::BlockType  BlockType;
-
-                                       /**
-                                        * Import the typedefs from the base
-                                        * class.
-                                        */
-        typedef BaseClass::value_type      value_type;
-        typedef BaseClass::pointer         pointer;
-        typedef BaseClass::const_pointer   const_pointer;
-        typedef BaseClass::reference       reference;
-        typedef BaseClass::const_reference const_reference;
-        typedef BaseClass::size_type       size_type;
-        typedef BaseClass::iterator        iterator;
-        typedef BaseClass::const_iterator  const_iterator;
-
-                                       /**
-                                        * Default constructor. Generate an
-                                        * empty vector without any blocks.
-                                        */
-        BlockVector ();
-
-                                       /**
-                                        * Constructor. Generate a block
-                                        * vector with as many blocks as
-                                        * there are entries in @p
-                                        * partitioning. Each Epetra_Map
-                                        * contains the layout of the
-                                        * distribution of data among the MPI
-                                        * processes.
-                                        */
-        BlockVector (const std::vector<Epetra_Map> &parallel_partitioning);
-
-                                       /**
-                                        * Constructor. Generate a block
-                                        * vector with as many blocks as
-                                        * there are entries in
-                                        * @p partitioning.  Each IndexSet
-                                        * together with the MPI communicator
-                                        * contains the layout of the
-                                        * distribution of data among the MPI
-                                        * processes.
-                                        */
-        BlockVector (const std::vector<IndexSet> &parallel_partitioning,
-                     const MPI_Comm              &communicator = MPI_COMM_WORLD);
-
-                                       /**
-                                        * Copy-Constructor. Set all the
-                                        * properties of the parallel vector
-                                        * to those of the given argument and
-                                        * copy the elements.
-                                        */
-        BlockVector (const BlockVector  &V);
-
-                                       /**
-                                        * Creates a block vector
-                                        * consisting of
-                                        * <tt>num_blocks</tt>
-                                        * components, but there is no
-                                        * content in the individual
-                                        * components and the user has to
-                                        * fill appropriate data using a
-                                        * reinit of the blocks.
-                                        */
-        BlockVector (const unsigned int num_blocks);
-
-                                       /**
-                                        * Destructor. Clears memory
-                                        */
-        ~BlockVector ();
-
-                                       /**
-                                        * Copy operator: fill all
-                                        * components of the vector that
-                                        * are locally stored with the
-                                        * given scalar value.
-                                        */
-        BlockVector &
-          operator = (const value_type s);
-
-                                       /**
-                                        * Copy operator for arguments of
-                                        * the same type.
-                                        */
-        BlockVector &
-          operator = (const BlockVector &V);
-
-                                       /**
-                                        * Copy operator for arguments of
-                                        * the localized Trilinos vector
-                                        * type.
-                                        */
-        BlockVector &
-          operator = (const ::dealii::TrilinosWrappers::BlockVector &V);
-
-                                       /**
-                                        * Another copy function. This
-                                        * one takes a deal.II block
-                                        * vector and copies it into a
-                                        * TrilinosWrappers block
-                                        * vector. Note that the number
-                                        * of blocks has to be the same
-                                        * in the vector as in the input
-                                        * vector. Use the reinit()
-                                        * command for resizing the
-                                        * BlockVector or for changing
-                                        * the internal structure of the
-                                        * block components.
-                                        *
-                                        * Since Trilinos only works on
-                                        * doubles, this function is
-                                        * limited to accept only one
-                                        * possible number type in the
-                                        * deal.II vector.
-                                        */
-        template <typename Number>
-        BlockVector &
-          operator = (const ::dealii::BlockVector<Number> &V);
-
-                                         /**
-                                          * Reinitialize the BlockVector to
-                                          * contain as many blocks as there
-                                          * are Epetra_Maps given in the input
-                                          * argument, according to the
-                                          * parallel distribution of the
-                                          * individual components described
-                                          * in the maps.
-                                          *
-                                          * If <tt>fast==false</tt>, the vector
-                                          * is filled with zeros.
-                                          */
-        void reinit (const std::vector<Epetra_Map> &parallel_partitioning,
-                     const bool                     fast = false);
-
-                                         /**
-                                          * Reinitialize the BlockVector to
-                                          * contain as many blocks as there
-                                          * are index sets given in the input
-                                          * argument, according to the
-                                          * parallel distribution of the
-                                          * individual components described
-                                          * in the maps.
-                                          *
-                                          * If <tt>fast==false</tt>, the vector
-                                          * is filled with zeros.
-                                          */
-        void reinit (const std::vector<IndexSet> &parallel_partitioning,
-                     const MPI_Comm              &communicator = MPI_COMM_WORLD,
-                     const bool                   fast = false);
-
-                                         /**
-                                          * Change the dimension to that
-                                          * of the vector <tt>V</tt>. The same
-                                          * applies as for the other
-                                          * reinit() function.
-                                          *
-                                          * The elements of <tt>V</tt> are not
-                                          * copied, i.e.  this function is
-                                          * the same as calling <tt>reinit
-                                          * (V.size(), fast)</tt>.
-                                          *
-                                          * Note that you must call this
-                                          * (or the other reinit()
-                                          * functions) function, rather
-                                          * than calling the reinit()
-                                          * functions of an individual
-                                          * block, to allow the block
-                                          * vector to update its caches of
-                                          * vector sizes. If you call
-                                          * reinit() on one of the
-                                          * blocks, then subsequent
-                                          * actions on this object may
-                                          * yield unpredictable results
-                                          * since they may be routed to
-                                          * the wrong block.
-                                          */
-        void reinit (const BlockVector &V,
-                     const bool fast = false);
-
-                                         /**
-                                          * Change the number of blocks to
-                                          * <tt>num_blocks</tt>. The individual
-                                          * blocks will get initialized with
-                                          * zero size, so it is assumed that
-                                          * the user resizes the
-                                          * individual blocks by herself
-                                          * in an appropriate way, and
-                                          * calls <tt>collect_sizes</tt>
-                                          * afterwards.
-                                          */
-        void reinit (const unsigned int num_blocks);
-
-                                         /**
-                                          * This reinit function is meant to
-                                          * be used for parallel
-                                          * calculations where some
-                                          * non-local data has to be
-                                          * used. The typical situation
-                                          * where one needs this function is
-                                          * the call of the
-                                          * FEValues<dim>::get_function_values
-                                          * function (or of some
-                                          * derivatives) in parallel. Since
-                                          * it is usually faster to retrieve
-                                          * the data in advance, this
-                                          * function can be called before
-                                          * the assembly forks out to the
-                                          * different processors. What this
-                                          * function does is the following:
-                                          * It takes the information in the
-                                          * columns of the given matrix and
-                                          * looks which data couples between
-                                          * the different processors. That
-                                          * data is then queried from the
-                                          * input vector. Note that you
-                                          * should not write to the
-                                          * resulting vector any more, since
-                                          * the some data can be stored
-                                          * several times on different
-                                          * processors, leading to
-                                          * unpredictable results. In
-                                          * particular, such a vector cannot
-                                          * be used for matrix-vector
-                                          * products as for example done
-                                          * during the solution of linear
-                                          * systems.
-                                          */
-        void import_nonlocal_data_for_fe (const TrilinosWrappers::BlockSparseMatrix &m,
-                                          const BlockVector                         &v);
-
-                                         /**
-                                          * Compress the underlying
-                                          * representation of the Trilinos
-                                          * object, i.e. flush the buffers
-                                          * of the vector object if it has
-                                          * any. This function is
-                                          * necessary after writing into a
-                                          * vector element-by-element and
-                                          * before anything else can be
-                                          * done on it.
-                                          *
-                                          * The (defaulted) argument can
-                                          * be used to specify the
-                                          * compress mode
-                                          * (<code>Add</code> or
-                                          * <code>Insert</code>) in case
-                                          * the vector has not been
-                                          * written to since the last
-                                          * time this function was
-                                          * called. The argument is
-                                          * ignored if the vector has
-                                          * been added or written to
-                                          * since the last time
-                                          * compress() was called.
-                                          *
-                                          * See @ref GlossCompress "Compressing distributed objects"
-                                          * for more information.
-                                          * more information.
-                                          */
-        void compress (const Epetra_CombineMode last_action = Zero);
-
-                                         /**
-                                          * Returns the state of the
-                                          * vector, i.e., whether
-                                          * compress() needs to be
-                                          * called after an operation
-                                          * requiring data
-                                          * exchange. Does only return
-                                          * non-true values when used in
-                                          * <tt>debug</tt> mode, since
-                                          * it is quite expensive to
-                                          * keep track of all operations
-                                          * that lead to the need for
-                                          * compress().
-                                          */
-        bool is_compressed () const;
-
-                                         /**
-                                          * Swap the contents of this
-                                          * vector and the other vector
-                                          * <tt>v</tt>. One could do this
-                                          * operation with a temporary
-                                          * variable and copying over the
-                                          * data elements, but this
-                                          * function is significantly more
-                                          * efficient since it only swaps
-                                          * the pointers to the data of
-                                          * the two vectors and therefore
-                                          * does not need to allocate
-                                          * temporary storage and move
-                                          * data around.
-                                          *
-                                          * Limitation: right now this
-                                          * function only works if both
-                                          * vectors have the same number
-                                          * of blocks. If needed, the
-                                          * numbers of blocks should be
-                                          * exchanged, too.
-                                          *
-                                          * This function is analog to the
-                                          * the swap() function of all C++
-                                          * standard containers. Also,
-                                          * there is a global function
-                                          * swap(u,v) that simply calls
-                                          * <tt>u.swap(v)</tt>, again in analogy
-                                          * to standard functions.
-                                          */
-        void swap (BlockVector &v);
-
-                                     /**
-                                      * Print to a stream.
-                                      */
-        void print (std::ostream       &out,
-                    const unsigned int  precision = 3,
-                    const bool          scientific = true,
-                    const bool          across = true) const;
-
-                                         /**
-                                          * Exception
-                                          */
-        DeclException0 (ExcIteratorRangeDoesNotMatchVectorSize);
-
-                                         /**
-                                          * Exception
-                                          */
-        DeclException0 (ExcNonMatchingBlockVectors);
-    };
-
-
-
-/*----------------------- Inline functions ----------------------------------*/
-
-
-    inline
-    BlockVector::BlockVector ()
-    {}
-
-
-
-    inline
-    BlockVector::BlockVector (const std::vector<Epetra_Map> &parallel_partitioning)
-    {
-      reinit (parallel_partitioning, false);
-    }
-
-
-
-    inline
-    BlockVector::BlockVector (const std::vector<IndexSet> &parallel_partitioning,
-                              const MPI_Comm              &communicator)
-    {
-      reinit (parallel_partitioning, communicator, false);
-    }
-
-
-
-    inline
-    BlockVector::BlockVector (const unsigned int num_blocks)
-    {
-      reinit (num_blocks);
-    }
-
-
-
-    inline
-    BlockVector::BlockVector (const BlockVector& v)
-                    :
-                    BlockVectorBase<Vector > ()
-    {
-      this->components.resize (v.n_blocks());
-      this->block_indices = v.block_indices;
-
-      for (unsigned int i=0; i<this->n_blocks(); ++i)
-        this->components[i] = v.components[i];
-    }
-
-
-
-    inline
-    bool
-    BlockVector::is_compressed () const
-    {
-      bool compressed = true;
-      for (unsigned int row=0; row<n_blocks(); ++row)
-        if (block(row).is_compressed() == false)
-          {
-            compressed = false;
-            break;
-          }
-
-      return compressed;
-    }
-
-
-
-    template <typename Number>
-    BlockVector &
-    BlockVector::operator = (const ::dealii::BlockVector<Number> &v)
-    {
-      if (n_blocks() != v.n_blocks())
-        {
-          std::vector<unsigned int> block_sizes (v.n_blocks(), 0);
-          block_indices.reinit (block_sizes);
-          if (components.size() != n_blocks())
-            components.resize(n_blocks());
-        }
-
-      for (unsigned int i=0; i<this->n_blocks(); ++i)
-        this->components[i] = v.block(i);
-
-      collect_sizes();
-
-      return *this;
-    }
-
-
-    inline
-    void
-    BlockVector::swap (BlockVector &v)
-    {
-      Assert (n_blocks() == v.n_blocks(),
-              ExcDimensionMismatch(n_blocks(),v.n_blocks()));
-
-      for (unsigned int row=0; row<n_blocks(); ++row)
-        block(row).swap (v.block(row));
-    }
-
-
-
-/**
- * Global function which overloads the default implementation
- * of the C++ standard library which uses a temporary object. The
- * function simply exchanges the data of the two vectors.
- *
- * @relates TrilinosWrappers::MPI::BlockVector
- * @author Martin Kronbichler, Wolfgang Bangerth, 2008
- */
-    inline
-    void swap (BlockVector &u,
-               BlockVector &v)
-    {
-      u.swap (v);
-    }
-
-  } /* end of namespace MPI */
-
-
-
-
 /**
  * An implementation of block vectors based on the vector class
  * implemented in TrilinosWrappers. While the base class provides for
@@ -668,6 +186,22 @@ namespace TrilinosWrappers
                                         */
       ~BlockVector ();
 
+                                      /**
+                                       * use compress(VectorOperation) instead
+                                       *
+                                       * @deprecated
+                                       *
+                                       * See @ref GlossCompress "Compressing
+                                       * distributed objects" for more
+                                       * information.
+                                       */
+      void compress (const Epetra_CombineMode last_action);
+      
+                                        /**
+                                         * so it is not hidden
+                                         */
+      using BlockVectorBase<Vector>::compress;
+
                                        /**
                                         * Copy operator: fill all
                                         * components of the vector that
@@ -985,6 +519,21 @@ namespace TrilinosWrappers
   }
 
 
+  inline
+  void
+  BlockVector::compress (const Epetra_CombineMode last_action)
+  {
+    ::dealii::VectorOperation::values last_action_;
+    if (last_action == Add)
+      last_action_ = ::dealii::VectorOperation::add;
+    else if (last_action == Insert)
+      last_action_ = ::dealii::VectorOperation::insert;
+    else
+      AssertThrow(false, ExcNotImplemented());
+
+    this->compress(last_action_);
+  }
+
   inline
   void
   BlockVector::swap (BlockVector &v)
diff --git a/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h b/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h
new file mode 100644 (file)
index 0000000..c95fb17
--- /dev/null
@@ -0,0 +1,537 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 2008, 2009, 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+#ifndef __deal2__trilinos_parallel_block_vector_h
+#define __deal2__trilinos_parallel_block_vector_h
+
+
+#include <deal.II/base/config.h>
+
+#ifdef DEAL_II_USE_TRILINOS
+
+#  include <deal.II/lac/trilinos_vector.h>
+#  include <deal.II/lac/block_indices.h>
+#  include <deal.II/lac/block_vector_base.h>
+#  include <deal.II/lac/exceptions.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+                                   // forward declaration
+template <typename Number> class BlockVector;
+
+/*! @addtogroup TrilinosWrappers
+ *@{
+ */
+
+namespace TrilinosWrappers
+{
+                                   // forward declaration
+  namespace MPI
+  {
+    class BlockVector;
+  }
+  class BlockVector;
+  class BlockSparseMatrix;
+
+
+  namespace MPI
+  {
+/**
+ * An implementation of block vectors based on the vector class
+ * implemented in TrilinosWrappers. While the base class provides for
+ * most of the interface, this class handles the actual allocation of
+ * vectors and provides functions that are specific to the underlying
+ * vector type.
+ *
+ * The model of distribution of data is such that each of the blocks
+ * is distributed across all MPI processes named in the MPI
+ * communicator. I.e. we don't just distribute the whole vector, but
+ * each component. In the constructors and reinit() functions, one
+ * therefore not only has to specify the sizes of the individual
+ * blocks, but also the number of elements of each of these blocks to
+ * be stored on the local process.
+ *
+ * @ingroup Vectors
+ * @ingroup TrilinosWrappers
+ * @see @ref GlossBlockLA "Block (linear algebra)"
+ * @author Martin Kronbichler, Wolfgang Bangerth, 2008, 2009
+ */
+    class BlockVector : public BlockVectorBase<Vector>
+    {
+      public:
+                                       /**
+                                        * Typedef the base class for simpler
+                                        * access to its own typedefs.
+                                        */
+        typedef BlockVectorBase<Vector> BaseClass;
+
+                                       /**
+                                        * Typedef the type of the underlying
+                                        * vector.
+                                        */
+        typedef BaseClass::BlockType  BlockType;
+
+                                       /**
+                                        * Import the typedefs from the base
+                                        * class.
+                                        */
+        typedef BaseClass::value_type      value_type;
+        typedef BaseClass::pointer         pointer;
+        typedef BaseClass::const_pointer   const_pointer;
+        typedef BaseClass::reference       reference;
+        typedef BaseClass::const_reference const_reference;
+        typedef BaseClass::size_type       size_type;
+        typedef BaseClass::iterator        iterator;
+        typedef BaseClass::const_iterator  const_iterator;
+
+                                       /**
+                                        * Default constructor. Generate an
+                                        * empty vector without any blocks.
+                                        */
+        BlockVector ();
+
+                                       /**
+                                        * Constructor. Generate a block
+                                        * vector with as many blocks as
+                                        * there are entries in @p
+                                        * partitioning. Each Epetra_Map
+                                        * contains the layout of the
+                                        * distribution of data among the MPI
+                                        * processes.
+                                        */
+        BlockVector (const std::vector<Epetra_Map> &parallel_partitioning);
+
+                                       /**
+                                        * Constructor. Generate a block
+                                        * vector with as many blocks as
+                                        * there are entries in
+                                        * @p partitioning.  Each IndexSet
+                                        * together with the MPI communicator
+                                        * contains the layout of the
+                                        * distribution of data among the MPI
+                                        * processes.
+                                        */
+        BlockVector (const std::vector<IndexSet> &parallel_partitioning,
+                     const MPI_Comm              &communicator = MPI_COMM_WORLD);
+
+                                       /**
+                                        * Copy-Constructor. Set all the
+                                        * properties of the parallel vector
+                                        * to those of the given argument and
+                                        * copy the elements.
+                                        */
+        BlockVector (const BlockVector  &V);
+
+                                       /**
+                                        * Creates a block vector
+                                        * consisting of
+                                        * <tt>num_blocks</tt>
+                                        * components, but there is no
+                                        * content in the individual
+                                        * components and the user has to
+                                        * fill appropriate data using a
+                                        * reinit of the blocks.
+                                        */
+        BlockVector (const unsigned int num_blocks);
+
+                                       /**
+                                        * Destructor. Clears memory
+                                        */
+        ~BlockVector ();
+
+                                       /**
+                                        * Copy operator: fill all
+                                        * components of the vector that
+                                        * are locally stored with the
+                                        * given scalar value.
+                                        */
+        BlockVector &
+          operator = (const value_type s);
+
+                                       /**
+                                        * Copy operator for arguments of
+                                        * the same type.
+                                        */
+        BlockVector &
+          operator = (const BlockVector &V);
+
+                                       /**
+                                        * Copy operator for arguments of
+                                        * the localized Trilinos vector
+                                        * type.
+                                        */
+        BlockVector &
+          operator = (const ::dealii::TrilinosWrappers::BlockVector &V);
+
+                                       /**
+                                        * Another copy function. This
+                                        * one takes a deal.II block
+                                        * vector and copies it into a
+                                        * TrilinosWrappers block
+                                        * vector. Note that the number
+                                        * of blocks has to be the same
+                                        * in the vector as in the input
+                                        * vector. Use the reinit()
+                                        * command for resizing the
+                                        * BlockVector or for changing
+                                        * the internal structure of the
+                                        * block components.
+                                        *
+                                        * Since Trilinos only works on
+                                        * doubles, this function is
+                                        * limited to accept only one
+                                        * possible number type in the
+                                        * deal.II vector.
+                                        */
+        template <typename Number>
+        BlockVector &
+          operator = (const ::dealii::BlockVector<Number> &V);
+
+                                         /**
+                                          * Reinitialize the BlockVector to
+                                          * contain as many blocks as there
+                                          * are Epetra_Maps given in the input
+                                          * argument, according to the
+                                          * parallel distribution of the
+                                          * individual components described
+                                          * in the maps.
+                                          *
+                                          * If <tt>fast==false</tt>, the vector
+                                          * is filled with zeros.
+                                          */
+        void reinit (const std::vector<Epetra_Map> &parallel_partitioning,
+                     const bool                     fast = false);
+
+                                         /**
+                                          * Reinitialize the BlockVector to
+                                          * contain as many blocks as there
+                                          * are index sets given in the input
+                                          * argument, according to the
+                                          * parallel distribution of the
+                                          * individual components described
+                                          * in the maps.
+                                          *
+                                          * If <tt>fast==false</tt>, the vector
+                                          * is filled with zeros.
+                                          */
+        void reinit (const std::vector<IndexSet> &parallel_partitioning,
+                     const MPI_Comm              &communicator = MPI_COMM_WORLD,
+                     const bool                   fast = false);
+
+                                         /**
+                                          * Change the dimension to that
+                                          * of the vector <tt>V</tt>. The same
+                                          * applies as for the other
+                                          * reinit() function.
+                                          *
+                                          * The elements of <tt>V</tt> are not
+                                          * copied, i.e.  this function is
+                                          * the same as calling <tt>reinit
+                                          * (V.size(), fast)</tt>.
+                                          *
+                                          * Note that you must call this
+                                          * (or the other reinit()
+                                          * functions) function, rather
+                                          * than calling the reinit()
+                                          * functions of an individual
+                                          * block, to allow the block
+                                          * vector to update its caches of
+                                          * vector sizes. If you call
+                                          * reinit() on one of the
+                                          * blocks, then subsequent
+                                          * actions on this object may
+                                          * yield unpredictable results
+                                          * since they may be routed to
+                                          * the wrong block.
+                                          */
+        void reinit (const BlockVector &V,
+                     const bool fast = false);
+
+                                         /**
+                                          * Change the number of blocks to
+                                          * <tt>num_blocks</tt>. The individual
+                                          * blocks will get initialized with
+                                          * zero size, so it is assumed that
+                                          * the user resizes the
+                                          * individual blocks by herself
+                                          * in an appropriate way, and
+                                          * calls <tt>collect_sizes</tt>
+                                          * afterwards.
+                                          */
+        void reinit (const unsigned int num_blocks);
+
+                                         /**
+                                          * This reinit function is meant to
+                                          * be used for parallel
+                                          * calculations where some
+                                          * non-local data has to be
+                                          * used. The typical situation
+                                          * where one needs this function is
+                                          * the call of the
+                                          * FEValues<dim>::get_function_values
+                                          * function (or of some
+                                          * derivatives) in parallel. Since
+                                          * it is usually faster to retrieve
+                                          * the data in advance, this
+                                          * function can be called before
+                                          * the assembly forks out to the
+                                          * different processors. What this
+                                          * function does is the following:
+                                          * It takes the information in the
+                                          * columns of the given matrix and
+                                          * looks which data couples between
+                                          * the different processors. That
+                                          * data is then queried from the
+                                          * input vector. Note that you
+                                          * should not write to the
+                                          * resulting vector any more, since
+                                          * the some data can be stored
+                                          * several times on different
+                                          * processors, leading to
+                                          * unpredictable results. In
+                                          * particular, such a vector cannot
+                                          * be used for matrix-vector
+                                          * products as for example done
+                                          * during the solution of linear
+                                          * systems.
+                                          */
+        void import_nonlocal_data_for_fe (const TrilinosWrappers::BlockSparseMatrix &m,
+                                          const BlockVector                         &v);
+
+
+                                        /**
+                                         * use compress(VectorOperation) instead
+                                         *
+                                         * @deprecated
+                                         *
+                                         * See @ref GlossCompress "Compressing
+                                         * distributed objects" for more
+                                         * information.
+                                         */
+       void compress (const Epetra_CombineMode last_action);
+       
+                                        /**
+                                         * so it is not hidden
+                                         */
+       using BlockVectorBase<Vector>::compress;
+
+
+                                         /**
+                                          * Returns the state of the
+                                          * vector, i.e., whether
+                                          * compress() needs to be
+                                          * called after an operation
+                                          * requiring data
+                                          * exchange. Does only return
+                                          * non-true values when used in
+                                          * <tt>debug</tt> mode, since
+                                          * it is quite expensive to
+                                          * keep track of all operations
+                                          * that lead to the need for
+                                          * compress().
+                                          */
+        bool is_compressed () const;
+
+                                         /**
+                                          * Swap the contents of this
+                                          * vector and the other vector
+                                          * <tt>v</tt>. One could do this
+                                          * operation with a temporary
+                                          * variable and copying over the
+                                          * data elements, but this
+                                          * function is significantly more
+                                          * efficient since it only swaps
+                                          * the pointers to the data of
+                                          * the two vectors and therefore
+                                          * does not need to allocate
+                                          * temporary storage and move
+                                          * data around.
+                                          *
+                                          * Limitation: right now this
+                                          * function only works if both
+                                          * vectors have the same number
+                                          * of blocks. If needed, the
+                                          * numbers of blocks should be
+                                          * exchanged, too.
+                                          *
+                                          * This function is analog to the
+                                          * the swap() function of all C++
+                                          * standard containers. Also,
+                                          * there is a global function
+                                          * swap(u,v) that simply calls
+                                          * <tt>u.swap(v)</tt>, again in analogy
+                                          * to standard functions.
+                                          */
+        void swap (BlockVector &v);
+
+                                     /**
+                                      * Print to a stream.
+                                      */
+        void print (std::ostream       &out,
+                    const unsigned int  precision = 3,
+                    const bool          scientific = true,
+                    const bool          across = true) const;
+
+                                         /**
+                                          * Exception
+                                          */
+        DeclException0 (ExcIteratorRangeDoesNotMatchVectorSize);
+
+                                         /**
+                                          * Exception
+                                          */
+        DeclException0 (ExcNonMatchingBlockVectors);
+    };
+
+
+
+/*----------------------- Inline functions ----------------------------------*/
+
+
+    inline
+    BlockVector::BlockVector ()
+    {}
+
+
+
+    inline
+    BlockVector::BlockVector (const std::vector<Epetra_Map> &parallel_partitioning)
+    {
+      reinit (parallel_partitioning, false);
+    }
+
+
+
+    inline
+    BlockVector::BlockVector (const std::vector<IndexSet> &parallel_partitioning,
+                              const MPI_Comm              &communicator)
+    {
+      reinit (parallel_partitioning, communicator, false);
+    }
+
+
+
+    inline
+    BlockVector::BlockVector (const unsigned int num_blocks)
+    {
+      reinit (num_blocks);
+    }
+
+
+
+    inline
+    BlockVector::BlockVector (const BlockVector& v)
+                    :
+                    BlockVectorBase<Vector > ()
+    {
+      this->components.resize (v.n_blocks());
+      this->block_indices = v.block_indices;
+
+      for (unsigned int i=0; i<this->n_blocks(); ++i)
+        this->components[i] = v.components[i];
+    }
+
+
+
+    inline
+    bool
+    BlockVector::is_compressed () const
+    {
+      bool compressed = true;
+      for (unsigned int row=0; row<n_blocks(); ++row)
+        if (block(row).is_compressed() == false)
+          {
+            compressed = false;
+            break;
+          }
+
+      return compressed;
+    }
+
+
+
+    inline
+    void
+    BlockVector::compress (const Epetra_CombineMode last_action)
+    {
+      ::dealii::VectorOperation::values last_action_;
+      if (last_action == Add)
+       last_action_ = ::dealii::VectorOperation::add;
+      else if (last_action == Insert)
+       last_action_ = ::dealii::VectorOperation::insert;
+      else
+       AssertThrow(false, ExcNotImplemented());
+      
+      this->compress(last_action_);
+    }
+
+    
+
+    template <typename Number>
+    BlockVector &
+    BlockVector::operator = (const ::dealii::BlockVector<Number> &v)
+    {
+      if (n_blocks() != v.n_blocks())
+        {
+          std::vector<unsigned int> block_sizes (v.n_blocks(), 0);
+          block_indices.reinit (block_sizes);
+          if (components.size() != n_blocks())
+            components.resize(n_blocks());
+        }
+
+      for (unsigned int i=0; i<this->n_blocks(); ++i)
+        this->components[i] = v.block(i);
+
+      collect_sizes();
+
+      return *this;
+    }
+
+
+    inline
+    void
+    BlockVector::swap (BlockVector &v)
+    {
+      Assert (n_blocks() == v.n_blocks(),
+              ExcDimensionMismatch(n_blocks(),v.n_blocks()));
+
+      for (unsigned int row=0; row<n_blocks(); ++row)
+        block(row).swap (v.block(row));
+    }
+
+
+
+/**
+ * Global function which overloads the default implementation
+ * of the C++ standard library which uses a temporary object. The
+ * function simply exchanges the data of the two vectors.
+ *
+ * @relates TrilinosWrappers::MPI::BlockVector
+ * @author Martin Kronbichler, Wolfgang Bangerth, 2008
+ */
+    inline
+    void swap (BlockVector &u,
+               BlockVector &v)
+    {
+      u.swap (v);
+    }
+
+  } /* end of namespace MPI */
+
+}
+
+/*@}*/
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif  // DEAL_II_USE_TRILINOS
+
+#endif
index ef463416db273f5382ed93ac355a77e00ada2566..7c61cbd157a83201c90a78408b7899640e8b0dfd 100644 (file)
@@ -1163,7 +1163,8 @@ namespace TrilinosWrappers
                                         * See @ref GlossCompress "Compressing distributed objects"
                                         * for more information.
                                         */
-      void compress ();
+      void compress (::dealii::VectorOperation::values operation
+                    =::dealii::VectorOperation::unknown);
 
                                        /**
                                         * Set the element (<i>i,j</i>)
@@ -2588,7 +2589,7 @@ namespace TrilinosWrappers
 
   inline
   void
-  SparseMatrix::compress ()
+  SparseMatrix::compress (::dealii::VectorOperation::values /*operation*/)
   {
                                   // flush buffers
     int ierr;
index f70303b23b2b9180ebd1e54ac802dc7a88815c21..a2891c18fd212cad6bdd7918003a0adf1c351df8 100644 (file)
@@ -508,6 +508,8 @@ namespace TrilinosWrappers
       if (vector.get() != 0 && vector->Map().SameAs(parallel_partitioner))
         vector.reset (new Epetra_FEVector(parallel_partitioner));
 
+      has_ghosts = vector->Map().UniqueGIDs()==false;
+
       const int size = parallel_partitioner.NumMyElements();
 
                                    // Need to copy out values, since the
index 549bc76afbd10f389f9995ea860aa6b81ae1925a..f7e1450221c75fb50f5ce04281037777a639ddc7 100644 (file)
@@ -344,9 +344,14 @@ namespace TrilinosWrappers
                                         *
                                         * See @ref GlossCompress "Compressing distributed objects"
                                         * for more information.
-                                        * more information.
                                         */
-      void compress (const Epetra_CombineMode last_action = Zero);
+      void compress (::dealii::VectorOperation::values operation
+                    =::dealii::VectorOperation::unknown);
+
+                                      /**
+                                       * @deprecated
+                                       */
+      void compress (const Epetra_CombineMode last_action);
 
                                        /**
                                         * Returns the state of the
@@ -456,6 +461,10 @@ namespace TrilinosWrappers
                                         * To figure out which elements
                                         * exactly are stored locally,
                                         * use local_range().
+                                        *
+                                        * If the vector contains ghost
+                                        * elements, they are included in
+                                        * this number.
                                         */
       unsigned int local_size () const;
 
@@ -485,7 +494,9 @@ namespace TrilinosWrappers
 
                                        /**
                                         * Return if the vector contains ghost
-                                        * elements.
+                                        * elements. This answer is true if there
+                                        * are ghost elements on at least one
+                                        * process.
                                         */
       bool has_ghost_elements() const;
 
@@ -1002,6 +1013,13 @@ namespace TrilinosWrappers
                                         */
       bool compressed;
 
+      /**
+       * Whether this vector has ghost elements. This is true
+       * on all processors even if only one of them has any
+       * ghost elements.
+       */
+      bool has_ghosts;
+
                                        /**
                                         * An Epetra distibuted vector
                                         * type. Requires an existing
@@ -1156,7 +1174,7 @@ namespace TrilinosWrappers
   bool
   VectorBase::has_ghost_elements() const
   {
-    return vector->Map().UniqueGIDs()==false;
+    return has_ghosts;
   }
 
 
@@ -1204,10 +1222,42 @@ namespace TrilinosWrappers
 
   inline
   void
-  VectorBase::compress (const Epetra_CombineMode given_last_action)
+  VectorBase::compress (const Epetra_CombineMode last_action)
   {
-    Epetra_CombineMode mode = (last_action != Zero) ?
-                              last_action : given_last_action;
+    ::dealii::VectorOperation::values last_action_;
+    if (last_action == Add)
+      last_action_ = ::dealii::VectorOperation::add;
+    else if (last_action == Insert)
+      last_action_ = ::dealii::VectorOperation::insert;
+    else
+      AssertThrow(false, ExcNotImplemented());
+
+    compress(last_action_);
+  }
+  
+
+
+  inline
+  void
+  VectorBase::compress (::dealii::VectorOperation::values given_last_action)
+  {
+                                    //Select which mode to send to
+                                    //Trilinos. Note that we use last_action
+                                    //if available and ignore what the user
+                                    //tells us to detect wrongly mixed
+                                    //operations. Typically given_last_action
+                                    //is only used on machines that do not
+                                    //execute an operation (because they have
+                                    //no own cells for example).
+    Epetra_CombineMode mode = last_action;
+    if (last_action == Zero)
+      {
+       if (given_last_action==::dealii::VectorOperation::add)
+         mode = Add;
+       else if (given_last_action==::dealii::VectorOperation::insert)
+         mode = Insert;
+      }
+
 #ifdef DEBUG
 #  ifdef DEAL_II_COMPILER_SUPPORTS_MPI
                                      // check that every process has decided
index 2500fc913df7c0f81d7576592027c4265948fb4f..5e232a756a33cd07809e8afaa9365849b5737d70 100644 (file)
@@ -65,6 +65,21 @@ template <typename> class VectorView;
  *@{
  */
 
+/**
+ * This enum keeps track of the current operation in parallel linear algebra
+ * objects like Vectors and Matrices.
+ *
+ * It is used in the various compress() functions. They also exist in serial
+ * codes for compatibility and are empty there.
+ *
+ * See @ref GlossCompress "Compressing distributed objects" for more
+ * information.
+ */
+struct VectorOperation
+{
+    enum values { unknown, insert, add };
+};
+
 
 /**
  * Numerical vector of data.  For this class there are different types
@@ -297,7 +312,8 @@ class Vector : public Subscriptor
                                       * this class, it is immaterial and thus
                                       * an empty function.
                                       */
-    void compress () const;
+    void compress (::dealii::VectorOperation::values operation
+                  =::dealii::VectorOperation::unknown) const;
 
                                      /**
                                       * Change the dimension of the vector to
@@ -1495,7 +1511,7 @@ Vector<Number>::operator != (const Vector<Number2>& v) const
 template <typename Number>
 inline
 void
-Vector<Number>::compress () const
+Vector<Number>::compress (::dealii::VectorOperation::values) const
 {}
 
 
index f68e429ea4bcf16af3453b17015438ae0bb48871..6da19f1c8b79e9c9c82939e1390e3171fa6c5e65 100644 (file)
@@ -3084,7 +3084,7 @@ FEEvaluationBase<dim,dofs_per_cell_,n_q_points_,n_components_,Number>
             {
               grad_out[comp][d] = (jac[d][0] *
                                    this->gradients_quad[comp][0][q_point]);
-              for (unsigned e=1; e<dim; ++e)
+              for (unsigned int e=1; e<dim; ++e)
                 grad_out[comp][d] += (jac[d][e] *
                                       this->gradients_quad[comp][e][q_point]);
             }
@@ -3457,7 +3457,7 @@ FEEvaluationBase<dim,dofs_per_cell_,n_q_points_,n_components_,Number>
         for (unsigned int d=0; d<dim; ++d)
           {
             VectorizedArray<Number> new_val = jac[0][d] * grad_in[comp][0];
-            for (unsigned e=1; e<dim; ++e)
+            for (unsigned int e=1; e<dim; ++e)
               new_val += (jac[e][d] * grad_in[comp][e]);
             this->gradients_quad[comp][d][q_point] = new_val * JxW;
           }
@@ -3581,7 +3581,7 @@ FEEvaluationAccess<dim,dofs_per_cell_,n_q_points_,1,Number>
       for (unsigned int d=0; d<dim; ++d)
         {
           grad_out[d] = (jac[d][0] * this->gradients_quad[0][0][q_point]);
-          for (unsigned e=1; e<dim; ++e)
+          for (unsigned int e=1; e<dim; ++e)
             grad_out[d] += (jac[d][e] * this->gradients_quad[0][e][q_point]);
         }
     }
@@ -3697,7 +3697,7 @@ FEEvaluationAccess<dim,dofs_per_cell_,n_q_points_,1,Number>
       for (unsigned int d=0; d<dim; ++d)
         {
           VectorizedArray<Number> new_val = jac[0][d] * grad_in[0];
-          for (unsigned e=1; e<dim; ++e)
+          for (unsigned int e=1; e<dim; ++e)
             new_val += jac[e][d] * grad_in[e];
           this->gradients_quad[0][d][q_point] = new_val * JxW;
         }
@@ -3773,10 +3773,10 @@ FEEvaluationAccess<dim,dofs_per_cell_,n_q_points_,dim,Number>
         this->cell_type == internal::MatrixFreeFunctions::general ?
         this->jacobian[q_point] : this->jacobian[0];
       divergence = (jac[0][0] * this->gradients_quad[0][0][q_point]);
-      for (unsigned e=1; e<dim; ++e)
+      for (unsigned int e=1; e<dim; ++e)
         divergence += (jac[0][e] * this->gradients_quad[0][e][q_point]);
       for (unsigned int d=1; d<dim; ++d)
-        for (unsigned e=0; e<dim; ++e)
+        for (unsigned int e=0; e<dim; ++e)
           divergence += (jac[d][e] * this->gradients_quad[d][e][q_point]);
     }
   return divergence;
@@ -3944,7 +3944,7 @@ FEEvaluationAccess<dim,dofs_per_cell_,n_q_points_,dim,Number>
          this->quadrature_weights[q_point]) * div_in;
       for (unsigned int d=0; d<dim; ++d)
         {
-          for (unsigned e=0; e<dim; ++e)
+          for (unsigned int e=0; e<dim; ++e)
             this->gradients_quad[d][e][q_point] = jac[d][e] * fac;
         }
     }
@@ -4010,7 +4010,7 @@ FEEvaluationAccess<dim,dofs_per_cell_,n_q_points_,dim,Number>
         for (unsigned int d=0; d<dim; ++d)
           {
             VectorizedArray<Number> new_val = jac[0][d] * weighted[comp][0];
-            for (unsigned e=1; e<dim; ++e)
+            for (unsigned int e=1; e<dim; ++e)
               new_val += jac[e][d] * weighted[comp][e];
             this->gradients_quad[comp][d][q_point] = new_val;
           }
index 864307f03f58667915b1a545b21172efd00fcb4d..266a77f58e4ce26518a1afc041849409e0f36883 100644 (file)
@@ -753,7 +753,7 @@ public:
                                  * store arrays of data for all cells
                                  * to be worked on. This number is
                                  * approximately
-                                 * n_physical_cells()/VectorizedArray@<Number@>::n_array_elements
+                                 * n_physical_cells()/VectorizedArray::n_array_elements
                                  * (depending on how many cell chunks
                                  * that do not get filled up
                                  * completely).
@@ -1370,7 +1370,7 @@ MatrixFree<dim,Number>::create_cell_subrange_hp
         return std::pair<unsigned int,unsigned int> (range.second,range.second);
     }
 
-  const unsigned int fe_index = 
+  const unsigned int fe_index =
     dof_info[vector_component].fe_index_from_degree(degree);
   if (fe_index >= dof_info[vector_component].max_fe_index)
     return std::pair<unsigned int,unsigned int>(range.second, range.second);
@@ -2395,18 +2395,18 @@ MatrixFree<dim, Number>::cell_loop
       if(task_info.use_partition_partition == true)
         {
           internal::update_ghost_values_start(src);
-          tbb::empty_task* root = new( tbb::task::allocate_root() ) 
+          tbb::empty_task* root = new( tbb::task::allocate_root() )
             tbb::empty_task;
           unsigned int evens = task_info.evens;
           unsigned int odds  = task_info.odds;
           root->set_ref_count(evens+1);
           unsigned int n_blocked_workers = task_info.n_blocked_workers;
           unsigned int n_workers = task_info.n_workers;
-          std::vector<internal::partition::PartitionWork<Worker,false>*> 
+          std::vector<internal::partition::PartitionWork<Worker,false>*>
             worker(n_workers);
-          std::vector<internal::partition::PartitionWork<Worker,true>*> 
+          std::vector<internal::partition::PartitionWork<Worker,true>*>
             blocked_worker(n_blocked_workers);
-          internal::MPIComCompress<OutVector> *worker_compr = 
+          internal::MPIComCompress<OutVector> *worker_compr =
             new(root->allocate_child())
             internal::MPIComCompress<OutVector>(dst);
           worker_compr->set_ref_count(1);
index 87ccb278699cfbf3a782035d24216812d5d3db3c..f706e3db74f7611db061f51fb774cdcb16888b60 100644 (file)
@@ -30,11 +30,26 @@ namespace MeshWorker
 
 /**
  * A class that, instead of assembling into a matrix or vector,
- * outputs the results on a cell to a gnuplot patch. This works only
- * for elements with support points. The first dim data vectors will
- * be the coordinates, the following are the data.
+ * outputs the results on a cell to a gnuplot patch.
+ *
+ * This assembler expects that LocalResults contains quadrature values
+ * set with LocalResults::quadrature_value(). When it is initialized
+ * with the number of quadrature points in a single (!) space
+ * direction and the number of data fields to be displayed, it
+ * initializes LocalResults automatically. The number of data fields
+ * in local results will be increased by dim in order to accommodate
+ * for the coordinates of the data points.
+ *
+ * While data slots for the space coordinates are allocated
+ * automatically, these coordinates are not entered. It is up to the
+ * user to enter the coordinates in the first dim data entries at
+ * every point. This adds the flexibility to output transformed
+ * coordinates or even something completely different.
  *
  * @note In the current implementation, only cell data can be written.
+ *
+ * @author Guido Kanschat
+ * @date 2011, 2012
  */
     class GnuplotPatch
     {
@@ -56,10 +71,13 @@ namespace MeshWorker
                                           * actual Quadrature used to
                                           * create the patches. The
                                           * total number of data
-                                          * vectors produced is n+dim
-                                          * and the first dim will be
+                                          * vectors produced is <tt>n+dim</tt>
+                                          * and the first dim should be
                                           * the space coordinates of
-                                          * the points.
+                                          * the points. Nevertheless,
+                                          * it is up to the user to
+                                          * set these values to
+                                          * whatever is desired.
                                           */
         void initialize (const unsigned int n_points,
                          const unsigned int n_vectors);
@@ -90,15 +108,14 @@ namespace MeshWorker
         void initialize_info(DoFInfo<dim>& info, bool face);
 
                                          /**
-                                          * Assemble the local values
-                                          * into the global vectors.
+                                          * Write the patch to the
+                                          * output stream.
                                           */
         template<int dim>
         void assemble(const DoFInfo<dim>& info);
 
                                          /**
-                                          * Assemble both local values
-                                          * into the global vectors.
+                                          * @warning Not implemented yet
                                           */
         template<int dim>
         void assemble(const DoFInfo<dim>& info1,
@@ -107,7 +124,7 @@ namespace MeshWorker
       private:
                                          /**
                                           * Write the object T either
-                                          * to the stream #os, if initialize_stream
+                                          * to the stream #os, if initialize_stream()
                                           * has been called, or to
                                           * @p deallog if no pointer has
                                           * been set.
index aa0bf6b665e184fd0deabfce556902aacd287316..3eab55be99cf6e469382c31bdc486bdbb4e90ebf 100644 (file)
@@ -119,8 +119,7 @@ class MGDoFHandler : public DoFHandler<dim,spacedim>
                                       * A copy of the transferred
                                       * finite element is stored.
                                       */
-    virtual void distribute_dofs (const FiniteElement<dim,spacedim> &,
-                                  const unsigned int offset = 0);
+    virtual void distribute_dofs (const FiniteElement<dim,spacedim> &);
 
                                      /**
                                       * Clear all data of this object
index e4ae4006e3a93e0c9c80b3e82cc169cd6bcd0249..926557ff794b28fbf1cedab87b76232e3efacd90 100644 (file)
 
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/constraint_matrix.h>
-#ifdef DEAL_PREFER_MATRIX_EZ
-#  include <deal.II/lac/sparse_matrix_ez.h>
-#  include <deal.II/lac/block_sparse_matrix_ez.h>
-#else
-#  include <deal.II/lac/sparsity_pattern.h>
-#  include <deal.II/lac/block_sparsity_pattern.h>
-#endif
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/block_sparsity_pattern.h>
 #include <deal.II/lac/vector_memory.h>
 
 #include <deal.II/multigrid/mg_base.h>
index f8bbd965428fa0799ad91c8261c34dea4c68f722..94b82212dc953478024c25355a4acaaeb5f39ff1 100644 (file)
@@ -215,16 +215,11 @@ MGTransferPrebuilt<VECTOR>::memory_consumption () const
 {
   std::size_t result = sizeof(*this);
   result += sizeof(unsigned int) * sizes.size();
-#ifdef DEAL_PREFER_MATRIX_EZ
-  std::vector<std_cxx1x::shared_ptr<SparseMatrixEZ<double> > >::const_iterator m;
-  const std::vector<std_cxx1x::shared_ptr<SparseMatrixEZ<double> > >::const_iterator end = prolongation_matrices.end();
-  for (m = prolongation_matrices.begin(); m != end ; ++m)
-    result += *m->memory_consumption();
-#else
+
   for (unsigned int i=0;i<prolongation_matrices.size();++i)
     result += prolongation_matrices[i]->memory_consumption()
               + prolongation_sparsities[i]->memory_consumption();
-#endif
+
   return result;
 }
 
index 3f4b19a2197debdbc31d0cab9f76b0a8d4de9e69..bcb3016897de92669de2fe904fe4ed538b9dc962 100644 (file)
 #include <deal.II/base/config.h>
 
 #include <deal.II/lac/block_vector.h>
-#ifdef DEAL_PREFER_MATRIX_EZ
-#  include <deal.II/lac/sparse_matrix_ez.h>
-#  include <deal.II/lac/block_sparse_matrix_ez.h>
-#else
-#  include <deal.II/lac/sparsity_pattern.h>
-#  include <deal.II/lac/block_sparsity_pattern.h>
-#endif
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/block_sparsity_pattern.h>
 #include <deal.II/lac/vector_memory.h>
 #include <deal.II/lac/block_matrix_array.h>
 
index 6c602e098ce37c3539292812edbf6b8108396460..c6308d6565d2f69051c151cb58f01ff7e33cc3c4 100644 (file)
 
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/constraint_matrix.h>
-#ifdef DEAL_PREFER_MATRIX_EZ
-#  include <deal.II/lac/sparse_matrix_ez.h>
-#  include <deal.II/lac/block_sparse_matrix_ez.h>
-#else
-#  include <deal.II/lac/sparsity_pattern.h>
-#  include <deal.II/lac/block_sparsity_pattern.h>
-#endif
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/block_sparsity_pattern.h>
 #include <deal.II/lac/vector_memory.h>
 
 #include <deal.II/multigrid/mg_base.h>
index 9131237c3ab45b0cd17aecd159be63f4d33f9b83..1e40043c95262de3b032f2ec4e1c475dd2a3d53a 100644 (file)
@@ -39,7 +39,7 @@ namespace hp
  *
  * The way the difference quotients are computed on cell $K$ is the
  * following (here described for the approximation of the gradient of
- * a finite element field, but see below for higher derivatived): let
+ * a finite element field, but see below for higher derivatives): let
  * $K'$ be a neighboring cell, and let $y_{K'}=x_{K'}-x_K$ be the
  * distance vector between the centers of the two cells, then
  *   $ \frac{u_h(x_{K'}) - u_h(x_K)}{ \|y_{K'}\| }$
index ba847adb88644faa77d7094aded247a4e6e310b1..e856482be96af875f59d51bb361404bef4eb4502 100644 (file)
@@ -300,7 +300,7 @@ class KellyErrorEstimator
                                       *
                                       * The @p material_id parameter has a similar
                                       * meaning: if not set to its default value
-                                      * (which is types::invalid_material_id),
+                                      * (which is numbers::invalid_material_id),
                                       * it means that indicators will only be
                                       * computed for cells with this particular
                                       * material id.
@@ -348,8 +348,8 @@ class KellyErrorEstimator
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = numbers::invalid_unsigned_int,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Calls the @p estimate
@@ -365,8 +365,8 @@ class KellyErrorEstimator
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Same function as above, but
@@ -405,8 +405,8 @@ class KellyErrorEstimator
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Calls the @p estimate
@@ -422,8 +422,8 @@ class KellyErrorEstimator
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t          material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id          material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -442,8 +442,8 @@ class KellyErrorEstimator
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -461,8 +461,8 @@ class KellyErrorEstimator
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -481,8 +481,8 @@ class KellyErrorEstimator
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -500,8 +500,8 @@ class KellyErrorEstimator
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>*    coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -611,8 +611,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Calls the @p estimate
@@ -628,8 +628,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Same function as above, but
@@ -668,8 +668,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Calls the @p estimate
@@ -685,8 +685,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -705,8 +705,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -724,8 +724,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool> &component_mask = std::vector<bool>(),
                           const Function<spacedim>     *coefficients   = 0,
                           const unsigned int       n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t       material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id       material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -744,8 +744,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
 
                                      /**
@@ -763,8 +763,8 @@ class KellyErrorEstimator<1,spacedim>
                           const std::vector<bool>     &component_mask = std::vector<bool>(),
                           const Function<spacedim>         *coefficients   = 0,
                           const unsigned int           n_threads = multithread_info.n_default_threads,
-                          const types::subdomain_id_t subdomain_id = types::invalid_subdomain_id,
-                          const types::material_id_t           material_id = types::invalid_material_id);
+                          const types::subdomain_id subdomain_id = types::invalid_subdomain_id,
+                          const types::material_id           material_id = numbers::invalid_material_id);
 
                                      /**
                                       * Exception
index 5ba2793487f7b94a7f39fa2d23137941b6997eb2..47f57f21cda5354a02ed75d92555eea513305c1d 100644 (file)
 //    further information on this license.
 //
 //---------------------------------------------------------------------------
-#ifndef __deal2__matrices_h
-#define __deal2__matrices_h
-
-
-#include <deal.II/base/config.h>
-#include <deal.II/base/exceptions.h>
-#include <deal.II/base/thread_management.h>
-#include <deal.II/dofs/function_map.h>
-
-#include <map>
-
-DEAL_II_NAMESPACE_OPEN
-
-
-// forward declarations
-template <int dim> class Quadrature;
-
-template<typename number> class Vector;
-template<typename number> class FullMatrix;
-template<typename number> class SparseMatrix;
-
-template <typename number> class BlockSparseMatrix;
-template <typename Number> class BlockVector;
-
-template <int dim, int spacedim> class Mapping;
-template <int dim, int spacedim> class DoFHandler;
-template <int dim, int spacedim> class MGDoFHandler;
-template <int dim, int spacedim> class FEValues;
-
-namespace hp
-{
-  template <int> class QCollection;
-  template <int, int> class MappingCollection;
-  template <int, int> class DoFHandler;
-}
-
-
-#ifdef DEAL_II_USE_PETSC
-namespace PETScWrappers
-{
-  class SparseMatrix;
-  class Vector;
-  namespace MPI
-  {
-    class SparseMatrix;
-    class BlockSparseMatrix;
-    class Vector;
-    class BlockVector;
-  }
-}
-#endif
-
-#ifdef DEAL_II_USE_TRILINOS
-namespace TrilinosWrappers
-{
-  class SparseMatrix;
-  class Vector;
-  class BlockSparseMatrix;
-  class BlockVector;
-  namespace MPI
-  {
-    class Vector;
-    class BlockVector;
-  }
-}
-#endif
-
-
-/**
- * This namespace provides functions that assemble certain standard matrices for a
- * given triangulation, using a given finite element, a given mapping and a
- * quadrature formula.
- *
- *
- * <h3>Conventions for all functions</h3>
- *
- * There exist two versions of each function. One with a Mapping
- * argument and one without. If a code uses a mapping different from
- * MappingQ1 the functions <em>with</em> mapping argument should
- * be used. Code that uses only MappingQ1 may also use the
- * functions <em>without</em> Mapping argument. Each of these
- * latter functions create a MappingQ1 object and just call the
- * respective functions with that object as mapping argument.
- *
- * All functions take a sparse matrix object to hold the matrix to be
- * created. The functions assume that the matrix is initialized with a
- * sparsity pattern (SparsityPattern) corresponding to the given degree
- * of freedom handler, i.e. the sparsity structure is already as needed.
- * You can do this by calling the DoFTools::make_sparsity_pattern()
- * function.
- *
- * Furthermore it is assumed that no relevant data is in the matrix. Some
- * entries will be overwritten and some others will contain invalid data if
- * the matrix wasn't empty before. Therefore you may want to clear the matrix
- * before assemblage.
- *
- * All created matrices are `raw': they are not condensed,
- * i.e. hanging nodes are not eliminated. The reason is that you may
- * want to add several matrices and could then condense afterwards
- * only once, instead of for every matrix. To actually do computations
- * with these matrices, you have to condense the matrix using the
- * ConstraintMatrix::condense function; you also have to
- * condense the right hand side accordingly and distribute the
- * solution afterwards.
- *
- * If you want to use boundary conditions with the matrices generated
- * by the functions of this class, you have to use a function like
- * <tt>ProblemBase<>::apply_dirichlet_bc</tt> to matrix and right hand
- * side.
- *
- *
- * <h3>Supported matrices</h3>
- *
- * At present there are functions to create the following matrices:
- * <ul>
- * <li> @p create_mass_matrix: create the matrix with entries
- *   $m_{ij} = \int_\Omega \phi_i(x) \phi_j(x) dx$ by numerical
- *   quadrature. Here, the $\phi_i$ are the basis functions of the
- *   finite element space given.
- *
- *   A coefficient may be given to evaluate
- *   $m_{ij} = \int_\Omega a(x) \phi_i(x) \phi_j(x) dx$ instead.
- *
- * <li> @p create_laplace_matrix: create the matrix with entries
- *   $a_{ij} = \int_\Omega \nabla\phi_i(x) \nabla\phi_j(x) dx$ by
- *   numerical quadrature.
- *
- *   Again, a coefficient may be given to evaluate
- *   $a_{ij} = \int_\Omega a(x) \nabla\phi_i(x) \nabla\phi_j(x) dx$ instead.
- * </ul>
- *
- * Make sure that the order of the Quadrature formula given to these
- * functions is sufficiently high to compute the matrices with the
- * required accuracy. For the choice of this quadrature rule you need
- * to take into account the polynomial degree of the FiniteElement
- * basis functions, the roughness of the coefficient @p a, as well as
- * the degree of the given @p Mapping (if any).
- *
- * Note, that for system elements the mass matrix and the laplace matrix is
- * implemented such that each components couple only with itself, i.e. there
- * is no coupling of shape functions belonging to different components. If the
- * degrees of freedom have been sorted according to their vector component
- * (e.g., using DoFRenumbering::component_wise()), then the resulting matrices
- * will be block diagonal.
- *
- * If the finite element for which the mass matrix or the laplace
- * matrix is to be built has more than one component, this function
- * accepts a single coefficient as well as a vector valued coefficient
- * function. For the latter case make sure that the number of
- * components coincides with the number of components of the system
- * finite element.
- *
- *
- * <h3>Matrices on the boundary</h3>
- *
- * The create_boundary_mass_matrix() creates the matrix with entries $m_{ij} =
- * \int_{\Gamma} \phi_i \phi_j dx$, where $\Gamma$ is the union of boundary
- * parts with indicators contained in a FunctionMap passed to the function
- * (i.e. if you want to set up the mass matrix for the parts of the boundary
- * with indicators zero and 2, you pass the function a map of <tt>unsigned
- * char</tt>s as parameter @p boundary_functions containing the keys zero and
- * 2). The size of the matrix is equal to the number of degrees of freedom
- * that have support on the boundary, i.e. it is <em>not</em> a matrix on all
- * degrees of freedom, but only a subset. (The $\phi_i$ in the formula are
- * this subsect of basis functions which have at least part of their support
- * on $\Gamma$.) In order to determine which shape functions are to be
- * considered, and in order to determine in which order, the function takes a
- * @p dof_to_boundary_mapping; this object maps global DoF numbers to a
- * numbering of the degrees of freedom located on the boundary, and can be
- * obtained using the function DoFTools::map_dof_to_boundary_indices().
- *
- * In order to work, the function needs a matrix of the correct size, built on
- * top of a corresponding sparsity pattern. Since we only work on a subset of
- * the degrees of freedom, we can't use the matrices and sparsity patterns
- * that are created for the entire set of degrees of freedom. Rather, you
- * should use the DoFHandler::make_boundary_sparsity_pattern() function to
- * create the correct sparsity pattern, and build a matrix on top of it.
- *
- * Note that at present there is no function that computes the mass matrix for
- * <em>all</em> shape functions, though such a function would be trivial to
- * implement.
- *
- *
- * <h3>Right hand sides</h3>
- *
- * In many cases, you will not only want to build the matrix, but also
- * a right hand side, which will give a vector with
- * $f_i = \int_\Omega f(x) \phi_i(x) dx$. For this purpose, each function
- * exists in two versions, one only building the matrix and one also
- * building the right hand side vector. If you want to create a right
- * hand side vector without creating a matrix, you can use the
- * VectorTools::create_right_hand_side() function. The use of the
- * latter may be useful if you want to create many right hand side
- * vectors.
- *
- * @ingroup numerics
- * @author Wolfgang Bangerth, 1998, Ralf Hartmann, 2001
- */
-namespace MatrixCreator
-{
-                                   /**
-                                    * Assemble the mass matrix. If no
-                                    * coefficient is given, it is assumed
-                                    * to be unity.
-                                    *
-                                    * If the library is configured
-                                    * to use multithreading, this
-                                    * function works in parallel.
-                                    *
-                                    * See the general doc of this class
-                                    * for more information.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const Mapping<dim, spacedim>       &mapping,
-                           const DoFHandler<dim,spacedim>    &dof,
-                           const Quadrature<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Calls the create_mass_matrix()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
-                           const Quadrature<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Assemble the mass matrix and a
-                                    * right hand side vector. If no
-                                    * coefficient is given, it is
-                                    * assumed to be unity.
-                                    *
-                                    * If the library is configured
-                                    * to use multithreading, this
-                                    * function works in parallel.
-                                    *
-                                    * See the general doc of this
-                                    * class for more information.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const Mapping<dim, spacedim>       &mapping,
-                           const DoFHandler<dim,spacedim>    &dof,
-                           const Quadrature<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim>      &rhs,
-                           Vector<double>           &rhs_vector,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Calls the create_mass_matrix()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
-                           const Quadrature<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim>      &rhs,
-                           Vector<double>           &rhs_vector,
-                           const Function<spacedim> * const a = 0);
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
-                           const hp::DoFHandler<dim,spacedim>    &dof,
-                           const hp::QCollection<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
-                           const hp::QCollection<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
-                           const hp::DoFHandler<dim,spacedim>    &dof,
-                           const hp::QCollection<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim>      &rhs,
-                           Vector<double>           &rhs_vector,
-                           const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, typename number, int spacedim>
-  void create_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
-                           const hp::QCollection<dim>    &q,
-                           SparseMatrix<number>     &matrix,
-                           const Function<spacedim>      &rhs,
-                           Vector<double>           &rhs_vector,
-                           const Function<spacedim> * const a = 0);
-
-
-                                   /**
-                                    * Assemble the mass matrix and a
-                                    * right hand side vector along
-                                    * the boundary.
-                                    *
-                                    * The matrix is assumed to
-                                    * already be initialized with a
-                                    * suiting sparsity pattern (the
-                                    * DoFHandler provides an
-                                    * appropriate function).
-                                    *
-                                    * If the library is configured
-                                    * to use multithreading, this
-                                    * function works in parallel.
-                                    *
-                                    * @arg @p weight: an optional
-                                    * weight for the computation of
-                                    * the mass matrix. If no weight
-                                    * is given, it is set to one.
-                                    *
-                                    * @arg @p component_mapping: if
-                                    * the components in @p
-                                    * boundary_functions and @p dof
-                                    * do not coincide, this vector
-                                    * allows them to be remapped. If
-                                    * the vector is not empty, it
-                                    * has to have one entry for each
-                                    * component in @p dof. This
-                                    * entry is the component number
-                                    * in @p boundary_functions that
-                                    * should be used for this
-                                    * component in @p dof. By
-                                    * default, no remapping is
-                                    * applied.
-                                    *
-                                    * @todo This function does not
-                                    * work for finite elements with
-                                    * cell-dependent shape functions.
-                                    */
-  template <int dim, int spacedim>
-
-  void create_boundary_mass_matrix (const Mapping<dim, spacedim>       &mapping,
-                                    const DoFHandler<dim,spacedim>    &dof,
-                                    const Quadrature<dim-1>  &q,
-                                    SparseMatrix<double>     &matrix,
-                                    const typename FunctionMap<spacedim>::type &boundary_functions,
-                                    Vector<double>           &rhs_vector,
-                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-                                    const Function<spacedim> * const weight = 0,
-                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-//                                    * Same function, but for 1d.
-//                                    */
-//
-//     void create_boundary_mass_matrix (const Mapping<1,1>       &mapping,
-//                                    const DoFHandler<1,1>    &dof,
-//                                    const Quadrature<0>    &q,
-//                                    SparseMatrix<double>   &matrix,
-//                                    const FunctionMap<1>::type &boundary_functions,
-//                                    Vector<double>         &rhs_vector,
-//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-//                                    const Function<1> * const a = 0);
-// //codimension 1
-//
-//     void create_boundary_mass_matrix (const Mapping<1,2>       &mapping,
-//                                    const DoFHandler<1,2>    &dof,
-//                                    const Quadrature<0>    &q,
-//                                    SparseMatrix<double>   &matrix,
-//                                    const FunctionMap<2>::type &boundary_functions,
-//                                    Vector<double>         &rhs_vector,
-//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-//                                    const Function<2> * const a = 0);
-
-
-
-                                   /**
-                                    * Calls the
-                                    * create_boundary_mass_matrix()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-
-  void create_boundary_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
-                                    const Quadrature<dim-1>  &q,
-                                    SparseMatrix<double>     &matrix,
-                                    const typename FunctionMap<spacedim>::type        &boundary_functions,
-                                    Vector<double>           &rhs_vector,
-                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-                                    const Function<spacedim> * const a = 0,
-                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, int spacedim>
-
-  void create_boundary_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
-                                    const hp::DoFHandler<dim,spacedim>    &dof,
-                                    const hp::QCollection<dim-1>  &q,
-                                    SparseMatrix<double>     &matrix,
-                                    const typename FunctionMap<spacedim>::type &boundary_functions,
-                                    Vector<double>           &rhs_vector,
-                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-                                    const Function<spacedim> * const a = 0,
-                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-//
-//     void create_boundary_mass_matrix (const hp::MappingCollection<1,1>       &mapping,
-//                                    const hp::DoFHandler<1,1>    &dof,
-//                                    const hp::QCollection<0>    &q,
-//                                    SparseMatrix<double>   &matrix,
-//                                    const FunctionMap<1>::type &boundary_functions,
-//                                    Vector<double>         &rhs_vector,
-//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-//                                    const Function<1> * const a = 0);
-
-                                   /**
-                                    * Same function as above, but for hp
-                                    * objects.
-                                    */
-  template <int dim, int spacedim>
-
-  void create_boundary_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
-                                    const hp::QCollection<dim-1>  &q,
-                                    SparseMatrix<double>     &matrix,
-                                    const typename FunctionMap<spacedim>::type        &boundary_functions,
-                                    Vector<double>           &rhs_vector,
-                                    std::vector<unsigned int>&dof_to_boundary_mapping,
-                                    const Function<spacedim> * const a = 0,
-                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Assemble the Laplace
-                                    * matrix. If no coefficient is
-                                    * given, it is assumed to be
-                                    * constant one.
-                                    *
-                                    * If the library is configured
-                                    * to use multithreading, this
-                                    * function works in parallel.
-                                    *
-                                    * See the general doc of this
-                                    * class for more information.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const Mapping<dim, spacedim>       &mapping,
-                              const DoFHandler<dim,spacedim>    &dof,
-                              const Quadrature<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Calls the
-                                    * create_laplace_matrix()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const DoFHandler<dim,spacedim>    &dof,
-                              const Quadrature<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Assemble the Laplace matrix
-                                    * and a right hand side
-                                    * vector. If no coefficient is
-                                    * given, it is assumed to be
-                                    * constant one.
-                                    *
-                                    * If the library is configured
-                                    * to use multithreading, this
-                                    * function works in parallel.
-                                    *
-                                    * See the general doc of this
-                                    * class for more information.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const Mapping<dim, spacedim>       &mapping,
-                              const DoFHandler<dim,spacedim>    &dof,
-                              const Quadrature<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim>      &rhs,
-                              Vector<double>           &rhs_vector,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Calls the
-                                    * create_laplace_matrix()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const DoFHandler<dim,spacedim>    &dof,
-                              const Quadrature<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim>      &rhs,
-                              Vector<double>           &rhs_vector,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Like the functions above, but for hp
-                                    * dof handlers, mappings, and quadrature
-                                    * collections.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
-                              const hp::DoFHandler<dim,spacedim>    &dof,
-                              const hp::QCollection<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Like the functions above, but for hp
-                                    * dof handlers, mappings, and quadrature
-                                    * collections.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
-                              const hp::QCollection<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Like the functions above, but for hp
-                                    * dof handlers, mappings, and quadrature
-                                    * collections.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
-                              const hp::DoFHandler<dim,spacedim>    &dof,
-                              const hp::QCollection<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim>      &rhs,
-                              Vector<double>           &rhs_vector,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Like the functions above, but for hp
-                                    * dof handlers, mappings, and quadrature
-                                    * collections.
-                                    */
-  template <int dim, int spacedim>
-  void create_laplace_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
-                              const hp::QCollection<dim>    &q,
-                              SparseMatrix<double>     &matrix,
-                              const Function<spacedim>      &rhs,
-                              Vector<double>           &rhs_vector,
-                              const Function<spacedim> * const a = 0);
-
-                                   /**
-                                    * Exception
-                                    */
-  DeclException0 (ExcComponentMismatch);
-}
-
-
-
-/**
- * Provide a collection of functions operating on matrices. These include
- * the application of boundary conditions to a linear system of equations
- * and others.
- *
- *
- * <h3>Boundary conditions</h3>
- *
- * The apply_boundary_values() function inserts boundary conditions
- * into a system of equations.  To actually do this you have to
- * specify a list of degree of freedom indices along with the values
- * these degrees of freedom shall assume. To see how to get such a
- * list, see the discussion of the
- * VectorTools::interpolate_boundary_values function.
- *
- * There are two ways to incorporate fixed degrees of freedom such as boundary
- * nodes into a linear system, as discussed below.
- *
- *
- * <h3>Global elimination</h3>
- *
- * In the first method, we first assemble the global linear system without
- * respect for fixed degrees of freedom, and in a second step eliminate them
- * again from the linear system. The inclusion into the assembly process is as
- * follows: when the matrix and vectors are set up, a list of nodes subject to
- * dirichlet bc is made and matrix and vectors are modified accordingly. This
- * is done by deleting all entries in the matrix in the line of this degree of
- * freedom, setting the main diagonal entry to a suitable positive value and
- * the right hand side element to a value so that the solution of the linear
- * system will have the boundary value at this node. To decouple the remaining
- * linear system of equations and to make the system symmetric again (at least
- * if it was before), one Gauss elimination step is performed with this line,
- * by adding this (now almost empty) line to all other lines which couple with
- * the given degree of freedom and thus eliminating all coupling between this
- * degree of freedom and others. Now the respective column also consists only
- * of zeroes, apart from the main diagonal entry. Alternatively, the functions
- * in this class take a boolean parameter that allows to omit this last step,
- * if symmetry of the resulting linear system is not required. Note that
- * usually even CG can cope with a non-symmetric linear system with this
- * particular structure.
- *
- * Finding which rows contain an entry in the column for which we are
- * presently performing a Gauss elimination step is either difficult
- * or very simple, depending on the circumstances. If the sparsity
- * pattern is symmetric (whether the matrix is symmetric is irrelevant
- * here), then we can infer the rows which have a nonzero entry in the
- * present column by looking at which columns in the present row are
- * nonempty. In this case, we only need to look into a fixed number of
- * rows and need not search all rows. On the other hand, if the
- * sparsity pattern is nonsymmetric, then we need to use an iterative
- * solver which can handle nonsymmetric matrices in any case, so there
- * may be no need to do the Gauss elimination anyway. In fact, this is
- * the way the function works: it takes a parameter
- * (@p elininate_columns) that specifies whether the sparsity pattern
- * is symmetric; if so, then the column is eliminated and the right
- * hand side is also modified accordingly. If not, then only the row
- * is deleted and the column is not touched at all, and all right hand
- * side values apart from the one corresponding to the present row
- * remain unchanged.
- *
- * If the sparsity pattern for your matrix is non-symmetric, you must
- * set the value of this parameter to @p false in any case, since then
- * we can't eliminate the column without searching all rows, which
- * would be too expensive (if @p N be the number of rows, and @p m the
- * number of nonzero elements per row, then eliminating one column is
- * an <tt>O(N*log(m))</tt> operation, since searching in each row takes
- * <tt>log(m)</tt> operations). If your sparsity pattern is symmetric, but
- * your matrix is not, then you might specify @p false as well. If your
- * sparsity pattern and matrix are both symmetric, you might want to
- * specify @p true (the complexity of eliminating one row is then
- * <tt>O(m*log(m))</tt>, since we only have to search @p m rows for the
- * respective element of the column). Given the fact that @p m is
- * roughly constant, irrespective of the discretization, and that the
- * number of boundary nodes is <tt>sqrt(N)</tt> in 2d, the algorithm for
- * symmetric sparsity patterns is <tt>O(sqrt(N)*m*log(m))</tt>, while it
- * would be <tt>O(N*sqrt(N)*log(m))</tt> for the general case; the latter
- * is too expensive to be performed.
- *
- * It seems as if we had to make clear not to overwrite the lines of
- * other boundary nodes when doing the Gauss elimination
- * step. However, since we reset the right hand side when passing such
- * a node, it is not a problem to change the right hand side values of
- * other boundary nodes not yet processed. It would be a problem to
- * change those entries of nodes already processed, but since the
- * matrix entry of the present column on the row of an already
- * processed node is zero, the Gauss step does not change the right
- * hand side. We need therefore not take special care of other
- * boundary nodes.
- *
- * To make solving faster, we preset the solution vector with the right
- * boundary values (as to why this is necessary, see the discussion below in
- * the description of local elimination). It it not clear whether the deletion
- * of coupling between the boundary degree of freedom and other dofs really
- * forces the corresponding entry in the solution vector to have the right
- * value when using iterative solvers, since their search directions may
- * contain components in the direction of the boundary node. For this reason,
- * we perform a very simple line balancing by not setting the main diagonal
- * entry to unity, but rather to the value it had before deleting this line,
- * or to the first nonzero main diagonal entry if it is zero for some reason.
- * Of course we have to change the right hand side appropriately. This is not
- * a very good strategy, but it at least should give the main diagonal entry a
- * value in the right order of dimension, which makes the solvution process a
- * bit more stable. A refined algorithm would set the entry to the mean of the
- * other diagonal entries, but this seems to be too expensive.
- *
- * In some cases, it might be interesting to solve several times with
- * the same matrix, but for different right hand sides or boundary
- * values. However, since the modification for boundary values of the
- * right hand side vector depends on the original matrix, this is not
- * possible without storing the original matrix somewhere and applying
- * the @p apply_boundary_conditions function to a copy of it each
- * time we want to solve. In that case, you can use the
- * FilteredMatrix class in the @p LAC sublibrary. There you can
- * also find a formal (mathematical) description of the process of
- * modifying the matrix and right hand side vectors for boundary
- * values.
- *
- *
- * <h3>Local elimination</h3>
- *
- * The second way of handling boundary values is to modify the local
- * matrix and vector contributions appropriately before transferring
- * them into the global sparse matrix and vector. This is what
- * local_apply_boundary_values() does. The advantage is that we save
- * the call to the apply_boundary_values function (which is expensive
- * because it has to work on sparse data structures). On the other
- * hand, the local_apply_boundary_values() function is called many
- * times, even if we only have a very small number of fixed boundary
- * nodes, and the main drawback is that this function doesn't work as
- * expected if there are hanging nodes that also need to be
- * treated. The reason that this function doesn't work is that it is
- * meant to be run before distribution into the global matrix,
- * i.e. before hanging nodes are distributed; since hanging nodes can
- * be constrained to a boundary node, the treatment of hanging nodes
- * can add entries again to rows and columns corresponding to boundary
- * values and that we have already vacated in the local elimination
- * step. To make things worse, in 3d constrained nodes can even lie on
- * the boundary. Thus, it is imperative that boundary node elimination
- * happens @em after hanging node elimination, but this can't be
- * achieved with local elimination of boundary nodes unless there are
- * no hanging node constraints at all.
- *
- * Local elimination has one additional drawback: we don't have access
- * to the solution vector, only to the local contributions to the
- * matrix and right hand side. The problem with this is subtle, but
- * can lead to very hard to find difficulties: when we eliminate a
- * degree of freedom, we delete the row and column of this unknown,
- * and set the diagonal entry to some positive value. To make the
- * problem more or less well-conditioned, we set this diagonal entry
- * to the absolute value of its prior value if that was non-zero, or
- * to the average magnitude of all other nonzero diagonal
- * elements. Then we set the right hand side value such that the
- * resulting solution entry has the right value as given by the
- * boundary values. Since we add these contributions up over all local
- * contributions, the diagonal entry and the respective value in the
- * right hand side are added up correspondingly, so that the entry in
- * the solution of the linear system is still valid.
- *
- * A problem arises, however, if the diagonal entries so chosen are not
- * appropriate for the linear system. Consider, for example, a mixed Laplace
- * problem with matrix <tt>[[A B][C^T 0]]</tt>, where we only specify boundary
- * values for the second component of the solution. In the mixed formulation,
- * the stress-strain tensor only appears in either the matrix @p B or @p C, so
- * one of them may be significantly larger or smaller than the other one. Now,
- * if we eliminate boundary values, we delete some rows and columns, but we
- * also introduce a few entries on the diagonal of the lower right block, so
- * that we get the system <tt>[[A' B'][C'^T X]]</tt>. The diagonal entries in
- * the matrix @p X will be of the same order of magnitude as those in @p
- * A. Now, if we solve this system in the Schur complement formulation, we
- * have to invert the matrix <tt>X-C'^TA'^{-1}B'</tt>. Deleting rows and
- * columns above makes sure that boundary nodes indeed have empty rows and
- * columns in the Schur complement as well, except for the entries in @p
- * X. However, the entries in @p X may be of significantly different orders of
- * magnitude than those in <tt>C'^TA'^{-1}B'</tt>! If this is the case, we may
- * run into trouble with iterative solvers. For example, assume that we start
- * with zero entries in the solution vector and that the entries in @p X are
- * several orders of magnitude too small; in this case, iterative solvers will
- * compute the residual vector in each step and form correction vectors, but
- * since the entries in @p X are so small, the residual contributions for
- * boundary nodes are really small, despite the fact that the boundary nodes
- * are still at values close to zero and not in accordance with the prescribed
- * boundary values. Since the residual is so small, the corrections the
- * iterative solver computes are very small, and in the end the solver will
- * indicate convergence to a small total residual with the boundary values
- * still being significantly wrong.
- *
- * We avoid this problem in the global elimination process described above by
- * 'priming' the solution vector with the correct values for boundary
- * nodes. However, we can't do this for the local elimination
- * process. Therefore, if you experience a problem like the one above, you
- * need to either increase the diagonal entries in @p X to a size that matches
- * those in the other part of the Schur complement, or, simpler, prime the
- * solution vector before you start the solver.
- *
- * In conclusion, local elimination of boundary nodes only works if
- * there are no hanging nodes and even then doesn't always work fully
- * satisfactorily.
- *
- * @ingroup numerics
- * @author Wolfgang Bangerth, 1998, 2000, 2004, 2005
- */
-namespace MatrixTools
-{
-                                   /**
-                                    * Import namespace MatrixCreator for
-                                    * backward compatibility with older
-                                    * versions of deal.II in which these
-                                    * namespaces were classes and class
-                                    * MatrixTools was publicly derived from
-                                    * class MatrixCreator.
-                                    */
-  using namespace MatrixCreator;
-
-                                   /**
-                                    * Apply dirichlet boundary conditions
-                                    * to the system matrix and vectors
-                                    * as described in the general
-                                    * documentation.
-                                    */
-  template <typename number>
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         SparseMatrix<number>  &matrix,
-                         Vector<number>        &solution,
-                         Vector<number>        &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * Apply dirichlet boundary
-                                    * conditions to the system
-                                    * matrix and vectors as
-                                    * described in the general
-                                    * documentation. This function
-                                    * works for block sparse
-                                    * matrices and block vectors
-                                    */
-  template <typename number>
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         BlockSparseMatrix<number>           &matrix,
-                         BlockVector<number>                 &solution,
-                         BlockVector<number>                 &right_hand_side,
-                         const bool           eliminate_columns = true);
-
-#ifdef DEAL_II_USE_PETSC
-                                   /**
-                                    * Apply dirichlet boundary conditions to
-                                    * the system matrix and vectors as
-                                    * described in the general
-                                    * documentation. This function works on
-                                    * the classes that are used to wrap
-                                    * PETSc objects.
-                                    *
-                                    * Note that this function is not very
-                                    * efficient: it needs to alternatingly
-                                    * read and write into the matrix, a
-                                    * situation that PETSc does not handle
-                                    * too well. In addition, we only get rid
-                                    * of rows corresponding to boundary
-                                    * nodes, but the corresponding case of
-                                    * deleting the respective columns
-                                    * (i.e. if @p eliminate_columns is @p
-                                    * true) is not presently implemented,
-                                    * and probably will never because it is
-                                    * too expensive without direct access to
-                                    * the PETSc data structures. (This leads
-                                    * to the situation where the action
-                                    * indicates by the default value of the
-                                    * last argument is actually not
-                                    * implemented; that argument has
-                                    * <code>true</code> as its default value
-                                    * to stay consistent with the other
-                                    * functions of same name in this class.)
-                                    * A third reason against this function
-                                    * is that it doesn't handle the case
-                                    * where the matrix is distributed across
-                                    * an MPI system.
-                                    *
-                                    * This function is used in
-                                    * step-17 and
-                                    * step-18.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         PETScWrappers::SparseMatrix  &matrix,
-                         PETScWrappers::Vector  &solution,
-                         PETScWrappers::Vector  &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * Same function, but for parallel PETSc
-                                    * matrices.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         PETScWrappers::MPI::SparseMatrix  &matrix,
-                         PETScWrappers::MPI::Vector  &solution,
-                         PETScWrappers::MPI::Vector  &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * Same function, but for
-                                    * parallel PETSc matrices. Note
-                                    * that this function only
-                                    * operates on the local range of
-                                    * the parallel matrix, i.e. it
-                                    * only eliminates rows
-                                    * corresponding to degrees of
-                                    * freedom for which the row is
-                                    * stored on the present
-                                    * processor. All other boundary
-                                    * nodes are ignored, and it
-                                    * doesn't matter whether they
-                                    * are present in the first
-                                    * argument to this function or
-                                    * not. A consequence of this,
-                                    * however, is that this function
-                                    * has to be called from all
-                                    * processors that participate in
-                                    * sharing the contents of the
-                                    * given matrices and vectors. It
-                                    * is also implied that the local
-                                    * range for all objects passed
-                                    * to this function is the same.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         PETScWrappers::MPI::SparseMatrix  &matrix,
-                         PETScWrappers::Vector       &solution,
-                         PETScWrappers::MPI::Vector  &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * Same as above but for BlockSparseMatrix.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double>  &boundary_values,
-                         PETScWrappers::MPI::BlockSparseMatrix  &matrix,
-                         PETScWrappers::MPI::BlockVector        &solution,
-                         PETScWrappers::MPI::BlockVector        &right_hand_side,
-                         const bool       eliminate_columns = true);
-
-#endif
-
-#ifdef DEAL_II_USE_TRILINOS
-                                   /**
-                                    * Apply dirichlet boundary
-                                    * conditions to the system matrix
-                                    * and vectors as described in the
-                                    * general documentation. This
-                                    * function works on the classes
-                                    * that are used to wrap Trilinos
-                                    * objects.
-                                    *
-                                    * Note that this function is not
-                                    * very efficient: it needs to
-                                    * alternatingly read and write
-                                    * into the matrix, a situation
-                                    * that Trilinos does not handle
-                                    * too well. In addition, we only
-                                    * get rid of rows corresponding to
-                                    * boundary nodes, but the
-                                    * corresponding case of deleting
-                                    * the respective columns (i.e. if
-                                    * @p eliminate_columns is @p true)
-                                    * is not presently implemented,
-                                    * and probably will never because
-                                    * it is too expensive without
-                                    * direct access to the Trilinos
-                                    * data structures. (This leads to
-                                    * the situation where the action
-                                    * indicates by the default value
-                                    * of the last argument is actually
-                                    * not implemented; that argument
-                                    * has <code>true</code> as its
-                                    * default value to stay consistent
-                                    * with the other functions of same
-                                    * name in this class.)  A third
-                                    * reason against this function is
-                                    * that it doesn't handle the case
-                                    * where the matrix is distributed
-                                    * across an MPI system.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         TrilinosWrappers::SparseMatrix  &matrix,
-                         TrilinosWrappers::Vector        &solution,
-                         TrilinosWrappers::Vector        &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * This function does the same as
-                                    * the one above, except now
-                                    * working on block structures.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         TrilinosWrappers::BlockSparseMatrix  &matrix,
-                         TrilinosWrappers::BlockVector        &solution,
-                         TrilinosWrappers::BlockVector        &right_hand_side,
-                         const bool                eliminate_columns = true);
-
-                                   /**
-                                    * Apply dirichlet boundary
-                                    * conditions to the system matrix
-                                    * and vectors as described in the
-                                    * general documentation. This
-                                    * function works on the classes
-                                    * that are used to wrap Trilinos
-                                    * objects.
-                                    *
-                                    * Note that this function is not
-                                    * very efficient: it needs to
-                                    * alternatingly read and write
-                                    * into the matrix, a situation
-                                    * that Trilinos does not handle
-                                    * too well. In addition, we only
-                                    * get rid of rows corresponding to
-                                    * boundary nodes, but the
-                                    * corresponding case of deleting
-                                    * the respective columns (i.e. if
-                                    * @p eliminate_columns is @p true)
-                                    * is not presently implemented,
-                                    * and probably will never because
-                                    * it is too expensive without
-                                    * direct access to the Trilinos
-                                    * data structures. (This leads to
-                                    * the situation where the action
-                                    * indicates by the default value
-                                    * of the last argument is actually
-                                    * not implemented; that argument
-                                    * has <code>true</code> as its
-                                    * default value to stay consistent
-                                    * with the other functions of same
-                                    * name in this class.) This
-                                    * function does work on MPI vector
-                                    * types.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         TrilinosWrappers::SparseMatrix  &matrix,
-                         TrilinosWrappers::MPI::Vector   &solution,
-                         TrilinosWrappers::MPI::Vector   &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-                                   /**
-                                    * This function does the same as
-                                    * the one above, except now working
-                                    * on block structures.
-                                    */
-  void
-  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                         TrilinosWrappers::BlockSparseMatrix  &matrix,
-                         TrilinosWrappers::MPI::BlockVector   &solution,
-                         TrilinosWrappers::MPI::BlockVector   &right_hand_side,
-                         const bool                eliminate_columns = true);
-#endif
-
-                                   /**
-                                    * Rather than applying boundary
-                                    * values to the global matrix
-                                    * and vector after creating the
-                                    * global matrix, this function
-                                    * does so during assembly, by
-                                    * modifying the local matrix and
-                                    * vector contributions. If you
-                                    * call this function on all
-                                    * local contributions, the
-                                    * resulting matrix will have the
-                                    * same entries, and the final
-                                    * call to
-                                    * apply_boundary_values() on the
-                                    * global system will not be
-                                    * necessary.
-                                    *
-                                    * Since this function does not
-                                    * have to work on the
-                                    * complicated data structures of
-                                    * sparse matrices, it is
-                                    * relatively cheap. It may
-                                    * therefore be a win if you have
-                                    * many fixed degrees of freedom
-                                    * (e.g. boundary nodes), or if
-                                    * access to the sparse matrix is
-                                    * expensive (e.g. for block
-                                    * sparse matrices, or for PETSc
-                                    * or trilinos
-                                    * matrices). However, it doesn't
-                                    * work as expected if there are
-                                    * also hanging nodes to be
-                                    * considered. More caveats are
-                                    * listed in the general
-                                    * documentation of this class.
-                                    */
-  void
-  local_apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
-                               const std::vector<unsigned int> &local_dof_indices,
-                               FullMatrix<double> &local_matrix,
-                               Vector<double>     &local_rhs,
-                               const bool          eliminate_columns);
-
-                                   /**
-                                    * Exception
-                                    */
-  DeclException0 (ExcBlocksDontMatch);
-}
 
+//this file is deprecated, use matrix_tools.h instead
 
+#ifndef __deal2__matrices_h
+#define __deal2__matrices_h
 
-DEAL_II_NAMESPACE_CLOSE
+#include <deal.II/numerics/matrix_tools.h>
 
 #endif
diff --git a/deal.II/include/deal.II/numerics/matrix_tools.h b/deal.II/include/deal.II/numerics/matrix_tools.h
new file mode 100644 (file)
index 0000000..882c422
--- /dev/null
@@ -0,0 +1,1098 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+#ifndef __deal2__matrix_tools_h
+#define __deal2__matrix_tools_h
+
+
+#include <deal.II/base/config.h>
+#include <deal.II/base/exceptions.h>
+#include <deal.II/base/thread_management.h>
+#include <deal.II/dofs/function_map.h>
+
+#include <map>
+
+DEAL_II_NAMESPACE_OPEN
+
+
+// forward declarations
+template <int dim> class Quadrature;
+
+template<typename number> class Vector;
+template<typename number> class FullMatrix;
+template<typename number> class SparseMatrix;
+
+template <typename number> class BlockSparseMatrix;
+template <typename Number> class BlockVector;
+
+template <int dim, int spacedim> class Mapping;
+template <int dim, int spacedim> class DoFHandler;
+template <int dim, int spacedim> class MGDoFHandler;
+template <int dim, int spacedim> class FEValues;
+
+namespace hp
+{
+  template <int> class QCollection;
+  template <int, int> class MappingCollection;
+  template <int, int> class DoFHandler;
+}
+
+
+#ifdef DEAL_II_USE_PETSC
+namespace PETScWrappers
+{
+  class SparseMatrix;
+  class Vector;
+  namespace MPI
+  {
+    class SparseMatrix;
+    class BlockSparseMatrix;
+    class Vector;
+    class BlockVector;
+  }
+}
+#endif
+
+#ifdef DEAL_II_USE_TRILINOS
+namespace TrilinosWrappers
+{
+  class SparseMatrix;
+  class Vector;
+  class BlockSparseMatrix;
+  class BlockVector;
+  namespace MPI
+  {
+    class Vector;
+    class BlockVector;
+  }
+}
+#endif
+
+
+/**
+ * This namespace provides functions that assemble certain standard matrices for a
+ * given triangulation, using a given finite element, a given mapping and a
+ * quadrature formula.
+ *
+ *
+ * <h3>Conventions for all functions</h3>
+ *
+ * There exist two versions of each function. One with a Mapping
+ * argument and one without. If a code uses a mapping different from
+ * MappingQ1 the functions <em>with</em> mapping argument should
+ * be used. Code that uses only MappingQ1 may also use the
+ * functions <em>without</em> Mapping argument. Each of these
+ * latter functions create a MappingQ1 object and just call the
+ * respective functions with that object as mapping argument.
+ *
+ * All functions take a sparse matrix object to hold the matrix to be
+ * created. The functions assume that the matrix is initialized with a
+ * sparsity pattern (SparsityPattern) corresponding to the given degree
+ * of freedom handler, i.e. the sparsity structure is already as needed.
+ * You can do this by calling the DoFTools::make_sparsity_pattern()
+ * function.
+ *
+ * Furthermore it is assumed that no relevant data is in the matrix. Some
+ * entries will be overwritten and some others will contain invalid data if
+ * the matrix wasn't empty before. Therefore you may want to clear the matrix
+ * before assemblage.
+ *
+ * All created matrices are `raw': they are not condensed,
+ * i.e. hanging nodes are not eliminated. The reason is that you may
+ * want to add several matrices and could then condense afterwards
+ * only once, instead of for every matrix. To actually do computations
+ * with these matrices, you have to condense the matrix using the
+ * ConstraintMatrix::condense function; you also have to
+ * condense the right hand side accordingly and distribute the
+ * solution afterwards.
+ *
+ * If you want to use boundary conditions with the matrices generated
+ * by the functions of this class, you have to use a function like
+ * <tt>ProblemBase<>::apply_dirichlet_bc</tt> to matrix and right hand
+ * side.
+ *
+ *
+ * <h3>Supported matrices</h3>
+ *
+ * At present there are functions to create the following matrices:
+ * <ul>
+ * <li> @p create_mass_matrix: create the matrix with entries
+ *   $m_{ij} = \int_\Omega \phi_i(x) \phi_j(x) dx$ by numerical
+ *   quadrature. Here, the $\phi_i$ are the basis functions of the
+ *   finite element space given.
+ *
+ *   A coefficient may be given to evaluate
+ *   $m_{ij} = \int_\Omega a(x) \phi_i(x) \phi_j(x) dx$ instead.
+ *
+ * <li> @p create_laplace_matrix: create the matrix with entries
+ *   $a_{ij} = \int_\Omega \nabla\phi_i(x) \nabla\phi_j(x) dx$ by
+ *   numerical quadrature.
+ *
+ *   Again, a coefficient may be given to evaluate
+ *   $a_{ij} = \int_\Omega a(x) \nabla\phi_i(x) \nabla\phi_j(x) dx$ instead.
+ * </ul>
+ *
+ * Make sure that the order of the Quadrature formula given to these
+ * functions is sufficiently high to compute the matrices with the
+ * required accuracy. For the choice of this quadrature rule you need
+ * to take into account the polynomial degree of the FiniteElement
+ * basis functions, the roughness of the coefficient @p a, as well as
+ * the degree of the given @p Mapping (if any).
+ *
+ * Note, that for system elements the mass matrix and the laplace matrix is
+ * implemented such that each components couple only with itself, i.e. there
+ * is no coupling of shape functions belonging to different components. If the
+ * degrees of freedom have been sorted according to their vector component
+ * (e.g., using DoFRenumbering::component_wise()), then the resulting matrices
+ * will be block diagonal.
+ *
+ * If the finite element for which the mass matrix or the laplace
+ * matrix is to be built has more than one component, this function
+ * accepts a single coefficient as well as a vector valued coefficient
+ * function. For the latter case make sure that the number of
+ * components coincides with the number of components of the system
+ * finite element.
+ *
+ *
+ * <h3>Matrices on the boundary</h3>
+ *
+ * The create_boundary_mass_matrix() creates the matrix with entries $m_{ij} =
+ * \int_{\Gamma} \phi_i \phi_j dx$, where $\Gamma$ is the union of boundary
+ * parts with indicators contained in a FunctionMap passed to the function
+ * (i.e. if you want to set up the mass matrix for the parts of the boundary
+ * with indicators zero and 2, you pass the function a map of <tt>unsigned
+ * char</tt>s as parameter @p boundary_functions containing the keys zero and
+ * 2). The size of the matrix is equal to the number of degrees of freedom
+ * that have support on the boundary, i.e. it is <em>not</em> a matrix on all
+ * degrees of freedom, but only a subset. (The $\phi_i$ in the formula are
+ * this subsect of basis functions which have at least part of their support
+ * on $\Gamma$.) In order to determine which shape functions are to be
+ * considered, and in order to determine in which order, the function takes a
+ * @p dof_to_boundary_mapping; this object maps global DoF numbers to a
+ * numbering of the degrees of freedom located on the boundary, and can be
+ * obtained using the function DoFTools::map_dof_to_boundary_indices().
+ *
+ * In order to work, the function needs a matrix of the correct size, built on
+ * top of a corresponding sparsity pattern. Since we only work on a subset of
+ * the degrees of freedom, we can't use the matrices and sparsity patterns
+ * that are created for the entire set of degrees of freedom. Rather, you
+ * should use the DoFHandler::make_boundary_sparsity_pattern() function to
+ * create the correct sparsity pattern, and build a matrix on top of it.
+ *
+ * Note that at present there is no function that computes the mass matrix for
+ * <em>all</em> shape functions, though such a function would be trivial to
+ * implement.
+ *
+ *
+ * <h3>Right hand sides</h3>
+ *
+ * In many cases, you will not only want to build the matrix, but also
+ * a right hand side, which will give a vector with
+ * $f_i = \int_\Omega f(x) \phi_i(x) dx$. For this purpose, each function
+ * exists in two versions, one only building the matrix and one also
+ * building the right hand side vector. If you want to create a right
+ * hand side vector without creating a matrix, you can use the
+ * VectorTools::create_right_hand_side() function. The use of the
+ * latter may be useful if you want to create many right hand side
+ * vectors.
+ *
+ * @ingroup numerics
+ * @author Wolfgang Bangerth, 1998, Ralf Hartmann, 2001
+ */
+namespace MatrixCreator
+{
+                                   /**
+                                    * Assemble the mass matrix. If no
+                                    * coefficient is given, it is assumed
+                                    * to be unity.
+                                    *
+                                    * If the library is configured
+                                    * to use multithreading, this
+                                    * function works in parallel.
+                                    *
+                                    * See the general doc of this class
+                                    * for more information.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const Mapping<dim, spacedim>       &mapping,
+                           const DoFHandler<dim,spacedim>    &dof,
+                           const Quadrature<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Calls the create_mass_matrix()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
+                           const Quadrature<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Assemble the mass matrix and a
+                                    * right hand side vector. If no
+                                    * coefficient is given, it is
+                                    * assumed to be unity.
+                                    *
+                                    * If the library is configured
+                                    * to use multithreading, this
+                                    * function works in parallel.
+                                    *
+                                    * See the general doc of this
+                                    * class for more information.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const Mapping<dim, spacedim>       &mapping,
+                           const DoFHandler<dim,spacedim>    &dof,
+                           const Quadrature<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim>      &rhs,
+                           Vector<double>           &rhs_vector,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Calls the create_mass_matrix()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
+                           const Quadrature<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim>      &rhs,
+                           Vector<double>           &rhs_vector,
+                           const Function<spacedim> * const a = 0);
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
+                           const hp::DoFHandler<dim,spacedim>    &dof,
+                           const hp::QCollection<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
+                           const hp::QCollection<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
+                           const hp::DoFHandler<dim,spacedim>    &dof,
+                           const hp::QCollection<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim>      &rhs,
+                           Vector<double>           &rhs_vector,
+                           const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, typename number, int spacedim>
+  void create_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
+                           const hp::QCollection<dim>    &q,
+                           SparseMatrix<number>     &matrix,
+                           const Function<spacedim>      &rhs,
+                           Vector<double>           &rhs_vector,
+                           const Function<spacedim> * const a = 0);
+
+
+                                   /**
+                                    * Assemble the mass matrix and a
+                                    * right hand side vector along
+                                    * the boundary.
+                                    *
+                                    * The matrix is assumed to
+                                    * already be initialized with a
+                                    * suiting sparsity pattern (the
+                                    * DoFHandler provides an
+                                    * appropriate function).
+                                    *
+                                    * If the library is configured
+                                    * to use multithreading, this
+                                    * function works in parallel.
+                                    *
+                                    * @arg @p weight: an optional
+                                    * weight for the computation of
+                                    * the mass matrix. If no weight
+                                    * is given, it is set to one.
+                                    *
+                                    * @arg @p component_mapping: if
+                                    * the components in @p
+                                    * boundary_functions and @p dof
+                                    * do not coincide, this vector
+                                    * allows them to be remapped. If
+                                    * the vector is not empty, it
+                                    * has to have one entry for each
+                                    * component in @p dof. This
+                                    * entry is the component number
+                                    * in @p boundary_functions that
+                                    * should be used for this
+                                    * component in @p dof. By
+                                    * default, no remapping is
+                                    * applied.
+                                    *
+                                    * @todo This function does not
+                                    * work for finite elements with
+                                    * cell-dependent shape functions.
+                                    */
+  template <int dim, int spacedim>
+
+  void create_boundary_mass_matrix (const Mapping<dim, spacedim>       &mapping,
+                                    const DoFHandler<dim,spacedim>    &dof,
+                                    const Quadrature<dim-1>  &q,
+                                    SparseMatrix<double>     &matrix,
+                                    const typename FunctionMap<spacedim>::type &boundary_functions,
+                                    Vector<double>           &rhs_vector,
+                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+                                    const Function<spacedim> * const weight = 0,
+                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+//                                    * Same function, but for 1d.
+//                                    */
+//
+//     void create_boundary_mass_matrix (const Mapping<1,1>       &mapping,
+//                                    const DoFHandler<1,1>    &dof,
+//                                    const Quadrature<0>    &q,
+//                                    SparseMatrix<double>   &matrix,
+//                                    const FunctionMap<1>::type &boundary_functions,
+//                                    Vector<double>         &rhs_vector,
+//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+//                                    const Function<1> * const a = 0);
+// //codimension 1
+//
+//     void create_boundary_mass_matrix (const Mapping<1,2>       &mapping,
+//                                    const DoFHandler<1,2>    &dof,
+//                                    const Quadrature<0>    &q,
+//                                    SparseMatrix<double>   &matrix,
+//                                    const FunctionMap<2>::type &boundary_functions,
+//                                    Vector<double>         &rhs_vector,
+//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+//                                    const Function<2> * const a = 0);
+
+
+
+                                   /**
+                                    * Calls the
+                                    * create_boundary_mass_matrix()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+
+  void create_boundary_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
+                                    const Quadrature<dim-1>  &q,
+                                    SparseMatrix<double>     &matrix,
+                                    const typename FunctionMap<spacedim>::type        &boundary_functions,
+                                    Vector<double>           &rhs_vector,
+                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+                                    const Function<spacedim> * const a = 0,
+                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, int spacedim>
+
+  void create_boundary_mass_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
+                                    const hp::DoFHandler<dim,spacedim>    &dof,
+                                    const hp::QCollection<dim-1>  &q,
+                                    SparseMatrix<double>     &matrix,
+                                    const typename FunctionMap<spacedim>::type &boundary_functions,
+                                    Vector<double>           &rhs_vector,
+                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+                                    const Function<spacedim> * const a = 0,
+                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+//
+//     void create_boundary_mass_matrix (const hp::MappingCollection<1,1>       &mapping,
+//                                    const hp::DoFHandler<1,1>    &dof,
+//                                    const hp::QCollection<0>    &q,
+//                                    SparseMatrix<double>   &matrix,
+//                                    const FunctionMap<1>::type &boundary_functions,
+//                                    Vector<double>         &rhs_vector,
+//                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+//                                    const Function<1> * const a = 0);
+
+                                   /**
+                                    * Same function as above, but for hp
+                                    * objects.
+                                    */
+  template <int dim, int spacedim>
+
+  void create_boundary_mass_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
+                                    const hp::QCollection<dim-1>  &q,
+                                    SparseMatrix<double>     &matrix,
+                                    const typename FunctionMap<spacedim>::type        &boundary_functions,
+                                    Vector<double>           &rhs_vector,
+                                    std::vector<unsigned int>&dof_to_boundary_mapping,
+                                    const Function<spacedim> * const a = 0,
+                                    std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Assemble the Laplace
+                                    * matrix. If no coefficient is
+                                    * given, it is assumed to be
+                                    * constant one.
+                                    *
+                                    * If the library is configured
+                                    * to use multithreading, this
+                                    * function works in parallel.
+                                    *
+                                    * See the general doc of this
+                                    * class for more information.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const Mapping<dim, spacedim>       &mapping,
+                              const DoFHandler<dim,spacedim>    &dof,
+                              const Quadrature<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Calls the
+                                    * create_laplace_matrix()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const DoFHandler<dim,spacedim>    &dof,
+                              const Quadrature<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Assemble the Laplace matrix
+                                    * and a right hand side
+                                    * vector. If no coefficient is
+                                    * given, it is assumed to be
+                                    * constant one.
+                                    *
+                                    * If the library is configured
+                                    * to use multithreading, this
+                                    * function works in parallel.
+                                    *
+                                    * See the general doc of this
+                                    * class for more information.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const Mapping<dim, spacedim>       &mapping,
+                              const DoFHandler<dim,spacedim>    &dof,
+                              const Quadrature<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim>      &rhs,
+                              Vector<double>           &rhs_vector,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Calls the
+                                    * create_laplace_matrix()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const DoFHandler<dim,spacedim>    &dof,
+                              const Quadrature<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim>      &rhs,
+                              Vector<double>           &rhs_vector,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Like the functions above, but for hp
+                                    * dof handlers, mappings, and quadrature
+                                    * collections.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
+                              const hp::DoFHandler<dim,spacedim>    &dof,
+                              const hp::QCollection<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Like the functions above, but for hp
+                                    * dof handlers, mappings, and quadrature
+                                    * collections.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
+                              const hp::QCollection<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Like the functions above, but for hp
+                                    * dof handlers, mappings, and quadrature
+                                    * collections.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const hp::MappingCollection<dim,spacedim>       &mapping,
+                              const hp::DoFHandler<dim,spacedim>    &dof,
+                              const hp::QCollection<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim>      &rhs,
+                              Vector<double>           &rhs_vector,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Like the functions above, but for hp
+                                    * dof handlers, mappings, and quadrature
+                                    * collections.
+                                    */
+  template <int dim, int spacedim>
+  void create_laplace_matrix (const hp::DoFHandler<dim,spacedim>    &dof,
+                              const hp::QCollection<dim>    &q,
+                              SparseMatrix<double>     &matrix,
+                              const Function<spacedim>      &rhs,
+                              Vector<double>           &rhs_vector,
+                              const Function<spacedim> * const a = 0);
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException0 (ExcComponentMismatch);
+}
+
+
+
+/**
+ * Provide a collection of functions operating on matrices. These include
+ * the application of boundary conditions to a linear system of equations
+ * and others.
+ *
+ *
+ * <h3>Boundary conditions</h3>
+ *
+ * The apply_boundary_values() function inserts boundary conditions
+ * into a system of equations.  To actually do this you have to
+ * specify a list of degree of freedom indices along with the values
+ * these degrees of freedom shall assume. To see how to get such a
+ * list, see the discussion of the
+ * VectorTools::interpolate_boundary_values function.
+ *
+ * There are two ways to incorporate fixed degrees of freedom such as boundary
+ * nodes into a linear system, as discussed below.
+ *
+ *
+ * <h3>Global elimination</h3>
+ *
+ * In the first method, we first assemble the global linear system without
+ * respect for fixed degrees of freedom, and in a second step eliminate them
+ * again from the linear system. The inclusion into the assembly process is as
+ * follows: when the matrix and vectors are set up, a list of nodes subject to
+ * dirichlet bc is made and matrix and vectors are modified accordingly. This
+ * is done by deleting all entries in the matrix in the line of this degree of
+ * freedom, setting the main diagonal entry to a suitable positive value and
+ * the right hand side element to a value so that the solution of the linear
+ * system will have the boundary value at this node. To decouple the remaining
+ * linear system of equations and to make the system symmetric again (at least
+ * if it was before), one Gauss elimination step is performed with this line,
+ * by adding this (now almost empty) line to all other lines which couple with
+ * the given degree of freedom and thus eliminating all coupling between this
+ * degree of freedom and others. Now the respective column also consists only
+ * of zeroes, apart from the main diagonal entry. Alternatively, the functions
+ * in this class take a boolean parameter that allows to omit this last step,
+ * if symmetry of the resulting linear system is not required. Note that
+ * usually even CG can cope with a non-symmetric linear system with this
+ * particular structure.
+ *
+ * Finding which rows contain an entry in the column for which we are
+ * presently performing a Gauss elimination step is either difficult
+ * or very simple, depending on the circumstances. If the sparsity
+ * pattern is symmetric (whether the matrix is symmetric is irrelevant
+ * here), then we can infer the rows which have a nonzero entry in the
+ * present column by looking at which columns in the present row are
+ * nonempty. In this case, we only need to look into a fixed number of
+ * rows and need not search all rows. On the other hand, if the
+ * sparsity pattern is nonsymmetric, then we need to use an iterative
+ * solver which can handle nonsymmetric matrices in any case, so there
+ * may be no need to do the Gauss elimination anyway. In fact, this is
+ * the way the function works: it takes a parameter
+ * (@p elininate_columns) that specifies whether the sparsity pattern
+ * is symmetric; if so, then the column is eliminated and the right
+ * hand side is also modified accordingly. If not, then only the row
+ * is deleted and the column is not touched at all, and all right hand
+ * side values apart from the one corresponding to the present row
+ * remain unchanged.
+ *
+ * If the sparsity pattern for your matrix is non-symmetric, you must
+ * set the value of this parameter to @p false in any case, since then
+ * we can't eliminate the column without searching all rows, which
+ * would be too expensive (if @p N be the number of rows, and @p m the
+ * number of nonzero elements per row, then eliminating one column is
+ * an <tt>O(N*log(m))</tt> operation, since searching in each row takes
+ * <tt>log(m)</tt> operations). If your sparsity pattern is symmetric, but
+ * your matrix is not, then you might specify @p false as well. If your
+ * sparsity pattern and matrix are both symmetric, you might want to
+ * specify @p true (the complexity of eliminating one row is then
+ * <tt>O(m*log(m))</tt>, since we only have to search @p m rows for the
+ * respective element of the column). Given the fact that @p m is
+ * roughly constant, irrespective of the discretization, and that the
+ * number of boundary nodes is <tt>sqrt(N)</tt> in 2d, the algorithm for
+ * symmetric sparsity patterns is <tt>O(sqrt(N)*m*log(m))</tt>, while it
+ * would be <tt>O(N*sqrt(N)*log(m))</tt> for the general case; the latter
+ * is too expensive to be performed.
+ *
+ * It seems as if we had to make clear not to overwrite the lines of
+ * other boundary nodes when doing the Gauss elimination
+ * step. However, since we reset the right hand side when passing such
+ * a node, it is not a problem to change the right hand side values of
+ * other boundary nodes not yet processed. It would be a problem to
+ * change those entries of nodes already processed, but since the
+ * matrix entry of the present column on the row of an already
+ * processed node is zero, the Gauss step does not change the right
+ * hand side. We need therefore not take special care of other
+ * boundary nodes.
+ *
+ * To make solving faster, we preset the solution vector with the right
+ * boundary values (as to why this is necessary, see the discussion below in
+ * the description of local elimination). It it not clear whether the deletion
+ * of coupling between the boundary degree of freedom and other dofs really
+ * forces the corresponding entry in the solution vector to have the right
+ * value when using iterative solvers, since their search directions may
+ * contain components in the direction of the boundary node. For this reason,
+ * we perform a very simple line balancing by not setting the main diagonal
+ * entry to unity, but rather to the value it had before deleting this line,
+ * or to the first nonzero main diagonal entry if it is zero for some reason.
+ * Of course we have to change the right hand side appropriately. This is not
+ * a very good strategy, but it at least should give the main diagonal entry a
+ * value in the right order of dimension, which makes the solvution process a
+ * bit more stable. A refined algorithm would set the entry to the mean of the
+ * other diagonal entries, but this seems to be too expensive.
+ *
+ * In some cases, it might be interesting to solve several times with
+ * the same matrix, but for different right hand sides or boundary
+ * values. However, since the modification for boundary values of the
+ * right hand side vector depends on the original matrix, this is not
+ * possible without storing the original matrix somewhere and applying
+ * the @p apply_boundary_conditions function to a copy of it each
+ * time we want to solve. In that case, you can use the
+ * FilteredMatrix class in the @p LAC sublibrary. There you can
+ * also find a formal (mathematical) description of the process of
+ * modifying the matrix and right hand side vectors for boundary
+ * values.
+ *
+ *
+ * <h3>Local elimination</h3>
+ *
+ * The second way of handling boundary values is to modify the local
+ * matrix and vector contributions appropriately before transferring
+ * them into the global sparse matrix and vector. This is what
+ * local_apply_boundary_values() does. The advantage is that we save
+ * the call to the apply_boundary_values function (which is expensive
+ * because it has to work on sparse data structures). On the other
+ * hand, the local_apply_boundary_values() function is called many
+ * times, even if we only have a very small number of fixed boundary
+ * nodes, and the main drawback is that this function doesn't work as
+ * expected if there are hanging nodes that also need to be
+ * treated. The reason that this function doesn't work is that it is
+ * meant to be run before distribution into the global matrix,
+ * i.e. before hanging nodes are distributed; since hanging nodes can
+ * be constrained to a boundary node, the treatment of hanging nodes
+ * can add entries again to rows and columns corresponding to boundary
+ * values and that we have already vacated in the local elimination
+ * step. To make things worse, in 3d constrained nodes can even lie on
+ * the boundary. Thus, it is imperative that boundary node elimination
+ * happens @em after hanging node elimination, but this can't be
+ * achieved with local elimination of boundary nodes unless there are
+ * no hanging node constraints at all.
+ *
+ * Local elimination has one additional drawback: we don't have access
+ * to the solution vector, only to the local contributions to the
+ * matrix and right hand side. The problem with this is subtle, but
+ * can lead to very hard to find difficulties: when we eliminate a
+ * degree of freedom, we delete the row and column of this unknown,
+ * and set the diagonal entry to some positive value. To make the
+ * problem more or less well-conditioned, we set this diagonal entry
+ * to the absolute value of its prior value if that was non-zero, or
+ * to the average magnitude of all other nonzero diagonal
+ * elements. Then we set the right hand side value such that the
+ * resulting solution entry has the right value as given by the
+ * boundary values. Since we add these contributions up over all local
+ * contributions, the diagonal entry and the respective value in the
+ * right hand side are added up correspondingly, so that the entry in
+ * the solution of the linear system is still valid.
+ *
+ * A problem arises, however, if the diagonal entries so chosen are not
+ * appropriate for the linear system. Consider, for example, a mixed Laplace
+ * problem with matrix <tt>[[A B][C^T 0]]</tt>, where we only specify boundary
+ * values for the second component of the solution. In the mixed formulation,
+ * the stress-strain tensor only appears in either the matrix @p B or @p C, so
+ * one of them may be significantly larger or smaller than the other one. Now,
+ * if we eliminate boundary values, we delete some rows and columns, but we
+ * also introduce a few entries on the diagonal of the lower right block, so
+ * that we get the system <tt>[[A' B'][C'^T X]]</tt>. The diagonal entries in
+ * the matrix @p X will be of the same order of magnitude as those in @p
+ * A. Now, if we solve this system in the Schur complement formulation, we
+ * have to invert the matrix <tt>X-C'^TA'^{-1}B'</tt>. Deleting rows and
+ * columns above makes sure that boundary nodes indeed have empty rows and
+ * columns in the Schur complement as well, except for the entries in @p
+ * X. However, the entries in @p X may be of significantly different orders of
+ * magnitude than those in <tt>C'^TA'^{-1}B'</tt>! If this is the case, we may
+ * run into trouble with iterative solvers. For example, assume that we start
+ * with zero entries in the solution vector and that the entries in @p X are
+ * several orders of magnitude too small; in this case, iterative solvers will
+ * compute the residual vector in each step and form correction vectors, but
+ * since the entries in @p X are so small, the residual contributions for
+ * boundary nodes are really small, despite the fact that the boundary nodes
+ * are still at values close to zero and not in accordance with the prescribed
+ * boundary values. Since the residual is so small, the corrections the
+ * iterative solver computes are very small, and in the end the solver will
+ * indicate convergence to a small total residual with the boundary values
+ * still being significantly wrong.
+ *
+ * We avoid this problem in the global elimination process described above by
+ * 'priming' the solution vector with the correct values for boundary
+ * nodes. However, we can't do this for the local elimination
+ * process. Therefore, if you experience a problem like the one above, you
+ * need to either increase the diagonal entries in @p X to a size that matches
+ * those in the other part of the Schur complement, or, simpler, prime the
+ * solution vector before you start the solver.
+ *
+ * In conclusion, local elimination of boundary nodes only works if
+ * there are no hanging nodes and even then doesn't always work fully
+ * satisfactorily.
+ *
+ * @ingroup numerics
+ * @author Wolfgang Bangerth, 1998, 2000, 2004, 2005
+ */
+namespace MatrixTools
+{
+                                   /**
+                                    * Import namespace MatrixCreator for
+                                    * backward compatibility with older
+                                    * versions of deal.II in which these
+                                    * namespaces were classes and class
+                                    * MatrixTools was publicly derived from
+                                    * class MatrixCreator.
+                                    */
+  using namespace MatrixCreator;
+
+                                   /**
+                                    * Apply dirichlet boundary conditions
+                                    * to the system matrix and vectors
+                                    * as described in the general
+                                    * documentation.
+                                    */
+  template <typename number>
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         SparseMatrix<number>  &matrix,
+                         Vector<number>        &solution,
+                         Vector<number>        &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * Apply dirichlet boundary
+                                    * conditions to the system
+                                    * matrix and vectors as
+                                    * described in the general
+                                    * documentation. This function
+                                    * works for block sparse
+                                    * matrices and block vectors
+                                    */
+  template <typename number>
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         BlockSparseMatrix<number>           &matrix,
+                         BlockVector<number>                 &solution,
+                         BlockVector<number>                 &right_hand_side,
+                         const bool           eliminate_columns = true);
+
+#ifdef DEAL_II_USE_PETSC
+                                   /**
+                                    * Apply dirichlet boundary conditions to
+                                    * the system matrix and vectors as
+                                    * described in the general
+                                    * documentation. This function works on
+                                    * the classes that are used to wrap
+                                    * PETSc objects.
+                                    *
+                                    * Note that this function is not very
+                                    * efficient: it needs to alternatingly
+                                    * read and write into the matrix, a
+                                    * situation that PETSc does not handle
+                                    * too well. In addition, we only get rid
+                                    * of rows corresponding to boundary
+                                    * nodes, but the corresponding case of
+                                    * deleting the respective columns
+                                    * (i.e. if @p eliminate_columns is @p
+                                    * true) is not presently implemented,
+                                    * and probably will never because it is
+                                    * too expensive without direct access to
+                                    * the PETSc data structures. (This leads
+                                    * to the situation where the action
+                                    * indicates by the default value of the
+                                    * last argument is actually not
+                                    * implemented; that argument has
+                                    * <code>true</code> as its default value
+                                    * to stay consistent with the other
+                                    * functions of same name in this class.)
+                                    * A third reason against this function
+                                    * is that it doesn't handle the case
+                                    * where the matrix is distributed across
+                                    * an MPI system.
+                                    *
+                                    * This function is used in
+                                    * step-17 and
+                                    * step-18.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         PETScWrappers::SparseMatrix  &matrix,
+                         PETScWrappers::Vector  &solution,
+                         PETScWrappers::Vector  &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * Same function, but for parallel PETSc
+                                    * matrices.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         PETScWrappers::MPI::SparseMatrix  &matrix,
+                         PETScWrappers::MPI::Vector  &solution,
+                         PETScWrappers::MPI::Vector  &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * Same function, but for
+                                    * parallel PETSc matrices. Note
+                                    * that this function only
+                                    * operates on the local range of
+                                    * the parallel matrix, i.e. it
+                                    * only eliminates rows
+                                    * corresponding to degrees of
+                                    * freedom for which the row is
+                                    * stored on the present
+                                    * processor. All other boundary
+                                    * nodes are ignored, and it
+                                    * doesn't matter whether they
+                                    * are present in the first
+                                    * argument to this function or
+                                    * not. A consequence of this,
+                                    * however, is that this function
+                                    * has to be called from all
+                                    * processors that participate in
+                                    * sharing the contents of the
+                                    * given matrices and vectors. It
+                                    * is also implied that the local
+                                    * range for all objects passed
+                                    * to this function is the same.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         PETScWrappers::MPI::SparseMatrix  &matrix,
+                         PETScWrappers::Vector       &solution,
+                         PETScWrappers::MPI::Vector  &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * Same as above but for BlockSparseMatrix.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double>  &boundary_values,
+                         PETScWrappers::MPI::BlockSparseMatrix  &matrix,
+                         PETScWrappers::MPI::BlockVector        &solution,
+                         PETScWrappers::MPI::BlockVector        &right_hand_side,
+                         const bool       eliminate_columns = true);
+
+#endif
+
+#ifdef DEAL_II_USE_TRILINOS
+                                   /**
+                                    * Apply dirichlet boundary
+                                    * conditions to the system matrix
+                                    * and vectors as described in the
+                                    * general documentation. This
+                                    * function works on the classes
+                                    * that are used to wrap Trilinos
+                                    * objects.
+                                    *
+                                    * Note that this function is not
+                                    * very efficient: it needs to
+                                    * alternatingly read and write
+                                    * into the matrix, a situation
+                                    * that Trilinos does not handle
+                                    * too well. In addition, we only
+                                    * get rid of rows corresponding to
+                                    * boundary nodes, but the
+                                    * corresponding case of deleting
+                                    * the respective columns (i.e. if
+                                    * @p eliminate_columns is @p true)
+                                    * is not presently implemented,
+                                    * and probably will never because
+                                    * it is too expensive without
+                                    * direct access to the Trilinos
+                                    * data structures. (This leads to
+                                    * the situation where the action
+                                    * indicates by the default value
+                                    * of the last argument is actually
+                                    * not implemented; that argument
+                                    * has <code>true</code> as its
+                                    * default value to stay consistent
+                                    * with the other functions of same
+                                    * name in this class.)  A third
+                                    * reason against this function is
+                                    * that it doesn't handle the case
+                                    * where the matrix is distributed
+                                    * across an MPI system.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         TrilinosWrappers::SparseMatrix  &matrix,
+                         TrilinosWrappers::Vector        &solution,
+                         TrilinosWrappers::Vector        &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * This function does the same as
+                                    * the one above, except now
+                                    * working on block structures.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         TrilinosWrappers::BlockSparseMatrix  &matrix,
+                         TrilinosWrappers::BlockVector        &solution,
+                         TrilinosWrappers::BlockVector        &right_hand_side,
+                         const bool                eliminate_columns = true);
+
+                                   /**
+                                    * Apply dirichlet boundary
+                                    * conditions to the system matrix
+                                    * and vectors as described in the
+                                    * general documentation. This
+                                    * function works on the classes
+                                    * that are used to wrap Trilinos
+                                    * objects.
+                                    *
+                                    * Note that this function is not
+                                    * very efficient: it needs to
+                                    * alternatingly read and write
+                                    * into the matrix, a situation
+                                    * that Trilinos does not handle
+                                    * too well. In addition, we only
+                                    * get rid of rows corresponding to
+                                    * boundary nodes, but the
+                                    * corresponding case of deleting
+                                    * the respective columns (i.e. if
+                                    * @p eliminate_columns is @p true)
+                                    * is not presently implemented,
+                                    * and probably will never because
+                                    * it is too expensive without
+                                    * direct access to the Trilinos
+                                    * data structures. (This leads to
+                                    * the situation where the action
+                                    * indicates by the default value
+                                    * of the last argument is actually
+                                    * not implemented; that argument
+                                    * has <code>true</code> as its
+                                    * default value to stay consistent
+                                    * with the other functions of same
+                                    * name in this class.) This
+                                    * function does work on MPI vector
+                                    * types.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         TrilinosWrappers::SparseMatrix  &matrix,
+                         TrilinosWrappers::MPI::Vector   &solution,
+                         TrilinosWrappers::MPI::Vector   &right_hand_side,
+                         const bool             eliminate_columns = true);
+
+                                   /**
+                                    * This function does the same as
+                                    * the one above, except now working
+                                    * on block structures.
+                                    */
+  void
+  apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                         TrilinosWrappers::BlockSparseMatrix  &matrix,
+                         TrilinosWrappers::MPI::BlockVector   &solution,
+                         TrilinosWrappers::MPI::BlockVector   &right_hand_side,
+                         const bool                eliminate_columns = true);
+#endif
+
+                                   /**
+                                    * Rather than applying boundary
+                                    * values to the global matrix
+                                    * and vector after creating the
+                                    * global matrix, this function
+                                    * does so during assembly, by
+                                    * modifying the local matrix and
+                                    * vector contributions. If you
+                                    * call this function on all
+                                    * local contributions, the
+                                    * resulting matrix will have the
+                                    * same entries, and the final
+                                    * call to
+                                    * apply_boundary_values() on the
+                                    * global system will not be
+                                    * necessary.
+                                    *
+                                    * Since this function does not
+                                    * have to work on the
+                                    * complicated data structures of
+                                    * sparse matrices, it is
+                                    * relatively cheap. It may
+                                    * therefore be a win if you have
+                                    * many fixed degrees of freedom
+                                    * (e.g. boundary nodes), or if
+                                    * access to the sparse matrix is
+                                    * expensive (e.g. for block
+                                    * sparse matrices, or for PETSc
+                                    * or trilinos
+                                    * matrices). However, it doesn't
+                                    * work as expected if there are
+                                    * also hanging nodes to be
+                                    * considered. More caveats are
+                                    * listed in the general
+                                    * documentation of this class.
+                                    */
+  void
+  local_apply_boundary_values (const std::map<unsigned int,double> &boundary_values,
+                               const std::vector<unsigned int> &local_dof_indices,
+                               FullMatrix<double> &local_matrix,
+                               Vector<double>     &local_rhs,
+                               const bool          eliminate_columns);
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException0 (ExcBlocksDontMatch);
+}
+
+
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
index 531621bcb8695737ce220925bb529b1984d646d3..ed350cc6a88275be6e60d44b5828a92c5220c29a 100644 (file)
@@ -287,7 +287,7 @@ template <int dim, int spacedim> class Triangulation;
  *            TimeDependent::TimeSteppingData (0,1),
  *            TimeDependent::forward);
  * @endverbatim
- * TimeStepBase_Wave()@p ::refine_grid is a function taking an argument, unlike
+ * TimeStepBase_Wave::refine_grid is a function taking an argument, unlike
  * all the other functions used above within the loops. However, in this special
  * case the parameter was the same for all timesteps and known before the loop
  * was started, so we fixed it and made a function object which to the outside
diff --git a/deal.II/include/deal.II/numerics/vector_tools.h b/deal.II/include/deal.II/numerics/vector_tools.h
new file mode 100644 (file)
index 0000000..157c56b
--- /dev/null
@@ -0,0 +1,2308 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+#ifndef __deal2__vector_tools_h
+#define __deal2__vector_tools_h
+
+
+#include <deal.II/base/config.h>
+#include <deal.II/base/exceptions.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/point.h>
+#include <deal.II/dofs/function_map.h>
+#include <deal.II/fe/mapping_q.h>
+#include <deal.II/hp/mapping_collection.h>
+
+#include <map>
+#include <vector>
+#include <set>
+
+DEAL_II_NAMESPACE_OPEN
+
+template <int dim> class Function;
+template <int dim> struct FunctionMap;
+template <int dim> class Quadrature;
+template <int dim> class QGauss;
+
+template <typename number> class Vector;
+template <typename number> class FullMatrix;
+template <int dim, int spacedim> class Mapping;
+template <int dim, int spacedim> class DoFHandler;
+template <typename gridtype> class InterGridMap;
+namespace hp
+{
+  template <int dim, int spacedim> class DoFHandler;
+  template <int dim, int spacedim> class MappingCollection;
+  template <int dim> class QCollection;
+}
+class ConstraintMatrix;
+
+
+//TODO: Move documentation of functions to the functions!
+
+/**
+ * Provide a namespace which offers some operations on vectors. Among
+ * these are assembling of standard vectors, integration of the
+ * difference of a finite element solution and a continuous function,
+ * interpolations and projections of continuous functions to the
+ * finite element space and other operations.
+ *
+ * @note There exist two versions of almost each function. One with a
+ * Mapping argument and one without. If a code uses a mapping
+ * different from MappingQ1 the functions <b>with</b> mapping argument
+ * should be used. Code that uses only MappingQ1 may also use the
+ * functions without Mapping argument. Each of these latter functions
+ * create a MappingQ1 object and just call the respective functions
+ * with that object as mapping argument. The functions without Mapping
+ * argument still exist to ensure backward compatibility. Nevertheless
+ * it is advised to change the user's codes to store a specific
+ * Mapping object and to use the functions that take this Mapping
+ * object as argument. This gives the possibility to easily extend the
+ * user codes to work also on mappings of higher degree, this just by
+ * exchanging MappingQ1 by, for example, a MappingQ or another Mapping
+ * object of interest.
+ *
+ * <h3>Description of operations</h3>
+ *
+ * This collection of methods offers the following operations:
+ * <ul>
+ * <li> Interpolation: assign each degree of freedom in the vector to be
+ *   the value of the function given as argument. This is identical to
+ *   saying that the resulting finite element function (which is
+ *   isomorphic to the output vector) has exact function values in all
+ *   support points of trial functions. The support point of a trial
+ *   function is the point where its value equals one, e.g. for linear
+ *   trial functions the support points are four corners of an
+ *   element. This function therefore relies on the assumption that a
+ *   finite element is used for which the degrees of freedom are
+ *   function values (Lagrange elements) rather than gradients, normal
+ *   derivatives, second derivatives, etc (Hermite elements, quintic
+ *   Argyris element, etc.).
+ *
+ *   It seems inevitable that some values of the vector to be created are set
+ *   twice or even more than that. The reason is that we have to loop over
+ *   all cells and get the function values for each of the trial functions
+ *   located thereon. This applies also to the functions located on faces and
+ *   corners which we thus visit more than once. While setting the value
+ *   in the vector is not an expensive operation, the evaluation of the
+ *   given function may be, taking into account that a virtual function has
+ *   to be called.
+ *
+ * <li> Projection: compute the <i>L</i><sup>2</sup>-projection of the
+ * given function onto the finite element space, i.e. if <i>f</i> is
+ * the function to be projected, compute <i>f<sub>h</sub></i> in
+ * <i>V<sub>h</sub></i> such that
+ * (<i>f<sub>h</sub></i>,<i>v<sub>h</sub></i>)=(<i>f</i>,<i>v<sub>h</sub></i>)
+ * for all discrete test functions <i>v<sub>h</sub></i>. This is done
+ * through the solution of the linear system of equations <i> M v =
+ * f</i> where <i>M</i> is the mass matrix $m_{ij} = \int_\Omega
+ * \phi_i(x) \phi_j(x) dx$ and $f_i = \int_\Omega f(x) \phi_i(x)
+ * dx$. The solution vector $v$ then is the nodal representation of
+ * the projection <i>f<sub>h</sub></i>. The project() functions are
+ * used in the step-21 and step-23
+ * tutorial programs.
+ *
+ *   In order to get proper results, it be may necessary to treat
+ *   boundary conditions right. Below are listed some cases where this
+ *   may be needed.  If needed, this is done by <i>L</i><sup>2</sup>-projection of
+ *   the trace of the given function onto the finite element space
+ *   restricted to the boundary of the domain, then taking this
+ *   information and using it to eliminate the boundary nodes from the
+ *   mass matrix of the whole domain, using the
+ *   MatrixTools::apply_boundary_values() function. The projection of
+ *   the trace of the function to the boundary is done with the
+ *   VectorTools::project_boundary_values() (see below) function,
+ *   which is called with a map of boundary functions FunctioMap in
+ *   which all boundary indicators from zero to numbers::internal_face_boundary_id-1
+ *   (numbers::internal_face_boundary_id is used for other purposes,
+ *   see the Triangulation class documentation) point
+ *   to the function to be projected. The projection to the boundary
+ *   takes place using a second quadrature formula on the boundary
+ *   given to the project() function. The first quadrature formula is
+ *   used to compute the right hand side and for numerical quadrature
+ *   of the mass matrix.
+ *
+ *   The projection of the boundary values first, then eliminating
+ *   them from the global system of equations is not needed
+ *   usually. It may be necessary if you want to enforce special
+ *   restrictions on the boundary values of the projected function,
+ *   for example in time dependent problems: you may want to project
+ *   the initial values but need consistency with the boundary values
+ *   for later times. Since the latter are projected onto the boundary
+ *   in each time step, it is necessary that we also project the
+ *   boundary values of the initial values, before projecting them to
+ *   the whole domain.
+ *
+ *   Obviously, the results of the two schemes for projection are
+ *   different.  Usually, when projecting to the boundary first, the
+ *   <i>L</i><sup>2</sup>-norm of the difference between original
+ *   function and projection over the whole domain will be larger
+ *   (factors of five have been observed) while the
+ *   <i>L</i><sup>2</sup>-norm of the error integrated over the
+ *   boundary should of course be less. The reverse should also hold
+ *   if no projection to the boundary is performed.
+ *
+ *   The selection whether the projection to the boundary first is
+ *   needed is done with the <tt>project_to_boundary_first</tt> flag
+ *   passed to the function.  If @p false is given, the additional
+ *   quadrature formula for faces is ignored.
+ *
+ *   You should be aware of the fact that if no projection to the boundary
+ *   is requested, a function with zero boundary values may not have zero
+ *   boundary values after projection. There is a flag for this especially
+ *   important case, which tells the function to enforce zero boundary values
+ *   on the respective boundary parts. Since enforced zero boundary values
+ *   could also have been reached through projection, but are more economically
+ *   obtain using other methods, the @p project_to_boundary_first flag is
+ *   ignored if the @p enforce_zero_boundary flag is set.
+ *
+ *   The solution of the linear system is presently done using a simple CG
+ *   method without preconditioning and without multigrid. This is clearly not
+ *   too efficient, but sufficient in many cases and simple to implement. This
+ *   detail may change in the future.
+ *
+ * <li> Creation of right hand side vectors:
+ *   The create_right_hand_side() function computes the vector
+ *   $f_i = \int_\Omega f(x) \phi_i(x) dx$. This is the same as what the
+ *   <tt>MatrixCreator::create_*</tt> functions which take a right hand side do,
+ *   but without assembling a matrix.
+ *
+ * <li> Creation of right hand side vectors for point sources:
+ *   The create_point_source_vector() function computes the vector
+ *   $f_i = \int_\Omega \delta_0(x-x_0) \phi_i(x) dx$.
+ *
+ * <li> Creation of boundary right hand side vectors: The
+ *   create_boundary_right_hand_side() function computes the vector
+ *   $f_i = \int_{\partial\Omega} g(x) \phi_i(x) dx$. This is the
+ *   right hand side contribution of boundary forces when having
+ *   inhomogeneous Neumann boundary values in Laplace's equation or
+ *   other second order operators. This function also takes an
+ *   optional argument denoting over which parts of the boundary the
+ *   integration shall extend. If the default argument is used, it is applied
+ *   to all boundaries.
+ *
+ * <li> Interpolation of boundary values:
+ *   The MatrixTools::apply_boundary_values() function takes a list
+ *   of boundary nodes and their values. You can get such a list by interpolation
+ *   of a boundary function using the interpolate_boundary_values() function.
+ *   To use it, you have to
+ *   specify a list of pairs of boundary indicators (of type <tt>types::boundary_id</tt>;
+ *   see the section in the documentation of the Triangulation class for more
+ *   details) and the according functions denoting the dirichlet boundary values
+ *   of the nodes on boundary faces with this boundary indicator.
+ *
+ *   Usually, all other boundary conditions, such as inhomogeneous Neumann values
+ *   or mixed boundary conditions are handled in the weak formulation. No attempt
+ *   is made to include these into the process of matrix and vector assembly therefore.
+ *
+ *   Within this function, boundary values are interpolated, i.e. a node is given
+ *   the point value of the boundary function. In some cases, it may be necessary
+ *   to use the L2-projection of the boundary function or any other method. For
+ *   this purpose we refer to the project_boundary_values()
+ *   function below.
+ *
+ *   You should be aware that the boundary function may be evaluated at nodes
+ *   on the interior of faces. These, however, need not be on the true
+ *   boundary, but rather are on the approximation of the boundary represented
+ *   by the mapping of the unit cell to the real cell. Since this mapping will
+ *   in most cases not be the exact one at the face, the boundary function is
+ *   evaluated at points which are not on the boundary and you should make
+ *   sure that the returned values are reasonable in some sense anyway.
+ *
+ *   In 1d the situation is a bit different since there faces (i.e. vertices) have
+ *   no boundary indicator. It is assumed that if the boundary indicator zero
+ *   is given in the list of boundary functions, the left boundary point is to be
+ *   interpolated while the right boundary point is associated with the boundary
+ *   index 1 in the map. The respective boundary functions are then evaluated at
+ *   the place of the respective boundary point.
+ *
+ * <li> Projection of boundary values:
+ *   The project_boundary_values() function acts similar to the
+ *   interpolate_boundary_values() function, apart from the fact that it does
+ *   not get the nodal values of boundary nodes by interpolation but rather
+ *   through the <i>L</i><sup>2</sup>-projection of the trace of the function to the boundary.
+ *
+ *   The projection takes place on all boundary parts with boundary
+ *   indicators listed in the map (FunctioMap::FunctionMap)
+ *   of boundary functions. These boundary parts may or may not be
+ *   continuous. For these boundary parts, the mass matrix is
+ *   assembled using the
+ *   MatrixTools::create_boundary_mass_matrix() function, as
+ *   well as the appropriate right hand side. Then the resulting
+ *   system of equations is solved using a simple CG method (without
+ *   preconditioning), which is in most cases sufficient for the
+ *   present purpose.
+ *
+ * <li> Computing errors:
+ *   The function integrate_difference() performs the calculation of
+ *   the error between a given (continuous) reference function and the
+ *   finite element solution in different norms. The integration is
+ *   performed using a given quadrature formula and assumes that the
+ *   given finite element objects equals that used for the computation
+ *   of the solution.
+ *
+ *   The result is stored in a vector (named @p difference), where each entry
+ *   equals the given norm of the difference on a cell. The order of entries
+ *   is the same as a @p cell_iterator takes when started with @p begin_active and
+ *   promoted with the <tt>++</tt> operator.
+ *
+ *   This data, one number per active cell, can be used to generate
+ *   graphical output by directly passing it to the DataOut class
+ *   through the DataOut::add_data_vector function. Alternatively, it
+ *   can be interpolated to the nodal points of a finite element field
+ *   using the DoFTools::distribute_cell_to_dof_vector function.
+ *
+ *   Presently, there is the possibility to compute the following values from the
+ *   difference, on each cell: @p mean, @p L1_norm, @p L2_norm, @p Linfty_norm,
+ *   @p H1_seminorm and @p H1_norm, see VectorTools::NormType.
+ *   For the mean difference value, the reference function minus the numerical
+ *   solution is computed, not the other way round.
+ *
+ *   The infinity norm of the difference on a given cell returns the maximum
+ *   absolute value of the difference at the quadrature points given by the
+ *   quadrature formula parameter. This will in some cases not be too good
+ *   an approximation, since for example the Gauss quadrature formulae do
+ *   not evaluate the difference at the end or corner points of the cells.
+ *   You may want to choose a quadrature formula with more quadrature points
+ *   or one with another distribution of the quadrature points in this case.
+ *   You should also take into account the superconvergence properties of finite
+ *   elements in some points: for example in 1D, the standard finite element
+ *   method is a collocation method and should return the exact value at nodal
+ *   points. Therefore, the trapezoidal rule should always return a vanishing
+ *   L-infinity error. Conversely, in 2D the maximum L-infinity error should
+ *   be located at the vertices or at the center of the cell, which would make
+ *   it plausible to use the Simpson quadrature rule. On the other hand, there
+ *   may be superconvergence at Gauss integration points. These examples are not
+ *   intended as a rule of thumb, rather they are thought to illustrate that the
+ *   use of the wrong quadrature formula may show a significantly wrong result
+ *   and care should be taken to chose the right formula.
+ *
+ *   The <i>H</i><sup>1</sup> seminorm is the <i>L</i><sup>2</sup>
+ *   norm of the gradient of the difference. The square of the full
+ *   <i>H</i><sup>1</sup> norm is the sum of the square of seminorm
+ *   and the square of the <i>L</i><sup>2</sup> norm.
+ *
+ *   To get the global <i>L<sup>1</sup></i> error, you have to sum up the
+ *   entries in @p difference, e.g. using
+ *   Vector::l1_norm() function.  For the global <i>L</i><sup>2</sup>
+ *   difference, you have to sum up the squares of the entries and
+ *   take the root of the sum, e.g. using
+ *   Vector::l2_norm().  These two operations
+ *   represent the <i>l</i><sub>1</sub> and <i>l</i><sub>2</sub> norms of the vectors, but you need
+ *   not take the absolute value of each entry, since the cellwise
+ *   norms are already positive.
+ *
+ *   To get the global mean difference, simply sum up the elements as above.
+ *   To get the $L_\infty$ norm, take the maximum of the vector elements, e.g.
+ *   using the Vector::linfty_norm() function.
+ *
+ *   For the global <i>H</i><sup>1</sup> norm and seminorm, the same rule applies as for the
+ *   <i>L</i><sup>2</sup> norm: compute the <i>l</i><sub>2</sub> norm
+ *   of the cell error vector.
+ *
+ *   Note that, in the codimension one case, if you ask for a norm
+ *   that requires the computation of a gradient, then the provided
+ *   function is automatically projected along the curve, and the
+ *   difference is only computed on the tangential part of the
+ *   gradient, since no information is available on the normal
+ *   component of the gradient anyway.
+ * </ul>
+ *
+ * All functions use the finite element given to the DoFHandler object the last
+ * time that the degrees of freedom were distributed over the triangulation. Also,
+ * if access to an object describing the exact form of the boundary is needed, the
+ * pointer stored within the triangulation object is accessed.
+ *
+ * @note Instantiations for this template are provided for some vector types,
+ * in particular <code>Vector&lt;float&gt;, Vector&lt;double&gt;,
+ * BlockVector&lt;float&gt;, BlockVector&lt;double&gt;</code>; others can be
+ * generated in application code (see the section on @ref Instantiations in
+ * the manual).
+ *
+ * @ingroup numerics
+ * @author Wolfgang Bangerth, Ralf Hartmann, Guido Kanschat, 1998, 1999, 2000, 2001
+ */
+namespace VectorTools
+{
+                                   /**
+                                    *  Denote which norm/integral is
+                                    *  to be computed by the
+                                    *  integrate_difference()
+                                    *  function of this class. The
+                                    *  following possibilities are
+                                    *  implemented:
+                                    */
+  enum NormType
+  {
+                                         /**
+                                          * The function or
+                                          * difference of functions
+                                          * is integrated on each
+                                          * cell.
+                                          */
+        mean,
+                                         /**
+                                          * The absolute value of
+                                          * the function is
+                                          * integrated.
+                                          */
+        L1_norm,
+                                         /**
+                                          * The square of the
+                                          * function is integrated
+                                          * and the the square root
+                                          * of the result is
+                                          * computed on each cell.
+                                          */
+        L2_norm,
+                                         /**
+                                          * The absolute value to
+                                          * the <i>p</i>th power is
+                                          * integrated and the pth
+                                          * root is computed on each
+                                          * cell. The exponent
+                                          * <i>p</i> is the last
+                                          * parameter of the
+                                          * function.
+                                          */
+        Lp_norm,
+                                         /**
+                                          * The maximum absolute
+                                          * value of the function.
+                                          */
+        Linfty_norm,
+                                         /**
+                                          * #L2_norm of the gradient.
+                                          */
+        H1_seminorm,
+                                         /**
+                                          * The square of this norm
+                                          * is the square of the
+                                          * #L2_norm plus the square
+                                          * of the #H1_seminorm.
+                                          */
+        H1_norm,
+                                         /**
+                                          * #Lp_norm of the gradient.
+                                          */
+        W1p_seminorm,
+                                         /**
+                                          * same as #H1_norm for
+                                          * <i>L<sup>p</sup></i>.
+                                          */
+        W1p_norm,
+                                         /**
+                                          * #Linfty_norm of the gradient.
+                                          */
+        W1infty_seminorm,
+                                         /**
+                                          * same as #H1_norm for
+                                          * <i>L<sup>infty</sup></i>.
+                                          */
+        W1infty_norm
+
+  };
+/**
+ * @name Interpolation and projection
+ */
+                                   //@{
+                                   /**
+                                    * Compute the interpolation of
+                                    * @p function at the support
+                                    * points to the finite element
+                                    * space described by the Triangulation
+                                    * and FiniteElement object with which
+                                    * the given DoFHandler argument is
+                                    * initialized. It is assumed that the
+                                    * number of components of
+                                    * @p function matches that of
+                                    * the finite element used by
+                                    * @p dof.
+                                    *
+                                    * Note that you may have to call
+                                    * <tt>hanging_nodes.distribute(vec)</tt>
+                                    * with the hanging nodes from
+                                    * space @p dof afterwards, to
+                                    * make the result continuous
+                                    * again.
+                                    *
+                                    * The template argument <code>DH</code>
+                                    * may either be of type DoFHandler or
+                                    * hp::DoFHandler.
+                                    *
+                                    * See the general documentation
+                                    * of this class for further
+                                    * information.
+                                    *
+                                    * @todo The @p mapping argument should be
+                                    * replaced by a hp::MappingCollection in
+                                    * case of a hp::DoFHandler.
+                                    */
+  template <class VECTOR, class DH>
+  void interpolate (const Mapping<DH::dimension,DH::space_dimension>    &mapping,
+                    const DH              &dof,
+                    const Function<DH::space_dimension>   &function,
+                    VECTOR                &vec);
+
+                                   /**
+                                    * Calls the @p interpolate()
+                                    * function above with
+                                    * <tt>mapping=MappingQ1@<dim>@()</tt>.
+                                    */
+  template <class VECTOR, class DH>
+  void interpolate (const DH              &dof,
+                    const Function<DH::space_dimension>   &function,
+                    VECTOR                &vec);
+
+                                   /**
+                                    * Interpolate different finite
+                                    * element spaces. The
+                                    * interpolation of vector
+                                    * @p data_1 is executed from the
+                                    * FE space represented by
+                                    * @p dof_1 to the vector @p data_2
+                                    * on FE space @p dof_2. The
+                                    * interpolation on each cell is
+                                    * represented by the matrix
+                                    * @p transfer. Curved boundaries
+                                    * are neglected so far.
+                                    *
+                                    * Note that you may have to call
+                                    * <tt>hanging_nodes.distribute(data_2)</tt>
+                                    * with the hanging nodes from
+                                    * space @p dof_2 afterwards, to
+                                    * make the result continuous
+                                    * again.
+                                    *
+                                    * @note Instantiations for this template
+                                    * are provided for some vector types
+                                    * (see the general documentation of the
+                                    * class), but only the same vector for
+                                    * InVector and OutVector. Other
+                                    * combinations must be instantiated by
+                                    * hand.
+                                    */
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void interpolate (const DoFHandler<dim,spacedim>    &dof_1,
+                    const DoFHandler<dim,spacedim>    &dof_2,
+                    const FullMatrix<double> &transfer,
+                    const InVector           &data_1,
+                    OutVector                &data_2);
+
+                                   /**
+                                    * Gives the interpolation of a
+                                    * @p dof1-function @p u1 to a
+                                    * @p dof2-function @p u2, where @p
+                                    * dof1 and @p dof2 represent
+                                    * different triangulations with a
+                                    * common coarse grid.
+                                    *
+                                    * dof1 and dof2 need to have the
+                                    * same finite element
+                                    * discretization.
+                                    *
+                                    * Note that for continuous
+                                    * elements on grids with hanging
+                                    * nodes (i.e. locally refined
+                                    * grids) this function does not
+                                    * give the expected output.
+                                    * Indeed, the resulting output
+                                    * vector does not necessarily
+                                    * respect continuity
+                                    * requirements at hanging nodes,
+                                    * due to local cellwise
+                                    * interpolation.
+                                    *
+                                    * For this case (continuous
+                                    * elements on grids with hanging
+                                    * nodes), please use the
+                                    * interpolate_to_different_mesh
+                                    * function with an additional
+                                    * ConstraintMatrix argument,
+                                    * see below, or make the field
+                                    * conforming yourself by calling the
+                                    * @p ConstraintsMatrix::distribute
+                                    * function of your hanging node
+                                    * constraints object.
+                                    */
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class VECTOR>
+  void
+  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
+                                 const VECTOR            &u1,
+                                 const DH<dim, spacedim> &dof2,
+                                 VECTOR                  &u2);
+
+                                   /**
+                                    * Gives the interpolation of a
+                                    * @p dof1-function @p u1 to a
+                                    * @p dof2-function @p u2, where @p
+                                    * dof1 and @p dof2 represent
+                                    * different triangulations with a
+                                    * common coarse grid.
+                                    *
+                                    * dof1 and dof2 need to have the
+                                    * same finite element
+                                    * discretization.
+                                    *
+                                    * @p constraints is a hanging node
+                                    * constraints object corresponding
+                                    * to @p dof2. This object is
+                                    * particularly important when
+                                    * interpolating onto continuous
+                                    * elements on grids with hanging
+                                    * nodes (locally refined grids):
+                                    * Without it - due to cellwise
+                                    * interpolation - the resulting
+                                    * output vector does not necessarily
+                                    * respect continuity requirements
+                                    * at hanging nodes.
+                                    */
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class VECTOR>
+  void
+  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
+                                 const VECTOR            &u1,
+                                 const DH<dim, spacedim> &dof2,
+                                 const ConstraintMatrix  &constraints,
+                                 VECTOR                  &u2);
+
+
+                                   /**
+                                    * The same function as above, but
+                                    * takes an InterGridMap object
+                                    * directly as a parameter. Useful
+                                    * for interpolating several vectors
+                                    * at the same time.
+                                    *
+                                    * @p intergridmap
+                                    * has to be initialized via
+                                    * InterGridMap::make_mapping pointing
+                                    * from a source DoFHandler to a
+                                    * destination DoFHandler.
+                                    */
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class VECTOR>
+  void
+  interpolate_to_different_mesh (const InterGridMap<DH<dim, spacedim> > &intergridmap,
+                                 const VECTOR                           &u1,
+                                 const ConstraintMatrix                 &constraints,
+                                 VECTOR                                 &u2);
+
+                                   /**
+                                    * Compute the projection of
+                                    * @p function to the finite element space.
+                                    *
+                                    * By default, projection to the boundary
+                                    * and enforcement of zero boundary values
+                                    * are disabled. The ordering of arguments
+                                    * to this function is such that you need
+                                    * not give a second quadrature formula if
+                                    * you don't want to project to the
+                                    * boundary first, but that you must if you
+                                    * want to do so.
+                                    *
+                                    * This function needs the mass
+                                    * matrix of the finite element
+                                    * space on the present grid. To
+                                    * this end, the mass matrix is
+                                    * assembled exactly using
+                                    * MatrixTools::create_mass_matrix. This
+                                    * function performs numerical
+                                    * quadrature using the given
+                                    * quadrature rule; you should
+                                    * therefore make sure that the
+                                    * given quadrature formula is
+                                    * also sufficient for the
+                                    * integration of the mass
+                                    * matrix.
+                                    *
+                                    * See the general documentation of this
+                                    * class for further information.
+                                    *
+                                    * In 1d, the default value of
+                                    * the boundary quadrature
+                                    * formula is an invalid object
+                                    * since integration on the
+                                    * boundary doesn't happen in
+                                    * 1d.
+                                    */
+  template <int dim, class VECTOR, int spacedim>
+  void project (const Mapping<dim, spacedim>       &mapping,
+                const DoFHandler<dim,spacedim>    &dof,
+                const ConstraintMatrix   &constraints,
+                const Quadrature<dim>    &quadrature,
+                const Function<spacedim>      &function,
+                VECTOR                   &vec,
+                const bool                enforce_zero_boundary = false,
+                const Quadrature<dim-1>  &q_boundary = (dim > 1 ?
+                                                        QGauss<dim-1>(2) :
+                                                        Quadrature<dim-1>(0)),
+                const bool                project_to_boundary_first = false);
+
+                                   /**
+                                    * Calls the project()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, class VECTOR, int spacedim>
+  void project (const DoFHandler<dim,spacedim>    &dof,
+                const ConstraintMatrix   &constraints,
+                const Quadrature<dim>    &quadrature,
+                const Function<spacedim>      &function,
+                VECTOR                   &vec,
+                const bool                enforce_zero_boundary = false,
+                const Quadrature<dim-1>  &q_boundary = (dim > 1 ?
+                                                        QGauss<dim-1>(2) :
+                                                        Quadrature<dim-1>(0)),
+                const bool                project_to_boundary_first = false);
+
+                                   /**
+                                    * Prepare Dirichlet boundary
+                                    * conditions.  Make up the list
+                                    * of degrees of freedom subject
+                                    * to Dirichlet boundary
+                                    * conditions and the values to
+                                    * be assigned to them, by
+                                    * interpolation around the
+                                    * boundary. If the
+                                    * @p boundary_values contained
+                                    * values before, the new ones
+                                    * are added, or the old ones
+                                    * overwritten if a node of the
+                                    * boundary part to be used
+                                    * was already in the
+                                    * map of boundary values.
+                                    *
+                                    * The parameter
+                                    * @p function_map argument
+                                    * provides a list of boundary
+                                    * indicators to be handled by
+                                    * this function and corresponding
+                                    * boundary value functions. The
+                                    * keys of this map
+                                    * correspond to the number
+                                    * @p boundary_indicator of the
+                                    * face.  numbers::internal_face_boundary_id
+                                    * is an illegal value for this key since
+                                    * it is reserved for interior faces.
+                                    *
+                                    * The flags in the last
+                                    * parameter, @p component_mask
+                                    * denote which components of the
+                                    * finite element space shall be
+                                    * interpolated. If it is left as
+                                    * specified by the default value
+                                    * (i.e. an empty array), all
+                                    * components are
+                                    * interpolated. If it is
+                                    * different from the default
+                                    * value, it is assumed that the
+                                    * number of entries equals the
+                                    * number of components in the
+                                    * boundary functions and the
+                                    * finite element, and those
+                                    * components in the given
+                                    * boundary function will be used
+                                    * for which the respective flag
+                                    * was set in the component mask.
+                                    * See also @ref GlossComponentMask.
+                                    *
+                                    * It is assumed that the number
+                                    * of components of the function
+                                    * in @p boundary_function matches that
+                                    * of the finite element used by
+                                    * @p dof.
+                                    *
+                                    * If the finite element used has
+                                    * shape functions that are
+                                    * non-zero in more than one
+                                    * component (in deal.II speak:
+                                    * they are non-primitive), then
+                                    * these components can presently
+                                    * not be used for interpolating
+                                    * boundary values. Thus, the
+                                    * elements in the component mask
+                                    * corresponding to the
+                                    * components of these
+                                    * non-primitive shape functions
+                                    * must be @p false.
+                                    *
+                                    * See the general doc for more
+                                    * information.
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
+                               const DH                 &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask = std::vector<bool>());
+
+                                   /**
+                                    * @deprecated This function exists mainly
+                                    * for backward compatibility.
+                                    *
+                                    * Same function as above, but
+                                    * taking only one pair of
+                                    * boundary indicator and
+                                    * corresponding boundary
+                                    * function. Calls the other
+                                    * function with remapped
+                                    * arguments.
+                                    *
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
+                               const DH                 &dof,
+                               const types::boundary_id            boundary_component,
+                               const Function<DH::space_dimension>           &boundary_function,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask = std::vector<bool>());
+
+                                   /**
+                                    * Calls the other
+                                    * interpolate_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH        &dof,
+                               const types::boundary_id            boundary_component,
+                               const Function<DH::space_dimension>           &boundary_function,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask = std::vector<bool>());
+
+
+                                   /**
+                                    * Calls the other
+                                    * interpolate_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH                &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               std::map<unsigned int,double>         &boundary_values,
+                               const std::vector<bool>               &component_mask = std::vector<bool>());
+
+
+                                   /**
+                                    * Insert the (algebraic) constraints due
+                                    * to Dirichlet boundary conditions into
+                                    * a ConstraintMatrix @p
+                                    * constraints. This function identifies
+                                    * the degrees of freedom subject to
+                                    * Dirichlet boundary conditions, adds
+                                    * them to the list of constrained DoFs
+                                    * in @p constraints and sets the
+                                    * respective inhomogeneity to the value
+                                    * interpolated around the boundary. If
+                                    * this routine encounters a DoF that
+                                    * already is constrained (for instance
+                                    * by a hanging node constraint, see
+                                    * below, or any other type of
+                                    * constraint, e.g. from periodic
+                                    * boundary conditions), the old setting
+                                    * of the constraint (dofs the entry is
+                                    * constrained to, inhomogeneities) is
+                                    * kept and nothing happens.
+                                    *
+                                    * @note When combining adaptively
+                                    * refined meshes with hanging node
+                                    * constraints and boundary conditions
+                                    * like from the current function within
+                                    * one ConstraintMatrix object, the
+                                    * hanging node constraints should always
+                                    * be set first, and then the boundary
+                                    * conditions since boundary conditions
+                                    * are not set in the second operation on
+                                    * degrees of freedom that are already
+                                    * constrained. This makes sure that the
+                                    * discretization remains conforming as
+                                    * is needed. See the discussion on
+                                    * conflicting constraints in the module
+                                    * on @ref constraints .
+                                    *
+                                    * The parameter @p boundary_component
+                                    * corresponds to the number @p
+                                    * boundary_indicator of the face.
+                                    * numbers::internal_face_boundary_id
+                                    * is an illegal value, since it is
+                                    * reserved for interior faces.
+                                    *
+                                    * The flags in the last parameter, @p
+                                    * component_mask (see @ref GlossComponentMask)
+                                    * denote which
+                                    * components of the finite element
+                                    * space shall be interpolated. If it
+                                    * is left as specified by the default
+                                    * value (i.e. an empty array), all
+                                    * components are interpolated. If it
+                                    * is different from the default value,
+                                    * it is assumed that the number of
+                                    * entries equals the number of
+                                    * components in the boundary functions
+                                    * and the finite element, and those
+                                    * components in the given boundary
+                                    * function will be used for which the
+                                    * respective flag was set in the
+                                    * component mask.
+                                    *
+                                    * It is assumed that the number of
+                                    * components of the function in @p
+                                    * boundary_function matches that of
+                                    * the finite element used by @p dof.
+                                    *
+                                    * If the finite element used has shape
+                                    * functions that are non-zero in more
+                                    * than one component (in deal.II
+                                    * speak: they are non-primitive), then
+                                    * these components can presently not
+                                    * be used for interpolating boundary
+                                    * values. Thus, the elements in the
+                                    * component mask corresponding to the
+                                    * components of these non-primitive
+                                    * shape functions must be @p false.
+                                    *
+                                    * See the general doc for more
+                                    * information.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
+                               const DH                 &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               ConstraintMatrix              &constraints,
+                               const std::vector<bool>       &component_mask = std::vector<bool>());
+
+                                   /**
+                                    * @deprecated This function exists
+                                    * only for backward compatibility.
+                                    *
+                                    * Same function as above, but taking
+                                    * only one pair of boundary indicator
+                                    * and corresponding boundary
+                                    * function. Calls the other function
+                                    * with remapped arguments.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension> &mapping,
+                               const DH                            &dof,
+                               const types::boundary_id                  boundary_component,
+                               const Function<DH::space_dimension> &boundary_function,
+                               ConstraintMatrix                    &constraints,
+                               const std::vector<bool>             &component_mask = std::vector<bool>());
+
+                                   /**
+                                    * Calls the other
+                                    * interpolate_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH                            &dof,
+                               const types::boundary_id                  boundary_component,
+                               const Function<DH::space_dimension> &boundary_function,
+                               ConstraintMatrix                    &constraints,
+                               const std::vector<bool>             &component_mask = std::vector<bool>());
+
+
+                                   /**
+                                    * Calls the other
+                                    * interpolate_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH                &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               ConstraintMatrix        &constraints,
+                               const std::vector<bool> &component_mask = std::vector<bool>());
+
+
+                                   /**
+                                    * Project a function to the boundary
+                                    * of the domain, using the given
+                                    * quadrature formula for the faces. If
+                                    * the @p boundary_values contained
+                                    * values before, the new ones are
+                                    * added, or the old one overwritten if
+                                    * a node of the boundary part to be
+                                    * projected on already was in the
+                                    * variable.
+                                    *
+                                    * If @p component_mapping is empty, it
+                                    * is assumed that the number of
+                                    * components of @p boundary_function
+                                    * matches that of the finite element
+                                    * used by @p dof.
+                                    *
+                                    * In 1d, projection equals
+                                    * interpolation. Therefore,
+                                    * interpolate_boundary_values is
+                                    * called.
+                                    *
+                                    * @arg @p boundary_values: the result
+                                    * of this function, a map containing
+                                    * all indices of degrees of freedom at
+                                    * the boundary (as covered by the
+                                    * boundary parts in @p
+                                    * boundary_functions) and the computed
+                                    * dof value for this degree of
+                                    * freedom.
+                                    *
+                                    * @arg @p component_mapping: if the
+                                    * components in @p boundary_functions
+                                    * and @p dof do not coincide, this
+                                    * vector allows them to be
+                                    * remapped. If the vector is not
+                                    * empty, it has to have one entry for
+                                    * each component in @p dof. This entry
+                                    * is the component number in @p
+                                    * boundary_functions that should be
+                                    * used for this component in @p
+                                    * dof. By default, no remapping is
+                                    * applied.
+                                    */
+  template <int dim, int spacedim>
+  void project_boundary_values (const Mapping<dim, spacedim>       &mapping,
+                                const DoFHandler<dim,spacedim>    &dof,
+                                const typename FunctionMap<spacedim>::type &boundary_functions,
+                                const Quadrature<dim-1>  &q,
+                                std::map<unsigned int,double> &boundary_values,
+                                std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Calls the project_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
+                                const typename FunctionMap<spacedim>::type &boundary_function,
+                                const Quadrature<dim-1>  &q,
+                                std::map<unsigned int,double> &boundary_values,
+                                std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Project a function to the boundary of
+                                    * the domain, using the given quadrature
+                                    * formula for the faces. This function
+                                    * identifies the degrees of freedom
+                                    * subject to Dirichlet boundary
+                                    * conditions, adds them to the list of
+                                    * constrained DoFs in @p constraints and
+                                    * sets the respective inhomogeneity to
+                                    * the value resulting from the
+                                    * projection operation. If this routine
+                                    * encounters a DoF that already is
+                                    * constrained (for instance by a hanging
+                                    * node constraint, see below, or any
+                                    * other type of constraint, e.g. from
+                                    * periodic boundary conditions), the old
+                                    * setting of the constraint (dofs the
+                                    * entry is constrained to,
+                                    * inhomogeneities) is kept and nothing
+                                    * happens.
+                                    *
+                                    * @note When combining adaptively
+                                    * refined meshes with hanging node
+                                    * constraints and boundary conditions
+                                    * like from the current function within
+                                    * one ConstraintMatrix object, the
+                                    * hanging node constraints should always
+                                    * be set first, and then the boundary
+                                    * conditions since boundary conditions
+                                    * are not set in the second operation on
+                                    * degrees of freedom that are already
+                                    * constrained. This makes sure that the
+                                    * discretization remains conforming as
+                                    * is needed. See the discussion on
+                                    * conflicting constraints in the module
+                                    * on @ref constraints .
+                                    *
+                                    * If @p component_mapping is empty, it
+                                    * is assumed that the number of
+                                    * components of @p boundary_function
+                                    * matches that of the finite element
+                                    * used by @p dof.
+                                    *
+                                    * In 1d, projection equals
+                                    * interpolation. Therefore,
+                                    * interpolate_boundary_values is
+                                    * called.
+                                    *
+                                    * @arg @p component_mapping: if the
+                                    * components in @p boundary_functions
+                                    * and @p dof do not coincide, this
+                                    * vector allows them to be
+                                    * remapped. If the vector is not
+                                    * empty, it has to have one entry for
+                                    * each component in @p dof. This entry
+                                    * is the component number in @p
+                                    * boundary_functions that should be
+                                    * used for this component in @p
+                                    * dof. By default, no remapping is
+                                    * applied.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <int dim, int spacedim>
+  void project_boundary_values (const Mapping<dim, spacedim>   &mapping,
+                                const DoFHandler<dim,spacedim> &dof,
+                                const typename FunctionMap<spacedim>::type &boundary_functions,
+                                const Quadrature<dim-1>        &q,
+                                ConstraintMatrix               &constraints,
+                                std::vector<unsigned int>       component_mapping = std::vector<unsigned int>());
+
+                                   /**
+                                    * Calls the project_boundary_values()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <int dim, int spacedim>
+  void project_boundary_values (const DoFHandler<dim,spacedim> &dof,
+                                const typename FunctionMap<spacedim>::type &boundary_function,
+                                const Quadrature<dim-1>        &q,
+                                ConstraintMatrix               &constraints,
+                                std::vector<unsigned int>       component_mapping = std::vector<unsigned int>());
+
+
+                                   /**
+                                    * Compute constraints that correspond to
+                                    * boundary conditions of the form
+                                    * $\vec{n}\times\vec{u}=\vec{n}\times\vec{f}$,
+                                    * i.e. the tangential components of $u$
+                                    * and $f$ shall coincide.
+                                    *
+                                    * If the ConstraintMatrix @p constraints
+                                    * contained values or other
+                                    * constraints before, the new ones are
+                                    * added or the old ones overwritten,
+                                    * if a node of the boundary part to be
+                                    * used was already in the list of
+                                    * constraints. This is handled by
+                                    * using inhomogeneous constraints. Please
+                                    * note that when combining adaptive meshes
+                                    * and this kind of constraints, the
+                                    * Dirichlet conditions should be set
+                                    * first, and then completed by hanging
+                                    * node constraints, in order to make sure
+                                    * that the discretization remains
+                                    * consistent. See the discussion on
+                                    * conflicting constraints in the
+                                    * module on @ref constraints .
+                                    *
+                                    * This function is explecitly written to
+                                    * use with the FE_Nedelec elements. Thus
+                                    * it throws an exception, if it is
+                                    * called with other finite elements.
+                                    *
+                                    * The second argument of this function
+                                    * denotes the first vector component in
+                                    * the finite element that corresponds to
+                                    * the vector function that you want to
+                                    * constrain. For example, if we want to
+                                    * solve Maxwell's equations in 3d and the
+                                    * finite element has components
+                                    * $(E_x,E_y,E_z,B_x,B_y,B_z)$ and we want
+                                    * the boundary conditions
+                                    * $\vec{n}\times\vec{B}=\vec{n}\times\vec{f}$,
+                                    * then @p first_vector_component would
+                                    * be 3. Vectors are implicitly assumed to
+                                    * have exactly <code>dim</code> components
+                                    * that are ordered in the same way as we
+                                    * usually order the coordinate directions,
+                                    * i.e. $x$-, $y$-, and finally
+                                    * $z$-component.
+                                    *
+                                    * The parameter @p boundary_component
+                                    * corresponds to the number
+                                    * @p boundary_indicator of the face.
+                                    * numbers::internal_face_boundary_id
+                                    * is an illegal value, since it is
+                                    * reserved for interior faces.
+                                    *
+                                    * The last argument is denoted to compute
+                                    * the normal vector $\vec{n}$ at the
+                                    * boundary points.
+                                    *
+                                    * <h4>Computing constraints</h4>
+                                    *
+                                    * To compute the constraints we use
+                                    * projection-based interpolation as proposed
+                                    * in Solin, Segeth and Dolezel
+                                    * (Higher order finite elements, Chapman&amp;Hall,
+                                    * 2004) on every face located at the
+                                    * boundary.
+                                    *
+                                    * First one projects $\vec{f}$ on the
+                                    * lowest-order edge shape functions. Then the
+                                    * remaining part $(I-P_0)\vec{f}$ of the
+                                    * function is projected on the remaining
+                                    * higher-order edge shape functions. In the
+                                    * last step we project $(I-P_0-P_e)\vec{f}$
+                                    * on the bubble shape functions defined on
+                                    * the face.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <int dim>
+  void project_boundary_values_curl_conforming (const DoFHandler<dim>& dof_handler,
+                                                const unsigned int first_vector_component,
+                                                const Function<dim>& boundary_function,
+                                                const types::boundary_id boundary_component,
+                                                ConstraintMatrix& constraints,
+                                                const Mapping<dim>& mapping = StaticMappingQ1<dim>::mapping);
+
+                                   /**
+                                    * Same as above for the hp-namespace.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <int dim>
+  void project_boundary_values_curl_conforming (const hp::DoFHandler<dim>& dof_handler,
+                                                const unsigned int first_vector_component,
+                                                const Function<dim>& boundary_function,
+                                                const types::boundary_id boundary_component,
+                                                ConstraintMatrix& constraints,
+                                                const hp::MappingCollection<dim, dim>& mapping_collection = hp::StaticMappingQ1<dim>::mapping_collection);
+
+
+                                   /**
+                                    * Compute constraints that correspond to
+                                    * boundary conditions of the form
+                                    * $\vec{n}^T\vec{u}=\vec{n}^T\vec{f}$,
+                                    * i.e. the normal components of $u$
+                                    * and $f$ shall coincide.
+                                    *
+                                    * If the ConstraintMatrix @p constraints
+                                    * contained values or other
+                                    * constraints before, the new ones are
+                                    * added or the old ones overwritten,
+                                    * if a node of the boundary part to be
+                                    * used was already in the list of
+                                    * constraints. This is handled by
+                                    * using inhomogeneous constraints. Please
+                                    * note that when combining adaptive meshes
+                                    * and this kind of constraints, the
+                                    * Dirichlet conditions should be set
+                                    * first, and then completed by hanging
+                                    * node constraints, in order to make sure
+                                    * that the discretization remains
+                                    * consistent. See the discussion on
+                                    * conflicting constraints in the
+                                    * module on @ref constraints .
+                                    *
+                                    * This function is explecitly written to
+                                    * use with the FE_RaviartThomas elements.
+                                    * Thus it throws an exception, if it is
+                                    * called with other finite elements.
+                                    *
+                                    * The second argument of this function
+                                    * denotes the first vector component in
+                                    * the finite element that corresponds to
+                                    * the vector function that you want to
+                                    * constrain. Vectors are implicitly
+                                    * assumed to have exactly
+                                    * <code>dim</code> components that are
+                                    * ordered in the same way as we
+                                    * usually order the coordinate directions,
+                                    * i.e. $x$-, $y$-, and finally
+                                    * $z$-component.
+                                    *
+                                    * The parameter @p boundary_component
+                                    * corresponds to the number
+                                    * @p boundary_indicator of the face.
+                                    *  numbers::internal_face_boundary_id
+                                    * is an illegal value, since it is
+                                    * reserved for interior faces.
+                                    *
+                                    * The last argument is denoted to compute
+                                    * the normal vector $\vec{n}$ at the
+                                    * boundary points.
+                                    *
+                                    * <h4>Computing constraints</h4>
+                                    *
+                                    * To compute the constraints we use
+                                    * interpolation operator proposed
+                                    * in Brezzi, Fortin (Mixed and Hybrid
+                                    * (Finite Element Methods, Springer,
+                                    * 1991) on every face located at the
+                                    * boundary.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template<int dim>
+  void project_boundary_values_div_conforming (const DoFHandler<dim>& dof_handler,
+                                               const unsigned int first_vector_component,
+                                               const Function<dim>& boundary_function,
+                                               const types::boundary_id boundary_component,
+                                               ConstraintMatrix& constraints,
+                                               const Mapping<dim>& mapping = StaticMappingQ1<dim>::mapping);
+
+                                   /**
+                                    * Same as above for the hp-namespace.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template<int dim>
+  void project_boundary_values_div_conforming (const hp::DoFHandler<dim>& dof_handler,
+                                               const unsigned int first_vector_component,
+                                               const Function<dim>& boundary_function,
+                                               const types::boundary_id boundary_component,
+                                               ConstraintMatrix& constraints,
+                                               const hp::MappingCollection<dim, dim>& mapping_collection = hp::StaticMappingQ1<dim>::mapping_collection);
+
+
+                                   /**
+                                    * Compute the constraints that
+                                    * correspond to boundary conditions of
+                                    * the form $\vec n \cdot \vec u=0$,
+                                    * i.e. no normal flux if $\vec u$ is a
+                                    * vector-valued quantity. These
+                                    * conditions have exactly the form
+                                    * handled by the ConstraintMatrix class,
+                                    * so instead of creating a map between
+                                    * boundary degrees of freedom and
+                                    * corresponding value, we here create a
+                                    * list of constraints that are written
+                                    * into a ConstraintMatrix. This object
+                                    * may already have some content, for
+                                    * example from hanging node constraints,
+                                    * that remains untouched. These
+                                    * constraints have to be applied to the
+                                    * linear system like any other such
+                                    * constraints, i.e. you have to condense
+                                    * the linear system with the constraints
+                                    * before solving, and you have to
+                                    * distribute the solution vector
+                                    * afterwards.
+                                    *
+                                    * The use of this function is
+                                    * explained in more detail in
+                                    * step-31. It
+                                    * doesn't make much sense in 1d,
+                                    * so the function throws an
+                                    * exception in that case.
+                                    *
+                                    * The second argument of this
+                                    * function denotes the first
+                                    * vector component in the finite
+                                    * element that corresponds to
+                                    * the vector function that you
+                                    * want to constrain. For
+                                    * example, if we were solving a
+                                    * Stokes equation in 2d and the
+                                    * finite element had components
+                                    * $(u,v,p)$, then @p
+                                    * first_vector_component would
+                                    * be zero. On the other hand, if
+                                    * we solved the Maxwell
+                                    * equations in 3d and the finite
+                                    * element has components
+                                    * $(E_x,E_y,E_z,B_x,B_y,B_z)$
+                                    * and we want the boundary
+                                    * condition $\vec n\cdot \vec
+                                    * B=0$, then @p
+                                    * first_vector_component would
+                                    * be 3. Vectors are implicitly
+                                    * assumed to have exactly
+                                    * <code>dim</code> components
+                                    * that are ordered in the same
+                                    * way as we usually order the
+                                    * coordinate directions,
+                                    * i.e. $x$-, $y$-, and finally
+                                    * $z$-component. The function
+                                    * assumes, but can't check, that
+                                    * the vector components in the
+                                    * range
+                                    * <code>[first_vector_component,first_vector_component+dim)</code>
+                                    * come from the same base finite
+                                    * element. For example, in the
+                                    * Stokes example above, it would
+                                    * not make sense to use a
+                                    * <code>FESystem@<dim@>(FE_Q@<dim@>(2),
+                                    * 1, FE_Q@<dim@>(1), dim)</code>
+                                    * (note that the first velocity
+                                    * vector component is a $Q_2$
+                                    * element, whereas all the other
+                                    * ones are $Q_1$ elements) as
+                                    * there would be points on the
+                                    * boundary where the
+                                    * $x$-velocity is defined but no
+                                    * corresponding $y$- or
+                                    * $z$-velocities.
+                                    *
+                                    * The third argument denotes the set of
+                                    * boundary indicators on which the
+                                    * boundary condition is to be
+                                    * enforced. Note that, as explained
+                                    * below, this is one of the few
+                                    * functions where it makes a difference
+                                    * where we call the function multiple
+                                    * times with only one boundary
+                                    * indicator, or whether we call the
+                                    * function onces with the whole set of
+                                    * boundary indicators at once.
+                                    *
+                                    * The mapping argument is used to
+                                    * compute the boundary points where the function
+                                    * needs to request the normal vector $\vec n$
+                                    * from the boundary description.
+                                    *
+                                    * @note When combining adaptively
+                                    * refined meshes with hanging node
+                                    * constraints and boundary conditions
+                                    * like from the current function within
+                                    * one ConstraintMatrix object, the
+                                    * hanging node constraints should always
+                                    * be set first, and then the boundary
+                                    * conditions since boundary conditions
+                                    * are not set in the second operation on
+                                    * degrees of freedom that are already
+                                    * constrained. This makes sure that the
+                                    * discretization remains conforming as
+                                    * is needed. See the discussion on
+                                    * conflicting constraints in the module
+                                    * on @ref constraints .
+                                    *
+                                    *
+                                    * <h4>Computing constraints in 2d</h4>
+                                    *
+                                    * Computing these constraints requires
+                                    * some smarts. The main question
+                                    * revolves around the question what the
+                                    * normal vector is. Consider the
+                                    * following situation:
+                                    * <p ALIGN="center">
+                                    * @image html no_normal_flux_1.png
+                                    * </p>
+                                    *
+                                    * Here, we have two cells that use a
+                                    * bilinear mapping
+                                    * (i.e. MappingQ1). Consequently, for
+                                    * each of the cells, the normal vector
+                                    * is perpendicular to the straight
+                                    * edge. If the two edges at the top and
+                                    * right are meant to approximate a
+                                    * curved boundary (as indicated by the
+                                    * dashed line), then neither of the two
+                                    * computed normal vectors are equal to
+                                    * the exact normal vector (though they
+                                    * approximate it as the mesh is refined
+                                    * further). What is worse, if we
+                                    * constrain $\vec n \cdot \vec u=0$ at
+                                    * the common vertex with the normal
+                                    * vector from both cells, then we
+                                    * constrain the vector $\vec u$ with
+                                    * respect to two linearly independent
+                                    * vectors; consequently, the constraint
+                                    * would be $\vec u=0$ at this point
+                                    * (i.e. <i>all</i> components of the
+                                    * vector), which is not what we wanted.
+                                    *
+                                    * To deal with this situation, the
+                                    * algorithm works in the following way:
+                                    * at each point where we want to
+                                    * constrain $\vec u$, we first collect
+                                    * all normal vectors that adjacent cells
+                                    * might compute at this point. We then
+                                    * do not constrain $\vec n \cdot \vec
+                                    * u=0$ for <i>each</i> of these normal
+                                    * vectors but only for the
+                                    * <i>average</i> of the normal
+                                    * vectors. In the example above, we
+                                    * therefore record only a single
+                                    * constraint $\vec n \cdot \vec {\bar
+                                    * u}=0$, where $\vec {\bar u}$ is the
+                                    * average of the two indicated normal
+                                    * vectors.
+                                    *
+                                    * Unfortunately, this is not quite
+                                    * enough. Consider the situation here:
+                                    *
+                                    * <p ALIGN="center">
+                                    * @image html no_normal_flux_2.png
+                                    * </p>
+                                    *
+                                    * If again the top and right edges
+                                    * approximate a curved boundary, and the
+                                    * left boundary a separate boundary (for
+                                    * example straight) so that the exact
+                                    * boundary has indeed a corner at the
+                                    * top left vertex, then the above
+                                    * construction would not work: here, we
+                                    * indeed want the constraint that $\vec
+                                    * u$ at this point (because the normal
+                                    * velocities with respect to both the
+                                    * left normal as well as the top normal
+                                    * vector should be zero), not that the
+                                    * velocity in the direction of the
+                                    * average normal vector is zero.
+                                    *
+                                    * Consequently, we use the following
+                                    * heuristic to determine whether all
+                                    * normal vectors computed at one point
+                                    * are to be averaged: if two normal
+                                    * vectors for the same point are
+                                    * computed on <i>different</i> cells,
+                                    * then they are to be averaged. This
+                                    * covers the first example above. If
+                                    * they are computed from the same cell,
+                                    * then the fact that they are different
+                                    * is considered indication that they
+                                    * come from different parts of the
+                                    * boundary that might be joined by a
+                                    * real corner, and must not be averaged.
+                                    *
+                                    * There is one problem with this
+                                    * scheme. If, for example, the same
+                                    * domain we have considered above, is
+                                    * discretized with the following mesh,
+                                    * then we get into trouble:
+                                    *
+                                    * <p ALIGN="center">
+                                    * @image html no_normal_flux_2.png
+                                    * </p>
+                                    *
+                                    * Here, the algorithm assumes that the
+                                    * boundary does not have a corner at the
+                                    * point where faces $F1$ and $F2$ join
+                                    * because at that point there are two
+                                    * different normal vectors computed from
+                                    * different cells. If you intend for
+                                    * there to be a corner of the exact
+                                    * boundary at this point, the only way
+                                    * to deal with this is to assign the two
+                                    * parts of the boundary different
+                                    * boundary indicators and call this
+                                    * function twice, once for each boundary
+                                    * indicators; doing so will yield only
+                                    * one normal vector at this point per
+                                    * invocation (because we consider only
+                                    * one boundary part at a time), with the
+                                    * result that the normal vectors will
+                                    * not be averaged.
+                                    *
+                                    *
+                                    * <h4>Computing constraints in 3d</h4>
+                                    *
+                                    * The situation is more
+                                    * complicated in 3d. Consider
+                                    * the following case where we
+                                    * want to compute the
+                                    * constraints at the marked
+                                    * vertex:
+                                    *
+                                    * <p ALIGN="center">
+                                    * @image html no_normal_flux_4.png
+                                    * </p>
+                                    *
+                                    * Here, we get four different
+                                    * normal vectors, one from each
+                                    * of the four faces that meet at
+                                    * the vertex. Even though they
+                                    * may form a complete set of
+                                    * vectors, it is not our intent
+                                    * to constrain all components of
+                                    * the vector field at this
+                                    * point. Rather, we would like
+                                    * to still allow tangential
+                                    * flow, where the term
+                                    * "tangential" has to be
+                                    * suitably defined.
+                                    *
+                                    * In a case like this, the
+                                    * algorithm proceeds as follows:
+                                    * for each cell that has
+                                    * computed two tangential
+                                    * vectors at this point, we
+                                    * compute the unconstrained
+                                    * direction as the outer product
+                                    * of the two tangential vectors
+                                    * (if necessary multiplied by
+                                    * minus one). We then average
+                                    * these tangential
+                                    * vectors. Finally, we compute
+                                    * constraints for the two
+                                    * directions perpendicular to
+                                    * this averaged tangential
+                                    * direction.
+                                    *
+                                    * There are cases where one cell
+                                    * contributes two tangential
+                                    * directions and another one
+                                    * only one; for example, this
+                                    * would happen if both top and
+                                    * front faces of the left cell
+                                    * belong to the boundary
+                                    * selected whereas only the top
+                                    * face of the right cell belongs
+                                    * to it. This case is not
+                                    * currently implemented.
+                                    *
+                                    *
+                                    * <h4>Results</h4>
+                                    *
+                                    * Because it makes for good
+                                    * pictures, here are two images
+                                    * of vector fields on a circle
+                                    * and on a sphere to which the
+                                    * constraints computed by this
+                                    * function have been applied:
+                                    *
+                                    * <p ALIGN="center">
+                                    * @image html no_normal_flux_5.png
+                                    * @image html no_normal_flux_6.png
+                                    * </p>
+                                    *
+                                    * The vectors fields are not
+                                    * physically reasonable but the
+                                    * tangentiality constraint is
+                                    * clearly enforced. The fact
+                                    * that the vector fields are
+                                    * zero at some points on the
+                                    * boundary is an artifact of the
+                                    * way it is created, it is not
+                                    * constrained to be zero at
+                                    * these points.
+                                    *
+                                    * @ingroup constraints
+                                    */
+  template <int dim, template <int, int> class DH, int spacedim>
+
+  void
+  compute_no_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
+                                      const unsigned int     first_vector_component,
+                                      const std::set<types::boundary_id> &boundary_ids,
+                                      ConstraintMatrix      &constraints,
+                                      const Mapping<dim, spacedim>    &mapping = StaticMappingQ1<dim>::mapping);
+
+
+                                   //@}
+                                   /**
+                                    * @name Assembling of right hand sides
+                                    */
+                                   //@{
+
+                                   /**
+                                    * Create a right hand side
+                                    * vector. Prior content of the
+                                    * given @p rhs_vector vector is
+                                    * deleted.
+                                    *
+                                    * See the general documentation of this
+                                    * class for further information.
+                                    */
+  template <int dim, int spacedim>
+  void create_right_hand_side (const Mapping<dim, spacedim>    &mapping,
+                               const DoFHandler<dim,spacedim> &dof,
+                               const Quadrature<dim> &q,
+                               const Function<spacedim>   &rhs,
+                               Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Calls the create_right_hand_side()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_right_hand_side (const DoFHandler<dim,spacedim> &dof,
+                               const Quadrature<dim> &q,
+                               const Function<spacedim>   &rhs,
+                               Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects.
+                                    */
+  template <int dim, int spacedim>
+  void create_right_hand_side (const hp::MappingCollection<dim,spacedim>    &mapping,
+                               const hp::DoFHandler<dim,spacedim> &dof,
+                               const hp::QCollection<dim> &q,
+                               const Function<spacedim>   &rhs,
+                               Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects.
+                                    */
+  template <int dim, int spacedim>
+  void create_right_hand_side (const hp::DoFHandler<dim,spacedim> &dof,
+                               const hp::QCollection<dim> &q,
+                               const Function<spacedim>   &rhs,
+                               Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Create a right hand side
+                                    * vector for a point source at point @p p.
+                                    * Prior content of the
+                                    * given @p rhs_vector vector is
+                                    * deleted.
+                                    *
+                                    * See the general documentation of this
+                                    * class for further information.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const Mapping<dim,spacedim>    &mapping,
+                                  const DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>      &p,
+                                  Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Calls the create_point_source_vector()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>      &p,
+                                  Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const hp::MappingCollection<dim,spacedim>    &mapping,
+                                  const hp::DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>      &p,
+                                  Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects. The function uses
+                                    * the default Q1 mapping object. Note
+                                    * that if your hp::DoFHandler uses any
+                                    * active fe index other than zero, then
+                                    * you need to call the function above
+                                    * that provides a mapping object for
+                                    * each active fe index.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const hp::DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>      &p,
+                                  Vector<double>        &rhs_vector);
+
+                                   /**
+                                    * Create a right hand side
+                                    * vector for a point source at point @p p
+                                    * for vector-valued finite elements.
+                                    * Prior content of the
+                                    * given @p rhs_vector vector is
+                                    * deleted.
+                                    *
+                                    * See the general documentation of this
+                                    * class for further information.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const Mapping<dim,spacedim>    &mapping,
+                                  const DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>          &p,
+                                  const Point<dim>               &orientation,
+                                  Vector<double>                 &rhs_vector);
+
+                                   /**
+                                    * Calls the create_point_source_vector()
+                                    * function for vector-valued finite elements,
+                                    * see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>          &p,
+                                  const Point<dim>               &orientation,
+                                  Vector<double>                 &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const hp::MappingCollection<dim,spacedim> &mapping,
+                                  const hp::DoFHandler<dim,spacedim>        &dof,
+                                  const Point<spacedim>                     &p,
+                                  const Point<dim>                          &orientation,
+                                  Vector<double>                            &rhs_vector);
+
+                                   /**
+                                    * Like the previous set of functions,
+                                    * but for hp objects. The function uses
+                                    * the default Q1 mapping object. Note
+                                    * that if your hp::DoFHandler uses any
+                                    * active fe index other than zero, then
+                                    * you need to call the function above
+                                    * that provides a mapping object for
+                                    * each active fe index.
+                                    */
+  template <int dim, int spacedim>
+  void create_point_source_vector(const hp::DoFHandler<dim,spacedim> &dof,
+                                  const Point<spacedim>              &p,
+                                  const Point<dim>                   &orientation,
+                                  Vector<double>                     &rhs_vector);
+
+                                   /**
+                                    * Create a right hand side
+                                    * vector from boundary
+                                    * forces. Prior content of the
+                                    * given @p rhs_vector vector is
+                                    * deleted.
+                                    *
+                                    * See the general documentation of this
+                                    * class for further information.
+                                    */
+  template <int dim, int spacedim>
+  void create_boundary_right_hand_side (const Mapping<dim,spacedim>      &mapping,
+                                        const DoFHandler<dim,spacedim>   &dof,
+                                        const Quadrature<dim-1> &q,
+                                        const Function<spacedim>     &rhs,
+                                        Vector<double>          &rhs_vector,
+                                        const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
+
+                                   /**
+                                    * Calls the
+                                    * create_boundary_right_hand_side()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, int spacedim>
+  void create_boundary_right_hand_side (const DoFHandler<dim,spacedim>   &dof,
+                                        const Quadrature<dim-1> &q,
+                                        const Function<spacedim>     &rhs,
+                                        Vector<double>          &rhs_vector,
+                                        const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
+
+                                   /**
+                                    * Same as the set of functions above,
+                                    * but for hp objects.
+                                    */
+  template <int dim, int spacedim>
+  void create_boundary_right_hand_side (const hp::MappingCollection<dim,spacedim>      &mapping,
+                                        const hp::DoFHandler<dim,spacedim>   &dof,
+                                        const hp::QCollection<dim-1> &q,
+                                        const Function<spacedim>     &rhs,
+                                        Vector<double>          &rhs_vector,
+                                        const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
+
+                                   /**
+                                    * Calls the
+                                    * create_boundary_right_hand_side()
+                                    * function, see above, with a
+                                    * single Q1 mapping as
+                                    * collection. This function
+                                    * therefore will only work if
+                                    * the only active fe index in
+                                    * use is zero.
+                                    */
+  template <int dim, int spacedim>
+  void create_boundary_right_hand_side (const hp::DoFHandler<dim,spacedim>   &dof,
+                                        const hp::QCollection<dim-1> &q,
+                                        const Function<spacedim>     &rhs,
+                                        Vector<double>          &rhs_vector,
+                                        const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
+
+                                   //@}
+                                   /**
+                                    * @name Evaluation of functions
+                                    * and errors
+                                    */
+                                   //@{
+
+                                   /**
+                                    * Compute the error of the
+                                    * finite element solution.
+                                    * Integrate the difference
+                                    * between a reference function
+                                    * which is given as a continuous
+                                    * function object, and a finite
+                                    * element function.
+                                    *
+                                    * The value of @p exponent is
+                                    * used for computing $L^p$-norms
+                                    * and $W^{1,p}$-norms.
+                                    *
+                                    * The additional argument @p
+                                    * weight allows to evaluate
+                                    * weighted norms.  The weight
+                                    * function may be scalar,
+                                    * establishing a weight in the
+                                    * domain for all components
+                                    * equally. This may be used, for
+                                    * instance, to only integrates
+                                    * over parts of the domain.
+                                    *
+                                    * The weight function may also
+                                    * be vector-valued, with as many
+                                    * components as the finite
+                                    * element function: Then,
+                                    * different components get
+                                    * different weights. A typical
+                                    * application is when the error
+                                    * with respect to only one or a
+                                    * subset of the solution
+                                    * variables is to be computed,
+                                    * in which the other components
+                                    * would have weight values equal
+                                    * to zero. The
+                                    * ComponentSelectFunction class
+                                    * is particularly useful for
+                                    * this purpose.
+                                    *
+                                    * The weight function is
+                                    * expected to be positive, but
+                                    * negative values are not
+                                    * filtered. By default, no
+                                    * weighting function is given,
+                                    * i.e. weight=1 in the whole
+                                    * domain for all vector
+                                    * components uniformly. Note that
+                                    * one often wants to compute the
+                                    * error in only one component of
+                                    * a solution vector (e.g. for the
+                                    * pressure in the Stokes system,
+                                    * when the solution vector also
+                                    * contains the velocity components).
+                                    * In these cases, the weight should
+                                    * be a <i>mask</i>, i.e., be a
+                                    * vector function for which individual
+                                    * components are either zero or one.
+                                    * This can easily be achieved using
+                                    * the ComponentSelectFunction
+                                    * class.
+                                    *
+                                    * It is assumed that the number
+                                    * of components of the function
+                                    * @p exact_solution matches that
+                                    * of the finite element used by
+                                    * @p dof.
+                                    *
+                                    * See the general documentation of this
+                                    * class for more information.
+                                    *
+                                    * @note Instantiations for this template
+                                    * are provided for some vector types
+                                    * (see the general documentation of the
+                                    * class), but only for InVectors as in
+                                    * the documentation of the class,
+                                    * OutVector only Vector<double> and
+                                    * Vector<float>.
+                                    */
+  template <int dim, class InVector, class OutVector, int spacedim>
+    void integrate_difference (const Mapping<dim,spacedim>    &mapping,
+                              const DoFHandler<dim,spacedim> &dof,
+                              const InVector                 &fe_function,
+                              const Function<spacedim>       &exact_solution,
+                              OutVector                      &difference,
+                              const Quadrature<dim>          &q,
+                              const NormType                 &norm,
+                              const Function<spacedim>       *weight = 0,
+                              const double exponent = 2.);
+
+                                   /**
+                                    * Calls the integrate_difference()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, class InVector, class OutVector, int spacedim>
+    void integrate_difference (const DoFHandler<dim,spacedim> &dof,
+                              const InVector                 &fe_function,
+                              const Function<spacedim>       &exact_solution,
+                              OutVector                      &difference,
+                              const Quadrature<dim>          &q,
+                              const NormType                 &norm,
+                              const Function<spacedim>       *weight = 0,
+                              const double exponent = 2.);
+
+                                   /**
+                                   * Same as above for hp.
+                                   */
+  template <int dim, class InVector, class OutVector, int spacedim>
+    void integrate_difference (const hp::MappingCollection<dim,spacedim> &mapping,
+                              const hp::DoFHandler<dim,spacedim>        &dof,
+                              const InVector                            &fe_function,
+                              const Function<spacedim>                  &exact_solution,
+                              OutVector                                 &difference,
+                              const hp::QCollection<dim>                &q,
+                              const NormType                            &norm,
+                              const Function<spacedim>                  *weight = 0,
+                              const double exponent = 2.);
+  
+                                   /**
+                                    * Calls the integrate_difference()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, class InVector, class OutVector, int spacedim>
+    void integrate_difference (const hp::DoFHandler<dim,spacedim> &dof,
+                              const InVector                     &fe_function,
+                              const Function<spacedim>           &exact_solution,
+                              OutVector                          &difference,
+                              const hp::QCollection<dim>         &q,
+                              const NormType                     &norm,
+                              const Function<spacedim>           *weight = 0,
+                              const double exponent = 2.);
+  
+                                   /**
+                                    * Point error evaluation. Find
+                                    * the first cell containing the
+                                    * given point and compute the
+                                    * difference of a (possibly
+                                    * vector-valued) finite element
+                                    * function and a continuous
+                                    * function (with as many vector
+                                    * components as the finite
+                                    * element) at this point.
+                                    *
+                                    * This is a wrapper function
+                                    * using a Q1-mapping for cell
+                                    * boundaries to call the other
+                                    * point_difference() function.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    void point_difference (const DoFHandler<dim,spacedim> &dof,
+                          const InVector                 &fe_function,
+                          const Function<spacedim>       &exact_solution,
+                          Vector<double>                 &difference,
+                          const Point<spacedim>          &point);
+
+                                   /**
+                                    * Point error evaluation. Find
+                                    * the first cell containing the
+                                    * given point and compute the
+                                    * difference of a (possibly
+                                    * vector-valued) finite element
+                                    * function and a continuous
+                                    * function (with as many vector
+                                    * components as the finite
+                                    * element) at this point.
+                                    *
+                                    * Compared with the other
+                                    * function of the same name,
+                                    * this function uses an
+                                    * arbitrary mapping to evaluate
+                                    * the difference.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    void point_difference (const Mapping<dim, spacedim>   &mapping,
+                          const DoFHandler<dim,spacedim> &dof,
+                          const InVector                 &fe_function,
+                          const Function<spacedim>       &exact_solution,
+                          Vector<double>                 &difference,
+                          const Point<spacedim>          &point);
+
+                                   /**
+                                    * Evaluate a possibly
+                                    * vector-valued finite element
+                                    * function defined by the given
+                                    * DoFHandler and nodal vector at
+                                    * the given point, and return
+                                    * the (vector) value of this
+                                    * function through the last
+                                    * argument.
+                                    *
+                                    * This is a wrapper function
+                                    * using a Q1-mapping for cell
+                                    * boundaries to call the other
+                                    * point_difference() function.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    void
+    point_value (const DoFHandler<dim,spacedim> &dof,
+                const InVector                 &fe_function,
+                const Point<spacedim>          &point,
+                Vector<double>                 &value);
+  
+                                   /**
+                                   * Same as above for hp.
+                                   */
+  template <int dim, class InVector, int spacedim>
+    void
+    point_value (const hp::DoFHandler<dim,spacedim> &dof,
+                const InVector                     &fe_function,
+                const Point<spacedim>              &point,
+                Vector<double>                     &value);
+
+                                   /**
+                                    * Evaluate a scalar finite
+                                    * element function defined by
+                                    * the given DoFHandler and nodal
+                                    * vector at the given point, and
+                                    * return the value of this
+                                    * function.
+                                    *
+                                    * Compared with the other
+                                    * function of the same name,
+                                    * this is a wrapper function using
+                                    * a Q1-mapping for cells.
+                                    *
+                                    * This function is used in the
+                                    * "Possibilities for extensions" part of
+                                    * the results section of @ref step_3
+                                    * "step-3".
+                                    */
+  template <int dim, class InVector, int spacedim>
+    double
+    point_value (const DoFHandler<dim,spacedim> &dof,
+                const InVector                 &fe_function,
+                const Point<spacedim>          &point);
+
+                                   /**
+                                   * Same as above for hp.
+                                   */
+  template <int dim, class InVector, int spacedim>
+    double
+    point_value (const hp::DoFHandler<dim,spacedim> &dof,
+                const InVector                     &fe_function,
+                const Point<spacedim>              &point);
+  
+                                   /**
+                                    * Evaluate a possibly
+                                    * vector-valued finite element
+                                    * function defined by the given
+                                    * DoFHandler and nodal vector at
+                                    * the given point, and return
+                                    * the (vector) value of this
+                                    * function through the last
+                                    * argument.
+                                    *
+                                    * Compared with the other
+                                    * function of the same name,
+                                    * this function uses an arbitrary
+                                    * mapping to evaluate the difference.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    void
+    point_value (const Mapping<dim, spacedim>   &mapping,
+                const DoFHandler<dim,spacedim> &dof,
+                const InVector                 &fe_function,
+                const Point<spacedim>          &point,
+                Vector<double>                 &value);
+
+                                   /**
+                                   * Same as above for hp.
+                                   */
+  template <int dim, class InVector, int spacedim>
+    void
+    point_value (const hp::MappingCollection<dim, spacedim> &mapping,
+                const hp::DoFHandler<dim,spacedim>         &dof,
+                const InVector                             &fe_function,
+                const Point<spacedim>                      &point,
+                Vector<double>                             &value);
+
+                                   /**
+                                    * Evaluate a scalar finite
+                                    * element function defined by
+                                    * the given DoFHandler and nodal
+                                    * vector at the given point, and
+                                    * return the value of this
+                                    * function.
+                                    *
+                                    * Compared with the other
+                                    * function of the same name,
+                                    * this function uses an arbitrary
+                                    * mapping to evaluate the difference.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    double
+    point_value (const Mapping<dim,spacedim>    &mapping,
+                const DoFHandler<dim,spacedim> &dof,
+                const InVector                 &fe_function,
+                const Point<spacedim>          &point);
+
+                                   /**
+                                   * Same as above for hp.
+                                   */
+  template <int dim, class InVector, int spacedim>
+    double
+    point_value (const hp::MappingCollection<dim,spacedim> &mapping,
+                const hp::DoFHandler<dim,spacedim>        &dof,
+                const InVector                            &fe_function,
+                const Point<spacedim>                     &point);
+
+                                   //@}
+                                   /**
+                                    * Mean value operations
+                                    */
+                                   //@{
+
+                                   /**
+                                    * Subtract the (algebraic) mean value
+                                    * from a vector. This function is most
+                                    * frequently used as a mean-value filter
+                                    * for Stokes: The pressure in Stokes'
+                                    * equations with only Dirichlet
+                                    * boundaries for the velocities is only
+                                    * determined up to a constant. This
+                                    * function allows to subtract the mean
+                                    * value of the pressure. It is usually
+                                    * called in a preconditioner and
+                                    * generates updates with mean value
+                                    * zero. The mean value is computed as
+                                    * the mean value of the degrees of
+                                    * freedom values as given by the input
+                                    * vector; they are not weighted by the
+                                    * area of cells, i.e. the mean is
+                                    * computed as $\sum_i v_i$, rather than
+                                    * as $\int_\Omega v(x) = \int_\Omega
+                                    * \sum_i v_i \phi_i(x)$. The latter can
+                                    * be obtained from the
+                                    * VectorTools::compute_mean_function,
+                                    * however.
+                                    *
+                                    * Apart from the vector @p v to operate
+                                    * on, this function takes a boolean mask
+                                    * that has a true entry for every element
+                                    * of the vector for which the mean value
+                                    * shall be computed and later
+                                    * subtracted. The argument is used to
+                                    * denote which components of the solution
+                                    * vector correspond to the pressure, and
+                                    * avoid touching all other components of
+                                    * the vector, such as the velocity
+                                    * components. (Note, however, that the
+                                    * mask is not a @ref GlossComponentMask
+                                    * operating on the vector components of
+                                    * the finite element the solution vector
+                                    * @p v may be associated with; rather, it
+                                    * is a mask on the entire vector, without
+                                    * reference to what the vector elements
+                                    * mean.)
+                                    *
+                                    * @note In the context of using this
+                                    * function to filter out the kernel of
+                                    * an operator (such as the null space of
+                                    * the Stokes operator that consists of
+                                    * the constant pressures), this function
+                                    * only makes sense for finite elements
+                                    * for which the null space indeed
+                                    * consists of the vector
+                                    * $(1,1,\ldots,1)^T$. This is the case
+                                    * for example for the usual Lagrange
+                                    * elements where the sum of all shape
+                                    * functions equals the function that is
+                                    * constant one. However, it is not true
+                                    * for some other functions: for example,
+                                    * for the FE_DGP element (another valid
+                                    * choice for the pressure in Stokes
+                                    * discretizations), the first shape
+                                    * function on each cell is constant
+                                    * while further elements are $L_2$
+                                    * orthogonal to it (on the reference
+                                    * cell); consequently, the sum of all
+                                    * shape functions is not equal to one,
+                                    * and the vector that is associated with
+                                    * the constant mode is not equal to
+                                    * $(1,1,\ldots,1)^T$. For such elements,
+                                    * a different procedure has to be used
+                                    * when subtracting the mean value.
+                                    */
+  void subtract_mean_value(Vector<double>          &v,
+                           const std::vector<bool> &p_select);
+
+                                   /**
+                                    * Compute the mean value of one
+                                    * component of the solution.
+                                    *
+                                    * This function integrates the
+                                    * chosen component over the
+                                    * whole domain and returns the
+                                    * result, i.e. it computes
+                                    * $\int_\Omega [u_h(x)]_c \; dx$
+                                    * where $c$ is the vector component
+                                    * and $u_h$ is the function
+                                    * representation of the nodal
+                                    * vector given as fourth
+                                    * argument. The integral is evaluated
+                                    * numerically using the quadrature
+                                    * formula given as third argument.
+                                    *
+                                    * This function is used in the
+                                    * "Possibilities for extensions" part of
+                                    * the results section of @ref step_3
+                                    * "step-3".
+                                    *
+                                    * @note The function is most often used
+                                    * when solving a problem whose solution
+                                    * is only defined up to a constant, for
+                                    * example a pure Neumann problem or the
+                                    * pressure in a Stokes or Navier-Stokes
+                                    * problem. In both cases, subtracting
+                                    * the mean value as computed by the
+                                    * current function, from the nodal
+                                    * vector does not generally yield the
+                                    * desired result of a finite element
+                                    * function with mean value zero. In
+                                    * fact, it only works for Lagrangian
+                                    * elements. For all other elements, you
+                                    * will need to compute the mean value
+                                    * and subtract it right inside the
+                                    * evaluation routine.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    double compute_mean_value (const Mapping<dim, spacedim>   &mapping,
+                              const DoFHandler<dim,spacedim> &dof,
+                              const Quadrature<dim>          &quadrature,
+                              const InVector                 &v,
+                              const unsigned int              component);
+
+                                   /**
+                                    * Calls the other compute_mean_value()
+                                    * function, see above, with
+                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
+                                    */
+  template <int dim, class InVector, int spacedim>
+    double compute_mean_value (const DoFHandler<dim,spacedim> &dof,
+                              const Quadrature<dim>          &quadrature,
+                              const InVector                 &v,
+                              const unsigned int              component);
+                                   //@}
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException0 (ExcInvalidBoundaryIndicator);
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException0 (ExcNonInterpolatingFE);
+
+                                   /**
+                                    * Exception
+                                    */
+  DeclException0 (ExcNoComponentSelected);
+}
+
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
diff --git a/deal.II/include/deal.II/numerics/vector_tools.templates.h b/deal.II/include/deal.II/numerics/vector_tools.templates.h
new file mode 100644 (file)
index 0000000..bea6de9
--- /dev/null
@@ -0,0 +1,5702 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+
+#ifndef _deal2__vector_tools_templates_h
+#define _deal2__vector_tools_templates_h
+
+#include <deal.II/base/derivative_form.h>
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/block_vector.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/lac/parallel_block_vector.h>
+#include <deal.II/lac/petsc_vector.h>
+#include <deal.II/lac/petsc_block_vector.h>
+#include <deal.II/lac/trilinos_vector.h>
+#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/compressed_simple_sparsity_pattern.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/filtered_matrix.h>
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/grid/intergrid_map.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/fe/fe.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_tools.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/mapping_q1.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/hp/fe_values.h>
+#include <deal.II/hp/mapping_collection.h>
+#include <deal.II/hp/q_collection.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
+
+#include <numeric>
+#include <algorithm>
+#include <vector>
+#include <cmath>
+#include <limits>
+#include <set>
+
+DEAL_II_NAMESPACE_OPEN
+
+
+namespace VectorTools
+{
+
+  template <class VECTOR, class DH>
+  void interpolate (const Mapping<DH::dimension,DH::space_dimension>    &mapping,
+                    const DH              &dof,
+                    const Function<DH::space_dimension>   &function,
+                    VECTOR                &vec)
+  {
+    const unsigned int dim=DH::dimension;
+
+    Assert (dof.get_fe().n_components() == function.n_components,
+            ExcDimensionMismatch(dof.get_fe().n_components(),
+                                 function.n_components));
+
+    const hp::FECollection<DH::dimension,DH::space_dimension> fe (dof.get_fe());
+    const unsigned int          n_components = fe.n_components();
+    const bool                  fe_is_system = (n_components != 1);
+
+    typename DH::active_cell_iterator cell = dof.begin_active(),
+                                      endc = dof.end();
+
+                                     // For FESystems many of the
+                                     // unit_support_points will appear
+                                     // multiple times, as a point may be
+                                     // unit_support_point for several of the
+                                     // components of the system.  The following
+                                     // is rather complicated, but at least
+                                     // attempts to avoid evaluating the
+                                     // vectorfunction multiple times at the
+                                     // same point on a cell.
+                                     //
+                                     // note that we have to set up all of the
+                                     // following arrays for each of the
+                                     // elements in the FECollection (which
+                                     // means only once if this is for a regular
+                                     // DoFHandler)
+    std::vector<std::vector<Point<dim> > > unit_support_points (fe.size());
+    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
+      {
+        unit_support_points[fe_index] = fe[fe_index].get_unit_support_points();
+        Assert (unit_support_points[fe_index].size() != 0,
+                ExcNonInterpolatingFE());
+      }
+
+
+                                     // Find the support points on a cell that
+                                     // are mentioned multiple times in
+                                     // unit_support_points.  Mark the first
+                                     // representative of each support point
+                                     // mentioned multiple times by appending
+                                     // its dof index to dofs_of_rep_points.
+                                     // Each multiple point gets to know the dof
+                                     // index of its representative point by the
+                                     // dof_to_rep_dof_table.
+
+                                     // the following vector collects all dofs i,
+                                     // 0<=i<fe.dofs_per_cell, for that
+                                     // unit_support_points[i]
+                                     // is a representative one. i.e.
+                                     // the following vector collects all rep dofs.
+                                     // the position of a rep dof within this vector
+                                     // is called rep index.
+    std::vector<std::vector<unsigned int> > dofs_of_rep_points(fe.size());
+                                     // the following table converts a dof i
+                                     // to the rep index.
+    std::vector<std::vector<unsigned int> > dof_to_rep_index_table(fe.size());
+
+    std::vector<unsigned int> n_rep_points (fe.size(), 0);
+
+    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
+      {
+        for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
+          {
+            bool representative=true;
+                                             // the following loop is looped
+                                             // the other way round to get
+                                             // the minimal effort of
+                                             // O(fe.dofs_per_cell) for multiple
+                                             // support points that are placed
+                                             // one after the other.
+            for (unsigned int j=dofs_of_rep_points[fe_index].size(); j>0; --j)
+              if (unit_support_points[fe_index][i]
+                  == unit_support_points[fe_index][dofs_of_rep_points[fe_index][j-1]])
+                {
+                  dof_to_rep_index_table[fe_index].push_back(j-1);
+                  representative=false;
+                  break;
+                }
+
+            if (representative)
+              {
+                                                 // rep_index=dofs_of_rep_points.size()
+                dof_to_rep_index_table[fe_index].push_back(dofs_of_rep_points[fe_index].size());
+                                                 // dofs_of_rep_points[rep_index]=i
+                dofs_of_rep_points[fe_index].push_back(i);
+                ++n_rep_points[fe_index];
+              }
+          }
+
+        Assert(dofs_of_rep_points[fe_index].size()==n_rep_points[fe_index],
+               ExcInternalError());
+        Assert(dof_to_rep_index_table[fe_index].size()==fe[fe_index].dofs_per_cell,
+               ExcInternalError());
+      }
+
+    const unsigned int max_rep_points = *std::max_element (n_rep_points.begin(),
+                                                           n_rep_points.end());
+    std::vector<unsigned int> dofs_on_cell (fe.max_dofs_per_cell());
+    std::vector<Point<DH::space_dimension> >  rep_points (max_rep_points);
+
+                                     // get space for the values of the
+                                     // function at the rep support points.
+                                     //
+                                     // have two versions, one for system fe
+                                     // and one for scalar ones, to take the
+                                     // more efficient one respectively
+    std::vector<std::vector<double> >         function_values_scalar(fe.size());
+    std::vector<std::vector<Vector<double> > > function_values_system(fe.size());
+
+                                     // Make a quadrature rule from support points
+                                     // to feed it into FEValues
+    hp::QCollection<dim> support_quadrature;
+    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
+      support_quadrature.push_back (Quadrature<dim>(unit_support_points[fe_index]));
+
+                                     // Transformed support points are computed by
+                                     // FEValues
+    hp::MappingCollection<dim,DH::space_dimension> mapping_collection (mapping);
+
+    hp::FEValues<dim, DH::space_dimension> fe_values (mapping_collection,
+                                                      fe, support_quadrature, update_quadrature_points);
+
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        {
+          const unsigned int fe_index = cell->active_fe_index();
+
+                                           // for each cell:
+                                           // get location of finite element
+                                           // support_points
+          fe_values.reinit(cell);
+          const std::vector<Point<DH::space_dimension> >& support_points =
+            fe_values.get_present_fe_values().get_quadrature_points();
+
+                                           // pick out the representative
+                                           // support points
+          rep_points.resize (dofs_of_rep_points[fe_index].size());
+          for (unsigned int j=0; j<dofs_of_rep_points[fe_index].size(); ++j)
+            rep_points[j] = support_points[dofs_of_rep_points[fe_index][j]];
+
+                                           // get indices of the dofs on this cell
+          dofs_on_cell.resize (fe[fe_index].dofs_per_cell);
+          cell->get_dof_indices (dofs_on_cell);
+
+
+          if (fe_is_system)
+            {
+                                               // get function values at
+                                               // these points. Here: get
+                                               // all components
+              function_values_system[fe_index]
+                .resize (n_rep_points[fe_index],
+                         Vector<double> (fe[fe_index].n_components()));
+              function.vector_value_list (rep_points,
+                                          function_values_system[fe_index]);
+                                               // distribute the function
+                                               // values to the global
+                                               // vector
+              for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
+                {
+                  const unsigned int component
+                    = fe[fe_index].system_to_component_index(i).first;
+                  const unsigned int rep_dof=dof_to_rep_index_table[fe_index][i];
+                  vec(dofs_on_cell[i])
+                    = function_values_system[fe_index][rep_dof](component);
+                }
+            }
+          else
+            {
+                                               // get first component only,
+                                               // which is the only component
+                                               // in the function anyway
+              function_values_scalar[fe_index].resize (n_rep_points[fe_index]);
+              function.value_list (rep_points,
+                                   function_values_scalar[fe_index],
+                                   0);
+                                               // distribute the function
+                                               // values to the global
+                                               // vector
+              for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
+                vec(dofs_on_cell[i])
+                  = function_values_scalar[fe_index][dof_to_rep_index_table[fe_index][i]];
+            }
+        }
+    vec.compress(::dealii::VectorOperation::insert);    
+  }
+
+
+  template <class VECTOR, class DH>
+  void interpolate (const DH              &dof,
+                    const Function<DH::space_dimension>   &function,
+                    VECTOR                &vec)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    interpolate(StaticMappingQ1<DH::dimension, DH::space_dimension>::mapping,
+                dof, function, vec);
+  }
+
+
+
+
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void
+  interpolate (const DoFHandler<dim,spacedim>           &dof_1,
+               const DoFHandler<dim,spacedim>           &dof_2,
+               const FullMatrix<double>        &transfer,
+               const InVector                  &data_1,
+               OutVector                       &data_2)
+  {
+    Vector<double> cell_data_1(dof_1.get_fe().dofs_per_cell);
+    Vector<double> cell_data_2(dof_2.get_fe().dofs_per_cell);
+
+    std::vector<short unsigned int> touch_count (dof_2.n_dofs(), 0);
+    std::vector<unsigned int>       local_dof_indices (dof_2.get_fe().dofs_per_cell);
+
+    typename DoFHandler<dim,spacedim>::active_cell_iterator h = dof_1.begin_active();
+    typename DoFHandler<dim,spacedim>::active_cell_iterator l = dof_2.begin_active();
+    const typename DoFHandler<dim,spacedim>::cell_iterator endh = dof_1.end();
+
+    for(; h != endh; ++h, ++l)
+      {
+        h->get_dof_values(data_1, cell_data_1);
+        transfer.vmult(cell_data_2, cell_data_1);
+
+        l->get_dof_indices (local_dof_indices);
+
+                                         // distribute cell vector
+        for (unsigned int j=0; j<dof_2.get_fe().dofs_per_cell; ++j)
+          {
+            data_2(local_dof_indices[j]) += cell_data_2(j);
+
+                                             // count, how often we have
+                                             // added to this dof
+            Assert (touch_count[local_dof_indices[j]] < numbers::internal_face_boundary_id,
+                    ExcInternalError());
+            ++touch_count[local_dof_indices[j]];
+          };
+      };
+
+                                     // compute the mean value of the
+                                     // sum which we have placed in each
+                                     // entry of the output vector
+    for (unsigned int i=0; i<dof_2.n_dofs(); ++i)
+      {
+        Assert (touch_count[i] != 0,
+                ExcInternalError());
+
+        data_2(i) /= touch_count[i];
+      };
+  }
+
+
+  namespace internal
+  {
+    void
+    interpolate_zero_boundary_values (const dealii::DoFHandler<1>   &dof_handler,
+                                      std::map<unsigned int,double> &boundary_values)
+    {
+                                       // we only need to find the
+                                       // left-most and right-most
+                                       // vertex and query its vertex
+                                       // dof indices. that's easy :-)
+      for (unsigned int direction=0; direction<2; ++direction)
+        {
+          dealii::DoFHandler<1>::cell_iterator
+            cell = dof_handler.begin(0);
+          while (!cell->at_boundary(direction))
+            cell = cell->neighbor(direction);
+
+          for (unsigned int i=0; i<dof_handler.get_fe().dofs_per_vertex; ++i)
+            boundary_values[cell->vertex_dof_index (direction, i)] = 0.;
+        }
+    }
+
+
+
+                                     // codimension 1
+    void
+    interpolate_zero_boundary_values (const dealii::DoFHandler<1,2> &dof_handler,
+                                      std::map<unsigned int,double> &boundary_values)
+    {
+                                       // we only need to find the
+                                       // left-most and right-most
+                                       // vertex and query its vertex
+                                       // dof indices. that's easy :-)
+      for (unsigned int direction=0; direction<2; ++direction)
+        {
+          dealii::DoFHandler<1,2>::cell_iterator
+            cell = dof_handler.begin(0);
+          while (!cell->at_boundary(direction))
+            cell = cell->neighbor(direction);
+
+          for (unsigned int i=0; i<dof_handler.get_fe().dofs_per_vertex; ++i)
+            boundary_values[cell->vertex_dof_index (direction, i)] = 0.;
+        }
+    }
+
+
+
+    template <int dim, int spacedim>
+    void
+    interpolate_zero_boundary_values (const dealii::DoFHandler<dim,spacedim>       &dof_handler,
+                                      std::map<unsigned int,double> &boundary_values)
+    {
+      const FiniteElement<dim,spacedim> &fe = dof_handler.get_fe();
+
+                                       // loop over all boundary faces
+                                       // to get all dof indices of
+                                       // dofs on the boundary. note
+                                       // that in 3d there are cases
+                                       // where a face is not at the
+                                       // boundary, yet one of its
+                                       // lines is, and we should
+                                       // consider the degrees of
+                                       // freedom on it as boundary
+                                       // nodes. likewise, in 2d and
+                                       // 3d there are cases where a
+                                       // cell is only at the boundary
+                                       // by one vertex. nevertheless,
+                                       // since we do not support
+                                       // boundaries with dimension
+                                       // less or equal to dim-2, each
+                                       // such boundary dof is also
+                                       // found from some other face
+                                       // that is actually wholly on
+                                       // the boundary, not only by
+                                       // one line or one vertex
+      typename dealii::DoFHandler<dim,spacedim>::active_face_iterator
+        face = dof_handler.begin_active_face(),
+        endf = dof_handler.end_face();
+      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
+      for (; face!=endf; ++face)
+        if (face->at_boundary())
+          {
+            face->get_dof_indices (face_dof_indices);
+            for (unsigned int i=0; i<fe.dofs_per_face; ++i)
+                                               // enter zero boundary values
+                                               // for all boundary nodes
+                                               //
+                                               // we need not care about
+                                               // vector valued elements here,
+                                               // since we set all components
+              boundary_values[face_dof_indices[i]] = 0.;
+          }
+    }
+  }
+
+
+
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class Vector>
+  void
+  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
+                                 const Vector            &u1,
+                                 const DH<dim, spacedim> &dof2,
+                                 Vector                  &u2)
+  {
+    Assert(GridTools::have_same_coarse_mesh(dof1, dof2),
+           ExcMessage ("The two containers must represent triangulations that "
+                       "have the same coarse meshes"));
+
+    InterGridMap<DH<dim, spacedim> > intergridmap;
+    intergridmap.make_mapping(dof1, dof2);
+
+    ConstraintMatrix dummy;
+    dummy.close();
+
+    interpolate_to_different_mesh(intergridmap, u1, dummy, u2);
+  }
+
+
+
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class Vector>
+  void
+  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
+                                 const Vector            &u1,
+                                 const DH<dim, spacedim> &dof2,
+                                 const ConstraintMatrix  &constraints,
+                                 Vector                  &u2)
+  {
+    Assert(GridTools::have_same_coarse_mesh(dof1, dof2),
+           ExcMessage ("The two containers must represent triangulations that "
+                       "have the same coarse meshes"));
+
+    InterGridMap<DH<dim, spacedim> > intergridmap;
+    intergridmap.make_mapping(dof1, dof2);
+
+    interpolate_to_different_mesh(intergridmap, u1, constraints, u2);
+  }
+
+
+
+  template <int dim, int spacedim,
+            template <int,int> class DH,
+            class Vector>
+  void
+  interpolate_to_different_mesh (const InterGridMap<DH<dim, spacedim> > &intergridmap,
+                                 const Vector                           &u1,
+                                 const ConstraintMatrix                 &constraints,
+                                 Vector                                 &u2)
+  {
+    const DH<dim, spacedim> &dof1 = intergridmap.get_source_grid();
+    const DH<dim, spacedim> &dof2 = intergridmap.get_destination_grid();
+
+    Assert(u1.size()==dof1.n_dofs(),
+           ExcDimensionMismatch(u1.size(), dof1.n_dofs()));
+    Assert(u2.size()==dof2.n_dofs(),
+           ExcDimensionMismatch(u2.size(),dof2.n_dofs()));
+
+    Vector cache;
+
+                                     // Looping over the finest common
+                                     // mesh, this means that source and
+                                     // destination cells have to be on the
+                                     // same level and at least one has to
+                                     // be active.
+                                     //
+                                     // Therefor, loop over all cells
+                                     // (active and inactive) of the source
+                                     // grid ..
+    typename DH<dim,spacedim>::cell_iterator       cell1 = dof1.begin();
+    const typename DH<dim,spacedim>::cell_iterator endc1 = dof1.end();
+
+    for (; cell1 != endc1; ++cell1) {
+      const typename DH<dim,spacedim>::cell_iterator cell2 = intergridmap[cell1];
+
+                                     // .. and skip if source and destination
+                                     // cells are not on the same level ..
+      if (cell1->level() != cell2->level())
+        continue;
+                                     // .. or none of them is active.
+      if (!cell1->active() && !cell2->active())
+        continue;
+
+      Assert(cell1->get_fe().get_name() ==
+             cell2->get_fe().get_name(),
+             ExcMessage ("Source and destination cells need to use the same finite element"));
+
+      cache.reinit(cell1->get_fe().dofs_per_cell);
+
+                                     // Get and set the corresponding
+                                     // dof_values by interpolation.
+      cell1->get_interpolated_dof_values(u1, cache);
+      cell2->set_dof_values_by_interpolation(cache, u2);
+    }
+
+                                     // Apply hanging node constraints.
+    constraints.distribute(u2);
+  }
+
+
+
+  template <int dim, class VECTOR, int spacedim>
+  void project (const Mapping<dim, spacedim>       &mapping,
+                const DoFHandler<dim,spacedim>    &dof,
+                const ConstraintMatrix   &constraints,
+                const Quadrature<dim>    &quadrature,
+                const Function<spacedim>      &function,
+                VECTOR                   &vec_result,
+                const bool                enforce_zero_boundary,
+                const Quadrature<dim-1>  &q_boundary,
+                const bool                project_to_boundary_first)
+  {
+    Assert (dof.get_fe().n_components() == function.n_components,
+            ExcDimensionMismatch(dof.get_fe().n_components(),
+                                 function.n_components));
+
+    Assert (vec_result.size() == dof.n_dofs(),
+            ExcDimensionMismatch (vec_result.size(), dof.n_dofs()));
+
+                                     // make up boundary values
+    std::map<unsigned int,double> boundary_values;
+
+    if (enforce_zero_boundary == true)
+                                       // no need to project boundary
+                                       // values, but enforce
+                                       // homogeneous boundary values
+                                       // anyway
+      internal::
+        interpolate_zero_boundary_values (dof, boundary_values);
+
+    else
+                                       // no homogeneous boundary values
+      if (project_to_boundary_first == true)
+                                         // boundary projection required
+        {
+                                           // set up a list of boundary
+                                           // functions for the
+                                           // different boundary
+                                           // parts. We want the
+                                           // function to hold on
+                                           // all parts of the boundary
+          typename FunctionMap<spacedim>::type boundary_functions;
+          for (types::boundary_id c=0; c<numbers::internal_face_boundary_id; ++c)
+            boundary_functions[c] = &function;
+          project_boundary_values (dof, boundary_functions, q_boundary,
+                                   boundary_values);
+        }
+
+                                     // set up mass matrix and right hand side
+    Vector<double> vec (dof.n_dofs());
+    SparsityPattern sparsity;
+
+                                     // use csp to consume less memory and to
+                                     // still be fast
+    {
+      CompressedSimpleSparsityPattern csp (dof.n_dofs(), dof.n_dofs());
+      DoFTools::make_sparsity_pattern (dof, csp, constraints);
+
+      sparsity.copy_from (csp);
+    }
+
+    SparseMatrix<double> mass_matrix (sparsity);
+    Vector<double> tmp (mass_matrix.n());
+
+                                     // create mass matrix and rhs at once,
+                                     // which is faster.
+    MatrixCreator::create_mass_matrix (mapping, dof, quadrature, mass_matrix,
+                                       function, tmp);
+
+    constraints.condense (mass_matrix);
+    constraints.condense (tmp);
+    if (boundary_values.size() != 0)
+      MatrixTools::apply_boundary_values (boundary_values,
+                                          mass_matrix, vec, tmp,
+                                          true);
+                                     // Allow for a maximum of 5*n
+                                     // steps to reduce the residual by
+                                     // 10^-12. n steps may not be
+                                     // sufficient, since roundoff
+                                     // errors may accumulate for badly
+                                     // conditioned matrices
+    ReductionControl        control(5*tmp.size(), 0., 1e-12, false, false);
+    GrowingVectorMemory<> memory;
+    SolverCG<>              cg(control,memory);
+
+    PreconditionSSOR<> prec;
+    prec.initialize(mass_matrix, 1.2);
+                                     // solve
+    cg.solve (mass_matrix, vec, tmp, prec);
+
+                                     // distribute solution
+    constraints.distribute (vec);
+
+                                     // copy vec into vec_result. we
+                                     // can't use ve_result itself
+                                     // above, since it may be of
+                                     // another type than Vector<double>
+                                     // and that wouldn't necessarily go
+                                     // together with the matrix and
+                                     // other functions
+    for (unsigned int i=0; i<vec.size(); ++i)
+      vec_result(i) = vec(i);
+  }
+
+
+  template <int dim, class VECTOR, int spacedim>
+  void project (const DoFHandler<dim,spacedim>    &dof,
+                const ConstraintMatrix   &constraints,
+                const Quadrature<dim>    &quadrature,
+                const Function<spacedim>      &function,
+                VECTOR                   &vec,
+                const bool                enforce_zero_boundary,
+                const Quadrature<dim-1>  &q_boundary,
+                const bool                project_to_boundary_first)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    project(StaticMappingQ1<dim,spacedim>::mapping, dof, constraints, quadrature, function, vec,
+            enforce_zero_boundary, q_boundary, project_to_boundary_first);
+  }
+
+
+
+
+  template <int dim, int spacedim>
+  void create_right_hand_side (const Mapping<dim, spacedim>    &mapping,
+                               const DoFHandler<dim,spacedim> &dof_handler,
+                               const Quadrature<dim> &quadrature,
+                               const Function<spacedim>   &rhs_function,
+                               Vector<double>        &rhs_vector)
+  {
+    const FiniteElement<dim,spacedim> &fe  = dof_handler.get_fe();
+    Assert (fe.n_components() == rhs_function.n_components,
+            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    rhs_vector = 0;
+
+    UpdateFlags update_flags = UpdateFlags(update_values   |
+                                           update_quadrature_points |
+                                           update_JxW_values);
+    FEValues<dim,spacedim> fe_values (mapping, fe, quadrature, update_flags);
+
+    const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                       n_q_points    = fe_values.n_quadrature_points,
+                       n_components  = fe.n_components();
+
+    std::vector<unsigned int> dofs (dofs_per_cell);
+    Vector<double> cell_vector (dofs_per_cell);
+
+    typename DoFHandler<dim,spacedim>::active_cell_iterator
+      cell = dof_handler.begin_active(),
+      endc = dof_handler.end();
+
+    if (n_components==1)
+      {
+        std::vector<double> rhs_values(n_q_points);
+
+        for (; cell!=endc; ++cell)
+          {
+            fe_values.reinit(cell);
+
+            const std::vector<double> &weights   = fe_values.get_JxW_values ();
+            rhs_function.value_list (fe_values.get_quadrature_points(),
+                                     rhs_values);
+
+            cell_vector = 0;
+            for (unsigned int point=0; point<n_q_points; ++point)
+              for (unsigned int i=0; i<dofs_per_cell; ++i)
+                cell_vector(i) += rhs_values[point] *
+                                  fe_values.shape_value(i,point) *
+                                  weights[point];
+
+            cell->get_dof_indices (dofs);
+
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              rhs_vector(dofs[i]) += cell_vector(i);
+          }
+
+      }
+    else
+      {
+        std::vector<Vector<double> > rhs_values(n_q_points,
+                                                Vector<double>(n_components));
+
+        for (; cell!=endc; ++cell)
+          {
+            fe_values.reinit(cell);
+
+            const std::vector<double> &weights   = fe_values.get_JxW_values ();
+            rhs_function.vector_value_list (fe_values.get_quadrature_points(),
+                                            rhs_values);
+
+            cell_vector = 0;
+                                             // Use the faster code if the
+                                             // FiniteElement is primitive
+            if (fe.is_primitive ())
+              {
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    {
+                      const unsigned int component
+                        = fe.system_to_component_index(i).first;
+
+                      cell_vector(i) += rhs_values[point](component) *
+                                        fe_values.shape_value(i,point) *
+                                        weights[point];
+                    }
+              }
+            else
+              {
+                                                 // Otherwise do it the way
+                                                 // proposed for vector valued
+                                                 // elements
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
+                      if (fe.get_nonzero_components(i)[comp_i])
+                        {
+                          cell_vector(i) += rhs_values[point](comp_i) *
+                                            fe_values.shape_value_component(i,point,comp_i) *
+                                            weights[point];
+                        }
+              }
+
+            cell->get_dof_indices (dofs);
+
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              rhs_vector(dofs[i]) += cell_vector(i);
+          }
+      }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_right_hand_side (const DoFHandler<dim,spacedim>    &dof_handler,
+                               const Quadrature<dim>    &quadrature,
+                               const Function<spacedim>      &rhs_function,
+                               Vector<double>           &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_right_hand_side(StaticMappingQ1<dim,spacedim>::mapping, dof_handler, quadrature,
+                           rhs_function, rhs_vector);
+  }
+
+
+
+
+  template <int dim, int spacedim>
+  void create_right_hand_side (const hp::MappingCollection<dim,spacedim>    &mapping,
+                               const hp::DoFHandler<dim,spacedim> &dof_handler,
+                               const hp::QCollection<dim> &quadrature,
+                               const Function<spacedim>   &rhs_function,
+                               Vector<double>        &rhs_vector)
+  {
+    const hp::FECollection<dim,spacedim> &fe  = dof_handler.get_fe();
+    Assert (fe.n_components() == rhs_function.n_components,
+            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    rhs_vector = 0;
+
+    UpdateFlags update_flags = UpdateFlags(update_values   |
+                                           update_quadrature_points |
+                                           update_JxW_values);
+    hp::FEValues<dim,spacedim> x_fe_values (mapping, fe, quadrature, update_flags);
+
+    const unsigned int n_components  = fe.n_components();
+
+    std::vector<unsigned int> dofs (fe.max_dofs_per_cell());
+    Vector<double> cell_vector (fe.max_dofs_per_cell());
+
+    typename hp::DoFHandler<dim,spacedim>::active_cell_iterator
+      cell = dof_handler.begin_active(),
+      endc = dof_handler.end();
+
+    if (n_components==1)
+      {
+        std::vector<double> rhs_values;
+
+        for (; cell!=endc; ++cell)
+          {
+            x_fe_values.reinit(cell);
+
+            const FEValues<dim,spacedim> &fe_values = x_fe_values.get_present_fe_values();
+
+            const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                               n_q_points    = fe_values.n_quadrature_points;
+            rhs_values.resize (n_q_points);
+            dofs.resize (dofs_per_cell);
+            cell_vector.reinit (dofs_per_cell);
+
+            const std::vector<double> &weights   = fe_values.get_JxW_values ();
+            rhs_function.value_list (fe_values.get_quadrature_points(),
+                                     rhs_values);
+
+            cell_vector = 0;
+            for (unsigned int point=0; point<n_q_points; ++point)
+              for (unsigned int i=0; i<dofs_per_cell; ++i)
+                cell_vector(i) += rhs_values[point] *
+                                  fe_values.shape_value(i,point) *
+                                  weights[point];
+
+            cell->get_dof_indices (dofs);
+
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              rhs_vector(dofs[i]) += cell_vector(i);
+          }
+
+      }
+    else
+      {
+        std::vector<Vector<double> > rhs_values;
+
+        for (; cell!=endc; ++cell)
+          {
+            x_fe_values.reinit(cell);
+
+            const FEValues<dim,spacedim> &fe_values = x_fe_values.get_present_fe_values();
+
+            const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                               n_q_points    = fe_values.n_quadrature_points;
+            rhs_values.resize (n_q_points,
+                               Vector<double>(n_components));
+            dofs.resize (dofs_per_cell);
+            cell_vector.reinit (dofs_per_cell);
+
+            const std::vector<double> &weights   = fe_values.get_JxW_values ();
+            rhs_function.vector_value_list (fe_values.get_quadrature_points(),
+                                            rhs_values);
+
+            cell_vector = 0;
+
+                                             // Use the faster code if the
+                                             // FiniteElement is primitive
+            if (cell->get_fe().is_primitive ())
+              {
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    {
+                      const unsigned int component
+                        = cell->get_fe().system_to_component_index(i).first;
+
+                      cell_vector(i) += rhs_values[point](component) *
+                                        fe_values.shape_value(i,point) *
+                                        weights[point];
+                    }
+              }
+            else
+              {
+                                                 // Otherwise do it the way proposed
+                                                 // for vector valued elements
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
+                      if (cell->get_fe().get_nonzero_components(i)[comp_i])
+                        {
+                          cell_vector(i) += rhs_values[point](comp_i) *
+                                            fe_values.shape_value_component(i,point,comp_i) *
+                                            weights[point];
+                        }
+              }
+
+            cell->get_dof_indices (dofs);
+
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              rhs_vector(dofs[i]) += cell_vector(i);
+          }
+      }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_right_hand_side (const hp::DoFHandler<dim,spacedim>    &dof_handler,
+                               const hp::QCollection<dim>    &quadrature,
+                               const Function<spacedim>      &rhs_function,
+                               Vector<double>           &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_right_hand_side(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
+                           dof_handler, quadrature,
+                           rhs_function, rhs_vector);
+  }
+
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const Mapping<dim, spacedim>       &mapping,
+                                   const DoFHandler<dim,spacedim>    &dof_handler,
+                                   const Point<spacedim>         &p,
+                                   Vector<double>           &rhs_vector)
+  {
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    Assert (dof_handler.get_fe().n_components() == 1,
+            ExcMessage ("This function only works for scalar finite elements"));
+
+    rhs_vector = 0;
+
+    std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point =
+      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
+
+    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+
+    FEValues<dim,spacedim> fe_values(mapping, dof_handler.get_fe(),
+                                     q, UpdateFlags(update_values));
+    fe_values.reinit(cell_point.first);
+
+    const unsigned int dofs_per_cell = dof_handler.get_fe().dofs_per_cell;
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+    cell_point.first->get_dof_indices (local_dof_indices);
+
+    for(unsigned int i=0; i<dofs_per_cell; i++)
+      rhs_vector(local_dof_indices[i]) =  fe_values.shape_value(i,0);
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const DoFHandler<dim,spacedim>    &dof_handler,
+                                   const Point<spacedim>         &p,
+                                   Vector<double>           &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_point_source_vector(StaticMappingQ1<dim,spacedim>::mapping, dof_handler,
+                               p, rhs_vector);
+  }
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const hp::MappingCollection<dim,spacedim>       &mapping,
+                                   const hp::DoFHandler<dim,spacedim>    &dof_handler,
+                                   const Point<spacedim>         &p,
+                                   Vector<double>           &rhs_vector)
+  {
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    Assert (dof_handler.get_fe().n_components() == 1,
+            ExcMessage ("This function only works for scalar finite elements"));
+
+    rhs_vector = 0;
+
+    std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point =
+      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
+
+    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+
+    FEValues<dim> fe_values(mapping[cell_point.first->active_fe_index()],
+                            cell_point.first->get_fe(), q, UpdateFlags(update_values));
+    fe_values.reinit(cell_point.first);
+
+    const unsigned int dofs_per_cell = cell_point.first->get_fe().dofs_per_cell;
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+    cell_point.first->get_dof_indices (local_dof_indices);
+
+    for(unsigned int i=0; i<dofs_per_cell; i++)
+      rhs_vector(local_dof_indices[i]) =  fe_values.shape_value(i,0);
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const hp::DoFHandler<dim,spacedim>    &dof_handler,
+                                   const Point<spacedim>         &p,
+                                   Vector<double>           &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_point_source_vector(hp::StaticMappingQ1<dim>::mapping_collection,
+                               dof_handler,
+                               p, rhs_vector);
+  }
+
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const Mapping<dim, spacedim>       &mapping,
+                                   const DoFHandler<dim,spacedim>     &dof_handler,
+                                   const Point<spacedim>              &p,
+                                   const Point<dim>                   &orientation,
+                                   Vector<double>                     &rhs_vector)
+  {
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    Assert (dof_handler.get_fe().n_components() == dim,
+            ExcMessage ("This function only works for vector-valued finite elements."));
+
+    rhs_vector = 0;
+
+    std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point =
+      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
+
+    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+
+    const FEValuesExtractors::Vector vec (0);
+    FEValues<dim,spacedim> fe_values(mapping, dof_handler.get_fe(),
+                                     q, UpdateFlags(update_values));
+    fe_values.reinit(cell_point.first);
+
+    const unsigned int dofs_per_cell = dof_handler.get_fe().dofs_per_cell;
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+    cell_point.first->get_dof_indices (local_dof_indices);
+
+    for(unsigned int i=0; i<dofs_per_cell; i++)
+      rhs_vector(local_dof_indices[i]) =  orientation * fe_values[vec].value(i,0);
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const DoFHandler<dim,spacedim>    &dof_handler,
+                                   const Point<spacedim>             &p,
+                                   const Point<dim>                  &orientation,
+                                   Vector<double>                    &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_point_source_vector(StaticMappingQ1<dim,spacedim>::mapping, dof_handler,
+                               p, orientation, rhs_vector);
+  }
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const hp::MappingCollection<dim,spacedim> &mapping,
+                                   const hp::DoFHandler<dim,spacedim>        &dof_handler,
+                                   const Point<spacedim>                     &p,
+                                   const Point<dim>                          &orientation,
+                                   Vector<double>                            &rhs_vector)
+  {
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+    Assert (dof_handler.get_fe().n_components() == dim,
+            ExcMessage ("This function only works for vector-valued finite elements."));
+
+    rhs_vector = 0;
+
+    std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point =
+      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
+
+    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+
+    const FEValuesExtractors::Vector vec (0);
+    FEValues<dim> fe_values(mapping[cell_point.first->active_fe_index()],
+                            cell_point.first->get_fe(), q, UpdateFlags(update_values));
+    fe_values.reinit(cell_point.first);
+
+    const unsigned int dofs_per_cell = cell_point.first->get_fe().dofs_per_cell;
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+    cell_point.first->get_dof_indices (local_dof_indices);
+
+    for(unsigned int i=0; i<dofs_per_cell; i++)
+      rhs_vector(local_dof_indices[i]) =  orientation * fe_values[vec].value(i,0);
+  }
+
+
+
+  template <int dim, int spacedim>
+  void create_point_source_vector (const hp::DoFHandler<dim,spacedim>   &dof_handler,
+                                   const Point<spacedim>                &p,
+                                   const Point<dim>                     &orientation,
+                                   Vector<double>                       &rhs_vector)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_point_source_vector(hp::StaticMappingQ1<dim>::mapping_collection,
+                               dof_handler,
+                               p, orientation, rhs_vector);
+  }
+
+
+
+// separate implementation for 1D because otherwise we get linker errors since
+// FEFaceValues<1> is not compiled
+  template <>
+  void
+  create_boundary_right_hand_side (const Mapping<1,1>    &,
+                                   const DoFHandler<1,1> &,
+                                   const Quadrature<0>   &,
+                                   const Function<1>     &,
+                                   Vector<double>        &,
+                                   const std::set<types::boundary_id> &)
+  {
+    Assert (false, ExcImpossibleInDim(1));
+  }
+
+
+
+  template <>
+  void
+  create_boundary_right_hand_side (const Mapping<1,2>    &,
+                                   const DoFHandler<1,2> &,
+                                   const Quadrature<0>   &,
+                                   const Function<2>     &,
+                                   Vector<double>        &,
+                                   const std::set<types::boundary_id> &)
+  {
+    Assert (false, ExcImpossibleInDim(1));
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  create_boundary_right_hand_side (const Mapping<dim, spacedim>      &mapping,
+                                   const DoFHandler<dim,spacedim>   &dof_handler,
+                                   const Quadrature<dim-1> &quadrature,
+                                   const Function<spacedim>     &rhs_function,
+                                   Vector<double>          &rhs_vector,
+                                   const std::set<types::boundary_id> &boundary_indicators)
+  {
+    const FiniteElement<dim> &fe  = dof_handler.get_fe();
+    Assert (fe.n_components() == rhs_function.n_components,
+            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+
+    rhs_vector = 0;
+
+    UpdateFlags update_flags = UpdateFlags(update_values   |
+                                           update_quadrature_points |
+                                           update_JxW_values);
+    FEFaceValues<dim> fe_values (mapping, fe, quadrature, update_flags);
+
+    const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                       n_q_points    = fe_values.n_quadrature_points,
+                       n_components  = fe.n_components();
+
+    std::vector<unsigned int> dofs (dofs_per_cell);
+    Vector<double> cell_vector (dofs_per_cell);
+
+    typename DoFHandler<dim,spacedim>::active_cell_iterator cell = dof_handler.begin_active(),
+                                                            endc = dof_handler.end();
+
+    if (n_components==1)
+      {
+        std::vector<double> rhs_values(n_q_points);
+
+        for (; cell!=endc; ++cell)
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            if (cell->face(face)->at_boundary () &&
+                (boundary_indicators.empty() ||
+                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
+                  !=
+                  boundary_indicators.end())))
+              {
+                fe_values.reinit(cell, face);
+
+                const std::vector<double> &weights   = fe_values.get_JxW_values ();
+                rhs_function.value_list (fe_values.get_quadrature_points(), rhs_values);
+
+                cell_vector = 0;
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    cell_vector(i) += rhs_values[point] *
+                                      fe_values.shape_value(i,point) *
+                                      weights[point];
+
+                cell->get_dof_indices (dofs);
+
+                for (unsigned int i=0; i<dofs_per_cell; ++i)
+                  rhs_vector(dofs[i]) += cell_vector(i);
+              }
+      }
+    else
+      {
+        std::vector<Vector<double> > rhs_values(n_q_points, Vector<double>(n_components));
+
+        for (; cell!=endc; ++cell)
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            if (cell->face(face)->at_boundary () &&
+                (boundary_indicators.empty() ||
+                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
+                  !=
+                  boundary_indicators.end())))
+              {
+                fe_values.reinit(cell, face);
+
+                const std::vector<double> &weights   = fe_values.get_JxW_values ();
+                rhs_function.vector_value_list (fe_values.get_quadrature_points(), rhs_values);
+
+                cell_vector = 0;
+
+                                                 // Use the faster code if the
+                                                 // FiniteElement is primitive
+                if (fe.is_primitive ())
+                  {
+                    for (unsigned int point=0; point<n_q_points; ++point)
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        {
+                          const unsigned int component
+                            = fe.system_to_component_index(i).first;
+
+                          cell_vector(i) += rhs_values[point](component) *
+                                            fe_values.shape_value(i,point) *
+                                            weights[point];
+                        }
+                  }
+                else
+                  {
+                                                     // And the full featured
+                                                     // code, if vector valued
+                                                     // FEs are used
+                    for (unsigned int point=0; point<n_q_points; ++point)
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
+                          if (fe.get_nonzero_components(i)[comp_i])
+                            {
+                              cell_vector(i)
+                                += rhs_values[point](comp_i) *
+                                fe_values.shape_value_component(i,point,comp_i) *
+                                weights[point];
+                            }
+                  }
+
+                cell->get_dof_indices (dofs);
+
+                for (unsigned int i=0; i<dofs_per_cell; ++i)
+                  rhs_vector(dofs[i]) += cell_vector(i);
+              }
+      }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  create_boundary_right_hand_side (const DoFHandler<dim,spacedim>   &dof_handler,
+                                   const Quadrature<dim-1> &quadrature,
+                                   const Function<spacedim>     &rhs_function,
+                                   Vector<double>          &rhs_vector,
+                                   const std::set<types::boundary_id> &boundary_indicators)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+
+    create_boundary_right_hand_side(StaticMappingQ1<dim>::mapping, dof_handler,
+                                    quadrature,
+                                    rhs_function, rhs_vector,
+                                    boundary_indicators);
+  }
+
+
+
+// separate implementation for 1D because otherwise we get linker errors since
+// hp::FEFaceValues<1> is not compiled
+  template <>
+  void
+  create_boundary_right_hand_side (const hp::MappingCollection<1,1>      &,
+                                   const hp::DoFHandler<1,1>   &,
+                                   const hp::QCollection<0> &,
+                                   const Function<1>     &,
+                                   Vector<double>          &,
+                                   const std::set<types::boundary_id> &)
+  {
+    Assert (false, ExcImpossibleInDim(1));
+  }
+
+
+
+  template <>
+  void
+  create_boundary_right_hand_side (const hp::MappingCollection<1,2>      &,
+                                   const hp::DoFHandler<1,2>   &,
+                                   const hp::QCollection<0> &,
+                                   const Function<2>     &,
+                                   Vector<double>          &,
+                                   const std::set<types::boundary_id> &)
+  {
+    Assert (false, ExcImpossibleInDim(1));
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  create_boundary_right_hand_side (const hp::MappingCollection<dim,spacedim> &mapping,
+                                   const hp::DoFHandler<dim,spacedim> &dof_handler,
+                                   const hp::QCollection<dim-1>  &quadrature,
+                                   const Function<spacedim>      &rhs_function,
+                                   Vector<double>                &rhs_vector,
+                                   const std::set<types::boundary_id> &boundary_indicators)
+  {
+    const hp::FECollection<dim> &fe  = dof_handler.get_fe();
+    Assert (fe.n_components() == rhs_function.n_components,
+            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
+    Assert (rhs_vector.size() == dof_handler.n_dofs(),
+            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
+
+    rhs_vector = 0;
+
+    UpdateFlags update_flags = UpdateFlags(update_values   |
+                                           update_quadrature_points |
+                                           update_JxW_values);
+    hp::FEFaceValues<dim> x_fe_values (mapping, fe, quadrature, update_flags);
+
+    const unsigned int n_components  = fe.n_components();
+
+    std::vector<unsigned int> dofs (fe.max_dofs_per_cell());
+    Vector<double> cell_vector (fe.max_dofs_per_cell());
+
+    typename hp::DoFHandler<dim,spacedim>::active_cell_iterator
+      cell = dof_handler.begin_active(),
+      endc = dof_handler.end();
+
+    if (n_components==1)
+      {
+        std::vector<double> rhs_values;
+
+        for (; cell!=endc; ++cell)
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            if (cell->face(face)->at_boundary () &&
+                (boundary_indicators.empty() ||
+                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
+                  !=
+                  boundary_indicators.end())))
+              {
+                x_fe_values.reinit(cell, face);
+
+                const FEFaceValues<dim> &fe_values = x_fe_values.get_present_fe_values();
+
+                const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                                   n_q_points    = fe_values.n_quadrature_points;
+                rhs_values.resize (n_q_points);
+
+                const std::vector<double> &weights   = fe_values.get_JxW_values ();
+                rhs_function.value_list (fe_values.get_quadrature_points(), rhs_values);
+
+                cell_vector = 0;
+                for (unsigned int point=0; point<n_q_points; ++point)
+                  for (unsigned int i=0; i<dofs_per_cell; ++i)
+                    cell_vector(i) += rhs_values[point] *
+                                      fe_values.shape_value(i,point) *
+                                      weights[point];
+
+                dofs.resize(dofs_per_cell);
+                cell->get_dof_indices (dofs);
+
+                for (unsigned int i=0; i<dofs_per_cell; ++i)
+                  rhs_vector(dofs[i]) += cell_vector(i);
+              }
+      }
+    else
+      {
+        std::vector<Vector<double> > rhs_values;
+
+        for (; cell!=endc; ++cell)
+          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+            if (cell->face(face)->at_boundary () &&
+                (boundary_indicators.empty() ||
+                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
+                  !=
+                  boundary_indicators.end())))
+              {
+                x_fe_values.reinit(cell, face);
+
+                const FEFaceValues<dim> &fe_values = x_fe_values.get_present_fe_values();
+
+                const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
+                                   n_q_points    = fe_values.n_quadrature_points;
+                rhs_values.resize (n_q_points, Vector<double>(n_components));
+
+                const std::vector<double> &weights   = fe_values.get_JxW_values ();
+                rhs_function.vector_value_list (fe_values.get_quadrature_points(), rhs_values);
+
+                cell_vector = 0;
+
+                                                 // Use the faster code if the
+                                                 // FiniteElement is primitive
+                if (cell->get_fe().is_primitive ())
+                  {
+                    for (unsigned int point=0; point<n_q_points; ++point)
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        {
+                          const unsigned int component
+                            = cell->get_fe().system_to_component_index(i).first;
+
+                          cell_vector(i) += rhs_values[point](component) *
+                                            fe_values.shape_value(i,point) *
+                                            weights[point];
+                        }
+                  }
+                else
+                  {
+                                                     // And the full featured
+                                                     // code, if vector valued
+                                                     // FEs are used
+                    for (unsigned int point=0; point<n_q_points; ++point)
+                      for (unsigned int i=0; i<dofs_per_cell; ++i)
+                        for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
+                          if (cell->get_fe().get_nonzero_components(i)[comp_i])
+                            {
+                              cell_vector(i)
+                                += rhs_values[point](comp_i) *
+                                fe_values.shape_value_component(i,point,comp_i) *
+                                weights[point];
+                            }
+                  }
+                dofs.resize(dofs_per_cell);
+                cell->get_dof_indices (dofs);
+
+                for (unsigned int i=0; i<dofs_per_cell; ++i)
+                  rhs_vector(dofs[i]) += cell_vector(i);
+              }
+      }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  create_boundary_right_hand_side (const hp::DoFHandler<dim,spacedim> &dof_handler,
+                                   const hp::QCollection<dim-1>  &quadrature,
+                                   const Function<spacedim>      &rhs_function,
+                                   Vector<double>                &rhs_vector,
+                                   const std::set<types::boundary_id> &boundary_indicators)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    create_boundary_right_hand_side(hp::StaticMappingQ1<dim>::mapping_collection,
+                                    dof_handler, quadrature,
+                                    rhs_function, rhs_vector,
+                                    boundary_indicators);
+  }
+
+
+
+// ----------- interpolate_boundary_values for std::map --------------------
+
+  namespace internal
+  {
+                                     // interpolate boundary values in
+                                     // 1d. in higher dimensions, we
+                                     // use FEValues to figure out
+                                     // what to do on faces, but in 1d
+                                     // faces are points and it is far
+                                     // easier to simply work on
+                                     // individual vertices
+    template <class DH>
+    static inline
+    void interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension> &,
+                                      const DH                 &dof,
+                                      const typename FunctionMap<DH::space_dimension>::type &function_map,
+                                      std::map<unsigned int,double> &boundary_values,
+                                      const std::vector<bool>       &component_mask_,
+                                      const dealii::internal::int2type<1>)
+    {
+      const unsigned int dim = DH::dimension;
+      const unsigned int spacedim=DH::space_dimension;
+
+      Assert ((component_mask_.size() == 0) ||
+              (component_mask_.size() == dof.get_fe().n_components()),
+              ExcMessage ("The number of components in the mask has to be either "
+                          "zero or equal to the number of components in the finite "
+                          "element."));
+
+                                       // if for whatever reason we were
+                                       // passed an empty map, return
+                                       // immediately
+      if (function_map.size() == 0)
+        return;
+
+      for (typename FunctionMap<spacedim>::type::const_iterator i=function_map.begin();
+           i!=function_map.end(); ++i)
+        Assert (i->first < 2,
+                ExcInvalidBoundaryIndicator());
+
+      for (typename DH::active_cell_iterator cell = dof.begin_active();
+           cell != dof.end(); ++cell)
+        for (unsigned int direction=0;
+             direction<GeometryInfo<dim>::faces_per_cell; ++direction)
+          if (cell->at_boundary(direction)
+              &&
+              (function_map.find(direction) != function_map.end()))
+            {
+              const Function<DH::space_dimension> & boundary_function
+                = *function_map.find(direction)->second;
+
+                                               // get the FE corresponding to this
+                                               // cell
+              const FiniteElement<dim,spacedim> &fe = cell->get_fe();
+              Assert (fe.n_components() == boundary_function.n_components,
+                      ExcDimensionMismatch(fe.n_components(),
+                                           boundary_function.n_components));
+
+                                               // set the component mask to either
+                                               // the original value or a vector
+                                               // of trues
+              const std::vector<bool> component_mask ((component_mask_.size() == 0) ?
+                                                      std::vector<bool> (fe.n_components(), true) :
+                                                      component_mask_);
+              Assert (std::count(component_mask.begin(), component_mask.end(), true) > 0,
+                      ExcNoComponentSelected());
+
+                                               // now set the value of
+                                               // the vertex degree of
+                                               // freedom. setting
+                                               // also creates the
+                                               // entry in the map if
+                                               // it did not exist
+                                               // beforehand
+                                               //
+                                               // save some time by
+                                               // requesting values
+                                               // only once for each
+                                               // point, irrespective
+                                               // of the number of
+                                               // components of the
+                                               // function
+              dealii::Vector<double> function_values (fe.n_components());
+              if (fe.n_components() == 1)
+                function_values(0)
+                  = boundary_function.value (cell->vertex(direction));
+              else
+                boundary_function.vector_value (cell->vertex(direction),
+                                                function_values);
+
+              for (unsigned int i=0; i<fe.dofs_per_vertex; ++i)
+                if (component_mask[fe.face_system_to_component_index(i).first])
+                  boundary_values[cell->
+                                  vertex_dof_index(direction,i,
+                                                   cell->active_fe_index())]
+                    = function_values(fe.face_system_to_component_index(i).first);
+            }
+    }
+
+
+
+    template <class DH>
+    static inline
+    void
+    interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension> &mapping,
+                                 const DH                 &dof,
+                                 const typename FunctionMap<DH::space_dimension>::type &function_map,
+                                 std::map<unsigned int,double> &boundary_values,
+                                 const std::vector<bool>       &component_mask_,
+                                 const dealii::internal::int2type<DH::dimension>)
+    {
+      const unsigned int dim = DH::dimension;
+      const unsigned int spacedim=DH::space_dimension;
+
+      Assert ((component_mask_.size() == 0) ||
+              (component_mask_.size() == dof.get_fe().n_components()),
+              ExcMessage ("The number of components in the mask has to be either "
+                          "zero or equal to the number of components in the finite "
+                          "element."));
+
+
+                                       // if for whatever reason we were
+                                       // passed an empty map, return
+                                       // immediately
+      if (function_map.size() == 0)
+        return;
+
+      Assert (function_map.find(numbers::internal_face_boundary_id) == function_map.end(),
+              ExcInvalidBoundaryIndicator());
+
+      const unsigned int        n_components = DoFTools::n_components(dof);
+      const bool                fe_is_system = (n_components != 1);
+
+      for (typename FunctionMap<spacedim>::type::const_iterator i=function_map.begin();
+           i!=function_map.end(); ++i)
+        Assert (n_components == i->second->n_components,
+                ExcDimensionMismatch(n_components, i->second->n_components));
+
+                                       // set the component mask to either
+                                       // the original value or a vector
+                                       // of trues
+      const std::vector<bool> component_mask ((component_mask_.size() == 0) ?
+                                              std::vector<bool> (n_components, true) :
+                                              component_mask_);
+      Assert (std::count(component_mask.begin(), component_mask.end(), true) > 0,
+              ExcNoComponentSelected());
+
+                                       // field to store the indices
+      std::vector<unsigned int> face_dofs;
+      face_dofs.reserve (DoFTools::max_dofs_per_face(dof));
+
+      std::vector<Point<spacedim> >  dof_locations;
+      dof_locations.reserve (DoFTools::max_dofs_per_face(dof));
+
+                                       // array to store the values of
+                                       // the boundary function at the
+                                       // boundary points. have two arrays
+                                       // for scalar and vector functions
+                                       // to use the more efficient one
+                                       // respectively
+      std::vector<double>          dof_values_scalar;
+      std::vector<dealii::Vector<double> > dof_values_system;
+      dof_values_scalar.reserve (DoFTools::max_dofs_per_face (dof));
+      dof_values_system.reserve (DoFTools::max_dofs_per_face (dof));
+
+                                       // before we start with the loop
+                                       // over all cells create an
+                                       // hp::FEValues object that holds
+                                       // the interpolation points of all
+                                       // finite elements that may ever be
+                                       // in use
+      dealii::hp::FECollection<dim,spacedim> finite_elements (dof.get_fe());
+      dealii::hp::QCollection<dim-1>  q_collection;
+      for (unsigned int f=0; f<finite_elements.size(); ++f)
+        {
+          const FiniteElement<dim,spacedim> &fe = finite_elements[f];
+
+                                           // generate a quadrature rule
+                                           // on the face from the unit
+                                           // support points. this will be
+                                           // used to obtain the
+                                           // quadrature points on the
+                                           // real cell's face
+                                           //
+                                           // to do this, we check whether
+                                           // the FE has support points on
+                                           // the face at all:
+          if (fe.has_face_support_points())
+            q_collection.push_back (Quadrature<dim-1>(fe.get_unit_face_support_points()));
+          else
+            {
+                                               // if not, then we should
+                                               // try a more clever
+                                               // way. the idea is that a
+                                               // finite element may not
+                                               // offer support points for
+                                               // all its shape functions,
+                                               // but maybe only some. if
+                                               // it offers support points
+                                               // for the components we
+                                               // are interested in in
+                                               // this function, then
+                                               // that's fine. if not, the
+                                               // function we call in the
+                                               // finite element will
+                                               // raise an exception. the
+                                               // support points for the
+                                               // other shape functions
+                                               // are left uninitialized
+                                               // (well, initialized by
+                                               // the default
+                                               // constructor), since we
+                                               // don't need them anyway.
+                                               //
+                                               // As a detour, we must
+                                               // make sure we only query
+                                               // face_system_to_component_index
+                                               // if the index corresponds
+                                               // to a primitive shape
+                                               // function. since we know
+                                               // that all the components
+                                               // we are interested in are
+                                               // primitive (by the above
+                                               // check), we can safely
+                                               // put such a check in
+                                               // front
+              std::vector<Point<dim-1> > unit_support_points (fe.dofs_per_face);
+
+              for (unsigned int i=0; i<fe.dofs_per_face; ++i)
+                if (fe.is_primitive (fe.face_to_equivalent_cell_index(i)))
+                  if (component_mask[fe.face_system_to_component_index(i).first]
+                      == true)
+                    unit_support_points[i] = fe.unit_face_support_point(i);
+
+              q_collection.push_back (Quadrature<dim-1>(unit_support_points));
+            }
+        }
+                                       // now that we have a q_collection
+                                       // object with all the right
+                                       // quadrature points, create an
+                                       // hp::FEFaceValues object that we
+                                       // can use to evaluate the boundary
+                                       // values at
+      dealii::hp::MappingCollection<dim,spacedim> mapping_collection (mapping);
+      dealii::hp::FEFaceValues<dim,spacedim> x_fe_values (mapping_collection, finite_elements, q_collection,
+                                                          update_quadrature_points);
+
+      typename DH::active_cell_iterator cell = dof.begin_active(),
+                                        endc = dof.end();
+      for (; cell!=endc; ++cell)
+        if (!cell->is_artificial())
+          for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
+               ++face_no)
+            {
+              const FiniteElement<dim,spacedim> &fe = cell->get_fe();
+
+                                               // we can presently deal only with
+                                               // primitive elements for boundary
+                                               // values. this does not preclude
+                                               // us using non-primitive elements
+                                               // in components that we aren't
+                                               // interested in, however. make
+                                               // sure that all shape functions
+                                               // that are non-zero for the
+                                               // components we are interested in,
+                                               // are in fact primitive
+              for (unsigned int i=0; i<cell->get_fe().dofs_per_cell; ++i)
+                {
+                  const std::vector<bool> &nonzero_component_array
+                    = cell->get_fe().get_nonzero_components (i);
+                  for (unsigned int c=0; c<n_components; ++c)
+                    if ((nonzero_component_array[c] == true)
+                        &&
+                        (component_mask[c] == true))
+                      Assert (cell->get_fe().is_primitive (i),
+                              ExcMessage ("This function can only deal with requested boundary "
+                                          "values that correspond to primitive (scalar) base "
+                                          "elements"));
+                }
+
+              const typename DH::face_iterator face = cell->face(face_no);
+              const types::boundary_id boundary_component = face->boundary_indicator();
+
+                                              // see if this face is
+                                              // part of the
+                                              // boundaries for which
+                                              // we are supposed to
+                                              // do something, and
+                                              // also see if the
+                                              // finite element in
+                                              // use here has DoFs on
+                                              // the face at all
+              if ((function_map.find(boundary_component) != function_map.end())
+                 &&
+                 (cell->get_fe().dofs_per_face > 0))
+                {
+                                                   // face is of the right component
+                  x_fe_values.reinit(cell, face_no);
+                  const dealii::FEFaceValues<dim,spacedim> &fe_values =
+                    x_fe_values.get_present_fe_values();
+
+                                                   // get indices, physical location and
+                                                   // boundary values of dofs on this
+                                                   // face
+                  face_dofs.resize (fe.dofs_per_face);
+                  face->get_dof_indices (face_dofs, cell->active_fe_index());
+                  const std::vector<Point<spacedim> > &dof_locations
+                    = fe_values.get_quadrature_points ();
+
+                  if (fe_is_system)
+                    {
+                                                       // resize
+                                                       // array. avoid
+                                                       // construction of a
+                                                       // memory allocating
+                                                       // temporary if
+                                                       // possible
+                      if (dof_values_system.size() < fe.dofs_per_face)
+                        dof_values_system.resize (fe.dofs_per_face,
+                                                  dealii::Vector<double>(fe.n_components()));
+                      else
+                        dof_values_system.resize (fe.dofs_per_face);
+
+                      function_map.find(boundary_component)->second
+                        ->vector_value_list (dof_locations, dof_values_system);
+
+                                                       // enter those dofs
+                                                       // into the list that
+                                                       // match the
+                                                       // component
+                                                       // signature. avoid
+                                                       // the usual
+                                                       // complication that
+                                                       // we can't just use
+                                                       // *_system_to_component_index
+                                                       // for non-primitive
+                                                       // FEs
+                      for (unsigned int i=0; i<face_dofs.size(); ++i)
+                        {
+                          unsigned int component;
+                          if (fe.is_primitive())
+                            component = fe.face_system_to_component_index(i).first;
+                          else
+                            {
+                                                               // non-primitive
+                                                               // case. make
+                                                               // sure that
+                                                               // this
+                                                               // particular
+                                                               // shape
+                                                               // function
+                                                               // _is_
+                                                               // primitive,
+                                                               // and get at
+                                                               // it's
+                                                               // component. use
+                                                               // usual
+                                                               // trick to
+                                                               // transfer
+                                                               // face dof
+                                                               // index to
+                                                               // cell dof
+                                                               // index
+                              const unsigned int cell_i
+                                = (dim == 1 ?
+                                   i
+                                   :
+                                   (dim == 2 ?
+                                    (i<2*fe.dofs_per_vertex ? i : i+2*fe.dofs_per_vertex)
+                                    :
+                                    (dim == 3 ?
+                                     (i<4*fe.dofs_per_vertex ?
+                                      i
+                                      :
+                                      (i<4*fe.dofs_per_vertex+4*fe.dofs_per_line ?
+                                       i+4*fe.dofs_per_vertex
+                                       :
+                                       i+4*fe.dofs_per_vertex+8*fe.dofs_per_line))
+                                     :
+                                     numbers::invalid_unsigned_int)));
+                              Assert (cell_i < fe.dofs_per_cell, ExcInternalError());
+
+                                                               // make sure
+                                                               // that if
+                                                               // this is
+                                                               // not a
+                                                               // primitive
+                                                               // shape function,
+                                                               // then all
+                                                               // the
+                                                               // corresponding
+                                                               // components
+                                                               // in the
+                                                               // mask are
+                                                               // not set
+                              if (!fe.is_primitive(cell_i))
+                                for (unsigned int c=0; c<n_components; ++c)
+                                  if (fe.get_nonzero_components(cell_i)[c])
+                                    Assert (component_mask[c] == false,
+                                            FETools::ExcFENotPrimitive());
+
+                                                               // let's pick
+                                                               // the first
+                                                               // of
+                                                               // possibly
+                                                               // more than
+                                                               // one
+                                                               // non-zero
+                                                               // components. if
+                                                               // shape
+                                                               // function
+                                                               // is
+                                                               // non-primitive,
+                                                               // then we
+                                                               // will
+                                                               // ignore the
+                                                               // result in
+                                                               // the
+                                                               // following
+                                                               // anyway,
+                                                               // otherwise
+                                                               // there's
+                                                               // only one
+                                                               // non-zero
+                                                               // component
+                                                               // which we
+                                                               // will use
+                              component = (std::find (fe.get_nonzero_components(cell_i).begin(),
+                                                      fe.get_nonzero_components(cell_i).end(),
+                                                      true)
+                                           -
+                                           fe.get_nonzero_components(cell_i).begin());
+                            }
+
+                          if (component_mask[component] == true)
+                            boundary_values[face_dofs[i]] = dof_values_system[i](component);
+                        }
+                    }
+                  else
+                                                     // fe has only one component,
+                                                     // so save some computations
+                    {
+                                                       // get only the one component that
+                                                       // this function has
+                      dof_values_scalar.resize (fe.dofs_per_face);
+                      function_map.find(boundary_component)->second
+                        ->value_list (dof_locations, dof_values_scalar, 0);
+
+                                                       // enter into list
+
+                      for (unsigned int i=0; i<face_dofs.size(); ++i)
+                        boundary_values[face_dofs[i]] = dof_values_scalar[i];
+                    }
+                }
+            }
+    } // end of interpolate_boundary_values
+  } // end of namespace internal
+
+
+
+  template <class DH>
+  void
+
+  interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension>            &mapping,
+                               const DH                 &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask_)
+  {
+    internal::
+      interpolate_boundary_values (mapping, dof, function_map, boundary_values,
+                                   component_mask_,
+                                   dealii::internal::int2type<DH::dimension>());
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension>            &mapping,
+                               const DH                 &dof,
+                               const types::boundary_id            boundary_component,
+                               const Function<DH::space_dimension>           &boundary_function,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask)
+  {
+    typename FunctionMap<DH::space_dimension>::type function_map;
+    function_map[boundary_component] = &boundary_function;
+    interpolate_boundary_values (mapping, dof, function_map, boundary_values,
+                                 component_mask);
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH                 &dof,
+                               const types::boundary_id            boundary_component,
+                               const Function<DH::space_dimension>           &boundary_function,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
+                                dof, boundary_component,
+                                boundary_function, boundary_values, component_mask);
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values (const DH                 &dof,
+                               const typename FunctionMap<DH::space_dimension>::type &function_map,
+                               std::map<unsigned int,double> &boundary_values,
+                               const std::vector<bool>       &component_mask)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
+                                dof, function_map,
+                                boundary_values, component_mask);
+  }
+
+
+
+
+// ----------- interpolate_boundary_values for ConstraintMatrix --------------
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values
+  (const Mapping<DH::dimension, DH::space_dimension>     &mapping,
+   const DH                                              &dof,
+   const typename FunctionMap<DH::space_dimension>::type &function_map,
+   ConstraintMatrix                                      &constraints,
+   const std::vector<bool>                               &component_mask_)
+  {
+    std::map<unsigned int,double> boundary_values;
+    interpolate_boundary_values (mapping, dof, function_map,
+                                 boundary_values, component_mask_);
+    std::map<unsigned int,double>::const_iterator boundary_value =
+      boundary_values.begin();
+    for ( ; boundary_value !=boundary_values.end(); ++boundary_value)
+      {
+        if (constraints.can_store_line (boundary_value->first)
+            &&
+            !constraints.is_constrained(boundary_value->first))
+          {
+            constraints.add_line (boundary_value->first);
+            constraints.set_inhomogeneity (boundary_value->first,
+                                           boundary_value->second);
+          }
+      }
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values
+  (const Mapping<DH::dimension, DH::space_dimension> &mapping,
+   const DH                                          &dof,
+   const types::boundary_id                                boundary_component,
+   const Function<DH::space_dimension>               &boundary_function,
+   ConstraintMatrix                                  &constraints,
+   const std::vector<bool>                           &component_mask)
+  {
+    typename FunctionMap<DH::space_dimension>::type function_map;
+    function_map[boundary_component] = &boundary_function;
+    interpolate_boundary_values (mapping, dof, function_map, constraints,
+                                 component_mask);
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values
+  (const DH                            &dof,
+   const types::boundary_id                  boundary_component,
+   const Function<DH::space_dimension> &boundary_function,
+   ConstraintMatrix                    &constraints,
+   const std::vector<bool>             &component_mask)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
+                                dof, boundary_component,
+                                boundary_function, constraints, component_mask);
+  }
+
+
+
+  template <class DH>
+  void
+  interpolate_boundary_values
+  (const DH                                              &dof,
+   const typename FunctionMap<DH::space_dimension>::type &function_map,
+   ConstraintMatrix                                      &constraints,
+   const std::vector<bool>                               &component_mask)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
+                                dof, function_map,
+                                constraints, component_mask);
+  }
+
+
+
+
+// -------- implementation for project_boundary_values with std::map --------
+
+// separate implementations for 1D because otherwise we get linking errors
+// because create_boundary_mass_matrix is not compiled for 1D
+  template <>
+  void
+  project_boundary_values (const Mapping<1,1>         &mapping,
+                           const DoFHandler<1,1>      &dof,
+                           const FunctionMap<1>::type &boundary_functions,
+                           const Quadrature<0>        &,
+                           std::map<unsigned int,double> &boundary_values,
+                           std::vector<unsigned int>   component_mapping)
+  {
+    Assert (component_mapping.size() == 0, ExcNotImplemented());
+                                     // projection in 1d is equivalent
+                                     // to interpolation
+    interpolate_boundary_values (mapping, dof, boundary_functions,
+                                 boundary_values, std::vector<bool>());
+  }
+
+
+
+  template <>
+  void
+  project_boundary_values (const Mapping<1,2>         &mapping,
+                           const DoFHandler<1,2>      &dof,
+                           const FunctionMap<2>::type &boundary_functions,
+                           const Quadrature<0>        &,
+                           std::map<unsigned int,double> &boundary_values,
+                           std::vector<unsigned int>   component_mapping)
+  {
+    Assert (component_mapping.size() == 0, ExcNotImplemented());
+                                     // projection in 1d is equivalent
+                                     // to interpolation
+    interpolate_boundary_values (mapping, dof, boundary_functions,
+                                 boundary_values, std::vector<bool>());
+  }
+
+
+
+
+  template <int dim, int spacedim>
+  void
+  project_boundary_values (const Mapping<dim, spacedim>   &mapping,
+                           const DoFHandler<dim, spacedim>&dof,
+                           const typename FunctionMap<spacedim>::type &boundary_functions,
+                           const Quadrature<dim-1>        &q,
+                           std::map<unsigned int,double>  &boundary_values,
+                           std::vector<unsigned int>       component_mapping)
+  {
+//TODO:[?] In project_boundary_values, no condensation of sparsity
+//    structures, matrices and right hand sides or distribution of
+//    solution vectors is performed. This is ok for dim<3 because then
+//    there are no constrained nodes on the boundary, but is not
+//    acceptable for higher dimensions. Fix this.
+
+    if (component_mapping.size() == 0)
+      {
+        AssertDimension (dof.get_fe().n_components(), boundary_functions.begin()->second->n_components);
+                                         // I still do not see why i
+                                         // should create another copy
+                                         // here
+        component_mapping.resize(dof.get_fe().n_components());
+        for (unsigned int i= 0 ;i < component_mapping.size() ; ++i)
+          component_mapping[i] = i;
+      }
+    else
+      AssertDimension (dof.get_fe().n_components(), component_mapping.size());
+
+    std::vector<unsigned int> dof_to_boundary_mapping;
+    std::set<types::boundary_id> selected_boundary_components;
+    for (typename FunctionMap<spacedim>::type::const_iterator i=boundary_functions.begin();
+         i!=boundary_functions.end(); ++i)
+      selected_boundary_components.insert (i->first);
+
+    DoFTools::map_dof_to_boundary_indices (dof, selected_boundary_components,
+                                           dof_to_boundary_mapping);
+
+                                     // Done if no degrees of freedom on
+                                     // the boundary
+    if (dof.n_boundary_dofs (boundary_functions) == 0)
+      return;
+                                     // set up sparsity structure
+    SparsityPattern sparsity(dof.n_boundary_dofs (boundary_functions),
+                             dof.max_couplings_between_boundary_dofs());
+    DoFTools::make_boundary_sparsity_pattern (dof,
+                                              boundary_functions,
+                                              dof_to_boundary_mapping,
+                                              sparsity);
+
+                                     // note: for three or more dimensions, there
+                                     // may be constrained nodes on the boundary
+                                     // in this case the boundary mass matrix has
+                                     // to be condensed and the solution is to
+                                     // be distributed afterwards, which is not
+                                     // yet implemented. The reason for this is
+                                     // that we cannot simply use the condense
+                                     // family of functions, since the matrices
+                                     // and vectors do not use the global
+                                     // numbering but rather the boundary
+                                     // numbering, i.e. the condense function
+                                     // needs to use another indirection. There
+                                     // should be not many technical problems,
+                                     // but it needs to be implemented
+    if (dim>=3)
+      {
+#ifdef DEBUG
+// Assert that there are no hanging nodes at the boundary
+        int level = -1;
+        for (typename DoFHandler<dim,spacedim>::active_cell_iterator cell = dof.begin_active();
+             cell != dof.end(); ++cell)
+          for (unsigned int f=0;f<GeometryInfo<dim>::faces_per_cell;++f)
+            {
+              if (cell->at_boundary(f))
+                {
+                  if (level == -1)
+                    level = cell->level();
+                  else
+                    {
+                      Assert (level == cell->level(), ExcNotImplemented());
+                    }
+                }
+            }
+#endif
+      }
+    sparsity.compress();
+
+
+                                     // make mass matrix and right hand side
+    SparseMatrix<double> mass_matrix(sparsity);
+    Vector<double>       rhs(sparsity.n_rows());
+
+
+    MatrixCreator::create_boundary_mass_matrix (mapping, dof, q,
+                                                mass_matrix, boundary_functions,
+                                                rhs, dof_to_boundary_mapping, (const Function<spacedim>*) 0,
+                                                component_mapping);
+
+                                     // For certain weird elements,
+                                     // there might be degrees of
+                                     // freedom on the boundary, but
+                                     // their shape functions do not
+                                     // have support there. Let's
+                                     // eliminate them here.
+
+                                     // The Bogner-Fox-Schmidt element
+                                     // is an example for those.
+
+//TODO: Maybe we should figure out if the element really needs this
+
+    FilteredMatrix<Vector<double> > filtered_mass_matrix(mass_matrix, true);
+    FilteredMatrix<Vector<double> > filtered_precondition;
+    std::vector<bool> excluded_dofs(mass_matrix.m(), false);
+
+    double max_element = 0.;
+    for (unsigned int i=0;i<mass_matrix.m();++i)
+      if (mass_matrix.diag_element(i) > max_element)
+        max_element = mass_matrix.diag_element(i);
+
+    for (unsigned int i=0;i<mass_matrix.m();++i)
+      if (mass_matrix.diag_element(i) < 1.e-8 * max_element)
+        {
+          filtered_mass_matrix.add_constraint(i, 0.);
+          filtered_precondition.add_constraint(i, 0.);
+          mass_matrix.diag_element(i) = 1.;
+          excluded_dofs[i] = true;
+        }
+
+    Vector<double> boundary_projection (rhs.size());
+
+                                     // Allow for a maximum of 5*n
+                                     // steps to reduce the residual by
+                                     // 10^-12. n steps may not be
+                                     // sufficient, since roundoff
+                                     // errors may accumulate for badly
+                                     // conditioned matrices
+    ReductionControl        control(5*rhs.size(), 0., 1.e-12, false, false);
+    GrowingVectorMemory<> memory;
+    SolverCG<>              cg(control,memory);
+
+    PreconditionSSOR<> prec;
+    prec.initialize(mass_matrix, 1.2);
+    filtered_precondition.initialize(prec, true);
+                                     // solve
+    cg.solve (filtered_mass_matrix, boundary_projection, rhs, filtered_precondition);
+    filtered_precondition.apply_constraints(boundary_projection, true);
+    filtered_precondition.clear();
+                                     // fill in boundary values
+    for (unsigned int i=0; i<dof_to_boundary_mapping.size(); ++i)
+      if (dof_to_boundary_mapping[i] != DoFHandler<dim,spacedim>::invalid_dof_index
+          && ! excluded_dofs[dof_to_boundary_mapping[i]])
+        {
+          Assert(numbers::is_finite(boundary_projection(dof_to_boundary_mapping[i])), ExcNumberNotFinite());
+
+                                           // this dof is on one of the
+                                           // interesting boundary parts
+                                           //
+                                           // remember: i is the global dof
+                                           // number, dof_to_boundary_mapping[i]
+                                           // is the number on the boundary and
+                                           // thus in the solution vector
+          boundary_values[i] = boundary_projection(dof_to_boundary_mapping[i]);
+        }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
+                           const typename FunctionMap<spacedim>::type &boundary_functions,
+                           const Quadrature<dim-1>  &q,
+                           std::map<unsigned int,double> &boundary_values,
+                           std::vector<unsigned int> component_mapping)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    project_boundary_values(StaticMappingQ1<dim,spacedim>::mapping, dof, boundary_functions, q,
+                            boundary_values, component_mapping);
+  }
+
+
+
+// ----- implementation for project_boundary_values with ConstraintMatrix -----
+
+
+
+  template <int dim, int spacedim>
+  void
+  project_boundary_values (const Mapping<dim, spacedim>       &mapping,
+                           const DoFHandler<dim,spacedim>    &dof,
+                           const typename FunctionMap<spacedim>::type &boundary_functions,
+                           const Quadrature<dim-1>  &q,
+                           ConstraintMatrix &constraints,
+                           std::vector<unsigned int> component_mapping)
+  {
+    std::map<unsigned int,double> boundary_values;
+    project_boundary_values (mapping, dof, boundary_functions, q,
+                             boundary_values, component_mapping);
+    std::map<unsigned int,double>::const_iterator boundary_value =
+      boundary_values.begin();
+    for ( ; boundary_value !=boundary_values.end(); ++boundary_value)
+      {
+        if (!constraints.is_constrained(boundary_value->first))
+          {
+            constraints.add_line (boundary_value->first);
+            constraints.set_inhomogeneity (boundary_value->first,
+                                           boundary_value->second);
+          }
+      }
+  }
+
+
+
+  template <int dim, int spacedim>
+  void
+  project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
+                           const typename FunctionMap<spacedim>::type &boundary_functions,
+                           const Quadrature<dim-1>  &q,
+                           ConstraintMatrix &constraints,
+                           std::vector<unsigned int> component_mapping)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    project_boundary_values(StaticMappingQ1<dim,spacedim>::mapping, dof, boundary_functions, q,
+                            constraints, component_mapping);
+  }
+
+
+
+
+  namespace internal
+  {
+                                     /**
+                                      * A structure that stores the dim DoF
+                                      * indices that correspond to a
+                                      * vector-valued quantity at a single
+                                      * support point.
+                                      */
+    template <int dim>
+    struct VectorDoFTuple
+    {
+        unsigned int dof_indices[dim];
+
+        VectorDoFTuple ()
+          {
+            for (unsigned int i=0; i<dim; ++i)
+              dof_indices[i] = numbers::invalid_unsigned_int;
+          }
+
+
+        bool operator < (const VectorDoFTuple<dim> &other) const
+          {
+            for (unsigned int i=0; i<dim; ++i)
+              if (dof_indices[i] < other.dof_indices[i])
+                return true;
+              else
+                if (dof_indices[i] > other.dof_indices[i])
+                  return false;
+            return false;
+          }
+
+        bool operator == (const VectorDoFTuple<dim> &other) const
+          {
+            for (unsigned int i=0; i<dim; ++i)
+              if (dof_indices[i] != other.dof_indices[i])
+                return false;
+
+            return true;
+          }
+
+        bool operator != (const VectorDoFTuple<dim> &other) const
+          {
+            return ! (*this == other);
+          }
+    };
+
+
+
+                                     /**
+                                      * Add the constraint
+                                      * $\vec n \cdot \vec u = 0$
+                                      * to the list of constraints.
+                                      *
+                                      * Here, $\vec u$ is represented
+                                      * by the set of given DoF
+                                      * indices, and $\vec n$ by the
+                                      * vector specified as the second
+                                      * argument.
+                                      *
+                                      * The function does not add constraints
+                                      * if a degree of freedom is already
+                                      * constrained in the constraints object.
+                                      */
+    template <int dim>
+    void
+    add_constraint (const VectorDoFTuple<dim> &dof_indices,
+                    const Tensor<1,dim>       &constraining_vector,
+                    ConstraintMatrix          &constraints)
+    {
+
+                                       // choose the DoF that has the
+                                       // largest component in the
+                                       // constraining_vector as the
+                                       // one to be constrained as
+                                       // this makes the process
+                                       // stable in cases where the
+                                       // constraining_vector has the
+                                       // form n=(1,0) or n=(0,1)
+                                       //
+                                       // we get constraints of the form
+                                       //   x0 = a_1*x1 + a2*x2 + ...
+                                       // if one of the weights is
+                                       // essentially zero then skip
+                                       // this part. the ConstraintMatrix
+                                       // can also deal with cases like
+                                       //   x0 = 0
+                                       // if necessary
+                                       //
+                                       // there is a problem if we have a
+                                       // normal vector of the form
+                                       // (a,a,small) or (a,a,a). Depending on
+                                       // round-off we may choose the first or
+                                       // second component (or third, in the
+                                       // latter case) as the largest one, and
+                                       // depending on our choice one or
+                                       // another degree of freedom will be
+                                       // constrained. On a single processor
+                                       // this is not much of a problem, but
+                                       // it's a nightmare when we run in
+                                       // parallel and two processors disagree
+                                       // on which DoF should be
+                                       // constrained. This led to an
+                                       // incredibly difficult to find bug in
+                                       // step-32 when running in parallel
+                                       // with 9 or more processors.
+                                       //
+                                       // in practice, such normal vectors of
+                                       // the form (a,a,small) or (a,a,a)
+                                       // happen not infrequently since they
+                                       // lie on the diagonals where vertices
+                                       // frequently happen to land upon mesh
+                                       // refinement if one starts from a
+                                       // symmetric and regular body. we work
+                                       // around this problem in the following
+                                       // way: if we have a normal vector of
+                                       // the form (a,b) (similarly algorithm
+                                       // in 3d), we choose 'a' as the largest
+                                       // coefficient not if a>b but if
+                                       // a>b+1e-10. this shifts the problem
+                                       // away from the frequently visited
+                                       // diagonal to a line that is off the
+                                       // diagonal. there will of course be
+                                       // problems where the exact values of a
+                                       // and b differ by exactly 1e-10 and we
+                                       // get into the same instability, but
+                                       // from a practical viewpoint such
+                                       // problems should be much rarer. in
+                                       // particular, meshes have to be very
+                                       // very fine for a vertex to land on
+                                       // this line if the original body had a
+                                       // vertex on the diagonal as well
+      switch (dim)
+        {
+          case 2:
+          {
+            if (std::fabs(constraining_vector[0]) > std::fabs(constraining_vector[1]) + 1e-10)
+              {
+                if (!constraints.is_constrained(dof_indices.dof_indices[0])
+                    &&
+                    constraints.can_store_line(dof_indices.dof_indices[0]))
+                  {
+                    constraints.add_line (dof_indices.dof_indices[0]);
+
+                    if (std::fabs (constraining_vector[1]/constraining_vector[0])
+                        > std::numeric_limits<double>::epsilon())
+                      constraints.add_entry (dof_indices.dof_indices[0],
+                                             dof_indices.dof_indices[1],
+                                             -constraining_vector[1]/constraining_vector[0]);
+                  }
+              }
+            else
+              {
+                if (!constraints.is_constrained(dof_indices.dof_indices[1])
+                    &&
+                    constraints.can_store_line(dof_indices.dof_indices[1]))
+                  {
+                    constraints.add_line (dof_indices.dof_indices[1]);
+
+                    if (std::fabs (constraining_vector[0]/constraining_vector[1])
+                        > std::numeric_limits<double>::epsilon())
+                      constraints.add_entry (dof_indices.dof_indices[1],
+                                             dof_indices.dof_indices[0],
+                                             -constraining_vector[0]/constraining_vector[1]);
+                  }
+              }
+            break;
+          }
+
+          case 3:
+          {
+            if ((std::fabs(constraining_vector[0]) >= std::fabs(constraining_vector[1])+1e-10)
+                &&
+                (std::fabs(constraining_vector[0]) >= std::fabs(constraining_vector[2])+2e-10))
+              {
+                if (!constraints.is_constrained(dof_indices.dof_indices[0])
+                    &&
+                    constraints.can_store_line(dof_indices.dof_indices[0]))
+                  {
+                    constraints.add_line (dof_indices.dof_indices[0]);
+
+                    if (std::fabs (constraining_vector[1]/constraining_vector[0])
+                        > std::numeric_limits<double>::epsilon())
+                      constraints.add_entry (dof_indices.dof_indices[0],
+                                             dof_indices.dof_indices[1],
+                                             -constraining_vector[1]/constraining_vector[0]);
+
+                    if (std::fabs (constraining_vector[2]/constraining_vector[0])
+                        > std::numeric_limits<double>::epsilon())
+                      constraints.add_entry (dof_indices.dof_indices[0],
+                                             dof_indices.dof_indices[2],
+                                             -constraining_vector[2]/constraining_vector[0]);
+                  }
+              }
+            else
+              if ((std::fabs(constraining_vector[1])+1e-10 >= std::fabs(constraining_vector[0]))
+                  &&
+                  (std::fabs(constraining_vector[1]) >= std::fabs(constraining_vector[2])+1e-10))
+                {
+                  if (!constraints.is_constrained(dof_indices.dof_indices[1])
+                      &&
+                      constraints.can_store_line(dof_indices.dof_indices[1]))
+                    {
+                      constraints.add_line (dof_indices.dof_indices[1]);
+
+                      if (std::fabs (constraining_vector[0]/constraining_vector[1])
+                          > std::numeric_limits<double>::epsilon())
+                        constraints.add_entry (dof_indices.dof_indices[1],
+                                               dof_indices.dof_indices[0],
+                                               -constraining_vector[0]/constraining_vector[1]);
+
+                      if (std::fabs (constraining_vector[2]/constraining_vector[1])
+                          > std::numeric_limits<double>::epsilon())
+                        constraints.add_entry (dof_indices.dof_indices[1],
+                                               dof_indices.dof_indices[2],
+                                               -constraining_vector[2]/constraining_vector[1]);
+                    }
+                }
+              else
+                {
+                  if (!constraints.is_constrained(dof_indices.dof_indices[2])
+                      &&
+                      constraints.can_store_line(dof_indices.dof_indices[2]))
+                    {
+                      constraints.add_line (dof_indices.dof_indices[2]);
+
+                      if (std::fabs (constraining_vector[0]/constraining_vector[2])
+                          > std::numeric_limits<double>::epsilon())
+                        constraints.add_entry (dof_indices.dof_indices[2],
+                                               dof_indices.dof_indices[0],
+                                               -constraining_vector[0]/constraining_vector[2]);
+
+                      if (std::fabs (constraining_vector[1]/constraining_vector[2])
+                          > std::numeric_limits<double>::epsilon())
+                        constraints.add_entry (dof_indices.dof_indices[2],
+                                               dof_indices.dof_indices[1],
+                                               -constraining_vector[1]/constraining_vector[2]);
+                    }
+                }
+
+            break;
+          }
+
+          default:
+                Assert (false, ExcNotImplemented());
+        }
+    }
+
+
+                                     /**
+                                      * Add the constraint $\vec u \|
+                                      * \vec t$ to the list of
+                                      * constraints. In 2d, this is a
+                                      * single constraint, in 3d these
+                                      * are two constraints
+                                      *
+                                      * Here, $\vec u$ is represented
+                                      * by the set of given DoF
+                                      * indices, and $\vec t$ by the
+                                      * vector specified as the second
+                                      * argument.
+                                      *
+                                      * The function does not add constraints
+                                      * if a degree of freedom is already
+                                      * constrained in the constraints object.
+                                      */
+    template <int dim>
+    void
+    add_tangentiality_constraints (const VectorDoFTuple<dim> &dof_indices,
+                                  const Tensor<1,dim>       &tangent_vector,
+                                  ConstraintMatrix          &constraints)
+    {
+
+                                       // choose the DoF that has the
+                                       // largest component in the
+                                       // tangent_vector as the
+                                       // independent component, and
+                                       // then constrain the others to
+                                       // it. specifically, if, say,
+                                       // component 0 of the tangent
+                                       // vector t is largest by
+                                       // magnitude, then
+                                       // x1=t[1]/t[0]*x_0, etc.
+      unsigned int largest_component = 0;
+      for (unsigned int d=1; d<dim; ++d)
+       if (std::fabs(tangent_vector[d]) > std::fabs(tangent_vector[largest_component]) + 1e-10)
+         largest_component = d;
+
+                                      // then constrain all of the
+                                      // other degrees of freedom in
+                                      // terms of the one just found
+      for (unsigned int d=0; d<dim; ++d)
+       if (d != largest_component)
+         if (!constraints.is_constrained(dof_indices.dof_indices[d])
+             &&
+             constraints.can_store_line(dof_indices.dof_indices[d]))
+           {
+             constraints.add_line (dof_indices.dof_indices[d]);
+
+             if (std::fabs (tangent_vector[d]/tangent_vector[largest_component])
+                 > std::numeric_limits<double>::epsilon())
+               constraints.add_entry (dof_indices.dof_indices[d],
+                                      dof_indices.dof_indices[largest_component],
+                                      tangent_vector[d]/tangent_vector[largest_component]);
+           }
+    }
+
+
+
+                                     /**
+                                      * Given a vector, compute a set
+                                      * of dim-1 vectors that are
+                                      * orthogonal to the first one
+                                      * and mutually orthonormal as
+                                      * well.
+                                      */
+    template <int dim>
+    void
+    compute_orthonormal_vectors (const Tensor<1,dim> &vector,
+                                 Tensor<1,dim> (&orthonormals)[dim-1])
+    {
+      switch (dim)
+        {
+          case 3:
+          {
+                                             // to do this in 3d, take
+                                             // one vector that is
+                                             // guaranteed to be not
+                                             // aligned with the
+                                             // average tangent and
+                                             // form the cross
+                                             // product. this yields
+                                             // one vector that is
+                                             // certainly
+                                             // perpendicular to the
+                                             // tangent; then take the
+                                             // cross product between
+                                             // this vector and the
+                                             // tangent and get one
+                                             // vector that is
+                                             // perpendicular to both
+
+                                             // construct a
+                                             // temporary vector
+                                             // by swapping the
+                                             // larger two
+                                             // components and
+                                             // flipping one
+                                             // sign; this can
+                                             // not be collinear
+                                             // with the average
+                                             // tangent
+            Tensor<1,dim> tmp = vector;
+            if ((std::fabs(tmp[0]) > std::fabs(tmp[1]))
+                &&
+                (std::fabs(tmp[0]) > std::fabs(tmp[2])))
+              {
+                                                 // entry zero
+                                                 // is the
+                                                 // largest
+                if ((std::fabs(tmp[1]) > std::fabs(tmp[2])))
+                  std::swap (tmp[0], tmp[1]);
+                else
+                  std::swap (tmp[0], tmp[2]);
+
+                tmp[0] *= -1;
+              }
+            else if ((std::fabs(tmp[1]) > std::fabs(tmp[0]))
+                     &&
+                     (std::fabs(tmp[1]) > std::fabs(tmp[2])))
+              {
+                                                 // entry one
+                                                 // is the
+                                                 // largest
+                if ((std::fabs(tmp[0]) > std::fabs(tmp[2])))
+                  std::swap (tmp[1], tmp[0]);
+                else
+                  std::swap (tmp[1], tmp[2]);
+
+                tmp[1] *= -1;
+              }
+            else
+              {
+                                                 // entry two
+                                                 // is the
+                                                 // largest
+                if ((std::fabs(tmp[0]) > std::fabs(tmp[1])))
+                  std::swap (tmp[2], tmp[0]);
+                else
+                  std::swap (tmp[2], tmp[1]);
+
+                tmp[2] *= -1;
+              }
+
+                                             // make sure the two vectors
+                                             // are indeed not collinear
+            Assert (std::fabs(vector * tmp / vector.norm() / tmp.norm())
+                    <
+                    (1-1e-12),
+                    ExcInternalError());
+
+                                             // now compute the
+                                             // two normals
+            cross_product (orthonormals[0], vector, tmp);
+            cross_product (orthonormals[1], vector, orthonormals[0]);
+
+            break;
+          }
+
+          default:
+                Assert (false, ExcNotImplemented());
+        }
+    }
+  }
+
+
+  namespace internals
+  {
+                                     // This function computes the
+                                     // projection of the boundary
+                                     // function on edges for 3D.
+    template<typename cell_iterator>
+    void
+    compute_edge_projection (const cell_iterator& cell,
+                             const unsigned int face,
+                             const unsigned int line,
+                             hp::FEValues<3>& hp_fe_values,
+                             const Function<3>& boundary_function,
+                             const unsigned int first_vector_component,
+                             std::vector<double>& dof_values)
+    {
+      const double tol = 0.5 * cell->get_fe ().degree * 1e-13 / cell->face (face)->line (line)->diameter ();
+      const unsigned int dim = 3;
+      const unsigned int spacedim = 3;
+
+      hp_fe_values.reinit
+        (cell,
+         (cell->active_fe_index () * GeometryInfo<dim>::faces_per_cell + face)
+         * GeometryInfo<dim>::lines_per_face + line);
+
+                                       // Initialize the required
+                                       // objects.
+      const FEValues<dim>&
+        fe_values = hp_fe_values.get_present_fe_values ();
+      const std::vector< DerivativeForm<1,dim,spacedim> > &
+        jacobians = fe_values.get_jacobians ();
+      const std::vector<Point<dim> >&
+        quadrature_points = fe_values.get_quadrature_points ();
+
+      std::vector<Point<dim> > tangentials (fe_values.n_quadrature_points);
+      std::vector<Vector<double> > values (fe_values.n_quadrature_points,
+                                           Vector<double> (cell->get_fe ().n_components ()));
+
+                                       // Get boundary function values
+                                       // at quadrature points.
+      boundary_function.vector_value_list (quadrature_points, values);
+
+      const std::vector<Point<dim> >&
+        reference_quadrature_points = fe_values.get_quadrature ().get_points ();
+      const unsigned int superdegree = cell->get_fe ().degree;
+      const unsigned int degree = superdegree - 1;
+
+                                       // coordinate directions of
+                                       // the edges of the face.
+      const unsigned int
+        edge_coordinate_direction
+        [GeometryInfo<dim>::faces_per_cell]
+        [GeometryInfo<dim>::lines_per_face]
+        = { { 2, 2, 1, 1 },
+            { 2, 2, 1, 1 },
+            { 0, 0, 2, 2 },
+            { 0, 0, 2, 2 },
+            { 1, 1, 0, 0 },
+            { 1, 1, 0, 0 } };
+      const FEValuesExtractors::Vector vec (first_vector_component);
+
+                                       // The interpolation for the
+                                       // lowest order edge shape
+                                       // functions is just the mean
+                                       // value of the tangential
+                                       // components of the boundary
+                                       // function on the edge.
+      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points;
+           ++q_point)
+        {
+                                           // Therefore compute the
+                                           // tangential of the edge at
+                                           // the quadrature point.
+          Point<dim> shifted_reference_point_1 = reference_quadrature_points[q_point];
+          Point<dim> shifted_reference_point_2 = reference_quadrature_points[q_point];
+
+          shifted_reference_point_1 (edge_coordinate_direction[face][line]) += tol;
+          shifted_reference_point_2 (edge_coordinate_direction[face][line]) -= tol;
+          tangentials[q_point]
+            = (0.5 *
+               (fe_values.get_mapping ()
+                .transform_unit_to_real_cell (cell,
+                                              shifted_reference_point_1)
+                -
+                fe_values.get_mapping ()
+                .transform_unit_to_real_cell (cell,
+                                              shifted_reference_point_2))
+               / tol);
+          tangentials[q_point]
+            /= std::sqrt (tangentials[q_point].square ());
+
+                                           // Compute the degrees of
+                                           // freedom.
+          for (unsigned int i = 0; i <= degree; ++i)
+            dof_values[i + line * superdegree]
+              += (fe_values.JxW (q_point)
+                  * (values[q_point] (first_vector_component) * tangentials[q_point] (0)
+                     + values[q_point] (first_vector_component + 1) * tangentials[q_point] (1)
+                     + values[q_point] (first_vector_component + 2) * tangentials[q_point] (2))
+                  * (fe_values[vec].value (cell->get_fe ().face_to_cell_index (i + line * superdegree,
+                                                                               face),
+                                           q_point)
+                     * tangentials[q_point])
+                  / std::sqrt (jacobians[q_point][0][edge_coordinate_direction[face][line]]
+                               * jacobians[q_point][0][edge_coordinate_direction[face][line]]
+                               + jacobians[q_point][1][edge_coordinate_direction[face][line]]
+                               * jacobians[q_point][1][edge_coordinate_direction[face][line]]
+                               + jacobians[q_point][2][edge_coordinate_direction[face][line]]
+                               * jacobians[q_point][2][edge_coordinate_direction[face][line]]));
+        }
+    }
+
+                                     // dummy implementation of above
+                                     // function for all other
+                                     // dimensions
+    template<int dim, typename cell_iterator>
+    void
+    compute_edge_projection (const cell_iterator&,
+                             const unsigned int,
+                             const unsigned int,
+                             hp::FEValues<dim>&,
+                             const Function<dim>&,
+                             const unsigned int,
+                             std::vector<double>&)
+    {
+      Assert (false, ExcInternalError ());
+    }
+
+                                     // This function computes the
+                                     // projection of the boundary
+                                     // function on the interior of
+                                     // faces.
+    template<int dim, typename cell_iterator>
+    void
+    compute_face_projection_curl_conforming (const cell_iterator& cell,
+                                             const unsigned int face,
+                                             hp::FEValues<dim>& hp_fe_values,
+                                             const Function<dim>& boundary_function,
+                                             const unsigned int first_vector_component,
+                                             std::vector<double>& dof_values)
+    {
+      const unsigned int spacedim = dim;
+      hp_fe_values.reinit (cell, cell->active_fe_index ()
+                           * GeometryInfo<dim>::faces_per_cell + face);
+                                       // Initialize the required
+                                       // objects.
+      const FEValues<dim>&
+        fe_values = hp_fe_values.get_present_fe_values ();
+      const std::vector< DerivativeForm<1,dim,spacedim> > &
+        jacobians = fe_values.get_jacobians ();
+
+      std::vector<Vector<double> >
+        values (fe_values.n_quadrature_points, Vector<double> (cell->get_fe ().n_components ()));
+
+      switch (dim)
+        {
+          case 2:
+          {
+            const std::vector<Point<dim> >&
+              quadrature_points = fe_values.get_quadrature_points ();
+            std::vector<Point<dim> >
+              tangentials (fe_values.n_quadrature_points);
+
+                                             // Get boundary function
+                                             // values at quadrature
+                                             // points.
+            boundary_function.vector_value_list (quadrature_points, values);
+
+            const std::vector<Point<dim> >&
+              reference_quadrature_points = fe_values.get_quadrature ().get_points ();
+            const unsigned int degree = cell->get_fe ().degree - 1;
+
+                                             // coordinate directions
+                                             // of the face.
+            const unsigned int
+              face_coordinate_direction[GeometryInfo<dim>::faces_per_cell]
+              = { 1, 1, 0, 0 };
+            const FEValuesExtractors::Vector vec (first_vector_component);
+
+                                             // The interpolation for
+                                             // the lowest order face
+                                             // shape functions is just
+                                             // the mean value of the
+                                             // tangential  components
+                                             // of the boundary function
+                                             // on the edge.
+            for (unsigned int q_point = 0;
+                 q_point < fe_values.n_quadrature_points; ++q_point)
+              {
+                                                 // Therefore compute the
+                                                 // tangential of the
+                                                 // face at the quadrature
+                                                 // point.
+                Point<dim> shifted_reference_point_1
+                  = reference_quadrature_points[q_point];
+                Point<dim> shifted_reference_point_2
+                  = reference_quadrature_points[q_point];
+
+                shifted_reference_point_1 (face_coordinate_direction[face])
+                  += 1e-13;
+                shifted_reference_point_2 (face_coordinate_direction[face])
+                  -= 1e-13;
+                tangentials[q_point]
+                  = 2e13
+                  * (fe_values.get_mapping ()
+                     .transform_unit_to_real_cell (cell,
+                                                   shifted_reference_point_1)
+                     -
+                     fe_values.get_mapping ()
+                     .transform_unit_to_real_cell (cell,
+                                                   shifted_reference_point_2));
+                tangentials[q_point]
+                  /= std::sqrt (tangentials[q_point].square ());
+                                                 // Compute the degrees
+                                                 // of freedom.
+                for (unsigned int i = 0; i <= degree; ++i)
+                  dof_values[i]
+                    += fe_values.JxW (q_point)
+                    * (values[q_point] (first_vector_component)
+                       * tangentials[q_point] (0)
+                       + values[q_point] (first_vector_component + 1)
+                       * tangentials[q_point] (1))
+                    * (fe_values[vec].value (cell->get_fe ().face_to_cell_index (i, face),
+                                             q_point) * tangentials[q_point])
+                    / std::sqrt (jacobians[q_point][0][face_coordinate_direction[face]]
+                                 * jacobians[q_point][0][face_coordinate_direction[face]]
+                                 + jacobians[q_point][1][face_coordinate_direction[face]]
+                                 * jacobians[q_point][1][face_coordinate_direction[face]]);
+              }
+
+            break;
+          }
+
+          case 3:
+          {
+            const std::vector<Point<dim> >&
+              quadrature_points = fe_values.get_quadrature_points ();
+
+                                             // Get boundary function
+                                             // values at quadrature
+                                             // points.
+            boundary_function.vector_value_list (quadrature_points, values);
+
+            const FEValuesExtractors::Vector vec (first_vector_component);
+            const unsigned int superdegree = cell->get_fe ().degree;
+            const unsigned int degree = superdegree - 1;
+            FullMatrix<double>
+              assembling_matrix (degree * superdegree,
+                                 dim * fe_values.n_quadrature_points);
+            Vector<double> assembling_vector (assembling_matrix.n ());
+            Vector<double> cell_rhs (assembling_matrix.m ());
+            FullMatrix<double> cell_matrix (assembling_matrix.m (),
+                                            assembling_matrix.m ());
+            FullMatrix<double> cell_matrix_inv (assembling_matrix.m (),
+                                                assembling_matrix.m ());
+            Vector<double> solution (cell_matrix.m ());
+
+                                             // Get coordinate directions
+                                             // of the face.
+            const unsigned int
+              global_face_coordinate_directions[GeometryInfo<3>::faces_per_cell][2]
+              = { { 1, 2 },
+                  { 1, 2 },
+                  { 2, 0 },
+                  { 2, 0 },
+                  { 0, 1 },
+                  { 0, 1 } };
+
+                                             // The projection is
+                                             // divided into two steps.
+                                             // In the first step we
+                                             // project the boundary
+                                             // function on the
+                                             // horizontal shape
+                                             // functions.  Then the
+                                             // bounary function is
+                                             // projected on the
+                                             // vertical shape
+                                             // functions.  We begin
+                                             // with the horizontal
+                                             // shape functions and
+                                             // set up a linear system
+                                             // of equations to get
+                                             // the values for degrees
+                                             // of freedom associated
+                                             // with the interior of
+                                             // the face.
+            for (unsigned int q_point = 0;
+                 q_point < fe_values.n_quadrature_points; ++q_point)
+              {
+                                                 // The right hand
+                                                 // side of the
+                                                 // corresponding problem
+                                                 // is the residual
+                                                 // of the boundary
+                                                 // function and
+                                                 // the already
+                                                 // interpolated part
+                                                 // on the edges.
+                Tensor<1, dim> tmp;
+
+                for (unsigned int d = 0; d < dim; ++d)
+                  tmp[d] = values[q_point] (first_vector_component + d);
+
+                for (unsigned int i = 0; i < 2; ++i)
+                  for (unsigned int j = 0; j <= degree; ++j)
+                    tmp -= dof_values[(i + 2) * superdegree + j]
+                           * fe_values[vec].value (cell->get_fe ().face_to_cell_index
+                                                   ((i + 2) * superdegree + j,
+                                                    face), q_point);
+
+                const double JxW
+                  = std::sqrt (fe_values.JxW (q_point)
+                               / ((jacobians[q_point][0][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][0][global_face_coordinate_directions[face][0]]
+                                   +
+                                   jacobians[q_point][1][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][1][global_face_coordinate_directions[face][0]]
+                                   +
+                                   jacobians[q_point][2][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][2][global_face_coordinate_directions[face][0]])
+                                  *
+                                  (jacobians[q_point][0][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][0][global_face_coordinate_directions[face][1]]
+                                   +
+                                   jacobians[q_point][1][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][1][global_face_coordinate_directions[face][1]]
+                                   +
+                                   jacobians[q_point][2][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][2][global_face_coordinate_directions[face][1]])));
+
+                                                 // In the weak form
+                                                 // the right hand
+                                                 // side function
+                                                 // is multiplicated
+                                                 // by the horizontal
+                                                 // shape functions
+                                                 // defined in the
+                                                 // interior of
+                                                 // the face.
+                for (unsigned int d = 0; d < dim; ++d)
+                  assembling_vector (dim * q_point + d) = JxW * tmp[d];
+
+                for (unsigned int i = 0; i <= degree; ++i)
+                  for (unsigned int j = 0; j < degree; ++j)
+                    {
+                      const Tensor<1, dim> shape_value
+                        = (JxW
+                           * fe_values[vec].value (cell->get_fe ()
+                                                   .face_to_cell_index
+                                                   ((i + GeometryInfo<dim>::lines_per_face)
+                                                    * degree
+                                                    + j
+                                                    + GeometryInfo<dim>::lines_per_face,
+                                                    face),
+                                                   q_point));
+
+                      for (unsigned int d = 0; d < dim; ++d)
+                        assembling_matrix (i * degree + j,
+                                           dim * q_point + d)
+                          = shape_value[d];
+                    }
+              }
+
+                                             // Create the system
+                                             // matrix by
+                                             // multiplying the
+                                             // assembling matrix
+                                             // with its transposed
+                                             // and the right
+                                             // hand side vector
+                                             // by mutliplying
+                                             // the assembling
+                                             // matrix with the
+                                             // assembling vector.
+                                             // Invert the system
+                                             // matrix.
+            assembling_matrix.mTmult (cell_matrix, assembling_matrix);
+            cell_matrix_inv.invert (cell_matrix);
+            assembling_matrix.vmult (cell_rhs, assembling_vector);
+            cell_matrix_inv.vmult (solution, cell_rhs);
+
+                                             // Store the computed
+                                             // values.
+            for (unsigned int i = 0; i <= degree; ++i)
+              for (unsigned int j = 0; j < degree; ++j)
+                dof_values[(i + GeometryInfo<dim>::lines_per_face)
+                           * degree + j + GeometryInfo<dim>::lines_per_face]
+                  = solution (i * degree + j);
+
+                                             // Now we do the
+                                             // same as above
+                                             // with the vertical
+                                             // shape functions
+                                             // instead of the
+                                             // horizontal ones.
+            for (unsigned int q_point = 0;
+                 q_point < fe_values.n_quadrature_points; ++q_point)
+              {
+                Tensor<1, dim> tmp;
+
+                for (unsigned int d = 0; d < dim; ++d)
+                  tmp[d] = values[q_point] (first_vector_component + d);
+
+                for (unsigned int i = 0; i < 2; ++i)
+                  for (unsigned int j = 0; j <= degree; ++j)
+                    tmp
+                      -= dof_values[i * superdegree + j]
+                      * fe_values[vec].value (cell->get_fe ().face_to_cell_index
+                                              (i * superdegree + j, face), q_point);
+
+                const double JxW
+                  = std::sqrt (fe_values.JxW (q_point)
+                               / ((jacobians[q_point][0][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][0][global_face_coordinate_directions[face][0]]
+                                   +
+                                   jacobians[q_point][1][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][1][global_face_coordinate_directions[face][0]]
+                                   +
+                                   jacobians[q_point][2][global_face_coordinate_directions[face][0]]
+                                   * jacobians[q_point][2][global_face_coordinate_directions[face][0]])
+                                  *
+                                  (jacobians[q_point][0][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][0][global_face_coordinate_directions[face][1]]
+                                   +
+                                   jacobians[q_point][1][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][1][global_face_coordinate_directions[face][1]]
+                                   +
+                                   jacobians[q_point][2][global_face_coordinate_directions[face][1]]
+                                   * jacobians[q_point][2][global_face_coordinate_directions[face][1]])));
+
+                for (unsigned int d = 0; d < dim; ++d)
+                  assembling_vector (dim * q_point + d) = JxW * tmp[d];
+
+                for (unsigned int i = 0; i < degree; ++i)
+                  for (unsigned int j = 0; j <= degree; ++j)
+                    {
+                      const Tensor<1, dim> shape_value
+                        = (JxW
+                           * fe_values[vec].value (cell->get_fe ().face_to_cell_index
+                                                   ((i + degree + GeometryInfo<dim>::lines_per_face)
+                                                    * superdegree + j, face), q_point));
+
+                      for (unsigned int d = 0; d < dim; ++d)
+                        assembling_matrix (i * superdegree + j, dim * q_point + d)
+                          = shape_value[d];
+                    }
+              }
+
+            assembling_matrix.mTmult (cell_matrix, assembling_matrix);
+            cell_matrix_inv.invert (cell_matrix);
+            assembling_matrix.vmult (cell_rhs, assembling_vector);
+            cell_matrix_inv.vmult (solution, cell_rhs);
+
+            for (unsigned int i = 0; i < degree; ++i)
+              for (unsigned int j = 0; j <= degree; ++j)
+                dof_values[(i + degree + GeometryInfo<dim>::lines_per_face) * superdegree + j]
+                  = solution (i * superdegree + j);
+
+            break;
+          }
+
+          default:
+                Assert (false, ExcNotImplemented ());
+        }
+    }
+  }
+
+
+
+
+  template <int dim>
+  void
+
+  project_boundary_values_curl_conforming (const DoFHandler<dim>& dof_handler,
+                                           const unsigned int first_vector_component,
+                                           const Function<dim>& boundary_function,
+                                           const types::boundary_id boundary_component,
+                                           ConstraintMatrix& constraints,
+                                           const Mapping<dim>& mapping)
+  {
+                                     // Projection-based interpolation
+                                     // is performed in two (in 2D)
+                                     // respectively three (in 3D)
+                                     // steps. First the tangential
+                                     // component of the function is
+                                     // interpolated on each edge.  This
+                                     // gives the values for the degrees
+                                     // of freedom corresponding to the
+                                     // edge shape functions. Now we are
+                                     // done for 2D, but in 3D we possibly
+                                     // have also degrees of freedom, which
+                                     // are located in the interior of
+                                     // the faces. Therefore we compute
+                                     // the residual of the function
+                                     // describing the boundary values
+                                     // and the interpolated part, which
+                                     // we have computed in the last
+                                     // step. On the faces there are
+                                     // two kinds of shape functions,
+                                     // the horizontal and the vertical
+                                     // ones. Thus we have to solve two
+                                     // linear systems of equations of
+                                     // size <tt>degree * (degree +
+                                     // 1)<tt> to obtain the values for
+                                     // the  corresponding degrees of
+                                     // freedom.
+    const unsigned int superdegree = dof_handler.get_fe ().degree;
+    const QGauss<dim - 1> reference_face_quadrature (2 * superdegree);
+    const unsigned int dofs_per_face = dof_handler.get_fe ().dofs_per_face;
+    hp::FECollection<dim> fe_collection (dof_handler.get_fe ());
+    hp::MappingCollection<dim> mapping_collection (mapping);
+    hp::QCollection<dim> face_quadrature_collection;
+
+    for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+      face_quadrature_collection.push_back
+        (QProjector<dim>::project_to_face (reference_face_quadrature, face));
+
+    hp::FEValues<dim> fe_face_values (mapping_collection, fe_collection,
+                                      face_quadrature_collection,
+                                      update_jacobians |
+                                      update_JxW_values |
+                                      update_quadrature_points |
+                                      update_values);
+
+    std::vector<double> dof_values (dofs_per_face);
+    std::vector<unsigned int> face_dof_indices (dofs_per_face);
+    typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+
+    switch (dim)
+      {
+        case 2:
+        {
+          for (; cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // if the FE is a
+                                                     // FE_Nothing object
+                                                     // there is no work to
+                                                     // do
+                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
+                      return;
+
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Nedelec
+                                                     // element. If the FE
+                                                     // is a FESystem, we
+                                                     // cannot check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0) {
+                      typedef FiniteElement<dim> FEL;
+                      AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
+
+                                   typename FEL::ExcInterpolationNotImplemented ());
+                    }
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      dof_values[dof] = 0.0;
+
+                                                     // Compute the
+                                                     // projection of the
+                                                     // boundary function on
+                                                     // the edge.
+                    internals
+                      ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
+                                                                 boundary_function,
+                                                                 first_vector_component,
+                                                                 dof_values);
+                    cell->face (face)->get_dof_indices (face_dof_indices,
+                                                        cell->active_fe_index ());
+
+                                                     // Add the computed
+                                                     // constraints to the
+                                                     // constraint matrix,
+                                                     // if the degree of
+                                                     // freedom is not
+                                                     // already constrained.
+                    const double tol = 1e-13;
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      if (!(constraints.is_constrained (face_dof_indices[dof])))
+                        {
+                          constraints.add_line (face_dof_indices[dof]);
+
+                          if (std::abs (dof_values[dof]) > tol)
+                            constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
+                        }
+                  }
+
+          break;
+        }
+
+        case 3:
+        {
+          const QGauss<dim - 2> reference_edge_quadrature (2 * superdegree);
+          const unsigned int degree = superdegree - 1;
+          const unsigned int n_dofs = dof_handler.n_dofs ();
+          hp::QCollection<dim> edge_quadrature_collection;
+
+          for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+            for (unsigned int line = 0; line < GeometryInfo<dim>::lines_per_face; ++line)
+              edge_quadrature_collection.push_back
+                (QProjector<dim>::project_to_face
+                 (QProjector<dim - 1>::project_to_face
+                  (reference_edge_quadrature, line), face));
+
+          hp::FEValues<dim> fe_edge_values (mapping_collection, fe_collection,
+                                            edge_quadrature_collection,
+                                            update_jacobians |
+                                            update_JxW_values |
+                                            update_quadrature_points |
+                                            update_values);
+          std::vector<double> computed_constraints (n_dofs);
+          std::vector<int> projected_dofs (n_dofs);
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof) {
+            computed_constraints[dof] = 0.0;
+            projected_dofs[dof] = -1;
+          }
+
+          for (; cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // if the FE is a
+                                                     // FE_Nothing object
+                                                     // there is no work to
+                                                     // do
+                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
+                      return;
+
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Nedelec
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      dof_values[dof] = 0.0;
+
+                    cell->face (face)->get_dof_indices (face_dof_indices,
+                                                        cell->active_fe_index ());
+
+                                                     // First we compute the
+                                                     // projection on the
+                                                     // edges.
+                    for (unsigned int line = 0;
+                         line < GeometryInfo<3>::lines_per_face; ++line)
+                      {
+                                                         // If we have reached
+                                                         // this edge through
+                                                         // another cell
+                                                         // before, we do not
+                                                         // do here anything
+                                                         // unless we have a
+                                                         // good reason, i.e.
+                                                         // a higher
+                                                         // polynomial degree.
+                        if (projected_dofs[face_dof_indices[line * superdegree]]
+                            <
+                            (int) degree)
+                          {
+                                                             // Compute the
+                                                             // projection of
+                                                             // the boundary
+                                                             // function on the
+                                                             // edge.
+                            internals
+                              ::compute_edge_projection (cell, face, line,
+                                                         fe_edge_values,
+                                                         boundary_function,
+                                                         first_vector_component,
+                                                         dof_values);
+                                                             // Mark the
+                                                             // projected
+                                                             // degrees of
+                                                             // freedom.
+                            for (unsigned int dof = line * superdegree;
+                                 dof < (line + 1) * superdegree; ++dof)
+                              projected_dofs[face_dof_indices[dof]] = degree;
+                          }
+
+                                                         // If we have
+                                                         // computed the
+                                                         // values in a
+                                                         // previous step of
+                                                         // the loop, we just
+                                                         // copy the values in
+                                                         // the local vector.
+                        else
+                          for (unsigned int dof = line * superdegree;
+                               dof < (line + 1) * superdegree; ++dof)
+                            dof_values[dof] = computed_constraints[face_dof_indices[dof]];
+                      }
+
+                                                     // If there are higher
+                                                     // order shape
+                                                     // functions, there is
+                                                     // still some work
+                                                     // left.
+                    if (degree > 0)
+                      {
+                                                         // Compute the
+                                                         // projection of the
+                                                         // boundary function
+                                                         // on the interior of
+                                                         // the face.
+                        internals
+                          ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
+                                                                     boundary_function,
+                                                                     first_vector_component,
+                                                                     dof_values);
+
+                                                         // Mark the projected
+                                                         // degrees of
+                                                         // freedom.
+                        for (unsigned int dof = GeometryInfo<dim>::lines_per_face * superdegree;
+                             dof < dofs_per_face; ++dof)
+                          projected_dofs[face_dof_indices[dof]] = degree;
+                      }
+
+                                                     // Store the computed
+                                                     // values in the global
+                                                     // vector.
+                    const double tol = 0.5 * superdegree * 1e-13 / cell->face (face)->diameter ();
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      if (std::abs (computed_constraints[face_dof_indices[dof]] - dof_values[dof]) > tol)
+                        computed_constraints[face_dof_indices[dof]] = dof_values[dof];
+                  }
+
+                                           // Add the computed constraints
+                                           // to the constraint matrix, if
+                                           // the degree of freedom is not
+                                           // already constrained.
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
+              {
+                constraints.add_line (dof);
+                constraints.set_inhomogeneity (dof, computed_constraints[dof]);
+              }
+
+          break;
+        }
+
+        default:
+              Assert (false, ExcNotImplemented ());
+      }
+  }
+
+
+
+  template <int dim>
+  void
+
+  project_boundary_values_curl_conforming (const hp::DoFHandler<dim>& dof_handler,
+                                           const unsigned int first_vector_component,
+                                           const Function<dim>& boundary_function,
+                                           const types::boundary_id boundary_component,
+                                           ConstraintMatrix& constraints,
+                                           const hp::MappingCollection<dim>& mapping_collection)
+  {
+    hp::FECollection<dim> fe_collection (dof_handler.get_fe ());
+    hp::QCollection<dim> face_quadrature_collection;
+
+    for (unsigned int i = 0; i < fe_collection.size (); ++i)
+      {
+        const QGauss<dim - 1>
+          reference_face_quadrature (2 * fe_collection[i].degree);
+
+        for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+          face_quadrature_collection.push_back
+            (QProjector<dim>::project_to_face (reference_face_quadrature, face));
+      }
+
+    hp::FEValues<dim> fe_face_values (mapping_collection, fe_collection,
+                                      face_quadrature_collection,
+                                      update_jacobians |
+                                      update_JxW_values |
+                                      update_quadrature_points |
+                                      update_values);
+    std::vector<double> dof_values;
+    std::vector<unsigned int> face_dof_indices;
+    typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+
+    switch (dim)
+      {
+        case 2:
+        {
+          for (; cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // if the FE is a
+                                                     // FE_Nothing object
+                                                     // there is no work to
+                                                     // do
+                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
+                      return;
+
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Nedelec
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    const unsigned int dofs_per_face = cell->get_fe ().dofs_per_face;
+
+                    dof_values.resize (dofs_per_face);
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      dof_values[dof] = 0.0;
+
+                    internals
+                      ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
+                                                                 boundary_function,
+                                                                 first_vector_component,
+                                                                 dof_values);
+                    face_dof_indices.resize (dofs_per_face);
+                    cell->face (face)->get_dof_indices (face_dof_indices,
+                                                        cell->active_fe_index ());
+
+                    const double tol = 0.5 * cell->get_fe ().degree * 1e-13  / cell->face (face)->diameter ();
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      if (!(constraints.is_constrained (face_dof_indices[dof])))
+                        {
+                          constraints.add_line (face_dof_indices[dof]);
+
+                          if (std::abs (dof_values[dof]) > tol)
+                            constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
+                        }
+                  }
+
+          break;
+        }
+
+        case 3:
+        {
+          const unsigned int n_dofs = dof_handler.n_dofs ();
+          hp::QCollection<dim> edge_quadrature_collection;
+
+          for (unsigned int i = 0; i < fe_collection.size (); ++i)
+            {
+              const QGauss<dim - 2>
+                reference_edge_quadrature (2 * fe_collection[i].degree);
+
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                for (unsigned int line = 0; line < GeometryInfo<dim>::lines_per_face; ++line)
+                  edge_quadrature_collection.push_back
+                    (QProjector<dim>::project_to_face
+                     (QProjector<dim - 1>::project_to_face (reference_edge_quadrature, line),
+                      face));
+            }
+
+          hp::FEValues<dim> fe_edge_values (mapping_collection, fe_collection,
+                                            edge_quadrature_collection,
+                                            update_jacobians |
+                                            update_JxW_values |
+                                            update_quadrature_points |
+                                            update_values);
+          std::vector<double> computed_constraints (n_dofs);
+          std::vector<int> projected_dofs (n_dofs);
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof) {
+            computed_constraints[dof] = 0.0;
+            projected_dofs[dof] = -1;
+          }
+
+          for (; cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // if the FE is a
+                                                     // FE_Nothing object
+                                                     // there is no work to
+                                                     // do
+                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
+                      return;
+
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Nedelec
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    const unsigned int superdegree = cell->get_fe ().degree;
+                    const unsigned int degree = superdegree - 1;
+                    const unsigned int dofs_per_face = cell->get_fe ().dofs_per_face;
+
+                    dof_values.resize (dofs_per_face);
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      dof_values[dof] = 0.0;
+
+                    face_dof_indices.resize (dofs_per_face);
+                    cell->face (face)->get_dof_indices (face_dof_indices,
+                                                        cell->active_fe_index ());
+
+                    for (unsigned int line = 0;
+                         line < GeometryInfo<dim>::lines_per_face; ++line)
+                      {
+                        if (projected_dofs[face_dof_indices[line * superdegree]]
+                            <
+                            (int) degree)
+                          {
+                            internals
+                              ::compute_edge_projection (cell, face, line,
+                                                         fe_edge_values,
+                                                         boundary_function,
+                                                         first_vector_component,
+                                                         dof_values);
+
+                            for (unsigned int dof = line * superdegree;
+                                 dof < (line + 1) * superdegree; ++dof)
+                              projected_dofs[face_dof_indices[dof]] = degree;
+                          }
+
+                        else
+                          for (unsigned int dof = line * superdegree;
+                               dof < (line + 1) * superdegree; ++dof)
+                            dof_values[dof] = computed_constraints[face_dof_indices[dof]];
+                      }
+
+                    if (degree > 0)
+                      {
+                        internals
+                          ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
+                                                                     boundary_function,
+                                                                     first_vector_component,
+                                                                     dof_values);
+
+                        for (unsigned int dof = GeometryInfo<dim>::lines_per_face * superdegree;
+                             dof < dofs_per_face; ++dof)
+                          projected_dofs[face_dof_indices[dof]] = degree;
+                      }
+
+                    const double tol = 0.5 * superdegree * 1e-13  / cell->face (face)->diameter ();
+
+                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
+                      if (std::abs (computed_constraints[face_dof_indices[dof]] - dof_values[dof]) > tol)
+                        computed_constraints[face_dof_indices[dof]] = dof_values[dof];
+                  }
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
+              {
+                constraints.add_line (dof);
+                constraints.set_inhomogeneity (dof, computed_constraints[dof]);
+              }
+
+          break;
+        }
+
+        default:
+              Assert (false, ExcNotImplemented ());
+      }
+  }
+
+
+  namespace internals
+  {
+                                     // This function computes the
+                                     // projection of the boundary
+                                     // function on the boundary
+                                     // in 2d.
+    template <typename cell_iterator>
+    void
+    compute_face_projection_div_conforming (const cell_iterator& cell,
+                                            const unsigned int face,
+                                            const FEFaceValues<2>& fe_values,
+                                            const unsigned int first_vector_component,
+                                            const Function<2>& boundary_function,
+                                            const std::vector<DerivativeForm<1,2,2> > & jacobians,
+                                            ConstraintMatrix& constraints)
+    {
+                                       // Compute the intergral over
+                                       // the product of the normal
+                                       // components of the boundary
+                                       // function times the normal
+                                       // components of the shape
+                                       // functions supported on the
+                                       // boundary.
+      const FEValuesExtractors::Vector vec (first_vector_component);
+      const FiniteElement<2>& fe = cell->get_fe ();
+      const std::vector<Point<2> >& normals = fe_values.get_normal_vectors ();
+      const unsigned int
+        face_coordinate_direction[GeometryInfo<2>::faces_per_cell] = {1, 1, 0, 0};
+      std::vector<Vector<double> >
+        values (fe_values.n_quadrature_points, Vector<double> (2));
+      Vector<double> dof_values (fe.dofs_per_face);
+
+                                       // Get the values of the
+                                       // boundary function at the
+                                       // quadrature points.
+      {
+        const std::vector<Point<2> >&
+          quadrature_points = fe_values.get_quadrature_points ();
+
+        boundary_function.vector_value_list (quadrature_points, values);
+      }
+
+      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points; ++q_point)
+        {
+          double tmp = 0.0;
+
+          for (unsigned int d = 0; d < 2; ++d)
+            tmp += normals[q_point][d] * values[q_point] (d);
+
+          tmp *= fe_values.JxW (q_point)
+                 * std::sqrt (jacobians[q_point][0][face_coordinate_direction[face]]
+                              * jacobians[q_point][0][face_coordinate_direction[face]]
+                              + jacobians[q_point][1][face_coordinate_direction[face]]
+                              * jacobians[q_point][1][face_coordinate_direction[face]]);
+
+          for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+            dof_values (i) += tmp * (normals[q_point]
+                                     * fe_values[vec].value (fe.face_to_cell_index (i, face), q_point));
+        }
+
+      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
+
+      cell->face (face)->get_dof_indices (face_dof_indices, cell->active_fe_index ());
+
+                                       // Copy the computed values
+                                       // in the ConstraintMatrix only,
+                                       // if the degree of freedom is
+                                       // not already constrained.
+      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+        if (!(constraints.is_constrained (face_dof_indices[i])))
+          {
+            constraints.add_line (face_dof_indices[i]);
+
+            if (std::abs (dof_values (i)) > 1e-14)
+              constraints.set_inhomogeneity (face_dof_indices[i], dof_values (i));
+          }
+    }
+
+                                     // dummy implementation of above
+                                     // function for all other
+                                     // dimensions
+    template<int dim, typename cell_iterator>
+    void
+    compute_face_projection_div_conforming (const cell_iterator&,
+                                            const unsigned int,
+                                            const FEFaceValues<dim>&,
+                                            const unsigned int,
+                                            const Function<dim>&,
+                                            const std::vector<DerivativeForm<1,dim,dim> >&,
+                                            ConstraintMatrix&)
+    {
+      Assert (false, ExcNotImplemented ());
+    }
+
+                                     // This function computes the
+                                     // projection of the boundary
+                                     // function on the boundary
+                                     // in 3d.
+    template<typename cell_iterator>
+    void
+    compute_face_projection_div_conforming (const cell_iterator& cell,
+                                            const unsigned int face,
+                                            const FEFaceValues<3>& fe_values,
+                                            const unsigned int first_vector_component,
+                                            const Function<3>& boundary_function,
+                                            const std::vector<DerivativeForm<1,3,3> >& jacobians,
+                                            std::vector<double>& dof_values,
+                                            std::vector<unsigned int>& projected_dofs)
+    {
+                                       // Compute the intergral over
+                                       // the product of the normal
+                                       // components of the boundary
+                                       // function times the normal
+                                       // components of the shape
+                                       // functions supported on the
+                                       // boundary.
+      const FEValuesExtractors::Vector vec (first_vector_component);
+      const FiniteElement<3>& fe = cell->get_fe ();
+      const std::vector<Point<3> >& normals = fe_values.get_normal_vectors ();
+      const unsigned int
+        face_coordinate_directions[GeometryInfo<3>::faces_per_cell][2] = {{1, 2},
+                                                                          {1, 2},
+                                                                          {2, 0},
+                                                                          {2, 0},
+                                                                          {0, 1},
+                                                                          {0, 1}};
+      std::vector<Vector<double> >
+        values (fe_values.n_quadrature_points, Vector<double> (3));
+      Vector<double> dof_values_local (fe.dofs_per_face);
+
+      {
+        const std::vector<Point<3> >&
+          quadrature_points = fe_values.get_quadrature_points ();
+
+        boundary_function.vector_value_list (quadrature_points, values);
+      }
+
+      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points; ++q_point)
+        {
+          double tmp = 0.0;
+
+          for (unsigned int d = 0; d < 3; ++d)
+            tmp += normals[q_point][d] * values[q_point] (d);
+
+          tmp *= fe_values.JxW (q_point)
+                 * std::sqrt ((jacobians[q_point][0][face_coordinate_directions[face][0]]
+                               * jacobians[q_point][0][face_coordinate_directions[face][0]]
+                               + jacobians[q_point][1][face_coordinate_directions[face][0]]
+                               * jacobians[q_point][1][face_coordinate_directions[face][0]]
+                               + jacobians[q_point][2][face_coordinate_directions[face][0]]
+                               * jacobians[q_point][2][face_coordinate_directions[face][0]])
+                              * (jacobians[q_point][0][face_coordinate_directions[face][1]]
+                                 * jacobians[q_point][0][face_coordinate_directions[face][1]]
+                                 + jacobians[q_point][1][face_coordinate_directions[face][1]]
+                                 * jacobians[q_point][1][face_coordinate_directions[face][1]]
+                                 + jacobians[q_point][2][face_coordinate_directions[face][1]]
+                                 * jacobians[q_point][2][face_coordinate_directions[face][1]]));
+
+          for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+            dof_values_local (i) += tmp * (normals[q_point]
+                                           * fe_values[vec].value (fe.face_to_cell_index (i, face), q_point));
+        }
+
+      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
+
+      cell->face (face)->get_dof_indices (face_dof_indices, cell->active_fe_index ());
+
+      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+        if (projected_dofs[face_dof_indices[i]] < fe.degree)
+          {
+            dof_values[face_dof_indices[i]] = dof_values_local (i);
+            projected_dofs[face_dof_indices[i]] = fe.degree;
+          }
+    }
+
+                                     // dummy implementation of above
+                                     // function for all other
+                                     // dimensions
+    template<int dim, typename cell_iterator>
+    void
+    compute_face_projection_div_conforming (const cell_iterator&,
+                                            const unsigned int,
+                                            const FEFaceValues<dim>&,
+                                            const unsigned int,
+                                            const Function<dim>&,
+                                            const std::vector<DerivativeForm<1,dim,dim> > &,
+                                            std::vector<double>&,
+                                            std::vector<unsigned int>&)
+    {
+      Assert (false, ExcNotImplemented ());
+    }
+  }
+
+
+  template <int dim>
+  void
+  project_boundary_values_div_conforming (const DoFHandler<dim>& dof_handler,
+                                          const unsigned int first_vector_component,
+                                          const Function<dim>& boundary_function,
+                                          const types::boundary_id boundary_component,
+                                          ConstraintMatrix& constraints,
+                                          const Mapping<dim>& mapping)
+  {
+    const unsigned int spacedim = dim;
+                                     // Interpolate the normal components
+                                     // of the boundary functions. Since
+                                     // the Raviart-Thomas elements are
+                                     // constructed from a Lagrangian
+                                     // basis, it suffices to compute
+                                     // the integral over the product
+                                     // of the normal components of the
+                                     // boundary function times the
+                                     // normal components of the shape
+                                     // functions supported on the
+                                     // boundary.
+    const FiniteElement<dim>& fe = dof_handler.get_fe ();
+    QGauss<dim - 1> face_quadrature (fe.degree + 1);
+    FEFaceValues<dim> fe_face_values (mapping, fe, face_quadrature, update_JxW_values |
+                                      update_normal_vectors |
+                                      update_quadrature_points |
+                                      update_values);
+    hp::FECollection<dim> fe_collection (fe);
+    hp::MappingCollection<dim> mapping_collection (mapping);
+    hp::QCollection<dim> quadrature_collection;
+
+    for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+      quadrature_collection.push_back (QProjector<dim>::project_to_face (face_quadrature,
+                                                                         face));
+
+    hp::FEValues<dim> fe_values (mapping_collection, fe_collection, quadrature_collection,
+                                 update_jacobians);
+
+    switch (dim)
+      {
+        case 2:
+        {
+          for (typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+               cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // if the FE is a
+                                                     // FE_Nothing object
+                                                     // there is no work to
+                                                     // do
+                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
+                      return;
+
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Raviart-Thomas
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    fe_values.reinit (cell, face + cell->active_fe_index ()
+                                      * GeometryInfo<dim>::faces_per_cell);
+
+                    const std::vector<DerivativeForm<1,dim,spacedim> > &
+                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
+
+                    fe_face_values.reinit (cell, face);
+                    internals::compute_face_projection_div_conforming (cell, face,
+                                                                       fe_face_values,
+                                                                       first_vector_component,
+                                                                       boundary_function,
+                                                                       jacobians,
+                                                                       constraints);
+                  }
+
+          break;
+        }
+
+        case 3:
+        {
+                                           // In three dimensions the
+                                           // edges between two faces
+                                           // are treated twice.
+                                           // Therefore we store the
+                                           // computed values in a
+                                           // vector and copy them over
+                                           // in the ConstraintMatrix
+                                           // after all values have been
+                                           // computed.
+                                           // If we have two values for
+                                           // one edge, we choose the one,
+                                           // which was computed with the
+                                           // higher order element.
+                                           // If both elements are of the
+                                           // same order, we just keep the
+                                           // first value and do not
+                                           // compute a second one.
+          const unsigned int& n_dofs = dof_handler.n_dofs ();
+          std::vector<double> dof_values (n_dofs);
+          std::vector<unsigned int> projected_dofs (n_dofs);
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            projected_dofs[dof] = 0;
+
+          for (typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+               cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Raviart-Thomas
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    fe_values.reinit (cell, face + cell->active_fe_index ()
+                                      * GeometryInfo<dim>::faces_per_cell);
+
+                    const std::vector<DerivativeForm<1,dim ,spacedim> >&
+                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
+
+                    fe_face_values.reinit (cell, face);
+                    internals::compute_face_projection_div_conforming (cell, face,
+                                                                       fe_face_values,
+                                                                       first_vector_component,
+                                                                       boundary_function,
+                                                                       jacobians, dof_values,
+                                                                       projected_dofs);
+                  }
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            if ((projected_dofs[dof] != 0) && !(constraints.is_constrained (dof)))
+              {
+                constraints.add_line (dof);
+
+                if (std::abs (dof_values[dof]) > 1e-14)
+                  constraints.set_inhomogeneity (dof, dof_values[dof]);
+              }
+
+          break;
+        }
+
+        default:
+              Assert (false, ExcNotImplemented ());
+      }
+  }
+
+
+  template <int dim>
+  void
+  project_boundary_values_div_conforming (const hp::DoFHandler<dim>& dof_handler,
+                                          const unsigned int first_vector_component,
+                                          const Function<dim>& boundary_function,
+                                          const types::boundary_id boundary_component,
+                                          ConstraintMatrix& constraints,
+                                          const hp::MappingCollection<dim, dim>& mapping_collection)
+  {
+    const unsigned int spacedim = dim;
+    const hp::FECollection<dim>& fe_collection = dof_handler.get_fe ();
+    hp::QCollection<dim - 1> face_quadrature_collection;
+    hp::QCollection<dim> quadrature_collection;
+
+    for (unsigned int i = 0; i < fe_collection.size (); ++i)
+      {
+        const QGauss<dim - 1> quadrature (fe_collection[i].degree + 1);
+
+        face_quadrature_collection.push_back (quadrature);
+
+        for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+          quadrature_collection.push_back (QProjector<dim>::project_to_face (quadrature,
+                                                                             face));
+      }
+
+    hp::FEFaceValues<dim> fe_face_values (mapping_collection, fe_collection,
+                                          face_quadrature_collection, update_JxW_values |
+                                          update_normal_vectors |
+                                          update_quadrature_points |
+                                          update_values);
+    hp::FEValues<dim> fe_values (mapping_collection, fe_collection, quadrature_collection,
+                                 update_jacobians);
+
+    switch (dim)
+      {
+        case 2:
+        {
+          for (typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+               cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Raviart-Thomas
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    fe_values.reinit (cell, face + cell->active_fe_index ()
+                                      * GeometryInfo<dim>::faces_per_cell);
+
+                    const std::vector<DerivativeForm<1,dim,spacedim> > &
+                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
+
+                    fe_face_values.reinit (cell, face);
+                    internals::compute_face_projection_div_conforming (cell, face,
+                                                                       fe_face_values.get_present_fe_values (),
+                                                                       first_vector_component,
+                                                                       boundary_function,
+                                                                       jacobians,
+                                                                       constraints);
+                  }
+
+          break;
+        }
+
+        case 3:
+        {
+          const unsigned int& n_dofs = dof_handler.n_dofs ();
+          std::vector<double> dof_values (n_dofs);
+          std::vector<unsigned int> projected_dofs (n_dofs);
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            projected_dofs[dof] = 0;
+
+          for (typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
+               cell != dof_handler.end (); ++cell)
+            if (cell->at_boundary ())
+              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
+                if (cell->face (face)->boundary_indicator () == boundary_component)
+                  {
+                                                     // This is only
+                                                     // implemented, if the
+                                                     // FE is a Raviart-Thomas
+                                                     // element. If the FE is
+                                                     // a FESystem we cannot
+                                                     // check this.
+                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
+                      {
+                        typedef FiniteElement<dim> FEL;
+
+                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
+                                     typename FEL::ExcInterpolationNotImplemented ());
+                      }
+
+                    fe_values.reinit (cell, face + cell->active_fe_index ()
+                                      * GeometryInfo<dim>::faces_per_cell);
+
+                    const std::vector<DerivativeForm<1,dim,spacedim> > &
+                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
+
+                    fe_face_values.reinit (cell, face);
+                    internals::compute_face_projection_div_conforming (cell, face,
+                                                                       fe_face_values.get_present_fe_values (),
+                                                                       first_vector_component,
+                                                                       boundary_function,
+                                                                       jacobians, dof_values,
+                                                                       projected_dofs);
+                  }
+
+          for (unsigned int dof = 0; dof < n_dofs; ++dof)
+            if ((projected_dofs[dof] != 0) && !(constraints.is_constrained (dof)))
+              {
+                constraints.add_line (dof);
+
+                if (std::abs (dof_values[dof]) > 1e-14)
+                  constraints.set_inhomogeneity (dof, dof_values[dof]);
+              }
+
+          break;
+        }
+
+        default:
+              Assert (false, ExcNotImplemented ());
+      }
+  }
+
+
+
+  template <int dim, template <int, int> class DH, int spacedim>
+  void
+  compute_no_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
+                                      const unsigned int     first_vector_component,
+                                      const std::set<types::boundary_id> &boundary_ids,
+                                      ConstraintMatrix      &constraints,
+                                      const Mapping<dim, spacedim>    &mapping)
+  {
+    Assert (dim > 1,
+            ExcMessage ("This function is not useful in 1d because it amounts "
+                        "to imposing Dirichlet values on the vector-valued "
+                        "quantity."));
+
+    std::vector<unsigned int> face_dofs;
+
+                                     // create FE and mapping
+                                     // collections for all elements in
+                                     // use by this DoFHandler
+    hp::FECollection<dim,spacedim>      fe_collection (dof_handler.get_fe());
+    hp::MappingCollection<dim,spacedim> mapping_collection;
+    for (unsigned int i=0; i<fe_collection.size(); ++i)
+      mapping_collection.push_back (mapping);
+
+                                     // now also create a quadrature
+                                     // collection for the faces of a
+                                     // cell. fill it with a quadrature
+                                     // formula with the support points
+                                     // on faces for each FE
+    hp::QCollection<dim-1> face_quadrature_collection;
+    for (unsigned int i=0; i<fe_collection.size(); ++i)
+      {
+        const std::vector<Point<dim-1> > &
+          unit_support_points = fe_collection[i].get_unit_face_support_points();
+
+        Assert (unit_support_points.size() == fe_collection[i].dofs_per_face,
+                ExcInternalError());
+
+        face_quadrature_collection
+          .push_back (Quadrature<dim-1> (unit_support_points));
+      }
+
+                                     // now create the object with which
+                                     // we will generate the normal
+                                     // vectors
+    hp::FEFaceValues<dim,spacedim> x_fe_face_values (mapping_collection,
+                                                     fe_collection,
+                                                     face_quadrature_collection,
+                                                     update_q_points);
+
+                                     // have a map that stores normal
+                                     // vectors for each vector-dof
+                                     // tuple we want to
+                                     // constrain. since we can get at
+                                     // the same vector dof tuple more
+                                     // than once (for example if it is
+                                     // located at a vertex that we
+                                     // visit from all adjacent cells),
+                                     // we will want to average later on
+                                     // the normal vectors computed on
+                                     // different cells as described in
+                                     // the documentation of this
+                                     // function. however, we can only
+                                     // average if the contributions
+                                     // came from different cells,
+                                     // whereas we want to constrain
+                                     // twice or more in case the
+                                     // contributions came from
+                                     // different faces of the same cell
+                                     // (i.e. constrain not just the
+                                     // *average normal direction* but
+                                     // *all normal directions* we
+                                     // find). consequently, we also
+                                     // have to store which cell a
+                                     // normal vector was computed on
+    typedef
+      std::multimap<internal::VectorDoFTuple<dim>,
+      std::pair<Tensor<1,dim>, typename DH<dim,spacedim>::active_cell_iterator> >
+      DoFToNormalsMap;
+
+    DoFToNormalsMap dof_to_normals_map;
+
+                                     // now loop over all cells and all faces
+    typename DH<dim,spacedim>::active_cell_iterator
+      cell = dof_handler.begin_active(),
+      endc = dof_handler.end();
+    for (; cell!=endc; ++cell)
+      if (!cell->is_artificial())
+        for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
+             ++face_no)
+          if (boundary_ids.find(cell->face(face_no)->boundary_indicator())
+              != boundary_ids.end())
+            {
+              const FiniteElement<dim>& fe = cell->get_fe ();
+              typename DH<dim,spacedim>::face_iterator face = cell->face(face_no);
+
+                                               // get the indices of the
+                                               // dofs on this cell...
+              face_dofs.resize (fe.dofs_per_face);
+              face->get_dof_indices (face_dofs, cell->active_fe_index());
+
+              x_fe_face_values.reinit (cell, face_no);
+              const FEFaceValues<dim> &fe_values = x_fe_face_values.get_present_fe_values();
+
+                                               // then identify which of
+                                               // them correspond to the
+                                               // selected set of vector
+                                               // components
+              for (unsigned int i=0; i<face_dofs.size(); ++i)
+                if (fe.face_system_to_component_index(i).first ==
+                    first_vector_component)
+                  {
+                                                     // find corresponding other
+                                                     // components of vector
+                    internal::VectorDoFTuple<dim> vector_dofs;
+                    vector_dofs.dof_indices[0] = face_dofs[i];
+
+                    for (unsigned int k=0; k<fe.dofs_per_face; ++k)
+                      if ((k != i)
+                          &&
+                          (face_quadrature_collection[cell->active_fe_index()].point(k) ==
+                           face_quadrature_collection[cell->active_fe_index()].point(i))
+                          &&
+                          (fe.face_system_to_component_index(k).first >=
+                           first_vector_component)
+                          &&
+                          (fe.face_system_to_component_index(k).first <
+                           first_vector_component + dim))
+                        vector_dofs.dof_indices[fe.face_system_to_component_index(k).first -
+                                                first_vector_component]
+                          = face_dofs[k];
+
+                    for (unsigned int d=0; d<dim; ++d)
+                      Assert (vector_dofs.dof_indices[d] < dof_handler.n_dofs(),
+                              ExcInternalError());
+
+                                                     // we need the normal
+                                                     // vector on this face. we
+                                                     // know that it is a vector
+                                                     // of length 1 but at least
+                                                     // with higher order
+                                                     // mappings it isn't always
+                                                     // possible to guarantee
+                                                     // that each component is
+                                                     // exact up to zero
+                                                     // tolerance. in
+                                                     // particular, as shown in
+                                                     // the deal.II/no_flux_06
+                                                     // test, if we just take
+                                                     // the normal vector as
+                                                     // given by the fe_values
+                                                     // object, we can get
+                                                     // entries in the normal
+                                                     // vectors of the unit cube
+                                                     // that have entries up to
+                                                     // several times 1e-14.
+                                                     //
+                                                     // the problem with this is
+                                                     // that this later yields
+                                                     // constraints that are
+                                                     // circular (e.g., in the
+                                                     // testcase, we get
+                                                     // constraints of the form
+                                                     //
+                                                     // x22 =  2.93099e-14*x21 + 2.93099e-14*x23
+                                                     // x21 = -2.93099e-14*x22 + 2.93099e-14*x21
+                                                     //
+                                                     // in both of these
+                                                     // constraints, the small
+                                                     // numbers should be zero
+                                                     // and the constraints
+                                                     // should simply be
+                                                     //    x22 = x21 = 0
+                                                     //
+                                                     // to achieve this, we
+                                                     // utilize that we know
+                                                     // that the normal vector
+                                                     // has (or should have)
+                                                     // length 1 and that we can
+                                                     // simply set small
+                                                     // elements to zero
+                                                     // (without having to check
+                                                     // that they are small
+                                                     // *relative to something
+                                                     // else*). we do this and
+                                                     // then normalize the
+                                                     // length of the vector
+                                                     // back to one, just to be
+                                                     // on the safe side
+                    Point<dim> normal_vector
+                      = (cell->face(face_no)->get_boundary()
+                         .normal_vector (cell->face(face_no),
+                                         fe_values.quadrature_point(i)));
+                    Assert (std::fabs(normal_vector.norm() - 1) < 1e-14,
+                            ExcInternalError());
+                    for (unsigned int d=0; d<dim; ++d)
+                      if (std::fabs(normal_vector[d]) < 1e-13)
+                        normal_vector[d] = 0;
+                    normal_vector /= normal_vector.norm();
+
+                                                     // now enter the
+                                                     // (dofs,(normal_vector,cell))
+                                                     // entry into the map
+                    dof_to_normals_map
+                      .insert (std::make_pair (vector_dofs,
+                                               std::make_pair (normal_vector,
+                                                               cell)));
+                  }
+            }
+
+                                     // Now do something with the
+                                     // collected information. To this
+                                     // end, loop through all sets of
+                                     // pairs (dofs,normal_vector) and
+                                     // identify which entries belong to
+                                     // the same set of dofs and then do
+                                     // as described in the
+                                     // documentation, i.e. either
+                                     // average the normal vector or
+                                     // don't for this particular set of
+                                     // dofs
+    typename DoFToNormalsMap::const_iterator
+      p = dof_to_normals_map.begin();
+
+    while (p != dof_to_normals_map.end())
+      {
+                                         // first find the range of entries in
+                                         // the multimap that corresponds to the
+                                         // same vector-dof tuple. as usual, we
+                                         // define the range half-open. the
+                                         // first entry of course is 'p'
+        typename DoFToNormalsMap::const_iterator same_dof_range[2]
+          = { p };
+        for (++p; p != dof_to_normals_map.end(); ++p)
+          if (p->first != same_dof_range[0]->first)
+            {
+              same_dof_range[1] = p;
+              break;
+            }
+        if (p == dof_to_normals_map.end())
+          same_dof_range[1] = dof_to_normals_map.end();
+
+                                         // now compute the reverse mapping: for
+                                         // each of the cells that contributed
+                                         // to the current set of vector dofs,
+                                         // add up the normal vectors. the
+                                         // values of the map are pairs of
+                                         // normal vectors and number of cells
+                                         // that have contributed
+        typedef
+          std::map
+          <typename DH<dim,spacedim>::active_cell_iterator,
+          std::pair<Tensor<1,dim>, unsigned int> >
+          CellToNormalsMap;
+
+        CellToNormalsMap cell_to_normals_map;
+        for (typename DoFToNormalsMap::const_iterator
+               q = same_dof_range[0];
+             q != same_dof_range[1]; ++q)
+          if (cell_to_normals_map.find (q->second.second)
+              == cell_to_normals_map.end())
+            cell_to_normals_map[q->second.second]
+              = std::make_pair (q->second.first, 1U);
+          else
+            {
+              const Tensor<1,dim> old_normal
+                = cell_to_normals_map[q->second.second].first;
+              const unsigned int old_count
+                = cell_to_normals_map[q->second.second].second;
+
+              Assert (old_count > 0, ExcInternalError());
+
+                                               // in the same entry,
+                                               // store again the now
+                                               // averaged normal vector
+                                               // and the new count
+              cell_to_normals_map[q->second.second]
+                = std::make_pair ((old_normal * old_count + q->second.first) / (old_count + 1),
+                                  old_count + 1);
+            }
+
+        Assert (cell_to_normals_map.size() >= 1, ExcInternalError());
+
+                                         // count the maximum number of
+                                         // contributions from each cell
+        unsigned int max_n_contributions_per_cell = 1;
+        for (typename CellToNormalsMap::const_iterator
+               x = cell_to_normals_map.begin();
+             x != cell_to_normals_map.end(); ++x)
+          max_n_contributions_per_cell
+            = std::max (max_n_contributions_per_cell,
+                        x->second.second);
+
+                                         // verify that each cell can have only
+                                         // contributed at most dim times, since
+                                         // that is the maximum number of faces
+                                         // that come together at a single place
+        Assert (max_n_contributions_per_cell <= dim, ExcInternalError());
+
+        switch (max_n_contributions_per_cell)
+          {
+                                             // first deal with the case that a
+                                             // number of cells all have
+                                             // registered that they have a
+                                             // normal vector defined at the
+                                             // location of a given vector dof,
+                                             // and that each of them have
+                                             // encountered this vector dof
+                                             // exactly once while looping over
+                                             // all their faces. as stated in
+                                             // the documentation, this is the
+                                             // case where we want to simply
+                                             // average over all normal vectors
+            case 1:
+            {
+
+                                               // compute the average
+                                               // normal vector from all
+                                               // the ones that have the
+                                               // same set of dofs. we
+                                               // could add them up and
+                                               // divide them by the
+                                               // number of additions,
+                                               // or simply normalize
+                                               // them right away since
+                                               // we want them to have
+                                               // unit length anyway
+              Tensor<1,dim> normal;
+              for (typename CellToNormalsMap::const_iterator
+                     x = cell_to_normals_map.begin();
+                   x != cell_to_normals_map.end(); ++x)
+                normal += x->second.first;
+              normal /= normal.norm();
+
+                                               // normalize again
+              for (unsigned int d=0; d<dim; ++d)
+                if (std::fabs(normal[d]) < 1e-13)
+                  normal[d] = 0;
+              normal /= normal.norm();
+
+                                               // then construct constraints
+                                               // from this:
+              const internal::VectorDoFTuple<dim> &
+                dof_indices = same_dof_range[0]->first;
+              internal::add_constraint (dof_indices, normal,
+                                        constraints);
+
+              break;
+            }
+
+
+                                             // this is the slightly
+                                             // more complicated case
+                                             // that a single cell has
+                                             // contributed with exactly
+                                             // DIM normal vectors to
+                                             // the same set of vector
+                                             // dofs. this is what
+                                             // happens in a corner in
+                                             // 2d and 3d (but not on an
+                                             // edge in 3d, where we
+                                             // have only 2, i.e. <DIM,
+                                             // contributions. Here we
+                                             // do not want to average
+                                             // the normal
+                                             // vectors. Since we have
+                                             // DIM contributions, let's
+                                             // assume (and verify) that
+                                             // they are in fact all
+                                             // linearly independent; in
+                                             // that case, all vector
+                                             // components are
+                                             // constrained and we need
+                                             // to set them to zero
+            case dim:
+            {
+                                               // assert that indeed
+                                               // only a single cell has
+                                               // contributed
+              Assert (cell_to_normals_map.size() == 1,
+                      ExcInternalError());
+
+                                               // check linear
+                                               // independence by
+                                               // computing the
+                                               // determinant of the
+                                               // matrix created from
+                                               // all the normal
+                                               // vectors. if they are
+                                               // linearly independent,
+                                               // then the determinant
+                                               // is nonzero. if they
+                                               // are orthogonal, then
+                                               // the matrix is in fact
+                                               // equal to 1 (since they
+                                               // are all unit vectors);
+                                               // make sure the
+                                               // determinant is larger
+                                               // than 1e-3 to avoid
+                                               // cases where cells are
+                                               // degenerate
+              {
+                Tensor<2,dim> t;
+
+                typename DoFToNormalsMap::const_iterator x = same_dof_range[0];
+                for (unsigned int i=0; i<dim; ++i, ++x)
+                  for (unsigned int j=0; j<dim; ++j)
+                    t[i][j] = x->second.first[j];
+
+                Assert (std::fabs(determinant (t)) > 1e-3,
+                        ExcMessage("Found a set of normal vectors that are nearly collinear."));
+              }
+
+                                               // so all components of
+                                               // this vector dof are
+                                               // constrained. enter
+                                               // this into the
+                                               // constraint matrix
+                                               //
+                                               // ignore dofs already
+                                               // constrained
+              for (unsigned int i=0; i<dim; ++i)
+                if (!constraints.is_constrained (same_dof_range[0]
+                                                 ->first.dof_indices[i])
+                    &&
+                    constraints.can_store_line(
+                      same_dof_range[0]->first.dof_indices[i]))
+                  {
+                    constraints.add_line (same_dof_range[0]->first.dof_indices[i]);
+                                                     // no add_entries here
+                  }
+
+              break;
+            }
+
+
+                                             // this is the case of an
+                                             // edge contribution in 3d,
+                                             // i.e. the vector is
+                                             // constrained in two
+                                             // directions but not the
+                                             // third.
+            default:
+            {
+              Assert (dim >= 3, ExcNotImplemented());
+              Assert (max_n_contributions_per_cell == 2, ExcInternalError());
+
+                                               // as described in the
+                                               // documentation, let us
+                                               // first collect what
+                                               // each of the cells
+                                               // contributed at the
+                                               // current point. we use
+                                               // a std::list instead of
+                                               // a std::set (which
+                                               // would be more natural)
+                                               // because std::set
+                                               // requires that the
+                                               // stored elements are
+                                               // comparable with
+                                               // operator<
+              typedef
+                std::map<typename DH<dim,spacedim>::active_cell_iterator, std::list<Tensor<1,dim> > >
+                CellContributions;
+              CellContributions cell_contributions;
+
+              for (typename DoFToNormalsMap::const_iterator
+                     q = same_dof_range[0];
+                   q != same_dof_range[1]; ++q)
+                cell_contributions[q->second.second].push_back (q->second.first);
+              Assert (cell_contributions.size() >= 1, ExcInternalError());
+
+                                               // now for each cell that
+                                               // has contributed
+                                               // determine the number
+                                               // of normal vectors it
+                                               // has contributed. we
+                                               // currently only
+                                               // implement if this is
+                                               // dim-1 for all cells
+                                               // (if a single cell has
+                                               // contributed dim, or if
+                                               // all adjacent cells
+                                               // have contributed 1
+                                               // normal vector, this is
+                                               // already handled above)
+                                               //
+                                               // for each contributing
+                                               // cell compute the
+                                               // tangential vector that
+                                               // remains unconstrained
+              std::list<Tensor<1,dim> > tangential_vectors;
+              for (typename CellContributions::const_iterator
+                     contribution = cell_contributions.begin();
+                   contribution != cell_contributions.end();
+                   ++contribution)
+                {
+                  Assert (contribution->second.size() == dim-1, ExcNotImplemented());
+
+                  Tensor<1,dim> normals[dim-1];
+                  {
+                    unsigned int index=0;
+                    for (typename std::list<Tensor<1,dim> >::const_iterator
+                           t = contribution->second.begin();
+                         t != contribution->second.end();
+                         ++t, ++index)
+                      normals[index] = *t;
+                    Assert (index == dim-1, ExcInternalError());
+                  }
+
+                                                   // calculate the
+                                                   // tangent as the
+                                                   // outer product of
+                                                   // the normal
+                                                   // vectors. since
+                                                   // these vectors do
+                                                   // not need to be
+                                                   // orthogonal (think,
+                                                   // for example, the
+                                                   // case of the
+                                                   // deal.II/no_flux_07
+                                                   // test: a sheared
+                                                   // cube in 3d, with
+                                                   // Q2 elements, where
+                                                   // we have
+                                                   // constraints from
+                                                   // the two normal
+                                                   // vectors of two
+                                                   // faces of the
+                                                   // sheared cube that
+                                                   // are not
+                                                   // perpendicular to
+                                                   // each other), we
+                                                   // have to normalize
+                                                   // the outer product
+                  Tensor<1,dim> tangent;
+                  switch (dim)
+                    {
+                      case 3:
+                                                             // take
+                                                             // cross
+                                                             // product
+                                                             // between
+                                                             // normals[0]
+                                                             // and
+                                                             // normals[1]. write
+                                                             // it in
+                                                             // the
+                                                             // current
+                                                             // form
+                                                             // (with
+                                                             // [dim-2])
+                                                             // to make
+                                                             // sure
+                                                             // that
+                                                             // compilers
+                                                             // don't
+                                                             // warn
+                                                             // about
+                                                             // out-of-bounds
+                                                             // accesses
+                                                             // -- the
+                                                             // warnings
+                                                             // are
+                                                             // bogus
+                                                             // since we
+                                                             // get here
+                                                             // only for
+                                                             // dim==3,
+                                                             // but at
+                                                             // least
+                                                             // one
+                                                             // isn't
+                                                             // quite
+                                                             // smart
+                                                             // enough
+                                                             // to
+                                                             // notice
+                                                             // this and
+                                                             // warns
+                                                             // when
+                                                             // compiling
+                                                             // the
+                                                             // function
+                                                             // in 2d
+                            cross_product (tangent, normals[0], normals[dim-2]);
+                            break;
+                      default:
+                            Assert (false, ExcNotImplemented());
+                    }
+
+                  Assert (std::fabs (tangent.norm()) > 1e-12,
+                          ExcMessage("Two normal vectors from adjacent faces are almost "
+                                     "parallel."));
+                  tangent /= tangent.norm();
+
+                  tangential_vectors.push_back (tangent);
+                }
+
+                                               // go through the list of
+                                               // tangents and make sure
+                                               // that they all roughly
+                                               // point in the same
+                                               // direction as the first
+                                               // one (i.e. have an
+                                               // angle less than 90
+                                               // degrees); if they
+                                               // don't then flip their
+                                               // sign
+              {
+                const Tensor<1,dim> first_tangent = tangential_vectors.front();
+                typename std::list<Tensor<1,dim> >::iterator
+                  t = tangential_vectors.begin();
+                ++t;
+                for (; t != tangential_vectors.end(); ++t)
+                  if (*t * first_tangent < 0)
+                    *t *= -1;
+              }
+
+                                               // now compute the
+                                               // average tangent and
+                                               // normalize it
+              Tensor<1,dim> average_tangent;
+              for (typename std::list<Tensor<1,dim> >::const_iterator
+                     t = tangential_vectors.begin();
+                   t != tangential_vectors.end();
+                   ++t)
+                average_tangent += *t;
+              average_tangent /= average_tangent.norm();
+
+                                               // now all that is left
+                                               // is that we add the
+                                               // constraints that the
+                                               // vector is parallel
+                                               // to the tangent
+              const internal::VectorDoFTuple<dim> &
+                dof_indices = same_dof_range[0]->first;
+             internal::add_tangentiality_constraints (dof_indices,
+                                                      average_tangent,
+                                                      constraints);
+            }
+          }
+      }
+  }
+
+
+
+  namespace internal
+  {
+    template <int dim, class InVector, class OutVector, class DH, int spacedim>
+    static
+    void
+    do_integrate_difference (const dealii::hp::MappingCollection<dim,spacedim>    &mapping,
+                             const DH              &dof,
+                             const InVector        &fe_function,
+                             const Function<spacedim>   &exact_solution,
+                             OutVector             &difference,
+                             const dealii::hp::QCollection<dim> &q,
+                             const NormType &norm,
+                             const Function<spacedim>   *weight,
+                             const double           exponent_1)
+    {
+                                       // we mark the "exponent" parameter
+                                       // to this function "const" since
+                                       // it is strictly incoming, but we
+                                       // need to set it to something
+                                       // different later on, if
+                                       // necessary, so have a read-write
+                                       // version of it:
+      double exponent = exponent_1;
+
+      const unsigned int        n_components = dof.get_fe().n_components();
+      const bool                fe_is_system = (n_components != 1);
+
+      if (weight!=0)
+        {
+          Assert ((weight->n_components==1) || (weight->n_components==n_components),
+                  ExcDimensionMismatch(weight->n_components, n_components));
+        }
+
+      difference.reinit (dof.get_tria().n_active_cells());
+
+      switch (norm)
+        {
+          case L2_norm:
+          case H1_seminorm:
+          case H1_norm:
+                exponent = 2.;
+                break;
+          case L1_norm:
+                exponent = 1.;
+                break;
+          default:
+                break;
+        }
+
+      UpdateFlags update_flags = UpdateFlags (update_quadrature_points  |
+                                              update_JxW_values);
+      switch (norm)
+        {
+          case H1_seminorm:
+          case W1p_seminorm:
+          case W1infty_seminorm:
+                update_flags |= UpdateFlags (update_gradients);
+                if(spacedim == dim+1) update_flags |= UpdateFlags (update_normal_vectors);
+
+                break;
+          case H1_norm:
+          case W1p_norm:
+          case W1infty_norm:
+                update_flags |= UpdateFlags (update_gradients);
+                if(spacedim == dim+1) update_flags |= UpdateFlags (update_normal_vectors);
+                                                 // no break!
+          default:
+                update_flags |= UpdateFlags (update_values);
+                break;
+        }
+
+      dealii::hp::FECollection<dim,spacedim> fe_collection (dof.get_fe());
+      dealii::hp::FEValues<dim,spacedim> x_fe_values(mapping, fe_collection, q, update_flags);
+
+      const unsigned int max_n_q_points = q.max_n_quadrature_points ();
+
+      std::vector< dealii::Vector<double> >
+        function_values (max_n_q_points, dealii::Vector<double>(n_components));
+      std::vector<std::vector<Tensor<1,spacedim> > >
+        function_grads (max_n_q_points, std::vector<Tensor<1,spacedim> >(n_components));
+
+      std::vector<double>
+        weight_values (max_n_q_points);
+      std::vector<dealii::Vector<double> >
+        weight_vectors (max_n_q_points, dealii::Vector<double>(n_components));
+
+      std::vector<dealii::Vector<double> >
+        psi_values (max_n_q_points, dealii::Vector<double>(n_components));
+      std::vector<std::vector<Tensor<1,spacedim> > >
+        psi_grads (max_n_q_points, std::vector<Tensor<1,spacedim> >(n_components));
+      std::vector<double>
+        psi_scalar (max_n_q_points);
+
+                                       // tmp vector when we use the
+                                       // Function<spacedim> functions for
+                                       // scalar functions
+      std::vector<double>         tmp_values (max_n_q_points);
+      std::vector<Tensor<1,spacedim> > tmp_gradients (max_n_q_points);
+
+                                       // loop over all cells
+      typename DH::active_cell_iterator cell = dof.begin_active(),
+                                        endc = dof.end();
+      for (unsigned int index=0; cell != endc; ++cell, ++index)
+        if (cell->is_locally_owned())
+          {
+            double diff=0;
+                                             // initialize for this cell
+            x_fe_values.reinit (cell);
+
+            const dealii::FEValues<dim, spacedim> &fe_values  = x_fe_values.get_present_fe_values ();
+            const unsigned int   n_q_points = fe_values.n_quadrature_points;
+
+                                             // resize all out scratch
+                                             // arrays to the number of
+                                             // quadrature points we use
+                                             // for the present cell
+            function_values.resize (n_q_points,
+                                    dealii::Vector<double>(n_components));
+            function_grads.resize (n_q_points,
+                                   std::vector<Tensor<1,spacedim> >(n_components));
+
+            weight_values.resize (n_q_points);
+            weight_vectors.resize (n_q_points,
+                                   dealii::Vector<double>(n_components));
+
+            psi_values.resize (n_q_points,
+                               dealii::Vector<double>(n_components));
+            psi_grads.resize (n_q_points,
+                              std::vector<Tensor<1,spacedim> >(n_components));
+            psi_scalar.resize (n_q_points);
+
+            tmp_values.resize (n_q_points);
+            tmp_gradients.resize (n_q_points);
+
+            if (weight!=0)
+              {
+                if (weight->n_components>1)
+                  weight->vector_value_list (fe_values.get_quadrature_points(),
+                                             weight_vectors);
+                else
+                  {
+                    weight->value_list (fe_values.get_quadrature_points(),
+                                        weight_values);
+                    for (unsigned int k=0;k<n_q_points;++k)
+                      weight_vectors[k] = weight_values[k];
+                  }
+              }
+            else
+              {
+                for (unsigned int k=0;k<n_q_points;++k)
+                  weight_vectors[k] = 1.;
+              }
+
+
+            if (update_flags & update_values)
+              {
+                                                 // first compute the exact solution
+                                                 // (vectors) at the quadrature points
+                                                 // try to do this as efficient as
+                                                 // possible by avoiding a second
+                                                 // virtual function call in case
+                                                 // the function really has only
+                                                 // one component
+                if (fe_is_system)
+                  exact_solution.vector_value_list (fe_values.get_quadrature_points(),
+                                                    psi_values);
+                else
+                  {
+                    exact_solution.value_list (fe_values.get_quadrature_points(),
+                                               tmp_values);
+                    for (unsigned int i=0; i<n_q_points; ++i)
+                      psi_values[i](0) = tmp_values[i];
+                  }
+
+                                                 // then subtract finite element
+                                                 // fe_function
+                fe_values.get_function_values (fe_function, function_values);
+                for (unsigned int q=0; q<n_q_points; ++q)
+                  psi_values[q] -= function_values[q];
+              }
+
+                                             // Do the same for gradients, if required
+            if (update_flags & update_gradients)
+              {
+                                                 // try to be a little clever
+                                                 // to avoid recursive virtual
+                                                 // function calls when calling
+                                                 // gradient_list for functions
+                                                 // that are really scalar
+                                                 // functions
+                if (fe_is_system)
+                  exact_solution.vector_gradient_list (fe_values.get_quadrature_points(),
+                                                       psi_grads);
+                else
+                  {
+                    exact_solution.gradient_list (fe_values.get_quadrature_points(),
+                                                  tmp_gradients);
+                    for (unsigned int i=0; i<n_q_points; ++i)
+                      psi_grads[i][0] = tmp_gradients[i];
+                  }
+
+                                                 // then subtract finite element
+                                                 // function_grads. We
+                                                 // need to be careful
+                                                 // in the codimension
+                                                 // one case, since
+                                                 // there we only have
+                                                 // tangential gradients
+                                                 // in the finite
+                                                 // element function,
+                                                 // not the full
+                                                 // gradient. This is
+                                                 // taken care of, by
+                                                 // subtracting the
+                                                 // normal component of
+                                                 // the gradient from
+                                                 // the exact function.
+                fe_values.get_function_grads (fe_function, function_grads);
+                if(update_flags & update_normal_vectors)
+                  for (unsigned int k=0; k<n_components; ++k)
+                    for (unsigned int q=0; q<n_q_points; ++q)
+                      psi_grads[q][k] -= (function_grads[q][k] +
+                                          (psi_grads[q][k]* // (f.n) n
+                                           fe_values.normal_vector(q))*
+                                          fe_values.normal_vector(q));
+                else
+                  for (unsigned int k=0; k<n_components; ++k)
+                    for (unsigned int q=0; q<n_q_points; ++q)
+                      psi_grads[q][k] -= function_grads[q][k];
+              }
+
+            switch (norm)
+              {
+                case mean:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                                                       // Compute values in
+                                                       // quadrature points
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          psi_scalar[q] += psi_values[q](k)
+                                           * weight_vectors[q](k);
+
+                                                       // Integrate
+                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
+                                                 fe_values.get_JxW_values().begin(),
+                                                 0.0);
+                      break;
+                case Lp_norm:
+                case L1_norm:
+                case W1p_norm:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                                                       // Compute values in
+                                                       // quadrature points
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          psi_scalar[q] += std::pow(psi_values[q](k)*psi_values[q](k),
+                                                    exponent/2.)
+                                           * weight_vectors[q](k);
+
+                                                       // Integrate
+                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
+                                                 fe_values.get_JxW_values().begin(),
+                                                 0.0);
+                                                       // Compute the root only,
+                                                       // if no derivative
+                                                       // values are added later
+                      if (!(update_flags & update_gradients))
+                        diff = std::pow(diff, 1./exponent);
+                      break;
+                case L2_norm:
+                case H1_norm:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                                                       // Compute values in
+                                                       // quadrature points
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          psi_scalar[q] += psi_values[q](k)*psi_values[q](k)
+                                           * weight_vectors[q](k);
+
+                                                       // Integrate
+                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
+                                                 fe_values.get_JxW_values().begin(),
+                                                 0.0);
+                                                       // Compute the root only,
+                                                       // if no derivative
+                                                       // values are added later
+                      if (norm == L2_norm)
+                        diff=std::sqrt(diff);
+                      break;
+                case Linfty_norm:
+                case W1infty_norm:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          {
+                            double newval = std::fabs(psi_values[q](k))
+                                            * weight_vectors[q](k);
+                            if (psi_scalar[q]<newval)
+                              psi_scalar[q] = newval;
+                          }
+                                                       // Maximum on one cell
+                      diff = *std::max_element (psi_scalar.begin(), psi_scalar.end());
+                      break;
+                case H1_seminorm:
+                case W1p_seminorm:
+                case W1infty_seminorm:
+                      break;
+                default:
+                      Assert (false, ExcNotImplemented());
+                      break;
+              }
+
+            switch (norm)
+              {
+                case W1p_seminorm:
+                case W1p_norm:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          psi_scalar[q] += std::pow(psi_grads[q][k] * psi_grads[q][k],
+                                                    exponent/2.)
+                                           * weight_vectors[q](k);
+
+                      diff += std::inner_product (psi_scalar.begin(), psi_scalar.end(),
+                                                  fe_values.get_JxW_values().begin(),
+                                                  0.0);
+                      diff = std::pow(diff, 1./exponent);
+                      break;
+                case H1_seminorm:
+                case H1_norm:
+                                                       // take square of integrand
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          psi_scalar[q] += (psi_grads[q][k] * psi_grads[q][k])
+                                           * weight_vectors[q](k);
+
+                                                       // add seminorm to L_2 norm or
+                                                       // to zero
+                      diff += std::inner_product (psi_scalar.begin(), psi_scalar.end(),
+                                                  fe_values.get_JxW_values().begin(),
+                                                  0.0);
+                      diff = std::sqrt(diff);
+                      break;
+
+                case W1infty_seminorm:
+                case W1infty_norm:
+                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
+                      for (unsigned int k=0; k<n_components; ++k)
+                        for (unsigned int q=0; q<n_q_points; ++q)
+                          {
+                            double t = 0.;
+                            for (unsigned int d=0;d<dim;++d)
+                              t = std::max(t,std::fabs(psi_grads[q][k][d])
+                                           * weight_vectors[q](k));
+
+                            psi_scalar[q] = std::max(psi_scalar[q],t);
+                          }
+
+                      // compute seminorm
+                      {
+                        double t = 0;
+                        for (unsigned int i=0;i<psi_scalar.size();++i)
+                          t = std::max (t, psi_scalar[i]);
+
+                        // then add seminorm to norm if that had previously been
+                        // computed
+                        diff += t;
+                      }
+                      break;
+                default:
+                      break;
+              }
+                                             // append result of this cell
+                                             // to the end of the vector
+            Assert (numbers::is_finite(diff), ExcNumberNotFinite());
+            difference(index) = diff;
+          }
+        else
+                                           // the cell is a ghost cell
+                                           // or is artificial. write
+                                           // a zero into the
+                                           // corresponding value of
+                                           // the returned vector
+          difference(index) = 0;
+    }
+
+  } // namespace internal
+
+
+
+
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void
+  integrate_difference (const Mapping<dim, spacedim>    &mapping,
+                        const DoFHandler<dim,spacedim> &dof,
+                        const InVector        &fe_function,
+                        const Function<spacedim>   &exact_solution,
+                        OutVector             &difference,
+                        const Quadrature<dim> &q,
+                        const NormType        &norm,
+                        const Function<spacedim>   *weight,
+                        const double           exponent)
+  {
+    internal
+      ::do_integrate_difference (hp::MappingCollection<dim,spacedim>(mapping),
+                                 dof, fe_function, exact_solution,
+                                 difference, hp::QCollection<dim>(q),
+                                 norm, weight, exponent);
+  }
+
+
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void
+  integrate_difference (const DoFHandler<dim,spacedim>    &dof,
+                        const InVector           &fe_function,
+                        const Function<spacedim>      &exact_solution,
+                        OutVector                &difference,
+                        const Quadrature<dim>    &q,
+                        const NormType           &norm,
+                        const Function<spacedim>      *weight,
+                        const double              exponent)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    internal
+      ::do_integrate_difference(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
+                                dof, fe_function, exact_solution,
+                                difference, hp::QCollection<dim>(q),
+                                norm, weight, exponent);
+  }
+
+
+
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void
+  integrate_difference (const dealii::hp::MappingCollection<dim,spacedim>    &mapping,
+                        const dealii::hp::DoFHandler<dim,spacedim> &dof,
+                        const InVector        &fe_function,
+                        const Function<spacedim>   &exact_solution,
+                        OutVector             &difference,
+                        const dealii::hp::QCollection<dim> &q,
+                        const NormType        &norm,
+                        const Function<spacedim>   *weight,
+                        const double           exponent)
+  {
+    internal
+      ::do_integrate_difference (hp::MappingCollection<dim,spacedim>(mapping),
+                                 dof, fe_function, exact_solution,
+                                 difference, q,
+                                 norm, weight, exponent);
+  }
+
+
+  template <int dim, class InVector, class OutVector, int spacedim>
+  void
+  integrate_difference (const dealii::hp::DoFHandler<dim,spacedim>    &dof,
+                        const InVector           &fe_function,
+                        const Function<spacedim>      &exact_solution,
+                        OutVector                &difference,
+                        const dealii::hp::QCollection<dim>    &q,
+                        const NormType           &norm,
+                        const Function<spacedim>      *weight,
+                        const double              exponent)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    internal
+      ::do_integrate_difference(hp::StaticMappingQ1<dim>::mapping_collection,
+                                dof, fe_function, exact_solution,
+                                difference, q,
+                                norm, weight, exponent);
+  }
+
+
+
+  template <int dim, class InVector, int spacedim>
+  void
+  point_difference (const DoFHandler<dim,spacedim> &dof,
+                    const InVector        &fe_function,
+                    const Function<spacedim>   &exact_function,
+                    Vector<double>        &difference,
+                    const Point<spacedim>      &point)
+  {
+    point_difference(StaticMappingQ1<dim>::mapping,
+                     dof,
+                     fe_function,
+                     exact_function,
+                     difference,
+                     point);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  void
+  point_difference (const Mapping<dim, spacedim>    &mapping,
+                    const DoFHandler<dim,spacedim> &dof,
+                    const InVector        &fe_function,
+                    const Function<spacedim>   &exact_function,
+                    Vector<double>        &difference,
+                    const Point<spacedim>      &point)
+  {
+    const FiniteElement<dim>& fe = dof.get_fe();
+
+    Assert(difference.size() == fe.n_components(),
+           ExcDimensionMismatch(difference.size(), fe.n_components()));
+
+                                     // first find the cell in which this point
+                                     // is, initialize a quadrature rule with
+                                     // it, and then a FEValues object
+    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point = GridTools::find_active_cell_around_point (mapping, dof, point);
+
+    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
+           ExcInternalError());
+
+    const Quadrature<dim>
+      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
+    fe_values.reinit(cell_point.first);
+
+                                     // then use this to get at the values of
+                                     // the given fe_function at this point
+    std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
+    fe_values.get_function_values(fe_function, u_value);
+
+    if (fe.n_components() == 1)
+      difference(0) = exact_function.value(point);
+    else
+      exact_function.vector_value(point, difference);
+
+    for (unsigned int i=0; i<difference.size(); ++i)
+      difference(i) -= u_value[0](i);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  void
+  point_value (const DoFHandler<dim,spacedim> &dof,
+               const InVector        &fe_function,
+               const Point<spacedim>      &point,
+               Vector<double>        &value)
+  {
+
+    point_value (StaticMappingQ1<dim,spacedim>::mapping,
+                 dof,
+                 fe_function,
+                 point,
+                 value);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  void
+  point_value (const hp::DoFHandler<dim,spacedim> &dof,
+         const InVector        &fe_function,
+         const Point<spacedim>      &point,
+         Vector<double>        &value)
+  {
+      point_value(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
+            dof,
+            fe_function,
+            point,
+            value);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  point_value (const DoFHandler<dim,spacedim> &dof,
+               const InVector        &fe_function,
+               const Point<spacedim>      &point)
+  {
+    return point_value (StaticMappingQ1<dim,spacedim>::mapping,
+                        dof,
+                        fe_function,
+                        point);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  point_value (const hp::DoFHandler<dim,spacedim> &dof,
+         const InVector        &fe_function,
+         const Point<spacedim>      &point)
+  {
+      return point_value(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
+          dof,
+          fe_function,
+          point);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  void
+  point_value (const Mapping<dim, spacedim>    &mapping,
+               const DoFHandler<dim,spacedim> &dof,
+               const InVector        &fe_function,
+               const Point<spacedim>      &point,
+               Vector<double>        &value)
+  {
+    const FiniteElement<dim>& fe = dof.get_fe();
+
+    Assert(value.size() == fe.n_components(),
+           ExcDimensionMismatch(value.size(), fe.n_components()));
+
+                                     // first find the cell in which this point
+                                     // is, initialize a quadrature rule with
+                                     // it, and then a FEValues object
+    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point
+      = GridTools::find_active_cell_around_point (mapping, dof, point);
+
+    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
+           ExcInternalError());
+
+    const Quadrature<dim>
+      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+
+    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
+    fe_values.reinit(cell_point.first);
+
+                                     // then use this to get at the values of
+                                     // the given fe_function at this point
+    std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
+    fe_values.get_function_values(fe_function, u_value);
+
+    value = u_value[0];
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+   void
+   point_value (const hp::MappingCollection<dim, spacedim>    &mapping,
+       const hp::DoFHandler<dim,spacedim> &dof,
+       const InVector        &fe_function,
+       const Point<spacedim>      &point,
+       Vector<double>        &value)
+   {
+     const hp::FECollection<dim, spacedim>& fe = dof.get_fe();
+
+     Assert(value.size() == fe.n_components(),
+     ExcDimensionMismatch(value.size(), fe.n_components()));
+
+                                      // first find the cell in which this point
+                                      // is, initialize a quadrature rule with
+                                      // it, and then a FEValues object
+     const std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+     cell_point =  GridTools::find_active_cell_around_point (mapping, dof, point);
+
+     Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
+         ExcInternalError());
+
+     const Quadrature<dim>
+     quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+     hp::FEValues<dim, spacedim> hp_fe_values(mapping, fe, hp::QCollection<dim>(quadrature), update_values);
+     hp_fe_values.reinit(cell_point.first);
+     const FEValues<dim, spacedim>& fe_values = hp_fe_values.get_present_fe_values();
+
+                                      // then use this to get at the values of
+                                      // the given fe_function at this point
+     std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
+     fe_values.get_function_values(fe_function, u_value);
+
+     value = u_value[0];
+   }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  point_value (const Mapping<dim, spacedim>    &mapping,
+               const DoFHandler<dim,spacedim> &dof,
+               const InVector        &fe_function,
+               const Point<spacedim>      &point)
+  {
+    const FiniteElement<dim>& fe = dof.get_fe();
+
+    Assert(fe.n_components() == 1,
+           ExcMessage ("Finite element is not scalar as is necessary for this function"));
+
+                                     // first find the cell in which this point
+                                     // is, initialize a quadrature rule with
+                                     // it, and then a FEValues object
+    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point = GridTools::find_active_cell_around_point (mapping, dof, point);
+
+    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
+           ExcInternalError());
+
+    const Quadrature<dim>
+      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
+    fe_values.reinit(cell_point.first);
+
+                                     // then use this to get at the values of
+                                     // the given fe_function at this point
+    std::vector<double> u_value(1);
+    fe_values.get_function_values(fe_function, u_value);
+
+    return u_value[0];
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  point_value (const hp::MappingCollection<dim, spacedim>    &mapping,
+      const hp::DoFHandler<dim,spacedim> &dof,
+      const InVector        &fe_function,
+      const Point<spacedim>      &point)
+  {
+      const hp::FECollection<dim, spacedim>& fe = dof.get_fe();
+
+      Assert(fe.n_components() == 1,
+          ExcMessage ("Finite element is not scalar as is necessary for this function"));
+
+      // first find the cell in which this point
+      // is, initialize a quadrature rule with
+      // it, and then a FEValues object
+      const std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
+      cell_point =  GridTools::find_active_cell_around_point (mapping, dof, point);
+
+      Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
+          ExcInternalError());
+
+      const Quadrature<dim>
+      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
+      hp::FEValues<dim, spacedim> hp_fe_values(mapping, fe, hp::QCollection<dim>(quadrature), update_values);
+      hp_fe_values.reinit(cell_point.first);
+      const FEValues<dim, spacedim>& fe_values = hp_fe_values.get_present_fe_values();
+
+      // then use this to get at the values of
+      // the given fe_function at this point
+      std::vector<double> u_value(1);
+      fe_values.get_function_values(fe_function, u_value);
+
+      return u_value[0];
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  compute_mean_value (const Mapping<dim, spacedim>    &mapping,
+                      const DoFHandler<dim,spacedim> &dof,
+                      const Quadrature<dim> &quadrature,
+                      const InVector        &v,
+                      const unsigned int     component)
+  {
+    Assert (v.size() == dof.n_dofs(),
+            ExcDimensionMismatch (v.size(), dof.n_dofs()));
+    Assert (component < dof.get_fe().n_components(),
+            ExcIndexRange(component, 0, dof.get_fe().n_components()));
+
+    FEValues<dim,spacedim> fe(mapping, dof.get_fe(), quadrature,
+                              UpdateFlags(update_JxW_values
+                                          | update_values));
+
+    typename DoFHandler<dim,spacedim>::active_cell_iterator cell;
+    std::vector<Vector<double> > values(quadrature.size(),
+                                        Vector<double> (dof.get_fe().n_components()));
+
+    double mean = 0.;
+    double area = 0.;
+                                     // Compute mean value
+    for (cell = dof.begin_active(); cell != dof.end(); ++cell)
+      if (cell->is_locally_owned())
+        {
+          fe.reinit (cell);
+          fe.get_function_values(v, values);
+          for (unsigned int k=0; k< quadrature.size(); ++k)
+            {
+              mean += fe.JxW(k) * values[k](component);
+              area += fe.JxW(k);
+            }
+        }
+
+#if DEAL_II_USE_P4EST
+                                     // if this was a distributed
+                                     // DoFHandler, we need to do the
+                                     // reduction over the entire domain
+    if (const parallel::distributed::Triangulation<dim,spacedim> *
+        p_d_triangulation
+        = dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim> *>(&dof.get_tria()))
+      {
+        double my_values[2] = { mean, area };
+        double global_values[2];
+
+        MPI_Allreduce (&my_values, &global_values, 2, MPI_DOUBLE,
+                       MPI_SUM,
+                       p_d_triangulation->get_communicator());
+
+        mean = global_values[0];
+        area = global_values[1];
+      }
+#endif
+
+    return (mean/area);
+  }
+
+
+  template <int dim, class InVector, int spacedim>
+  double
+  compute_mean_value (const DoFHandler<dim,spacedim> &dof,
+                      const Quadrature<dim> &quadrature,
+                      const InVector        &v,
+                      const unsigned int     component)
+  {
+    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
+    return compute_mean_value(StaticMappingQ1<dim,spacedim>::mapping, dof, quadrature, v, component);
+  }
+}
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
index 7278b8297fc5ac726da273840775424f8f151de7..fb7d22fd70c1d81170f57b45778b6d037f9b062e 100644 (file)
 //    further information on this license.
 //
 //---------------------------------------------------------------------------
-#ifndef __deal2__vectors_h
-#define __deal2__vectors_h
-
-
-#include <deal.II/base/config.h>
-#include <deal.II/base/exceptions.h>
-#include <deal.II/base/quadrature_lib.h>
-#include <deal.II/base/point.h>
-#include <deal.II/dofs/function_map.h>
-#include <deal.II/fe/mapping_q.h>
-#include <deal.II/hp/mapping_collection.h>
-
-#include <map>
-#include <vector>
-#include <set>
-
-DEAL_II_NAMESPACE_OPEN
-
-template <int dim> class Function;
-template <int dim> struct FunctionMap;
-template <int dim> class Quadrature;
-template <int dim> class QGauss;
-
-template <typename number> class Vector;
-template <typename number> class FullMatrix;
-template <int dim, int spacedim> class Mapping;
-template <int dim, int spacedim> class DoFHandler;
-template <typename gridtype> class InterGridMap;
-namespace hp
-{
-  template <int dim, int spacedim> class DoFHandler;
-  template <int dim, int spacedim> class MappingCollection;
-  template <int dim> class QCollection;
-}
-class ConstraintMatrix;
-
-
-//TODO: Move documentation of functions to the functions!
-
-/**
- * Provide a namespace which offers some operations on vectors. Among
- * these are assembling of standard vectors, integration of the
- * difference of a finite element solution and a continuous function,
- * interpolations and projections of continuous functions to the
- * finite element space and other operations.
- *
- * @note There exist two versions of almost each function. One with a
- * Mapping argument and one without. If a code uses a mapping
- * different from MappingQ1 the functions <b>with</b> mapping argument
- * should be used. Code that uses only MappingQ1 may also use the
- * functions without Mapping argument. Each of these latter functions
- * create a MappingQ1 object and just call the respective functions
- * with that object as mapping argument. The functions without Mapping
- * argument still exist to ensure backward compatibility. Nevertheless
- * it is advised to change the user's codes to store a specific
- * Mapping object and to use the functions that take this Mapping
- * object as argument. This gives the possibility to easily extend the
- * user codes to work also on mappings of higher degree, this just by
- * exchanging MappingQ1 by, for example, a MappingQ or another Mapping
- * object of interest.
- *
- * <h3>Description of operations</h3>
- *
- * This collection of methods offers the following operations:
- * <ul>
- * <li> Interpolation: assign each degree of freedom in the vector to be
- *   the value of the function given as argument. This is identical to
- *   saying that the resulting finite element function (which is
- *   isomorphic to the output vector) has exact function values in all
- *   support points of trial functions. The support point of a trial
- *   function is the point where its value equals one, e.g. for linear
- *   trial functions the support points are four corners of an
- *   element. This function therefore relies on the assumption that a
- *   finite element is used for which the degrees of freedom are
- *   function values (Lagrange elements) rather than gradients, normal
- *   derivatives, second derivatives, etc (Hermite elements, quintic
- *   Argyris element, etc.).
- *
- *   It seems inevitable that some values of the vector to be created are set
- *   twice or even more than that. The reason is that we have to loop over
- *   all cells and get the function values for each of the trial functions
- *   located thereon. This applies also to the functions located on faces and
- *   corners which we thus visit more than once. While setting the value
- *   in the vector is not an expensive operation, the evaluation of the
- *   given function may be, taking into account that a virtual function has
- *   to be called.
- *
- * <li> Projection: compute the <i>L</i><sup>2</sup>-projection of the
- * given function onto the finite element space, i.e. if <i>f</i> is
- * the function to be projected, compute <i>f<sub>h</sub></i> in
- * <i>V<sub>h</sub></i> such that
- * (<i>f<sub>h</sub></i>,<i>v<sub>h</sub></i>)=(<i>f</i>,<i>v<sub>h</sub></i>)
- * for all discrete test functions <i>v<sub>h</sub></i>. This is done
- * through the solution of the linear system of equations <i> M v =
- * f</i> where <i>M</i> is the mass matrix $m_{ij} = \int_\Omega
- * \phi_i(x) \phi_j(x) dx$ and $f_i = \int_\Omega f(x) \phi_i(x)
- * dx$. The solution vector $v$ then is the nodal representation of
- * the projection <i>f<sub>h</sub></i>. The project() functions are
- * used in the step-21 and step-23
- * tutorial programs.
- *
- *   In order to get proper results, it be may necessary to treat
- *   boundary conditions right. Below are listed some cases where this
- *   may be needed.  If needed, this is done by <i>L</i><sup>2</sup>-projection of
- *   the trace of the given function onto the finite element space
- *   restricted to the boundary of the domain, then taking this
- *   information and using it to eliminate the boundary nodes from the
- *   mass matrix of the whole domain, using the
- *   MatrixTools::apply_boundary_values() function. The projection of
- *   the trace of the function to the boundary is done with the
- *   VectorTools::project_boundary_values() (see below) function,
- *   which is called with a map of boundary functions FunctioMap in
- *   which all boundary indicators from zero to types::internal_face_boundary_id-1
- *   (types::internal_face_boundary_id is used for other purposes,
- *   see the Triangulation class documentation) point
- *   to the function to be projected. The projection to the boundary
- *   takes place using a second quadrature formula on the boundary
- *   given to the project() function. The first quadrature formula is
- *   used to compute the right hand side and for numerical quadrature
- *   of the mass matrix.
- *
- *   The projection of the boundary values first, then eliminating
- *   them from the global system of equations is not needed
- *   usually. It may be necessary if you want to enforce special
- *   restrictions on the boundary values of the projected function,
- *   for example in time dependent problems: you may want to project
- *   the initial values but need consistency with the boundary values
- *   for later times. Since the latter are projected onto the boundary
- *   in each time step, it is necessary that we also project the
- *   boundary values of the initial values, before projecting them to
- *   the whole domain.
- *
- *   Obviously, the results of the two schemes for projection are
- *   different.  Usually, when projecting to the boundary first, the
- *   <i>L</i><sup>2</sup>-norm of the difference between original
- *   function and projection over the whole domain will be larger
- *   (factors of five have been observed) while the
- *   <i>L</i><sup>2</sup>-norm of the error integrated over the
- *   boundary should of course be less. The reverse should also hold
- *   if no projection to the boundary is performed.
- *
- *   The selection whether the projection to the boundary first is
- *   needed is done with the <tt>project_to_boundary_first</tt> flag
- *   passed to the function.  If @p false is given, the additional
- *   quadrature formula for faces is ignored.
- *
- *   You should be aware of the fact that if no projection to the boundary
- *   is requested, a function with zero boundary values may not have zero
- *   boundary values after projection. There is a flag for this especially
- *   important case, which tells the function to enforce zero boundary values
- *   on the respective boundary parts. Since enforced zero boundary values
- *   could also have been reached through projection, but are more economically
- *   obtain using other methods, the @p project_to_boundary_first flag is
- *   ignored if the @p enforce_zero_boundary flag is set.
- *
- *   The solution of the linear system is presently done using a simple CG
- *   method without preconditioning and without multigrid. This is clearly not
- *   too efficient, but sufficient in many cases and simple to implement. This
- *   detail may change in the future.
- *
- * <li> Creation of right hand side vectors:
- *   The create_right_hand_side() function computes the vector
- *   $f_i = \int_\Omega f(x) \phi_i(x) dx$. This is the same as what the
- *   <tt>MatrixCreator::create_*</tt> functions which take a right hand side do,
- *   but without assembling a matrix.
- *
- * <li> Creation of right hand side vectors for point sources:
- *   The create_point_source_vector() function computes the vector
- *   $f_i = \int_\Omega \delta_0(x-x_0) \phi_i(x) dx$.
- *
- * <li> Creation of boundary right hand side vectors: The
- *   create_boundary_right_hand_side() function computes the vector
- *   $f_i = \int_{\partial\Omega} g(x) \phi_i(x) dx$. This is the
- *   right hand side contribution of boundary forces when having
- *   inhomogeneous Neumann boundary values in Laplace's equation or
- *   other second order operators. This function also takes an
- *   optional argument denoting over which parts of the boundary the
- *   integration shall extend. If the default argument is used, it is applied
- *   to all boundaries.
- *
- * <li> Interpolation of boundary values:
- *   The MatrixTools::apply_boundary_values() function takes a list
- *   of boundary nodes and their values. You can get such a list by interpolation
- *   of a boundary function using the interpolate_boundary_values() function.
- *   To use it, you have to
- *   specify a list of pairs of boundary indicators (of type <tt>types::boundary_id_t</tt>;
- *   see the section in the documentation of the Triangulation class for more
- *   details) and the according functions denoting the dirichlet boundary values
- *   of the nodes on boundary faces with this boundary indicator.
- *
- *   Usually, all other boundary conditions, such as inhomogeneous Neumann values
- *   or mixed boundary conditions are handled in the weak formulation. No attempt
- *   is made to include these into the process of matrix and vector assembly therefore.
- *
- *   Within this function, boundary values are interpolated, i.e. a node is given
- *   the point value of the boundary function. In some cases, it may be necessary
- *   to use the L2-projection of the boundary function or any other method. For
- *   this purpose we refer to the project_boundary_values()
- *   function below.
- *
- *   You should be aware that the boundary function may be evaluated at nodes
- *   on the interior of faces. These, however, need not be on the true
- *   boundary, but rather are on the approximation of the boundary represented
- *   by the mapping of the unit cell to the real cell. Since this mapping will
- *   in most cases not be the exact one at the face, the boundary function is
- *   evaluated at points which are not on the boundary and you should make
- *   sure that the returned values are reasonable in some sense anyway.
- *
- *   In 1d the situation is a bit different since there faces (i.e. vertices) have
- *   no boundary indicator. It is assumed that if the boundary indicator zero
- *   is given in the list of boundary functions, the left boundary point is to be
- *   interpolated while the right boundary point is associated with the boundary
- *   index 1 in the map. The respective boundary functions are then evaluated at
- *   the place of the respective boundary point.
- *
- * <li> Projection of boundary values:
- *   The project_boundary_values() function acts similar to the
- *   interpolate_boundary_values() function, apart from the fact that it does
- *   not get the nodal values of boundary nodes by interpolation but rather
- *   through the <i>L</i><sup>2</sup>-projection of the trace of the function to the boundary.
- *
- *   The projection takes place on all boundary parts with boundary
- *   indicators listed in the map (FunctioMap::FunctionMap)
- *   of boundary functions. These boundary parts may or may not be
- *   continuous. For these boundary parts, the mass matrix is
- *   assembled using the
- *   MatrixTools::create_boundary_mass_matrix() function, as
- *   well as the appropriate right hand side. Then the resulting
- *   system of equations is solved using a simple CG method (without
- *   preconditioning), which is in most cases sufficient for the
- *   present purpose.
- *
- * <li> Computing errors:
- *   The function integrate_difference() performs the calculation of
- *   the error between a given (continuous) reference function and the
- *   finite element solution in different norms. The integration is
- *   performed using a given quadrature formula and assumes that the
- *   given finite element objects equals that used for the computation
- *   of the solution.
- *
- *   The result is stored in a vector (named @p difference), where each entry
- *   equals the given norm of the difference on a cell. The order of entries
- *   is the same as a @p cell_iterator takes when started with @p begin_active and
- *   promoted with the <tt>++</tt> operator.
- *
- *   This data, one number per active cell, can be used to generate
- *   graphical output by directly passing it to the DataOut class
- *   through the DataOut::add_data_vector function. Alternatively, it
- *   can be interpolated to the nodal points of a finite element field
- *   using the DoFTools::distribute_cell_to_dof_vector function.
- *
- *   Presently, there is the possibility to compute the following values from the
- *   difference, on each cell: @p mean, @p L1_norm, @p L2_norm, @p Linfty_norm,
- *   @p H1_seminorm and @p H1_norm, see VectorTools::NormType.
- *   For the mean difference value, the reference function minus the numerical
- *   solution is computed, not the other way round.
- *
- *   The infinity norm of the difference on a given cell returns the maximum
- *   absolute value of the difference at the quadrature points given by the
- *   quadrature formula parameter. This will in some cases not be too good
- *   an approximation, since for example the Gauss quadrature formulae do
- *   not evaluate the difference at the end or corner points of the cells.
- *   You may want to choose a quadrature formula with more quadrature points
- *   or one with another distribution of the quadrature points in this case.
- *   You should also take into account the superconvergence properties of finite
- *   elements in some points: for example in 1D, the standard finite element
- *   method is a collocation method and should return the exact value at nodal
- *   points. Therefore, the trapezoidal rule should always return a vanishing
- *   L-infinity error. Conversely, in 2D the maximum L-infinity error should
- *   be located at the vertices or at the center of the cell, which would make
- *   it plausible to use the Simpson quadrature rule. On the other hand, there
- *   may be superconvergence at Gauss integration points. These examples are not
- *   intended as a rule of thumb, rather they are thought to illustrate that the
- *   use of the wrong quadrature formula may show a significantly wrong result
- *   and care should be taken to chose the right formula.
- *
- *   The <i>H</i><sup>1</sup> seminorm is the <i>L</i><sup>2</sup>
- *   norm of the gradient of the difference. The square of the full
- *   <i>H</i><sup>1</sup> norm is the sum of the square of seminorm
- *   and the square of the <i>L</i><sup>2</sup> norm.
- *
- *   To get the global <i>L<sup>1</sup></i> error, you have to sum up the
- *   entries in @p difference, e.g. using
- *   Vector::l1_norm() function.  For the global <i>L</i><sup>2</sup>
- *   difference, you have to sum up the squares of the entries and
- *   take the root of the sum, e.g. using
- *   Vector::l2_norm().  These two operations
- *   represent the <i>l</i><sub>1</sub> and <i>l</i><sub>2</sub> norms of the vectors, but you need
- *   not take the absolute value of each entry, since the cellwise
- *   norms are already positive.
- *
- *   To get the global mean difference, simply sum up the elements as above.
- *   To get the $L_\infty$ norm, take the maximum of the vector elements, e.g.
- *   using the Vector::linfty_norm() function.
- *
- *   For the global <i>H</i><sup>1</sup> norm and seminorm, the same rule applies as for the
- *   <i>L</i><sup>2</sup> norm: compute the <i>l</i><sub>2</sub> norm
- *   of the cell error vector.
- *
- *   Note that, in the codimension one case, if you ask for a norm
- *   that requires the computation of a gradient, then the provided
- *   function is automatically projected along the curve, and the
- *   difference is only computed on the tangential part of the
- *   gradient, since no information is available on the normal
- *   component of the gradient anyway.
- * </ul>
- *
- * All functions use the finite element given to the DoFHandler object the last
- * time that the degrees of freedom were distributed over the triangulation. Also,
- * if access to an object describing the exact form of the boundary is needed, the
- * pointer stored within the triangulation object is accessed.
- *
- * @note Instantiations for this template are provided for some vector types,
- * in particular <code>Vector&lt;float&gt;, Vector&lt;double&gt;,
- * BlockVector&lt;float&gt;, BlockVector&lt;double&gt;</code>; others can be
- * generated in application code (see the section on @ref Instantiations in
- * the manual).
- *
- * @ingroup numerics
- * @author Wolfgang Bangerth, Ralf Hartmann, Guido Kanschat, 1998, 1999, 2000, 2001
- */
-namespace VectorTools
-{
-                                   /**
-                                    *  Denote which norm/integral is
-                                    *  to be computed by the
-                                    *  integrate_difference()
-                                    *  function of this class. The
-                                    *  following possibilities are
-                                    *  implemented:
-                                    */
-  enum NormType
-  {
-                                         /**
-                                          * The function or
-                                          * difference of functions
-                                          * is integrated on each
-                                          * cell.
-                                          */
-        mean,
-                                         /**
-                                          * The absolute value of
-                                          * the function is
-                                          * integrated.
-                                          */
-        L1_norm,
-                                         /**
-                                          * The square of the
-                                          * function is integrated
-                                          * and the the square root
-                                          * of the result is
-                                          * computed on each cell.
-                                          */
-        L2_norm,
-                                         /**
-                                          * The absolute value to
-                                          * the <i>p</i>th power is
-                                          * integrated and the pth
-                                          * root is computed on each
-                                          * cell. The exponent
-                                          * <i>p</i> is the last
-                                          * parameter of the
-                                          * function.
-                                          */
-        Lp_norm,
-                                         /**
-                                          * The maximum absolute
-                                          * value of the function.
-                                          */
-        Linfty_norm,
-                                         /**
-                                          * #L2_norm of the gradient.
-                                          */
-        H1_seminorm,
-                                         /**
-                                          * The square of this norm
-                                          * is the square of the
-                                          * #L2_norm plus the square
-                                          * of the #H1_seminorm.
-                                          */
-        H1_norm,
-                                         /**
-                                          * #Lp_norm of the gradient.
-                                          */
-        W1p_seminorm,
-                                         /**
-                                          * same as #H1_norm for
-                                          * <i>L<sup>p</sup></i>.
-                                          */
-        W1p_norm,
-                                         /**
-                                          * #Linfty_norm of the gradient.
-                                          */
-        W1infty_seminorm,
-                                         /**
-                                          * same as #H1_norm for
-                                          * <i>L<sup>infty</sup></i>.
-                                          */
-        W1infty_norm
-
-  };
-/**
- * @name Interpolation and projection
- */
-                                   //@{
-                                   /**
-                                    * Compute the interpolation of
-                                    * @p function at the support
-                                    * points to the finite element
-                                    * space described by the Triangulation
-                                    * and FiniteElement object with which
-                                    * the given DoFHandler argument is
-                                    * initialized. It is assumed that the
-                                    * number of components of
-                                    * @p function matches that of
-                                    * the finite element used by
-                                    * @p dof.
-                                    *
-                                    * Note that you may have to call
-                                    * <tt>hanging_nodes.distribute(vec)</tt>
-                                    * with the hanging nodes from
-                                    * space @p dof afterwards, to
-                                    * make the result continuous
-                                    * again.
-                                    *
-                                    * The template argument <code>DH</code>
-                                    * may either be of type DoFHandler or
-                                    * hp::DoFHandler.
-                                    *
-                                    * See the general documentation
-                                    * of this class for further
-                                    * information.
-                                    *
-                                    * @todo The @p mapping argument should be
-                                    * replaced by a hp::MappingCollection in
-                                    * case of a hp::DoFHandler.
-                                    */
-  template <class VECTOR, class DH>
-  void interpolate (const Mapping<DH::dimension,DH::space_dimension>    &mapping,
-                    const DH              &dof,
-                    const Function<DH::space_dimension>   &function,
-                    VECTOR                &vec);
-
-                                   /**
-                                    * Calls the @p interpolate()
-                                    * function above with
-                                    * <tt>mapping=MappingQ1@<dim>@()</tt>.
-                                    */
-  template <class VECTOR, class DH>
-  void interpolate (const DH              &dof,
-                    const Function<DH::space_dimension>   &function,
-                    VECTOR                &vec);
-
-                                   /**
-                                    * Interpolate different finite
-                                    * element spaces. The
-                                    * interpolation of vector
-                                    * @p data_1 is executed from the
-                                    * FE space represented by
-                                    * @p dof_1 to the vector @p data_2
-                                    * on FE space @p dof_2. The
-                                    * interpolation on each cell is
-                                    * represented by the matrix
-                                    * @p transfer. Curved boundaries
-                                    * are neglected so far.
-                                    *
-                                    * Note that you may have to call
-                                    * <tt>hanging_nodes.distribute(data_2)</tt>
-                                    * with the hanging nodes from
-                                    * space @p dof_2 afterwards, to
-                                    * make the result continuous
-                                    * again.
-                                    *
-                                    * @note Instantiations for this template
-                                    * are provided for some vector types
-                                    * (see the general documentation of the
-                                    * class), but only the same vector for
-                                    * InVector and OutVector. Other
-                                    * combinations must be instantiated by
-                                    * hand.
-                                    */
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void interpolate (const DoFHandler<dim,spacedim>    &dof_1,
-                    const DoFHandler<dim,spacedim>    &dof_2,
-                    const FullMatrix<double> &transfer,
-                    const InVector           &data_1,
-                    OutVector                &data_2);
-
-                                   /**
-                                    * Gives the interpolation of a
-                                    * @p dof1-function @p u1 to a
-                                    * @p dof2-function @p u2, where @p
-                                    * dof1 and @p dof2 represent
-                                    * different triangulations with a
-                                    * common coarse grid.
-                                    *
-                                    * dof1 and dof2 need to have the
-                                    * same finite element
-                                    * discretization.
-                                    *
-                                    * Note that for continuous
-                                    * elements on grids with hanging
-                                    * nodes (i.e. locally refined
-                                    * grids) this function does not
-                                    * give the expected output.
-                                    * Indeed, the resulting output
-                                    * vector does not necessarily
-                                    * respect continuity
-                                    * requirements at hanging nodes,
-                                    * due to local cellwise
-                                    * interpolation.
-                                    *
-                                    * For this case (continuous
-                                    * elements on grids with hanging
-                                    * nodes), please use the
-                                    * interpolate_to_different_mesh
-                                    * function with an additional
-                                    * ConstraintMatrix argument,
-                                    * see below, or make the field
-                                    * conforming yourself by calling the
-                                    * @p ConstraintsMatrix::distribute
-                                    * function of your hanging node
-                                    * constraints object.
-                                    */
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class VECTOR>
-  void
-  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
-                                 const VECTOR            &u1,
-                                 const DH<dim, spacedim> &dof2,
-                                 VECTOR                  &u2);
-
-                                   /**
-                                    * Gives the interpolation of a
-                                    * @p dof1-function @p u1 to a
-                                    * @p dof2-function @p u2, where @p
-                                    * dof1 and @p dof2 represent
-                                    * different triangulations with a
-                                    * common coarse grid.
-                                    *
-                                    * dof1 and dof2 need to have the
-                                    * same finite element
-                                    * discretization.
-                                    *
-                                    * @p constraints is a hanging node
-                                    * constraints object corresponding
-                                    * to @p dof2. This object is
-                                    * particularly important when
-                                    * interpolating onto continuous
-                                    * elements on grids with hanging
-                                    * nodes (locally refined grids):
-                                    * Without it - due to cellwise
-                                    * interpolation - the resulting
-                                    * output vector does not necessarily
-                                    * respect continuity requirements
-                                    * at hanging nodes.
-                                    */
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class VECTOR>
-  void
-  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
-                                 const VECTOR            &u1,
-                                 const DH<dim, spacedim> &dof2,
-                                 const ConstraintMatrix  &constraints,
-                                 VECTOR                  &u2);
-
-
-                                   /**
-                                    * The same function as above, but
-                                    * takes an InterGridMap object
-                                    * directly as a parameter. Useful
-                                    * for interpolating several vectors
-                                    * at the same time.
-                                    *
-                                    * @p intergridmap
-                                    * has to be initialized via
-                                    * InterGridMap::make_mapping pointing
-                                    * from a source DoFHandler to a
-                                    * destination DoFHandler.
-                                    */
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class VECTOR>
-  void
-  interpolate_to_different_mesh (const InterGridMap<DH<dim, spacedim> > &intergridmap,
-                                 const VECTOR                           &u1,
-                                 const ConstraintMatrix                 &constraints,
-                                 VECTOR                                 &u2);
-
-                                   /**
-                                    * Compute the projection of
-                                    * @p function to the finite element space.
-                                    *
-                                    * By default, projection to the boundary
-                                    * and enforcement of zero boundary values
-                                    * are disabled. The ordering of arguments
-                                    * to this function is such that you need
-                                    * not give a second quadrature formula if
-                                    * you don't want to project to the
-                                    * boundary first, but that you must if you
-                                    * want to do so.
-                                    *
-                                    * This function needs the mass
-                                    * matrix of the finite element
-                                    * space on the present grid. To
-                                    * this end, the mass matrix is
-                                    * assembled exactly using
-                                    * MatrixTools::create_mass_matrix. This
-                                    * function performs numerical
-                                    * quadrature using the given
-                                    * quadrature rule; you should
-                                    * therefore make sure that the
-                                    * given quadrature formula is
-                                    * also sufficient for the
-                                    * integration of the mass
-                                    * matrix.
-                                    *
-                                    * See the general documentation of this
-                                    * class for further information.
-                                    *
-                                    * In 1d, the default value of
-                                    * the boundary quadrature
-                                    * formula is an invalid object
-                                    * since integration on the
-                                    * boundary doesn't happen in
-                                    * 1d.
-                                    */
-  template <int dim, class VECTOR, int spacedim>
-  void project (const Mapping<dim, spacedim>       &mapping,
-                const DoFHandler<dim,spacedim>    &dof,
-                const ConstraintMatrix   &constraints,
-                const Quadrature<dim>    &quadrature,
-                const Function<spacedim>      &function,
-                VECTOR                   &vec,
-                const bool                enforce_zero_boundary = false,
-                const Quadrature<dim-1>  &q_boundary = (dim > 1 ?
-                                                        QGauss<dim-1>(2) :
-                                                        Quadrature<dim-1>(0)),
-                const bool                project_to_boundary_first = false);
-
-                                   /**
-                                    * Calls the project()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, class VECTOR, int spacedim>
-  void project (const DoFHandler<dim,spacedim>    &dof,
-                const ConstraintMatrix   &constraints,
-                const Quadrature<dim>    &quadrature,
-                const Function<spacedim>      &function,
-                VECTOR                   &vec,
-                const bool                enforce_zero_boundary = false,
-                const Quadrature<dim-1>  &q_boundary = (dim > 1 ?
-                                                        QGauss<dim-1>(2) :
-                                                        Quadrature<dim-1>(0)),
-                const bool                project_to_boundary_first = false);
-
-                                   /**
-                                    * Prepare Dirichlet boundary
-                                    * conditions.  Make up the list
-                                    * of degrees of freedom subject
-                                    * to Dirichlet boundary
-                                    * conditions and the values to
-                                    * be assigned to them, by
-                                    * interpolation around the
-                                    * boundary. If the
-                                    * @p boundary_values contained
-                                    * values before, the new ones
-                                    * are added, or the old ones
-                                    * overwritten if a node of the
-                                    * boundary part to be used
-                                    * was already in the
-                                    * map of boundary values.
-                                    *
-                                    * The parameter
-                                    * @p function_map argument
-                                    * provides a list of boundary
-                                    * indicators to be handled by
-                                    * this function and corresponding
-                                    * boundary value functions. The
-                                    * keys of this map
-                                    * correspond to the number
-                                    * @p boundary_indicator of the
-                                    * face.  types::internal_face_boundary_id
-                                    * is an illegal value for this key since
-                                    * it is reserved for interior faces.
-                                    *
-                                    * The flags in the last
-                                    * parameter, @p component_mask
-                                    * denote which components of the
-                                    * finite element space shall be
-                                    * interpolated. If it is left as
-                                    * specified by the default value
-                                    * (i.e. an empty array), all
-                                    * components are
-                                    * interpolated. If it is
-                                    * different from the default
-                                    * value, it is assumed that the
-                                    * number of entries equals the
-                                    * number of components in the
-                                    * boundary functions and the
-                                    * finite element, and those
-                                    * components in the given
-                                    * boundary function will be used
-                                    * for which the respective flag
-                                    * was set in the component mask.
-                                    * See also @ref GlossComponentMask.
-                                    *
-                                    * It is assumed that the number
-                                    * of components of the function
-                                    * in @p boundary_function matches that
-                                    * of the finite element used by
-                                    * @p dof.
-                                    *
-                                    * If the finite element used has
-                                    * shape functions that are
-                                    * non-zero in more than one
-                                    * component (in deal.II speak:
-                                    * they are non-primitive), then
-                                    * these components can presently
-                                    * not be used for interpolating
-                                    * boundary values. Thus, the
-                                    * elements in the component mask
-                                    * corresponding to the
-                                    * components of these
-                                    * non-primitive shape functions
-                                    * must be @p false.
-                                    *
-                                    * See the general doc for more
-                                    * information.
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
-                               const DH                 &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask = std::vector<bool>());
-
-                                   /**
-                                    * @deprecated This function exists mainly
-                                    * for backward compatibility.
-                                    *
-                                    * Same function as above, but
-                                    * taking only one pair of
-                                    * boundary indicator and
-                                    * corresponding boundary
-                                    * function. Calls the other
-                                    * function with remapped
-                                    * arguments.
-                                    *
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
-                               const DH                 &dof,
-                               const types::boundary_id_t            boundary_component,
-                               const Function<DH::space_dimension>           &boundary_function,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask = std::vector<bool>());
-
-                                   /**
-                                    * Calls the other
-                                    * interpolate_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH        &dof,
-                               const types::boundary_id_t            boundary_component,
-                               const Function<DH::space_dimension>           &boundary_function,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask = std::vector<bool>());
-
-
-                                   /**
-                                    * Calls the other
-                                    * interpolate_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH                &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               std::map<unsigned int,double>         &boundary_values,
-                               const std::vector<bool>               &component_mask = std::vector<bool>());
-
-
-                                   /**
-                                    * Insert the (algebraic) constraints due
-                                    * to Dirichlet boundary conditions into
-                                    * a ConstraintMatrix @p
-                                    * constraints. This function identifies
-                                    * the degrees of freedom subject to
-                                    * Dirichlet boundary conditions, adds
-                                    * them to the list of constrained DoFs
-                                    * in @p constraints and sets the
-                                    * respective inhomogeneity to the value
-                                    * interpolated around the boundary. If
-                                    * this routine encounters a DoF that
-                                    * already is constrained (for instance
-                                    * by a hanging node constraint, see
-                                    * below, or any other type of
-                                    * constraint, e.g. from periodic
-                                    * boundary conditions), the old setting
-                                    * of the constraint (dofs the entry is
-                                    * constrained to, inhomogeneities) is
-                                    * kept and nothing happens.
-                                    *
-                                    * @note When combining adaptively
-                                    * refined meshes with hanging node
-                                    * constraints and boundary conditions
-                                    * like from the current function within
-                                    * one ConstraintMatrix object, the
-                                    * hanging node constraints should always
-                                    * be set first, and then the boundary
-                                    * conditions since boundary conditions
-                                    * are not set in the second operation on
-                                    * degrees of freedom that are already
-                                    * constrained. This makes sure that the
-                                    * discretization remains conforming as
-                                    * is needed. See the discussion on
-                                    * conflicting constraints in the module
-                                    * on @ref constraints .
-                                    *
-                                    * The parameter @p boundary_component
-                                    * corresponds to the number @p
-                                    * boundary_indicator of the face.
-                                    * types::internal_face_boundary_id
-                                    * is an illegal value, since it is
-                                    * reserved for interior faces.
-                                    *
-                                    * The flags in the last parameter, @p
-                                    * component_mask (see @ref GlossComponentMask)
-                                    * denote which
-                                    * components of the finite element
-                                    * space shall be interpolated. If it
-                                    * is left as specified by the default
-                                    * value (i.e. an empty array), all
-                                    * components are interpolated. If it
-                                    * is different from the default value,
-                                    * it is assumed that the number of
-                                    * entries equals the number of
-                                    * components in the boundary functions
-                                    * and the finite element, and those
-                                    * components in the given boundary
-                                    * function will be used for which the
-                                    * respective flag was set in the
-                                    * component mask.
-                                    *
-                                    * It is assumed that the number of
-                                    * components of the function in @p
-                                    * boundary_function matches that of
-                                    * the finite element used by @p dof.
-                                    *
-                                    * If the finite element used has shape
-                                    * functions that are non-zero in more
-                                    * than one component (in deal.II
-                                    * speak: they are non-primitive), then
-                                    * these components can presently not
-                                    * be used for interpolating boundary
-                                    * values. Thus, the elements in the
-                                    * component mask corresponding to the
-                                    * components of these non-primitive
-                                    * shape functions must be @p false.
-                                    *
-                                    * See the general doc for more
-                                    * information.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension>            &mapping,
-                               const DH                 &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               ConstraintMatrix              &constraints,
-                               const std::vector<bool>       &component_mask = std::vector<bool>());
-
-                                   /**
-                                    * @deprecated This function exists
-                                    * only for backward compatibility.
-                                    *
-                                    * Same function as above, but taking
-                                    * only one pair of boundary indicator
-                                    * and corresponding boundary
-                                    * function. Calls the other function
-                                    * with remapped arguments.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const Mapping<DH::dimension,DH::space_dimension> &mapping,
-                               const DH                            &dof,
-                               const types::boundary_id_t                  boundary_component,
-                               const Function<DH::space_dimension> &boundary_function,
-                               ConstraintMatrix                    &constraints,
-                               const std::vector<bool>             &component_mask = std::vector<bool>());
-
-                                   /**
-                                    * Calls the other
-                                    * interpolate_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH                            &dof,
-                               const types::boundary_id_t                  boundary_component,
-                               const Function<DH::space_dimension> &boundary_function,
-                               ConstraintMatrix                    &constraints,
-                               const std::vector<bool>             &component_mask = std::vector<bool>());
-
-
-                                   /**
-                                    * Calls the other
-                                    * interpolate_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH                &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               ConstraintMatrix        &constraints,
-                               const std::vector<bool> &component_mask = std::vector<bool>());
-
-
-                                   /**
-                                    * Project a function to the boundary
-                                    * of the domain, using the given
-                                    * quadrature formula for the faces. If
-                                    * the @p boundary_values contained
-                                    * values before, the new ones are
-                                    * added, or the old one overwritten if
-                                    * a node of the boundary part to be
-                                    * projected on already was in the
-                                    * variable.
-                                    *
-                                    * If @p component_mapping is empty, it
-                                    * is assumed that the number of
-                                    * components of @p boundary_function
-                                    * matches that of the finite element
-                                    * used by @p dof.
-                                    *
-                                    * In 1d, projection equals
-                                    * interpolation. Therefore,
-                                    * interpolate_boundary_values is
-                                    * called.
-                                    *
-                                    * @arg @p boundary_values: the result
-                                    * of this function, a map containing
-                                    * all indices of degrees of freedom at
-                                    * the boundary (as covered by the
-                                    * boundary parts in @p
-                                    * boundary_functions) and the computed
-                                    * dof value for this degree of
-                                    * freedom.
-                                    *
-                                    * @arg @p component_mapping: if the
-                                    * components in @p boundary_functions
-                                    * and @p dof do not coincide, this
-                                    * vector allows them to be
-                                    * remapped. If the vector is not
-                                    * empty, it has to have one entry for
-                                    * each component in @p dof. This entry
-                                    * is the component number in @p
-                                    * boundary_functions that should be
-                                    * used for this component in @p
-                                    * dof. By default, no remapping is
-                                    * applied.
-                                    */
-  template <int dim, int spacedim>
-  void project_boundary_values (const Mapping<dim, spacedim>       &mapping,
-                                const DoFHandler<dim,spacedim>    &dof,
-                                const typename FunctionMap<spacedim>::type &boundary_functions,
-                                const Quadrature<dim-1>  &q,
-                                std::map<unsigned int,double> &boundary_values,
-                                std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Calls the project_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
-                                const typename FunctionMap<spacedim>::type &boundary_function,
-                                const Quadrature<dim-1>  &q,
-                                std::map<unsigned int,double> &boundary_values,
-                                std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Project a function to the boundary of
-                                    * the domain, using the given quadrature
-                                    * formula for the faces. This function
-                                    * identifies the degrees of freedom
-                                    * subject to Dirichlet boundary
-                                    * conditions, adds them to the list of
-                                    * constrained DoFs in @p constraints and
-                                    * sets the respective inhomogeneity to
-                                    * the value resulting from the
-                                    * projection operation. If this routine
-                                    * encounters a DoF that already is
-                                    * constrained (for instance by a hanging
-                                    * node constraint, see below, or any
-                                    * other type of constraint, e.g. from
-                                    * periodic boundary conditions), the old
-                                    * setting of the constraint (dofs the
-                                    * entry is constrained to,
-                                    * inhomogeneities) is kept and nothing
-                                    * happens.
-                                    *
-                                    * @note When combining adaptively
-                                    * refined meshes with hanging node
-                                    * constraints and boundary conditions
-                                    * like from the current function within
-                                    * one ConstraintMatrix object, the
-                                    * hanging node constraints should always
-                                    * be set first, and then the boundary
-                                    * conditions since boundary conditions
-                                    * are not set in the second operation on
-                                    * degrees of freedom that are already
-                                    * constrained. This makes sure that the
-                                    * discretization remains conforming as
-                                    * is needed. See the discussion on
-                                    * conflicting constraints in the module
-                                    * on @ref constraints .
-                                    *
-                                    * If @p component_mapping is empty, it
-                                    * is assumed that the number of
-                                    * components of @p boundary_function
-                                    * matches that of the finite element
-                                    * used by @p dof.
-                                    *
-                                    * In 1d, projection equals
-                                    * interpolation. Therefore,
-                                    * interpolate_boundary_values is
-                                    * called.
-                                    *
-                                    * @arg @p component_mapping: if the
-                                    * components in @p boundary_functions
-                                    * and @p dof do not coincide, this
-                                    * vector allows them to be
-                                    * remapped. If the vector is not
-                                    * empty, it has to have one entry for
-                                    * each component in @p dof. This entry
-                                    * is the component number in @p
-                                    * boundary_functions that should be
-                                    * used for this component in @p
-                                    * dof. By default, no remapping is
-                                    * applied.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <int dim, int spacedim>
-  void project_boundary_values (const Mapping<dim, spacedim>   &mapping,
-                                const DoFHandler<dim,spacedim> &dof,
-                                const typename FunctionMap<spacedim>::type &boundary_functions,
-                                const Quadrature<dim-1>        &q,
-                                ConstraintMatrix               &constraints,
-                                std::vector<unsigned int>       component_mapping = std::vector<unsigned int>());
-
-                                   /**
-                                    * Calls the project_boundary_values()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <int dim, int spacedim>
-  void project_boundary_values (const DoFHandler<dim,spacedim> &dof,
-                                const typename FunctionMap<spacedim>::type &boundary_function,
-                                const Quadrature<dim-1>        &q,
-                                ConstraintMatrix               &constraints,
-                                std::vector<unsigned int>       component_mapping = std::vector<unsigned int>());
-
-
-                                   /**
-                                    * Compute constraints that correspond to
-                                    * boundary conditions of the form
-                                    * $\vec{n}\times\vec{u}=\vec{n}\times\vec{f}$,
-                                    * i.e. the tangential components of $u$
-                                    * and $f$ shall coincide.
-                                    *
-                                    * If the ConstraintMatrix @p constraints
-                                    * contained values or other
-                                    * constraints before, the new ones are
-                                    * added or the old ones overwritten,
-                                    * if a node of the boundary part to be
-                                    * used was already in the list of
-                                    * constraints. This is handled by
-                                    * using inhomogeneous constraints. Please
-                                    * note that when combining adaptive meshes
-                                    * and this kind of constraints, the
-                                    * Dirichlet conditions should be set
-                                    * first, and then completed by hanging
-                                    * node constraints, in order to make sure
-                                    * that the discretization remains
-                                    * consistent. See the discussion on
-                                    * conflicting constraints in the
-                                    * module on @ref constraints .
-                                    *
-                                    * This function is explecitly written to
-                                    * use with the FE_Nedelec elements. Thus
-                                    * it throws an exception, if it is
-                                    * called with other finite elements.
-                                    *
-                                    * The second argument of this function
-                                    * denotes the first vector component in
-                                    * the finite element that corresponds to
-                                    * the vector function that you want to
-                                    * constrain. For example, if we want to
-                                    * solve Maxwell's equations in 3d and the
-                                    * finite element has components
-                                    * $(E_x,E_y,E_z,B_x,B_y,B_z)$ and we want
-                                    * the boundary conditions
-                                    * $\vec{n}\times\vec{B}=\vec{n}\times\vec{f}$,
-                                    * then @p first_vector_component would
-                                    * be 3. Vectors are implicitly assumed to
-                                    * have exactly <code>dim</code> components
-                                    * that are ordered in the same way as we
-                                    * usually order the coordinate directions,
-                                    * i.e. $x$-, $y$-, and finally
-                                    * $z$-component.
-                                    *
-                                    * The parameter @p boundary_component
-                                    * corresponds to the number
-                                    * @p boundary_indicator of the face.
-                                    * types::internal_face_boundary_id
-                                    * is an illegal value, since it is
-                                    * reserved for interior faces.
-                                    *
-                                    * The last argument is denoted to compute
-                                    * the normal vector $\vec{n}$ at the
-                                    * boundary points.
-                                    *
-                                    * <h4>Computing constraints</h4>
-                                    *
-                                    * To compute the constraints we use
-                                    * projection-based interpolation as proposed
-                                    * in Solin, Segeth and Dolezel
-                                    * (Higher order finite elements, Chapman&amp;Hall,
-                                    * 2004) on every face located at the
-                                    * boundary.
-                                    *
-                                    * First one projects $\vec{f}$ on the
-                                    * lowest-order edge shape functions. Then the
-                                    * remaining part $(I-P_0)\vec{f}$ of the
-                                    * function is projected on the remaining
-                                    * higher-order edge shape functions. In the
-                                    * last step we project $(I-P_0-P_e)\vec{f}$
-                                    * on the bubble shape functions defined on
-                                    * the face.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <int dim>
-  void project_boundary_values_curl_conforming (const DoFHandler<dim>& dof_handler,
-                                                const unsigned int first_vector_component,
-                                                const Function<dim>& boundary_function,
-                                                const types::boundary_id_t boundary_component,
-                                                ConstraintMatrix& constraints,
-                                                const Mapping<dim>& mapping = StaticMappingQ1<dim>::mapping);
-
-                                   /**
-                                    * Same as above for the hp-namespace.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <int dim>
-  void project_boundary_values_curl_conforming (const hp::DoFHandler<dim>& dof_handler,
-                                                const unsigned int first_vector_component,
-                                                const Function<dim>& boundary_function,
-                                                const types::boundary_id_t boundary_component,
-                                                ConstraintMatrix& constraints,
-                                                const hp::MappingCollection<dim, dim>& mapping_collection = hp::StaticMappingQ1<dim>::mapping_collection);
-
-
-                                   /**
-                                    * Compute constraints that correspond to
-                                    * boundary conditions of the form
-                                    * $\vec{n}^T\vec{u}=\vec{n}^T\vec{f}$,
-                                    * i.e. the normal components of $u$
-                                    * and $f$ shall coincide.
-                                    *
-                                    * If the ConstraintMatrix @p constraints
-                                    * contained values or other
-                                    * constraints before, the new ones are
-                                    * added or the old ones overwritten,
-                                    * if a node of the boundary part to be
-                                    * used was already in the list of
-                                    * constraints. This is handled by
-                                    * using inhomogeneous constraints. Please
-                                    * note that when combining adaptive meshes
-                                    * and this kind of constraints, the
-                                    * Dirichlet conditions should be set
-                                    * first, and then completed by hanging
-                                    * node constraints, in order to make sure
-                                    * that the discretization remains
-                                    * consistent. See the discussion on
-                                    * conflicting constraints in the
-                                    * module on @ref constraints .
-                                    *
-                                    * This function is explecitly written to
-                                    * use with the FE_RaviartThomas elements.
-                                    * Thus it throws an exception, if it is
-                                    * called with other finite elements.
-                                    *
-                                    * The second argument of this function
-                                    * denotes the first vector component in
-                                    * the finite element that corresponds to
-                                    * the vector function that you want to
-                                    * constrain. Vectors are implicitly
-                                    * assumed to have exactly
-                                    * <code>dim</code> components that are
-                                    * ordered in the same way as we
-                                    * usually order the coordinate directions,
-                                    * i.e. $x$-, $y$-, and finally
-                                    * $z$-component.
-                                    *
-                                    * The parameter @p boundary_component
-                                    * corresponds to the number
-                                    * @p boundary_indicator of the face.
-                                    *  types::internal_face_boundary_id
-                                    * is an illegal value, since it is
-                                    * reserved for interior faces.
-                                    *
-                                    * The last argument is denoted to compute
-                                    * the normal vector $\vec{n}$ at the
-                                    * boundary points.
-                                    *
-                                    * <h4>Computing constraints</h4>
-                                    *
-                                    * To compute the constraints we use
-                                    * interpolation operator proposed
-                                    * in Brezzi, Fortin (Mixed and Hybrid
-                                    * (Finite Element Methods, Springer,
-                                    * 1991) on every face located at the
-                                    * boundary.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template<int dim>
-  void project_boundary_values_div_conforming (const DoFHandler<dim>& dof_handler,
-                                               const unsigned int first_vector_component,
-                                               const Function<dim>& boundary_function,
-                                               const types::boundary_id_t boundary_component,
-                                               ConstraintMatrix& constraints,
-                                               const Mapping<dim>& mapping = StaticMappingQ1<dim>::mapping);
-
-                                   /**
-                                    * Same as above for the hp-namespace.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template<int dim>
-  void project_boundary_values_div_conforming (const hp::DoFHandler<dim>& dof_handler,
-                                               const unsigned int first_vector_component,
-                                               const Function<dim>& boundary_function,
-                                               const types::boundary_id_t boundary_component,
-                                               ConstraintMatrix& constraints,
-                                               const hp::MappingCollection<dim, dim>& mapping_collection = hp::StaticMappingQ1<dim>::mapping_collection);
-
-
-                                   /**
-                                    * Compute the constraints that
-                                    * correspond to boundary conditions of
-                                    * the form $\vec n \cdot \vec u=0$,
-                                    * i.e. no normal flux if $\vec u$ is a
-                                    * vector-valued quantity. These
-                                    * conditions have exactly the form
-                                    * handled by the ConstraintMatrix class,
-                                    * so instead of creating a map between
-                                    * boundary degrees of freedom and
-                                    * corresponding value, we here create a
-                                    * list of constraints that are written
-                                    * into a ConstraintMatrix. This object
-                                    * may already have some content, for
-                                    * example from hanging node constraints,
-                                    * that remains untouched. These
-                                    * constraints have to be applied to the
-                                    * linear system like any other such
-                                    * constraints, i.e. you have to condense
-                                    * the linear system with the constraints
-                                    * before solving, and you have to
-                                    * distribute the solution vector
-                                    * afterwards.
-                                    *
-                                    * The use of this function is
-                                    * explained in more detail in
-                                    * step-31. It
-                                    * doesn't make much sense in 1d,
-                                    * so the function throws an
-                                    * exception in that case.
-                                    *
-                                    * The second argument of this
-                                    * function denotes the first
-                                    * vector component in the finite
-                                    * element that corresponds to
-                                    * the vector function that you
-                                    * want to constrain. For
-                                    * example, if we were solving a
-                                    * Stokes equation in 2d and the
-                                    * finite element had components
-                                    * $(u,v,p)$, then @p
-                                    * first_vector_component would
-                                    * be zero. On the other hand, if
-                                    * we solved the Maxwell
-                                    * equations in 3d and the finite
-                                    * element has components
-                                    * $(E_x,E_y,E_z,B_x,B_y,B_z)$
-                                    * and we want the boundary
-                                    * condition $\vec n\cdot \vec
-                                    * B=0$, then @p
-                                    * first_vector_component would
-                                    * be 3. Vectors are implicitly
-                                    * assumed to have exactly
-                                    * <code>dim</code> components
-                                    * that are ordered in the same
-                                    * way as we usually order the
-                                    * coordinate directions,
-                                    * i.e. $x$-, $y$-, and finally
-                                    * $z$-component. The function
-                                    * assumes, but can't check, that
-                                    * the vector components in the
-                                    * range
-                                    * <code>[first_vector_component,first_vector_component+dim)</code>
-                                    * come from the same base finite
-                                    * element. For example, in the
-                                    * Stokes example above, it would
-                                    * not make sense to use a
-                                    * <code>FESystem@<dim@>(FE_Q@<dim@>(2),
-                                    * 1, FE_Q@<dim@>(1), dim)</code>
-                                    * (note that the first velocity
-                                    * vector component is a $Q_2$
-                                    * element, whereas all the other
-                                    * ones are $Q_1$ elements) as
-                                    * there would be points on the
-                                    * boundary where the
-                                    * $x$-velocity is defined but no
-                                    * corresponding $y$- or
-                                    * $z$-velocities.
-                                    *
-                                    * The third argument denotes the set of
-                                    * boundary indicators on which the
-                                    * boundary condition is to be
-                                    * enforced. Note that, as explained
-                                    * below, this is one of the few
-                                    * functions where it makes a difference
-                                    * where we call the function multiple
-                                    * times with only one boundary
-                                    * indicator, or whether we call the
-                                    * function onces with the whole set of
-                                    * boundary indicators at once.
-                                    *
-                                    * The mapping argument is used to
-                                    * compute the boundary points where the function
-                                    * needs to request the normal vector $\vec n$
-                                    * from the boundary description.
-                                    *
-                                    * @note When combining adaptively
-                                    * refined meshes with hanging node
-                                    * constraints and boundary conditions
-                                    * like from the current function within
-                                    * one ConstraintMatrix object, the
-                                    * hanging node constraints should always
-                                    * be set first, and then the boundary
-                                    * conditions since boundary conditions
-                                    * are not set in the second operation on
-                                    * degrees of freedom that are already
-                                    * constrained. This makes sure that the
-                                    * discretization remains conforming as
-                                    * is needed. See the discussion on
-                                    * conflicting constraints in the module
-                                    * on @ref constraints .
-                                    *
-                                    *
-                                    * <h4>Computing constraints in 2d</h4>
-                                    *
-                                    * Computing these constraints requires
-                                    * some smarts. The main question
-                                    * revolves around the question what the
-                                    * normal vector is. Consider the
-                                    * following situation:
-                                    * <p ALIGN="center">
-                                    * @image html no_normal_flux_1.png
-                                    * </p>
-                                    *
-                                    * Here, we have two cells that use a
-                                    * bilinear mapping
-                                    * (i.e. MappingQ1). Consequently, for
-                                    * each of the cells, the normal vector
-                                    * is perpendicular to the straight
-                                    * edge. If the two edges at the top and
-                                    * right are meant to approximate a
-                                    * curved boundary (as indicated by the
-                                    * dashed line), then neither of the two
-                                    * computed normal vectors are equal to
-                                    * the exact normal vector (though they
-                                    * approximate it as the mesh is refined
-                                    * further). What is worse, if we
-                                    * constrain $\vec n \cdot \vec u=0$ at
-                                    * the common vertex with the normal
-                                    * vector from both cells, then we
-                                    * constrain the vector $\vec u$ with
-                                    * respect to two linearly independent
-                                    * vectors; consequently, the constraint
-                                    * would be $\vec u=0$ at this point
-                                    * (i.e. <i>all</i> components of the
-                                    * vector), which is not what we wanted.
-                                    *
-                                    * To deal with this situation, the
-                                    * algorithm works in the following way:
-                                    * at each point where we want to
-                                    * constrain $\vec u$, we first collect
-                                    * all normal vectors that adjacent cells
-                                    * might compute at this point. We then
-                                    * do not constrain $\vec n \cdot \vec
-                                    * u=0$ for <i>each</i> of these normal
-                                    * vectors but only for the
-                                    * <i>average</i> of the normal
-                                    * vectors. In the example above, we
-                                    * therefore record only a single
-                                    * constraint $\vec n \cdot \vec {\bar
-                                    * u}=0$, where $\vec {\bar u}$ is the
-                                    * average of the two indicated normal
-                                    * vectors.
-                                    *
-                                    * Unfortunately, this is not quite
-                                    * enough. Consider the situation here:
-                                    *
-                                    * <p ALIGN="center">
-                                    * @image html no_normal_flux_2.png
-                                    * </p>
-                                    *
-                                    * If again the top and right edges
-                                    * approximate a curved boundary, and the
-                                    * left boundary a separate boundary (for
-                                    * example straight) so that the exact
-                                    * boundary has indeed a corner at the
-                                    * top left vertex, then the above
-                                    * construction would not work: here, we
-                                    * indeed want the constraint that $\vec
-                                    * u$ at this point (because the normal
-                                    * velocities with respect to both the
-                                    * left normal as well as the top normal
-                                    * vector should be zero), not that the
-                                    * velocity in the direction of the
-                                    * average normal vector is zero.
-                                    *
-                                    * Consequently, we use the following
-                                    * heuristic to determine whether all
-                                    * normal vectors computed at one point
-                                    * are to be averaged: if two normal
-                                    * vectors for the same point are
-                                    * computed on <i>different</i> cells,
-                                    * then they are to be averaged. This
-                                    * covers the first example above. If
-                                    * they are computed from the same cell,
-                                    * then the fact that they are different
-                                    * is considered indication that they
-                                    * come from different parts of the
-                                    * boundary that might be joined by a
-                                    * real corner, and must not be averaged.
-                                    *
-                                    * There is one problem with this
-                                    * scheme. If, for example, the same
-                                    * domain we have considered above, is
-                                    * discretized with the following mesh,
-                                    * then we get into trouble:
-                                    *
-                                    * <p ALIGN="center">
-                                    * @image html no_normal_flux_2.png
-                                    * </p>
-                                    *
-                                    * Here, the algorithm assumes that the
-                                    * boundary does not have a corner at the
-                                    * point where faces $F1$ and $F2$ join
-                                    * because at that point there are two
-                                    * different normal vectors computed from
-                                    * different cells. If you intend for
-                                    * there to be a corner of the exact
-                                    * boundary at this point, the only way
-                                    * to deal with this is to assign the two
-                                    * parts of the boundary different
-                                    * boundary indicators and call this
-                                    * function twice, once for each boundary
-                                    * indicators; doing so will yield only
-                                    * one normal vector at this point per
-                                    * invocation (because we consider only
-                                    * one boundary part at a time), with the
-                                    * result that the normal vectors will
-                                    * not be averaged.
-                                    *
-                                    *
-                                    * <h4>Computing constraints in 3d</h4>
-                                    *
-                                    * The situation is more
-                                    * complicated in 3d. Consider
-                                    * the following case where we
-                                    * want to compute the
-                                    * constraints at the marked
-                                    * vertex:
-                                    *
-                                    * <p ALIGN="center">
-                                    * @image html no_normal_flux_4.png
-                                    * </p>
-                                    *
-                                    * Here, we get four different
-                                    * normal vectors, one from each
-                                    * of the four faces that meet at
-                                    * the vertex. Even though they
-                                    * may form a complete set of
-                                    * vectors, it is not our intent
-                                    * to constrain all components of
-                                    * the vector field at this
-                                    * point. Rather, we would like
-                                    * to still allow tangential
-                                    * flow, where the term
-                                    * "tangential" has to be
-                                    * suitably defined.
-                                    *
-                                    * In a case like this, the
-                                    * algorithm proceeds as follows:
-                                    * for each cell that has
-                                    * computed two tangential
-                                    * vectors at this point, we
-                                    * compute the unconstrained
-                                    * direction as the outer product
-                                    * of the two tangential vectors
-                                    * (if necessary multiplied by
-                                    * minus one). We then average
-                                    * these tangential
-                                    * vectors. Finally, we compute
-                                    * constraints for the two
-                                    * directions perpendicular to
-                                    * this averaged tangential
-                                    * direction.
-                                    *
-                                    * There are cases where one cell
-                                    * contributes two tangential
-                                    * directions and another one
-                                    * only one; for example, this
-                                    * would happen if both top and
-                                    * front faces of the left cell
-                                    * belong to the boundary
-                                    * selected whereas only the top
-                                    * face of the right cell belongs
-                                    * to it. This case is not
-                                    * currently implemented.
-                                    *
-                                    *
-                                    * <h4>Results</h4>
-                                    *
-                                    * Because it makes for good
-                                    * pictures, here are two images
-                                    * of vector fields on a circle
-                                    * and on a sphere to which the
-                                    * constraints computed by this
-                                    * function have been applied:
-                                    *
-                                    * <p ALIGN="center">
-                                    * @image html no_normal_flux_5.png
-                                    * @image html no_normal_flux_6.png
-                                    * </p>
-                                    *
-                                    * The vectors fields are not
-                                    * physically reasonable but the
-                                    * tangentiality constraint is
-                                    * clearly enforced. The fact
-                                    * that the vector fields are
-                                    * zero at some points on the
-                                    * boundary is an artifact of the
-                                    * way it is created, it is not
-                                    * constrained to be zero at
-                                    * these points.
-                                    *
-                                    * @ingroup constraints
-                                    */
-  template <int dim, template <int, int> class DH, int spacedim>
-
-  void
-  compute_no_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
-                                      const unsigned int     first_vector_component,
-                                      const std::set<types::boundary_id_t> &boundary_ids,
-                                      ConstraintMatrix      &constraints,
-                                      const Mapping<dim, spacedim>    &mapping = StaticMappingQ1<dim>::mapping);
 
+//this file is deprecated, use vector_tools.h instead
 
-                                   //@}
-                                   /**
-                                    * @name Assembling of right hand sides
-                                    */
-                                   //@{
-
-                                   /**
-                                    * Create a right hand side
-                                    * vector. Prior content of the
-                                    * given @p rhs_vector vector is
-                                    * deleted.
-                                    *
-                                    * See the general documentation of this
-                                    * class for further information.
-                                    */
-  template <int dim, int spacedim>
-  void create_right_hand_side (const Mapping<dim, spacedim>    &mapping,
-                               const DoFHandler<dim,spacedim> &dof,
-                               const Quadrature<dim> &q,
-                               const Function<spacedim>   &rhs,
-                               Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Calls the create_right_hand_side()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_right_hand_side (const DoFHandler<dim,spacedim> &dof,
-                               const Quadrature<dim> &q,
-                               const Function<spacedim>   &rhs,
-                               Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects.
-                                    */
-  template <int dim, int spacedim>
-  void create_right_hand_side (const hp::MappingCollection<dim,spacedim>    &mapping,
-                               const hp::DoFHandler<dim,spacedim> &dof,
-                               const hp::QCollection<dim> &q,
-                               const Function<spacedim>   &rhs,
-                               Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects.
-                                    */
-  template <int dim, int spacedim>
-  void create_right_hand_side (const hp::DoFHandler<dim,spacedim> &dof,
-                               const hp::QCollection<dim> &q,
-                               const Function<spacedim>   &rhs,
-                               Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Create a right hand side
-                                    * vector for a point source at point @p p.
-                                    * Prior content of the
-                                    * given @p rhs_vector vector is
-                                    * deleted.
-                                    *
-                                    * See the general documentation of this
-                                    * class for further information.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const Mapping<dim,spacedim>    &mapping,
-                                  const DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>      &p,
-                                  Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Calls the create_point_source_vector()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>      &p,
-                                  Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const hp::MappingCollection<dim,spacedim>    &mapping,
-                                  const hp::DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>      &p,
-                                  Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects. The function uses
-                                    * the default Q1 mapping object. Note
-                                    * that if your hp::DoFHandler uses any
-                                    * active fe index other than zero, then
-                                    * you need to call the function above
-                                    * that provides a mapping object for
-                                    * each active fe index.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const hp::DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>      &p,
-                                  Vector<double>        &rhs_vector);
-
-                                   /**
-                                    * Create a right hand side
-                                    * vector for a point source at point @p p
-                                    * for vector-valued finite elements.
-                                    * Prior content of the
-                                    * given @p rhs_vector vector is
-                                    * deleted.
-                                    *
-                                    * See the general documentation of this
-                                    * class for further information.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const Mapping<dim,spacedim>    &mapping,
-                                  const DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>          &p,
-                                  const Point<dim>               &orientation,
-                                  Vector<double>                 &rhs_vector);
-
-                                   /**
-                                    * Calls the create_point_source_vector()
-                                    * function for vector-valued finite elements,
-                                    * see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>          &p,
-                                  const Point<dim>               &orientation,
-                                  Vector<double>                 &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const hp::MappingCollection<dim,spacedim> &mapping,
-                                  const hp::DoFHandler<dim,spacedim>        &dof,
-                                  const Point<spacedim>                     &p,
-                                  const Point<dim>                          &orientation,
-                                  Vector<double>                            &rhs_vector);
-
-                                   /**
-                                    * Like the previous set of functions,
-                                    * but for hp objects. The function uses
-                                    * the default Q1 mapping object. Note
-                                    * that if your hp::DoFHandler uses any
-                                    * active fe index other than zero, then
-                                    * you need to call the function above
-                                    * that provides a mapping object for
-                                    * each active fe index.
-                                    */
-  template <int dim, int spacedim>
-  void create_point_source_vector(const hp::DoFHandler<dim,spacedim> &dof,
-                                  const Point<spacedim>              &p,
-                                  const Point<dim>                   &orientation,
-                                  Vector<double>                     &rhs_vector);
-
-                                   /**
-                                    * Create a right hand side
-                                    * vector from boundary
-                                    * forces. Prior content of the
-                                    * given @p rhs_vector vector is
-                                    * deleted.
-                                    *
-                                    * See the general documentation of this
-                                    * class for further information.
-                                    */
-  template <int dim, int spacedim>
-  void create_boundary_right_hand_side (const Mapping<dim,spacedim>      &mapping,
-                                        const DoFHandler<dim,spacedim>   &dof,
-                                        const Quadrature<dim-1> &q,
-                                        const Function<spacedim>     &rhs,
-                                        Vector<double>          &rhs_vector,
-                                        const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
-
-                                   /**
-                                    * Calls the
-                                    * create_boundary_right_hand_side()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, int spacedim>
-  void create_boundary_right_hand_side (const DoFHandler<dim,spacedim>   &dof,
-                                        const Quadrature<dim-1> &q,
-                                        const Function<spacedim>     &rhs,
-                                        Vector<double>          &rhs_vector,
-                                        const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
-
-                                   /**
-                                    * Same as the set of functions above,
-                                    * but for hp objects.
-                                    */
-  template <int dim, int spacedim>
-  void create_boundary_right_hand_side (const hp::MappingCollection<dim,spacedim>      &mapping,
-                                        const hp::DoFHandler<dim,spacedim>   &dof,
-                                        const hp::QCollection<dim-1> &q,
-                                        const Function<spacedim>     &rhs,
-                                        Vector<double>          &rhs_vector,
-                                        const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
-
-                                   /**
-                                    * Calls the
-                                    * create_boundary_right_hand_side()
-                                    * function, see above, with a
-                                    * single Q1 mapping as
-                                    * collection. This function
-                                    * therefore will only work if
-                                    * the only active fe index in
-                                    * use is zero.
-                                    */
-  template <int dim, int spacedim>
-  void create_boundary_right_hand_side (const hp::DoFHandler<dim,spacedim>   &dof,
-                                        const hp::QCollection<dim-1> &q,
-                                        const Function<spacedim>     &rhs,
-                                        Vector<double>          &rhs_vector,
-                                        const std::set<types::boundary_id_t> &boundary_indicators = std::set<types::boundary_id_t>());
-
-                                   //@}
-                                   /**
-                                    * @name Evaluation of functions
-                                    * and errors
-                                    */
-                                   //@{
-
-                                   /**
-                                    * Compute the error of the
-                                    * finite element solution.
-                                    * Integrate the difference
-                                    * between a reference function
-                                    * which is given as a continuous
-                                    * function object, and a finite
-                                    * element function.
-                                    *
-                                    * The value of @p exponent is
-                                    * used for computing $L^p$-norms
-                                    * and $W^{1,p}$-norms.
-                                    *
-                                    * The additional argument @p
-                                    * weight allows to evaluate
-                                    * weighted norms.  The weight
-                                    * function may be scalar,
-                                    * establishing a weight in the
-                                    * domain for all components
-                                    * equally. This may be used, for
-                                    * instance, to only integrates
-                                    * over parts of the domain.
-                                    *
-                                    * The weight function may also
-                                    * be vector-valued, with as many
-                                    * components as the finite
-                                    * element function: Then,
-                                    * different components get
-                                    * different weights. A typical
-                                    * application is when the error
-                                    * with respect to only one or a
-                                    * subset of the solution
-                                    * variables is to be computed,
-                                    * in which the other components
-                                    * would have weight values equal
-                                    * to zero. The
-                                    * ComponentSelectFunction class
-                                    * is particularly useful for
-                                    * this purpose.
-                                    *
-                                    * The weight function is
-                                    * expected to be positive, but
-                                    * negative values are not
-                                    * filtered. By default, no
-                                    * weighting function is given,
-                                    * i.e. weight=1 in the whole
-                                    * domain for all vector
-                                    * components uniformly. Note that
-                                    * one often wants to compute the
-                                    * error in only one component of
-                                    * a solution vector (e.g. for the
-                                    * pressure in the Stokes system,
-                                    * when the solution vector also
-                                    * contains the velocity components).
-                                    * In these cases, the weight should
-                                    * be a <i>mask</i>, i.e., be a
-                                    * vector function for which individual
-                                    * components are either zero or one.
-                                    * This can easily be achieved using
-                                    * the ComponentSelectFunction
-                                    * class.
-                                    *
-                                    * It is assumed that the number
-                                    * of components of the function
-                                    * @p exact_solution matches that
-                                    * of the finite element used by
-                                    * @p dof.
-                                    *
-                                    * See the general documentation of this
-                                    * class for more information.
-                                    *
-                                    * @note Instantiations for this template
-                                    * are provided for some vector types
-                                    * (see the general documentation of the
-                                    * class), but only for InVectors as in
-                                    * the documentation of the class,
-                                    * OutVector only Vector<double> and
-                                    * Vector<float>.
-                                    */
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void integrate_difference (const Mapping<dim,spacedim>    &mapping,
-                             const DoFHandler<dim,spacedim> &dof,
-                             const InVector        &fe_function,
-                             const Function<spacedim>   &exact_solution,
-                             OutVector             &difference,
-                             const Quadrature<dim> &q,
-                             const NormType        &norm,
-                             const Function<spacedim>   *weight=0,
-                             const double exponent = 2.);
-
-                                   /**
-                                    * Calls the integrate_difference()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void integrate_difference (const DoFHandler<dim,spacedim> &dof,
-                             const InVector        &fe_function,
-                             const Function<spacedim>   &exact_solution,
-                             OutVector             &difference,
-                             const Quadrature<dim> &q,
-                             const NormType        &norm,
-                             const Function<spacedim>   *weight=0,
-                             const double exponent = 2.);
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void integrate_difference (const hp::MappingCollection<dim,spacedim>    &mapping,
-                             const hp::DoFHandler<dim,spacedim> &dof,
-                             const InVector        &fe_function,
-                             const Function<spacedim>   &exact_solution,
-                             OutVector             &difference,
-                             const hp::QCollection<dim> &q,
-                             const NormType        &norm,
-                             const Function<spacedim>   *weight=0,
-                             const double exponent = 2.);
-
-                                   /**
-                                    * Calls the integrate_difference()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void integrate_difference (const hp::DoFHandler<dim,spacedim> &dof,
-                             const InVector        &fe_function,
-                             const Function<spacedim>   &exact_solution,
-                             OutVector             &difference,
-                             const hp::QCollection<dim> &q,
-                             const NormType        &norm,
-                             const Function<spacedim>   *weight=0,
-                             const double exponent = 2.);
-
-                                   /**
-                                    * Point error evaluation. Find
-                                    * the first cell containing the
-                                    * given point and compute the
-                                    * difference of a (possibly
-                                    * vector-valued) finite element
-                                    * function and a continuous
-                                    * function (with as many vector
-                                    * components as the finite
-                                    * element) at this point.
-                                    *
-                                    * This is a wrapper function
-                                    * using a Q1-mapping for cell
-                                    * boundaries to call the other
-                                    * point_difference() function.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  void point_difference (const DoFHandler<dim,spacedim>& dof,
-                         const InVector&        fe_function,
-                         const Function<spacedim>&   exact_solution,
-                         Vector<double>&        difference,
-                         const Point<spacedim>&      point);
-
-                                   /**
-                                    * Point error evaluation. Find
-                                    * the first cell containing the
-                                    * given point and compute the
-                                    * difference of a (possibly
-                                    * vector-valued) finite element
-                                    * function and a continuous
-                                    * function (with as many vector
-                                    * components as the finite
-                                    * element) at this point.
-                                    *
-                                    * Compared with the other
-                                    * function of the same name,
-                                    * this function uses an
-                                    * arbitrary mapping to evaluate
-                                    * the difference.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  void point_difference (const Mapping<dim, spacedim>    &mapping,
-                         const DoFHandler<dim,spacedim>& dof,
-                         const InVector&        fe_function,
-                         const Function<spacedim>&   exact_solution,
-                         Vector<double>&        difference,
-                         const Point<spacedim>&      point);
-
-                                   /**
-                                    * Evaluate a possibly
-                                    * vector-valued finite element
-                                    * function defined by the given
-                                    * DoFHandler and nodal vector at
-                                    * the given point, and return
-                                    * the (vector) value of this
-                                    * function through the last
-                                    * argument.
-                                    *
-                                    * This is a wrapper function
-                                    * using a Q1-mapping for cell
-                                    * boundaries to call the other
-                                    * point_difference() function.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point,
-               Vector<double>        &value);
-
-  /**
-   * Same as above for hp.
-   */
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point,
-         Vector<double>        &value);
-
-
-                                   /**
-                                    * Evaluate a scalar finite
-                                    * element function defined by
-                                    * the given DoFHandler and nodal
-                                    * vector at the given point, and
-                                    * return the value of this
-                                    * function.
-                                    *
-                                    * Compared with the other
-                                    * function of the same name,
-                                    * this is a wrapper function using
-                                    * a Q1-mapping for cells.
-                                    *
-                                    * This function is used in the
-                                    * "Possibilities for extensions" part of
-                                    * the results section of @ref step_3
-                                    * "step-3".
-                                    */
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point);
-
-  /**
-   * Same as above for hp.
-   */
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point);
-
-                                   /**
-                                    * Evaluate a possibly
-                                    * vector-valued finite element
-                                    * function defined by the given
-                                    * DoFHandler and nodal vector at
-                                    * the given point, and return
-                                    * the (vector) value of this
-                                    * function through the last
-                                    * argument.
-                                    *
-                                    * Compared with the other
-                                    * function of the same name,
-                                    * this function uses an arbitrary
-                                    * mapping to evaluate the difference.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const Mapping<dim, spacedim>    &mapping,
-               const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point,
-               Vector<double>        &value);
-
-  /**
-   * Same as above for hp.
-   */
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const hp::MappingCollection<dim, spacedim>    &mapping,
-         const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point,
-         Vector<double>        &value);
-
-                                   /**
-                                    * Evaluate a scalar finite
-                                    * element function defined by
-                                    * the given DoFHandler and nodal
-                                    * vector at the given point, and
-                                    * return the value of this
-                                    * function.
-                                    *
-                                    * Compared with the other
-                                    * function of the same name,
-                                    * this function uses an arbitrary
-                                    * mapping to evaluate the difference.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const Mapping<dim,spacedim>    &mapping,
-               const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point);
-
-  /**
-   * Same as above for hp.
-   */
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const hp::MappingCollection<dim,spacedim>    &mapping,
-         const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point);
-
-                                   //@}
-                                   /**
-                                    * Mean value operations
-                                    */
-                                   //@{
-
-                                   /**
-                                    * Subtract the (algebraic) mean value
-                                    * from a vector. This function is most
-                                    * frequently used as a mean-value filter
-                                    * for Stokes: The pressure in Stokes'
-                                    * equations with only Dirichlet
-                                    * boundaries for the velocities is only
-                                    * determined up to a constant. This
-                                    * function allows to subtract the mean
-                                    * value of the pressure. It is usually
-                                    * called in a preconditioner and
-                                    * generates updates with mean value
-                                    * zero. The mean value is computed as
-                                    * the mean value of the degrees of
-                                    * freedom values as given by the input
-                                    * vector; they are not weighted by the
-                                    * area of cells, i.e. the mean is
-                                    * computed as $\sum_i v_i$, rather than
-                                    * as $\int_\Omega v(x) = \int_\Omega
-                                    * \sum_i v_i \phi_i(x)$. The latter can
-                                    * be obtained from the
-                                    * VectorTools::compute_mean_function,
-                                    * however.
-                                    *
-                                    * Apart from the vector @p v to operate
-                                    * on, this function takes a boolean mask
-                                    * that has a true entry for
-                                    * every component for which the mean
-                                    * value shall be computed and later
-                                    * subtracted. The argument is used to
-                                    * denote which components of the
-                                    * solution vector correspond to the
-                                    * pressure, and avoid touching all other
-                                    * components of the vector, such as the
-                                    * velocity components.
-                                    *
-                                    * @note In the context of using this
-                                    * function to filter out the kernel of
-                                    * an operator (such as the null space of
-                                    * the Stokes operator that consists of
-                                    * the constant pressures), this function
-                                    * only makes sense for finite elements
-                                    * for which the null space indeed
-                                    * consists of the vector
-                                    * $(1,1,\ldots,1)^T$. This is the case
-                                    * for example for the usual Lagrange
-                                    * elements where the sum of all shape
-                                    * functions equals the function that is
-                                    * constant one. However, it is not true
-                                    * for some other functions: for example,
-                                    * for the FE_DGP element (another valid
-                                    * choice for the pressure in Stokes
-                                    * discretizations), the first shape
-                                    * function on each cell is constant
-                                    * while further elements are $L_2$
-                                    * orthogonal to it (on the reference
-                                    * cell); consequently, the sum of all
-                                    * shape functions is not equal to one,
-                                    * and the vector that is associated with
-                                    * the constant mode is not equal to
-                                    * $(1,1,\ldots,1)^T$. For such elements,
-                                    * a different procedure has to be used
-                                    * when subtracting the mean value.
-                                    */
-  void subtract_mean_value(Vector<double>          &v,
-                           const std::vector<bool> &p_select);
-
-                                   /**
-                                    * Compute the mean value of one
-                                    * component of the solution.
-                                    *
-                                    * This function integrates the
-                                    * chosen component over the
-                                    * whole domain and returns the
-                                    * result, i.e. it computes
-                                    * $\int_\Omega [u_h(x)]_c \; dx$
-                                    * where $c$ is the vector component
-                                    * and $u_h$ is the function
-                                    * representation of the nodal
-                                    * vector given as fourth
-                                    * argument. The integral is evaluated
-                                    * numerically using the quadrature
-                                    * formula given as third argument.
-                                    *
-                                    * This function is used in the
-                                    * "Possibilities for extensions" part of
-                                    * the results section of @ref step_3
-                                    * "step-3".
-                                    *
-                                    * @note The function is most often used
-                                    * when solving a problem whose solution
-                                    * is only defined up to a constant, for
-                                    * example a pure Neumann problem or the
-                                    * pressure in a Stokes or Navier-Stokes
-                                    * problem. In both cases, subtracting
-                                    * the mean value as computed by the
-                                    * current function, from the nodal
-                                    * vector does not generally yield the
-                                    * desired result of a finite element
-                                    * function with mean value zero. In
-                                    * fact, it only works for Lagrangian
-                                    * elements. For all other elements, you
-                                    * will need to compute the mean value
-                                    * and subtract it right inside the
-                                    * evaluation routine.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  double compute_mean_value (const Mapping<dim, spacedim>    &mapping,
-                             const DoFHandler<dim,spacedim> &dof,
-                             const Quadrature<dim> &quadrature,
-                             const InVector        &v,
-                             const unsigned int     component);
-
-                                   /**
-                                    * Calls the other compute_mean_value()
-                                    * function, see above, with
-                                    * <tt>mapping=MappingQ1@<dim@>()</tt>.
-                                    */
-  template <int dim, class InVector, int spacedim>
-  double compute_mean_value (const DoFHandler<dim,spacedim> &dof,
-                             const Quadrature<dim> &quadrature,
-                             const InVector        &v,
-                             const unsigned int     component);
-                                   //@}
-
-                                   /**
-                                    * Exception
-                                    */
-  DeclException0 (ExcInvalidBoundaryIndicator);
-                                   /**
-                                    * Exception
-                                    */
-  DeclException0 (ExcNonInterpolatingFE);
-                                   /**
-                                    * Exception
-                                    */
-  DeclException0 (ExcNoComponentSelected);
-}
-
+#ifndef __deal2__vectors_h
+#define __deal2__vectors_h
 
-DEAL_II_NAMESPACE_CLOSE
+#include <deal.II/numerics/vector_tools.h>
 
 #endif
index 908df25d49349876752925b25040df279dab09c3..afde36c383a1bc230aee0a9d373a94fb681d5685 100644 (file)
 //
 //---------------------------------------------------------------------------
 
+//this file is deprecated, use vector_tools.templates.h instead
+
 #ifndef _deal2__vectors_templates_h
 #define _deal2__vectors_templates_h
 
-#include <deal.II/base/derivative_form.h>
-#include <deal.II/base/function.h>
-#include <deal.II/base/quadrature.h>
-#include <deal.II/lac/vector.h>
-#include <deal.II/lac/block_vector.h>
-#include <deal.II/lac/parallel_vector.h>
-#include <deal.II/lac/parallel_block_vector.h>
-#include <deal.II/lac/petsc_vector.h>
-#include <deal.II/lac/petsc_block_vector.h>
-#include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
-#include <deal.II/lac/sparse_matrix.h>
-#include <deal.II/lac/compressed_simple_sparsity_pattern.h>
-#include <deal.II/lac/precondition.h>
-#include <deal.II/lac/solver_cg.h>
-#include <deal.II/lac/vector_memory.h>
-#include <deal.II/lac/filtered_matrix.h>
-#include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/grid/tria_iterator.h>
-#include <deal.II/grid/tria_accessor.h>
-#include <deal.II/grid/tria_boundary.h>
-#include <deal.II/grid/grid_tools.h>
-#include <deal.II/grid/intergrid_map.h>
-#include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/dofs/dof_handler.h>
-#include <deal.II/dofs/dof_tools.h>
-#include <deal.II/fe/fe.h>
-#include <deal.II/fe/fe_nedelec.h>
-#include <deal.II/fe/fe_raviart_thomas.h>
-#include <deal.II/fe/fe_system.h>
-#include <deal.II/fe/fe_tools.h>
-#include <deal.II/fe/fe_values.h>
-#include <deal.II/fe/fe_nothing.h>
-#include <deal.II/fe/mapping_q1.h>
-#include <deal.II/hp/dof_handler.h>
-#include <deal.II/hp/fe_values.h>
-#include <deal.II/hp/mapping_collection.h>
-#include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
-
-#include <numeric>
-#include <algorithm>
-#include <vector>
-#include <cmath>
-#include <limits>
-#include <set>
-
-DEAL_II_NAMESPACE_OPEN
-
-
-namespace VectorTools
-{
-
-  template <class VECTOR, class DH>
-  void interpolate (const Mapping<DH::dimension,DH::space_dimension>    &mapping,
-                    const DH              &dof,
-                    const Function<DH::space_dimension>   &function,
-                    VECTOR                &vec)
-  {
-    const unsigned int dim=DH::dimension;
-
-    Assert (dof.get_fe().n_components() == function.n_components,
-            ExcDimensionMismatch(dof.get_fe().n_components(),
-                                 function.n_components));
-
-    const hp::FECollection<DH::dimension,DH::space_dimension> fe (dof.get_fe());
-    const unsigned int          n_components = fe.n_components();
-    const bool                  fe_is_system = (n_components != 1);
-
-    typename DH::active_cell_iterator cell = dof.begin_active(),
-                                      endc = dof.end();
-
-                                     // For FESystems many of the
-                                     // unit_support_points will appear
-                                     // multiple times, as a point may be
-                                     // unit_support_point for several of the
-                                     // components of the system.  The following
-                                     // is rather complicated, but at least
-                                     // attempts to avoid evaluating the
-                                     // vectorfunction multiple times at the
-                                     // same point on a cell.
-                                     //
-                                     // note that we have to set up all of the
-                                     // following arrays for each of the
-                                     // elements in the FECollection (which
-                                     // means only once if this is for a regular
-                                     // DoFHandler)
-    std::vector<std::vector<Point<dim> > > unit_support_points (fe.size());
-    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
-      {
-        unit_support_points[fe_index] = fe[fe_index].get_unit_support_points();
-        Assert (unit_support_points[fe_index].size() != 0,
-                ExcNonInterpolatingFE());
-      }
-
-
-                                     // Find the support points on a cell that
-                                     // are mentioned multiple times in
-                                     // unit_support_points.  Mark the first
-                                     // representative of each support point
-                                     // mentioned multiple times by appending
-                                     // its dof index to dofs_of_rep_points.
-                                     // Each multiple point gets to know the dof
-                                     // index of its representative point by the
-                                     // dof_to_rep_dof_table.
-
-                                     // the following vector collects all dofs i,
-                                     // 0<=i<fe.dofs_per_cell, for that
-                                     // unit_support_points[i]
-                                     // is a representative one. i.e.
-                                     // the following vector collects all rep dofs.
-                                     // the position of a rep dof within this vector
-                                     // is called rep index.
-    std::vector<std::vector<unsigned int> > dofs_of_rep_points(fe.size());
-                                     // the following table converts a dof i
-                                     // to the rep index.
-    std::vector<std::vector<unsigned int> > dof_to_rep_index_table(fe.size());
-
-    std::vector<unsigned int> n_rep_points (fe.size(), 0);
-
-    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
-      {
-        for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
-          {
-            bool representative=true;
-                                             // the following loop is looped
-                                             // the other way round to get
-                                             // the minimal effort of
-                                             // O(fe.dofs_per_cell) for multiple
-                                             // support points that are placed
-                                             // one after the other.
-            for (unsigned int j=dofs_of_rep_points[fe_index].size(); j>0; --j)
-              if (unit_support_points[fe_index][i]
-                  == unit_support_points[fe_index][dofs_of_rep_points[fe_index][j-1]])
-                {
-                  dof_to_rep_index_table[fe_index].push_back(j-1);
-                  representative=false;
-                  break;
-                }
-
-            if (representative)
-              {
-                                                 // rep_index=dofs_of_rep_points.size()
-                dof_to_rep_index_table[fe_index].push_back(dofs_of_rep_points[fe_index].size());
-                                                 // dofs_of_rep_points[rep_index]=i
-                dofs_of_rep_points[fe_index].push_back(i);
-                ++n_rep_points[fe_index];
-              }
-          }
-
-        Assert(dofs_of_rep_points[fe_index].size()==n_rep_points[fe_index],
-               ExcInternalError());
-        Assert(dof_to_rep_index_table[fe_index].size()==fe[fe_index].dofs_per_cell,
-               ExcInternalError());
-      }
-
-    const unsigned int max_rep_points = *std::max_element (n_rep_points.begin(),
-                                                           n_rep_points.end());
-    std::vector<unsigned int> dofs_on_cell (fe.max_dofs_per_cell());
-    std::vector<Point<DH::space_dimension> >  rep_points (max_rep_points);
-
-                                     // get space for the values of the
-                                     // function at the rep support points.
-                                     //
-                                     // have two versions, one for system fe
-                                     // and one for scalar ones, to take the
-                                     // more efficient one respectively
-    std::vector<std::vector<double> >         function_values_scalar(fe.size());
-    std::vector<std::vector<Vector<double> > > function_values_system(fe.size());
-
-                                     // Make a quadrature rule from support points
-                                     // to feed it into FEValues
-    hp::QCollection<dim> support_quadrature;
-    for (unsigned int fe_index=0; fe_index<fe.size(); ++fe_index)
-      support_quadrature.push_back (Quadrature<dim>(unit_support_points[fe_index]));
-
-                                     // Transformed support points are computed by
-                                     // FEValues
-    hp::MappingCollection<dim,DH::space_dimension> mapping_collection (mapping);
-
-    hp::FEValues<dim, DH::space_dimension> fe_values (mapping_collection,
-                                                      fe, support_quadrature, update_quadrature_points);
-
-    for (; cell!=endc; ++cell)
-      if (cell->is_locally_owned())
-        {
-          const unsigned int fe_index = cell->active_fe_index();
-
-                                           // for each cell:
-                                           // get location of finite element
-                                           // support_points
-          fe_values.reinit(cell);
-          const std::vector<Point<DH::space_dimension> >& support_points =
-            fe_values.get_present_fe_values().get_quadrature_points();
-
-                                           // pick out the representative
-                                           // support points
-          rep_points.resize (dofs_of_rep_points[fe_index].size());
-          for (unsigned int j=0; j<dofs_of_rep_points[fe_index].size(); ++j)
-            rep_points[j] = support_points[dofs_of_rep_points[fe_index][j]];
-
-                                           // get indices of the dofs on this cell
-          dofs_on_cell.resize (fe[fe_index].dofs_per_cell);
-          cell->get_dof_indices (dofs_on_cell);
-
-
-          if (fe_is_system)
-            {
-                                               // get function values at
-                                               // these points. Here: get
-                                               // all components
-              function_values_system[fe_index]
-                .resize (n_rep_points[fe_index],
-                         Vector<double> (fe[fe_index].n_components()));
-              function.vector_value_list (rep_points,
-                                          function_values_system[fe_index]);
-                                               // distribute the function
-                                               // values to the global
-                                               // vector
-              for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
-                {
-                  const unsigned int component
-                    = fe[fe_index].system_to_component_index(i).first;
-                  const unsigned int rep_dof=dof_to_rep_index_table[fe_index][i];
-                  vec(dofs_on_cell[i])
-                    = function_values_system[fe_index][rep_dof](component);
-                }
-            }
-          else
-            {
-                                               // get first component only,
-                                               // which is the only component
-                                               // in the function anyway
-              function_values_scalar[fe_index].resize (n_rep_points[fe_index]);
-              function.value_list (rep_points,
-                                   function_values_scalar[fe_index],
-                                   0);
-                                               // distribute the function
-                                               // values to the global
-                                               // vector
-              for (unsigned int i=0; i<fe[fe_index].dofs_per_cell; ++i)
-                vec(dofs_on_cell[i])
-                  = function_values_scalar[fe_index][dof_to_rep_index_table[fe_index][i]];
-            }
-        }
-  }
-
-
-  template <class VECTOR, class DH>
-  void interpolate (const DH              &dof,
-                    const Function<DH::space_dimension>   &function,
-                    VECTOR                &vec)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    interpolate(StaticMappingQ1<DH::dimension, DH::space_dimension>::mapping,
-                dof, function, vec);
-  }
-
-
-
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void
-  interpolate (const DoFHandler<dim,spacedim>           &dof_1,
-               const DoFHandler<dim,spacedim>           &dof_2,
-               const FullMatrix<double>        &transfer,
-               const InVector                  &data_1,
-               OutVector                       &data_2)
-  {
-    Vector<double> cell_data_1(dof_1.get_fe().dofs_per_cell);
-    Vector<double> cell_data_2(dof_2.get_fe().dofs_per_cell);
-
-    std::vector<short unsigned int> touch_count (dof_2.n_dofs(), 0);
-    std::vector<unsigned int>       local_dof_indices (dof_2.get_fe().dofs_per_cell);
-
-    typename DoFHandler<dim,spacedim>::active_cell_iterator h = dof_1.begin_active();
-    typename DoFHandler<dim,spacedim>::active_cell_iterator l = dof_2.begin_active();
-    const typename DoFHandler<dim,spacedim>::cell_iterator endh = dof_1.end();
-
-    for(; h != endh; ++h, ++l)
-      {
-        h->get_dof_values(data_1, cell_data_1);
-        transfer.vmult(cell_data_2, cell_data_1);
-
-        l->get_dof_indices (local_dof_indices);
-
-                                         // distribute cell vector
-        for (unsigned int j=0; j<dof_2.get_fe().dofs_per_cell; ++j)
-          {
-            data_2(local_dof_indices[j]) += cell_data_2(j);
-
-                                             // count, how often we have
-                                             // added to this dof
-            Assert (touch_count[local_dof_indices[j]] < types::internal_face_boundary_id,
-                    ExcInternalError());
-            ++touch_count[local_dof_indices[j]];
-          };
-      };
-
-                                     // compute the mean value of the
-                                     // sum which we have placed in each
-                                     // entry of the output vector
-    for (unsigned int i=0; i<dof_2.n_dofs(); ++i)
-      {
-        Assert (touch_count[i] != 0,
-                ExcInternalError());
-
-        data_2(i) /= touch_count[i];
-      };
-  }
-
-
-  namespace internal
-  {
-    void
-    interpolate_zero_boundary_values (const dealii::DoFHandler<1>   &dof_handler,
-                                      std::map<unsigned int,double> &boundary_values)
-    {
-                                       // we only need to find the
-                                       // left-most and right-most
-                                       // vertex and query its vertex
-                                       // dof indices. that's easy :-)
-      for (unsigned direction=0; direction<2; ++direction)
-        {
-          dealii::DoFHandler<1>::cell_iterator
-            cell = dof_handler.begin(0);
-          while (!cell->at_boundary(direction))
-            cell = cell->neighbor(direction);
-
-          for (unsigned int i=0; i<dof_handler.get_fe().dofs_per_vertex; ++i)
-            boundary_values[cell->vertex_dof_index (direction, i)] = 0.;
-        }
-    }
-
-
-
-                                     // codimension 1
-    void
-    interpolate_zero_boundary_values (const dealii::DoFHandler<1,2> &dof_handler,
-                                      std::map<unsigned int,double> &boundary_values)
-    {
-                                       // we only need to find the
-                                       // left-most and right-most
-                                       // vertex and query its vertex
-                                       // dof indices. that's easy :-)
-      for (unsigned direction=0; direction<2; ++direction)
-        {
-          dealii::DoFHandler<1,2>::cell_iterator
-            cell = dof_handler.begin(0);
-          while (!cell->at_boundary(direction))
-            cell = cell->neighbor(direction);
-
-          for (unsigned int i=0; i<dof_handler.get_fe().dofs_per_vertex; ++i)
-            boundary_values[cell->vertex_dof_index (direction, i)] = 0.;
-        }
-    }
-
-
-
-    template <int dim, int spacedim>
-    void
-    interpolate_zero_boundary_values (const dealii::DoFHandler<dim,spacedim>       &dof_handler,
-                                      std::map<unsigned int,double> &boundary_values)
-    {
-      const FiniteElement<dim,spacedim> &fe = dof_handler.get_fe();
-
-                                       // loop over all boundary faces
-                                       // to get all dof indices of
-                                       // dofs on the boundary. note
-                                       // that in 3d there are cases
-                                       // where a face is not at the
-                                       // boundary, yet one of its
-                                       // lines is, and we should
-                                       // consider the degrees of
-                                       // freedom on it as boundary
-                                       // nodes. likewise, in 2d and
-                                       // 3d there are cases where a
-                                       // cell is only at the boundary
-                                       // by one vertex. nevertheless,
-                                       // since we do not support
-                                       // boundaries with dimension
-                                       // less or equal to dim-2, each
-                                       // such boundary dof is also
-                                       // found from some other face
-                                       // that is actually wholly on
-                                       // the boundary, not only by
-                                       // one line or one vertex
-      typename dealii::DoFHandler<dim,spacedim>::active_face_iterator
-        face = dof_handler.begin_active_face(),
-        endf = dof_handler.end_face();
-      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
-      for (; face!=endf; ++face)
-        if (face->at_boundary())
-          {
-            face->get_dof_indices (face_dof_indices);
-            for (unsigned int i=0; i<fe.dofs_per_face; ++i)
-                                               // enter zero boundary values
-                                               // for all boundary nodes
-                                               //
-                                               // we need not care about
-                                               // vector valued elements here,
-                                               // since we set all components
-              boundary_values[face_dof_indices[i]] = 0.;
-          }
-    }
-  }
-
-
-
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class Vector>
-  void
-  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
-                                 const Vector            &u1,
-                                 const DH<dim, spacedim> &dof2,
-                                 Vector                  &u2)
-  {
-    Assert(GridTools::have_same_coarse_mesh(dof1, dof2),
-           ExcMessage ("The two containers must represent triangulations that "
-                       "have the same coarse meshes"));
-
-    InterGridMap<DH<dim, spacedim> > intergridmap;
-    intergridmap.make_mapping(dof1, dof2);
-
-    ConstraintMatrix dummy;
-    dummy.close();
-
-    interpolate_to_different_mesh(intergridmap, u1, dummy, u2);
-  }
-
-
-
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class Vector>
-  void
-  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
-                                 const Vector            &u1,
-                                 const DH<dim, spacedim> &dof2,
-                                 const ConstraintMatrix  &constraints,
-                                 Vector                  &u2)
-  {
-    Assert(GridTools::have_same_coarse_mesh(dof1, dof2),
-           ExcMessage ("The two containers must represent triangulations that "
-                       "have the same coarse meshes"));
-
-    InterGridMap<DH<dim, spacedim> > intergridmap;
-    intergridmap.make_mapping(dof1, dof2);
-
-    interpolate_to_different_mesh(intergridmap, u1, constraints, u2);
-  }
-
-
-
-  template <int dim, int spacedim,
-            template <int,int> class DH,
-            class Vector>
-  void
-  interpolate_to_different_mesh (const InterGridMap<DH<dim, spacedim> > &intergridmap,
-                                 const Vector                           &u1,
-                                 const ConstraintMatrix                 &constraints,
-                                 Vector                                 &u2)
-  {
-    const DH<dim, spacedim> &dof1 = intergridmap.get_source_grid();
-    const DH<dim, spacedim> &dof2 = intergridmap.get_destination_grid();
-
-    Assert(u1.size()==dof1.n_dofs(),
-           ExcDimensionMismatch(u1.size(), dof1.n_dofs()));
-    Assert(u2.size()==dof2.n_dofs(),
-           ExcDimensionMismatch(u2.size(),dof2.n_dofs()));
-
-    Vector cache;
-
-                                     // Looping over the finest common
-                                     // mesh, this means that source and
-                                     // destination cells have to be on the
-                                     // same level and at least one has to
-                                     // be active.
-                                     //
-                                     // Therefor, loop over all cells
-                                     // (active and inactive) of the source
-                                     // grid ..
-    typename DH<dim,spacedim>::cell_iterator       cell1 = dof1.begin();
-    const typename DH<dim,spacedim>::cell_iterator endc1 = dof1.end();
-
-    for (; cell1 != endc1; ++cell1) {
-      const typename DH<dim,spacedim>::cell_iterator cell2 = intergridmap[cell1];
-
-                                     // .. and skip if source and destination
-                                     // cells are not on the same level ..
-      if (cell1->level() != cell2->level())
-        continue;
-                                     // .. or none of them is active.
-      if (!cell1->active() && !cell2->active())
-        continue;
-
-      Assert(cell1->get_fe().get_name() ==
-             cell2->get_fe().get_name(),
-             ExcMessage ("Source and destination cells need to use the same finite element"));
-
-      cache.reinit(cell1->get_fe().dofs_per_cell);
-
-                                     // Get and set the corresponding
-                                     // dof_values by interpolation.
-      cell1->get_interpolated_dof_values(u1, cache);
-      cell2->set_dof_values_by_interpolation(cache, u2);
-    }
-
-                                     // Apply hanging node constraints.
-    constraints.distribute(u2);
-  }
-
-
-
-  template <int dim, class VECTOR, int spacedim>
-  void project (const Mapping<dim, spacedim>       &mapping,
-                const DoFHandler<dim,spacedim>    &dof,
-                const ConstraintMatrix   &constraints,
-                const Quadrature<dim>    &quadrature,
-                const Function<spacedim>      &function,
-                VECTOR                   &vec_result,
-                const bool                enforce_zero_boundary,
-                const Quadrature<dim-1>  &q_boundary,
-                const bool                project_to_boundary_first)
-  {
-    Assert (dof.get_fe().n_components() == function.n_components,
-            ExcDimensionMismatch(dof.get_fe().n_components(),
-                                 function.n_components));
-
-    Assert (vec_result.size() == dof.n_dofs(),
-            ExcDimensionMismatch (vec_result.size(), dof.n_dofs()));
-
-                                     // make up boundary values
-    std::map<unsigned int,double> boundary_values;
-
-    if (enforce_zero_boundary == true)
-                                       // no need to project boundary
-                                       // values, but enforce
-                                       // homogeneous boundary values
-                                       // anyway
-      internal::
-        interpolate_zero_boundary_values (dof, boundary_values);
-
-    else
-                                       // no homogeneous boundary values
-      if (project_to_boundary_first == true)
-                                         // boundary projection required
-        {
-                                           // set up a list of boundary
-                                           // functions for the
-                                           // different boundary
-                                           // parts. We want the
-                                           // function to hold on
-                                           // all parts of the boundary
-          typename FunctionMap<spacedim>::type boundary_functions;
-          for (types::boundary_id_t c=0; c<types::internal_face_boundary_id; ++c)
-            boundary_functions[c] = &function;
-          project_boundary_values (dof, boundary_functions, q_boundary,
-                                   boundary_values);
-        }
-
-                                     // set up mass matrix and right hand side
-    Vector<double> vec (dof.n_dofs());
-    SparsityPattern sparsity;
-
-                                     // use csp to consume less memory and to
-                                     // still be fast
-    {
-      CompressedSimpleSparsityPattern csp (dof.n_dofs(), dof.n_dofs());
-      DoFTools::make_sparsity_pattern (dof, csp, constraints);
-
-      sparsity.copy_from (csp);
-    }
-
-    SparseMatrix<double> mass_matrix (sparsity);
-    Vector<double> tmp (mass_matrix.n());
-
-                                     // create mass matrix and rhs at once,
-                                     // which is faster.
-    MatrixCreator::create_mass_matrix (mapping, dof, quadrature, mass_matrix,
-                                       function, tmp);
-
-    constraints.condense (mass_matrix);
-    constraints.condense (tmp);
-    if (boundary_values.size() != 0)
-      MatrixTools::apply_boundary_values (boundary_values,
-                                          mass_matrix, vec, tmp,
-                                          true);
-                                     // Allow for a maximum of 5*n
-                                     // steps to reduce the residual by
-                                     // 10^-12. n steps may not be
-                                     // sufficient, since roundoff
-                                     // errors may accumulate for badly
-                                     // conditioned matrices
-    ReductionControl        control(5*tmp.size(), 0., 1e-12, false, false);
-    GrowingVectorMemory<> memory;
-    SolverCG<>              cg(control,memory);
-
-    PreconditionSSOR<> prec;
-    prec.initialize(mass_matrix, 1.2);
-                                     // solve
-    cg.solve (mass_matrix, vec, tmp, prec);
-
-                                     // distribute solution
-    constraints.distribute (vec);
-
-                                     // copy vec into vec_result. we
-                                     // can't use ve_result itself
-                                     // above, since it may be of
-                                     // another type than Vector<double>
-                                     // and that wouldn't necessarily go
-                                     // together with the matrix and
-                                     // other functions
-    for (unsigned int i=0; i<vec.size(); ++i)
-      vec_result(i) = vec(i);
-  }
-
-
-  template <int dim, class VECTOR, int spacedim>
-  void project (const DoFHandler<dim,spacedim>    &dof,
-                const ConstraintMatrix   &constraints,
-                const Quadrature<dim>    &quadrature,
-                const Function<spacedim>      &function,
-                VECTOR                   &vec,
-                const bool                enforce_zero_boundary,
-                const Quadrature<dim-1>  &q_boundary,
-                const bool                project_to_boundary_first)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    project(StaticMappingQ1<dim,spacedim>::mapping, dof, constraints, quadrature, function, vec,
-            enforce_zero_boundary, q_boundary, project_to_boundary_first);
-  }
-
-
-
-
-  template <int dim, int spacedim>
-  void create_right_hand_side (const Mapping<dim, spacedim>    &mapping,
-                               const DoFHandler<dim,spacedim> &dof_handler,
-                               const Quadrature<dim> &quadrature,
-                               const Function<spacedim>   &rhs_function,
-                               Vector<double>        &rhs_vector)
-  {
-    const FiniteElement<dim,spacedim> &fe  = dof_handler.get_fe();
-    Assert (fe.n_components() == rhs_function.n_components,
-            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    rhs_vector = 0;
-
-    UpdateFlags update_flags = UpdateFlags(update_values   |
-                                           update_quadrature_points |
-                                           update_JxW_values);
-    FEValues<dim,spacedim> fe_values (mapping, fe, quadrature, update_flags);
-
-    const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                       n_q_points    = fe_values.n_quadrature_points,
-                       n_components  = fe.n_components();
-
-    std::vector<unsigned int> dofs (dofs_per_cell);
-    Vector<double> cell_vector (dofs_per_cell);
-
-    typename DoFHandler<dim,spacedim>::active_cell_iterator
-      cell = dof_handler.begin_active(),
-      endc = dof_handler.end();
-
-    if (n_components==1)
-      {
-        std::vector<double> rhs_values(n_q_points);
-
-        for (; cell!=endc; ++cell)
-          {
-            fe_values.reinit(cell);
-
-            const std::vector<double> &weights   = fe_values.get_JxW_values ();
-            rhs_function.value_list (fe_values.get_quadrature_points(),
-                                     rhs_values);
-
-            cell_vector = 0;
-            for (unsigned int point=0; point<n_q_points; ++point)
-              for (unsigned int i=0; i<dofs_per_cell; ++i)
-                cell_vector(i) += rhs_values[point] *
-                                  fe_values.shape_value(i,point) *
-                                  weights[point];
-
-            cell->get_dof_indices (dofs);
-
-            for (unsigned int i=0; i<dofs_per_cell; ++i)
-              rhs_vector(dofs[i]) += cell_vector(i);
-          }
-
-      }
-    else
-      {
-        std::vector<Vector<double> > rhs_values(n_q_points,
-                                                Vector<double>(n_components));
-
-        for (; cell!=endc; ++cell)
-          {
-            fe_values.reinit(cell);
-
-            const std::vector<double> &weights   = fe_values.get_JxW_values ();
-            rhs_function.vector_value_list (fe_values.get_quadrature_points(),
-                                            rhs_values);
-
-            cell_vector = 0;
-                                             // Use the faster code if the
-                                             // FiniteElement is primitive
-            if (fe.is_primitive ())
-              {
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    {
-                      const unsigned int component
-                        = fe.system_to_component_index(i).first;
-
-                      cell_vector(i) += rhs_values[point](component) *
-                                        fe_values.shape_value(i,point) *
-                                        weights[point];
-                    }
-              }
-            else
-              {
-                                                 // Otherwise do it the way
-                                                 // proposed for vector valued
-                                                 // elements
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
-                      if (fe.get_nonzero_components(i)[comp_i])
-                        {
-                          cell_vector(i) += rhs_values[point](comp_i) *
-                                            fe_values.shape_value_component(i,point,comp_i) *
-                                            weights[point];
-                        }
-              }
-
-            cell->get_dof_indices (dofs);
-
-            for (unsigned int i=0; i<dofs_per_cell; ++i)
-              rhs_vector(dofs[i]) += cell_vector(i);
-          }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_right_hand_side (const DoFHandler<dim,spacedim>    &dof_handler,
-                               const Quadrature<dim>    &quadrature,
-                               const Function<spacedim>      &rhs_function,
-                               Vector<double>           &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_right_hand_side(StaticMappingQ1<dim,spacedim>::mapping, dof_handler, quadrature,
-                           rhs_function, rhs_vector);
-  }
-
-
-
-
-  template <int dim, int spacedim>
-  void create_right_hand_side (const hp::MappingCollection<dim,spacedim>    &mapping,
-                               const hp::DoFHandler<dim,spacedim> &dof_handler,
-                               const hp::QCollection<dim> &quadrature,
-                               const Function<spacedim>   &rhs_function,
-                               Vector<double>        &rhs_vector)
-  {
-    const hp::FECollection<dim,spacedim> &fe  = dof_handler.get_fe();
-    Assert (fe.n_components() == rhs_function.n_components,
-            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    rhs_vector = 0;
-
-    UpdateFlags update_flags = UpdateFlags(update_values   |
-                                           update_quadrature_points |
-                                           update_JxW_values);
-    hp::FEValues<dim,spacedim> x_fe_values (mapping, fe, quadrature, update_flags);
-
-    const unsigned int n_components  = fe.n_components();
-
-    std::vector<unsigned int> dofs (fe.max_dofs_per_cell());
-    Vector<double> cell_vector (fe.max_dofs_per_cell());
-
-    typename hp::DoFHandler<dim,spacedim>::active_cell_iterator
-      cell = dof_handler.begin_active(),
-      endc = dof_handler.end();
-
-    if (n_components==1)
-      {
-        std::vector<double> rhs_values;
-
-        for (; cell!=endc; ++cell)
-          {
-            x_fe_values.reinit(cell);
-
-            const FEValues<dim,spacedim> &fe_values = x_fe_values.get_present_fe_values();
-
-            const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                               n_q_points    = fe_values.n_quadrature_points;
-            rhs_values.resize (n_q_points);
-            dofs.resize (dofs_per_cell);
-            cell_vector.reinit (dofs_per_cell);
-
-            const std::vector<double> &weights   = fe_values.get_JxW_values ();
-            rhs_function.value_list (fe_values.get_quadrature_points(),
-                                     rhs_values);
-
-            cell_vector = 0;
-            for (unsigned int point=0; point<n_q_points; ++point)
-              for (unsigned int i=0; i<dofs_per_cell; ++i)
-                cell_vector(i) += rhs_values[point] *
-                                  fe_values.shape_value(i,point) *
-                                  weights[point];
-
-            cell->get_dof_indices (dofs);
-
-            for (unsigned int i=0; i<dofs_per_cell; ++i)
-              rhs_vector(dofs[i]) += cell_vector(i);
-          }
-
-      }
-    else
-      {
-        std::vector<Vector<double> > rhs_values;
-
-        for (; cell!=endc; ++cell)
-          {
-            x_fe_values.reinit(cell);
-
-            const FEValues<dim,spacedim> &fe_values = x_fe_values.get_present_fe_values();
-
-            const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                               n_q_points    = fe_values.n_quadrature_points;
-            rhs_values.resize (n_q_points,
-                               Vector<double>(n_components));
-            dofs.resize (dofs_per_cell);
-            cell_vector.reinit (dofs_per_cell);
-
-            const std::vector<double> &weights   = fe_values.get_JxW_values ();
-            rhs_function.vector_value_list (fe_values.get_quadrature_points(),
-                                            rhs_values);
-
-            cell_vector = 0;
-
-                                             // Use the faster code if the
-                                             // FiniteElement is primitive
-            if (cell->get_fe().is_primitive ())
-              {
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    {
-                      const unsigned int component
-                        = cell->get_fe().system_to_component_index(i).first;
-
-                      cell_vector(i) += rhs_values[point](component) *
-                                        fe_values.shape_value(i,point) *
-                                        weights[point];
-                    }
-              }
-            else
-              {
-                                                 // Otherwise do it the way proposed
-                                                 // for vector valued elements
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
-                      if (cell->get_fe().get_nonzero_components(i)[comp_i])
-                        {
-                          cell_vector(i) += rhs_values[point](comp_i) *
-                                            fe_values.shape_value_component(i,point,comp_i) *
-                                            weights[point];
-                        }
-              }
-
-            cell->get_dof_indices (dofs);
-
-            for (unsigned int i=0; i<dofs_per_cell; ++i)
-              rhs_vector(dofs[i]) += cell_vector(i);
-          }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_right_hand_side (const hp::DoFHandler<dim,spacedim>    &dof_handler,
-                               const hp::QCollection<dim>    &quadrature,
-                               const Function<spacedim>      &rhs_function,
-                               Vector<double>           &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_right_hand_side(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
-                           dof_handler, quadrature,
-                           rhs_function, rhs_vector);
-  }
-
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const Mapping<dim, spacedim>       &mapping,
-                                   const DoFHandler<dim,spacedim>    &dof_handler,
-                                   const Point<spacedim>         &p,
-                                   Vector<double>           &rhs_vector)
-  {
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    Assert (dof_handler.get_fe().n_components() == 1,
-            ExcMessage ("This function only works for scalar finite elements"));
-
-    rhs_vector = 0;
-
-    std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point =
-      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
-
-    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-
-    FEValues<dim,spacedim> fe_values(mapping, dof_handler.get_fe(),
-                                     q, UpdateFlags(update_values));
-    fe_values.reinit(cell_point.first);
-
-    const unsigned int dofs_per_cell = dof_handler.get_fe().dofs_per_cell;
-
-    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-    cell_point.first->get_dof_indices (local_dof_indices);
-
-    for(unsigned int i=0; i<dofs_per_cell; i++)
-      rhs_vector(local_dof_indices[i]) =  fe_values.shape_value(i,0);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const DoFHandler<dim,spacedim>    &dof_handler,
-                                   const Point<spacedim>         &p,
-                                   Vector<double>           &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_point_source_vector(StaticMappingQ1<dim,spacedim>::mapping, dof_handler,
-                               p, rhs_vector);
-  }
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const hp::MappingCollection<dim,spacedim>       &mapping,
-                                   const hp::DoFHandler<dim,spacedim>    &dof_handler,
-                                   const Point<spacedim>         &p,
-                                   Vector<double>           &rhs_vector)
-  {
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    Assert (dof_handler.get_fe().n_components() == 1,
-            ExcMessage ("This function only works for scalar finite elements"));
-
-    rhs_vector = 0;
-
-    std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point =
-      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
-
-    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-
-    FEValues<dim> fe_values(mapping[cell_point.first->active_fe_index()],
-                            cell_point.first->get_fe(), q, UpdateFlags(update_values));
-    fe_values.reinit(cell_point.first);
-
-    const unsigned int dofs_per_cell = cell_point.first->get_fe().dofs_per_cell;
-
-    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-    cell_point.first->get_dof_indices (local_dof_indices);
-
-    for(unsigned int i=0; i<dofs_per_cell; i++)
-      rhs_vector(local_dof_indices[i]) =  fe_values.shape_value(i,0);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const hp::DoFHandler<dim,spacedim>    &dof_handler,
-                                   const Point<spacedim>         &p,
-                                   Vector<double>           &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_point_source_vector(hp::StaticMappingQ1<dim>::mapping_collection,
-                               dof_handler,
-                               p, rhs_vector);
-  }
-
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const Mapping<dim, spacedim>       &mapping,
-                                   const DoFHandler<dim,spacedim>     &dof_handler,
-                                   const Point<spacedim>              &p,
-                                   const Point<dim>                   &orientation,
-                                   Vector<double>                     &rhs_vector)
-  {
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    Assert (dof_handler.get_fe().n_components() == dim,
-            ExcMessage ("This function only works for vector-valued finite elements."));
-
-    rhs_vector = 0;
-
-    std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point =
-      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
-
-    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-
-    const FEValuesExtractors::Vector vec (0);
-    FEValues<dim,spacedim> fe_values(mapping, dof_handler.get_fe(),
-                                     q, UpdateFlags(update_values));
-    fe_values.reinit(cell_point.first);
-
-    const unsigned int dofs_per_cell = dof_handler.get_fe().dofs_per_cell;
-
-    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-    cell_point.first->get_dof_indices (local_dof_indices);
-
-    for(unsigned int i=0; i<dofs_per_cell; i++)
-      rhs_vector(local_dof_indices[i]) =  orientation * fe_values[vec].value(i,0);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const DoFHandler<dim,spacedim>    &dof_handler,
-                                   const Point<spacedim>             &p,
-                                   const Point<dim>                  &orientation,
-                                   Vector<double>                    &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_point_source_vector(StaticMappingQ1<dim,spacedim>::mapping, dof_handler,
-                               p, orientation, rhs_vector);
-  }
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const hp::MappingCollection<dim,spacedim> &mapping,
-                                   const hp::DoFHandler<dim,spacedim>        &dof_handler,
-                                   const Point<spacedim>                     &p,
-                                   const Point<dim>                          &orientation,
-                                   Vector<double>                            &rhs_vector)
-  {
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-    Assert (dof_handler.get_fe().n_components() == dim,
-            ExcMessage ("This function only works for vector-valued finite elements."));
-
-    rhs_vector = 0;
-
-    std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point =
-      GridTools::find_active_cell_around_point (mapping, dof_handler, p);
-
-    Quadrature<dim> q(GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-
-    const FEValuesExtractors::Vector vec (0);
-    FEValues<dim> fe_values(mapping[cell_point.first->active_fe_index()],
-                            cell_point.first->get_fe(), q, UpdateFlags(update_values));
-    fe_values.reinit(cell_point.first);
-
-    const unsigned int dofs_per_cell = cell_point.first->get_fe().dofs_per_cell;
-
-    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-    cell_point.first->get_dof_indices (local_dof_indices);
-
-    for(unsigned int i=0; i<dofs_per_cell; i++)
-      rhs_vector(local_dof_indices[i]) =  orientation * fe_values[vec].value(i,0);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void create_point_source_vector (const hp::DoFHandler<dim,spacedim>   &dof_handler,
-                                   const Point<spacedim>                &p,
-                                   const Point<dim>                     &orientation,
-                                   Vector<double>                       &rhs_vector)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_point_source_vector(hp::StaticMappingQ1<dim>::mapping_collection,
-                               dof_handler,
-                               p, orientation, rhs_vector);
-  }
-
-
-
-// separate implementation for 1D because otherwise we get linker errors since
-// FEFaceValues<1> is not compiled
-  template <>
-  void
-  create_boundary_right_hand_side (const Mapping<1,1>    &,
-                                   const DoFHandler<1,1> &,
-                                   const Quadrature<0>   &,
-                                   const Function<1>     &,
-                                   Vector<double>        &,
-                                   const std::set<types::boundary_id_t> &)
-  {
-    Assert (false, ExcImpossibleInDim(1));
-  }
-
-
-
-  template <>
-  void
-  create_boundary_right_hand_side (const Mapping<1,2>    &,
-                                   const DoFHandler<1,2> &,
-                                   const Quadrature<0>   &,
-                                   const Function<2>     &,
-                                   Vector<double>        &,
-                                   const std::set<types::boundary_id_t> &)
-  {
-    Assert (false, ExcImpossibleInDim(1));
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  create_boundary_right_hand_side (const Mapping<dim, spacedim>      &mapping,
-                                   const DoFHandler<dim,spacedim>   &dof_handler,
-                                   const Quadrature<dim-1> &quadrature,
-                                   const Function<spacedim>     &rhs_function,
-                                   Vector<double>          &rhs_vector,
-                                   const std::set<types::boundary_id_t> &boundary_indicators)
-  {
-    const FiniteElement<dim> &fe  = dof_handler.get_fe();
-    Assert (fe.n_components() == rhs_function.n_components,
-            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-
-    rhs_vector = 0;
-
-    UpdateFlags update_flags = UpdateFlags(update_values   |
-                                           update_quadrature_points |
-                                           update_JxW_values);
-    FEFaceValues<dim> fe_values (mapping, fe, quadrature, update_flags);
-
-    const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                       n_q_points    = fe_values.n_quadrature_points,
-                       n_components  = fe.n_components();
-
-    std::vector<unsigned int> dofs (dofs_per_cell);
-    Vector<double> cell_vector (dofs_per_cell);
-
-    typename DoFHandler<dim,spacedim>::active_cell_iterator cell = dof_handler.begin_active(),
-                                                            endc = dof_handler.end();
-
-    if (n_components==1)
-      {
-        std::vector<double> rhs_values(n_q_points);
-
-        for (; cell!=endc; ++cell)
-          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-            if (cell->face(face)->at_boundary () &&
-                (boundary_indicators.empty() ||
-                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
-                  !=
-                  boundary_indicators.end())))
-              {
-                fe_values.reinit(cell, face);
-
-                const std::vector<double> &weights   = fe_values.get_JxW_values ();
-                rhs_function.value_list (fe_values.get_quadrature_points(), rhs_values);
-
-                cell_vector = 0;
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    cell_vector(i) += rhs_values[point] *
-                                      fe_values.shape_value(i,point) *
-                                      weights[point];
-
-                cell->get_dof_indices (dofs);
-
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  rhs_vector(dofs[i]) += cell_vector(i);
-              }
-      }
-    else
-      {
-        std::vector<Vector<double> > rhs_values(n_q_points, Vector<double>(n_components));
-
-        for (; cell!=endc; ++cell)
-          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-            if (cell->face(face)->at_boundary () &&
-                (boundary_indicators.empty() ||
-                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
-                  !=
-                  boundary_indicators.end())))
-              {
-                fe_values.reinit(cell, face);
-
-                const std::vector<double> &weights   = fe_values.get_JxW_values ();
-                rhs_function.vector_value_list (fe_values.get_quadrature_points(), rhs_values);
-
-                cell_vector = 0;
-
-                                                 // Use the faster code if the
-                                                 // FiniteElement is primitive
-                if (fe.is_primitive ())
-                  {
-                    for (unsigned int point=0; point<n_q_points; ++point)
-                      for (unsigned int i=0; i<dofs_per_cell; ++i)
-                        {
-                          const unsigned int component
-                            = fe.system_to_component_index(i).first;
-
-                          cell_vector(i) += rhs_values[point](component) *
-                                            fe_values.shape_value(i,point) *
-                                            weights[point];
-                        }
-                  }
-                else
-                  {
-                                                     // And the full featured
-                                                     // code, if vector valued
-                                                     // FEs are used
-                    for (unsigned int point=0; point<n_q_points; ++point)
-                      for (unsigned int i=0; i<dofs_per_cell; ++i)
-                        for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
-                          if (fe.get_nonzero_components(i)[comp_i])
-                            {
-                              cell_vector(i)
-                                += rhs_values[point](comp_i) *
-                                fe_values.shape_value_component(i,point,comp_i) *
-                                weights[point];
-                            }
-                  }
-
-                cell->get_dof_indices (dofs);
-
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  rhs_vector(dofs[i]) += cell_vector(i);
-              }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  create_boundary_right_hand_side (const DoFHandler<dim,spacedim>   &dof_handler,
-                                   const Quadrature<dim-1> &quadrature,
-                                   const Function<spacedim>     &rhs_function,
-                                   Vector<double>          &rhs_vector,
-                                   const std::set<types::boundary_id_t> &boundary_indicators)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-
-    create_boundary_right_hand_side(StaticMappingQ1<dim>::mapping, dof_handler,
-                                    quadrature,
-                                    rhs_function, rhs_vector,
-                                    boundary_indicators);
-  }
-
-
-
-// separate implementation for 1D because otherwise we get linker errors since
-// hp::FEFaceValues<1> is not compiled
-  template <>
-  void
-  create_boundary_right_hand_side (const hp::MappingCollection<1,1>      &,
-                                   const hp::DoFHandler<1,1>   &,
-                                   const hp::QCollection<0> &,
-                                   const Function<1>     &,
-                                   Vector<double>          &,
-                                   const std::set<types::boundary_id_t> &)
-  {
-    Assert (false, ExcImpossibleInDim(1));
-  }
-
-
-
-  template <>
-  void
-  create_boundary_right_hand_side (const hp::MappingCollection<1,2>      &,
-                                   const hp::DoFHandler<1,2>   &,
-                                   const hp::QCollection<0> &,
-                                   const Function<2>     &,
-                                   Vector<double>          &,
-                                   const std::set<types::boundary_id_t> &)
-  {
-    Assert (false, ExcImpossibleInDim(1));
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  create_boundary_right_hand_side (const hp::MappingCollection<dim,spacedim> &mapping,
-                                   const hp::DoFHandler<dim,spacedim> &dof_handler,
-                                   const hp::QCollection<dim-1>  &quadrature,
-                                   const Function<spacedim>      &rhs_function,
-                                   Vector<double>                &rhs_vector,
-                                   const std::set<types::boundary_id_t> &boundary_indicators)
-  {
-    const hp::FECollection<dim> &fe  = dof_handler.get_fe();
-    Assert (fe.n_components() == rhs_function.n_components,
-            ExcDimensionMismatch(fe.n_components(), rhs_function.n_components));
-    Assert (rhs_vector.size() == dof_handler.n_dofs(),
-            ExcDimensionMismatch(rhs_vector.size(), dof_handler.n_dofs()));
-
-    rhs_vector = 0;
-
-    UpdateFlags update_flags = UpdateFlags(update_values   |
-                                           update_quadrature_points |
-                                           update_JxW_values);
-    hp::FEFaceValues<dim> x_fe_values (mapping, fe, quadrature, update_flags);
-
-    const unsigned int n_components  = fe.n_components();
-
-    std::vector<unsigned int> dofs (fe.max_dofs_per_cell());
-    Vector<double> cell_vector (fe.max_dofs_per_cell());
-
-    typename hp::DoFHandler<dim,spacedim>::active_cell_iterator
-      cell = dof_handler.begin_active(),
-      endc = dof_handler.end();
-
-    if (n_components==1)
-      {
-        std::vector<double> rhs_values;
-
-        for (; cell!=endc; ++cell)
-          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-            if (cell->face(face)->at_boundary () &&
-                (boundary_indicators.empty() ||
-                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
-                  !=
-                  boundary_indicators.end())))
-              {
-                x_fe_values.reinit(cell, face);
-
-                const FEFaceValues<dim> &fe_values = x_fe_values.get_present_fe_values();
-
-                const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                                   n_q_points    = fe_values.n_quadrature_points;
-                rhs_values.resize (n_q_points);
-
-                const std::vector<double> &weights   = fe_values.get_JxW_values ();
-                rhs_function.value_list (fe_values.get_quadrature_points(), rhs_values);
-
-                cell_vector = 0;
-                for (unsigned int point=0; point<n_q_points; ++point)
-                  for (unsigned int i=0; i<dofs_per_cell; ++i)
-                    cell_vector(i) += rhs_values[point] *
-                                      fe_values.shape_value(i,point) *
-                                      weights[point];
-
-                dofs.resize(dofs_per_cell);
-                cell->get_dof_indices (dofs);
-
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  rhs_vector(dofs[i]) += cell_vector(i);
-              }
-      }
-    else
-      {
-        std::vector<Vector<double> > rhs_values;
-
-        for (; cell!=endc; ++cell)
-          for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
-            if (cell->face(face)->at_boundary () &&
-                (boundary_indicators.empty() ||
-                 (boundary_indicators.find (cell->face(face)->boundary_indicator())
-                  !=
-                  boundary_indicators.end())))
-              {
-                x_fe_values.reinit(cell, face);
-
-                const FEFaceValues<dim> &fe_values = x_fe_values.get_present_fe_values();
-
-                const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
-                                   n_q_points    = fe_values.n_quadrature_points;
-                rhs_values.resize (n_q_points, Vector<double>(n_components));
-
-                const std::vector<double> &weights   = fe_values.get_JxW_values ();
-                rhs_function.vector_value_list (fe_values.get_quadrature_points(), rhs_values);
-
-                cell_vector = 0;
-
-                                                 // Use the faster code if the
-                                                 // FiniteElement is primitive
-                if (cell->get_fe().is_primitive ())
-                  {
-                    for (unsigned int point=0; point<n_q_points; ++point)
-                      for (unsigned int i=0; i<dofs_per_cell; ++i)
-                        {
-                          const unsigned int component
-                            = cell->get_fe().system_to_component_index(i).first;
-
-                          cell_vector(i) += rhs_values[point](component) *
-                                            fe_values.shape_value(i,point) *
-                                            weights[point];
-                        }
-                  }
-                else
-                  {
-                                                     // And the full featured
-                                                     // code, if vector valued
-                                                     // FEs are used
-                    for (unsigned int point=0; point<n_q_points; ++point)
-                      for (unsigned int i=0; i<dofs_per_cell; ++i)
-                        for (unsigned int comp_i = 0; comp_i < n_components; ++comp_i)
-                          if (cell->get_fe().get_nonzero_components(i)[comp_i])
-                            {
-                              cell_vector(i)
-                                += rhs_values[point](comp_i) *
-                                fe_values.shape_value_component(i,point,comp_i) *
-                                weights[point];
-                            }
-                  }
-                dofs.resize(dofs_per_cell);
-                cell->get_dof_indices (dofs);
-
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  rhs_vector(dofs[i]) += cell_vector(i);
-              }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  create_boundary_right_hand_side (const hp::DoFHandler<dim,spacedim> &dof_handler,
-                                   const hp::QCollection<dim-1>  &quadrature,
-                                   const Function<spacedim>      &rhs_function,
-                                   Vector<double>                &rhs_vector,
-                                   const std::set<types::boundary_id_t> &boundary_indicators)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    create_boundary_right_hand_side(hp::StaticMappingQ1<dim>::mapping_collection,
-                                    dof_handler, quadrature,
-                                    rhs_function, rhs_vector,
-                                    boundary_indicators);
-  }
-
-
-
-// ----------- interpolate_boundary_values for std::map --------------------
-
-  namespace internal
-  {
-                                     // interpolate boundary values in
-                                     // 1d. in higher dimensions, we
-                                     // use FEValues to figure out
-                                     // what to do on faces, but in 1d
-                                     // faces are points and it is far
-                                     // easier to simply work on
-                                     // individual vertices
-    template <class DH>
-    static inline
-    void interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension> &,
-                                      const DH                 &dof,
-                                      const typename FunctionMap<DH::space_dimension>::type &function_map,
-                                      std::map<unsigned int,double> &boundary_values,
-                                      const std::vector<bool>       &component_mask_,
-                                      const dealii::internal::int2type<1>)
-    {
-      const unsigned int dim = DH::dimension;
-      const unsigned int spacedim=DH::space_dimension;
-
-      Assert ((component_mask_.size() == 0) ||
-              (component_mask_.size() == dof.get_fe().n_components()),
-              ExcMessage ("The number of components in the mask has to be either "
-                          "zero or equal to the number of components in the finite "
-                          "element."));
-
-                                       // if for whatever reason we were
-                                       // passed an empty map, return
-                                       // immediately
-      if (function_map.size() == 0)
-        return;
-
-      for (typename FunctionMap<spacedim>::type::const_iterator i=function_map.begin();
-           i!=function_map.end(); ++i)
-        Assert (i->first < 2,
-                ExcInvalidBoundaryIndicator());
-
-      for (typename DH::active_cell_iterator cell = dof.begin_active();
-           cell != dof.end(); ++cell)
-        for (unsigned int direction=0;
-             direction<GeometryInfo<dim>::faces_per_cell; ++direction)
-          if (cell->at_boundary(direction)
-              &&
-              (function_map.find(direction) != function_map.end()))
-            {
-              const Function<DH::space_dimension> & boundary_function
-                = *function_map.find(direction)->second;
-
-                                               // get the FE corresponding to this
-                                               // cell
-              const FiniteElement<dim,spacedim> &fe = cell->get_fe();
-              Assert (fe.n_components() == boundary_function.n_components,
-                      ExcDimensionMismatch(fe.n_components(),
-                                           boundary_function.n_components));
-
-                                               // set the component mask to either
-                                               // the original value or a vector
-                                               // of trues
-              const std::vector<bool> component_mask ((component_mask_.size() == 0) ?
-                                                      std::vector<bool> (fe.n_components(), true) :
-                                                      component_mask_);
-              Assert (std::count(component_mask.begin(), component_mask.end(), true) > 0,
-                      ExcNoComponentSelected());
-
-                                               // now set the value of
-                                               // the vertex degree of
-                                               // freedom. setting
-                                               // also creates the
-                                               // entry in the map if
-                                               // it did not exist
-                                               // beforehand
-                                               //
-                                               // save some time by
-                                               // requesting values
-                                               // only once for each
-                                               // point, irrespective
-                                               // of the number of
-                                               // components of the
-                                               // function
-              dealii::Vector<double> function_values (fe.n_components());
-              if (fe.n_components() == 1)
-                function_values(0)
-                  = boundary_function.value (cell->vertex(direction));
-              else
-                boundary_function.vector_value (cell->vertex(direction),
-                                                function_values);
-
-              for (unsigned int i=0; i<fe.dofs_per_vertex; ++i)
-                if (component_mask[fe.face_system_to_component_index(i).first])
-                  boundary_values[cell->
-                                  vertex_dof_index(direction,i,
-                                                   cell->active_fe_index())]
-                    = function_values(fe.face_system_to_component_index(i).first);
-            }
-    }
-
-
-
-    template <class DH>
-    static inline
-    void
-    interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension> &mapping,
-                                 const DH                 &dof,
-                                 const typename FunctionMap<DH::space_dimension>::type &function_map,
-                                 std::map<unsigned int,double> &boundary_values,
-                                 const std::vector<bool>       &component_mask_,
-                                 const dealii::internal::int2type<DH::dimension>)
-    {
-      const unsigned int dim = DH::dimension;
-      const unsigned int spacedim=DH::space_dimension;
-
-      Assert ((component_mask_.size() == 0) ||
-              (component_mask_.size() == dof.get_fe().n_components()),
-              ExcMessage ("The number of components in the mask has to be either "
-                          "zero or equal to the number of components in the finite "
-                          "element."));
-
-
-                                       // if for whatever reason we were
-                                       // passed an empty map, return
-                                       // immediately
-      if (function_map.size() == 0)
-        return;
-
-      Assert (function_map.find(types::internal_face_boundary_id) == function_map.end(),
-              ExcInvalidBoundaryIndicator());
-
-      const unsigned int        n_components = DoFTools::n_components(dof);
-      const bool                fe_is_system = (n_components != 1);
-
-      for (typename FunctionMap<spacedim>::type::const_iterator i=function_map.begin();
-           i!=function_map.end(); ++i)
-        Assert (n_components == i->second->n_components,
-                ExcDimensionMismatch(n_components, i->second->n_components));
-
-                                       // set the component mask to either
-                                       // the original value or a vector
-                                       // of trues
-      const std::vector<bool> component_mask ((component_mask_.size() == 0) ?
-                                              std::vector<bool> (n_components, true) :
-                                              component_mask_);
-      Assert (std::count(component_mask.begin(), component_mask.end(), true) > 0,
-              ExcNoComponentSelected());
-
-                                       // field to store the indices
-      std::vector<unsigned int> face_dofs;
-      face_dofs.reserve (DoFTools::max_dofs_per_face(dof));
-
-      std::vector<Point<spacedim> >  dof_locations;
-      dof_locations.reserve (DoFTools::max_dofs_per_face(dof));
-
-                                       // array to store the values of
-                                       // the boundary function at the
-                                       // boundary points. have two arrays
-                                       // for scalar and vector functions
-                                       // to use the more efficient one
-                                       // respectively
-      std::vector<double>          dof_values_scalar;
-      std::vector<dealii::Vector<double> > dof_values_system;
-      dof_values_scalar.reserve (DoFTools::max_dofs_per_face (dof));
-      dof_values_system.reserve (DoFTools::max_dofs_per_face (dof));
-
-                                       // before we start with the loop
-                                       // over all cells create an
-                                       // hp::FEValues object that holds
-                                       // the interpolation points of all
-                                       // finite elements that may ever be
-                                       // in use
-      dealii::hp::FECollection<dim,spacedim> finite_elements (dof.get_fe());
-      dealii::hp::QCollection<dim-1>  q_collection;
-      for (unsigned int f=0; f<finite_elements.size(); ++f)
-        {
-          const FiniteElement<dim,spacedim> &fe = finite_elements[f];
-
-                                           // generate a quadrature rule
-                                           // on the face from the unit
-                                           // support points. this will be
-                                           // used to obtain the
-                                           // quadrature points on the
-                                           // real cell's face
-                                           //
-                                           // to do this, we check whether
-                                           // the FE has support points on
-                                           // the face at all:
-          if (fe.has_face_support_points())
-            q_collection.push_back (Quadrature<dim-1>(fe.get_unit_face_support_points()));
-          else
-            {
-                                               // if not, then we should
-                                               // try a more clever
-                                               // way. the idea is that a
-                                               // finite element may not
-                                               // offer support points for
-                                               // all its shape functions,
-                                               // but maybe only some. if
-                                               // it offers support points
-                                               // for the components we
-                                               // are interested in in
-                                               // this function, then
-                                               // that's fine. if not, the
-                                               // function we call in the
-                                               // finite element will
-                                               // raise an exception. the
-                                               // support points for the
-                                               // other shape functions
-                                               // are left uninitialized
-                                               // (well, initialized by
-                                               // the default
-                                               // constructor), since we
-                                               // don't need them anyway.
-                                               //
-                                               // As a detour, we must
-                                               // make sure we only query
-                                               // face_system_to_component_index
-                                               // if the index corresponds
-                                               // to a primitive shape
-                                               // function. since we know
-                                               // that all the components
-                                               // we are interested in are
-                                               // primitive (by the above
-                                               // check), we can safely
-                                               // put such a check in
-                                               // front
-              std::vector<Point<dim-1> > unit_support_points (fe.dofs_per_face);
-
-              for (unsigned int i=0; i<fe.dofs_per_face; ++i)
-                if (fe.is_primitive (fe.face_to_equivalent_cell_index(i)))
-                  if (component_mask[fe.face_system_to_component_index(i).first]
-                      == true)
-                    unit_support_points[i] = fe.unit_face_support_point(i);
-
-              q_collection.push_back (Quadrature<dim-1>(unit_support_points));
-            }
-        }
-                                       // now that we have a q_collection
-                                       // object with all the right
-                                       // quadrature points, create an
-                                       // hp::FEFaceValues object that we
-                                       // can use to evaluate the boundary
-                                       // values at
-      dealii::hp::MappingCollection<dim,spacedim> mapping_collection (mapping);
-      dealii::hp::FEFaceValues<dim,spacedim> x_fe_values (mapping_collection, finite_elements, q_collection,
-                                                          update_quadrature_points);
-
-      typename DH::active_cell_iterator cell = dof.begin_active(),
-                                        endc = dof.end();
-      for (; cell!=endc; ++cell)
-        if (!cell->is_artificial())
-          for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
-               ++face_no)
-            {
-              const FiniteElement<dim,spacedim> &fe = cell->get_fe();
-
-                                               // we can presently deal only with
-                                               // primitive elements for boundary
-                                               // values. this does not preclude
-                                               // us using non-primitive elements
-                                               // in components that we aren't
-                                               // interested in, however. make
-                                               // sure that all shape functions
-                                               // that are non-zero for the
-                                               // components we are interested in,
-                                               // are in fact primitive
-              for (unsigned int i=0; i<cell->get_fe().dofs_per_cell; ++i)
-                {
-                  const std::vector<bool> &nonzero_component_array
-                    = cell->get_fe().get_nonzero_components (i);
-                  for (unsigned int c=0; c<n_components; ++c)
-                    if ((nonzero_component_array[c] == true)
-                        &&
-                        (component_mask[c] == true))
-                      Assert (cell->get_fe().is_primitive (i),
-                              ExcMessage ("This function can only deal with requested boundary "
-                                          "values that correspond to primitive (scalar) base "
-                                          "elements"));
-                }
-
-              const typename DH::face_iterator face = cell->face(face_no);
-              const types::boundary_id_t boundary_component = face->boundary_indicator();
-
-                                              // see if this face is
-                                              // part of the
-                                              // boundaries for which
-                                              // we are supposed to
-                                              // do something, and
-                                              // also see if the
-                                              // finite element in
-                                              // use here has DoFs on
-                                              // the face at all
-              if ((function_map.find(boundary_component) != function_map.end())
-                 &&
-                 (cell->get_fe().dofs_per_face > 0))
-                {
-                                                   // face is of the right component
-                  x_fe_values.reinit(cell, face_no);
-                  const dealii::FEFaceValues<dim,spacedim> &fe_values =
-                    x_fe_values.get_present_fe_values();
-
-                                                   // get indices, physical location and
-                                                   // boundary values of dofs on this
-                                                   // face
-                  face_dofs.resize (fe.dofs_per_face);
-                  face->get_dof_indices (face_dofs, cell->active_fe_index());
-                  const std::vector<Point<spacedim> > &dof_locations
-                    = fe_values.get_quadrature_points ();
-
-                  if (fe_is_system)
-                    {
-                                                       // resize
-                                                       // array. avoid
-                                                       // construction of a
-                                                       // memory allocating
-                                                       // temporary if
-                                                       // possible
-                      if (dof_values_system.size() < fe.dofs_per_face)
-                        dof_values_system.resize (fe.dofs_per_face,
-                                                  dealii::Vector<double>(fe.n_components()));
-                      else
-                        dof_values_system.resize (fe.dofs_per_face);
-
-                      function_map.find(boundary_component)->second
-                        ->vector_value_list (dof_locations, dof_values_system);
-
-                                                       // enter those dofs
-                                                       // into the list that
-                                                       // match the
-                                                       // component
-                                                       // signature. avoid
-                                                       // the usual
-                                                       // complication that
-                                                       // we can't just use
-                                                       // *_system_to_component_index
-                                                       // for non-primitive
-                                                       // FEs
-                      for (unsigned int i=0; i<face_dofs.size(); ++i)
-                        {
-                          unsigned int component;
-                          if (fe.is_primitive())
-                            component = fe.face_system_to_component_index(i).first;
-                          else
-                            {
-                                                               // non-primitive
-                                                               // case. make
-                                                               // sure that
-                                                               // this
-                                                               // particular
-                                                               // shape
-                                                               // function
-                                                               // _is_
-                                                               // primitive,
-                                                               // and get at
-                                                               // it's
-                                                               // component. use
-                                                               // usual
-                                                               // trick to
-                                                               // transfer
-                                                               // face dof
-                                                               // index to
-                                                               // cell dof
-                                                               // index
-                              const unsigned int cell_i
-                                = (dim == 1 ?
-                                   i
-                                   :
-                                   (dim == 2 ?
-                                    (i<2*fe.dofs_per_vertex ? i : i+2*fe.dofs_per_vertex)
-                                    :
-                                    (dim == 3 ?
-                                     (i<4*fe.dofs_per_vertex ?
-                                      i
-                                      :
-                                      (i<4*fe.dofs_per_vertex+4*fe.dofs_per_line ?
-                                       i+4*fe.dofs_per_vertex
-                                       :
-                                       i+4*fe.dofs_per_vertex+8*fe.dofs_per_line))
-                                     :
-                                     numbers::invalid_unsigned_int)));
-                              Assert (cell_i < fe.dofs_per_cell, ExcInternalError());
-
-                                                               // make sure
-                                                               // that if
-                                                               // this is
-                                                               // not a
-                                                               // primitive
-                                                               // shape function,
-                                                               // then all
-                                                               // the
-                                                               // corresponding
-                                                               // components
-                                                               // in the
-                                                               // mask are
-                                                               // not set
-                              if (!fe.is_primitive(cell_i))
-                                for (unsigned int c=0; c<n_components; ++c)
-                                  if (fe.get_nonzero_components(cell_i)[c])
-                                    Assert (component_mask[c] == false,
-                                            FETools::ExcFENotPrimitive());
-
-                                                               // let's pick
-                                                               // the first
-                                                               // of
-                                                               // possibly
-                                                               // more than
-                                                               // one
-                                                               // non-zero
-                                                               // components. if
-                                                               // shape
-                                                               // function
-                                                               // is
-                                                               // non-primitive,
-                                                               // then we
-                                                               // will
-                                                               // ignore the
-                                                               // result in
-                                                               // the
-                                                               // following
-                                                               // anyway,
-                                                               // otherwise
-                                                               // there's
-                                                               // only one
-                                                               // non-zero
-                                                               // component
-                                                               // which we
-                                                               // will use
-                              component = (std::find (fe.get_nonzero_components(cell_i).begin(),
-                                                      fe.get_nonzero_components(cell_i).end(),
-                                                      true)
-                                           -
-                                           fe.get_nonzero_components(cell_i).begin());
-                            }
-
-                          if (component_mask[component] == true)
-                            boundary_values[face_dofs[i]] = dof_values_system[i](component);
-                        }
-                    }
-                  else
-                                                     // fe has only one component,
-                                                     // so save some computations
-                    {
-                                                       // get only the one component that
-                                                       // this function has
-                      dof_values_scalar.resize (fe.dofs_per_face);
-                      function_map.find(boundary_component)->second
-                        ->value_list (dof_locations, dof_values_scalar, 0);
-
-                                                       // enter into list
-
-                      for (unsigned int i=0; i<face_dofs.size(); ++i)
-                        boundary_values[face_dofs[i]] = dof_values_scalar[i];
-                    }
-                }
-            }
-    } // end of interpolate_boundary_values
-  } // end of namespace internal
-
-
-
-  template <class DH>
-  void
-
-  interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension>            &mapping,
-                               const DH                 &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask_)
-  {
-    internal::
-      interpolate_boundary_values (mapping, dof, function_map, boundary_values,
-                                   component_mask_,
-                                   dealii::internal::int2type<DH::dimension>());
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values (const Mapping<DH::dimension, DH::space_dimension>            &mapping,
-                               const DH                 &dof,
-                               const types::boundary_id_t            boundary_component,
-                               const Function<DH::space_dimension>           &boundary_function,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask)
-  {
-    typename FunctionMap<DH::space_dimension>::type function_map;
-    function_map[boundary_component] = &boundary_function;
-    interpolate_boundary_values (mapping, dof, function_map, boundary_values,
-                                 component_mask);
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH                 &dof,
-                               const types::boundary_id_t            boundary_component,
-                               const Function<DH::space_dimension>           &boundary_function,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
-                                dof, boundary_component,
-                                boundary_function, boundary_values, component_mask);
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values (const DH                 &dof,
-                               const typename FunctionMap<DH::space_dimension>::type &function_map,
-                               std::map<unsigned int,double> &boundary_values,
-                               const std::vector<bool>       &component_mask)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
-                                dof, function_map,
-                                boundary_values, component_mask);
-  }
-
-
-
-
-// ----------- interpolate_boundary_values for ConstraintMatrix --------------
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values
-  (const Mapping<DH::dimension, DH::space_dimension>     &mapping,
-   const DH                                              &dof,
-   const typename FunctionMap<DH::space_dimension>::type &function_map,
-   ConstraintMatrix                                      &constraints,
-   const std::vector<bool>                               &component_mask_)
-  {
-    std::map<unsigned int,double> boundary_values;
-    interpolate_boundary_values (mapping, dof, function_map,
-                                 boundary_values, component_mask_);
-    std::map<unsigned int,double>::const_iterator boundary_value =
-      boundary_values.begin();
-    for ( ; boundary_value !=boundary_values.end(); ++boundary_value)
-      {
-        if (constraints.can_store_line (boundary_value->first)
-            &&
-            !constraints.is_constrained(boundary_value->first))
-          {
-            constraints.add_line (boundary_value->first);
-            constraints.set_inhomogeneity (boundary_value->first,
-                                           boundary_value->second);
-          }
-      }
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values
-  (const Mapping<DH::dimension, DH::space_dimension> &mapping,
-   const DH                                          &dof,
-   const types::boundary_id_t                                boundary_component,
-   const Function<DH::space_dimension>               &boundary_function,
-   ConstraintMatrix                                  &constraints,
-   const std::vector<bool>                           &component_mask)
-  {
-    typename FunctionMap<DH::space_dimension>::type function_map;
-    function_map[boundary_component] = &boundary_function;
-    interpolate_boundary_values (mapping, dof, function_map, constraints,
-                                 component_mask);
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values
-  (const DH                            &dof,
-   const types::boundary_id_t                  boundary_component,
-   const Function<DH::space_dimension> &boundary_function,
-   ConstraintMatrix                    &constraints,
-   const std::vector<bool>             &component_mask)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
-                                dof, boundary_component,
-                                boundary_function, constraints, component_mask);
-  }
-
-
-
-  template <class DH>
-  void
-  interpolate_boundary_values
-  (const DH                                              &dof,
-   const typename FunctionMap<DH::space_dimension>::type &function_map,
-   ConstraintMatrix                                      &constraints,
-   const std::vector<bool>                               &component_mask)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    interpolate_boundary_values(StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
-                                dof, function_map,
-                                constraints, component_mask);
-  }
-
-
-
-
-// -------- implementation for project_boundary_values with std::map --------
-
-// separate implementations for 1D because otherwise we get linking errors
-// because create_boundary_mass_matrix is not compiled for 1D
-  template <>
-  void
-  project_boundary_values (const Mapping<1,1>         &mapping,
-                           const DoFHandler<1,1>      &dof,
-                           const FunctionMap<1>::type &boundary_functions,
-                           const Quadrature<0>        &,
-                           std::map<unsigned int,double> &boundary_values,
-                           std::vector<unsigned int>   component_mapping)
-  {
-    Assert (component_mapping.size() == 0, ExcNotImplemented());
-                                     // projection in 1d is equivalent
-                                     // to interpolation
-    interpolate_boundary_values (mapping, dof, boundary_functions,
-                                 boundary_values, std::vector<bool>());
-  }
-
-
-
-  template <>
-  void
-  project_boundary_values (const Mapping<1,2>         &mapping,
-                           const DoFHandler<1,2>      &dof,
-                           const FunctionMap<2>::type &boundary_functions,
-                           const Quadrature<0>        &,
-                           std::map<unsigned int,double> &boundary_values,
-                           std::vector<unsigned int>   component_mapping)
-  {
-    Assert (component_mapping.size() == 0, ExcNotImplemented());
-                                     // projection in 1d is equivalent
-                                     // to interpolation
-    interpolate_boundary_values (mapping, dof, boundary_functions,
-                                 boundary_values, std::vector<bool>());
-  }
-
-
-
-
-  template <int dim, int spacedim>
-  void
-  project_boundary_values (const Mapping<dim, spacedim>   &mapping,
-                           const DoFHandler<dim, spacedim>&dof,
-                           const typename FunctionMap<spacedim>::type &boundary_functions,
-                           const Quadrature<dim-1>        &q,
-                           std::map<unsigned int,double>  &boundary_values,
-                           std::vector<unsigned int>       component_mapping)
-  {
-//TODO:[?] In project_boundary_values, no condensation of sparsity
-//    structures, matrices and right hand sides or distribution of
-//    solution vectors is performed. This is ok for dim<3 because then
-//    there are no constrained nodes on the boundary, but is not
-//    acceptable for higher dimensions. Fix this.
-
-    if (component_mapping.size() == 0)
-      {
-        AssertDimension (dof.get_fe().n_components(), boundary_functions.begin()->second->n_components);
-                                         // I still do not see why i
-                                         // should create another copy
-                                         // here
-        component_mapping.resize(dof.get_fe().n_components());
-        for (unsigned int i= 0 ;i < component_mapping.size() ; ++i)
-          component_mapping[i] = i;
-      }
-    else
-      AssertDimension (dof.get_fe().n_components(), component_mapping.size());
-
-    std::vector<unsigned int> dof_to_boundary_mapping;
-    std::set<types::boundary_id_t> selected_boundary_components;
-    for (typename FunctionMap<spacedim>::type::const_iterator i=boundary_functions.begin();
-         i!=boundary_functions.end(); ++i)
-      selected_boundary_components.insert (i->first);
-
-    DoFTools::map_dof_to_boundary_indices (dof, selected_boundary_components,
-                                           dof_to_boundary_mapping);
-
-                                     // Done if no degrees of freedom on
-                                     // the boundary
-    if (dof.n_boundary_dofs (boundary_functions) == 0)
-      return;
-                                     // set up sparsity structure
-    SparsityPattern sparsity(dof.n_boundary_dofs (boundary_functions),
-                             dof.max_couplings_between_boundary_dofs());
-    DoFTools::make_boundary_sparsity_pattern (dof,
-                                              boundary_functions,
-                                              dof_to_boundary_mapping,
-                                              sparsity);
-
-                                     // note: for three or more dimensions, there
-                                     // may be constrained nodes on the boundary
-                                     // in this case the boundary mass matrix has
-                                     // to be condensed and the solution is to
-                                     // be distributed afterwards, which is not
-                                     // yet implemented. The reason for this is
-                                     // that we cannot simply use the condense
-                                     // family of functions, since the matrices
-                                     // and vectors do not use the global
-                                     // numbering but rather the boundary
-                                     // numbering, i.e. the condense function
-                                     // needs to use another indirection. There
-                                     // should be not many technical problems,
-                                     // but it needs to be implemented
-    if (dim>=3)
-      {
-#ifdef DEBUG
-// Assert that there are no hanging nodes at the boundary
-        int level = -1;
-        for (typename DoFHandler<dim,spacedim>::active_cell_iterator cell = dof.begin_active();
-             cell != dof.end(); ++cell)
-          for (unsigned int f=0;f<GeometryInfo<dim>::faces_per_cell;++f)
-            {
-              if (cell->at_boundary(f))
-                {
-                  if (level == -1)
-                    level = cell->level();
-                  else
-                    {
-                      Assert (level == cell->level(), ExcNotImplemented());
-                    }
-                }
-            }
-#endif
-      }
-    sparsity.compress();
-
-
-                                     // make mass matrix and right hand side
-    SparseMatrix<double> mass_matrix(sparsity);
-    Vector<double>       rhs(sparsity.n_rows());
-
-
-    MatrixCreator::create_boundary_mass_matrix (mapping, dof, q,
-                                                mass_matrix, boundary_functions,
-                                                rhs, dof_to_boundary_mapping, (const Function<spacedim>*) 0,
-                                                component_mapping);
-
-                                     // For certain weird elements,
-                                     // there might be degrees of
-                                     // freedom on the boundary, but
-                                     // their shape functions do not
-                                     // have support there. Let's
-                                     // eliminate them here.
-
-                                     // The Bogner-Fox-Schmidt element
-                                     // is an example for those.
-
-//TODO: Maybe we should figure out if the element really needs this
-
-    FilteredMatrix<Vector<double> > filtered_mass_matrix(mass_matrix, true);
-    FilteredMatrix<Vector<double> > filtered_precondition;
-    std::vector<bool> excluded_dofs(mass_matrix.m(), false);
-
-    double max_element = 0.;
-    for (unsigned int i=0;i<mass_matrix.m();++i)
-      if (mass_matrix.diag_element(i) > max_element)
-        max_element = mass_matrix.diag_element(i);
-
-    for (unsigned int i=0;i<mass_matrix.m();++i)
-      if (mass_matrix.diag_element(i) < 1.e-8 * max_element)
-        {
-          filtered_mass_matrix.add_constraint(i, 0.);
-          filtered_precondition.add_constraint(i, 0.);
-          mass_matrix.diag_element(i) = 1.;
-          excluded_dofs[i] = true;
-        }
-
-    Vector<double> boundary_projection (rhs.size());
-
-                                     // Allow for a maximum of 5*n
-                                     // steps to reduce the residual by
-                                     // 10^-12. n steps may not be
-                                     // sufficient, since roundoff
-                                     // errors may accumulate for badly
-                                     // conditioned matrices
-    ReductionControl        control(5*rhs.size(), 0., 1.e-12, false, false);
-    GrowingVectorMemory<> memory;
-    SolverCG<>              cg(control,memory);
-
-    PreconditionSSOR<> prec;
-    prec.initialize(mass_matrix, 1.2);
-    filtered_precondition.initialize(prec, true);
-                                     // solve
-    cg.solve (filtered_mass_matrix, boundary_projection, rhs, filtered_precondition);
-    filtered_precondition.apply_constraints(boundary_projection, true);
-    filtered_precondition.clear();
-                                     // fill in boundary values
-    for (unsigned int i=0; i<dof_to_boundary_mapping.size(); ++i)
-      if (dof_to_boundary_mapping[i] != DoFHandler<dim,spacedim>::invalid_dof_index
-          && ! excluded_dofs[dof_to_boundary_mapping[i]])
-        {
-          Assert(numbers::is_finite(boundary_projection(dof_to_boundary_mapping[i])), ExcNumberNotFinite());
-
-                                           // this dof is on one of the
-                                           // interesting boundary parts
-                                           //
-                                           // remember: i is the global dof
-                                           // number, dof_to_boundary_mapping[i]
-                                           // is the number on the boundary and
-                                           // thus in the solution vector
-          boundary_values[i] = boundary_projection(dof_to_boundary_mapping[i]);
-        }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
-                           const typename FunctionMap<spacedim>::type &boundary_functions,
-                           const Quadrature<dim-1>  &q,
-                           std::map<unsigned int,double> &boundary_values,
-                           std::vector<unsigned int> component_mapping)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    project_boundary_values(StaticMappingQ1<dim,spacedim>::mapping, dof, boundary_functions, q,
-                            boundary_values, component_mapping);
-  }
-
-
-
-// ----- implementation for project_boundary_values with ConstraintMatrix -----
-
-
-
-  template <int dim, int spacedim>
-  void
-  project_boundary_values (const Mapping<dim, spacedim>       &mapping,
-                           const DoFHandler<dim,spacedim>    &dof,
-                           const typename FunctionMap<spacedim>::type &boundary_functions,
-                           const Quadrature<dim-1>  &q,
-                           ConstraintMatrix &constraints,
-                           std::vector<unsigned int> component_mapping)
-  {
-    std::map<unsigned int,double> boundary_values;
-    project_boundary_values (mapping, dof, boundary_functions, q,
-                             boundary_values, component_mapping);
-    std::map<unsigned int,double>::const_iterator boundary_value =
-      boundary_values.begin();
-    for ( ; boundary_value !=boundary_values.end(); ++boundary_value)
-      {
-        if (!constraints.is_constrained(boundary_value->first))
-          {
-            constraints.add_line (boundary_value->first);
-            constraints.set_inhomogeneity (boundary_value->first,
-                                           boundary_value->second);
-          }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
-                           const typename FunctionMap<spacedim>::type &boundary_functions,
-                           const Quadrature<dim-1>  &q,
-                           ConstraintMatrix &constraints,
-                           std::vector<unsigned int> component_mapping)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    project_boundary_values(StaticMappingQ1<dim,spacedim>::mapping, dof, boundary_functions, q,
-                            constraints, component_mapping);
-  }
-
-
-
-
-  namespace internal
-  {
-                                     /**
-                                      * A structure that stores the dim DoF
-                                      * indices that correspond to a
-                                      * vector-valued quantity at a single
-                                      * support point.
-                                      */
-    template <int dim>
-    struct VectorDoFTuple
-    {
-        unsigned int dof_indices[dim];
-
-        VectorDoFTuple ()
-          {
-            for (unsigned int i=0; i<dim; ++i)
-              dof_indices[i] = numbers::invalid_unsigned_int;
-          }
-
-
-        bool operator < (const VectorDoFTuple<dim> &other) const
-          {
-            for (unsigned int i=0; i<dim; ++i)
-              if (dof_indices[i] < other.dof_indices[i])
-                return true;
-              else
-                if (dof_indices[i] > other.dof_indices[i])
-                  return false;
-            return false;
-          }
-
-        bool operator == (const VectorDoFTuple<dim> &other) const
-          {
-            for (unsigned int i=0; i<dim; ++i)
-              if (dof_indices[i] != other.dof_indices[i])
-                return false;
-
-            return true;
-          }
-
-        bool operator != (const VectorDoFTuple<dim> &other) const
-          {
-            return ! (*this == other);
-          }
-    };
-
-
-
-                                     /**
-                                      * Add the constraint
-                                      * $\vec n \cdot \vec u = 0$
-                                      * to the list of constraints.
-                                      *
-                                      * Here, $\vec u$ is represented
-                                      * by the set of given DoF
-                                      * indices, and $\vec n$ by the
-                                      * vector specified as the second
-                                      * argument.
-                                      *
-                                      * The function does not add constraints
-                                      * if a degree of freedom is already
-                                      * constrained in the constraints object.
-                                      */
-    template <int dim>
-    void
-    add_constraint (const VectorDoFTuple<dim> &dof_indices,
-                    const Tensor<1,dim>       &constraining_vector,
-                    ConstraintMatrix          &constraints)
-    {
-
-                                       // choose the DoF that has the
-                                       // largest component in the
-                                       // constraining_vector as the
-                                       // one to be constrained as
-                                       // this makes the process
-                                       // stable in cases where the
-                                       // constraining_vector has the
-                                       // form n=(1,0) or n=(0,1)
-                                       //
-                                       // we get constraints of the form
-                                       //   x0 = a_1*x1 + a2*x2 + ...
-                                       // if one of the weights is
-                                       // essentially zero then skip
-                                       // this part. the ConstraintMatrix
-                                       // can also deal with cases like
-                                       //   x0 = 0
-                                       // if necessary
-                                       //
-                                       // there is a problem if we have a
-                                       // normal vector of the form
-                                       // (a,a,small) or (a,a,a). Depending on
-                                       // round-off we may choose the first or
-                                       // second component (or third, in the
-                                       // latter case) as the largest one, and
-                                       // depending on our choice one or
-                                       // another degree of freedom will be
-                                       // constrained. On a single processor
-                                       // this is not much of a problem, but
-                                       // it's a nightmare when we run in
-                                       // parallel and two processors disagree
-                                       // on which DoF should be
-                                       // constrained. This led to an
-                                       // incredibly difficult to find bug in
-                                       // step-32 when running in parallel
-                                       // with 9 or more processors.
-                                       //
-                                       // in practice, such normal vectors of
-                                       // the form (a,a,small) or (a,a,a)
-                                       // happen not infrequently since they
-                                       // lie on the diagonals where vertices
-                                       // frequently happen to land upon mesh
-                                       // refinement if one starts from a
-                                       // symmetric and regular body. we work
-                                       // around this problem in the following
-                                       // way: if we have a normal vector of
-                                       // the form (a,b) (similarly algorithm
-                                       // in 3d), we choose 'a' as the largest
-                                       // coefficient not if a>b but if
-                                       // a>b+1e-10. this shifts the problem
-                                       // away from the frequently visited
-                                       // diagonal to a line that is off the
-                                       // diagonal. there will of course be
-                                       // problems where the exact values of a
-                                       // and b differ by exactly 1e-10 and we
-                                       // get into the same instability, but
-                                       // from a practical viewpoint such
-                                       // problems should be much rarer. in
-                                       // particular, meshes have to be very
-                                       // very fine for a vertex to land on
-                                       // this line if the original body had a
-                                       // vertex on the diagonal as well
-      switch (dim)
-        {
-          case 2:
-          {
-            if (std::fabs(constraining_vector[0]) > std::fabs(constraining_vector[1]) + 1e-10)
-              {
-                if (!constraints.is_constrained(dof_indices.dof_indices[0])
-                    &&
-                    constraints.can_store_line(dof_indices.dof_indices[0]))
-                  {
-                    constraints.add_line (dof_indices.dof_indices[0]);
-
-                    if (std::fabs (constraining_vector[1]/constraining_vector[0])
-                        > std::numeric_limits<double>::epsilon())
-                      constraints.add_entry (dof_indices.dof_indices[0],
-                                             dof_indices.dof_indices[1],
-                                             -constraining_vector[1]/constraining_vector[0]);
-                  }
-              }
-            else
-              {
-                if (!constraints.is_constrained(dof_indices.dof_indices[1])
-                    &&
-                    constraints.can_store_line(dof_indices.dof_indices[1]))
-                  {
-                    constraints.add_line (dof_indices.dof_indices[1]);
-
-                    if (std::fabs (constraining_vector[0]/constraining_vector[1])
-                        > std::numeric_limits<double>::epsilon())
-                      constraints.add_entry (dof_indices.dof_indices[1],
-                                             dof_indices.dof_indices[0],
-                                             -constraining_vector[0]/constraining_vector[1]);
-                  }
-              }
-            break;
-          }
-
-          case 3:
-          {
-            if ((std::fabs(constraining_vector[0]) >= std::fabs(constraining_vector[1])+1e-10)
-                &&
-                (std::fabs(constraining_vector[0]) >= std::fabs(constraining_vector[2])+2e-10))
-              {
-                if (!constraints.is_constrained(dof_indices.dof_indices[0])
-                    &&
-                    constraints.can_store_line(dof_indices.dof_indices[0]))
-                  {
-                    constraints.add_line (dof_indices.dof_indices[0]);
-
-                    if (std::fabs (constraining_vector[1]/constraining_vector[0])
-                        > std::numeric_limits<double>::epsilon())
-                      constraints.add_entry (dof_indices.dof_indices[0],
-                                             dof_indices.dof_indices[1],
-                                             -constraining_vector[1]/constraining_vector[0]);
-
-                    if (std::fabs (constraining_vector[2]/constraining_vector[0])
-                        > std::numeric_limits<double>::epsilon())
-                      constraints.add_entry (dof_indices.dof_indices[0],
-                                             dof_indices.dof_indices[2],
-                                             -constraining_vector[2]/constraining_vector[0]);
-                  }
-              }
-            else
-              if ((std::fabs(constraining_vector[1])+1e-10 >= std::fabs(constraining_vector[0]))
-                  &&
-                  (std::fabs(constraining_vector[1]) >= std::fabs(constraining_vector[2])+1e-10))
-                {
-                  if (!constraints.is_constrained(dof_indices.dof_indices[1])
-                      &&
-                      constraints.can_store_line(dof_indices.dof_indices[1]))
-                    {
-                      constraints.add_line (dof_indices.dof_indices[1]);
-
-                      if (std::fabs (constraining_vector[0]/constraining_vector[1])
-                          > std::numeric_limits<double>::epsilon())
-                        constraints.add_entry (dof_indices.dof_indices[1],
-                                               dof_indices.dof_indices[0],
-                                               -constraining_vector[0]/constraining_vector[1]);
-
-                      if (std::fabs (constraining_vector[2]/constraining_vector[1])
-                          > std::numeric_limits<double>::epsilon())
-                        constraints.add_entry (dof_indices.dof_indices[1],
-                                               dof_indices.dof_indices[2],
-                                               -constraining_vector[2]/constraining_vector[1]);
-                    }
-                }
-              else
-                {
-                  if (!constraints.is_constrained(dof_indices.dof_indices[2])
-                      &&
-                      constraints.can_store_line(dof_indices.dof_indices[2]))
-                    {
-                      constraints.add_line (dof_indices.dof_indices[2]);
-
-                      if (std::fabs (constraining_vector[0]/constraining_vector[2])
-                          > std::numeric_limits<double>::epsilon())
-                        constraints.add_entry (dof_indices.dof_indices[2],
-                                               dof_indices.dof_indices[0],
-                                               -constraining_vector[0]/constraining_vector[2]);
-
-                      if (std::fabs (constraining_vector[1]/constraining_vector[2])
-                          > std::numeric_limits<double>::epsilon())
-                        constraints.add_entry (dof_indices.dof_indices[2],
-                                               dof_indices.dof_indices[1],
-                                               -constraining_vector[1]/constraining_vector[2]);
-                    }
-                }
-
-            break;
-          }
-
-          default:
-                Assert (false, ExcNotImplemented());
-        }
-    }
-
-
-                                     /**
-                                      * Add the constraint $\vec u \|
-                                      * \vec t$ to the list of
-                                      * constraints. In 2d, this is a
-                                      * single constraint, in 3d these
-                                      * are two constraints
-                                      *
-                                      * Here, $\vec u$ is represented
-                                      * by the set of given DoF
-                                      * indices, and $\vec t$ by the
-                                      * vector specified as the second
-                                      * argument.
-                                      *
-                                      * The function does not add constraints
-                                      * if a degree of freedom is already
-                                      * constrained in the constraints object.
-                                      */
-    template <int dim>
-    void
-    add_tangentiality_constraints (const VectorDoFTuple<dim> &dof_indices,
-                                  const Tensor<1,dim>       &tangent_vector,
-                                  ConstraintMatrix          &constraints)
-    {
-
-                                       // choose the DoF that has the
-                                       // largest component in the
-                                       // tangent_vector as the
-                                       // independent component, and
-                                       // then constrain the others to
-                                       // it. specifically, if, say,
-                                       // component 0 of the tangent
-                                       // vector t is largest by
-                                       // magnitude, then
-                                       // x1=t[1]/t[0]*x_0, etc.
-      unsigned int largest_component = 0;
-      for (unsigned int d=1; d<dim; ++d)
-       if (std::fabs(tangent_vector[d]) > std::fabs(tangent_vector[largest_component]) + 1e-10)
-         largest_component = d;
-
-                                      // then constrain all of the
-                                      // other degrees of freedom in
-                                      // terms of the one just found
-      for (unsigned int d=0; d<dim; ++d)
-       if (d != largest_component)
-         if (!constraints.is_constrained(dof_indices.dof_indices[d])
-             &&
-             constraints.can_store_line(dof_indices.dof_indices[d]))
-           {
-             constraints.add_line (dof_indices.dof_indices[d]);
-
-             if (std::fabs (tangent_vector[d]/tangent_vector[largest_component])
-                 > std::numeric_limits<double>::epsilon())
-               constraints.add_entry (dof_indices.dof_indices[d],
-                                      dof_indices.dof_indices[largest_component],
-                                      tangent_vector[d]/tangent_vector[largest_component]);
-           }
-    }
-
-
-
-                                     /**
-                                      * Given a vector, compute a set
-                                      * of dim-1 vectors that are
-                                      * orthogonal to the first one
-                                      * and mutually orthonormal as
-                                      * well.
-                                      */
-    template <int dim>
-    void
-    compute_orthonormal_vectors (const Tensor<1,dim> &vector,
-                                 Tensor<1,dim> (&orthonormals)[dim-1])
-    {
-      switch (dim)
-        {
-          case 3:
-          {
-                                             // to do this in 3d, take
-                                             // one vector that is
-                                             // guaranteed to be not
-                                             // aligned with the
-                                             // average tangent and
-                                             // form the cross
-                                             // product. this yields
-                                             // one vector that is
-                                             // certainly
-                                             // perpendicular to the
-                                             // tangent; then take the
-                                             // cross product between
-                                             // this vector and the
-                                             // tangent and get one
-                                             // vector that is
-                                             // perpendicular to both
-
-                                             // construct a
-                                             // temporary vector
-                                             // by swapping the
-                                             // larger two
-                                             // components and
-                                             // flipping one
-                                             // sign; this can
-                                             // not be collinear
-                                             // with the average
-                                             // tangent
-            Tensor<1,dim> tmp = vector;
-            if ((std::fabs(tmp[0]) > std::fabs(tmp[1]))
-                &&
-                (std::fabs(tmp[0]) > std::fabs(tmp[2])))
-              {
-                                                 // entry zero
-                                                 // is the
-                                                 // largest
-                if ((std::fabs(tmp[1]) > std::fabs(tmp[2])))
-                  std::swap (tmp[0], tmp[1]);
-                else
-                  std::swap (tmp[0], tmp[2]);
-
-                tmp[0] *= -1;
-              }
-            else if ((std::fabs(tmp[1]) > std::fabs(tmp[0]))
-                     &&
-                     (std::fabs(tmp[1]) > std::fabs(tmp[2])))
-              {
-                                                 // entry one
-                                                 // is the
-                                                 // largest
-                if ((std::fabs(tmp[0]) > std::fabs(tmp[2])))
-                  std::swap (tmp[1], tmp[0]);
-                else
-                  std::swap (tmp[1], tmp[2]);
-
-                tmp[1] *= -1;
-              }
-            else
-              {
-                                                 // entry two
-                                                 // is the
-                                                 // largest
-                if ((std::fabs(tmp[0]) > std::fabs(tmp[1])))
-                  std::swap (tmp[2], tmp[0]);
-                else
-                  std::swap (tmp[2], tmp[1]);
-
-                tmp[2] *= -1;
-              }
-
-                                             // make sure the two vectors
-                                             // are indeed not collinear
-            Assert (std::fabs(vector * tmp / vector.norm() / tmp.norm())
-                    <
-                    (1-1e-12),
-                    ExcInternalError());
-
-                                             // now compute the
-                                             // two normals
-            cross_product (orthonormals[0], vector, tmp);
-            cross_product (orthonormals[1], vector, orthonormals[0]);
-
-            break;
-          }
-
-          default:
-                Assert (false, ExcNotImplemented());
-        }
-    }
-  }
-
-
-  namespace internals
-  {
-                                     // This function computes the
-                                     // projection of the boundary
-                                     // function on edges for 3D.
-    template<typename cell_iterator>
-    void
-    compute_edge_projection (const cell_iterator& cell,
-                             const unsigned int face,
-                             const unsigned int line,
-                             hp::FEValues<3>& hp_fe_values,
-                             const Function<3>& boundary_function,
-                             const unsigned int first_vector_component,
-                             std::vector<double>& dof_values)
-    {
-      const double tol = 0.5 * cell->get_fe ().degree * 1e-13 / cell->face (face)->line (line)->diameter ();
-      const unsigned int dim = 3;
-      const unsigned int spacedim = 3;
-
-      hp_fe_values.reinit
-        (cell,
-         (cell->active_fe_index () * GeometryInfo<dim>::faces_per_cell + face)
-         * GeometryInfo<dim>::lines_per_face + line);
-
-                                       // Initialize the required
-                                       // objects.
-      const FEValues<dim>&
-        fe_values = hp_fe_values.get_present_fe_values ();
-      const std::vector< DerivativeForm<1,dim,spacedim> > &
-        jacobians = fe_values.get_jacobians ();
-      const std::vector<Point<dim> >&
-        quadrature_points = fe_values.get_quadrature_points ();
-
-      std::vector<Point<dim> > tangentials (fe_values.n_quadrature_points);
-      std::vector<Vector<double> > values (fe_values.n_quadrature_points,
-                                           Vector<double> (cell->get_fe ().n_components ()));
-
-                                       // Get boundary function values
-                                       // at quadrature points.
-      boundary_function.vector_value_list (quadrature_points, values);
-
-      const std::vector<Point<dim> >&
-        reference_quadrature_points = fe_values.get_quadrature ().get_points ();
-      const unsigned int superdegree = cell->get_fe ().degree;
-      const unsigned int degree = superdegree - 1;
-
-                                       // coordinate directions of
-                                       // the edges of the face.
-      const unsigned int
-        edge_coordinate_direction
-        [GeometryInfo<dim>::faces_per_cell]
-        [GeometryInfo<dim>::lines_per_face]
-        = { { 2, 2, 1, 1 },
-            { 2, 2, 1, 1 },
-            { 0, 0, 2, 2 },
-            { 0, 0, 2, 2 },
-            { 1, 1, 0, 0 },
-            { 1, 1, 0, 0 } };
-      const FEValuesExtractors::Vector vec (first_vector_component);
-
-                                       // The interpolation for the
-                                       // lowest order edge shape
-                                       // functions is just the mean
-                                       // value of the tangential
-                                       // components of the boundary
-                                       // function on the edge.
-      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points;
-           ++q_point)
-        {
-                                           // Therefore compute the
-                                           // tangential of the edge at
-                                           // the quadrature point.
-          Point<dim> shifted_reference_point_1 = reference_quadrature_points[q_point];
-          Point<dim> shifted_reference_point_2 = reference_quadrature_points[q_point];
-
-          shifted_reference_point_1 (edge_coordinate_direction[face][line]) += tol;
-          shifted_reference_point_2 (edge_coordinate_direction[face][line]) -= tol;
-          tangentials[q_point]
-            = (0.5 *
-               (fe_values.get_mapping ()
-                .transform_unit_to_real_cell (cell,
-                                              shifted_reference_point_1)
-                -
-                fe_values.get_mapping ()
-                .transform_unit_to_real_cell (cell,
-                                              shifted_reference_point_2))
-               / tol);
-          tangentials[q_point]
-            /= std::sqrt (tangentials[q_point].square ());
-
-                                           // Compute the degrees of
-                                           // freedom.
-          for (unsigned int i = 0; i <= degree; ++i)
-            dof_values[i + line * superdegree]
-              += (fe_values.JxW (q_point)
-                  * (values[q_point] (first_vector_component) * tangentials[q_point] (0)
-                     + values[q_point] (first_vector_component + 1) * tangentials[q_point] (1)
-                     + values[q_point] (first_vector_component + 2) * tangentials[q_point] (2))
-                  * (fe_values[vec].value (cell->get_fe ().face_to_cell_index (i + line * superdegree,
-                                                                               face),
-                                           q_point)
-                     * tangentials[q_point])
-                  / std::sqrt (jacobians[q_point][0][edge_coordinate_direction[face][line]]
-                               * jacobians[q_point][0][edge_coordinate_direction[face][line]]
-                               + jacobians[q_point][1][edge_coordinate_direction[face][line]]
-                               * jacobians[q_point][1][edge_coordinate_direction[face][line]]
-                               + jacobians[q_point][2][edge_coordinate_direction[face][line]]
-                               * jacobians[q_point][2][edge_coordinate_direction[face][line]]));
-        }
-    }
-
-                                     // dummy implementation of above
-                                     // function for all other
-                                     // dimensions
-    template<int dim, typename cell_iterator>
-    void
-    compute_edge_projection (const cell_iterator&,
-                             const unsigned int,
-                             const unsigned int,
-                             hp::FEValues<dim>&,
-                             const Function<dim>&,
-                             const unsigned int,
-                             std::vector<double>&)
-    {
-      Assert (false, ExcInternalError ());
-    }
-
-                                     // This function computes the
-                                     // projection of the boundary
-                                     // function on the interior of
-                                     // faces.
-    template<int dim, typename cell_iterator>
-    void
-    compute_face_projection_curl_conforming (const cell_iterator& cell,
-                                             const unsigned int face,
-                                             hp::FEValues<dim>& hp_fe_values,
-                                             const Function<dim>& boundary_function,
-                                             const unsigned int first_vector_component,
-                                             std::vector<double>& dof_values)
-    {
-      const unsigned int spacedim = dim;
-      hp_fe_values.reinit (cell, cell->active_fe_index ()
-                           * GeometryInfo<dim>::faces_per_cell + face);
-                                       // Initialize the required
-                                       // objects.
-      const FEValues<dim>&
-        fe_values = hp_fe_values.get_present_fe_values ();
-      const std::vector< DerivativeForm<1,dim,spacedim> > &
-        jacobians = fe_values.get_jacobians ();
-
-      std::vector<Vector<double> >
-        values (fe_values.n_quadrature_points, Vector<double> (cell->get_fe ().n_components ()));
-
-      switch (dim)
-        {
-          case 2:
-          {
-            const std::vector<Point<dim> >&
-              quadrature_points = fe_values.get_quadrature_points ();
-            std::vector<Point<dim> >
-              tangentials (fe_values.n_quadrature_points);
-
-                                             // Get boundary function
-                                             // values at quadrature
-                                             // points.
-            boundary_function.vector_value_list (quadrature_points, values);
-
-            const std::vector<Point<dim> >&
-              reference_quadrature_points = fe_values.get_quadrature ().get_points ();
-            const unsigned int degree = cell->get_fe ().degree - 1;
-
-                                             // coordinate directions
-                                             // of the face.
-            const unsigned int
-              face_coordinate_direction[GeometryInfo<dim>::faces_per_cell]
-              = { 1, 1, 0, 0 };
-            const FEValuesExtractors::Vector vec (first_vector_component);
-
-                                             // The interpolation for
-                                             // the lowest order face
-                                             // shape functions is just
-                                             // the mean value of the
-                                             // tangential  components
-                                             // of the boundary function
-                                             // on the edge.
-            for (unsigned int q_point = 0;
-                 q_point < fe_values.n_quadrature_points; ++q_point)
-              {
-                                                 // Therefore compute the
-                                                 // tangential of the
-                                                 // face at the quadrature
-                                                 // point.
-                Point<dim> shifted_reference_point_1
-                  = reference_quadrature_points[q_point];
-                Point<dim> shifted_reference_point_2
-                  = reference_quadrature_points[q_point];
-
-                shifted_reference_point_1 (face_coordinate_direction[face])
-                  += 1e-13;
-                shifted_reference_point_2 (face_coordinate_direction[face])
-                  -= 1e-13;
-                tangentials[q_point]
-                  = 2e13
-                  * (fe_values.get_mapping ()
-                     .transform_unit_to_real_cell (cell,
-                                                   shifted_reference_point_1)
-                     -
-                     fe_values.get_mapping ()
-                     .transform_unit_to_real_cell (cell,
-                                                   shifted_reference_point_2));
-                tangentials[q_point]
-                  /= std::sqrt (tangentials[q_point].square ());
-                                                 // Compute the degrees
-                                                 // of freedom.
-                for (unsigned int i = 0; i <= degree; ++i)
-                  dof_values[i]
-                    += fe_values.JxW (q_point)
-                    * (values[q_point] (first_vector_component)
-                       * tangentials[q_point] (0)
-                       + values[q_point] (first_vector_component + 1)
-                       * tangentials[q_point] (1))
-                    * (fe_values[vec].value (cell->get_fe ().face_to_cell_index (i, face),
-                                             q_point) * tangentials[q_point])
-                    / std::sqrt (jacobians[q_point][0][face_coordinate_direction[face]]
-                                 * jacobians[q_point][0][face_coordinate_direction[face]]
-                                 + jacobians[q_point][1][face_coordinate_direction[face]]
-                                 * jacobians[q_point][1][face_coordinate_direction[face]]);
-              }
-
-            break;
-          }
-
-          case 3:
-          {
-            const std::vector<Point<dim> >&
-              quadrature_points = fe_values.get_quadrature_points ();
-
-                                             // Get boundary function
-                                             // values at quadrature
-                                             // points.
-            boundary_function.vector_value_list (quadrature_points, values);
-
-            const FEValuesExtractors::Vector vec (first_vector_component);
-            const unsigned int superdegree = cell->get_fe ().degree;
-            const unsigned int degree = superdegree - 1;
-            FullMatrix<double>
-              assembling_matrix (degree * superdegree,
-                                 dim * fe_values.n_quadrature_points);
-            Vector<double> assembling_vector (assembling_matrix.n ());
-            Vector<double> cell_rhs (assembling_matrix.m ());
-            FullMatrix<double> cell_matrix (assembling_matrix.m (),
-                                            assembling_matrix.m ());
-            FullMatrix<double> cell_matrix_inv (assembling_matrix.m (),
-                                                assembling_matrix.m ());
-            Vector<double> solution (cell_matrix.m ());
-
-                                             // Get coordinate directions
-                                             // of the face.
-            const unsigned int
-              global_face_coordinate_directions[GeometryInfo<3>::faces_per_cell][2]
-              = { { 1, 2 },
-                  { 1, 2 },
-                  { 2, 0 },
-                  { 2, 0 },
-                  { 0, 1 },
-                  { 0, 1 } };
-
-                                             // The projection is
-                                             // divided into two steps.
-                                             // In the first step we
-                                             // project the boundary
-                                             // function on the
-                                             // horizontal shape
-                                             // functions.  Then the
-                                             // bounary function is
-                                             // projected on the
-                                             // vertical shape
-                                             // functions.  We begin
-                                             // with the horizontal
-                                             // shape functions and
-                                             // set up a linear system
-                                             // of equations to get
-                                             // the values for degrees
-                                             // of freedom associated
-                                             // with the interior of
-                                             // the face.
-            for (unsigned int q_point = 0;
-                 q_point < fe_values.n_quadrature_points; ++q_point)
-              {
-                                                 // The right hand
-                                                 // side of the
-                                                 // corresponding problem
-                                                 // is the residual
-                                                 // of the boundary
-                                                 // function and
-                                                 // the already
-                                                 // interpolated part
-                                                 // on the edges.
-                Tensor<1, dim> tmp;
-
-                for (unsigned int d = 0; d < dim; ++d)
-                  tmp[d] = values[q_point] (first_vector_component + d);
-
-                for (unsigned int i = 0; i < 2; ++i)
-                  for (unsigned int j = 0; j <= degree; ++j)
-                    tmp -= dof_values[(i + 2) * superdegree + j]
-                           * fe_values[vec].value (cell->get_fe ().face_to_cell_index
-                                                   ((i + 2) * superdegree + j,
-                                                    face), q_point);
-
-                const double JxW
-                  = std::sqrt (fe_values.JxW (q_point)
-                               / ((jacobians[q_point][0][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][0][global_face_coordinate_directions[face][0]]
-                                   +
-                                   jacobians[q_point][1][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][1][global_face_coordinate_directions[face][0]]
-                                   +
-                                   jacobians[q_point][2][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][2][global_face_coordinate_directions[face][0]])
-                                  *
-                                  (jacobians[q_point][0][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][0][global_face_coordinate_directions[face][1]]
-                                   +
-                                   jacobians[q_point][1][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][1][global_face_coordinate_directions[face][1]]
-                                   +
-                                   jacobians[q_point][2][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][2][global_face_coordinate_directions[face][1]])));
-
-                                                 // In the weak form
-                                                 // the right hand
-                                                 // side function
-                                                 // is multiplicated
-                                                 // by the horizontal
-                                                 // shape functions
-                                                 // defined in the
-                                                 // interior of
-                                                 // the face.
-                for (unsigned int d = 0; d < dim; ++d)
-                  assembling_vector (dim * q_point + d) = JxW * tmp[d];
-
-                for (unsigned int i = 0; i <= degree; ++i)
-                  for (unsigned int j = 0; j < degree; ++j)
-                    {
-                      const Tensor<1, dim> shape_value
-                        = (JxW
-                           * fe_values[vec].value (cell->get_fe ()
-                                                   .face_to_cell_index
-                                                   ((i + GeometryInfo<dim>::lines_per_face)
-                                                    * degree
-                                                    + j
-                                                    + GeometryInfo<dim>::lines_per_face,
-                                                    face),
-                                                   q_point));
-
-                      for (unsigned int d = 0; d < dim; ++d)
-                        assembling_matrix (i * degree + j,
-                                           dim * q_point + d)
-                          = shape_value[d];
-                    }
-              }
-
-                                             // Create the system
-                                             // matrix by
-                                             // multiplying the
-                                             // assembling matrix
-                                             // with its transposed
-                                             // and the right
-                                             // hand side vector
-                                             // by mutliplying
-                                             // the assembling
-                                             // matrix with the
-                                             // assembling vector.
-                                             // Invert the system
-                                             // matrix.
-            assembling_matrix.mTmult (cell_matrix, assembling_matrix);
-            cell_matrix_inv.invert (cell_matrix);
-            assembling_matrix.vmult (cell_rhs, assembling_vector);
-            cell_matrix_inv.vmult (solution, cell_rhs);
-
-                                             // Store the computed
-                                             // values.
-            for (unsigned int i = 0; i <= degree; ++i)
-              for (unsigned int j = 0; j < degree; ++j)
-                dof_values[(i + GeometryInfo<dim>::lines_per_face)
-                           * degree + j + GeometryInfo<dim>::lines_per_face]
-                  = solution (i * degree + j);
-
-                                             // Now we do the
-                                             // same as above
-                                             // with the vertical
-                                             // shape functions
-                                             // instead of the
-                                             // horizontal ones.
-            for (unsigned int q_point = 0;
-                 q_point < fe_values.n_quadrature_points; ++q_point)
-              {
-                Tensor<1, dim> tmp;
-
-                for (unsigned int d = 0; d < dim; ++d)
-                  tmp[d] = values[q_point] (first_vector_component + d);
-
-                for (unsigned int i = 0; i < 2; ++i)
-                  for (unsigned int j = 0; j <= degree; ++j)
-                    tmp
-                      -= dof_values[i * superdegree + j]
-                      * fe_values[vec].value (cell->get_fe ().face_to_cell_index
-                                              (i * superdegree + j, face), q_point);
-
-                const double JxW
-                  = std::sqrt (fe_values.JxW (q_point)
-                               / ((jacobians[q_point][0][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][0][global_face_coordinate_directions[face][0]]
-                                   +
-                                   jacobians[q_point][1][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][1][global_face_coordinate_directions[face][0]]
-                                   +
-                                   jacobians[q_point][2][global_face_coordinate_directions[face][0]]
-                                   * jacobians[q_point][2][global_face_coordinate_directions[face][0]])
-                                  *
-                                  (jacobians[q_point][0][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][0][global_face_coordinate_directions[face][1]]
-                                   +
-                                   jacobians[q_point][1][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][1][global_face_coordinate_directions[face][1]]
-                                   +
-                                   jacobians[q_point][2][global_face_coordinate_directions[face][1]]
-                                   * jacobians[q_point][2][global_face_coordinate_directions[face][1]])));
-
-                for (unsigned int d = 0; d < dim; ++d)
-                  assembling_vector (dim * q_point + d) = JxW * tmp[d];
-
-                for (unsigned int i = 0; i < degree; ++i)
-                  for (unsigned int j = 0; j <= degree; ++j)
-                    {
-                      const Tensor<1, dim> shape_value
-                        = (JxW
-                           * fe_values[vec].value (cell->get_fe ().face_to_cell_index
-                                                   ((i + degree + GeometryInfo<dim>::lines_per_face)
-                                                    * superdegree + j, face), q_point));
-
-                      for (unsigned int d = 0; d < dim; ++d)
-                        assembling_matrix (i * superdegree + j, dim * q_point + d)
-                          = shape_value[d];
-                    }
-              }
-
-            assembling_matrix.mTmult (cell_matrix, assembling_matrix);
-            cell_matrix_inv.invert (cell_matrix);
-            assembling_matrix.vmult (cell_rhs, assembling_vector);
-            cell_matrix_inv.vmult (solution, cell_rhs);
-
-            for (unsigned int i = 0; i < degree; ++i)
-              for (unsigned int j = 0; j <= degree; ++j)
-                dof_values[(i + degree + GeometryInfo<dim>::lines_per_face) * superdegree + j]
-                  = solution (i * superdegree + j);
-
-            break;
-          }
-
-          default:
-                Assert (false, ExcNotImplemented ());
-        }
-    }
-  }
-
-
-
-
-  template <int dim>
-  void
-
-  project_boundary_values_curl_conforming (const DoFHandler<dim>& dof_handler,
-                                           const unsigned int first_vector_component,
-                                           const Function<dim>& boundary_function,
-                                           const types::boundary_id_t boundary_component,
-                                           ConstraintMatrix& constraints,
-                                           const Mapping<dim>& mapping)
-  {
-                                     // Projection-based interpolation
-                                     // is performed in two (in 2D)
-                                     // respectively three (in 3D)
-                                     // steps. First the tangential
-                                     // component of the function is
-                                     // interpolated on each edge.  This
-                                     // gives the values for the degrees
-                                     // of freedom corresponding to the
-                                     // edge shape functions. Now we are
-                                     // done for 2D, but in 3D we possibly
-                                     // have also degrees of freedom, which
-                                     // are located in the interior of
-                                     // the faces. Therefore we compute
-                                     // the residual of the function
-                                     // describing the boundary values
-                                     // and the interpolated part, which
-                                     // we have computed in the last
-                                     // step. On the faces there are
-                                     // two kinds of shape functions,
-                                     // the horizontal and the vertical
-                                     // ones. Thus we have to solve two
-                                     // linear systems of equations of
-                                     // size <tt>degree * (degree +
-                                     // 1)<tt> to obtain the values for
-                                     // the  corresponding degrees of
-                                     // freedom.
-    const unsigned int superdegree = dof_handler.get_fe ().degree;
-    const QGauss<dim - 1> reference_face_quadrature (2 * superdegree);
-    const unsigned int dofs_per_face = dof_handler.get_fe ().dofs_per_face;
-    hp::FECollection<dim> fe_collection (dof_handler.get_fe ());
-    hp::MappingCollection<dim> mapping_collection (mapping);
-    hp::QCollection<dim> face_quadrature_collection;
-
-    for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-      face_quadrature_collection.push_back
-        (QProjector<dim>::project_to_face (reference_face_quadrature, face));
-
-    hp::FEValues<dim> fe_face_values (mapping_collection, fe_collection,
-                                      face_quadrature_collection,
-                                      update_jacobians |
-                                      update_JxW_values |
-                                      update_quadrature_points |
-                                      update_values);
-
-    std::vector<double> dof_values (dofs_per_face);
-    std::vector<unsigned int> face_dof_indices (dofs_per_face);
-    typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-
-    switch (dim)
-      {
-        case 2:
-        {
-          for (; cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // if the FE is a
-                                                     // FE_Nothing object
-                                                     // there is no work to
-                                                     // do
-                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
-                      return;
-
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Nedelec
-                                                     // element. If the FE
-                                                     // is a FESystem, we
-                                                     // cannot check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0) {
-                      typedef FiniteElement<dim> FEL;
-                      AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
-
-                                   typename FEL::ExcInterpolationNotImplemented ());
-                    }
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      dof_values[dof] = 0.0;
-
-                                                     // Compute the
-                                                     // projection of the
-                                                     // boundary function on
-                                                     // the edge.
-                    internals
-                      ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
-                                                                 boundary_function,
-                                                                 first_vector_component,
-                                                                 dof_values);
-                    cell->face (face)->get_dof_indices (face_dof_indices,
-                                                        cell->active_fe_index ());
-
-                                                     // Add the computed
-                                                     // constraints to the
-                                                     // constraint matrix,
-                                                     // if the degree of
-                                                     // freedom is not
-                                                     // already constrained.
-                    const double tol = 1e-13;
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      if (!(constraints.is_constrained (face_dof_indices[dof])))
-                        {
-                          constraints.add_line (face_dof_indices[dof]);
-
-                          if (std::abs (dof_values[dof]) > tol)
-                            constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
-                        }
-                  }
-
-          break;
-        }
-
-        case 3:
-        {
-          const QGauss<dim - 2> reference_edge_quadrature (2 * superdegree);
-          const unsigned int degree = superdegree - 1;
-          const unsigned int n_dofs = dof_handler.n_dofs ();
-          hp::QCollection<dim> edge_quadrature_collection;
-
-          for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-            for (unsigned int line = 0; line < GeometryInfo<dim>::lines_per_face; ++line)
-              edge_quadrature_collection.push_back
-                (QProjector<dim>::project_to_face
-                 (QProjector<dim - 1>::project_to_face
-                  (reference_edge_quadrature, line), face));
-
-          hp::FEValues<dim> fe_edge_values (mapping_collection, fe_collection,
-                                            edge_quadrature_collection,
-                                            update_jacobians |
-                                            update_JxW_values |
-                                            update_quadrature_points |
-                                            update_values);
-          std::vector<double> computed_constraints (n_dofs);
-          std::vector<int> projected_dofs (n_dofs);
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof) {
-            computed_constraints[dof] = 0.0;
-            projected_dofs[dof] = -1;
-          }
-
-          for (; cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // if the FE is a
-                                                     // FE_Nothing object
-                                                     // there is no work to
-                                                     // do
-                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
-                      return;
-
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Nedelec
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      dof_values[dof] = 0.0;
-
-                    cell->face (face)->get_dof_indices (face_dof_indices,
-                                                        cell->active_fe_index ());
-
-                                                     // First we compute the
-                                                     // projection on the
-                                                     // edges.
-                    for (unsigned int line = 0;
-                         line < GeometryInfo<3>::lines_per_face; ++line)
-                      {
-                                                         // If we have reached
-                                                         // this edge through
-                                                         // another cell
-                                                         // before, we do not
-                                                         // do here anything
-                                                         // unless we have a
-                                                         // good reason, i.e.
-                                                         // a higher
-                                                         // polynomial degree.
-                        if (projected_dofs[face_dof_indices[line * superdegree]]
-                            <
-                            (int) degree)
-                          {
-                                                             // Compute the
-                                                             // projection of
-                                                             // the boundary
-                                                             // function on the
-                                                             // edge.
-                            internals
-                              ::compute_edge_projection (cell, face, line,
-                                                         fe_edge_values,
-                                                         boundary_function,
-                                                         first_vector_component,
-                                                         dof_values);
-                                                             // Mark the
-                                                             // projected
-                                                             // degrees of
-                                                             // freedom.
-                            for (unsigned int dof = line * superdegree;
-                                 dof < (line + 1) * superdegree; ++dof)
-                              projected_dofs[face_dof_indices[dof]] = degree;
-                          }
-
-                                                         // If we have
-                                                         // computed the
-                                                         // values in a
-                                                         // previous step of
-                                                         // the loop, we just
-                                                         // copy the values in
-                                                         // the local vector.
-                        else
-                          for (unsigned int dof = line * superdegree;
-                               dof < (line + 1) * superdegree; ++dof)
-                            dof_values[dof] = computed_constraints[face_dof_indices[dof]];
-                      }
-
-                                                     // If there are higher
-                                                     // order shape
-                                                     // functions, there is
-                                                     // still some work
-                                                     // left.
-                    if (degree > 0)
-                      {
-                                                         // Compute the
-                                                         // projection of the
-                                                         // boundary function
-                                                         // on the interior of
-                                                         // the face.
-                        internals
-                          ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
-                                                                     boundary_function,
-                                                                     first_vector_component,
-                                                                     dof_values);
-
-                                                         // Mark the projected
-                                                         // degrees of
-                                                         // freedom.
-                        for (unsigned int dof = GeometryInfo<dim>::lines_per_face * superdegree;
-                             dof < dofs_per_face; ++dof)
-                          projected_dofs[face_dof_indices[dof]] = degree;
-                      }
-
-                                                     // Store the computed
-                                                     // values in the global
-                                                     // vector.
-                    const double tol = 0.5 * superdegree * 1e-13 / cell->face (face)->diameter ();
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      if (std::abs (computed_constraints[face_dof_indices[dof]] - dof_values[dof]) > tol)
-                        computed_constraints[face_dof_indices[dof]] = dof_values[dof];
-                  }
-
-                                           // Add the computed constraints
-                                           // to the constraint matrix, if
-                                           // the degree of freedom is not
-                                           // already constrained.
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
-              {
-                constraints.add_line (dof);
-                constraints.set_inhomogeneity (dof, computed_constraints[dof]);
-              }
-
-          break;
-        }
-
-        default:
-              Assert (false, ExcNotImplemented ());
-      }
-  }
-
-
-
-  template <int dim>
-  void
-
-  project_boundary_values_curl_conforming (const hp::DoFHandler<dim>& dof_handler,
-                                           const unsigned int first_vector_component,
-                                           const Function<dim>& boundary_function,
-                                           const types::boundary_id_t boundary_component,
-                                           ConstraintMatrix& constraints,
-                                           const hp::MappingCollection<dim>& mapping_collection)
-  {
-    hp::FECollection<dim> fe_collection (dof_handler.get_fe ());
-    hp::QCollection<dim> face_quadrature_collection;
-
-    for (unsigned int i = 0; i < fe_collection.size (); ++i)
-      {
-        const QGauss<dim - 1>
-          reference_face_quadrature (2 * fe_collection[i].degree);
-
-        for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-          face_quadrature_collection.push_back
-            (QProjector<dim>::project_to_face (reference_face_quadrature, face));
-      }
-
-    hp::FEValues<dim> fe_face_values (mapping_collection, fe_collection,
-                                      face_quadrature_collection,
-                                      update_jacobians |
-                                      update_JxW_values |
-                                      update_quadrature_points |
-                                      update_values);
-    std::vector<double> dof_values;
-    std::vector<unsigned int> face_dof_indices;
-    typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-
-    switch (dim)
-      {
-        case 2:
-        {
-          for (; cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // if the FE is a
-                                                     // FE_Nothing object
-                                                     // there is no work to
-                                                     // do
-                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
-                      return;
-
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Nedelec
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    const unsigned int dofs_per_face = cell->get_fe ().dofs_per_face;
-
-                    dof_values.resize (dofs_per_face);
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      dof_values[dof] = 0.0;
-
-                    internals
-                      ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
-                                                                 boundary_function,
-                                                                 first_vector_component,
-                                                                 dof_values);
-                    face_dof_indices.resize (dofs_per_face);
-                    cell->face (face)->get_dof_indices (face_dof_indices,
-                                                        cell->active_fe_index ());
-
-                    const double tol = 0.5 * cell->get_fe ().degree * 1e-13  / cell->face (face)->diameter ();
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      if (!(constraints.is_constrained (face_dof_indices[dof])))
-                        {
-                          constraints.add_line (face_dof_indices[dof]);
-
-                          if (std::abs (dof_values[dof]) > tol)
-                            constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
-                        }
-                  }
-
-          break;
-        }
-
-        case 3:
-        {
-          const unsigned int n_dofs = dof_handler.n_dofs ();
-          hp::QCollection<dim> edge_quadrature_collection;
-
-          for (unsigned int i = 0; i < fe_collection.size (); ++i)
-            {
-              const QGauss<dim - 2>
-                reference_edge_quadrature (2 * fe_collection[i].degree);
-
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                for (unsigned int line = 0; line < GeometryInfo<dim>::lines_per_face; ++line)
-                  edge_quadrature_collection.push_back
-                    (QProjector<dim>::project_to_face
-                     (QProjector<dim - 1>::project_to_face (reference_edge_quadrature, line),
-                      face));
-            }
-
-          hp::FEValues<dim> fe_edge_values (mapping_collection, fe_collection,
-                                            edge_quadrature_collection,
-                                            update_jacobians |
-                                            update_JxW_values |
-                                            update_quadrature_points |
-                                            update_values);
-          std::vector<double> computed_constraints (n_dofs);
-          std::vector<int> projected_dofs (n_dofs);
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof) {
-            computed_constraints[dof] = 0.0;
-            projected_dofs[dof] = -1;
-          }
-
-          for (; cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // if the FE is a
-                                                     // FE_Nothing object
-                                                     // there is no work to
-                                                     // do
-                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
-                      return;
-
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Nedelec
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_Nedelec<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    const unsigned int superdegree = cell->get_fe ().degree;
-                    const unsigned int degree = superdegree - 1;
-                    const unsigned int dofs_per_face = cell->get_fe ().dofs_per_face;
-
-                    dof_values.resize (dofs_per_face);
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      dof_values[dof] = 0.0;
-
-                    face_dof_indices.resize (dofs_per_face);
-                    cell->face (face)->get_dof_indices (face_dof_indices,
-                                                        cell->active_fe_index ());
-
-                    for (unsigned int line = 0;
-                         line < GeometryInfo<dim>::lines_per_face; ++line)
-                      {
-                        if (projected_dofs[face_dof_indices[line * superdegree]]
-                            <
-                            (int) degree)
-                          {
-                            internals
-                              ::compute_edge_projection (cell, face, line,
-                                                         fe_edge_values,
-                                                         boundary_function,
-                                                         first_vector_component,
-                                                         dof_values);
-
-                            for (unsigned int dof = line * superdegree;
-                                 dof < (line + 1) * superdegree; ++dof)
-                              projected_dofs[face_dof_indices[dof]] = degree;
-                          }
-
-                        else
-                          for (unsigned int dof = line * superdegree;
-                               dof < (line + 1) * superdegree; ++dof)
-                            dof_values[dof] = computed_constraints[face_dof_indices[dof]];
-                      }
-
-                    if (degree > 0)
-                      {
-                        internals
-                          ::compute_face_projection_curl_conforming (cell, face, fe_face_values,
-                                                                     boundary_function,
-                                                                     first_vector_component,
-                                                                     dof_values);
-
-                        for (unsigned int dof = GeometryInfo<dim>::lines_per_face * superdegree;
-                             dof < dofs_per_face; ++dof)
-                          projected_dofs[face_dof_indices[dof]] = degree;
-                      }
-
-                    const double tol = 0.5 * superdegree * 1e-13  / cell->face (face)->diameter ();
-
-                    for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
-                      if (std::abs (computed_constraints[face_dof_indices[dof]] - dof_values[dof]) > tol)
-                        computed_constraints[face_dof_indices[dof]] = dof_values[dof];
-                  }
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
-              {
-                constraints.add_line (dof);
-                constraints.set_inhomogeneity (dof, computed_constraints[dof]);
-              }
-
-          break;
-        }
-
-        default:
-              Assert (false, ExcNotImplemented ());
-      }
-  }
-
-
-  namespace internals
-  {
-                                     // This function computes the
-                                     // projection of the boundary
-                                     // function on the boundary
-                                     // in 2d.
-    template <typename cell_iterator>
-    void
-    compute_face_projection_div_conforming (const cell_iterator& cell,
-                                            const unsigned int face,
-                                            const FEFaceValues<2>& fe_values,
-                                            const unsigned int first_vector_component,
-                                            const Function<2>& boundary_function,
-                                            const std::vector<DerivativeForm<1,2,2> > & jacobians,
-                                            ConstraintMatrix& constraints)
-    {
-                                       // Compute the intergral over
-                                       // the product of the normal
-                                       // components of the boundary
-                                       // function times the normal
-                                       // components of the shape
-                                       // functions supported on the
-                                       // boundary.
-      const FEValuesExtractors::Vector vec (first_vector_component);
-      const FiniteElement<2>& fe = cell->get_fe ();
-      const std::vector<Point<2> >& normals = fe_values.get_normal_vectors ();
-      const unsigned int
-        face_coordinate_direction[GeometryInfo<2>::faces_per_cell] = {1, 1, 0, 0};
-      std::vector<Vector<double> >
-        values (fe_values.n_quadrature_points, Vector<double> (2));
-      Vector<double> dof_values (fe.dofs_per_face);
-
-                                       // Get the values of the
-                                       // boundary function at the
-                                       // quadrature points.
-      {
-        const std::vector<Point<2> >&
-          quadrature_points = fe_values.get_quadrature_points ();
-
-        boundary_function.vector_value_list (quadrature_points, values);
-      }
-
-      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points; ++q_point)
-        {
-          double tmp = 0.0;
-
-          for (unsigned int d = 0; d < 2; ++d)
-            tmp += normals[q_point][d] * values[q_point] (d);
-
-          tmp *= fe_values.JxW (q_point)
-                 * std::sqrt (jacobians[q_point][0][face_coordinate_direction[face]]
-                              * jacobians[q_point][0][face_coordinate_direction[face]]
-                              + jacobians[q_point][1][face_coordinate_direction[face]]
-                              * jacobians[q_point][1][face_coordinate_direction[face]]);
-
-          for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
-            dof_values (i) += tmp * (normals[q_point]
-                                     * fe_values[vec].value (fe.face_to_cell_index (i, face), q_point));
-        }
-
-      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
-
-      cell->face (face)->get_dof_indices (face_dof_indices, cell->active_fe_index ());
-
-                                       // Copy the computed values
-                                       // in the ConstraintMatrix only,
-                                       // if the degree of freedom is
-                                       // not already constrained.
-      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
-        if (!(constraints.is_constrained (face_dof_indices[i])))
-          {
-            constraints.add_line (face_dof_indices[i]);
-
-            if (std::abs (dof_values (i)) > 1e-14)
-              constraints.set_inhomogeneity (face_dof_indices[i], dof_values (i));
-          }
-    }
-
-                                     // dummy implementation of above
-                                     // function for all other
-                                     // dimensions
-    template<int dim, typename cell_iterator>
-    void
-    compute_face_projection_div_conforming (const cell_iterator&,
-                                            const unsigned int,
-                                            const FEFaceValues<dim>&,
-                                            const unsigned int,
-                                            const Function<dim>&,
-                                            const std::vector<DerivativeForm<1,dim,dim> >&,
-                                            ConstraintMatrix&)
-    {
-      Assert (false, ExcNotImplemented ());
-    }
-
-                                     // This function computes the
-                                     // projection of the boundary
-                                     // function on the boundary
-                                     // in 3d.
-    template<typename cell_iterator>
-    void
-    compute_face_projection_div_conforming (const cell_iterator& cell,
-                                            const unsigned int face,
-                                            const FEFaceValues<3>& fe_values,
-                                            const unsigned int first_vector_component,
-                                            const Function<3>& boundary_function,
-                                            const std::vector<DerivativeForm<1,3,3> >& jacobians,
-                                            std::vector<double>& dof_values,
-                                            std::vector<unsigned int>& projected_dofs)
-    {
-                                       // Compute the intergral over
-                                       // the product of the normal
-                                       // components of the boundary
-                                       // function times the normal
-                                       // components of the shape
-                                       // functions supported on the
-                                       // boundary.
-      const FEValuesExtractors::Vector vec (first_vector_component);
-      const FiniteElement<3>& fe = cell->get_fe ();
-      const std::vector<Point<3> >& normals = fe_values.get_normal_vectors ();
-      const unsigned int
-        face_coordinate_directions[GeometryInfo<3>::faces_per_cell][2] = {{1, 2},
-                                                                          {1, 2},
-                                                                          {2, 0},
-                                                                          {2, 0},
-                                                                          {0, 1},
-                                                                          {0, 1}};
-      std::vector<Vector<double> >
-        values (fe_values.n_quadrature_points, Vector<double> (3));
-      Vector<double> dof_values_local (fe.dofs_per_face);
-
-      {
-        const std::vector<Point<3> >&
-          quadrature_points = fe_values.get_quadrature_points ();
-
-        boundary_function.vector_value_list (quadrature_points, values);
-      }
-
-      for (unsigned int q_point = 0; q_point < fe_values.n_quadrature_points; ++q_point)
-        {
-          double tmp = 0.0;
-
-          for (unsigned int d = 0; d < 3; ++d)
-            tmp += normals[q_point][d] * values[q_point] (d);
-
-          tmp *= fe_values.JxW (q_point)
-                 * std::sqrt ((jacobians[q_point][0][face_coordinate_directions[face][0]]
-                               * jacobians[q_point][0][face_coordinate_directions[face][0]]
-                               + jacobians[q_point][1][face_coordinate_directions[face][0]]
-                               * jacobians[q_point][1][face_coordinate_directions[face][0]]
-                               + jacobians[q_point][2][face_coordinate_directions[face][0]]
-                               * jacobians[q_point][2][face_coordinate_directions[face][0]])
-                              * (jacobians[q_point][0][face_coordinate_directions[face][1]]
-                                 * jacobians[q_point][0][face_coordinate_directions[face][1]]
-                                 + jacobians[q_point][1][face_coordinate_directions[face][1]]
-                                 * jacobians[q_point][1][face_coordinate_directions[face][1]]
-                                 + jacobians[q_point][2][face_coordinate_directions[face][1]]
-                                 * jacobians[q_point][2][face_coordinate_directions[face][1]]));
-
-          for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
-            dof_values_local (i) += tmp * (normals[q_point]
-                                           * fe_values[vec].value (fe.face_to_cell_index (i, face), q_point));
-        }
-
-      std::vector<unsigned int> face_dof_indices (fe.dofs_per_face);
-
-      cell->face (face)->get_dof_indices (face_dof_indices, cell->active_fe_index ());
-
-      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
-        if (projected_dofs[face_dof_indices[i]] < fe.degree)
-          {
-            dof_values[face_dof_indices[i]] = dof_values_local (i);
-            projected_dofs[face_dof_indices[i]] = fe.degree;
-          }
-    }
-
-                                     // dummy implementation of above
-                                     // function for all other
-                                     // dimensions
-    template<int dim, typename cell_iterator>
-    void
-    compute_face_projection_div_conforming (const cell_iterator&,
-                                            const unsigned int,
-                                            const FEFaceValues<dim>&,
-                                            const unsigned int,
-                                            const Function<dim>&,
-                                            const std::vector<DerivativeForm<1,dim,dim> > &,
-                                            std::vector<double>&,
-                                            std::vector<unsigned int>&)
-    {
-      Assert (false, ExcNotImplemented ());
-    }
-  }
-
-
-  template <int dim>
-  void
-  project_boundary_values_div_conforming (const DoFHandler<dim>& dof_handler,
-                                          const unsigned int first_vector_component,
-                                          const Function<dim>& boundary_function,
-                                          const types::boundary_id_t boundary_component,
-                                          ConstraintMatrix& constraints,
-                                          const Mapping<dim>& mapping)
-  {
-    const unsigned int spacedim = dim;
-                                     // Interpolate the normal components
-                                     // of the boundary functions. Since
-                                     // the Raviart-Thomas elements are
-                                     // constructed from a Lagrangian
-                                     // basis, it suffices to compute
-                                     // the integral over the product
-                                     // of the normal components of the
-                                     // boundary function times the
-                                     // normal components of the shape
-                                     // functions supported on the
-                                     // boundary.
-    const FiniteElement<dim>& fe = dof_handler.get_fe ();
-    QGauss<dim - 1> face_quadrature (fe.degree + 1);
-    FEFaceValues<dim> fe_face_values (mapping, fe, face_quadrature, update_JxW_values |
-                                      update_normal_vectors |
-                                      update_quadrature_points |
-                                      update_values);
-    hp::FECollection<dim> fe_collection (fe);
-    hp::MappingCollection<dim> mapping_collection (mapping);
-    hp::QCollection<dim> quadrature_collection;
-
-    for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-      quadrature_collection.push_back (QProjector<dim>::project_to_face (face_quadrature,
-                                                                         face));
-
-    hp::FEValues<dim> fe_values (mapping_collection, fe_collection, quadrature_collection,
-                                 update_jacobians);
-
-    switch (dim)
-      {
-        case 2:
-        {
-          for (typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-               cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // if the FE is a
-                                                     // FE_Nothing object
-                                                     // there is no work to
-                                                     // do
-                    if (dynamic_cast<const FE_Nothing<dim>*> (&cell->get_fe ()) != 0)
-                      return;
-
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Raviart-Thomas
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    fe_values.reinit (cell, face + cell->active_fe_index ()
-                                      * GeometryInfo<dim>::faces_per_cell);
-
-                    const std::vector<DerivativeForm<1,dim,spacedim> > &
-                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
-
-                    fe_face_values.reinit (cell, face);
-                    internals::compute_face_projection_div_conforming (cell, face,
-                                                                       fe_face_values,
-                                                                       first_vector_component,
-                                                                       boundary_function,
-                                                                       jacobians,
-                                                                       constraints);
-                  }
-
-          break;
-        }
-
-        case 3:
-        {
-                                           // In three dimensions the
-                                           // edges between two faces
-                                           // are treated twice.
-                                           // Therefore we store the
-                                           // computed values in a
-                                           // vector and copy them over
-                                           // in the ConstraintMatrix
-                                           // after all values have been
-                                           // computed.
-                                           // If we have two values for
-                                           // one edge, we choose the one,
-                                           // which was computed with the
-                                           // higher order element.
-                                           // If both elements are of the
-                                           // same order, we just keep the
-                                           // first value and do not
-                                           // compute a second one.
-          const unsigned int& n_dofs = dof_handler.n_dofs ();
-          std::vector<double> dof_values (n_dofs);
-          std::vector<unsigned int> projected_dofs (n_dofs);
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            projected_dofs[dof] = 0;
-
-          for (typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-               cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Raviart-Thomas
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    fe_values.reinit (cell, face + cell->active_fe_index ()
-                                      * GeometryInfo<dim>::faces_per_cell);
-
-                    const std::vector<DerivativeForm<1,dim ,spacedim> >&
-                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
-
-                    fe_face_values.reinit (cell, face);
-                    internals::compute_face_projection_div_conforming (cell, face,
-                                                                       fe_face_values,
-                                                                       first_vector_component,
-                                                                       boundary_function,
-                                                                       jacobians, dof_values,
-                                                                       projected_dofs);
-                  }
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            if ((projected_dofs[dof] != 0) && !(constraints.is_constrained (dof)))
-              {
-                constraints.add_line (dof);
-
-                if (std::abs (dof_values[dof]) > 1e-14)
-                  constraints.set_inhomogeneity (dof, dof_values[dof]);
-              }
-
-          break;
-        }
-
-        default:
-              Assert (false, ExcNotImplemented ());
-      }
-  }
-
-
-  template <int dim>
-  void
-  project_boundary_values_div_conforming (const hp::DoFHandler<dim>& dof_handler,
-                                          const unsigned int first_vector_component,
-                                          const Function<dim>& boundary_function,
-                                          const types::boundary_id_t boundary_component,
-                                          ConstraintMatrix& constraints,
-                                          const hp::MappingCollection<dim, dim>& mapping_collection)
-  {
-    const unsigned int spacedim = dim;
-    const hp::FECollection<dim>& fe_collection = dof_handler.get_fe ();
-    hp::QCollection<dim - 1> face_quadrature_collection;
-    hp::QCollection<dim> quadrature_collection;
-
-    for (unsigned int i = 0; i < fe_collection.size (); ++i)
-      {
-        const QGauss<dim - 1> quadrature (fe_collection[i].degree + 1);
-
-        face_quadrature_collection.push_back (quadrature);
-
-        for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-          quadrature_collection.push_back (QProjector<dim>::project_to_face (quadrature,
-                                                                             face));
-      }
-
-    hp::FEFaceValues<dim> fe_face_values (mapping_collection, fe_collection,
-                                          face_quadrature_collection, update_JxW_values |
-                                          update_normal_vectors |
-                                          update_quadrature_points |
-                                          update_values);
-    hp::FEValues<dim> fe_values (mapping_collection, fe_collection, quadrature_collection,
-                                 update_jacobians);
-
-    switch (dim)
-      {
-        case 2:
-        {
-          for (typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-               cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Raviart-Thomas
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    fe_values.reinit (cell, face + cell->active_fe_index ()
-                                      * GeometryInfo<dim>::faces_per_cell);
-
-                    const std::vector<DerivativeForm<1,dim,spacedim> > &
-                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
-
-                    fe_face_values.reinit (cell, face);
-                    internals::compute_face_projection_div_conforming (cell, face,
-                                                                       fe_face_values.get_present_fe_values (),
-                                                                       first_vector_component,
-                                                                       boundary_function,
-                                                                       jacobians,
-                                                                       constraints);
-                  }
-
-          break;
-        }
-
-        case 3:
-        {
-          const unsigned int& n_dofs = dof_handler.n_dofs ();
-          std::vector<double> dof_values (n_dofs);
-          std::vector<unsigned int> projected_dofs (n_dofs);
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            projected_dofs[dof] = 0;
-
-          for (typename hp::DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active ();
-               cell != dof_handler.end (); ++cell)
-            if (cell->at_boundary ())
-              for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell; ++face)
-                if (cell->face (face)->boundary_indicator () == boundary_component)
-                  {
-                                                     // This is only
-                                                     // implemented, if the
-                                                     // FE is a Raviart-Thomas
-                                                     // element. If the FE is
-                                                     // a FESystem we cannot
-                                                     // check this.
-                    if (dynamic_cast<const FESystem<dim>*> (&cell->get_fe ()) == 0)
-                      {
-                        typedef FiniteElement<dim> FEL;
-
-                        AssertThrow (dynamic_cast<const FE_RaviartThomas<dim>*> (&cell->get_fe ()) != 0,
-                                     typename FEL::ExcInterpolationNotImplemented ());
-                      }
-
-                    fe_values.reinit (cell, face + cell->active_fe_index ()
-                                      * GeometryInfo<dim>::faces_per_cell);
-
-                    const std::vector<DerivativeForm<1,dim,spacedim> > &
-                      jacobians = fe_values.get_present_fe_values ().get_jacobians ();
-
-                    fe_face_values.reinit (cell, face);
-                    internals::compute_face_projection_div_conforming (cell, face,
-                                                                       fe_face_values.get_present_fe_values (),
-                                                                       first_vector_component,
-                                                                       boundary_function,
-                                                                       jacobians, dof_values,
-                                                                       projected_dofs);
-                  }
-
-          for (unsigned int dof = 0; dof < n_dofs; ++dof)
-            if ((projected_dofs[dof] != 0) && !(constraints.is_constrained (dof)))
-              {
-                constraints.add_line (dof);
-
-                if (std::abs (dof_values[dof]) > 1e-14)
-                  constraints.set_inhomogeneity (dof, dof_values[dof]);
-              }
-
-          break;
-        }
-
-        default:
-              Assert (false, ExcNotImplemented ());
-      }
-  }
-
-
-
-  template <int dim, template <int, int> class DH, int spacedim>
-  void
-  compute_no_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
-                                      const unsigned int     first_vector_component,
-                                      const std::set<types::boundary_id_t> &boundary_ids,
-                                      ConstraintMatrix      &constraints,
-                                      const Mapping<dim, spacedim>    &mapping)
-  {
-    Assert (dim > 1,
-            ExcMessage ("This function is not useful in 1d because it amounts "
-                        "to imposing Dirichlet values on the vector-valued "
-                        "quantity."));
-
-    std::vector<unsigned int> face_dofs;
-
-                                     // create FE and mapping
-                                     // collections for all elements in
-                                     // use by this DoFHandler
-    hp::FECollection<dim,spacedim>      fe_collection (dof_handler.get_fe());
-    hp::MappingCollection<dim,spacedim> mapping_collection;
-    for (unsigned int i=0; i<fe_collection.size(); ++i)
-      mapping_collection.push_back (mapping);
-
-                                     // now also create a quadrature
-                                     // collection for the faces of a
-                                     // cell. fill it with a quadrature
-                                     // formula with the support points
-                                     // on faces for each FE
-    hp::QCollection<dim-1> face_quadrature_collection;
-    for (unsigned int i=0; i<fe_collection.size(); ++i)
-      {
-        const std::vector<Point<dim-1> > &
-          unit_support_points = fe_collection[i].get_unit_face_support_points();
-
-        Assert (unit_support_points.size() == fe_collection[i].dofs_per_face,
-                ExcInternalError());
-
-        face_quadrature_collection
-          .push_back (Quadrature<dim-1> (unit_support_points));
-      }
-
-                                     // now create the object with which
-                                     // we will generate the normal
-                                     // vectors
-    hp::FEFaceValues<dim,spacedim> x_fe_face_values (mapping_collection,
-                                                     fe_collection,
-                                                     face_quadrature_collection,
-                                                     update_q_points);
-
-                                     // have a map that stores normal
-                                     // vectors for each vector-dof
-                                     // tuple we want to
-                                     // constrain. since we can get at
-                                     // the same vector dof tuple more
-                                     // than once (for example if it is
-                                     // located at a vertex that we
-                                     // visit from all adjacent cells),
-                                     // we will want to average later on
-                                     // the normal vectors computed on
-                                     // different cells as described in
-                                     // the documentation of this
-                                     // function. however, we can only
-                                     // average if the contributions
-                                     // came from different cells,
-                                     // whereas we want to constrain
-                                     // twice or more in case the
-                                     // contributions came from
-                                     // different faces of the same cell
-                                     // (i.e. constrain not just the
-                                     // *average normal direction* but
-                                     // *all normal directions* we
-                                     // find). consequently, we also
-                                     // have to store which cell a
-                                     // normal vector was computed on
-    typedef
-      std::multimap<internal::VectorDoFTuple<dim>,
-      std::pair<Tensor<1,dim>, typename DH<dim,spacedim>::active_cell_iterator> >
-      DoFToNormalsMap;
-
-    DoFToNormalsMap dof_to_normals_map;
-
-                                     // now loop over all cells and all faces
-    typename DH<dim,spacedim>::active_cell_iterator
-      cell = dof_handler.begin_active(),
-      endc = dof_handler.end();
-    for (; cell!=endc; ++cell)
-      if (!cell->is_artificial())
-        for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
-             ++face_no)
-          if (boundary_ids.find(cell->face(face_no)->boundary_indicator())
-              != boundary_ids.end())
-            {
-              const FiniteElement<dim>& fe = cell->get_fe ();
-              typename DH<dim,spacedim>::face_iterator face = cell->face(face_no);
-
-                                               // get the indices of the
-                                               // dofs on this cell...
-              face_dofs.resize (fe.dofs_per_face);
-              face->get_dof_indices (face_dofs, cell->active_fe_index());
-
-              x_fe_face_values.reinit (cell, face_no);
-              const FEFaceValues<dim> &fe_values = x_fe_face_values.get_present_fe_values();
-
-                                               // then identify which of
-                                               // them correspond to the
-                                               // selected set of vector
-                                               // components
-              for (unsigned int i=0; i<face_dofs.size(); ++i)
-                if (fe.face_system_to_component_index(i).first ==
-                    first_vector_component)
-                  {
-                                                     // find corresponding other
-                                                     // components of vector
-                    internal::VectorDoFTuple<dim> vector_dofs;
-                    vector_dofs.dof_indices[0] = face_dofs[i];
-
-                    for (unsigned int k=0; k<fe.dofs_per_face; ++k)
-                      if ((k != i)
-                          &&
-                          (face_quadrature_collection[cell->active_fe_index()].point(k) ==
-                           face_quadrature_collection[cell->active_fe_index()].point(i))
-                          &&
-                          (fe.face_system_to_component_index(k).first >=
-                           first_vector_component)
-                          &&
-                          (fe.face_system_to_component_index(k).first <
-                           first_vector_component + dim))
-                        vector_dofs.dof_indices[fe.face_system_to_component_index(k).first -
-                                                first_vector_component]
-                          = face_dofs[k];
-
-                    for (unsigned int d=0; d<dim; ++d)
-                      Assert (vector_dofs.dof_indices[d] < dof_handler.n_dofs(),
-                              ExcInternalError());
-
-                                                     // we need the normal
-                                                     // vector on this face. we
-                                                     // know that it is a vector
-                                                     // of length 1 but at least
-                                                     // with higher order
-                                                     // mappings it isn't always
-                                                     // possible to guarantee
-                                                     // that each component is
-                                                     // exact up to zero
-                                                     // tolerance. in
-                                                     // particular, as shown in
-                                                     // the deal.II/no_flux_06
-                                                     // test, if we just take
-                                                     // the normal vector as
-                                                     // given by the fe_values
-                                                     // object, we can get
-                                                     // entries in the normal
-                                                     // vectors of the unit cube
-                                                     // that have entries up to
-                                                     // several times 1e-14.
-                                                     //
-                                                     // the problem with this is
-                                                     // that this later yields
-                                                     // constraints that are
-                                                     // circular (e.g., in the
-                                                     // testcase, we get
-                                                     // constraints of the form
-                                                     //
-                                                     // x22 =  2.93099e-14*x21 + 2.93099e-14*x23
-                                                     // x21 = -2.93099e-14*x22 + 2.93099e-14*x21
-                                                     //
-                                                     // in both of these
-                                                     // constraints, the small
-                                                     // numbers should be zero
-                                                     // and the constraints
-                                                     // should simply be
-                                                     //    x22 = x21 = 0
-                                                     //
-                                                     // to achieve this, we
-                                                     // utilize that we know
-                                                     // that the normal vector
-                                                     // has (or should have)
-                                                     // length 1 and that we can
-                                                     // simply set small
-                                                     // elements to zero
-                                                     // (without having to check
-                                                     // that they are small
-                                                     // *relative to something
-                                                     // else*). we do this and
-                                                     // then normalize the
-                                                     // length of the vector
-                                                     // back to one, just to be
-                                                     // on the safe side
-                    Point<dim> normal_vector
-                      = (cell->face(face_no)->get_boundary()
-                         .normal_vector (cell->face(face_no),
-                                         fe_values.quadrature_point(i)));
-                    Assert (std::fabs(normal_vector.norm() - 1) < 1e-14,
-                            ExcInternalError());
-                    for (unsigned int d=0; d<dim; ++d)
-                      if (std::fabs(normal_vector[d]) < 1e-13)
-                        normal_vector[d] = 0;
-                    normal_vector /= normal_vector.norm();
-
-                                                     // now enter the
-                                                     // (dofs,(normal_vector,cell))
-                                                     // entry into the map
-                    dof_to_normals_map
-                      .insert (std::make_pair (vector_dofs,
-                                               std::make_pair (normal_vector,
-                                                               cell)));
-                  }
-            }
-
-                                     // Now do something with the
-                                     // collected information. To this
-                                     // end, loop through all sets of
-                                     // pairs (dofs,normal_vector) and
-                                     // identify which entries belong to
-                                     // the same set of dofs and then do
-                                     // as described in the
-                                     // documentation, i.e. either
-                                     // average the normal vector or
-                                     // don't for this particular set of
-                                     // dofs
-    typename DoFToNormalsMap::const_iterator
-      p = dof_to_normals_map.begin();
-
-    while (p != dof_to_normals_map.end())
-      {
-                                         // first find the range of entries in
-                                         // the multimap that corresponds to the
-                                         // same vector-dof tuple. as usual, we
-                                         // define the range half-open. the
-                                         // first entry of course is 'p'
-        typename DoFToNormalsMap::const_iterator same_dof_range[2]
-          = { p };
-        for (++p; p != dof_to_normals_map.end(); ++p)
-          if (p->first != same_dof_range[0]->first)
-            {
-              same_dof_range[1] = p;
-              break;
-            }
-        if (p == dof_to_normals_map.end())
-          same_dof_range[1] = dof_to_normals_map.end();
-
-                                         // now compute the reverse mapping: for
-                                         // each of the cells that contributed
-                                         // to the current set of vector dofs,
-                                         // add up the normal vectors. the
-                                         // values of the map are pairs of
-                                         // normal vectors and number of cells
-                                         // that have contributed
-        typedef
-          std::map
-          <typename DH<dim,spacedim>::active_cell_iterator,
-          std::pair<Tensor<1,dim>, unsigned int> >
-          CellToNormalsMap;
-
-        CellToNormalsMap cell_to_normals_map;
-        for (typename DoFToNormalsMap::const_iterator
-               q = same_dof_range[0];
-             q != same_dof_range[1]; ++q)
-          if (cell_to_normals_map.find (q->second.second)
-              == cell_to_normals_map.end())
-            cell_to_normals_map[q->second.second]
-              = std::make_pair (q->second.first, 1U);
-          else
-            {
-              const Tensor<1,dim> old_normal
-                = cell_to_normals_map[q->second.second].first;
-              const unsigned int old_count
-                = cell_to_normals_map[q->second.second].second;
-
-              Assert (old_count > 0, ExcInternalError());
-
-                                               // in the same entry,
-                                               // store again the now
-                                               // averaged normal vector
-                                               // and the new count
-              cell_to_normals_map[q->second.second]
-                = std::make_pair ((old_normal * old_count + q->second.first) / (old_count + 1),
-                                  old_count + 1);
-            }
-
-        Assert (cell_to_normals_map.size() >= 1, ExcInternalError());
-
-                                         // count the maximum number of
-                                         // contributions from each cell
-        unsigned int max_n_contributions_per_cell = 1;
-        for (typename CellToNormalsMap::const_iterator
-               x = cell_to_normals_map.begin();
-             x != cell_to_normals_map.end(); ++x)
-          max_n_contributions_per_cell
-            = std::max (max_n_contributions_per_cell,
-                        x->second.second);
-
-                                         // verify that each cell can have only
-                                         // contributed at most dim times, since
-                                         // that is the maximum number of faces
-                                         // that come together at a single place
-        Assert (max_n_contributions_per_cell <= dim, ExcInternalError());
-
-        switch (max_n_contributions_per_cell)
-          {
-                                             // first deal with the case that a
-                                             // number of cells all have
-                                             // registered that they have a
-                                             // normal vector defined at the
-                                             // location of a given vector dof,
-                                             // and that each of them have
-                                             // encountered this vector dof
-                                             // exactly once while looping over
-                                             // all their faces. as stated in
-                                             // the documentation, this is the
-                                             // case where we want to simply
-                                             // average over all normal vectors
-            case 1:
-            {
-
-                                               // compute the average
-                                               // normal vector from all
-                                               // the ones that have the
-                                               // same set of dofs. we
-                                               // could add them up and
-                                               // divide them by the
-                                               // number of additions,
-                                               // or simply normalize
-                                               // them right away since
-                                               // we want them to have
-                                               // unit length anyway
-              Tensor<1,dim> normal;
-              for (typename CellToNormalsMap::const_iterator
-                     x = cell_to_normals_map.begin();
-                   x != cell_to_normals_map.end(); ++x)
-                normal += x->second.first;
-              normal /= normal.norm();
-
-                                               // normalize again
-              for (unsigned int d=0; d<dim; ++d)
-                if (std::fabs(normal[d]) < 1e-13)
-                  normal[d] = 0;
-              normal /= normal.norm();
-
-                                               // then construct constraints
-                                               // from this:
-              const internal::VectorDoFTuple<dim> &
-                dof_indices = same_dof_range[0]->first;
-              internal::add_constraint (dof_indices, normal,
-                                        constraints);
-
-              break;
-            }
-
-
-                                             // this is the slightly
-                                             // more complicated case
-                                             // that a single cell has
-                                             // contributed with exactly
-                                             // DIM normal vectors to
-                                             // the same set of vector
-                                             // dofs. this is what
-                                             // happens in a corner in
-                                             // 2d and 3d (but not on an
-                                             // edge in 3d, where we
-                                             // have only 2, i.e. <DIM,
-                                             // contributions. Here we
-                                             // do not want to average
-                                             // the normal
-                                             // vectors. Since we have
-                                             // DIM contributions, let's
-                                             // assume (and verify) that
-                                             // they are in fact all
-                                             // linearly independent; in
-                                             // that case, all vector
-                                             // components are
-                                             // constrained and we need
-                                             // to set them to zero
-            case dim:
-            {
-                                               // assert that indeed
-                                               // only a single cell has
-                                               // contributed
-              Assert (cell_to_normals_map.size() == 1,
-                      ExcInternalError());
-
-                                               // check linear
-                                               // independence by
-                                               // computing the
-                                               // determinant of the
-                                               // matrix created from
-                                               // all the normal
-                                               // vectors. if they are
-                                               // linearly independent,
-                                               // then the determinant
-                                               // is nonzero. if they
-                                               // are orthogonal, then
-                                               // the matrix is in fact
-                                               // equal to 1 (since they
-                                               // are all unit vectors);
-                                               // make sure the
-                                               // determinant is larger
-                                               // than 1e-3 to avoid
-                                               // cases where cells are
-                                               // degenerate
-              {
-                Tensor<2,dim> t;
-
-                typename DoFToNormalsMap::const_iterator x = same_dof_range[0];
-                for (unsigned int i=0; i<dim; ++i, ++x)
-                  for (unsigned int j=0; j<dim; ++j)
-                    t[i][j] = x->second.first[j];
-
-                Assert (std::fabs(determinant (t)) > 1e-3,
-                        ExcMessage("Found a set of normal vectors that are nearly collinear."));
-              }
-
-                                               // so all components of
-                                               // this vector dof are
-                                               // constrained. enter
-                                               // this into the
-                                               // constraint matrix
-                                               //
-                                               // ignore dofs already
-                                               // constrained
-              for (unsigned int i=0; i<dim; ++i)
-                if (!constraints.is_constrained (same_dof_range[0]
-                                                 ->first.dof_indices[i])
-                    &&
-                    constraints.can_store_line(
-                      same_dof_range[0]->first.dof_indices[i]))
-                  {
-                    constraints.add_line (same_dof_range[0]->first.dof_indices[i]);
-                                                     // no add_entries here
-                  }
-
-              break;
-            }
-
-
-                                             // this is the case of an
-                                             // edge contribution in 3d,
-                                             // i.e. the vector is
-                                             // constrained in two
-                                             // directions but not the
-                                             // third.
-            default:
-            {
-              Assert (dim >= 3, ExcNotImplemented());
-              Assert (max_n_contributions_per_cell == 2, ExcInternalError());
-
-                                               // as described in the
-                                               // documentation, let us
-                                               // first collect what
-                                               // each of the cells
-                                               // contributed at the
-                                               // current point. we use
-                                               // a std::list instead of
-                                               // a std::set (which
-                                               // would be more natural)
-                                               // because std::set
-                                               // requires that the
-                                               // stored elements are
-                                               // comparable with
-                                               // operator<
-              typedef
-                std::map<typename DH<dim,spacedim>::active_cell_iterator, std::list<Tensor<1,dim> > >
-                CellContributions;
-              CellContributions cell_contributions;
-
-              for (typename DoFToNormalsMap::const_iterator
-                     q = same_dof_range[0];
-                   q != same_dof_range[1]; ++q)
-                cell_contributions[q->second.second].push_back (q->second.first);
-              Assert (cell_contributions.size() >= 1, ExcInternalError());
-
-                                               // now for each cell that
-                                               // has contributed
-                                               // determine the number
-                                               // of normal vectors it
-                                               // has contributed. we
-                                               // currently only
-                                               // implement if this is
-                                               // dim-1 for all cells
-                                               // (if a single cell has
-                                               // contributed dim, or if
-                                               // all adjacent cells
-                                               // have contributed 1
-                                               // normal vector, this is
-                                               // already handled above)
-                                               //
-                                               // for each contributing
-                                               // cell compute the
-                                               // tangential vector that
-                                               // remains unconstrained
-              std::list<Tensor<1,dim> > tangential_vectors;
-              for (typename CellContributions::const_iterator
-                     contribution = cell_contributions.begin();
-                   contribution != cell_contributions.end();
-                   ++contribution)
-                {
-                  Assert (contribution->second.size() == dim-1, ExcNotImplemented());
-
-                  Tensor<1,dim> normals[dim-1];
-                  {
-                    unsigned int index=0;
-                    for (typename std::list<Tensor<1,dim> >::const_iterator
-                           t = contribution->second.begin();
-                         t != contribution->second.end();
-                         ++t, ++index)
-                      normals[index] = *t;
-                    Assert (index == dim-1, ExcInternalError());
-                  }
-
-                                                   // calculate the
-                                                   // tangent as the
-                                                   // outer product of
-                                                   // the normal
-                                                   // vectors. since
-                                                   // these vectors do
-                                                   // not need to be
-                                                   // orthogonal (think,
-                                                   // for example, the
-                                                   // case of the
-                                                   // deal.II/no_flux_07
-                                                   // test: a sheared
-                                                   // cube in 3d, with
-                                                   // Q2 elements, where
-                                                   // we have
-                                                   // constraints from
-                                                   // the two normal
-                                                   // vectors of two
-                                                   // faces of the
-                                                   // sheared cube that
-                                                   // are not
-                                                   // perpendicular to
-                                                   // each other), we
-                                                   // have to normalize
-                                                   // the outer product
-                  Tensor<1,dim> tangent;
-                  switch (dim)
-                    {
-                      case 3:
-                                                             // take
-                                                             // cross
-                                                             // product
-                                                             // between
-                                                             // normals[0]
-                                                             // and
-                                                             // normals[1]. write
-                                                             // it in
-                                                             // the
-                                                             // current
-                                                             // form
-                                                             // (with
-                                                             // [dim-2])
-                                                             // to make
-                                                             // sure
-                                                             // that
-                                                             // compilers
-                                                             // don't
-                                                             // warn
-                                                             // about
-                                                             // out-of-bounds
-                                                             // accesses
-                                                             // -- the
-                                                             // warnings
-                                                             // are
-                                                             // bogus
-                                                             // since we
-                                                             // get here
-                                                             // only for
-                                                             // dim==3,
-                                                             // but at
-                                                             // least
-                                                             // one
-                                                             // isn't
-                                                             // quite
-                                                             // smart
-                                                             // enough
-                                                             // to
-                                                             // notice
-                                                             // this and
-                                                             // warns
-                                                             // when
-                                                             // compiling
-                                                             // the
-                                                             // function
-                                                             // in 2d
-                            cross_product (tangent, normals[0], normals[dim-2]);
-                            break;
-                      default:
-                            Assert (false, ExcNotImplemented());
-                    }
-
-                  Assert (std::fabs (tangent.norm()) > 1e-12,
-                          ExcMessage("Two normal vectors from adjacent faces are almost "
-                                     "parallel."));
-                  tangent /= tangent.norm();
-
-                  tangential_vectors.push_back (tangent);
-                }
-
-                                               // go through the list of
-                                               // tangents and make sure
-                                               // that they all roughly
-                                               // point in the same
-                                               // direction as the first
-                                               // one (i.e. have an
-                                               // angle less than 90
-                                               // degrees); if they
-                                               // don't then flip their
-                                               // sign
-              {
-                const Tensor<1,dim> first_tangent = tangential_vectors.front();
-                typename std::list<Tensor<1,dim> >::iterator
-                  t = tangential_vectors.begin();
-                ++t;
-                for (; t != tangential_vectors.end(); ++t)
-                  if (*t * first_tangent < 0)
-                    *t *= -1;
-              }
-
-                                               // now compute the
-                                               // average tangent and
-                                               // normalize it
-              Tensor<1,dim> average_tangent;
-              for (typename std::list<Tensor<1,dim> >::const_iterator
-                     t = tangential_vectors.begin();
-                   t != tangential_vectors.end();
-                   ++t)
-                average_tangent += *t;
-              average_tangent /= average_tangent.norm();
-
-                                               // now all that is left
-                                               // is that we add the
-                                               // constraints that the
-                                               // vector is parallel
-                                               // to the tangent
-              const internal::VectorDoFTuple<dim> &
-                dof_indices = same_dof_range[0]->first;
-             internal::add_tangentiality_constraints (dof_indices,
-                                                      average_tangent,
-                                                      constraints);
-            }
-          }
-      }
-  }
-
-
-
-  namespace internal
-  {
-    template <int dim, class InVector, class OutVector, class DH, int spacedim>
-    static
-    void
-    do_integrate_difference (const dealii::hp::MappingCollection<dim,spacedim>    &mapping,
-                             const DH              &dof,
-                             const InVector        &fe_function,
-                             const Function<spacedim>   &exact_solution,
-                             OutVector             &difference,
-                             const dealii::hp::QCollection<dim> &q,
-                             const NormType &norm,
-                             const Function<spacedim>   *weight,
-                             const double           exponent_1)
-    {
-                                       // we mark the "exponent" parameter
-                                       // to this function "const" since
-                                       // it is strictly incoming, but we
-                                       // need to set it to something
-                                       // different later on, if
-                                       // necessary, so have a read-write
-                                       // version of it:
-      double exponent = exponent_1;
-
-      const unsigned int        n_components = dof.get_fe().n_components();
-      const bool                fe_is_system = (n_components != 1);
-
-      if (weight!=0)
-        {
-          Assert ((weight->n_components==1) || (weight->n_components==n_components),
-                  ExcDimensionMismatch(weight->n_components, n_components));
-        }
-
-      difference.reinit (dof.get_tria().n_active_cells());
-
-      switch (norm)
-        {
-          case L2_norm:
-          case H1_seminorm:
-          case H1_norm:
-                exponent = 2.;
-                break;
-          case L1_norm:
-                exponent = 1.;
-                break;
-          default:
-                break;
-        }
-
-      UpdateFlags update_flags = UpdateFlags (update_quadrature_points  |
-                                              update_JxW_values);
-      switch (norm)
-        {
-          case H1_seminorm:
-          case W1p_seminorm:
-          case W1infty_seminorm:
-                update_flags |= UpdateFlags (update_gradients);
-                if(spacedim == dim+1) update_flags |= UpdateFlags (update_normal_vectors);
-
-                break;
-          case H1_norm:
-          case W1p_norm:
-          case W1infty_norm:
-                update_flags |= UpdateFlags (update_gradients);
-                if(spacedim == dim+1) update_flags |= UpdateFlags (update_normal_vectors);
-                                                 // no break!
-          default:
-                update_flags |= UpdateFlags (update_values);
-                break;
-        }
-
-      dealii::hp::FECollection<dim,spacedim> fe_collection (dof.get_fe());
-      dealii::hp::FEValues<dim,spacedim> x_fe_values(mapping, fe_collection, q, update_flags);
-
-      const unsigned int max_n_q_points = q.max_n_quadrature_points ();
-
-      std::vector< dealii::Vector<double> >
-        function_values (max_n_q_points, dealii::Vector<double>(n_components));
-      std::vector<std::vector<Tensor<1,spacedim> > >
-        function_grads (max_n_q_points, std::vector<Tensor<1,spacedim> >(n_components));
-
-      std::vector<double>
-        weight_values (max_n_q_points);
-      std::vector<dealii::Vector<double> >
-        weight_vectors (max_n_q_points, dealii::Vector<double>(n_components));
-
-      std::vector<dealii::Vector<double> >
-        psi_values (max_n_q_points, dealii::Vector<double>(n_components));
-      std::vector<std::vector<Tensor<1,spacedim> > >
-        psi_grads (max_n_q_points, std::vector<Tensor<1,spacedim> >(n_components));
-      std::vector<double>
-        psi_scalar (max_n_q_points);
-
-                                       // tmp vector when we use the
-                                       // Function<spacedim> functions for
-                                       // scalar functions
-      std::vector<double>         tmp_values (max_n_q_points);
-      std::vector<Tensor<1,spacedim> > tmp_gradients (max_n_q_points);
-
-                                       // loop over all cells
-      typename DH::active_cell_iterator cell = dof.begin_active(),
-                                        endc = dof.end();
-      for (unsigned int index=0; cell != endc; ++cell, ++index)
-        if (cell->is_locally_owned())
-          {
-            double diff=0;
-                                             // initialize for this cell
-            x_fe_values.reinit (cell);
-
-            const dealii::FEValues<dim, spacedim> &fe_values  = x_fe_values.get_present_fe_values ();
-            const unsigned int   n_q_points = fe_values.n_quadrature_points;
-
-                                             // resize all out scratch
-                                             // arrays to the number of
-                                             // quadrature points we use
-                                             // for the present cell
-            function_values.resize (n_q_points,
-                                    dealii::Vector<double>(n_components));
-            function_grads.resize (n_q_points,
-                                   std::vector<Tensor<1,spacedim> >(n_components));
-
-            weight_values.resize (n_q_points);
-            weight_vectors.resize (n_q_points,
-                                   dealii::Vector<double>(n_components));
-
-            psi_values.resize (n_q_points,
-                               dealii::Vector<double>(n_components));
-            psi_grads.resize (n_q_points,
-                              std::vector<Tensor<1,spacedim> >(n_components));
-            psi_scalar.resize (n_q_points);
-
-            tmp_values.resize (n_q_points);
-            tmp_gradients.resize (n_q_points);
-
-            if (weight!=0)
-              {
-                if (weight->n_components>1)
-                  weight->vector_value_list (fe_values.get_quadrature_points(),
-                                             weight_vectors);
-                else
-                  {
-                    weight->value_list (fe_values.get_quadrature_points(),
-                                        weight_values);
-                    for (unsigned int k=0;k<n_q_points;++k)
-                      weight_vectors[k] = weight_values[k];
-                  }
-              }
-            else
-              {
-                for (unsigned int k=0;k<n_q_points;++k)
-                  weight_vectors[k] = 1.;
-              }
-
-
-            if (update_flags & update_values)
-              {
-                                                 // first compute the exact solution
-                                                 // (vectors) at the quadrature points
-                                                 // try to do this as efficient as
-                                                 // possible by avoiding a second
-                                                 // virtual function call in case
-                                                 // the function really has only
-                                                 // one component
-                if (fe_is_system)
-                  exact_solution.vector_value_list (fe_values.get_quadrature_points(),
-                                                    psi_values);
-                else
-                  {
-                    exact_solution.value_list (fe_values.get_quadrature_points(),
-                                               tmp_values);
-                    for (unsigned int i=0; i<n_q_points; ++i)
-                      psi_values[i](0) = tmp_values[i];
-                  }
-
-                                                 // then subtract finite element
-                                                 // fe_function
-                fe_values.get_function_values (fe_function, function_values);
-                for (unsigned int q=0; q<n_q_points; ++q)
-                  psi_values[q] -= function_values[q];
-              }
-
-                                             // Do the same for gradients, if required
-            if (update_flags & update_gradients)
-              {
-                                                 // try to be a little clever
-                                                 // to avoid recursive virtual
-                                                 // function calls when calling
-                                                 // gradient_list for functions
-                                                 // that are really scalar
-                                                 // functions
-                if (fe_is_system)
-                  exact_solution.vector_gradient_list (fe_values.get_quadrature_points(),
-                                                       psi_grads);
-                else
-                  {
-                    exact_solution.gradient_list (fe_values.get_quadrature_points(),
-                                                  tmp_gradients);
-                    for (unsigned int i=0; i<n_q_points; ++i)
-                      psi_grads[i][0] = tmp_gradients[i];
-                  }
-
-                                                 // then subtract finite element
-                                                 // function_grads. We
-                                                 // need to be careful
-                                                 // in the codimension
-                                                 // one case, since
-                                                 // there we only have
-                                                 // tangential gradients
-                                                 // in the finite
-                                                 // element function,
-                                                 // not the full
-                                                 // gradient. This is
-                                                 // taken care of, by
-                                                 // subtracting the
-                                                 // normal component of
-                                                 // the gradient from
-                                                 // the exact function.
-                fe_values.get_function_grads (fe_function, function_grads);
-                if(update_flags & update_normal_vectors)
-                  for (unsigned int k=0; k<n_components; ++k)
-                    for (unsigned int q=0; q<n_q_points; ++q)
-                      psi_grads[q][k] -= (function_grads[q][k] +
-                                          (psi_grads[q][k]* // (f.n) n
-                                           fe_values.normal_vector(q))*
-                                          fe_values.normal_vector(q));
-                else
-                  for (unsigned int k=0; k<n_components; ++k)
-                    for (unsigned int q=0; q<n_q_points; ++q)
-                      psi_grads[q][k] -= function_grads[q][k];
-              }
-
-            switch (norm)
-              {
-                case mean:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                                                       // Compute values in
-                                                       // quadrature points
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          psi_scalar[q] += psi_values[q](k)
-                                           * weight_vectors[q](k);
-
-                                                       // Integrate
-                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
-                                                 fe_values.get_JxW_values().begin(),
-                                                 0.0);
-                      break;
-                case Lp_norm:
-                case L1_norm:
-                case W1p_norm:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                                                       // Compute values in
-                                                       // quadrature points
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          psi_scalar[q] += std::pow(psi_values[q](k)*psi_values[q](k),
-                                                    exponent/2.)
-                                           * weight_vectors[q](k);
-
-                                                       // Integrate
-                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
-                                                 fe_values.get_JxW_values().begin(),
-                                                 0.0);
-                                                       // Compute the root only,
-                                                       // if no derivative
-                                                       // values are added later
-                      if (!(update_flags & update_gradients))
-                        diff = std::pow(diff, 1./exponent);
-                      break;
-                case L2_norm:
-                case H1_norm:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                                                       // Compute values in
-                                                       // quadrature points
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          psi_scalar[q] += psi_values[q](k)*psi_values[q](k)
-                                           * weight_vectors[q](k);
-
-                                                       // Integrate
-                      diff = std::inner_product (psi_scalar.begin(), psi_scalar.end(),
-                                                 fe_values.get_JxW_values().begin(),
-                                                 0.0);
-                                                       // Compute the root only,
-                                                       // if no derivative
-                                                       // values are added later
-                      if (norm == L2_norm)
-                        diff=std::sqrt(diff);
-                      break;
-                case Linfty_norm:
-                case W1infty_norm:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          {
-                            double newval = std::fabs(psi_values[q](k))
-                                            * weight_vectors[q](k);
-                            if (psi_scalar[q]<newval)
-                              psi_scalar[q] = newval;
-                          }
-                                                       // Maximum on one cell
-                      diff = *std::max_element (psi_scalar.begin(), psi_scalar.end());
-                      break;
-                case H1_seminorm:
-                case W1p_seminorm:
-                case W1infty_seminorm:
-                      break;
-                default:
-                      Assert (false, ExcNotImplemented());
-                      break;
-              }
-
-            switch (norm)
-              {
-                case W1p_seminorm:
-                case W1p_norm:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          psi_scalar[q] += std::pow(psi_grads[q][k] * psi_grads[q][k],
-                                                    exponent/2.)
-                                           * weight_vectors[q](k);
-
-                      diff += std::inner_product (psi_scalar.begin(), psi_scalar.end(),
-                                                  fe_values.get_JxW_values().begin(),
-                                                  0.0);
-                      diff = std::pow(diff, 1./exponent);
-                      break;
-                case H1_seminorm:
-                case H1_norm:
-                                                       // take square of integrand
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          psi_scalar[q] += (psi_grads[q][k] * psi_grads[q][k])
-                                           * weight_vectors[q](k);
-
-                                                       // add seminorm to L_2 norm or
-                                                       // to zero
-                      diff += std::inner_product (psi_scalar.begin(), psi_scalar.end(),
-                                                  fe_values.get_JxW_values().begin(),
-                                                  0.0);
-                      diff = std::sqrt(diff);
-                      break;
-
-                case W1infty_seminorm:
-                case W1infty_norm:
-                      std::fill_n (psi_scalar.begin(), n_q_points, 0.0);
-                      for (unsigned int k=0; k<n_components; ++k)
-                        for (unsigned int q=0; q<n_q_points; ++q)
-                          {
-                            double t = 0.;
-                            for (unsigned int d=0;d<dim;++d)
-                              t = std::max(t,std::fabs(psi_grads[q][k][d])
-                                           * weight_vectors[q](k));
-
-                            psi_scalar[q] = std::max(psi_scalar[q],t);
-                          }
-
-                      // compute seminorm
-                      {
-                        double t = 0;
-                        for (unsigned int i=0;i<psi_scalar.size();++i)
-                          t = std::max (t, psi_scalar[i]);
-
-                        // then add seminorm to norm if that had previously been
-                        // computed
-                        diff += t;
-                      }
-                      break;
-                default:
-                      break;
-              }
-                                             // append result of this cell
-                                             // to the end of the vector
-            Assert (numbers::is_finite(diff), ExcNumberNotFinite());
-            difference(index) = diff;
-          }
-        else
-                                           // the cell is a ghost cell
-                                           // or is artificial. write
-                                           // a zero into the
-                                           // corresponding value of
-                                           // the returned vector
-          difference(index) = 0;
-    }
-
-  } // namespace internal
-
-
-
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void
-  integrate_difference (const Mapping<dim, spacedim>    &mapping,
-                        const DoFHandler<dim,spacedim> &dof,
-                        const InVector        &fe_function,
-                        const Function<spacedim>   &exact_solution,
-                        OutVector             &difference,
-                        const Quadrature<dim> &q,
-                        const NormType        &norm,
-                        const Function<spacedim>   *weight,
-                        const double           exponent)
-  {
-    internal
-      ::do_integrate_difference (hp::MappingCollection<dim,spacedim>(mapping),
-                                 dof, fe_function, exact_solution,
-                                 difference, hp::QCollection<dim>(q),
-                                 norm, weight, exponent);
-  }
-
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void
-  integrate_difference (const DoFHandler<dim,spacedim>    &dof,
-                        const InVector           &fe_function,
-                        const Function<spacedim>      &exact_solution,
-                        OutVector                &difference,
-                        const Quadrature<dim>    &q,
-                        const NormType           &norm,
-                        const Function<spacedim>      *weight,
-                        const double              exponent)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    internal
-      ::do_integrate_difference(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
-                                dof, fe_function, exact_solution,
-                                difference, hp::QCollection<dim>(q),
-                                norm, weight, exponent);
-  }
-
-
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void
-  integrate_difference (const dealii::hp::MappingCollection<dim,spacedim>    &mapping,
-                        const dealii::hp::DoFHandler<dim,spacedim> &dof,
-                        const InVector        &fe_function,
-                        const Function<spacedim>   &exact_solution,
-                        OutVector             &difference,
-                        const dealii::hp::QCollection<dim> &q,
-                        const NormType        &norm,
-                        const Function<spacedim>   *weight,
-                        const double           exponent)
-  {
-    internal
-      ::do_integrate_difference (hp::MappingCollection<dim,spacedim>(mapping),
-                                 dof, fe_function, exact_solution,
-                                 difference, q,
-                                 norm, weight, exponent);
-  }
-
-
-  template <int dim, class InVector, class OutVector, int spacedim>
-  void
-  integrate_difference (const dealii::hp::DoFHandler<dim,spacedim>    &dof,
-                        const InVector           &fe_function,
-                        const Function<spacedim>      &exact_solution,
-                        OutVector                &difference,
-                        const dealii::hp::QCollection<dim>    &q,
-                        const NormType           &norm,
-                        const Function<spacedim>      *weight,
-                        const double              exponent)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    internal
-      ::do_integrate_difference(hp::StaticMappingQ1<dim>::mapping_collection,
-                                dof, fe_function, exact_solution,
-                                difference, q,
-                                norm, weight, exponent);
-  }
-
-
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_difference (const DoFHandler<dim,spacedim> &dof,
-                    const InVector        &fe_function,
-                    const Function<spacedim>   &exact_function,
-                    Vector<double>        &difference,
-                    const Point<spacedim>      &point)
-  {
-    point_difference(StaticMappingQ1<dim>::mapping,
-                     dof,
-                     fe_function,
-                     exact_function,
-                     difference,
-                     point);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_difference (const Mapping<dim, spacedim>    &mapping,
-                    const DoFHandler<dim,spacedim> &dof,
-                    const InVector        &fe_function,
-                    const Function<spacedim>   &exact_function,
-                    Vector<double>        &difference,
-                    const Point<spacedim>      &point)
-  {
-    const FiniteElement<dim>& fe = dof.get_fe();
-
-    Assert(difference.size() == fe.n_components(),
-           ExcDimensionMismatch(difference.size(), fe.n_components()));
-
-                                     // first find the cell in which this point
-                                     // is, initialize a quadrature rule with
-                                     // it, and then a FEValues object
-    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point = GridTools::find_active_cell_around_point (mapping, dof, point);
-
-    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
-           ExcInternalError());
-
-    const Quadrature<dim>
-      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
-    fe_values.reinit(cell_point.first);
-
-                                     // then use this to get at the values of
-                                     // the given fe_function at this point
-    std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
-    fe_values.get_function_values(fe_function, u_value);
-
-    if (fe.n_components() == 1)
-      difference(0) = exact_function.value(point);
-    else
-      exact_function.vector_value(point, difference);
-
-    for (unsigned int i=0; i<difference.size(); ++i)
-      difference(i) -= u_value[0](i);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point,
-               Vector<double>        &value)
-  {
-
-    point_value (StaticMappingQ1<dim,spacedim>::mapping,
-                 dof,
-                 fe_function,
-                 point,
-                 value);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point,
-         Vector<double>        &value)
-  {
-      point_value(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
-            dof,
-            fe_function,
-            point,
-            value);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point)
-  {
-    return point_value (StaticMappingQ1<dim,spacedim>::mapping,
-                        dof,
-                        fe_function,
-                        point);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const hp::DoFHandler<dim,spacedim> &dof,
-         const InVector        &fe_function,
-         const Point<spacedim>      &point)
-  {
-      return point_value(hp::StaticMappingQ1<dim,spacedim>::mapping_collection,
-          dof,
-          fe_function,
-          point);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  void
-  point_value (const Mapping<dim, spacedim>    &mapping,
-               const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point,
-               Vector<double>        &value)
-  {
-    const FiniteElement<dim>& fe = dof.get_fe();
-
-    Assert(value.size() == fe.n_components(),
-           ExcDimensionMismatch(value.size(), fe.n_components()));
-
-                                     // first find the cell in which this point
-                                     // is, initialize a quadrature rule with
-                                     // it, and then a FEValues object
-    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point
-      = GridTools::find_active_cell_around_point (mapping, dof, point);
-
-    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
-           ExcInternalError());
-
-    const Quadrature<dim>
-      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-
-    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
-    fe_values.reinit(cell_point.first);
-
-                                     // then use this to get at the values of
-                                     // the given fe_function at this point
-    std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
-    fe_values.get_function_values(fe_function, u_value);
-
-    value = u_value[0];
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-   void
-   point_value (const hp::MappingCollection<dim, spacedim>    &mapping,
-       const hp::DoFHandler<dim,spacedim> &dof,
-       const InVector        &fe_function,
-       const Point<spacedim>      &point,
-       Vector<double>        &value)
-   {
-     const hp::FECollection<dim, spacedim>& fe = dof.get_fe();
-
-     Assert(value.size() == fe.n_components(),
-     ExcDimensionMismatch(value.size(), fe.n_components()));
-
-                                      // first find the cell in which this point
-                                      // is, initialize a quadrature rule with
-                                      // it, and then a FEValues object
-     const std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-     cell_point =  GridTools::find_active_cell_around_point (mapping, dof, point);
-
-     Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
-         ExcInternalError());
-
-     const Quadrature<dim>
-     quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-     hp::FEValues<dim, spacedim> hp_fe_values(mapping, fe, hp::QCollection<dim>(quadrature), update_values);
-     hp_fe_values.reinit(cell_point.first);
-     const FEValues<dim, spacedim>& fe_values = hp_fe_values.get_present_fe_values();
-
-                                      // then use this to get at the values of
-                                      // the given fe_function at this point
-     std::vector<Vector<double> > u_value(1, Vector<double> (fe.n_components()));
-     fe_values.get_function_values(fe_function, u_value);
-
-     value = u_value[0];
-   }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const Mapping<dim, spacedim>    &mapping,
-               const DoFHandler<dim,spacedim> &dof,
-               const InVector        &fe_function,
-               const Point<spacedim>      &point)
-  {
-    const FiniteElement<dim>& fe = dof.get_fe();
-
-    Assert(fe.n_components() == 1,
-           ExcMessage ("Finite element is not scalar as is necessary for this function"));
-
-                                     // first find the cell in which this point
-                                     // is, initialize a quadrature rule with
-                                     // it, and then a FEValues object
-    const std::pair<typename DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point = GridTools::find_active_cell_around_point (mapping, dof, point);
-
-    Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
-           ExcInternalError());
-
-    const Quadrature<dim>
-      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-    FEValues<dim> fe_values(mapping, fe, quadrature, update_values);
-    fe_values.reinit(cell_point.first);
-
-                                     // then use this to get at the values of
-                                     // the given fe_function at this point
-    std::vector<double> u_value(1);
-    fe_values.get_function_values(fe_function, u_value);
-
-    return u_value[0];
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  point_value (const hp::MappingCollection<dim, spacedim>    &mapping,
-      const hp::DoFHandler<dim,spacedim> &dof,
-      const InVector        &fe_function,
-      const Point<spacedim>      &point)
-  {
-      const hp::FECollection<dim, spacedim>& fe = dof.get_fe();
-
-      Assert(fe.n_components() == 1,
-          ExcMessage ("Finite element is not scalar as is necessary for this function"));
-
-      // first find the cell in which this point
-      // is, initialize a quadrature rule with
-      // it, and then a FEValues object
-      const std::pair<typename hp::DoFHandler<dim,spacedim>::active_cell_iterator, Point<spacedim> >
-      cell_point =  GridTools::find_active_cell_around_point (mapping, dof, point);
-
-      Assert(GeometryInfo<dim>::distance_to_unit_cell(cell_point.second) < 1e-10,
-          ExcInternalError());
-
-      const Quadrature<dim>
-      quadrature (GeometryInfo<dim>::project_to_unit_cell(cell_point.second));
-      hp::FEValues<dim, spacedim> hp_fe_values(mapping, fe, hp::QCollection<dim>(quadrature), update_values);
-      hp_fe_values.reinit(cell_point.first);
-      const FEValues<dim, spacedim>& fe_values = hp_fe_values.get_present_fe_values();
-
-      // then use this to get at the values of
-      // the given fe_function at this point
-      std::vector<double> u_value(1);
-      fe_values.get_function_values(fe_function, u_value);
-
-      return u_value[0];
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  compute_mean_value (const Mapping<dim, spacedim>    &mapping,
-                      const DoFHandler<dim,spacedim> &dof,
-                      const Quadrature<dim> &quadrature,
-                      const InVector        &v,
-                      const unsigned int     component)
-  {
-    Assert (v.size() == dof.n_dofs(),
-            ExcDimensionMismatch (v.size(), dof.n_dofs()));
-    Assert (component < dof.get_fe().n_components(),
-            ExcIndexRange(component, 0, dof.get_fe().n_components()));
-
-    FEValues<dim,spacedim> fe(mapping, dof.get_fe(), quadrature,
-                              UpdateFlags(update_JxW_values
-                                          | update_values));
-
-    typename DoFHandler<dim,spacedim>::active_cell_iterator cell;
-    std::vector<Vector<double> > values(quadrature.size(),
-                                        Vector<double> (dof.get_fe().n_components()));
-
-    double mean = 0.;
-    double area = 0.;
-                                     // Compute mean value
-    for (cell = dof.begin_active(); cell != dof.end(); ++cell)
-      if (cell->is_locally_owned())
-        {
-          fe.reinit (cell);
-          fe.get_function_values(v, values);
-          for (unsigned int k=0; k< quadrature.size(); ++k)
-            {
-              mean += fe.JxW(k) * values[k](component);
-              area += fe.JxW(k);
-            }
-        }
-
-#if DEAL_II_USE_P4EST
-                                     // if this was a distributed
-                                     // DoFHandler, we need to do the
-                                     // reduction over the entire domain
-    if (const parallel::distributed::Triangulation<dim,spacedim> *
-        p_d_triangulation
-        = dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim> *>(&dof.get_tria()))
-      {
-        double my_values[2] = { mean, area };
-        double global_values[2];
-
-        MPI_Allreduce (&my_values, &global_values, 2, MPI_DOUBLE,
-                       MPI_SUM,
-                       p_d_triangulation->get_communicator());
-
-        mean = global_values[0];
-        area = global_values[1];
-      }
-#endif
-
-    return (mean/area);
-  }
-
-
-  template <int dim, class InVector, int spacedim>
-  double
-  compute_mean_value (const DoFHandler<dim,spacedim> &dof,
-                      const Quadrature<dim> &quadrature,
-                      const InVector        &v,
-                      const unsigned int     component)
-  {
-    Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
-    return compute_mean_value(StaticMappingQ1<dim,spacedim>::mapping, dof, quadrature, v, component);
-  }
-}
-
-DEAL_II_NAMESPACE_CLOSE
+#include <deal.II/numerics/vector_tools.templates.h>
 
 #endif
index b2fc5d5855a5fc41ffca8ce5c67133dcfae3057e..ee061d895fe6c3379f40621460258c8699eb475e 100644 (file)
@@ -37,25 +37,8 @@ ifeq ($(USE_CONTRIB_PETSC),yes)
   # There is one gotcha: PETSc has a habit of making incompatible changes by
   # simply changing the names of libraries between different versions. That
   # really is too bad, so we have to conditionalize things.
-ifeq ($(DEAL_II_PETSC_VERSION_MINOR),1)
-  xlib-ksp=libpetscsles
-else
-  xlib-ksp=libpetscksp
-endif
-  # This is how it is done. Starting with PETSc versions 2.3.*:
-ifeq ($(DEAL_II_PETSC_VERSION_MAJOR),2)
-  xlib.g = $(lib-contrib-petsc-path.g)/libpetscksp$(lib-suffix) \
-           $(lib-contrib-petsc-path.g)/libpetscdm$(lib-suffix)  \
-           $(lib-contrib-petsc-path.g)/libpetscmat$(lib-suffix) \
-           $(lib-contrib-petsc-path.g)/libpetscvec$(lib-suffix) \
-           $(lib-contrib-petsc-path.g)/libpetsc$(lib-suffix)
-  xlib.o = $(lib-contrib-petsc-path.o)/libpetscksp$(lib-suffix) \
-           $(lib-contrib-petsc-path.o)/libpetscdm$(lib-suffix)  \
-           $(lib-contrib-petsc-path.o)/libpetscmat$(lib-suffix) \
-           $(lib-contrib-petsc-path.o)/libpetscvec$(lib-suffix) \
-           $(lib-contrib-petsc-path.o)/libpetsc$(lib-suffix)
-else
-  # which is the same for PETSc 3.0.0:
+  #
+  # This is how it is done. Starting with PETSc version 3.0.0:
   ifeq ($(DEAL_II_PETSC_VERSION_MAJOR)$(DEAL_II_PETSC_VERSION_MINOR),30)
     xlib.g = $(lib-contrib-petsc-path.g)/libpetscksp$(lib-suffix) \
              $(lib-contrib-petsc-path.g)/libpetscdm$(lib-suffix)  \
@@ -67,40 +50,35 @@ else
              $(lib-contrib-petsc-path.o)/libpetscmat$(lib-suffix) \
              $(lib-contrib-petsc-path.o)/libpetscvec$(lib-suffix) \
              $(lib-contrib-petsc-path.o)/libpetsc$(lib-suffix)
-  else
-    # but after that (petsc-3.1++), we can use the simpler PETSc
-    # default "--with-single-library=1" like this:
-    xlib.g = $(lib-contrib-petsc-path.o)/libpetsc$(lib-suffix)
-    xlib.o = $(lib-contrib-petsc-path.o)/libpetsc$(lib-suffix)
-  endif
-endif
 
-ifeq ($(enable-shared),yes)
+    # deal with shared libraries:
+    ifeq ($(enable-shared),yes)
 
-  external-links-petsc: libpetscall.g$(shared-lib-suffix) libpetscall$(shared-lib-suffix)
+      external-links-petsc: libpetscall.g$(shared-lib-suffix) libpetscall$(shared-lib-suffix)
 
-  libpetscall.g$(shared-lib-suffix): $(xlib.g)
+      libpetscall.g$(shared-lib-suffix): $(xlib.g)
        @echo "======================debug============= Linking library:   libpetscall.g$(shared-lib-suffix)"
        @$(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,petscall.g) $(call DEAL_II_ADD_SONAME,petscall.g) $(xlib.g)
        @ln -f -s $(call DEAL_II_SHLIB_NAME,petscall.g) $@
 
-  libpetscall$(shared-lib-suffix): $(xlib.o)
+      libpetscall$(shared-lib-suffix): $(xlib.o)
        @echo "======================optimized========= Linking library:   libpetscall$(shared-lib-suffix)"
        @$(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,petscall) $(call DEAL_II_ADD_SONAME,petscall)  $(xlib.o)
        @ln -f -s $(call DEAL_II_SHLIB_NAME,petscall) $@
 
-else
+    # and then static libraries:
+    else
 
-  # make static libraries. ensure that they are built one after the other because
-  # both create temporary files with the same name
-  external-links-petsc:
+      # make static libraries. ensure that they are built one after the other because
+      # both create temporary files with the same name
+      external-links-petsc:
        @$(MAKE) libpetscall.g$(static-lib-suffix)
        @$(MAKE) libpetscall$(static-lib-suffix)
 
-  # As I don't know how to merge archives, here's a workaround: Extract each of
-  # the archives and append the object files to the libpetsc archive. Do the
-  # same for debug and optimized mode.
-  libpetscall.g$(static-lib-suffix): $(xlib.g)
+      # As I don't know how to merge archives, here's a workaround: Extract each of
+      # the archives and append the object files to the libpetsc archive. Do the
+      # same for debug and optimized mode.
+      libpetscall.g$(static-lib-suffix): $(xlib.g)
        @echo "======================debug============= Linking library:   libpetscall.g$(static-lib-suffix)"
        @rm -f $@
        @rm -rf .ar_tmp
@@ -114,7 +92,7 @@ else
        @rm -r .ar_tmp
        @$(RANLIB) libpetscall.g$(static-lib-suffix)
 
-  libpetscall$(static-lib-suffix): $(xlib.o)
+      libpetscall$(static-lib-suffix): $(xlib.o)
        @echo "======================optimized========= Linking library:   libpetscall$(static-lib-suffix)"
        @rm -f $@
        @rm -rf .ar_tmp
@@ -127,15 +105,18 @@ else
        @cd ..
        @rm -r .ar_tmp
        @$(RANLIB) libpetscall$(static-lib-suffix)
-endif
+    endif
 
+  # and this is how it is done with PETSc version >= 3.1.0:
+  else
+    external-links-petsc: # do nothing.
+  endif
 
 else
   external-links-petsc:
 endif
 
 
-
 ######################### CLEAN TARGETS ###################
 # clean everything
 clean: clean-objects
@@ -144,7 +125,6 @@ clean: clean-objects
 clean-objects:  clean-debug clean-optimized \
                clean-contrib
 
-
 # clean targets for the individual subdirectories. remove
 # object files and template instantiation files.
 # extract dir name from target
index 9e44a3c50def70bee47431d90b273239db0bcba3..f86853b6cd091396e68ae9688d254db1af199bb7 100644 (file)
@@ -204,7 +204,7 @@ gradient_list (const std::vector<Point<dim> > &points,
       case UpwindEuler:
       {
         Point<dim> q1;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q1=points[p]-ht[i];
@@ -216,7 +216,7 @@ gradient_list (const std::vector<Point<dim> > &points,
       case Euler:
       {
         Point<dim> q1, q2;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q1=points[p]+ht[i];
@@ -229,7 +229,7 @@ gradient_list (const std::vector<Point<dim> > &points,
       case FourthOrder:
       {
         Point<dim> q1, q2, q3, q4;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q2=points[p]+ht[i];
@@ -259,7 +259,7 @@ vector_gradient_list (const std::vector<Point<dim> >            &points,
 {
   Assert (gradients.size() == points.size(),
           ExcDimensionMismatch(gradients.size(), points.size()));
-  for (unsigned p=0; p<points.size(); ++p)
+  for (unsigned int p=0; p<points.size(); ++p)
     Assert (gradients[p].size() == this->n_components,
             ExcDimensionMismatch(gradients.size(), this->n_components));
 
@@ -268,7 +268,7 @@ vector_gradient_list (const std::vector<Point<dim> >            &points,
       case UpwindEuler:
       {
         Point<dim> q1;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q1=points[p]-ht[i];
@@ -281,7 +281,7 @@ vector_gradient_list (const std::vector<Point<dim> >            &points,
       case Euler:
       {
         Point<dim> q1, q2;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q1=points[p]+ht[i];
@@ -296,7 +296,7 @@ vector_gradient_list (const std::vector<Point<dim> >            &points,
       case FourthOrder:
       {
         Point<dim> q1, q2, q3, q4;
-        for (unsigned p=0; p<points.size(); ++p)
+        for (unsigned int p=0; p<points.size(); ++p)
           for (unsigned int i=0; i<dim; ++i)
             {
               q2=points[p]+ht[i];
index 5a70309369905271c65ec984d6d5714eefde8db6..87c06e2aa571c6b21633b237abccc610762b984d 100644 (file)
@@ -52,6 +52,9 @@
 #  include <zlib.h>
 #endif
 
+#ifdef DEAL_II_HAVE_HDF5
+#include <hdf5.h>
+#endif
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -967,6 +970,75 @@ namespace
   };
 
 
+    class HDF5MemStream
+    {
+    public:
+        /**
+         * Constructor, storing
+         * persistent values for
+         * later use.
+         */
+        HDF5MemStream (const unsigned int local_points_cell_count[2], const unsigned int global_points_cell_offsets[2], const unsigned int dim);
+
+        /**
+         * Output operator for points.
+         */
+        template <int dim>
+        void write_point (const unsigned int index,
+                          const Point<dim>&);
+
+        /**
+         * Do whatever is necessary to
+         * terminate the list of points.
+         * In this case, nothing.
+         */
+        void flush_points () {};
+
+        /**
+         * Write dim-dimensional cell
+         * with first vertex at
+         * number start and further
+         * vertices offset by the
+         * specified values. Values
+         * not needed are ignored.
+         *
+         * The order of vertices for
+         * these cells in different
+         * dimensions is
+         * <ol>
+         * <li> [0,1]
+         * <li> []
+         * <li> []
+         * </ol>
+         */
+        template <int dim>
+        void write_cell(const unsigned int index,
+                        const unsigned int start,
+                        const unsigned int x_offset,
+                        const unsigned int y_offset,
+                        const unsigned int z_offset);
+
+        /**
+         * Do whatever is necessary to
+         * terminate the list of cells.
+         * In this case, nothing.
+         */
+        void flush_cells () {};
+
+        const double *node_data(void) const { return &vertices[0]; };
+        const unsigned int *cell_data(void) const { return &cells[0]; };
+
+    private:
+        /**
+         * A list of vertices and
+         * cells, used to write HDF5 data.
+         */
+        std::vector<double> vertices;
+        std::vector<unsigned int> cells;
+        unsigned int cell_offset;
+    };
+
+
 //----------------------------------------------------------------------//
 
   DXStream::DXStream(std::ostream& out,
@@ -1463,6 +1535,47 @@ namespace
     return stream;
   }
 
+    HDF5MemStream::HDF5MemStream(const unsigned int local_points_cell_count[2], const unsigned int global_points_cell_offsets[2], const unsigned int dim) {
+        unsigned int entries_per_cell = (2 << (dim-1));
+
+        vertices.resize(local_points_cell_count[0]*dim);
+        cells.resize(local_points_cell_count[1]*entries_per_cell);
+        cell_offset = global_points_cell_offsets[1]*entries_per_cell;
+    }
+
+    template<int dim>
+    void
+    HDF5MemStream::write_point (const unsigned int index,
+                            const Point<dim>& p)
+    {
+        for (int i=0;i<dim;++i) vertices[index*dim+i] = p(i);
+    }
+
+    template<int dim>
+    void
+    HDF5MemStream::write_cell(
+                          unsigned int index,
+                          unsigned int start,
+                          unsigned int d1,
+                          unsigned int d2,
+                          unsigned int d3)
+    {
+        unsigned int base_entry = index * GeometryInfo<dim>::vertices_per_cell;
+        cells[base_entry+0] = cell_offset+start;
+        cells[base_entry+1] = cell_offset+start+d1;
+        if (dim>=2)
+        {
+            cells[base_entry+2] = cell_offset+start+d2+d1;
+            cells[base_entry+3] = cell_offset+start+d2;
+            if (dim>=3)
+            {
+                cells[base_entry+4] = cell_offset+start+d3;
+                cells[base_entry+5] = cell_offset+start+d3+d1;
+                cells[base_entry+6] = cell_offset+start+d3+d2+d1;
+                cells[base_entry+7] = cell_offset+start+d3+d2;
+            }
+        }
+    }
 
   template <typename T>
   std::ostream&
@@ -2155,6 +2268,9 @@ parse_output_format (const std::string &format_name)
   if (format_name == "deal.II intermediate")
     return deal_II_intermediate;
 
+    if (format_name == "hdf5")
+        return hdf5;
+
   AssertThrow (false,
                ExcMessage ("The given file format name is not recognized: <"
                            + format_name + ">"));
@@ -2168,7 +2284,7 @@ parse_output_format (const std::string &format_name)
 std::string
 DataOutBase::get_output_format_names ()
 {
-  return "none|dx|ucd|gnuplot|povray|eps|gmv|tecplot|tecplot_binary|vtk|vtu|deal.II intermediate";
+  return "none|dx|ucd|gnuplot|povray|eps|gmv|tecplot|tecplot_binary|vtk|vtu|hdf5|deal.II intermediate";
 }
 
 
@@ -2203,6 +2319,8 @@ default_suffix (const OutputFormat output_format)
             return ".vtu";
       case deal_II_intermediate:
             return ".d2";
+      case hdf5:
+            return ".h5";
       default:
             Assert (false, ExcNotImplemented());
             return "";
@@ -5557,6 +5675,501 @@ write_deal_II_intermediate (std::ostream &out) const
 }
 
 
+template <int dim, int spacedim>
+XDMFEntry DataOutInterface<dim,spacedim>::
+create_xdmf_entry (const char *h5_filename, const double cur_time, MPI_Comm comm) const
+{
+    return DataOutBase::create_xdmf_entry(get_patches(), get_dataset_names(), get_vector_data_ranges(),
+                                          h5_filename, cur_time, comm);
+}
+
+template <int dim, int spacedim>
+XDMFEntry DataOutBase::create_xdmf_entry (const std::vector<Patch<dim,spacedim> > &patches,
+                                          const std::vector<std::string>          &data_names,
+                                          const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
+                                          const char* h5_filename,
+                                          const double cur_time,
+                                          MPI_Comm comm)
+{
+    unsigned int    local_node_cell_count[2], global_node_cell_count[2];
+    const unsigned int n_data_sets = data_names.size();
+    int             myrank;
+
+#ifndef DEAL_II_HAVE_HDF5
+                                    // throw an exception, but first make
+                                    // sure the compiler does not warn about
+                                    // the now unused function arguments
+    (void)patches;
+    (void)data_names;
+    (void)vector_data_ranges;
+    (void)h5_filename;
+    (void)cur_time;
+    (void)comm;
+    AssertThrow(false, ExcMessage ("XDMF support requires HDF5 to be turned on."));
+#endif
+    AssertThrow(dim == 2 || dim == 3, ExcMessage ("XDMF only supports 2 or 3 dimensions."));
+
+    compute_sizes<dim,spacedim>(patches, local_node_cell_count[0], local_node_cell_count[1]);
+
+    // And compute the global total
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+    MPI_Comm_rank(comm, &myrank);
+    MPI_Allreduce(local_node_cell_count, global_node_cell_count, 2, MPI_UNSIGNED, MPI_SUM, comm);
+#else
+    myrank = 0;
+    global_node_cell_count[0] = local_node_cell_count[0];
+    global_node_cell_count[1] = local_node_cell_count[1];
+#endif
+
+    // Output the XDMF file only on the root process
+    if (myrank == 0) {
+        XDMFEntry       entry(h5_filename, cur_time, global_node_cell_count[0], global_node_cell_count[1], dim);
+
+        // The vector names generated here must match those generated in the HDF5 file
+        unsigned int    i, n_th_vector, data_set, pt_data_vector_dim;
+        std::string     vector_name;
+        for (n_th_vector=0,data_set=0;data_set<n_data_sets;) {
+            // Advance n_th_vector to at least the current data set we are on
+            while (n_th_vector < vector_data_ranges.size() && std_cxx1x::get<0>(vector_data_ranges[n_th_vector]) < data_set) n_th_vector++;
+
+            // Determine whether the data is multiple dimensions or one
+            if (std_cxx1x::get<0>(vector_data_ranges[n_th_vector]) == data_set) {
+                // Multiple dimensions
+                pt_data_vector_dim = std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) - std_cxx1x::get<0>(vector_data_ranges[n_th_vector])+1;
+
+                // Ensure the dimensionality of the data is correct
+                AssertThrow (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) >= std_cxx1x::get<0>(vector_data_ranges[n_th_vector]),
+                             ExcLowerRange (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]), std_cxx1x::get<0>(vector_data_ranges[n_th_vector])));
+                AssertThrow (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) < n_data_sets,
+                             ExcIndexRange (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]), 0, n_data_sets));
+
+                // Determine the vector name
+                // Concatenate all the
+                // component names with double
+                // underscores unless a vector
+                // name has been specified
+                if (std_cxx1x::get<2>(vector_data_ranges[n_th_vector]) != "") {
+                    vector_name = std_cxx1x::get<2>(vector_data_ranges[n_th_vector]);
+                } else {
+                    vector_name = "";
+                    for (i=std_cxx1x::get<0>(vector_data_ranges[n_th_vector]);i<std_cxx1x::get<1>(vector_data_ranges[n_th_vector]);++i)
+                        vector_name += data_names[i] + "__";
+                    vector_name += data_names[std_cxx1x::get<1>(vector_data_ranges[n_th_vector])];
+                }
+            } else {
+                // One dimension
+                pt_data_vector_dim = 1;
+                vector_name = data_names[data_set];
+            }
+
+            entry.add_attribute(vector_name, pt_data_vector_dim);
+
+            // Advance the current data set
+            data_set += pt_data_vector_dim;
+        }
+
+        return entry;
+    } else {
+        return XDMFEntry();
+    }
+}
+
+template <int dim, int spacedim>
+void DataOutInterface<dim,spacedim>::
+write_xdmf_file (const std::vector<XDMFEntry> &entries,
+                const char *filename,
+                MPI_Comm comm) const
+{
+    DataOutBase::write_xdmf_file(get_patches(), entries, filename, comm);
+}
+
+
+
+template <int dim, int spacedim>
+void DataOutBase::write_xdmf_file (const std::vector<Patch<dim,spacedim> > &,
+                                   const std::vector<XDMFEntry> &entries,
+                                   const char *filename,
+                                   MPI_Comm comm)
+{
+    int             myrank;
+
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+    MPI_Comm_rank(comm, &myrank);
+#else
+    (void)comm;
+    myrank = 0;
+#endif
+
+    // Only rank 0 process writes the XDMF file
+    if (myrank == 0)
+      {
+        std::ofstream                               xdmf_file(filename);
+        std::vector<XDMFEntry>::const_iterator      it;
+
+        xdmf_file << "<?xml version=\"1.0\" ?>\n";
+        xdmf_file << "<!DOCTYPE Xdmf SYSTEM \"Xdmf.dtd\" []>\n";
+        xdmf_file << "<Xdmf Version=\"2.0\">\n";
+        xdmf_file << "  <Domain>\n";
+        xdmf_file << "    <Grid Name=\"CellTime\" GridType=\"Collection\" CollectionType=\"Temporal\">\n";
+
+        // Write out all the entries indented
+        for (it=entries.begin();it!=entries.end();++it)
+          xdmf_file << it->get_xdmf_content(3);
+
+        xdmf_file << "    </Grid>\n";
+        xdmf_file << "  </Domain>\n";
+        xdmf_file << "</Xdmf>\n";
+
+        xdmf_file.close();
+    }
+}
+
+
+// Get the XDMF content associated with this entry
+// If the entry is not valid, this returns false
+std::string XDMFEntry::get_xdmf_content(const unsigned int indent_level) const
+{
+    std::stringstream   ss;
+    std::map<std::string, unsigned int>::const_iterator     it;
+
+    if (!valid) return "";
+
+    ss << indent(indent_level+0) << "<Grid Name=\"mesh\" GridType=\"Uniform\">\n";
+    ss << indent(indent_level+1) << "<Time Value=\"" << entry_time << "\"/>\n";
+    ss << indent(indent_level+1) << "<Geometry GeometryType=\"" << (dimension == 2 ? "XY" : "XYZ" ) << "\">\n";
+    ss << indent(indent_level+2) << "<DataItem Dimensions=\"" << num_nodes << " " << dimension << "\" NumberType=\"Float\" Precision=\"8\" Format=\"HDF\">\n";
+    ss << indent(indent_level+3) << h5_filename << ":/nodes\n";
+    ss << indent(indent_level+2) << "</DataItem>\n";
+    ss << indent(indent_level+1) << "</Geometry>\n";
+    // If we have cells defined, use a quadrilateral (2D) or hexahedron (3D) topology
+    if (num_cells > 0) {
+        ss << indent(indent_level+1) << "<Topology TopologyType=\"" << (dimension == 2 ? "Quadrilateral" : "Hexahedron") << "\" NumberOfElements=\"" << num_cells << "\">\n";
+        ss << indent(indent_level+2) << "<DataItem Dimensions=\"" << num_cells << " " << (2 << (dimension-1)) << "\" NumberType=\"UInt\" Format=\"HDF\">\n";
+        ss << indent(indent_level+3) << h5_filename << ":/cells\n";
+        ss << indent(indent_level+2) << "</DataItem>\n";
+        ss << indent(indent_level+1) << "</Topology>\n";
+    } else {
+        // Otherwise, we assume the points are isolated in space and use a Polyvertex topology
+        ss << indent(indent_level+1) << "<Topology TopologyType=\"Polyvertex\" NumberOfElements=\"" << num_nodes << "\">\n";
+        ss << indent(indent_level+1) << "</Topology>\n";
+    }
+
+    for (it=attribute_dims.begin();it!=attribute_dims.end();++it) {
+        ss << indent(indent_level+1) << "<Attribute Name=\"" << it->first << "\" AttributeType=\"" << (it->second > 1 ? "Vector" : "Scalar") << "\" Center=\"Node\">\n";
+        // Vectors must have 3 elements even for 2D models
+        ss << indent(indent_level+2) << "<DataItem Dimensions=\"" << num_nodes << " " << (it->second > 1 ? 3 : 1) << "\" NumberType=\"Float\" Precision=\"8\" Format=\"HDF\">\n";
+        ss << indent(indent_level+3) << h5_filename << ":/" << it->first << "\n";
+        ss << indent(indent_level+2) << "</DataItem>\n";
+        ss << indent(indent_level+1) << "</Attribute>\n";
+    }
+
+    ss << indent(indent_level+0) << "</Grid>\n";
+
+    return ss.str();
+}
+
+template <int dim, int spacedim>
+void DataOutInterface<dim,spacedim>::
+write_hdf5_parallel (const char* filename, MPI_Comm comm) const
+{
+#ifndef DEAL_II_HAVE_HDF5
+    AssertThrow(false, ExcMessage ("HDF5 support is disabled."));
+#endif
+    DataOutBase::write_hdf5_parallel(get_patches(), get_dataset_names(),
+                                     get_vector_data_ranges(),
+                                     filename, comm);
+}
+
+template <int dim, int spacedim>
+void DataOutBase::write_hdf5_parallel (const std::vector<Patch<dim,spacedim> > &patches,
+                                       const std::vector<std::string>          &data_names,
+                                       const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
+                                       const char* filename,
+                                       MPI_Comm comm)
+{
+#ifndef DEAL_II_HAVE_HDF5
+                                    // throw an exception, but first make
+                                    // sure the compiler does not warn about
+                                    // the now unused function arguments
+    (void)patches;
+    (void)data_names;
+    (void)vector_data_ranges;
+    (void)filename;
+    (void)comm;
+    AssertThrow(false, ExcMessage ("HDF5 support is disabled."));
+#else
+    int             world_size;
+    hid_t           h5_file_id, plist_id;
+    hid_t           node_dataspace, node_dataset, node_file_dataspace, node_memory_dataspace;
+    hid_t           cell_dataspace, cell_dataset, cell_file_dataspace, cell_memory_dataspace;
+    hid_t           pt_data_dataspace, pt_data_dataset, pt_data_file_dataspace, pt_data_memory_dataspace;
+    herr_t          status;
+    unsigned int    local_node_cell_count[2], global_node_cell_count[2], global_node_cell_offsets[2];
+    hsize_t         count[2], offset[2], node_ds_dim[2], cell_ds_dim[2];
+    const unsigned int n_data_sets = data_names.size();
+
+    // If HDF5 is not parallel and we're using multiple processes, abort
+#ifndef H5_HAVE_PARALLEL
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+    MPI_Comm_size(comm, &world_size);
+    AssertThrow (world_size <= 1,
+                 ExcMessage ("Serial HDF5 output on multiple processes is not yet supported."));
+#endif
+#endif
+
+    compute_sizes<dim,spacedim>(patches, local_node_cell_count[0], local_node_cell_count[1]);
+
+    Table<2,double> data_vectors (n_data_sets, local_node_cell_count[0]);
+    void (*fun_ptr) (const std::vector<Patch<dim,spacedim> > &, Table<2,double> &) = &DataOutBase::template write_gmv_reorder_data_vectors<dim,spacedim>;
+    Threads::Task<> reorder_task = Threads::new_task (fun_ptr, patches, data_vectors);
+
+    // Create file access properties
+    plist_id = H5Pcreate(H5P_FILE_ACCESS);
+    AssertThrow(plist_id != -1, ExcIO());
+    // If MPI is enabled *and* HDF5 is parallel, we can do parallel output
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+#ifdef H5_HAVE_PARALLEL
+    // Set the access to use the specified MPI_Comm object
+    status = H5Pset_fapl_mpio(plist_id, comm, MPI_INFO_NULL);
+    AssertThrow(status >= 0, ExcIO());
+#endif
+#endif
+
+    // Overwrite any existing files (change this to an option?) and close the property list
+    h5_file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist_id);
+    AssertThrow(h5_file_id >= 0, ExcIO());
+    status = H5Pclose(plist_id);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Compute the global total number of nodes/cells
+    // And determine the offset of the data for this process
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+    MPI_Allreduce(local_node_cell_count, global_node_cell_count, 2, MPI_UNSIGNED, MPI_SUM, comm);
+    MPI_Scan(local_node_cell_count, global_node_cell_offsets, 2, MPI_UNSIGNED, MPI_SUM, comm);
+    global_node_cell_offsets[0] -= local_node_cell_count[0];
+    global_node_cell_offsets[1] -= local_node_cell_count[1];
+#else
+    global_node_cell_offsets[0] = global_node_cell_offsets[1] = 0;
+#endif
+
+    // Write the nodes/cells to the HDF5 "stream" object. Record the process offset
+    // so that node reference indices are correctly calculated
+    HDF5MemStream   hdf5_data(local_node_cell_count, global_node_cell_offsets, dim);
+    write_nodes(patches, hdf5_data);
+    write_cells(patches, hdf5_data);
+
+    // Create the dataspace for the nodes and cells
+    node_ds_dim[0] = global_node_cell_count[0];
+    node_ds_dim[1] = dim;
+    node_dataspace = H5Screate_simple(2, node_ds_dim, NULL);
+    AssertThrow(node_dataspace >= 0, ExcIO());
+
+    cell_ds_dim[0] = global_node_cell_count[1];
+    cell_ds_dim[1] = GeometryInfo<dim>::vertices_per_cell;
+    cell_dataspace = H5Screate_simple(2, cell_ds_dim, NULL);
+    AssertThrow(cell_dataspace >= 0, ExcIO());
+
+    // Create the dataset for the nodes and cells
+#if H5Gcreate_vers == 1
+    node_dataset = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, node_dataspace, H5P_DEFAULT);
+#else
+    node_dataset = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, node_dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+#endif
+    AssertThrow(node_dataset >= 0, ExcIO());
+#if H5Gcreate_vers == 1
+    cell_dataset = H5Dcreate(h5_file_id, "cells", H5T_NATIVE_UINT, cell_dataspace, H5P_DEFAULT);
+#else
+    cell_dataset = H5Dcreate(h5_file_id, "cells", H5T_NATIVE_UINT, cell_dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+#endif
+    AssertThrow(cell_dataset >= 0, ExcIO());
+
+    // Close the node and cell dataspaces since we're done with them
+    status = H5Sclose(node_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+    status = H5Sclose(cell_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Create the data subset we'll use to read from memory
+    count[0] = local_node_cell_count[0];
+    count[1] = dim;
+    offset[0] = global_node_cell_offsets[0];
+    offset[1] = 0;
+    node_memory_dataspace = H5Screate_simple(2, count, NULL);
+    AssertThrow(node_memory_dataspace >= 0, ExcIO());
+
+    // Select the hyperslab in the file
+    node_file_dataspace = H5Dget_space(node_dataset);
+    AssertThrow(node_file_dataspace >= 0, ExcIO());
+    status = H5Sselect_hyperslab(node_file_dataspace, H5S_SELECT_SET, offset, NULL, count, NULL);
+    AssertThrow(status >= 0, ExcIO());
+
+    // And repeat for cells
+    count[0] = local_node_cell_count[1];
+    count[1] = GeometryInfo<dim>::vertices_per_cell;
+    offset[0] = global_node_cell_offsets[1];
+    offset[1] = 0;
+    cell_memory_dataspace = H5Screate_simple(2, count, NULL);
+    AssertThrow(cell_memory_dataspace >= 0, ExcIO());
+
+    cell_file_dataspace = H5Dget_space(cell_dataset);
+    AssertThrow(cell_file_dataspace >= 0, ExcIO());
+    status = H5Sselect_hyperslab(cell_file_dataspace, H5S_SELECT_SET, offset, NULL, count, NULL);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Create the property list for a collective write
+    plist_id = H5Pcreate(H5P_DATASET_XFER);
+    AssertThrow(plist_id >= 0, ExcIO());
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+#ifdef H5_HAVE_PARALLEL
+    status = H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE);
+    AssertThrow(status >= 0, ExcIO());
+#endif
+#endif
+
+    // And finally, write the node data
+    status = H5Dwrite(node_dataset, H5T_NATIVE_DOUBLE, node_memory_dataspace, node_file_dataspace, plist_id, hdf5_data.node_data());
+    AssertThrow(status >= 0, ExcIO());
+
+    // And the cell data
+    status = H5Dwrite(cell_dataset, H5T_NATIVE_UINT, cell_memory_dataspace, cell_file_dataspace, plist_id, hdf5_data.cell_data());
+    AssertThrow(status >= 0, ExcIO());
+
+    reorder_task.join ();
+
+    // when writing, first write out
+    // all vector data, then handle the
+    // scalar data sets that have been
+    // left over
+    unsigned int    i, n, q, r, n_th_vector, data_set, pt_data_vector_dim, mem_vector_dim;
+    double          *pt_data;
+    std::string     vector_name;
+    for (n_th_vector=0,data_set=0;data_set<n_data_sets;) {
+        // Advance n_th_vector to at least the current data set we are on
+        while (n_th_vector < vector_data_ranges.size() && std_cxx1x::get<0>(vector_data_ranges[n_th_vector]) < data_set) n_th_vector++;
+
+        // Determine the dimension of this data
+        if (std_cxx1x::get<0>(vector_data_ranges[n_th_vector]) == data_set) {
+            // Multiple dimensions
+            pt_data_vector_dim = std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) - std_cxx1x::get<0>(vector_data_ranges[n_th_vector])+1;
+
+            // Ensure the dimensionality of the data is correct
+            AssertThrow (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) >= std_cxx1x::get<0>(vector_data_ranges[n_th_vector]),
+                         ExcLowerRange (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]), std_cxx1x::get<0>(vector_data_ranges[n_th_vector])));
+            AssertThrow (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]) < n_data_sets,
+                         ExcIndexRange (std_cxx1x::get<1>(vector_data_ranges[n_th_vector]), 0, n_data_sets));
+
+            // Determine the vector name
+            // Concatenate all the
+            // component names with double
+            // underscores unless a vector
+            // name has been specified
+            if (std_cxx1x::get<2>(vector_data_ranges[n_th_vector]) != "") {
+                vector_name = std_cxx1x::get<2>(vector_data_ranges[n_th_vector]);
+            } else {
+                vector_name = "";
+                for (i=std_cxx1x::get<0>(vector_data_ranges[n_th_vector]);i<std_cxx1x::get<1>(vector_data_ranges[n_th_vector]);++i)
+                    vector_name += data_names[i] + "__";
+                vector_name += data_names[std_cxx1x::get<1>(vector_data_ranges[n_th_vector])];
+            }
+        } else {
+            // One dimension
+            pt_data_vector_dim = 1;
+            vector_name = data_names[data_set];
+        }
+
+        // Allocate space for the point data
+        // Must be either 1D or 3D
+        mem_vector_dim = (pt_data_vector_dim>1?3:1);
+        pt_data = new double[local_node_cell_count[0]*mem_vector_dim];
+
+        // Create the dataspace for the point data
+        node_ds_dim[0] = global_node_cell_count[0];
+        node_ds_dim[1] = mem_vector_dim;
+        pt_data_dataspace = H5Screate_simple(2, node_ds_dim, NULL);
+        AssertThrow(pt_data_dataspace >= 0, ExcIO());
+
+#if H5Gcreate_vers == 1
+        pt_data_dataset = H5Dcreate(h5_file_id, vector_name.c_str(), H5T_NATIVE_DOUBLE, pt_data_dataspace, H5P_DEFAULT);
+#else
+        pt_data_dataset = H5Dcreate(h5_file_id, vector_name.c_str(), H5T_NATIVE_DOUBLE, pt_data_dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+#endif
+        AssertThrow(pt_data_dataset >= 0, ExcIO());
+
+        // Create the data subset we'll use to read from memory
+        count[0] = local_node_cell_count[0];
+        count[1] = mem_vector_dim;
+        offset[0] = global_node_cell_offsets[0];
+        offset[1] = 0;
+        pt_data_memory_dataspace = H5Screate_simple(2, count, NULL);
+        AssertThrow(pt_data_memory_dataspace >= 0, ExcIO());
+
+        // Select the hyperslab in the file
+        pt_data_file_dataspace = H5Dget_space(pt_data_dataset);
+        AssertThrow(pt_data_file_dataspace >= 0, ExcIO());
+        status = H5Sselect_hyperslab(pt_data_file_dataspace, H5S_SELECT_SET, offset, NULL, count, NULL);
+        AssertThrow(status >= 0, ExcIO());
+
+        // Write point data to the memory array
+        r = 0;
+        for (i=0;i<local_node_cell_count[0];++i) {
+            // Get the offset to the vector
+            q = data_set;
+            // Write the data vector
+            for (n=0;n<pt_data_vector_dim;++n) pt_data[r++] = data_vectors(q+n, i);
+            // Write 0 for the remainder of entries in 2D
+            for (;n<mem_vector_dim;++n) pt_data[r++] = 0;
+        }
+
+        // And finally, write the data
+        status = H5Dwrite(pt_data_dataset, H5T_NATIVE_DOUBLE, pt_data_memory_dataspace, pt_data_file_dataspace, plist_id, pt_data);
+        AssertThrow(status >= 0, ExcIO());
+
+        delete pt_data;
+
+        // Close the dataspaces
+        status = H5Sclose(pt_data_dataspace);
+        AssertThrow(status >= 0, ExcIO());
+        status = H5Sclose(pt_data_memory_dataspace);
+        AssertThrow(status >= 0, ExcIO());
+        status = H5Sclose(pt_data_file_dataspace);
+        AssertThrow(status >= 0, ExcIO());
+        // Close the dataset
+        status = H5Dclose(pt_data_dataset);
+        AssertThrow(status >= 0, ExcIO());
+
+        // Advance the current data set
+        data_set += pt_data_vector_dim;
+    }
+
+    // Close the file dataspaces
+    status = H5Sclose(node_file_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+    status = H5Sclose(cell_file_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Close the memory dataspaces
+    status = H5Sclose(node_memory_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+    status = H5Sclose(cell_memory_dataspace);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Close the datasets
+    status = H5Dclose(node_dataset);
+    AssertThrow(status >= 0, ExcIO());
+    status = H5Dclose(cell_dataset);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Close the parallel access
+    status = H5Pclose(plist_id);
+    AssertThrow(status >= 0, ExcIO());
+
+    // Close the file
+    status = H5Fclose(h5_file_id);
+    AssertThrow(status >= 0, ExcIO());
+#endif
+}
+
+
 
 template <int dim, int spacedim>
 void
index d941c7416d7111f04e4a7b5eaeaf7b534bc70a3c..366731bc615ed9fbe015a2b72e8e26c116dae096 100644 (file)
@@ -1410,7 +1410,7 @@ Point<dim>
 GeometryInfo<dim>::project_to_unit_cell (const Point<dim> &q)
 {
   Point<dim> p = q;
-  for(unsigned i=0; i<dim; i++)
+  for(unsigned int i=0; i<dim; i++)
     if      (p[i] < 0.)  p[i] = 0.;
     else if (p[i] > 1.)  p[i] = 1.;
 
@@ -1425,7 +1425,7 @@ GeometryInfo<dim>::distance_to_unit_cell (const Point<dim> &p)
 {
    double result = 0.0;
 
-   for(unsigned i=0; i<dim; i++)
+   for(unsigned int i=0; i<dim; i++)
       if ((-p[i]) > result)
          result = -p[i];
       else if ((p[i]-1.) > result)
index 94729e15f624179981b114e3b011b47a3d09114f..98f06e51ddd89cdafdd86136224f4d8170ee5676 100644 (file)
@@ -255,7 +255,7 @@ void LogStream::pop ()
 
 
 unsigned int
-LogStream::depth_console (const unsigned n)
+LogStream::depth_console (const unsigned int n)
 {
   Threads::ThreadMutex::ScopedLock lock(log_lock);
   const unsigned int h = std_depth;
@@ -265,7 +265,7 @@ LogStream::depth_console (const unsigned n)
 
 
 unsigned int
-LogStream::depth_file (const unsigned n)
+LogStream::depth_file (const unsigned int n)
 {
   Threads::ThreadMutex::ScopedLock lock(log_lock);
   const unsigned int h = file_depth;
index 1a628bfea40a8b066aae5f6ac6b69a63b733e1e0..1b409879485e8580df9ea6139eb894c234c037fb 100644 (file)
 #include <list>
 #include <sstream>
 #include <cctype>
+#include <limits>
 
-#ifdef HAVE_STD_NUMERIC_LIMITS
-#  include <limits>
-#endif
 
 #ifdef DEAL_II_MSVC
 // on Windows systems with MS Visual C/C++, there is a
@@ -148,20 +146,8 @@ namespace Patterns
 
 
 
-  const int Integer::min_int_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          std::numeric_limits<int>::min();
-#else
-          1;
-#endif
-
-  const int Integer::max_int_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          std::numeric_limits<int>::max();
-#else
-          0;
-#endif
-
+  const int Integer::min_int_value = std::numeric_limits<int>::min();
+  const int Integer::max_int_value = std::numeric_limits<int>::max();
 
   const char* Integer::description_init = "[Integer";
 
@@ -259,19 +245,8 @@ namespace Patterns
 
 
 
-  const double Double::min_double_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          -std::numeric_limits<double>::max();
-#else
-          1;
-#endif
-
-  const double Double::max_double_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          std::numeric_limits<double>::max();
-#else
-          0;
-#endif
+  const double Double::min_double_value = -std::numeric_limits<double>::max();
+  const double Double::max_double_value = std::numeric_limits<double>::max();
 
   const char* Double::description_init = "[Double";
 
@@ -455,13 +430,8 @@ namespace Patterns
 
 
 
-  const unsigned int List::max_int_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          std::numeric_limits<unsigned int>::max();
-#else
-          numbers::invalid_unsigned_int;
-#endif
-
+  const unsigned int List::max_int_value
+  = std::numeric_limits<unsigned int>::max();
 
   const char* List::description_init = "[List";
 
@@ -595,13 +565,8 @@ namespace Patterns
 
 
 
-  const unsigned int Map::max_int_value =
-#ifdef HAVE_STD_NUMERIC_LIMITS
-          std::numeric_limits<unsigned int>::max();
-#else
-          numbers::invalid_unsigned_int;
-#endif
-
+  const unsigned int Map::max_int_value
+  = std::numeric_limits<unsigned int>::max();
 
   const char* Map::description_init = "[Map";
 
index df17c1af5f714290b0c750bcc1e38be2b751c4c9..652c8023c36d98e0499173c77512c9206c4329a7 100644 (file)
@@ -18,9 +18,7 @@
 #include <deal.II/base/thread_management.h>
 
 #include <cmath>
-#ifdef HAVE_STD_NUMERIC_LIMITS
-#  include <limits>
-#endif
+#include <limits>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -86,12 +84,11 @@ namespace Polynomials
         }
 
                                 // check for underflow and overflow
-#ifdef HAVE_STD_NUMERIC_LIMITS
     Assert (std::fabs(tmp_lagrange_weight) > std::numeric_limits<number>::min(),
             ExcMessage ("Underflow in computation of Lagrange denominator."));
     Assert (std::fabs(tmp_lagrange_weight) < std::numeric_limits<number>::max(),
             ExcMessage ("Overflow in computation of Lagrange denominator."));
-#endif
+
     lagrange_weight = static_cast<number>(1.)/tmp_lagrange_weight;
   }
 
index 93384ec7cf9456814df7f509070a2e071b2c00c8..a38e566433b5fa6c463fbbd722655322f0911c7c 100644 (file)
 
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/geometry_info.h>
-#include <cmath>
 
-#ifdef HAVE_STD_NUMERIC_LIMITS
-#  include <limits>
-#endif
+#include <cmath>
+#include <limits>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -110,15 +108,9 @@ QGauss<1>::QGauss (const unsigned int n)
                                    // emulator only supports 64 bit
                                    // arithmetic, even for 80 bit long
                                    // doubles.
-#ifdef HAVE_STD_NUMERIC_LIMITS
   const long double
     long_double_eps = static_cast<long double>(std::numeric_limits<long double>::epsilon()),
     double_eps      = static_cast<long double>(std::numeric_limits<double>::epsilon());
-#else
-  const long double
-    long_double_eps = 1.09-19L,
-    double_eps      = 2.23-16;
-#endif
 
                                    // now check whether long double is more
                                    // accurate than double, and set
@@ -210,15 +202,9 @@ compute_quadrature_points(const unsigned int q,
 
                                    // Set tolerance. See class QGauss
                                    // for detailed explanation.
-#ifdef HAVE_STD_NUMERIC_LIMITS
   const long double
     long_double_eps = static_cast<long double>(std::numeric_limits<long double>::epsilon()),
     double_eps      = static_cast<long double>(std::numeric_limits<double>::epsilon());
-#else
-  const long double
-    long_double_eps = 1.09-19L,
-    double_eps      = 2.23-16;
-#endif
 
                                    // check whether long double is
                                    // more accurate than double, and
index 32d26974c45896d82c6da664670e0d13d7cf1ed2..ee91075742ad33c508d7fdc6f56e273906a1b25c 100644 (file)
@@ -290,9 +290,60 @@ void TableHandler::write_text(std::ostream &out,
   const unsigned int nrows  = n_rows();
   const unsigned int n_cols = sel_columns.size();
 
+  // handle the simple format separately first
+  if (format==simple_table_with_separate_column_description)
+    {
+      // write the captions
+      for (unsigned int j=0; j<column_order.size(); ++j)
+        {
+          const std::string & key = column_order[j];
+          out << "# " << j+1 << ": " << key << '\n';
+        }
+
+      // cache the columns
+      std::vector<const Column*> cols;
+      for (unsigned int j=0; j<n_cols; ++j)
+        {
+          std::string key=sel_columns[j];
+          const std::map<std::string, Column>::const_iterator
+          col_iter=columns.find(key);
+          Assert(col_iter!=columns.end(), ExcInternalError());
+          cols.push_back(&(col_iter->second));
+        }
+
+      // write the body
+      for (unsigned int i=0; i<nrows; ++i)
+        {
+          for (unsigned int j=0; j<n_cols; ++j)
+            {
+              const Column &column=*(cols[j]);
+
+              out << std::setprecision(column.precision);
+
+              if (column.scientific)
+                out.setf(std::ios::scientific, std::ios::floatfield);
+              else
+                out.setf(std::ios::fixed, std::ios::floatfield);
+
+              // write "" instead of an empty string
+              const std::string * val = boost::get<std::string>(&(column.entries[i].value));
+              if (val!=NULL && val->length()==0)
+                out << "\"\"";
+              else
+                out << column.entries[i].value;
+
+              out << ' ';
+            }
+          out << '\n';
+        }
+
+      out << std::flush;
+      return;
+    }
+
                                    // first compute the widths of each
                                    // entry of the table, in order to
-                                   // have a nicer alignement
+                                   // have a nicer alignment
   Table<2,unsigned int> entry_widths (nrows, n_cols);
   for (unsigned int i=0; i<nrows; ++i)
     for (unsigned int j=0; j<n_cols; ++j)
@@ -377,7 +428,7 @@ void TableHandler::write_text(std::ostream &out,
         {
           // print column key with column number. enumerate
           // columns starting with 1
-          out << "# " << j+1 << ": " << key << std::endl;
+          out << "# " << j+1 << ": " << key << '\n';
           break;
         }
 
@@ -386,7 +437,7 @@ void TableHandler::write_text(std::ostream &out,
       }
     }
   if (format == table_with_headers)
-    out << std::endl;
+    out << '\n';
 
   for (unsigned int i=0; i<nrows; ++i)
     {
@@ -432,8 +483,9 @@ void TableHandler::write_text(std::ostream &out,
                                            // pad after this column
           out << " ";
         }
-      out << std::endl;
+      out << '\n';
     }
+  out << std::flush;
 }
 
 
index 033bb2df5cee5ce91029d7052cf57a4ab460c63e..7549689b4827ca483a588ca15f91083ebfd2dcfc 100644 (file)
@@ -154,7 +154,7 @@ namespace Threads
     const pid_t this_id = getpid();
 #else
 #  ifdef DEAL_II_MSVC
-    const unsigned this_id = 0;
+    const unsigned int this_id = 0;
 #  else
     const pid_t this_id = 0;
 #  endif
index 4cd05eb695172ec11a03750b7a6328ae6b1e8d6c..3c25ba69b22762133e5893188947185d977e2b5e 100644 (file)
 #include <sys/types.h>
 #include <sstream>
 #include <iostream>
-
-#ifdef HAVE_STD_NUMERIC_LIMITS
-#  include <limits>
-#else
-#  include <limits.h>
-#endif
-
+#include <limits>
 
 #ifdef DEAL_II_USE_TRILINOS
 #  ifdef DEAL_II_COMPILER_SUPPORTS_MPI
@@ -145,16 +139,11 @@ namespace Utilities
   {
     std::istringstream ss(s);
 
-#ifdef HAVE_STD_NUMERIC_LIMITS
-    static const int max_int = std::numeric_limits<int>::max();
-#else
-    static const int max_int = INT_MAX;
-#endif
-
-    int i = max_int;
+    int i = std::numeric_limits<int>::max();
     ss >> i;
                                      // check for errors
-    AssertThrow (i != max_int, ExcCantConvertString (s));
+    AssertThrow (i != std::numeric_limits<int>::max(),
+                ExcCantConvertString (s));
 
 //TODO: The test for errors above doesn't work, as can easily be
 //verified. furthermore, it doesn't catch cases like when calling
@@ -182,17 +171,12 @@ namespace Utilities
   {
     std::istringstream ss(s);
 
-#ifdef HAVE_STD_NUMERIC_LIMITS
-    static const double max_double = std::numeric_limits<double>::max();
-#else
-    static const double max_double = DBL_MAX;
-#endif
-
-    double i = max_double;
+    double i = std::numeric_limits<double>::max();
     ss >> i;
 
                                      // check for errors
-    AssertThrow (i != max_double, ExcCantConvertString (s));
+    AssertThrow (i != std::numeric_limits<double>::max(),
+                ExcCantConvertString (s));
 
 //TODO: The test for errors above doesn't work, as can easily be
 //verified. furthermore, it doesn't catch cases like when calling
index 8022f743c3620449f657afa6dfe62cba53f33930..debd406711a3473ebaef6e3be756fe43d546a00f 100644 (file)
@@ -1,5 +1,5 @@
 //---------------------------------------------------------------------------
-//    $Id: solution_transfer.cc 23752 2011-05-30 00:16:00Z bangerth $
+//    $Id$
 //    Version: $Name$
 //
 //    Copyright (C) 2009, 2010, 2011, 2012 by the deal.II authors
@@ -40,41 +40,6 @@ namespace parallel
   namespace distributed
   {
 
-    namespace
-    {
-      template <class VECTOR>
-      void compress_vector_insert(VECTOR & vec)
-      {
-        vec.compress();
-      }
-
-#ifdef DEAL_II_USE_TRILINOS
-      void compress_vector_insert(TrilinosWrappers::Vector & vec)
-      {
-        vec.compress(Insert);
-      }
-
-      void compress_vector_insert(TrilinosWrappers::BlockVector & vec)
-      {
-        for (unsigned int i=0;i<vec.n_blocks();++i)
-          vec.block(i).compress(Insert);
-      }
-
-      void compress_vector_insert(TrilinosWrappers::MPI::Vector & vec)
-      {
-        vec.compress(Insert);
-      }
-
-      void compress_vector_insert(TrilinosWrappers::MPI::BlockVector & vec)
-      {
-        for (unsigned int i=0;i<vec.n_blocks();++i)
-          vec.block(i).compress(Insert);
-      }
-#endif
-    }
-
-
-
     template<int dim, typename VECTOR, class DH>
     SolutionTransfer<dim, VECTOR, DH>::SolutionTransfer(const DH &dof)
                     :
@@ -206,10 +171,11 @@ namespace parallel
                                                    std_cxx1x::_3,
                                                    std_cxx1x::ref(all_out)));
 
+      
       for (typename std::vector<VECTOR*>::iterator it=all_out.begin();
            it !=all_out.end();
            ++it)
-        compress_vector_insert(*(*it));
+       (*it)->compress(::dealii::VectorOperation::insert);
 
       input_vectors.clear();
     }
index a75cad3012bfc0141e458a2f77802ec9c581f886..e025665818c3256f8a525cce5e267ceabc1a07ef 100644 (file)
@@ -164,7 +164,7 @@ namespace internal
                                                        long *length);
 
         static
-        unsigned (&checksum) (types<2>::forest * p4est);
+        unsigned int (&checksum) (types<2>::forest * p4est);
 
         static
         void (&vtk_write_file) (types<2>::forest * p4est,
@@ -286,7 +286,7 @@ namespace internal
                                         long *length)
     = p4est_connectivity_load;
 
-    unsigned (&functions<2>::checksum) (types<2>::forest * p4est)
+    unsigned int (&functions<2>::checksum) (types<2>::forest * p4est)
     = p4est_checksum;
 
     void (&functions<2>::vtk_write_file) (types<2>::forest * p4est,
@@ -412,7 +412,7 @@ namespace internal
                                                        long *length);
 
         static
-        unsigned (&checksum) (types<3>::forest * p8est);
+        unsigned int (&checksum) (types<3>::forest * p8est);
 
         static
         void (&vtk_write_file) (types<3>::forest * p8est,
@@ -537,7 +537,7 @@ namespace internal
                                         long *length)
     = p8est_connectivity_load;
 
-    unsigned (&functions<3>::checksum) (types<3>::forest * p8est)
+    unsigned int (&functions<3>::checksum) (types<3>::forest * p8est)
     = p8est_checksum;
 
     void (&functions<3>::vtk_write_file) (types<3>::forest * p8est,
@@ -831,7 +831,7 @@ namespace
                     if (f>cell->neighbor_of_neighbor (f))
                       smaller_idx = 1;
 
-                    unsigned larger_idx = (smaller_idx+1) % 2;
+                    unsigned int larger_idx = (smaller_idx+1) % 2;
                                                      //smaller = *_list[smaller_idx]
                                                      //larger = *_list[larger_idx]
 
@@ -962,7 +962,7 @@ namespace
                           const typename Triangulation<dim,spacedim>::cell_iterator     &dealii_cell,
                           const typename internal::p4est::types<dim>::quadrant &p4est_cell,
                           const typename internal::p4est::types<dim>::forest   &forest,
-                          const types::subdomain_id_t                           my_subdomain)
+                          const types::subdomain_id                           my_subdomain)
   {
                                      // check if this cell exists in
                                      // the local p4est cell
@@ -1394,7 +1394,7 @@ namespace
     public:
       RefineAndCoarsenList (const Triangulation<dim,spacedim> &triangulation,
                             const std::vector<unsigned int> &p4est_tree_to_coarse_cell_permutation,
-                            const types::subdomain_id_t                   my_subdomain,
+                            const types::subdomain_id                   my_subdomain,
                             typename internal::p4est::types<dim>::forest &forest);
 
                                        /**
@@ -1468,7 +1468,7 @@ namespace
   RefineAndCoarsenList<dim,spacedim>::
   RefineAndCoarsenList (const Triangulation<dim,spacedim>            &triangulation,
                         const std::vector<unsigned int> &p4est_tree_to_coarse_cell_permutation,
-                        const types::subdomain_id_t                   my_subdomain,
+                        const types::subdomain_id                   my_subdomain,
                         typename internal::p4est::types<dim>::forest &forest)
                   :
                   forest(forest)
@@ -1554,7 +1554,7 @@ namespace
   RefineAndCoarsenList<dim,spacedim>::
   build_lists (const typename Triangulation<dim,spacedim>::cell_iterator     &cell,
                const typename internal::p4est::types<dim>::quadrant &p4est_cell,
-               const types::subdomain_id_t my_subdomain)
+               const types::subdomain_id my_subdomain)
   {
     if (!cell->has_children())
       {
@@ -2821,7 +2821,7 @@ namespace parallel
 
 
     template <int dim, int spacedim>
-    types::subdomain_id_t
+    types::subdomain_id
     Triangulation<dim,spacedim>::locally_owned_subdomain () const
     {
       Assert (dim > 1, ExcNotImplemented());
@@ -3082,7 +3082,7 @@ namespace parallel
 
 
     template <>
-    types::subdomain_id_t
+    types::subdomain_id
     Triangulation<1,1>::locally_owned_subdomain () const
     {
       Assert (false, ExcNotImplemented());
@@ -3131,7 +3131,7 @@ namespace parallel
 
 
     template <>
-    types::subdomain_id_t
+    types::subdomain_id
     Triangulation<1,2>::locally_owned_subdomain () const
     {
       Assert (false, ExcNotImplemented());
@@ -3172,7 +3172,7 @@ namespace parallel
 
 
     template <>
-    types::subdomain_id_t
+    types::subdomain_id
     Triangulation<1,3>::locally_owned_subdomain () const
     {
       Assert (false, ExcNotImplemented());
@@ -3221,7 +3221,7 @@ namespace parallel
 
 
     template <int dim, int spacedim>
-    types::subdomain_id_t
+    types::subdomain_id
     Triangulation<dim,spacedim>::locally_owned_subdomain () const
     {
       Assert (false, ExcNotImplemented());
index fb4a98ac97cf5e95c0520ca44cf00cd56088b941..b0ae632789a0aa71ad49111ba1e910fe4179edbe 100644 (file)
@@ -271,7 +271,7 @@ namespace internal
                 dof_handler.levels
                   .push_back (new internal::DoFHandler::DoFLevel<1>);
 
-                dof_handler.levels.back()->lines.dofs
+                dof_handler.levels.back()->dof_object.dofs
                   .resize (dof_handler.tria->n_raw_lines(i) *
                            dof_handler.selected_fe->dofs_per_line,
                            DoFHandler<1,spacedim>::invalid_dof_index);
@@ -297,7 +297,7 @@ namespace internal
               {
                 dof_handler.levels.push_back (new internal::DoFHandler::DoFLevel<2>);
 
-                dof_handler.levels.back()->quads.dofs
+                dof_handler.levels.back()->dof_object.dofs
                   .resize (dof_handler.tria->n_raw_quads(i) *
                            dof_handler.selected_fe->dofs_per_quad,
                            DoFHandler<2,spacedim>::invalid_dof_index);
@@ -329,7 +329,7 @@ namespace internal
               {
                 dof_handler.levels.push_back (new internal::DoFHandler::DoFLevel<3>);
 
-                dof_handler.levels.back()->hexes.dofs
+                dof_handler.levels.back()->dof_object.dofs
                   .resize (dof_handler.tria->n_raw_hexs(i) *
                            dof_handler.selected_fe->dofs_per_hex,
                            DoFHandler<3,spacedim>::invalid_dof_index);
@@ -1489,12 +1489,12 @@ unsigned int DoFHandler<1>::n_boundary_dofs (const FunctionMap &boundary_indicat
 
 
 template <>
-unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const
+unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const
 {
                                    // check that only boundary
                                    // indicators 0 and 1 are allowed
                                    // in 1d
-  for (std::set<types::boundary_id_t>::const_iterator i=boundary_indicators.begin();
+  for (std::set<types::boundary_id>::const_iterator i=boundary_indicators.begin();
        i!=boundary_indicators.end(); ++i)
     Assert ((*i == 0) || (*i == 1),
             ExcInvalidBoundaryIndicator());
@@ -1528,12 +1528,12 @@ unsigned int DoFHandler<1,2>::n_boundary_dofs (const FunctionMap &boundary_indic
 
 
 template <>
-unsigned int DoFHandler<1,2>::n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const
+unsigned int DoFHandler<1,2>::n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const
 {
                                    // check that only boundary
                                    // indicators 0 and 1 are allowed
                                    // in 1d
-  for (std::set<types::boundary_id_t>::const_iterator i=boundary_indicators.begin();
+  for (std::set<types::boundary_id>::const_iterator i=boundary_indicators.begin();
        i!=boundary_indicators.end(); ++i)
     Assert ((*i == 0) || (*i == 1),
             ExcInvalidBoundaryIndicator());
@@ -1579,7 +1579,7 @@ template<int dim, int spacedim>
 unsigned int
 DoFHandler<dim,spacedim>::n_boundary_dofs (const FunctionMap &boundary_indicators) const
 {
-  Assert (boundary_indicators.find(types::internal_face_boundary_id) == boundary_indicators.end(),
+  Assert (boundary_indicators.find(numbers::internal_face_boundary_id) == boundary_indicators.end(),
           ExcInvalidBoundaryIndicator());
 
   std::set<int> boundary_dofs;
@@ -1603,9 +1603,9 @@ DoFHandler<dim,spacedim>::n_boundary_dofs (const FunctionMap &boundary_indicator
 
 template<int dim, int spacedim>
 unsigned int
-DoFHandler<dim,spacedim>::n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const
+DoFHandler<dim,spacedim>::n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const
 {
-  Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
+  Assert (boundary_indicators.find (numbers::internal_face_boundary_id) == boundary_indicators.end(),
           ExcInvalidBoundaryIndicator());
 
   std::set<int> boundary_dofs;
@@ -1651,8 +1651,7 @@ DoFHandler<dim,spacedim>::memory_consumption () const
 
 template<int dim, int spacedim>
 void DoFHandler<dim,spacedim>::
-distribute_dofs (const FiniteElement<dim,spacedim> &ff,
-                 const unsigned int                 offset)
+distribute_dofs (const FiniteElement<dim,spacedim> &ff)
 {
   selected_fe = &ff;
 
@@ -1676,8 +1675,7 @@ distribute_dofs (const FiniteElement<dim,spacedim> &ff,
   internal::DoFHandler::Implementation::reserve_space (*this);
 
                                    // hand things off to the policy
-  number_cache = policy->distribute_dofs (offset,
-                                          *this);
+  number_cache = policy->distribute_dofs (*this);
 
                                    // initialize the block info object
                                    // only if this is a sequential
index 241199d8918c8039b9c7fa2feaca6ba28e5860d8..bbfd2159181fbb3408078431a1aeda4224d94ed0 100644 (file)
@@ -226,7 +226,7 @@ namespace internal
           static
           unsigned int
           distribute_dofs (const unsigned int        offset,
-                           const types::subdomain_id_t subdomain_id,
+                           const types::subdomain_id subdomain_id,
                            DoFHandler<dim,spacedim> &dof_handler)
             {
               const dealii::Triangulation<dim,spacedim> & tria
@@ -326,8 +326,8 @@ namespace internal
 
               for (unsigned int level=0; level<dof_handler.levels.size(); ++level)
                 for (std::vector<unsigned int>::iterator
-                       i=dof_handler.levels[level]->lines.dofs.begin();
-                     i!=dof_handler.levels[level]->lines.dofs.end(); ++i)
+                       i=dof_handler.levels[level]->dof_object.dofs.begin();
+                     i!=dof_handler.levels[level]->dof_object.dofs.end(); ++i)
                   if (*i != DoFHandler<1,spacedim>::invalid_dof_index)
                     *i = new_numbers[*i];
 
@@ -388,8 +388,8 @@ namespace internal
               for (unsigned int level=0; level<dof_handler.levels.size(); ++level)
                 {
                   for (std::vector<unsigned int>::iterator
-                         i=dof_handler.levels[level]->quads.dofs.begin();
-                       i!=dof_handler.levels[level]->quads.dofs.end(); ++i)
+                         i=dof_handler.levels[level]->dof_object.dofs.begin();
+                       i!=dof_handler.levels[level]->dof_object.dofs.end(); ++i)
                     if (*i != DoFHandler<2,spacedim>::invalid_dof_index)
                       *i = ((indices.n_elements() == 0) ?
                             new_numbers[*i] :
@@ -459,8 +459,8 @@ namespace internal
               for (unsigned int level=0; level<dof_handler.levels.size(); ++level)
                 {
                   for (std::vector<unsigned int>::iterator
-                         i=dof_handler.levels[level]->hexes.dofs.begin();
-                       i!=dof_handler.levels[level]->hexes.dofs.end(); ++i)
+                         i=dof_handler.levels[level]->dof_object.dofs.begin();
+                       i!=dof_handler.levels[level]->dof_object.dofs.end(); ++i)
                     if (*i != DoFHandler<3,spacedim>::invalid_dof_index)
                       *i = ((indices.n_elements() == 0) ?
                             new_numbers[*i] :
@@ -492,11 +492,10 @@ namespace internal
       template <int dim, int spacedim>
       NumberCache
       Sequential<dim,spacedim>::
-      distribute_dofs (const unsigned int        offset,
-                       DoFHandler<dim,spacedim> &dof_handler) const
+      distribute_dofs (DoFHandler<dim,spacedim> &dof_handler) const
       {
         const unsigned int n_dofs =
-          Implementation::distribute_dofs (offset,
+          Implementation::distribute_dofs (0,
                                            types::invalid_subdomain_id,
                                            dof_handler);
 
@@ -637,8 +636,8 @@ namespace internal
                                      const unsigned int tree_index,
                                      const typename DoFHandler<dim,spacedim>::cell_iterator &dealii_cell,
                                      const typename dealii::internal::p4est::types<dim>::quadrant &p4est_cell,
-                                     const std::map<unsigned int, std::set<dealii::types::subdomain_id_t> > &vertices_with_ghost_neighbors,
-                                     std::map<dealii::types::subdomain_id_t, typename types<dim>::cellinfo> &needs_to_get_cell)
+                                     const std::map<unsigned int, std::set<dealii::types::subdomain_id> > &vertices_with_ghost_neighbors,
+                                     std::map<dealii::types::subdomain_id, typename types<dim>::cellinfo> &needs_to_get_cell)
         {
                                            // see if we have to
                                            // recurse...
@@ -671,10 +670,10 @@ namespace internal
                                                // check each vertex if
                                                // it is interesting and
                                                // push dofindices if yes
-              std::set<dealii::types::subdomain_id_t> send_to;
+              std::set<dealii::types::subdomain_id> send_to;
               for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
                 {
-                  const std::map<unsigned int, std::set<dealii::types::subdomain_id_t> >::const_iterator
+                  const std::map<unsigned int, std::set<dealii::types::subdomain_id> >::const_iterator
                     neighbor_subdomains_of_vertex
                     = vertices_with_ghost_neighbors.find (dealii_cell->vertex_index(v));
 
@@ -698,10 +697,10 @@ namespace internal
                     local_dof_indices (dealii_cell->get_fe().dofs_per_cell);
                   dealii_cell->get_dof_indices (local_dof_indices);
 
-                  for (std::set<dealii::types::subdomain_id_t>::iterator it=send_to.begin();
+                  for (std::set<dealii::types::subdomain_id>::iterator it=send_to.begin();
                        it!=send_to.end();++it)
                     {
-                      const dealii::types::subdomain_id_t subdomain = *it;
+                      const dealii::types::subdomain_id subdomain = *it;
 
                                                        // get an iterator
                                                        // to what needs to
@@ -710,7 +709,7 @@ namespace internal
                                                        // already exists),
                                                        // or create such
                                                        // an object
-                      typename std::map<dealii::types::subdomain_id_t, typename types<dim>::cellinfo>::iterator
+                      typename std::map<dealii::types::subdomain_id, typename types<dim>::cellinfo>::iterator
                         p
                         = needs_to_get_cell.insert (std::make_pair(subdomain,
                                                                    typename types<dim>::cellinfo()))
@@ -825,7 +824,7 @@ namespace internal
         void
         communicate_dof_indices_on_marked_cells
         (const DoFHandler<1,spacedim> &,
-         const std::map<unsigned int, std::set<dealii::types::subdomain_id_t> > &,
+         const std::map<unsigned int, std::set<dealii::types::subdomain_id> > &,
          const std::vector<unsigned int> &,
          const std::vector<unsigned int> &)
         {
@@ -838,7 +837,7 @@ namespace internal
         void
         communicate_dof_indices_on_marked_cells
         (const DoFHandler<dim,spacedim> &dof_handler,
-         const std::map<unsigned int, std::set<dealii::types::subdomain_id_t> > &vertices_with_ghost_neighbors,
+         const std::map<unsigned int, std::set<dealii::types::subdomain_id> > &vertices_with_ghost_neighbors,
          const std::vector<unsigned int> &coarse_cell_to_p4est_tree_permutation,
          const std::vector<unsigned int> &p4est_tree_to_coarse_cell_permutation)
         {
@@ -856,7 +855,7 @@ namespace internal
                                            // dof_indices for the
                                            // interested neighbors
           typedef
-            std::map<dealii::types::subdomain_id_t, typename types<dim>::cellinfo>
+            std::map<dealii::types::subdomain_id, typename types<dim>::cellinfo>
             cellmap_t;
           cellmap_t needs_to_get_cells;
 
@@ -912,7 +911,7 @@ namespace internal
                                            // mark all own cells, that miss some
                                            // dof_data and collect the neighbors
                                            // that are going to send stuff to us
-          std::set<dealii::types::subdomain_id_t> senders;
+          std::set<dealii::types::subdomain_id> senders;
           {
             std::vector<unsigned int> local_dof_indices;
             typename DoFHandler<dim,spacedim>::active_cell_iterator
@@ -1049,10 +1048,8 @@ namespace internal
       template <int dim, int spacedim>
       NumberCache
       ParallelDistributed<dim, spacedim>::
-      distribute_dofs (const unsigned int        offset,
-                       DoFHandler<dim,spacedim> &dof_handler) const
+      distribute_dofs (DoFHandler<dim,spacedim> &dof_handler) const
       {
-        Assert(offset==0, ExcNotImplemented());
         NumberCache number_cache;
 
 #ifndef DEAL_II_USE_P4EST
@@ -1219,7 +1216,7 @@ namespace internal
                                          // subdomain to the vertex and
                                          // keep track of interesting
                                          // neighbors
-        std::map<unsigned int, std::set<dealii::types::subdomain_id_t> >
+        std::map<unsigned int, std::set<dealii::types::subdomain_id> >
           vertices_with_ghost_neighbors;
         for (typename DoFHandler<dim,spacedim>::active_cell_iterator
                cell = dof_handler.begin_active();
@@ -1464,7 +1461,7 @@ namespace internal
                                            // subdomain to the vertex and
                                            // keep track of interesting
                                            // neighbors
-          std::map<unsigned int, std::set<dealii::types::subdomain_id_t> >
+          std::map<unsigned int, std::set<dealii::types::subdomain_id> >
             vertices_with_ghost_neighbors;
           for (typename DoFHandler<dim,spacedim>::active_cell_iterator
                  cell = dof_handler.begin_active();
index c595f65a3cd5d2659d62f84cf7dce7707344e11b..7b0e37c14a9fbcf2f4e939b5907cf77d2bb5a759 100644 (file)
@@ -34,7 +34,7 @@ namespace internal
     DoFLevel<1>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption () +
-              MemoryConsumption::memory_consumption (lines));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
 
@@ -43,7 +43,7 @@ namespace internal
     DoFLevel<2>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption () +
-              MemoryConsumption::memory_consumption (quads));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
 
@@ -52,7 +52,7 @@ namespace internal
     DoFLevel<3>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption () +
-              MemoryConsumption::memory_consumption (hexes));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
   }
index 9e3b71a732c2168ecb15626116322b6a10f52b19..99bec3b82325ce10f5ca1b0845ff9161c0cc9b0e 100644 (file)
@@ -849,7 +849,7 @@ namespace DoFRenumbering
         for (unsigned int c=0; c<n_buckets; ++c)
           {
             shifts[c]=cumulated;
-            for (types::subdomain_id_t i=0; i<tria->locally_owned_subdomain(); ++i)
+            for (types::subdomain_id i=0; i<tria->locally_owned_subdomain(); ++i)
               shifts[c] += all_dof_counts[c+n_buckets*i];
             for (unsigned int i=0; i<Utilities::MPI::n_mpi_processes (tria->get_communicator()); ++i)
               cumulated += all_dof_counts[c+n_buckets*i];
@@ -1037,6 +1037,21 @@ namespace DoFRenumbering
 
 
 
+  template <class DH>
+  void
+  sort_selected_dofs_back (DH&                      dof_handler,
+                           const std::vector<bool>& selected_dofs,
+                           const unsigned int       level)
+  {
+    std::vector<unsigned int> renumbering(dof_handler.n_dofs(level),
+                                          DH::invalid_dof_index);
+    compute_sort_selected_dofs_back(renumbering, dof_handler, selected_dofs, level);
+
+    dof_handler.renumber_dofs(level, renumbering);
+  }
+
+
+
   template <class DH>
   void
   compute_sort_selected_dofs_back (std::vector<unsigned int>& new_indices,
@@ -1075,6 +1090,45 @@ namespace DoFRenumbering
 
 
 
+  template <class DH>
+  void
+  compute_sort_selected_dofs_back (std::vector<unsigned int>& new_indices,
+                                   const DH&                  dof_handler,
+                                   const std::vector<bool>&   selected_dofs,
+                                   const unsigned int         level)
+  {
+    const unsigned int n_dofs = dof_handler.n_dofs(level);
+    Assert (selected_dofs.size() == n_dofs,
+            ExcDimensionMismatch (selected_dofs.size(), n_dofs));
+
+                                     // re-sort the dofs according to
+                                     // their selection state
+    Assert (new_indices.size() == n_dofs,
+            ExcDimensionMismatch(new_indices.size(), n_dofs));
+
+    const unsigned int   n_selected_dofs = std::count (selected_dofs.begin(),
+                                                       selected_dofs.end(),
+                                                       false);
+
+    unsigned int next_unselected = 0;
+    unsigned int next_selected   = n_selected_dofs;
+    for (unsigned int i=0; i<n_dofs; ++i)
+      if (selected_dofs[i] == false)
+        {
+          new_indices[i] = next_unselected;
+          ++next_unselected;
+        }
+      else
+        {
+          new_indices[i] = next_selected;
+          ++next_selected;
+        };
+    Assert (next_unselected == n_selected_dofs, ExcInternalError());
+    Assert (next_selected == n_dofs, ExcInternalError());
+  }
+
+
+
   template <class DH>
   void
   cell_wise_dg (DH& dof,
@@ -1781,7 +1835,7 @@ namespace DoFRenumbering
     Assert(new_indices.size() == n_dofs,
            ExcDimensionMismatch(new_indices.size(), n_dofs));
 
-    for (unsigned i=0; i<n_dofs; ++i)
+    for (unsigned int i=0; i<n_dofs; ++i)
       new_indices[i] = i;
 
     std::random_shuffle (new_indices.begin(), new_indices.end());
@@ -1814,7 +1868,7 @@ namespace DoFRenumbering
                                      // first get the association of each dof
                                      // with a subdomain and determine the total
                                      // number of subdomain ids used
-    std::vector<types::subdomain_id_t> subdomain_association (n_dofs);
+    std::vector<types::subdomain_id> subdomain_association (n_dofs);
     DoFTools::get_subdomain_association (dof_handler,
                                          subdomain_association);
     const unsigned int n_subdomains
index dd5c1facbe1ff1ec17a95ba392fa771266070817..769af6b944c1748ada8b79b8ebbfc1f44257b78c 100644 (file)
@@ -345,6 +345,12 @@ namespace DoFRenumbering
       (DoFHandler<deal_II_dimension> &,
        const std::vector<bool> &);
 
+    template
+      void sort_selected_dofs_back<MGDoFHandler<deal_II_dimension> >
+      (MGDoFHandler<deal_II_dimension> &,
+       const std::vector<bool> &,
+       const unsigned int);
+
     template
       void
       compute_sort_selected_dofs_back<DoFHandler<deal_II_dimension> >
@@ -352,6 +358,14 @@ namespace DoFRenumbering
        const DoFHandler<deal_II_dimension> &,
        const std::vector<bool> &);
 
+    template
+      void
+      compute_sort_selected_dofs_back<MGDoFHandler<deal_II_dimension> >
+      (std::vector<unsigned int>&,
+       const MGDoFHandler<deal_II_dimension> &,
+       const std::vector<bool> &,
+       const unsigned int);
+
     template
       void random<hp::DoFHandler<deal_II_dimension> >
       (hp::DoFHandler<deal_II_dimension> &);
index 891c69ef93753079a765d6ccc0424228a907b2a9..6b7d7276663c6390ef8b6851b96615c7ea7cee34 100644 (file)
@@ -39,7 +39,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <deal.II/multigrid/mg_dof_handler.h>
 #include <deal.II/multigrid/mg_dof_accessor.h>
@@ -60,7 +60,7 @@ namespace DoFTools
                          SparsityPattern        &sparsity,
                          const ConstraintMatrix &constraints,
                          const bool              keep_constrained_dofs,
-                         const types::subdomain_id_t subdomain_id)
+                         const types::subdomain_id subdomain_id)
   {
     const unsigned int n_dofs = dof.n_dofs();
 
@@ -123,7 +123,7 @@ namespace DoFTools
                          SparsityPattern         &sparsity,
                          const ConstraintMatrix  &constraints,
                          const bool               keep_constrained_dofs,
-                         const types::subdomain_id_t subdomain_id)
+                         const types::subdomain_id subdomain_id)
   {
     const unsigned int n_dofs = dof.n_dofs();
 
@@ -472,7 +472,7 @@ namespace DoFTools
     const unsigned int n_dofs = dof.n_dofs();
 
     AssertDimension (dof_to_boundary_mapping.size(), n_dofs);
-    Assert (boundary_indicators.find(types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find(numbers::internal_face_boundary_id) == boundary_indicators.end(),
             typename DH::ExcInvalidBoundaryIndicator());
     Assert (sparsity.n_rows() == dof.n_boundary_dofs (boundary_indicators),
             ExcDimensionMismatch (sparsity.n_rows(), dof.n_boundary_dofs (boundary_indicators)));
@@ -521,7 +521,7 @@ namespace DoFTools
                               SparsityPattern &sparsity,
                               const ConstraintMatrix &constraints,
                               const bool              keep_constrained_dofs,
-                              const types::subdomain_id_t subdomain_id)
+                              const types::subdomain_id subdomain_id)
   {
     const unsigned int n_dofs = dof.n_dofs();
 
@@ -3378,7 +3378,7 @@ namespace DoFTools
   template<typename DH>
   void
   make_periodicity_constraints (const DH                       &dof_handler,
-                                const types::boundary_id_t     boundary_component,
+                                const types::boundary_id     boundary_component,
                                 const int                      direction,
                                 dealii::ConstraintMatrix       &constraint_matrix,
                                 const std::vector<bool>        &component_mask)
@@ -3396,7 +3396,7 @@ namespace DoFTools
   template<typename DH>
   void
   make_periodicity_constraints (const DH                       &dof_handler,
-                                const types::boundary_id_t     boundary_component,
+                                const types::boundary_id     boundary_component,
                                 const int                      direction,
                                 dealii::Tensor<1,DH::space_dimension>
                                                                &offset,
@@ -3453,12 +3453,20 @@ namespace DoFTools
                                      // assignment is done by blocks, not by
                                      // components, as specified by
                                      // component_select. The additional argument
-                                     // component_select only is used for
+                                     // component_select is only used for
                                      // non-primitive FEs, where we need it since
                                      // more components couple, and no unique
                                      // component can be assigned. Then, we sort
                                      // them to the first selected component of the
                                      // vector system.
+                                    //
+                                    // the output array dofs_by_component
+                                    // lists for each dof the corresponding
+                                    // vector component. if the DoFHandler is
+                                    // based on a parallel distributed
+                                    // triangulation then the output array is
+                                    // index by
+                                    // dof.locally_owned_dofs().index_within_set(indices[i])
     template <class DH>
     inline
     void
@@ -3474,10 +3482,20 @@ namespace DoFTools
               ExcDimensionMismatch(dofs_by_component.size(),
                                    dof.n_locally_owned_dofs()));
 
-                                       // next set up a table for the
-                                       // degrees of freedom on each of
-                                       // the cells whether it is
-                                       // something interesting or not
+                                       // next set up a table for the degrees
+                                       // of freedom on each of the cells
+                                       // (regardless of the fact whether it
+                                       // is listed in the component_select
+                                       // argument or not)
+                                      //
+                                      // for each element 'f' of the
+                                      // FECollection,
+                                      // local_component_association[f][d]
+                                      // then returns the vector component
+                                      // that degree of freedom 'd' belongs
+                                      // to (or, in the case of
+                                      // sort_by_blocks, the block that it
+                                      // corresponds to)
       std::vector<std::vector<unsigned char> > local_component_association
         (fe_collection.size());
       for (unsigned int f=0; f<fe_collection.size(); ++f)
@@ -3486,12 +3504,16 @@ namespace DoFTools
             fe_collection[f];
           local_component_association[f].resize(fe.dofs_per_cell);
           if (sort_by_blocks == true)
+                                            // compute the block each
+                                            // local dof belongs to
             {
               for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
                 local_component_association[f][i]
                   = fe.system_to_block_index(i).first;
             }
           else
+                                            // compute the component each
+                                            // local dof belongs to
             for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
               if (fe.is_primitive(i))
                 local_component_association[f][i] =
@@ -3896,7 +3918,7 @@ namespace DoFTools
   extract_boundary_dofs (const DH                      &dof_handler,
                          const std::vector<bool>       &component_select,
                          std::vector<bool>             &selected_dofs,
-                         const std::set<types::boundary_id_t> &boundary_indicators)
+                         const std::set<types::boundary_id> &boundary_indicators)
   {
     Assert ((dynamic_cast<const parallel::distributed::Triangulation<DH::dimension,DH::space_dimension>*>
              (&dof_handler.get_tria())
@@ -3923,10 +3945,10 @@ namespace DoFTools
   extract_boundary_dofs (const DH                      &dof_handler,
                          const std::vector<bool>       &component_select,
                          IndexSet             &selected_dofs,
-                         const std::set<types::boundary_id_t> &boundary_indicators)
+                         const std::set<types::boundary_id> &boundary_indicators)
   {
     AssertDimension (component_select.size(), n_components(dof_handler));
-    Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find (numbers::internal_face_boundary_id) == boundary_indicators.end(),
             ExcInvalidBoundaryIndicator());
     const unsigned int dim=DH::dimension;
 
@@ -4051,10 +4073,10 @@ namespace DoFTools
   extract_dofs_with_support_on_boundary (const DH                      &dof_handler,
                                          const std::vector<bool>       &component_select,
                                          std::vector<bool>             &selected_dofs,
-                                         const std::set<types::boundary_id_t> &boundary_indicators)
+                                         const std::set<types::boundary_id> &boundary_indicators)
   {
     AssertDimension (component_select.size(), n_components(dof_handler));
-    Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find (numbers::internal_face_boundary_id) == boundary_indicators.end(),
             ExcInvalidBoundaryIndicator());
 
                                      // let's see whether we have to
@@ -4284,7 +4306,7 @@ namespace DoFTools
   template <class DH>
   void
   extract_subdomain_dofs (const DH                   &dof_handler,
-                          const types::subdomain_id_t subdomain_id,
+                          const types::subdomain_id subdomain_id,
                           std::vector<bool>          &selected_dofs)
   {
     Assert(selected_dofs.size() == dof_handler.n_dofs(),
@@ -4469,7 +4491,7 @@ namespace DoFTools
   template <class DH>
   void
   get_subdomain_association (const DH                  &dof_handler,
-                             std::vector<types::subdomain_id_t> &subdomain_association)
+                             std::vector<types::subdomain_id> &subdomain_association)
   {
                                      // if the Triangulation is distributed, the
                                      // only thing we can usefully ask is for
@@ -4511,7 +4533,7 @@ namespace DoFTools
                 ExcMessage ("You can't call this function for meshes that "
                             "have artificial cells."));
 
-        const types::subdomain_id_t subdomain_id = cell->subdomain_id();
+        const types::subdomain_id subdomain_id = cell->subdomain_id();
         const unsigned int dofs_per_cell = cell->get_fe().dofs_per_cell;
         local_dof_indices.resize (dofs_per_cell);
         cell->get_dof_indices (local_dof_indices);
@@ -4550,9 +4572,9 @@ namespace DoFTools
   template <class DH>
   unsigned int
   count_dofs_with_subdomain_association (const DH           &dof_handler,
-                                         const types::subdomain_id_t subdomain)
+                                         const types::subdomain_id subdomain)
   {
-    std::vector<types::subdomain_id_t> subdomain_association (dof_handler.n_dofs());
+    std::vector<types::subdomain_id> subdomain_association (dof_handler.n_dofs());
     get_subdomain_association (dof_handler, subdomain_association);
 
     return std::count (subdomain_association.begin(),
@@ -4565,7 +4587,7 @@ namespace DoFTools
   template <class DH>
   IndexSet
   dof_indices_with_subdomain_association (const DH           &dof_handler,
-                                          const types::subdomain_id_t subdomain)
+                                          const types::subdomain_id subdomain)
   {
 
                                      // If we have a distributed::Triangulation only
@@ -4626,7 +4648,7 @@ namespace DoFTools
   template <class DH>
   void
   count_dofs_with_subdomain_association (const DH           &dof_handler,
-                                         const types::subdomain_id_t subdomain,
+                                         const types::subdomain_id subdomain,
                                          std::vector<unsigned int> &n_dofs_on_subdomain)
   {
     Assert (n_dofs_on_subdomain.size() == dof_handler.get_fe().n_components(),
@@ -4653,7 +4675,7 @@ namespace DoFTools
     }
 #endif
 
-    std::vector<types::subdomain_id_t> subdomain_association (dof_handler.n_dofs());
+    std::vector<types::subdomain_id> subdomain_association (dof_handler.n_dofs());
     get_subdomain_association (dof_handler, subdomain_association);
 
     std::vector<unsigned char> component_association (dof_handler.n_dofs());
@@ -4872,8 +4894,10 @@ namespace DoFTools
   void
   count_dofs_per_block (const DH &dof_handler,
                         std::vector<unsigned int> &dofs_per_block,
-                        std::vector<unsigned int>  target_block)
+                        const std::vector<unsigned int>  &target_block_)
   {
+    std::vector<unsigned int>  target_block = target_block_;
+
     const dealii::hp::FECollection<DH::dimension,DH::space_dimension>
       fe_collection (dof_handler.get_fe());
     Assert (fe_collection.size() < 256, ExcNotImplemented());
@@ -5847,11 +5871,11 @@ namespace DoFTools
   template <class DH>
   void map_dof_to_boundary_indices (
     const DH                      &dof_handler,
-    const std::set<types::boundary_id_t> &boundary_indicators,
+    const std::set<types::boundary_id> &boundary_indicators,
     std::vector<unsigned int>     &mapping)
   {
     Assert (&dof_handler.get_fe() != 0, ExcNoFESelected());
-    Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find (numbers::internal_face_boundary_id) == boundary_indicators.end(),
             ExcInvalidBoundaryIndicator());
 
     mapping.clear ();
index 5d7124b652a1c58b5a5afa681b15054a196ff562..f1ecde11e7a751498893f0eb046a3f16e15f3b0f 100644 (file)
@@ -331,7 +331,7 @@ for (DH : DOFHANDLERS; deal_II_dimension : DIMENSIONS)
   template
   void
   DoFTools::make_periodicity_constraints(const DH &,
-                                         const types::boundary_id_t,
+                                         const types::boundary_id,
                                          const int,
                                          dealii::ConstraintMatrix &,
                                          const std::vector<bool> &);
@@ -339,7 +339,7 @@ for (DH : DOFHANDLERS; deal_II_dimension : DIMENSIONS)
   template
   void
   DoFTools::make_periodicity_constraints(const DH &,
-                                         const types::boundary_id_t,
+                                         const types::boundary_id,
                                          const int,
                                          dealii::Tensor<1,DH::space_dimension> &,
                                          dealii::ConstraintMatrix &,
@@ -437,14 +437,14 @@ DoFTools::extract_boundary_dofs<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
  const std::vector<bool>                  &,
  std::vector<bool>                        &,
- const std::set<types::boundary_id_t> &);
+ const std::set<types::boundary_id> &);
 template
 void
 DoFTools::extract_boundary_dofs<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
  const std::vector<bool>                  &,
  std::vector<bool>                        &,
- const std::set<types::boundary_id_t> &);
+ const std::set<types::boundary_id> &);
 
 template
 void
@@ -452,14 +452,14 @@ DoFTools::extract_dofs_with_support_on_boundary<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
  const std::vector<bool>                  &,
  std::vector<bool>                        &,
- const std::set<types::boundary_id_t> &);
+ const std::set<types::boundary_id> &);
 template
 void
 DoFTools::extract_dofs_with_support_on_boundary<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
  const std::vector<bool>                  &,
  std::vector<bool>                        &,
- const std::set<types::boundary_id_t> &);
+ const std::set<types::boundary_id> &);
 
 template
 void
@@ -471,13 +471,13 @@ template
 void
 DoFTools::extract_subdomain_dofs<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &dof_handler,
- const types::subdomain_id_t  subdomain_id,
+ const types::subdomain_id  subdomain_id,
  std::vector<bool>     &selected_dofs);
 template
 void
 DoFTools::extract_subdomain_dofs<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &dof_handler,
- const types::subdomain_id_t subdomain_id,
+ const types::subdomain_id subdomain_id,
  std::vector<bool>     &selected_dofs);
 
 template
@@ -529,46 +529,46 @@ template
 void
 DoFTools::get_subdomain_association<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 template
 void
 DoFTools::get_subdomain_association<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 
 
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 
 #if deal_II_dimension < 3
@@ -578,52 +578,52 @@ DoFTools::extract_boundary_dofs<DoFHandler<deal_II_dimension,deal_II_dimension+1
   (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
    const std::vector<bool>                  &,
    std::vector<bool>                        &,
-   const std::set<types::boundary_id_t> &);
+   const std::set<types::boundary_id> &);
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 
 template
 void
 DoFTools::get_subdomain_association<DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 template
 void
 DoFTools::get_subdomain_association<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 
 template
 void
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 #endif
 
@@ -634,51 +634,51 @@ DoFTools::extract_boundary_dofs<DoFHandler<1,3> >
   (const DoFHandler<1,3> &,
    const std::vector<bool>                  &,
    std::vector<bool>                        &,
-   const std::set<types::boundary_id_t> &);
+   const std::set<types::boundary_id> &);
 
 template
 void
 DoFTools::get_subdomain_association<DoFHandler<1,3> >
 (const DoFHandler<1,3> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 template
 void
 DoFTools::get_subdomain_association<hp::DoFHandler<1,3> >
 (const hp::DoFHandler<1,3> &dof_handler,
- std::vector<types::subdomain_id_t>           &subdomain_association);
+ std::vector<types::subdomain_id>           &subdomain_association);
 
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<1,3> >
 (const DoFHandler<1,3> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<DoFHandler<1,3> >
 (const DoFHandler<1,3> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<DoFHandler<1,3> >
 (const DoFHandler<1,3> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 
 template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<1,3> >
 (const hp::DoFHandler<1,3> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<hp::DoFHandler<1,3> >
 (const hp::DoFHandler<1,3> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<hp::DoFHandler<1,3> >
 (const hp::DoFHandler<1,3> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 #endif
 
@@ -688,17 +688,17 @@ template
 unsigned int
 DoFTools::count_dofs_with_subdomain_association<MGDoFHandler<deal_II_dimension> >
 (const MGDoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 IndexSet
 DoFTools::dof_indices_with_subdomain_association<MGDoFHandler<deal_II_dimension> >
 (const MGDoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t);
+ const types::subdomain_id);
 template
 void
 DoFTools::count_dofs_with_subdomain_association<MGDoFHandler<deal_II_dimension> >
 (const MGDoFHandler<deal_II_dimension> &,
- const types::subdomain_id_t,
+ const types::subdomain_id,
  std::vector<unsigned int> &);
 
 
@@ -763,19 +763,22 @@ template
 void
 DoFTools::count_dofs_per_block<DoFHandler<deal_II_dimension> > (
   const DoFHandler<deal_II_dimension>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<hp::DoFHandler<deal_II_dimension> > (
   const hp::DoFHandler<deal_II_dimension>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<MGDoFHandler<deal_II_dimension> > (
   const MGDoFHandler<deal_II_dimension>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
@@ -804,7 +807,7 @@ template
 void
 DoFTools::map_dof_to_boundary_indices<DoFHandler<deal_II_dimension> >
 (const DoFHandler<deal_II_dimension> &,
- const std::set<types::boundary_id_t> &,
+ const std::set<types::boundary_id> &,
  std::vector<unsigned int> &);
 
 template
@@ -819,7 +822,7 @@ template
 void
 DoFTools::map_dof_to_boundary_indices<hp::DoFHandler<deal_II_dimension> >
 (const hp::DoFHandler<deal_II_dimension> &,
- const std::set<types::boundary_id_t> &,
+ const std::set<types::boundary_id> &,
  std::vector<unsigned int> &);
 
 template
@@ -896,19 +899,22 @@ template
 void
 DoFTools::count_dofs_per_block<DoFHandler<deal_II_dimension,deal_II_dimension+1> > (
   const DoFHandler<deal_II_dimension,deal_II_dimension+1>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> > (
   const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<MGDoFHandler<deal_II_dimension,deal_II_dimension+1> > (
   const MGDoFHandler<deal_II_dimension,deal_II_dimension+1>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 #endif
 
@@ -926,19 +932,22 @@ template
 void
 DoFTools::count_dofs_per_block<DoFHandler<1,3> > (
   const DoFHandler<1,3>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<hp::DoFHandler<1,3> > (
   const hp::DoFHandler<1,3>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 template
 void
 DoFTools::count_dofs_per_block<MGDoFHandler<1,3> > (
   const MGDoFHandler<1,3>&,
-  std::vector<unsigned int>&, std::vector<unsigned int>);
+  std::vector<unsigned int>&,
+  const std::vector<unsigned int> &);
 
 #endif
 
@@ -974,7 +983,7 @@ template
 void
 DoFTools::map_dof_to_boundary_indices<DoFHandler<deal_II_dimension,deal_II_dimension+1> >
 (const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
- const std::set<types::boundary_id_t> &,
+ const std::set<types::boundary_id> &,
  std::vector<unsigned int> &);
 
 template
@@ -994,7 +1003,7 @@ DoFTools::extract_hanging_node_dofs
  void
  DoFTools::map_dof_to_boundary_indices<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >
  (const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
-  const std::set<types::boundary_id_t> &,
+  const std::set<types::boundary_id> &,
   std::vector<unsigned int> &);
 
  template
@@ -1011,7 +1020,7 @@ template
 void
 DoFTools::map_dof_to_boundary_indices<DoFHandler<1,3> >
 (const DoFHandler<1,3> &,
- const std::set<types::boundary_id_t> &,
+ const std::set<types::boundary_id> &,
  std::vector<unsigned int> &);
 
 template
index 15fe75d4cacbbf507b71cefd59b59d18efc37e24..847884cc7e9668b9059f4db3a739417f9dc35b1e 100644 (file)
@@ -130,6 +130,7 @@ FiniteElement<dim,spacedim>::FiniteElement (
                                    // assume that all entries were
                                    // supposed to be equal.
 
+//TODO: Do the following in a better way by expanding these arrays in the member initializer section above
                                    // Normally, we should be careful
                                    // with const_cast, but since this
                                    // is the constructor and we do it
@@ -756,7 +757,7 @@ FiniteElement<dim,spacedim>::has_generalized_support_points () const
 
 template <int dim, int spacedim>
 Point<dim>
-FiniteElement<dim,spacedim>::unit_support_point (const unsigned index) const
+FiniteElement<dim,spacedim>::unit_support_point (const unsigned int index) const
 {
   Assert (index < this->dofs_per_cell,
           ExcIndexRange (index, 0, this->dofs_per_cell));
@@ -818,7 +819,7 @@ FiniteElement<dim,spacedim>::has_generalized_face_support_points () const
 
 template <int dim, int spacedim>
 Point<dim-1>
-FiniteElement<dim,spacedim>::unit_face_support_point (const unsigned index) const
+FiniteElement<dim,spacedim>::unit_face_support_point (const unsigned int index) const
 {
   Assert (index < this->dofs_per_face,
           ExcIndexRange (index, 0, this->dofs_per_face));
@@ -1159,7 +1160,7 @@ FiniteElement<dim,spacedim>::get_subface_data (const UpdateFlags        flags,
 
 template <int dim, int spacedim>
 const FiniteElement<dim,spacedim>&
-FiniteElement<dim,spacedim>::base_element(const unsigned index) const
+FiniteElement<dim,spacedim>::base_element(const unsigned int index) const
 {
   Assert (index==0, ExcIndexRange(index,0,1));
                                    // This function should not be
index 296a00749cd468260a5c2c164f238fb4fe33927d..1d20185a11ccfa5338f7575d445ddb8134f5b29c 100644 (file)
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_tools.h>
 
-#ifdef HAVE_STD_STRINGSTREAM
-#  include <sstream>
-#else
-#  include <strstream>
-#endif
-
+#include <sstream>
 #include <iostream>
 
 //TODO: implement the adjust_quad_dof_index_for_face_orientation_table and
@@ -118,17 +113,10 @@ FE_ABF<dim>::get_name () const
                                    // this function returns, so they
                                    // have to be kept in synch
 
-#ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
-#else
-  std::ostrstream namebuf;
-#endif
 
   namebuf << "FE_ABF<" << dim << ">(" << rt_order << ")";
 
-#ifndef HAVE_STD_STRINGSTREAM
-  namebuf << std::ends;
-#endif
   return namebuf.str();
 }
 
@@ -590,15 +578,15 @@ FE_ABF<dim>::interpolate(
                          * values[face*n_face_points+k](GeometryInfo<dim>::unit_normal_direction[face]+offset);
       }
 
-  const unsigned start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
-  const unsigned start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
+  const unsigned int start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
+  const unsigned int start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
 
   for (unsigned int k=0;k<interior_weights.size(0);++k)
     for (unsigned int i=0;i<interior_weights.size(1);++i)
       for (unsigned int d=0;d<dim;++d)
         local_dofs[start_cell_dofs+i*dim+d] += interior_weights(k,i,d) * values[k+start_cell_points](d+offset);
 
-  const unsigned start_abf_dofs = start_cell_dofs + interior_weights.size(1) * dim;
+  const unsigned int start_abf_dofs = start_cell_dofs + interior_weights.size(1) * dim;
 
   // Cell integral of ABF terms
   for (unsigned int k=0;k<interior_weights_abf.size(0);++k)
@@ -650,15 +638,15 @@ FE_ABF<dim>::interpolate(
                          * values[GeometryInfo<dim>::unit_normal_direction[face]][face*n_face_points+k];
       }
 
-  const unsigned start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
-  const unsigned start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
+  const unsigned int start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
+  const unsigned int start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
 
   for (unsigned int k=0;k<interior_weights.size(0);++k)
     for (unsigned int i=0;i<interior_weights.size(1);++i)
       for (unsigned int d=0;d<dim;++d)
         local_dofs[start_cell_dofs+i*dim+d] += interior_weights(k,i,d) * values[d][k+start_cell_points];
 
-  const unsigned start_abf_dofs = start_cell_dofs + interior_weights.size(1) * dim;
+  const unsigned int start_abf_dofs = start_cell_dofs + interior_weights.size(1) * dim;
 
   // Cell integral of ABF terms
   for (unsigned int k=0;k<interior_weights_abf.size(0);++k)
index e1c05bb37bc219c9f79e2929b04476c87fb98933..d54dc15eaabecedacea01595addc090ebcc3851d 100644 (file)
@@ -3258,7 +3258,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                    * n_edge_points],
                                   1);
 
-                    for (unsigned i = 0; i < this->degree; ++i)
+                    for (unsigned int i = 0; i < this->degree; ++i)
                       for (unsigned int j = 0; j < this->degree-1; ++j)
                         system_rhs (i * (this->degree-1) + j)
                           += reference_quadrature.weight (q_point) * tmp
@@ -3578,7 +3578,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                * n_edge_points],
                                               2);
 
-                                for (unsigned i = 0; i < this->degree; ++i)
+                                for (unsigned int i = 0; i < this->degree; ++i)
                                   for (unsigned int j = 0; j < this->degree-1; ++j)
                                     system_rhs (i * (this->degree-1) + j)
                                       += boundary_weights
@@ -3686,7 +3686,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                + n_face_points],
                                               2);
 
-                                for (unsigned i = 0; i <= deg; ++i)
+                                for (unsigned int i = 0; i <= deg; ++i)
                                   for (unsigned int j = 0; j < deg; ++j)
                                     system_rhs (i * deg + j)
                                       += boundary_weights
@@ -3742,7 +3742,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                 * n_face_points],
                                                2);
 
-                                    for (unsigned i = 0; i <= deg; ++i)
+                                    for (unsigned int i = 0; i <= deg; ++i)
                                       for (unsigned int j = 0; j < deg; ++j)
                                         system_rhs (i * deg + j)
                                           += boundary_weights
@@ -3850,7 +3850,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                 * n_face_points],
                                                2);
 
-                                    for (unsigned i = 0; i <= deg; ++i)
+                                    for (unsigned int i = 0; i <= deg; ++i)
                                       for (unsigned int j = 0; j < deg; ++j)
                                         system_rhs (i * deg + j)
                                           += boundary_weights
@@ -4013,7 +4013,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                    * n_face_points],
                                                   1);
 
-                                    for (unsigned i = 0; i <= deg; ++i)
+                                    for (unsigned int i = 0; i <= deg; ++i)
                                       for (unsigned int j = 0; j < deg; ++j)
                                         system_rhs (i * deg + j)
                                           += boundary_weights
@@ -4125,7 +4125,7 @@ FE_Nedelec<dim>::interpolate (std::vector<double>& local_dofs,
                                                                                  * n_face_points],
                                                 1);
 
-                                  for (unsigned i = 0; i <= deg; ++i)
+                                  for (unsigned int i = 0; i <= deg; ++i)
                                     for (unsigned int j = 0; j < deg; ++j)
                                       system_rhs (i * deg + j)
                                         += boundary_weights
@@ -4794,7 +4794,7 @@ const
                                                                  * n_edge_points],
                                 1);
 
-                  for (unsigned i = 0; i <= deg; ++i)
+                  for (unsigned int i = 0; i <= deg; ++i)
                     for (unsigned int j = 0; j < deg; ++j)
                       system_rhs (i * deg + j)
                         += reference_quadrature.weight (q_point) * tmp
@@ -5074,7 +5074,7 @@ const
                                                                      * n_edge_points],
                                     face_coordinates[face][1]);
 
-                      for (unsigned i = 0; i <= deg; ++i)
+                      for (unsigned int i = 0; i <= deg; ++i)
                         for (unsigned int j = 0; j < deg; ++j)
                           system_rhs (i * deg + j)
                             += boundary_weights (q_point + n_edge_points,
index b64b834384dd535486bdcd342f8ced9a46611455..8560468828733fdba627cbf4b8a4ac8d56a2e062 100644 (file)
@@ -25,7 +25,7 @@ namespace
 
 
 template <int dim>
-FE_Nothing<dim>::FE_Nothing (const unsigned n_components)
+FE_Nothing<dim>::FE_Nothing (const unsigned int n_components)
                 :
                 FiniteElement<dim>
                 (FiniteElementData<dim>(std::vector<unsigned>(dim+1,0),
index 7a931ae2643fb71e18eb392cab71e40921c4ddf9..e1ee4ce1b5861825084e1c1fd2cf6fc685ee55fc 100644 (file)
@@ -281,7 +281,7 @@ struct FE_Q<xdim,xspacedim>::Implementation
           .TableBase<2,double>::reinit (fe.interface_constraints_size());
 
         for (unsigned int i=0; i<constraint_points.size(); ++i)
-          for (unsigned j=0; j<fe.degree+1; ++j)
+          for (unsigned int j=0; j<fe.degree+1; ++j)
             {
               fe.interface_constraints(i,j) =
                 polynomials[fe.face_index_map[j]].value (constraint_points[i](0));
@@ -484,7 +484,7 @@ struct FE_Q<xdim,xspacedim>::Implementation
                   constraint_point(k) = 1.0 - constraint_point(k);
               }
 
-            for (unsigned j=0; j<pnts; ++j)
+            for (unsigned int j=0; j<pnts; ++j)
               {
                 unsigned int indices[2]
                   = { fe.face_index_map[j] % (fe.degree + 1),
index 543a2ca0a8178fe05352acdfd4bcbcbb91105dbe..8e60ee549b7a11412f9488067ce3c6df0ee2bb97 100644 (file)
@@ -484,8 +484,8 @@ FE_RaviartThomas<dim>::interpolate(
                          * values[face*n_face_points+k](GeometryInfo<dim>::unit_normal_direction[face]+offset);
       }
 
-  const unsigned start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
-  const unsigned start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
+  const unsigned int start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
+  const unsigned int start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
 
   for (unsigned int k=0;k<interior_weights.size(0);++k)
     for (unsigned int i=0;i<interior_weights.size(1);++i)
@@ -518,8 +518,8 @@ FE_RaviartThomas<dim>::interpolate(
                          * values[GeometryInfo<dim>::unit_normal_direction[face]][face*n_face_points+k];
       }
 
-  const unsigned start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
-  const unsigned start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
+  const unsigned int start_cell_dofs = GeometryInfo<dim>::faces_per_cell*this->dofs_per_face;
+  const unsigned int start_cell_points = GeometryInfo<dim>::faces_per_cell*n_face_points;
 
   for (unsigned int k=0;k<interior_weights.size(0);++k)
     for (unsigned int i=0;i<interior_weights.size(1);++i)
index a4eac7d0e58b48f60d980dfe7b3f47fbe6b51f82..44ece19d54821ed6a44b786718954e2c95596880 100644 (file)
@@ -343,7 +343,7 @@ FESystem<dim,spacedim>::~FESystem ()
 {
                                    // delete base elements created in
                                    // the constructor
-  for (unsigned i=0; i<base_elements.size(); ++i)
+  for (unsigned int i=0; i<base_elements.size(); ++i)
     {
       base_elements[i].first->unsubscribe(typeid(*this).name());
       delete base_elements[i].first;
@@ -1242,7 +1242,7 @@ FESystem<dim,spacedim>::build_cell_tables()
   this->system_to_component_table.resize(this->dofs_per_cell);
   this->face_system_to_component_table.resize(this->dofs_per_face);
 
-  unsigned total_index = 0;
+  unsigned int total_index = 0;
   this->block_indices_data.reinit(0,0);
 
   for (unsigned int base=0; base < this->n_base_elements(); ++base)
@@ -1275,7 +1275,7 @@ FESystem<dim,spacedim>::build_cell_tables()
        vertex_number<GeometryInfo<dim>::vertices_per_cell;
        ++vertex_number)
     {
-      unsigned comp_start = 0;
+      unsigned int comp_start = 0;
       for(unsigned int base=0; base<this->n_base_elements(); ++base)
         for (unsigned int m=0; m<this->element_multiplicity(base);
              ++m, comp_start+=base_element(base).n_components())
@@ -1312,7 +1312,7 @@ FESystem<dim,spacedim>::build_cell_tables()
          line_number != GeometryInfo<dim>::lines_per_cell;
          ++line_number)
       {
-        unsigned comp_start = 0;
+        unsigned int comp_start = 0;
         for (unsigned int base=0; base<this->n_base_elements(); ++base)
           for (unsigned int m=0; m<this->element_multiplicity(base);
                ++m, comp_start+=base_element(base).n_components())
@@ -1507,15 +1507,15 @@ FESystem<dim,spacedim>::build_face_tables()
 
                                    // 2. Lines
   if (GeometryInfo<dim>::lines_per_face > 0)
-    for (unsigned line_number= 0;
+    for (unsigned int line_number= 0;
          line_number != GeometryInfo<dim>::lines_per_face;
          ++line_number)
       {
-        unsigned comp_start = 0;
-        for(unsigned base = 0; base < this->n_base_elements(); ++base)
-          for (unsigned m=0; m<this->element_multiplicity(base);
+        unsigned int comp_start = 0;
+        for(unsigned int base = 0; base < this->n_base_elements(); ++base)
+          for (unsigned int m=0; m<this->element_multiplicity(base);
                ++m, comp_start += base_element(base).n_components())
-            for (unsigned local_index = 0;
+            for (unsigned int local_index = 0;
                  local_index < base_element(base).dofs_per_line;
                  ++local_index, ++total_index)
               {
@@ -1553,15 +1553,15 @@ FESystem<dim,spacedim>::build_face_tables()
 
                                    // 3. Quads
   if (GeometryInfo<dim>::quads_per_face > 0)
-    for (unsigned quad_number= 0;
+    for (unsigned int quad_number= 0;
          quad_number != GeometryInfo<dim>::quads_per_face;
          ++quad_number)
       {
-        unsigned comp_start = 0;
-        for(unsigned base=0; base<this->n_base_elements(); ++base)
-          for (unsigned m=0; m<this->element_multiplicity(base);
+        unsigned int comp_start = 0;
+        for(unsigned int base=0; base<this->n_base_elements(); ++base)
+          for (unsigned int m=0; m<this->element_multiplicity(base);
                ++m, comp_start += base_element(base).n_components())
-            for (unsigned local_index = 0;
+            for (unsigned int local_index = 0;
                  local_index < base_element(base).dofs_per_quad;
                  ++local_index, ++total_index)
               {
@@ -3294,7 +3294,7 @@ compute_nonzero_components (const std::vector<const FiniteElement<dim,spacedim>*
        vertex_number<GeometryInfo<dim>::vertices_per_cell;
        ++vertex_number)
     {
-      unsigned comp_start = 0;
+      unsigned int comp_start = 0;
       for(unsigned int base=0; base<fes.size(); ++base)
         for (unsigned int m=0; m<multiplicities[base];
              ++m, comp_start+=fes[base]->n_components())
@@ -3327,7 +3327,7 @@ compute_nonzero_components (const std::vector<const FiniteElement<dim,spacedim>*
          line_number != GeometryInfo<dim>::lines_per_cell;
          ++line_number)
       {
-        unsigned comp_start = 0;
+        unsigned int comp_start = 0;
         for (unsigned int base=0; base<fes.size(); ++base)
           for (unsigned int m=0; m<multiplicities[base];
                ++m, comp_start+=fes[base]->n_components())
@@ -3456,7 +3456,7 @@ FESystem<dim,spacedim>::has_support_on_face (const unsigned int shape_index,
 
 template <int dim, int spacedim>
 Point<dim>
-FESystem<dim,spacedim>::unit_support_point (const unsigned index) const
+FESystem<dim,spacedim>::unit_support_point (const unsigned int index) const
 {
   Assert (index < this->dofs_per_cell,
           ExcIndexRange (index, 0, this->dofs_per_cell));
@@ -3481,7 +3481,7 @@ FESystem<dim,spacedim>::unit_support_point (const unsigned index) const
 
 template <int dim, int spacedim>
 Point<dim-1>
-FESystem<dim,spacedim>::unit_face_support_point (const unsigned index) const
+FESystem<dim,spacedim>::unit_face_support_point (const unsigned int index) const
 {
   Assert (index < this->dofs_per_face,
           ExcIndexRange (index, 0, this->dofs_per_face));
index 679aa7edf1aadeab05126a3860a2b19dbd53b71c..cd7d7a28f9841601f0ad6c937ed25a83d98b30c5 100644 (file)
@@ -1350,7 +1350,7 @@ namespace FETools
                                    // we can only interpolate u1 on
                                    // a cell, which this processor owns,
                                    // so we have to know the subdomain_id
-    const types::subdomain_id_t subdomain_id =
+    const types::subdomain_id subdomain_id =
       dof1.get_tria().locally_owned_subdomain();
 
     for (; cell1!=endc1; ++cell1, ++cell2)
@@ -1498,7 +1498,7 @@ namespace FETools
     Vector<typename OutVector::value_type> u1_local(dofs_per_cell1);
     Vector<typename OutVector::value_type> u1_int_local(dofs_per_cell1);
 
-    const types::subdomain_id_t subdomain_id =
+    const types::subdomain_id subdomain_id =
       dof1.get_tria().locally_owned_subdomain();
 
     typename DoFHandler<dim,spacedim>::active_cell_iterator cell = dof1.begin_active(),
@@ -1568,7 +1568,7 @@ namespace FETools
     Vector<typename OutVector::value_type> u1_local(DoFTools::max_dofs_per_cell(dof1));
     Vector<typename OutVector::value_type> u1_int_local(DoFTools::max_dofs_per_cell(dof1));
 
-    const types::subdomain_id_t subdomain_id =
+    const types::subdomain_id subdomain_id =
       dof1.get_tria().locally_owned_subdomain();
 
     typename DH<dim>::active_cell_iterator cell = dof1.begin_active(),
@@ -1744,7 +1744,7 @@ namespace FETools
     Vector<typename OutVector::value_type> u1_local(dofs_per_cell);
     Vector<typename OutVector::value_type> u1_diff_local(dofs_per_cell);
 
-    const types::subdomain_id_t subdomain_id =
+    const types::subdomain_id subdomain_id =
       dof1.get_tria().locally_owned_subdomain();
 
     FullMatrix<double> difference_matrix(dofs_per_cell, dofs_per_cell);
index a839d72159e169ad77faea960d4ae8ca0bd976d0..36e75525795988b3d5f3fbff3a1bebc0c8cad16e 100644 (file)
@@ -1967,7 +1967,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
                                    // Assert that we can write all
                                    // components into the result
                                    // vectors
-  for (unsigned i=0;i<values.size();++i)
+  for (unsigned int i=0;i<values.size();++i)
     Assert (values[i].size() == n_components,
             ExcDimensionMismatch(values[i].size(), n_components));
 
@@ -1981,7 +1981,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
                                    // initialize with zero
-  for (unsigned i=0;i<values.size();++i)
+  for (unsigned int i=0;i<values.size();++i)
     std::fill_n (values[i].begin(), values[i].size(), 0);
 
                                    // add up contributions of trial
@@ -2087,7 +2087,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
                                    // finite element
   const unsigned int result_components = indices.size() * n_components / dofs_per_cell;
 
-  for (unsigned i=0;i<values.size();++i)
+  for (unsigned int i=0;i<values.size();++i)
     Assert (values[i].size() == result_components,
             ExcDimensionMismatch(values[i].size(), result_components));
 
@@ -2100,7 +2100,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
 
                                    // initialize with zero
-  for (unsigned i=0;i<values.size();++i)
+  for (unsigned int i=0;i<values.size();++i)
     std::fill_n (values[i].begin(), values[i].size(), 0);
 
                                    // add up contributions of trial
@@ -2182,7 +2182,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
     {
       Assert (values.size() == result_components,
               ExcDimensionMismatch(values.size(), result_components));
-      for (unsigned i=0;i<values.size();++i)
+      for (unsigned int i=0;i<values.size();++i)
         Assert (values[i].size() == n_quadrature_points,
                 ExcDimensionMismatch(values[i].size(), n_quadrature_points));
     }
@@ -2190,7 +2190,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
     {
       Assert(values.size() == n_quadrature_points,
              ExcDimensionMismatch(values.size(), n_quadrature_points));
-      for (unsigned i=0;i<values.size();++i)
+      for (unsigned int i=0;i<values.size();++i)
         Assert (values[i].size() == result_components,
                 ExcDimensionMismatch(values[i].size(), result_components));
     }
@@ -2204,7 +2204,7 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
 
                                    // initialize with zero
-  for (unsigned i=0;i<values.size();++i)
+  for (unsigned int i=0;i<values.size();++i)
     std::fill_n (values[i].begin(), values[i].size(), 0);
 
                                    // add up contributions of trial
@@ -2401,7 +2401,7 @@ FEValuesBase<dim,spacedim>::get_function_gradients (
           ExcDimensionMismatch(gradients.size(), n_quadrature_points));
 
   const unsigned int n_components = fe->n_components();
-  for (unsigned i=0; i<gradients.size(); ++i)
+  for (unsigned int i=0; i<gradients.size(); ++i)
     Assert (gradients[i].size() == n_components,
             ExcDimensionMismatch(gradients[i].size(), n_components));
 
@@ -2418,7 +2418,7 @@ FEValuesBase<dim,spacedim>::get_function_gradients (
   present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
                                    // initialize with zero
-  for (unsigned i=0;i<gradients.size();++i)
+  for (unsigned int i=0;i<gradients.size();++i)
     std::fill_n (gradients[i].begin(), gradients[i].size(), Tensor<1,spacedim>());
 
                                    // add up contributions of trial
@@ -2498,7 +2498,7 @@ void FEValuesBase<dim,spacedim>::get_function_gradients (
     {
       Assert (gradients.size() == result_components,
               ExcDimensionMismatch(gradients.size(), result_components));
-      for (unsigned i=0;i<gradients.size();++i)
+      for (unsigned int i=0;i<gradients.size();++i)
         Assert (gradients[i].size() == n_quadrature_points,
                 ExcDimensionMismatch(gradients[i].size(), n_quadrature_points));
     }
@@ -2506,7 +2506,7 @@ void FEValuesBase<dim,spacedim>::get_function_gradients (
     {
       Assert(gradients.size() == n_quadrature_points,
              ExcDimensionMismatch(gradients.size(), n_quadrature_points));
-      for (unsigned i=0;i<gradients.size();++i)
+      for (unsigned int i=0;i<gradients.size();++i)
         Assert (gradients[i].size() == result_components,
                 ExcDimensionMismatch(gradients[i].size(), result_components));
     }
@@ -2520,7 +2520,7 @@ void FEValuesBase<dim,spacedim>::get_function_gradients (
   Assert (this->update_flags & update_gradients, ExcAccessToUninitializedField());
 
                                    // initialize with zero
-  for (unsigned i=0;i<gradients.size();++i)
+  for (unsigned int i=0;i<gradients.size();++i)
     std::fill_n (gradients[i].begin(), gradients[i].size(), Tensor<1,spacedim>());
 
                                    // add up contributions of trial
@@ -2686,7 +2686,7 @@ get_function_hessians (const InputVector                         &fe_function,
           ExcDimensionMismatch(hessians.size(), n_quadrature_points));
 
   const unsigned int n_components = fe->n_components();
-  for (unsigned i=0;i<hessians.size();++i)
+  for (unsigned int i=0;i<hessians.size();++i)
     Assert (hessians[i].size() == n_components,
             ExcDimensionMismatch(hessians[i].size(), n_components));
 
@@ -2703,7 +2703,7 @@ get_function_hessians (const InputVector                         &fe_function,
   present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
                                    // initialize with zero
-  for (unsigned i=0;i<hessians.size();++i)
+  for (unsigned int i=0;i<hessians.size();++i)
     std::fill_n (hessians[i].begin(), hessians[i].size(), Tensor<2,spacedim>());
 
                                    // add up contributions of trial
@@ -2791,7 +2791,7 @@ void FEValuesBase<dim, spacedim>::get_function_hessians (
     {
       Assert (hessians.size() == result_components,
               ExcDimensionMismatch(hessians.size(), result_components));
-      for (unsigned i=0;i<hessians.size();++i)
+      for (unsigned int i=0;i<hessians.size();++i)
         Assert (hessians[i].size() == n_quadrature_points,
                 ExcDimensionMismatch(hessians[i].size(), n_quadrature_points));
     }
@@ -2799,7 +2799,7 @@ void FEValuesBase<dim, spacedim>::get_function_hessians (
     {
       Assert(hessians.size() == n_quadrature_points,
              ExcDimensionMismatch(hessians.size(), n_quadrature_points));
-      for (unsigned i=0;i<hessians.size();++i)
+      for (unsigned int i=0;i<hessians.size();++i)
         Assert (hessians[i].size() == result_components,
                 ExcDimensionMismatch(hessians[i].size(), result_components));
     }
@@ -2811,7 +2811,7 @@ void FEValuesBase<dim, spacedim>::get_function_hessians (
   const unsigned int component_multiple = result_components / n_components;
 
                                    // initialize with zero
-  for (unsigned i=0;i<hessians.size();++i)
+  for (unsigned int i=0;i<hessians.size();++i)
     std::fill_n (hessians[i].begin(), hessians[i].size(), Tensor<2,spacedim>());
 
                                    // add up contributions of trial
@@ -2992,7 +2992,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
                                    // Assert that we can write all
                                    // components into the result
                                    // vectors
-  for (unsigned i=0;i<laplacians.size();++i)
+  for (unsigned int i=0;i<laplacians.size();++i)
     Assert (laplacians[i].size() == n_components,
             ExcDimensionMismatch(laplacians[i].size(), n_components));
 
@@ -3006,7 +3006,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
                                    // initialize with zero
-  for (unsigned i=0;i<laplacians.size();++i)
+  for (unsigned int i=0;i<laplacians.size();++i)
     std::fill_n (laplacians[i].begin(), laplacians[i].size(), 0);
 
                                    // add up contributions of trial
@@ -3084,7 +3084,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
                                    // finite element
   const unsigned int result_components = indices.size() * n_components / dofs_per_cell;
 
-  for (unsigned i=0;i<laplacians.size();++i)
+  for (unsigned int i=0;i<laplacians.size();++i)
     Assert (laplacians[i].size() == result_components,
             ExcDimensionMismatch(laplacians[i].size(), result_components));
 
@@ -3097,7 +3097,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
 
                                    // initialize with zero
-  for (unsigned i=0;i<laplacians.size();++i)
+  for (unsigned int i=0;i<laplacians.size();++i)
     std::fill_n (laplacians[i].begin(), laplacians[i].size(), 0);
 
                                    // add up contributions of trial
@@ -3181,7 +3181,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
     {
       Assert (laplacians.size() == result_components,
               ExcDimensionMismatch(laplacians.size(), result_components));
-      for (unsigned i=0;i<laplacians.size();++i)
+      for (unsigned int i=0;i<laplacians.size();++i)
         Assert (laplacians[i].size() == n_quadrature_points,
                 ExcDimensionMismatch(laplacians[i].size(), n_quadrature_points));
     }
@@ -3189,7 +3189,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
     {
       Assert(laplacians.size() == n_quadrature_points,
              ExcDimensionMismatch(laplacians.size(), n_quadrature_points));
-      for (unsigned i=0;i<laplacians.size();++i)
+      for (unsigned int i=0;i<laplacians.size();++i)
         Assert (laplacians[i].size() == result_components,
                 ExcDimensionMismatch(laplacians[i].size(), result_components));
     }
@@ -3203,7 +3203,7 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
 
                                    // initialize with zero
-  for (unsigned i=0;i<laplacians.size();++i)
+  for (unsigned int i=0;i<laplacians.size();++i)
     std::fill_n (laplacians[i].begin(), laplacians[i].size(), 0);
 
                                    // add up contributions of trial
index 4ca013da9a222c80042910573114ddb214433b81..d40401de26534b21518472a268798d482f8f4c61 100644 (file)
@@ -940,7 +940,7 @@ namespace internal
                                            // map the unit tangentials to the
                                            // real cell. checking for d!=dim-1
                                            // eliminates compiler warnings
-                                           // regarding unsigned expressions <
+                                           // regarding unsigned int expressions <
                                            // 0.
           for (unsigned int d=0; d!=dim-1; ++d)
             {
index 5db865c14e7f0a18f55152c577389e58df29ead3..20136921f4e936946bac62e8e87a171a08c4405c 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <iostream>
 #include <cmath>
@@ -891,7 +891,7 @@ GridGenerator::subdivided_hyper_rectangle (
   Triangulation<1>&                             tria,
   const std::vector< std::vector<double> >&     spacing,
   const Point<1>&                               p,
-  const Table<1,types::material_id_t>&                 material_id,
+  const Table<1,types::material_id>&                 material_id,
   const bool                                    colorize)
 {
                                    // contributed by Yaqi Wang 2006
@@ -920,12 +920,12 @@ GridGenerator::subdivided_hyper_rectangle (
                                    // create the cells
   unsigned int n_val_cells = 0;
   for (unsigned int i=0; i<n_cells; i++)
-    if (material_id[i]!=types::invalid_material_id) n_val_cells++;
+    if (material_id[i]!=numbers::invalid_material_id) n_val_cells++;
 
   std::vector<CellData<1> > cells(n_val_cells);
   unsigned int id = 0;
   for (unsigned int x=0; x<n_cells; ++x)
-    if (material_id[x] != types::invalid_material_id)
+    if (material_id[x] != numbers::invalid_material_id)
       {
         cells[id].vertices[0] = x;
         cells[id].vertices[1] = x+1;
@@ -950,7 +950,7 @@ GridGenerator::subdivided_hyper_rectangle (
   Triangulation<2>&                         tria,
   const std::vector< std::vector<double> >&     spacing,
   const Point<2>&                               p,
-  const Table<2,types::material_id_t>&          material_id,
+  const Table<2,types::material_id>&          material_id,
   const bool                                    colorize)
 {
                                    // contributed by Yaqi Wang 2006
@@ -993,14 +993,14 @@ GridGenerator::subdivided_hyper_rectangle (
   unsigned int n_val_cells = 0;
   for (unsigned int i=0; i<material_id.size(0); i++)
     for (unsigned int j=0; j<material_id.size(1); j++)
-      if (material_id[i][j] != types::invalid_material_id)
+      if (material_id[i][j] != numbers::invalid_material_id)
         n_val_cells++;
 
   std::vector<CellData<2> > cells(n_val_cells);
   unsigned int id = 0;
   for (unsigned int y=0; y<repetitions[1]; ++y)
     for (unsigned int x=0; x<repetitions[0]; ++x)
-      if (material_id[x][y]!=types::invalid_material_id)
+      if (material_id[x][y]!=numbers::invalid_material_id)
         {
           cells[id].vertices[0] = y*(repetitions[0]+1)+x;
           cells[id].vertices[1] = y*(repetitions[0]+1)+x+1;
@@ -1048,7 +1048,7 @@ GridGenerator::subdivided_hyper_rectangle (
   Triangulation<3>&                           tria,
   const std::vector< std::vector<double> >&     spacing,
   const Point<3>&                             p,
-  const Table<3,types::material_id_t>&               material_id,
+  const Table<3,types::material_id>&               material_id,
   const bool                                    colorize)
 {
                                    // contributed by Yaqi Wang 2006
@@ -1100,7 +1100,7 @@ GridGenerator::subdivided_hyper_rectangle (
   for (unsigned int i=0; i<material_id.size(0); i++)
     for (unsigned int j=0; j<material_id.size(1); j++)
       for (unsigned int k=0; k<material_id.size(2); k++)
-        if (material_id[i][j][k]!=types::invalid_material_id)
+        if (material_id[i][j][k]!=numbers::invalid_material_id)
           n_val_cells++;
 
   std::vector<CellData<dim> > cells(n_val_cells);
@@ -1110,7 +1110,7 @@ GridGenerator::subdivided_hyper_rectangle (
   for (unsigned int z=0; z<repetitions[2]; ++z)
     for (unsigned int y=0; y<repetitions[1]; ++y)
       for (unsigned int x=0; x<repetitions[0]; ++x)
-        if (material_id[x][y][z]!=types::invalid_material_id)
+        if (material_id[x][y][z]!=numbers::invalid_material_id)
           {
             cells[id].vertices[0] = z*n_xy + y*n_x + x;
             cells[id].vertices[1] = z*n_xy + y*n_x + x+1;
@@ -1382,7 +1382,7 @@ void GridGenerator::enclosed_hyper_cube (Triangulation<2> &tria,
     for (unsigned int i1=0;i1<4;++i1)
       vertices[k++] = Point<2>(coords[i1], coords[i0]);
 
-  const types::material_id_t materials[9] = { 5, 4, 6,
+  const types::material_id materials[9] = { 5, 4, 6,
                                        1, 0, 2,
                                        9, 8,10
   };
@@ -1751,7 +1751,7 @@ GridGenerator::half_hyper_ball (Triangulation<2> &tria,
     {
         for (unsigned int i=0;i<GeometryInfo<2>::faces_per_cell;++i)
         {
-            if (cell->face(i)->boundary_indicator() == types::internal_face_boundary_id)
+            if (cell->face(i)->boundary_indicator() == numbers::internal_face_boundary_id)
                 continue;
 
             // If x is zero, then this is part of the plane
@@ -2012,7 +2012,7 @@ void GridGenerator::enclosed_hyper_cube (Triangulation<3> &tria,
       for (unsigned int x=0;x<4;++x)
         vertices[k++] = Point<3>(coords[x], coords[y], coords[z]);
 
-  const types::material_id_t materials[27] = {
+  const types::material_id materials[27] = {
         21,20,22,
         17,16,18,
         25,24,26,
index c5a10923f5acb868aefe1003232126b7dac99de1..25c769810166bd5e51661f3e2d1fa09c705ff05b 100644 (file)
@@ -355,13 +355,13 @@ void GridIn<dim, spacedim>::read_ucd (std::istream &in)
             in >> cells.back().vertices[i];
 
           // to make sure that the cast wont fail
-    Assert(material_id<= std::numeric_limits<types::material_id_t>::max(),
-        ExcIndexRange(material_id,0,std::numeric_limits<types::material_id_t>::max()));
-    // we use only material_ids in the range from 0 to types::invalid_material_id-1
-    Assert(material_id < types::invalid_material_id,
-        ExcIndexRange(material_id,0,types::invalid_material_id));
+    Assert(material_id<= std::numeric_limits<types::material_id>::max(),
+        ExcIndexRange(material_id,0,std::numeric_limits<types::material_id>::max()));
+    // we use only material_ids in the range from 0 to numbers::invalid_material_id-1
+    Assert(material_id < numbers::invalid_material_id,
+        ExcIndexRange(material_id,0,numbers::invalid_material_id));
 
-          cells.back().material_id = static_cast<types::material_id_t>(material_id);
+          cells.back().material_id = static_cast<types::material_id>(material_id);
 
                                            // transform from ucd to
                                            // consecutive numbering
@@ -385,14 +385,14 @@ void GridIn<dim, spacedim>::read_ucd (std::istream &in)
                >> subcelldata.boundary_lines.back().vertices[1];
 
             // to make sure that the cast wont fail
-            Assert(material_id<= std::numeric_limits<types::boundary_id_t>::max(),
-                ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id_t>::max()));
-            // we use only boundary_ids in the range from 0 to types::internal_face_boundary_id-1
-            Assert(material_id < types::internal_face_boundary_id,
-                ExcIndexRange(material_id,0,types::internal_face_boundary_id));
+            Assert(material_id<= std::numeric_limits<types::boundary_id>::max(),
+                ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id>::max()));
+            // we use only boundary_ids in the range from 0 to numbers::internal_face_boundary_id-1
+            Assert(material_id < numbers::internal_face_boundary_id,
+                ExcIndexRange(material_id,0,numbers::internal_face_boundary_id));
 
             subcelldata.boundary_lines.back().boundary_id
-                = static_cast<types::boundary_id_t>(material_id);
+                = static_cast<types::boundary_id>(material_id);
 
                                              // transform from ucd to
                                              // consecutive numbering
@@ -423,14 +423,14 @@ void GridIn<dim, spacedim>::read_ucd (std::istream &in)
                  >> subcelldata.boundary_quads.back().vertices[3];
 
               // to make sure that the cast wont fail
-              Assert(material_id<= std::numeric_limits<types::boundary_id_t>::max(),
-                  ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id_t>::max()));
-              // we use only boundary_ids in the range from 0 to types::internal_face_boundary_id-1
-              Assert(material_id < types::internal_face_boundary_id,
-                  ExcIndexRange(material_id,0,types::internal_face_boundary_id));
+              Assert(material_id<= std::numeric_limits<types::boundary_id>::max(),
+                  ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id>::max()));
+              // we use only boundary_ids in the range from 0 to numbers::internal_face_boundary_id-1
+              Assert(material_id < numbers::internal_face_boundary_id,
+                  ExcIndexRange(material_id,0,numbers::internal_face_boundary_id));
 
               subcelldata.boundary_quads.back().boundary_id
-                  = static_cast<types::boundary_id_t>(material_id);
+                  = static_cast<types::boundary_id>(material_id);
 
                                                // transform from ucd to
                                                // consecutive numbering
@@ -998,13 +998,13 @@ void GridIn<dim, spacedim>::read_msh (std::istream &in)
             in >> cells.back().vertices[i];
 
     // to make sure that the cast wont fail
-    Assert(material_id<= std::numeric_limits<types::material_id_t>::max(),
-        ExcIndexRange(material_id,0,std::numeric_limits<types::material_id_t>::max()));
-    // we use only material_ids in the range from 0 to types::invalid_material_id-1
-    Assert(material_id < types::invalid_material_id,
-        ExcIndexRange(material_id,0,types::invalid_material_id));
+    Assert(material_id<= std::numeric_limits<types::material_id>::max(),
+        ExcIndexRange(material_id,0,std::numeric_limits<types::material_id>::max()));
+    // we use only material_ids in the range from 0 to numbers::invalid_material_id-1
+    Assert(material_id < numbers::invalid_material_id,
+        ExcIndexRange(material_id,0,numbers::invalid_material_id));
 
-          cells.back().material_id = static_cast<types::material_id_t>(material_id);
+          cells.back().material_id = static_cast<types::material_id>(material_id);
 
                                            // transform from ucd to
                                            // consecutive numbering
@@ -1027,14 +1027,14 @@ void GridIn<dim, spacedim>::read_msh (std::istream &in)
                >> subcelldata.boundary_lines.back().vertices[1];
 
       // to make sure that the cast wont fail
-      Assert(material_id<= std::numeric_limits<types::boundary_id_t>::max(),
-          ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id_t>::max()));
-      // we use only boundary_ids in the range from 0 to types::internal_face_boundary_id-1
-      Assert(material_id < types::internal_face_boundary_id,
-          ExcIndexRange(material_id,0,types::internal_face_boundary_id));
+      Assert(material_id<= std::numeric_limits<types::boundary_id>::max(),
+          ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id>::max()));
+      // we use only boundary_ids in the range from 0 to numbers::internal_face_boundary_id-1
+      Assert(material_id < numbers::internal_face_boundary_id,
+          ExcIndexRange(material_id,0,numbers::internal_face_boundary_id));
 
             subcelldata.boundary_lines.back().boundary_id
-                = static_cast<types::boundary_id_t>(material_id);
+                = static_cast<types::boundary_id>(material_id);
 
                                              // transform from ucd to
                                              // consecutive numbering
@@ -1065,14 +1065,14 @@ void GridIn<dim, spacedim>::read_msh (std::istream &in)
                  >> subcelldata.boundary_quads.back().vertices[3];
 
               // to make sure that the cast wont fail
-              Assert(material_id<= std::numeric_limits<types::boundary_id_t>::max(),
-                  ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id_t>::max()));
-              // we use only boundary_ids in the range from 0 to types::internal_face_boundary_id-1
-              Assert(material_id < types::internal_face_boundary_id,
-                  ExcIndexRange(material_id,0,types::internal_face_boundary_id));
+              Assert(material_id<= std::numeric_limits<types::boundary_id>::max(),
+                  ExcIndexRange(material_id,0,std::numeric_limits<types::boundary_id>::max()));
+              // we use only boundary_ids in the range from 0 to numbers::internal_face_boundary_id-1
+              Assert(material_id < numbers::internal_face_boundary_id,
+                  ExcIndexRange(material_id,0,numbers::internal_face_boundary_id));
 
               subcelldata.boundary_quads.back().boundary_id
-                  = static_cast<types::boundary_id_t>(material_id);
+                  = static_cast<types::boundary_id>(material_id);
 
                                                // transform from gmsh to
                                                // consecutive numbering
@@ -1617,11 +1617,11 @@ void GridIn<3>::read_netcdf (const std::string &filename)
   bmarker_var->get(&*bmarker.begin(), n_bquads);
                                    // we only handle boundary
                                    // indicators that fit into an
-                                   // types::boundary_id_t. Also, we don't
-                                   // take types::internal_face_boundary_id
+                                   // types::boundary_id. Also, we don't
+                                   // take numbers::internal_face_boundary_id
            // as it denotes an internal face
   for (unsigned int i=0; i<bmarker.size(); ++i)
-    Assert(0<=bmarker[i] && bmarker[i]<types::internal_face_boundary_id, ExcIO());
+    Assert(0<=bmarker[i] && bmarker[i]<numbers::internal_face_boundary_id, ExcIO());
 
                                    // finally we setup the boundary
                                    // information
@@ -1633,7 +1633,7 @@ void GridIn<3>::read_netcdf (const std::string &filename)
         subcelldata.boundary_quads[i].vertices[v]=bvertex_indices[
           i*GeometryInfo<dim>::vertices_per_face+v];
       subcelldata.boundary_quads[i].boundary_id
-      = static_cast<types::boundary_id_t>(bmarker[i]);
+      = static_cast<types::boundary_id>(bmarker[i]);
     }
 
   GridTools::delete_unused_vertices(vertices, cells, subcelldata);
index 51baca980dcb1400f7398bddda2e5110a879934d..56eae72ae698377bdf1b414eac353089e5d70691 100644 (file)
@@ -1162,8 +1162,8 @@ void GridOut::write_xfig (
           {
             Triangulation<dim>::face_iterator
               face = cell->face(face_reorder[f]);
-            const types::boundary_id_t bi = face->boundary_indicator();
-            if (bi != types::internal_face_boundary_id)
+            const types::boundary_id bi = face->boundary_indicator();
+            if (bi != numbers::internal_face_boundary_id)
               {
                                                  // Code for polyline
                 out << "2 1 "
index eedaf0a5c65b85b30fe258e0e52118d819edccde..750aad1dcd71e0feef5f4538e16a444712d2b1d8 100644 (file)
@@ -703,7 +703,7 @@ namespace GridTools
     // look at the mid-points of edges
     for (; cell != endc; ++cell)
       {
-        for (unsigned v = 0; v < GeometryInfo<dim>::vertices_per_cell; v++)
+        for (unsigned int v = 0; v < GeometryInfo<dim>::vertices_per_cell; v++)
           if (cell->vertex_index(v) == vertex)
             {
               // OK, we found a cell that contains
@@ -716,7 +716,7 @@ namespace GridTools
               // neighbor. if this is the case, then we need to also
               // add this neighbor
               if (dim >= 2)
-                for (unsigned vface = 0; vface < dim; vface++)
+                for (unsigned int vface = 0; vface < dim; vface++)
                   {
                     const unsigned int face =
                         GeometryInfo<dim>::vertex_to_face[v][vface];
@@ -732,7 +732,8 @@ namespace GridTools
                         // that cell. in either case, it is adjacent
                         // to the vertex, so add it to the list as well
                         // (if the cell was already in the list then
-                        // the std::set makes sure that we get it only once)
+                        // the std::set makes sure that we get it only
+                        // once)
                         adjacent_cells.insert (cell->neighbor(face));
                         goto next_cell;
                       }
@@ -745,7 +746,7 @@ namespace GridTools
         // in 3d also loop over the edges
         if (dim >= 3)
           {
-            for (unsigned e=0; e<GeometryInfo<dim>::lines_per_cell; ++e)
+            for (unsigned int e=0; e<GeometryInfo<dim>::lines_per_cell; ++e)
               if (cell->line(e)->has_children())
                 // the only place where this vertex could have been
                 // hiding is on the mid-edge point of the edge we
@@ -1233,7 +1234,7 @@ namespace GridTools
   template <int dim, int spacedim>
   void
   get_subdomain_association (const Triangulation<dim, spacedim>  &triangulation,
-                             std::vector<types::subdomain_id_t> &subdomain)
+                             std::vector<types::subdomain_id> &subdomain)
   {
     Assert (subdomain.size() == triangulation.n_active_cells(),
             ExcDimensionMismatch (subdomain.size(),
@@ -1253,7 +1254,7 @@ namespace GridTools
   unsigned int
 
   count_cells_with_subdomain_association (const Triangulation<dim, spacedim> &triangulation,
-                                          const types::subdomain_id_t       subdomain)
+                                          const types::subdomain_id       subdomain)
   {
     unsigned int count = 0;
     for (typename Triangulation<dim, spacedim>::active_cell_iterator
@@ -2049,7 +2050,7 @@ namespace GridTools
            typename Container<dim,spacedim>::face_iterator>
   extract_boundary_mesh (const Container<dim,spacedim> &volume_mesh,
                          Container<dim-1,spacedim>     &surface_mesh,
-                         const std::set<types::boundary_id_t> &boundary_ids)
+                         const std::set<types::boundary_id> &boundary_ids)
   {
 // Assumption:
 //    We are relying below on the fact that Triangulation::create_triangulation(...) will keep the order
@@ -2103,7 +2104,7 @@ namespace GridTools
                     }
 
                   c_data.vertices[j] = map_vert_index[v_index];
-                  c_data.material_id = static_cast<types::material_id_t>(face->boundary_indicator());
+                  c_data.material_id = static_cast<types::material_id>(face->boundary_indicator());
                 }
 
               cells.push_back(c_data);
@@ -2214,7 +2215,7 @@ namespace GridTools
   std::map<CellIterator, CellIterator>
   collect_periodic_cell_pairs (const CellIterator                          &begin,
                                const typename identity<CellIterator>::type &end,
-                               const types::boundary_id_t                  boundary_component,
+                               const types::boundary_id                  boundary_component,
                                int                                         direction,
                                const dealii::Tensor<1,CellIterator::AccessorType::space_dimension>
                                  &offset)
@@ -2276,7 +2277,7 @@ namespace GridTools
   template<typename DH>
   std::map<typename DH::cell_iterator, typename DH::cell_iterator>
   collect_periodic_cell_pairs (const DH                   &dof_handler,
-                               const types::boundary_id_t boundary_component,
+                               const types::boundary_id boundary_component,
                                int                        direction,
                                const dealii::Tensor<1,DH::space_dimension>
                                  &offset)
index 63a370af004be7f17fb81d639c72106f52e2bd5c..d8c6f0e51a852beea1d0deb1718826706de4122d 100644 (file)
@@ -119,12 +119,12 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
     
     template
       void get_subdomain_association (const Triangulation<deal_II_dimension, deal_II_space_dimension>  &,
-                                     std::vector<types::subdomain_id_t> &);
+                                     std::vector<types::subdomain_id> &);
 
     template
     unsigned int count_cells_with_subdomain_association(
       const Triangulation<deal_II_dimension, deal_II_space_dimension> &,
-      const types::subdomain_id_t);
+      const types::subdomain_id);
     
     template
       double
@@ -170,7 +170,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
                   Container<deal_II_dimension,deal_II_space_dimension>::face_iterator>
       extract_boundary_mesh (const Container<deal_II_dimension, deal_II_space_dimension> &mesh,
                             Container<deal_II_dimension-1,deal_II_space_dimension>  &boundary_mesh,
-                            const std::set<types::boundary_id_t> &boundary_ids);
+                            const std::set<types::boundary_id> &boundary_ids);
       \}
 #endif
 #endif
@@ -187,14 +187,14 @@ for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS ; deal_II
     std::map<X::cell_iterator, X::cell_iterator>
     collect_periodic_cell_pairs(const X::cell_iterator &,
                                 const X::cell_iterator &,
-                                const types::boundary_id_t,
+                                const types::boundary_id,
                                 int,
                                 const Tensor<1,deal_II_space_dimension> &);
 
     template
     std::map<X::cell_iterator, X::cell_iterator>
     collect_periodic_cell_pairs (const X&,
-                                 const types::boundary_id_t,
+                                 const types::boundary_id,
                                  int,
                                  const Tensor<1,deal_II_space_dimension> &);
 
index 156b910e9082e3e88a5633dbb9fe593812ac94a9..3743949c8d08a52a3d503f711e9c44aaef961876 100644 (file)
@@ -1789,8 +1789,8 @@ namespace internal
                 if (n_adj_cells == 1)
                   line->set_boundary_indicator (0);
                 else
-                                                   // interior line -> types::internal_face_boundary_id
-                  line->set_boundary_indicator (types::internal_face_boundary_id);
+                                                   // interior line -> numbers::internal_face_boundary_id
+                  line->set_boundary_indicator (numbers::internal_face_boundary_id);
               }
 
                                              // set boundary indicators where
@@ -1824,13 +1824,13 @@ namespace internal
                                                  // assert that we only set
                                                  // boundary info once
                 AssertThrow (! (line->boundary_indicator() != 0 &&
-                                line->boundary_indicator() != types::internal_face_boundary_id),
+                                line->boundary_indicator() != numbers::internal_face_boundary_id),
                              ExcMultiplySetLineInfoOfLine(line_vertices.first,
                                                           line_vertices.second));
 
                                                  // Assert that only exterior lines
                                                  // are given a boundary indicator
-                AssertThrow (! (line->boundary_indicator() == types::internal_face_boundary_id),
+                AssertThrow (! (line->boundary_indicator() == numbers::internal_face_boundary_id),
                              ExcInteriorLineCantBeBoundary());
 
                 line->set_boundary_indicator (boundary_line->boundary_id);
@@ -2509,8 +2509,8 @@ namespace internal
                 if (n_adj_cells == 1)
                   quad->set_boundary_indicator (0);
                 else
-                                                   // interior quad -> types::internal_face_boundary_id
-                  quad->set_boundary_indicator (types::internal_face_boundary_id);
+                                                   // interior quad -> numbers::internal_face_boundary_id
+                  quad->set_boundary_indicator (numbers::internal_face_boundary_id);
               }
 
                                              /////////////////////////////////////////
@@ -2522,7 +2522,7 @@ namespace internal
                                              // as interior
             for (typename Triangulation<dim,spacedim>::line_iterator
                    line=triangulation.begin_line(); line!=triangulation.end_line(); ++line)
-              line->set_boundary_indicator (types::internal_face_boundary_id);
+              line->set_boundary_indicator (numbers::internal_face_boundary_id);
                                              // next reset all lines bounding
                                              // boundary quads as on the
                                              // boundary also. note that since
@@ -3561,7 +3561,7 @@ namespace internal
                                    switch_1->line_orientation(1),
                                    switch_1->line_orientation(2),
                                    switch_1->line_orientation(3) };
-                                const types::boundary_id_t switch_1_boundary_indicator=switch_1->boundary_indicator();
+                                const types::boundary_id switch_1_boundary_indicator=switch_1->boundary_indicator();
                                 const unsigned int switch_1_user_index=switch_1->user_index();
                                 const bool switch_1_user_flag=switch_1->user_flag_set();
 
@@ -4012,8 +4012,8 @@ namespace internal
                              // An assert to make sure that the
                              // static_cast in the next line has
                              // the chance to give reasonable results.
-                    Assert(cell->material_id()<= std::numeric_limits<types::material_id_t>::max(),
-                        ExcIndexRange(cell->material_id(),0,std::numeric_limits<types::material_id_t>::max()));
+                    Assert(cell->material_id()<= std::numeric_limits<types::material_id>::max(),
+                        ExcIndexRange(cell->material_id(),0,std::numeric_limits<types::material_id>::max()));
 
                                                      // new vertex is
                                                      // placed on the
@@ -4022,7 +4022,7 @@ namespace internal
                                                      // stored in the
                                                      // boundary class
                     triangulation.vertices[next_unused_vertex] =
-                      triangulation.get_boundary(static_cast<types::boundary_id_t>(cell->material_id()))
+                      triangulation.get_boundary(static_cast<types::boundary_id>(cell->material_id()))
                       .get_new_point_on_quad (cell);
                   }
               }
@@ -4117,7 +4117,7 @@ namespace internal
                 new_lines[l]->clear_user_data();
                 new_lines[l]->clear_children();
                                                  // interior line
-                new_lines[l]->set_boundary_indicator(types::internal_face_boundary_id);
+                new_lines[l]->set_boundary_indicator(numbers::internal_face_boundary_id);
               }
 
                                              // Now add the four (two)
@@ -4411,7 +4411,7 @@ namespace internal
                           (cell->vertex(0) + cell->vertex(1)) / 2;
                       else
                         triangulation.vertices[next_unused_vertex] =
-                          triangulation.get_boundary(static_cast<types::boundary_id_t>(cell->material_id()))
+                          triangulation.get_boundary(static_cast<types::boundary_id>(cell->material_id()))
                           .get_new_point_on_line(cell);
                       triangulation.vertices_used[next_unused_vertex] = true;
 
@@ -5818,7 +5818,7 @@ namespace internal
                                    switch_1->line_orientation(1),
                                    switch_1->line_orientation(2),
                                    switch_1->line_orientation(3)};
-                                const types::boundary_id_t switch_1_boundary_indicator=switch_1->boundary_indicator();
+                                const types::boundary_id switch_1_boundary_indicator=switch_1->boundary_indicator();
                                 const unsigned int switch_1_user_index=switch_1->user_index();
                                 const bool switch_1_user_flag=switch_1->user_flag_set();
                                 const RefinementCase<dim-1> switch_1_refinement_case=switch_1->refinement_case();
@@ -6375,7 +6375,7 @@ namespace internal
                           new_lines[i]->clear_user_data();
                           new_lines[i]->clear_children();
                                                            // interior line
-                          new_lines[i]->set_boundary_indicator(types::internal_face_boundary_id);
+                          new_lines[i]->set_boundary_indicator(numbers::internal_face_boundary_id);
                         }
 
                                                        // find some space for the newly to
@@ -6394,7 +6394,7 @@ namespace internal
                           new_quads[i]->clear_user_data();
                           new_quads[i]->clear_children();
                                                            // interior quad
-                          new_quads[i]->set_boundary_indicator (types::internal_face_boundary_id);
+                          new_quads[i]->set_boundary_indicator (numbers::internal_face_boundary_id);
                                                            // set all line orientation
                                                            // flags to true by default,
                                                            // change this afterwards, if
@@ -9404,7 +9404,7 @@ Triangulation (const MeshSmoothing smooth_grid,
 {
   if (dim == 1)
     vertex_to_boundary_id_map_1d
-      = new std::map<unsigned int, types::boundary_id_t>();
+      = new std::map<unsigned int, types::boundary_id>();
 
   // connect the any_change signal to the other signals
   signals.create.connect (signals.any_change);
@@ -9469,10 +9469,10 @@ Triangulation<dim, spacedim>::set_mesh_smoothing(const MeshSmoothing mesh_smooth
 
 template <int dim, int spacedim>
 void
-Triangulation<dim, spacedim>::set_boundary (const types::boundary_id_t number,
+Triangulation<dim, spacedim>::set_boundary (const types::boundary_id number,
                                             const Boundary<dim, spacedim>& boundary_object)
 {
-  Assert(number < types::internal_face_boundary_id, ExcIndexRange(number,0,types::internal_face_boundary_id));
+  Assert(number < numbers::internal_face_boundary_id, ExcIndexRange(number,0,numbers::internal_face_boundary_id));
 
   boundary[number] = &boundary_object;
 }
@@ -9481,9 +9481,9 @@ Triangulation<dim, spacedim>::set_boundary (const types::boundary_id_t number,
 
 template <int dim, int spacedim>
 void
-Triangulation<dim, spacedim>::set_boundary (const types::boundary_id_t number)
+Triangulation<dim, spacedim>::set_boundary (const types::boundary_id number)
 {
-  Assert(number < types::internal_face_boundary_id, ExcIndexRange(number,0,types::internal_face_boundary_id));
+  Assert(number < numbers::internal_face_boundary_id, ExcIndexRange(number,0,numbers::internal_face_boundary_id));
 
   //delete the entry located at number.
   boundary.erase(number);
@@ -9493,13 +9493,13 @@ Triangulation<dim, spacedim>::set_boundary (const types::boundary_id_t number)
 
 template <int dim, int spacedim>
 const Boundary<dim, spacedim> &
-Triangulation<dim, spacedim>::get_boundary (const types::boundary_id_t number) const
+Triangulation<dim, spacedim>::get_boundary (const types::boundary_id number) const
 {
-  Assert(number<types::internal_face_boundary_id, ExcIndexRange(number,0,types::internal_face_boundary_id));
+  Assert(number<numbers::internal_face_boundary_id, ExcIndexRange(number,0,numbers::internal_face_boundary_id));
 
   //look, if there is a boundary stored at
   //boundary_id number.
-  typename std::map<types::boundary_id_t, SmartPointer<const Boundary<dim, spacedim>, Triangulation<dim, spacedim> > >::const_iterator it
+  typename std::map<types::boundary_id, SmartPointer<const Boundary<dim, spacedim>, Triangulation<dim, spacedim> > >::const_iterator it
   = boundary.find(number);
 
   if(it != boundary.end())
@@ -9518,7 +9518,7 @@ Triangulation<dim, spacedim>::get_boundary (const types::boundary_id_t number) c
 
 
 template <int dim, int spacedim>
-std::vector<types::boundary_id_t>
+std::vector<types::boundary_id>
 Triangulation<dim, spacedim>::get_boundary_indicators () const
 {
                                    // in 1d, we store a map of all used
@@ -9526,8 +9526,8 @@ Triangulation<dim, spacedim>::get_boundary_indicators () const
                                    // purposes
   if (dim == 1)
     {
-      std::vector<types::boundary_id_t> boundary_indicators;
-      for (std::map<unsigned int, types::boundary_id_t>::const_iterator
+      std::vector<types::boundary_id> boundary_indicators;
+      for (std::map<unsigned int, types::boundary_id>::const_iterator
              p = vertex_to_boundary_id_map_1d->begin();
            p !=  vertex_to_boundary_id_map_1d->end();
            ++p)
@@ -9539,7 +9539,7 @@ Triangulation<dim, spacedim>::get_boundary_indicators () const
     {
 //TODO: if boundary_id_t is a real integer type, this might become
 //a humongously large array...
-      std::vector<bool> bi_exists(types::internal_face_boundary_id, false);
+      std::vector<bool> bi_exists(numbers::internal_face_boundary_id, false);
       active_cell_iterator cell=begin_active();
       for (; cell!=end(); ++cell)
         for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
@@ -9549,7 +9549,7 @@ Triangulation<dim, spacedim>::get_boundary_indicators () const
       const unsigned int n_bi=
         std::count(bi_exists.begin(), bi_exists.end(), true);
 
-      std::vector<types::boundary_id_t> boundary_indicators(n_bi);
+      std::vector<types::boundary_id> boundary_indicators(n_bi);
       unsigned int bi_counter=0;
       for (unsigned int i=0; i<bi_exists.size(); ++i)
         if (bi_exists[i]==true)
@@ -9586,7 +9586,7 @@ copy_triangulation (const Triangulation<dim, spacedim> &old_tria)
 
   faces         = new internal::Triangulation::TriaFaces<dim>(*old_tria.faces);
 
-  typename std::map<types::boundary_id_t, SmartPointer<const Boundary<dim, spacedim> , Triangulation<dim, spacedim> > >::const_iterator
+  typename std::map<types::boundary_id, SmartPointer<const Boundary<dim, spacedim> , Triangulation<dim, spacedim> > >::const_iterator
       bdry_iterator = old_tria.boundary.begin();
   for (; bdry_iterator != old_tria.boundary.end() ; bdry_iterator++)
     boundary[bdry_iterator->first] = bdry_iterator->second;
@@ -9604,7 +9604,7 @@ copy_triangulation (const Triangulation<dim, spacedim> &old_tria)
     {
       delete vertex_to_boundary_id_map_1d;
       vertex_to_boundary_id_map_1d
-        = (new std::map<unsigned int, types::boundary_id_t>
+        = (new std::map<unsigned int, types::boundary_id>
            (*old_tria.vertex_to_boundary_id_map_1d));
     }
 
@@ -12533,7 +12533,7 @@ unsigned int Triangulation<dim, spacedim>::max_adjacent_cells () const
                                    // vertices used on level 0
   unsigned int max_vertex_index = 0;
   for (; cell!=endc; ++cell)
-    for (unsigned vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell; ++vertex)
+    for (unsigned int vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell; ++vertex)
       if (cell->vertex_index(vertex) > max_vertex_index)
         max_vertex_index = cell->vertex_index(vertex);
 
@@ -12546,7 +12546,7 @@ unsigned int Triangulation<dim, spacedim>::max_adjacent_cells () const
                                    // every time we find an adjacent
                                    // element
   for (cell=begin(); cell!=endc; ++cell)
-    for (unsigned vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell; ++vertex)
+    for (unsigned int vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell; ++vertex)
       ++usage_count[cell->vertex_index(vertex)];
 
   return std::max (GeometryInfo<dim>::vertices_per_cell,
@@ -12557,7 +12557,7 @@ unsigned int Triangulation<dim, spacedim>::max_adjacent_cells () const
 
 
 template <int dim, int spacedim>
-types::subdomain_id_t
+types::subdomain_id
 Triangulation<dim,spacedim>::locally_owned_subdomain () const
 {
   return types::invalid_subdomain_id;
@@ -14727,13 +14727,5 @@ Triangulation<dim, spacedim>::remove_refinement_listener (RefinementListener &li
 // explicit instantiations
 #include "tria.inst"
 
-// this is a hack: we need to instantiate this one function because
-// TriaAccessor<1,1,3> uses it. We could instead instantiate
-// Triangulation<1,3>, but that requires a lot more specializations of
-// functions that currently only exist for <1,1> and <1,2>
-// template
-// const Boundary<1,3> &
-// Triangulation<1,3>::get_boundary (const types::boundary_id_t number) const;
-
 DEAL_II_NAMESPACE_CLOSE
 
index 8f8255323c6d61342a4bdf93196e910a49b7b479..cb713aa258a712775000cdbde6abf9c341176414 100644 (file)
@@ -1273,7 +1273,7 @@ bool CellAccessor<dim, spacedim>::at_boundary () const
 
 
 template <int dim, int spacedim>
-types::material_id_t CellAccessor<dim, spacedim>::material_id () const
+types::material_id CellAccessor<dim, spacedim>::material_id () const
 {
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
   return this->tria->levels[this->present_level]->cells.boundary_or_material_id[this->present_index].material_id;
@@ -1282,17 +1282,17 @@ types::material_id_t CellAccessor<dim, spacedim>::material_id () const
 
 
 template <int dim, int spacedim>
-void CellAccessor<dim, spacedim>::set_material_id (const types::material_id_t mat_id) const
+void CellAccessor<dim, spacedim>::set_material_id (const types::material_id mat_id) const
 {
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
-  Assert ( mat_id < types::invalid_material_id, ExcIndexRange(mat_id,0,types::invalid_material_id));
+  Assert ( mat_id < numbers::invalid_material_id, ExcIndexRange(mat_id,0,numbers::invalid_material_id));
   this->tria->levels[this->present_level]->cells.boundary_or_material_id[this->present_index].material_id = mat_id;
 }
 
 
 
 template <int dim, int spacedim>
-void CellAccessor<dim, spacedim>::recursively_set_material_id (const types::material_id_t mat_id) const
+void CellAccessor<dim, spacedim>::recursively_set_material_id (const types::material_id mat_id) const
 {
   set_material_id (mat_id);
 
@@ -1304,7 +1304,7 @@ void CellAccessor<dim, spacedim>::recursively_set_material_id (const types::mate
 
 
 template <int dim, int spacedim>
-types::subdomain_id_t CellAccessor<dim, spacedim>::subdomain_id () const
+types::subdomain_id CellAccessor<dim, spacedim>::subdomain_id () const
 {
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
   return this->tria->levels[this->present_level]->subdomain_ids[this->present_index];
@@ -1314,7 +1314,7 @@ types::subdomain_id_t CellAccessor<dim, spacedim>::subdomain_id () const
 
 template <int dim, int spacedim>
 void
-CellAccessor<dim, spacedim>::set_subdomain_id (const types::subdomain_id_t new_subdomain_id) const
+CellAccessor<dim, spacedim>::set_subdomain_id (const types::subdomain_id new_subdomain_id) const
 {
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
   this->tria->levels[this->present_level]->subdomain_ids[this->present_index]
@@ -1366,7 +1366,7 @@ CellAccessor<dim, spacedim>::parent () const
 template <int dim, int spacedim>
 void
 CellAccessor<dim, spacedim>::
-recursively_set_subdomain_id (const types::subdomain_id_t new_subdomain_id) const
+recursively_set_subdomain_id (const types::subdomain_id new_subdomain_id) const
 {
   set_subdomain_id (new_subdomain_id);
 
index 8d442b3e890965e57f5fff8a96b4c6506d9f6757..f681486d9b2aec4f29449772fef4e7f2cd4f2be6 100644 (file)
@@ -1344,7 +1344,7 @@ TorusBoundary<2,3>::get_new_point_on_line (const Triangulation<2,3>::line_iterat
                                    //Take care for periodic conditions,
                                    //For instance phi0= 0, phi1= 3/2*Pi  middle has to be 7/4*Pi not 3/4*Pi
                                    //This also works for -Pi/2 + Pi, middle is 5/4*Pi
-  for(unsigned i=0; i<2;i++)
+  for(unsigned int i=0; i<2;i++)
     if(std::abs(p0(i)-p1(i))> numbers::PI)
       middle(i)=2*numbers::PI;
 
@@ -1364,7 +1364,7 @@ TorusBoundary<2,3>::get_new_point_on_quad (const Triangulation<2,3>::quad_iterat
                                    //Just get the average
   Point<2> p[4];
 
-  for(unsigned i=0;i<4;i++)
+  for(unsigned int i=0;i<4;i++)
     p[i]=get_surf_coord(quad->vertex(i));
 
   Point<2>  middle(0,0);
@@ -1372,14 +1372,16 @@ TorusBoundary<2,3>::get_new_point_on_quad (const Triangulation<2,3>::quad_iterat
                                    //Take care for periodic conditions, see get_new_point_on_line() above
                                    //For instance phi0= 0, phi1= 3/2*Pi  middle has to be 7/4*Pi not 3/4*Pi
                                    //This also works for -Pi/2 + Pi + Pi- Pi/2, middle is 5/4*Pi
-  for(unsigned i=0;i<2;i++)
-    for(unsigned j=1;j<4;j++){
-      if(std::abs(p[0](i)-p[j](i))> numbers::PI){
-        middle(i)+=2*numbers::PI;
+  for(unsigned int i=0;i<2;i++)
+    for(unsigned int j=1;j<4;j++)
+      {
+       if(std::abs(p[0](i)-p[j](i))> numbers::PI)
+         {
+           middle(i)+=2*numbers::PI;
+         }
       }
-    }
 
-  for(unsigned i=0;i<4;i++)
+  for(unsigned int i=0;i<4;i++)
     middle+=p[i];
 
   middle*= 0.25;
@@ -1429,15 +1431,15 @@ get_intermediate_points_on_line (const Triangulation<2, 3>::line_iterator &  lin
                                  std::vector< Point< 3 > > & points) const
 {
                                    //Almost the same implementation as  StraightBoundary<2,3>
-  unsigned npoints=points.size();
+  unsigned int npoints=points.size();
   if(npoints==0) return;
 
   Point<2> p[2];
 
-  for(unsigned i=0;i<2;i++)
+  for(unsigned int i=0;i<2;i++)
     p[i]=get_surf_coord(line->vertex(i));
 
-  unsigned  offset[2];
+  unsigned int offset[2];
   offset[0]=0;
   offset[1]=0;
 
@@ -1445,16 +1447,18 @@ get_intermediate_points_on_line (const Triangulation<2, 3>::line_iterator &  lin
                                    //see get_new_point_on_line() above
                                    //Because we dont have a symmetric interpolation (just the middle) we need to
                                    //add 2*Pi to each almost zero and negative angles.
-  for(unsigned i=0;i<2;i++)
-    for(unsigned j=1;j<2;j++){
-      if(std::abs(p[0](i)-p[j](i))> numbers::PI){
-        offset[i]++;
-        break;
+  for(unsigned int i=0;i<2;i++)
+    for(unsigned int j=1;j<2;j++)
+      {
+       if(std::abs(p[0](i)-p[j](i))> numbers::PI)
+         {
+           offset[i]++;
+           break;
+         }
       }
-    }
 
-  for(unsigned  i=0;i<2;i++)
-    for(unsigned  j=0;j<2;j++)
+  for(unsigned int i=0;i<2;i++)
+    for(unsigned int j=0;j<2;j++)
       if(p[j](i)<1.E-12 ) //Take care for periodic conditions & negative angles
         p[j](i)+=2*numbers::PI*offset[i];
 
@@ -1462,10 +1466,11 @@ get_intermediate_points_on_line (const Triangulation<2, 3>::line_iterator &  lin
   double dx=1.0/(npoints+1);
   double x=dx;
   Point<2>  target;
-  for(unsigned i=0; i<npoints;i++,x+=dx){
-    target=  (1-x)*p[0] + x*p[1];
-    points[i]=get_real_coord(target);
-  }
+  for(unsigned int i=0; i<npoints;i++,x+=dx)
+    {
+      target=  (1-x)*p[0] + x*p[1];
+      points[i]=get_real_coord(target);
+    }
 }
 
 
@@ -1487,11 +1492,11 @@ get_intermediate_points_on_quad (const Triangulation< 2, 3 >::quad_iterator &qua
 
   Point<2>  p[4];
 
-  for(unsigned  i=0;i<4;i++)
+  for(unsigned int i=0;i<4;i++)
     p[i]=get_surf_coord(quad->vertex(i));
 
   Point<2>  target;
-  unsigned  offset[2];
+  unsigned int offset[2];
   offset[0]=0;
   offset[1]=0;
 
@@ -1499,30 +1504,33 @@ get_intermediate_points_on_quad (const Triangulation< 2, 3 >::quad_iterator &qua
                                    //see get_new_point_on_line() above
                                    //Because we dont have a symmetric interpolation (just the middle) we need to
                                    //add 2*Pi to each almost zero and negative angles.
-  for(unsigned  i=0;i<2;i++)
-    for(unsigned  j=1;j<4;j++){
-      if(std::abs(p[0](i)-p[j](i))> numbers::PI){
-        offset[i]++;
-        break;
+  for(unsigned int i=0;i<2;i++)
+    for(unsigned int j=1;j<4;j++)
+      {
+       if(std::abs(p[0](i)-p[j](i))> numbers::PI)
+         {
+           offset[i]++;
+           break;
+         }
       }
-    }
 
-  for(unsigned  i=0;i<2;i++)
-    for(unsigned  j=0;j<4;j++)
+  for(unsigned int i=0;i<2;i++)
+    for(unsigned int j=0;j<4;j++)
       if(p[j](i)<1.E-12 ) //Take care for periodic conditions & negative angles
         p[j](i)+=2*numbers::PI*offset[i];
 
-  for (unsigned  i=0; i<m; ++i, y+=ds)
+  for (unsigned int i=0; i<m; ++i, y+=ds)
     {
       double x=ds;
-      for (unsigned  j=0; j<m; ++j, x+=ds){
-        target=((1-x) * p[0] +
-                x     * p[1]) * (1-y) +
-               ((1-x) * p[2] +
-                x     * p[3]) * y;
-
-        points[i*m+j]=get_real_coord(target);
-      }
+      for (unsigned int j=0; j<m; ++j, x+=ds)
+       {
+         target=((1-x) * p[0] +
+                 x     * p[1]) * (1-y) +
+                ((1-x) * p[2] +
+                 x     * p[3]) * y;
+
+         points[i*m+j]=get_real_coord(target);
+       }
     }
 }
 
@@ -1534,7 +1542,7 @@ TorusBoundary<2,3>::
 get_normals_at_vertices (const Triangulation<2,3 >::face_iterator &face,
                          Boundary<2,3>::FaceVertexNormals &face_vertex_normals) const
 {
-  for(unsigned i=0; i<GeometryInfo<2>::vertices_per_face; i++)
+  for(unsigned int i=0; i<GeometryInfo<2>::vertices_per_face; i++)
     face_vertex_normals[i]=get_surf_norm(face->vertex(i));
 }
 
index 2548bb351646ea55261ba4d86ce0b5d8048fe588..734b8c7f0c696e3d3a2593527995c8e41e239f0e 100644 (file)
@@ -573,7 +573,7 @@ namespace internal
                                                // finite element is used for it
               for (unsigned int level=0; level<dof_handler.tria->n_levels(); ++level)
                 {
-                  dof_handler.levels[level]->lines.dof_offsets
+                  dof_handler.levels[level]->dof_object.dof_offsets
                     = std::vector<unsigned int> (dof_handler.tria->n_raw_lines(level),
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
 
@@ -583,11 +583,11 @@ namespace internal
                        cell!=dof_handler.end_active(level); ++cell)
                     if (!cell->has_children())
                       {
-                        dof_handler.levels[level]->lines.dof_offsets[cell->index()] = next_free_dof;
+                        dof_handler.levels[level]->dof_object.dof_offsets[cell->index()] = next_free_dof;
                         next_free_dof += cell->get_fe().dofs_per_line;
                       }
 
-                  dof_handler.levels[level]->lines.dofs
+                  dof_handler.levels[level]->dof_object.dofs
                     = std::vector<unsigned int> (next_free_dof,
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
                 }
@@ -609,11 +609,11 @@ namespace internal
                     if (!cell->has_children())
                       counter += cell->get_fe().dofs_per_line;
 
-                  Assert (dof_handler.levels[level]->lines.dofs.size() == counter,
+                  Assert (dof_handler.levels[level]->dof_object.dofs.size() == counter,
                           ExcInternalError());
                   Assert (static_cast<unsigned int>
-                          (std::count (dof_handler.levels[level]->lines.dof_offsets.begin(),
-                                       dof_handler.levels[level]->lines.dof_offsets.end(),
+                          (std::count (dof_handler.levels[level]->dof_object.dof_offsets.begin(),
+                                       dof_handler.levels[level]->dof_object.dof_offsets.end(),
                                        DoFHandler<dim,spacedim>::invalid_dof_index))
                           ==
                           dof_handler.tria->n_raw_lines(level) - dof_handler.tria->n_active_lines(level),
@@ -689,7 +689,7 @@ namespace internal
                                                // finite element is used for it
               for (unsigned int level=0; level<dof_handler.tria->n_levels(); ++level)
                 {
-                  dof_handler.levels[level]->quads.dof_offsets
+                  dof_handler.levels[level]->dof_object.dof_offsets
                     = std::vector<unsigned int> (dof_handler.tria->n_raw_quads(level),
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
 
@@ -699,11 +699,11 @@ namespace internal
                        cell!=dof_handler.end_active(level); ++cell)
                     if (!cell->has_children())
                       {
-                        dof_handler.levels[level]->quads.dof_offsets[cell->index()] = next_free_dof;
+                        dof_handler.levels[level]->dof_object.dof_offsets[cell->index()] = next_free_dof;
                         next_free_dof += cell->get_fe().dofs_per_quad;
                       }
 
-                  dof_handler.levels[level]->quads.dofs
+                  dof_handler.levels[level]->dof_object.dofs
                     = std::vector<unsigned int> (next_free_dof,
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
                 }
@@ -725,11 +725,11 @@ namespace internal
                     if (!cell->has_children())
                       counter += cell->get_fe().dofs_per_quad;
 
-                  Assert (dof_handler.levels[level]->quads.dofs.size() == counter,
+                  Assert (dof_handler.levels[level]->dof_object.dofs.size() == counter,
                           ExcInternalError());
                   Assert (static_cast<unsigned int>
-                          (std::count (dof_handler.levels[level]->quads.dof_offsets.begin(),
-                                       dof_handler.levels[level]->quads.dof_offsets.end(),
+                          (std::count (dof_handler.levels[level]->dof_object.dof_offsets.begin(),
+                                       dof_handler.levels[level]->dof_object.dof_offsets.end(),
                                        DoFHandler<dim,spacedim>::invalid_dof_index))
                           ==
                           dof_handler.tria->n_raw_quads(level) - dof_handler.tria->n_active_quads(level),
@@ -1053,7 +1053,7 @@ namespace internal
                                                // finite element is used for it
               for (unsigned int level=0; level<dof_handler.tria->n_levels(); ++level)
                 {
-                  dof_handler.levels[level]->hexes.dof_offsets
+                  dof_handler.levels[level]->dof_object.dof_offsets
                     = std::vector<unsigned int> (dof_handler.tria->n_raw_hexs(level),
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
 
@@ -1063,11 +1063,11 @@ namespace internal
                        cell!=dof_handler.end_active(level); ++cell)
                     if (!cell->has_children())
                       {
-                        dof_handler.levels[level]->hexes.dof_offsets[cell->index()] = next_free_dof;
+                        dof_handler.levels[level]->dof_object.dof_offsets[cell->index()] = next_free_dof;
                         next_free_dof += cell->get_fe().dofs_per_hex;
                       }
 
-                  dof_handler.levels[level]->hexes.dofs
+                  dof_handler.levels[level]->dof_object.dofs
                     = std::vector<unsigned int> (next_free_dof,
                                                  DoFHandler<dim,spacedim>::invalid_dof_index);
                 }
@@ -1089,11 +1089,11 @@ namespace internal
                     if (!cell->has_children())
                       counter += cell->get_fe().dofs_per_hex;
 
-                  Assert (dof_handler.levels[level]->hexes.dofs.size() == counter,
+                  Assert (dof_handler.levels[level]->dof_object.dofs.size() == counter,
                           ExcInternalError());
                   Assert (static_cast<unsigned int>
-                          (std::count (dof_handler.levels[level]->hexes.dof_offsets.begin(),
-                                       dof_handler.levels[level]->hexes.dof_offsets.end(),
+                          (std::count (dof_handler.levels[level]->dof_object.dof_offsets.begin(),
+                                       dof_handler.levels[level]->dof_object.dof_offsets.end(),
                                        DoFHandler<dim,spacedim>::invalid_dof_index))
                           ==
                           dof_handler.tria->n_raw_hexs(level) - dof_handler.tria->n_active_hexs(level),
@@ -2745,14 +2745,14 @@ namespace hp
 
 
   template <>
-  unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const
+  unsigned int DoFHandler<1>::n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const
   {
     Assert (finite_elements != 0, ExcNoFESelected());
 
                                      // check that only boundary
                                      // indicators 0 and 1 are allowed
                                      // in 1d
-    for (std::set<types::boundary_id_t>::const_iterator i=boundary_indicators.begin();
+    for (std::set<types::boundary_id>::const_iterator i=boundary_indicators.begin();
          i!=boundary_indicators.end(); ++i)
       Assert ((*i == 0) || (*i == 1),
               ExcInvalidBoundaryIndicator());
@@ -2797,7 +2797,7 @@ namespace hp
   }
 
   template <>
-  unsigned int DoFHandler<1,2>::n_boundary_dofs (const std::set<types::boundary_id_t> &) const
+  unsigned int DoFHandler<1,2>::n_boundary_dofs (const std::set<types::boundary_id> &) const
   {
     Assert(false,ExcNotImplemented());
     return 0;
@@ -2819,7 +2819,7 @@ template <>
   }
 
   template <>
-  unsigned int DoFHandler<1,3>::n_boundary_dofs (const std::set<types::boundary_id_t> &) const
+  unsigned int DoFHandler<1,3>::n_boundary_dofs (const std::set<types::boundary_id> &) const
   {
     Assert(false,ExcNotImplemented());
     return 0;
@@ -2869,7 +2869,7 @@ template <>
   DoFHandler<dim,spacedim>::n_boundary_dofs (const FunctionMap &boundary_indicators) const
   {
     Assert (finite_elements != 0, ExcNoFESelected());
-    Assert (boundary_indicators.find(types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find(numbers::internal_face_boundary_id) == boundary_indicators.end(),
             ExcInvalidBoundaryIndicator());
 
                                      // same as above, but with
@@ -2902,10 +2902,10 @@ template <>
 
   template<int dim, int spacedim>
   unsigned int
-  DoFHandler<dim,spacedim>::n_boundary_dofs (const std::set<types::boundary_id_t> &boundary_indicators) const
+  DoFHandler<dim,spacedim>::n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const
   {
     Assert (finite_elements != 0, ExcNoFESelected());
-    Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
+    Assert (boundary_indicators.find (numbers::internal_face_boundary_id) == boundary_indicators.end(),
             ExcInvalidBoundaryIndicator());
 
                                      // same as above, but with
@@ -2954,7 +2954,7 @@ template <>
 
 
   template <>
-  unsigned int DoFHandler<2,3>::n_boundary_dofs (const std::set<types::boundary_id_t> &) const
+  unsigned int DoFHandler<2,3>::n_boundary_dofs (const std::set<types::boundary_id> &) const
   {
     Assert(false,ExcNotImplemented());
     return 0;
index 3acf4964d03e1152c22f54a5ef172bcdb07891a4..f37fbcdef47fe02e786ed1489d5c64143ea3f68c 100644 (file)
@@ -26,7 +26,7 @@ namespace internal
     DoFLevel<1>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption() +
-              MemoryConsumption::memory_consumption (lines));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
 
@@ -35,7 +35,7 @@ namespace internal
     DoFLevel<2>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption () +
-              MemoryConsumption::memory_consumption (quads));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
 
@@ -44,7 +44,7 @@ namespace internal
     DoFLevel<3>::memory_consumption () const
     {
       return (DoFLevel<0>::memory_consumption () +
-              MemoryConsumption::memory_consumption (hexes));
+              MemoryConsumption::memory_consumption (dof_object));
     }
 
 
index 55df9b2a4bbebdedf694bc81241a4ace9f1c4594..abc67f62257a734ce6ce1bb78a787d018e3ef7dc 100644 (file)
@@ -238,6 +238,27 @@ void ConstraintMatrix::close ()
                                          &check_zero_weight),
                          line->entries.end());
 
+
+
+#ifdef DEBUG
+  // In debug mode we are computing an estimate for the maximum number
+  // of constraints so that we can bail out if there is a cycle in the
+  // constraints (which is easier than searching for cycles in the graph).
+  //
+  // Let us figure out the largest dof index. This is an upper bound for the
+  // number of constraints because it is an approximation for the number of dofs
+  // in our system.
+  unsigned int largest_idx = 0;
+  for (std::vector<ConstraintLine>::iterator line = lines.begin();
+             line!=lines.end(); ++line)
+    {
+      for (ConstraintLine::Entries::iterator it = line->entries.begin();it!=line->entries.end();++it)
+        {
+          largest_idx=std::max(largest_idx, it->first);
+        }
+    }
+#endif
+
                                    // replace references to dofs that
                                    // are themselves constrained. note
                                    // that because we may replace
@@ -271,6 +292,14 @@ void ConstraintMatrix::close ()
       for (std::vector<ConstraintLine>::iterator line = lines.begin();
            line!=lines.end(); ++line)
         {
+#ifdef DEBUG
+          // we need to keep track of how many replacements we do in this line, because we can
+          // end up in a cycle A->B->C->A without the number of entries growing.
+          unsigned int n_replacements = 0;
+#endif
+
+
+
                                            // loop over all entries of
                                            // this line (including
                                            // ones that we have
@@ -351,6 +380,15 @@ void ConstraintMatrix::close ()
                         .push_back (std::make_pair (constrained_line->entries[i].first,
                                                     constrained_line->entries[i].second *
                                                     weight));
+
+#ifdef DEBUG
+                    // keep track of how many entries we replace in this line. If we do more than
+                    // there are constraints or dofs in our system, we must have a cycle.
+                    ++n_replacements;
+                    Assert(n_replacements/2<largest_idx, ExcMessage("Cycle in constraints detected!"));
+                    if (n_replacements/2>=largest_idx)
+                      return; // this enables us to test for this Exception.
+#endif
                   }
                 else
                                                    // the DoF that we
@@ -1922,7 +1960,7 @@ ConstraintMatrix::distribute (TrilinosWrappers::MPI::Vector &vec) const
                                    // constraints, so we need to explicitly
                                    // state, that the others are doing an
                                    // insert here:
-  vec.compress (Insert);
+  vec.compress (::dealii::VectorOperation::insert);
 }
 
 
@@ -2016,7 +2054,7 @@ ConstraintMatrix::distribute (TrilinosWrappers::MPI::BlockVector &vec) const
                           it->entries[i].second);
           vec(it->line) = new_value;
         }
-      vec.block(block).compress(Insert);
+      vec.block(block).compress(::dealii::VectorOperation::insert);
     }
 }
 
index d4cf0f7536c9d8422952e0dbd001612ae979ff08..ba4fbd847f1100dfe0f9c3492addb946b814c1fb 100644 (file)
@@ -1,5 +1,5 @@
 //---------------------------------------------------------------------------
-//    $Id: vectors.inst.in 19046 2009-07-08 19:30:23Z bangerth $
+//    $Id$
 //    Version: $Name$
 //
 //    Copyright (C) 2010 by the deal.II authors
index e0e3220c2f63bb435c1ff6eebc89cb58337e58dc..1a04913d703af3b4c1363e418fb8fbe2fb22c84d 100644 (file)
@@ -48,15 +48,9 @@ namespace PETScWrappers
 
                                        // get a representation of the present
                                        // row
-#if DEAL_II_PETSC_VERSION_LT(2,2,1)
-      int          ncols;
-      int         *colnums;
-      PetscScalar *values;
-#else
       PetscInt           ncols;
       const PetscInt    *colnums;
       const PetscScalar *values;
-#endif
 
       int ierr;
       ierr = MatGetRow(*matrix, this->a_row, &ncols, &colnums, &values);
@@ -147,11 +141,7 @@ namespace PETScWrappers
 
                                      // now set all the entries of this row to
                                      // zero
-#if DEAL_II_PETSC_VERSION_LT(2,2,1)
-    const int petsc_row      = row;
-#else
     const PetscInt petsc_row = row;
-#endif
 
     IS index_set;
 #if DEAL_II_PETSC_VERSION_LT(3,2,0)
@@ -160,11 +150,6 @@ namespace PETScWrappers
     ISCreateGeneral (get_mpi_communicator(), 1, &petsc_row, PETSC_COPY_VALUES, &index_set);
 #endif
 
-
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr
-      = MatZeroRows(matrix, index_set, &new_diag_value);
-#else
 #if DEAL_II_PETSC_VERSION_LT(3,2,0)
     const int ierr
       = MatZeroRowsIS(matrix, index_set, new_diag_value);
@@ -172,8 +157,6 @@ namespace PETScWrappers
     const int ierr
       = MatZeroRowsIS(matrix, index_set, new_diag_value, PETSC_NULL, PETSC_NULL);
 #endif
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
 #if DEAL_II_PETSC_VERSION_LT(3,2,0)
@@ -195,11 +178,7 @@ namespace PETScWrappers
 
                                      // now set all the entries of these rows
                                      // to zero
-#if DEAL_II_PETSC_VERSION_LT(2,2,1)
-    const std::vector<int>      petsc_rows (rows.begin(), rows.end());
-#else
     const std::vector<PetscInt> petsc_rows (rows.begin(), rows.end());
-#endif
 
                                      // call the functions. note that we have
                                      // to call them even if #rows is empty,
@@ -214,10 +193,6 @@ namespace PETScWrappers
                      &petsc_rows[0], PETSC_COPY_VALUES, &index_set);
 #endif
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr
-      = MatZeroRows(matrix, index_set, &new_diag_value);
-#else
 #if DEAL_II_PETSC_VERSION_LT(3,2,0)
     const int ierr
       = MatZeroRowsIS(matrix, index_set, new_diag_value);
@@ -225,8 +200,6 @@ namespace PETScWrappers
     const int ierr
       = MatZeroRowsIS(matrix, index_set, new_diag_value, PETSC_NULL, PETSC_NULL);
 #endif
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
 #if DEAL_II_PETSC_VERSION_LT(3,2,0)
@@ -275,7 +248,7 @@ namespace PETScWrappers
 
 
   void
-  MatrixBase::compress ()
+  MatrixBase::compress (::dealii::VectorOperation::values operation)
   {
                                      // flush buffers
     int ierr;
@@ -386,15 +359,9 @@ namespace PETScWrappers
 
                                      // get a representation of the present
                                      // row
-#if DEAL_II_PETSC_VERSION_LT(2,2,1)
-    int ncols;
-    int         *colnums;
-    PetscScalar *values;
-#else
     PetscInt ncols;
     const PetscInt    *colnums;
     const PetscScalar *values;
-#endif
 
 //TODO: this is probably horribly inefficient; we should lobby for a way to
 //query this information from PETSc
@@ -453,6 +420,24 @@ namespace PETScWrappers
   }
 
 
+  PetscScalar
+  MatrixBase::matrix_norm_square (const VectorBase &v) const
+  {
+    Vector tmp(v.size());
+    vmult (tmp, v);
+    return tmp*v;
+  }
+
+  
+  PetscScalar
+  MatrixBase::matrix_scalar_product (const VectorBase &u,
+                                    const VectorBase &v) const
+  {
+    Vector tmp(v.size());
+    vmult (tmp, v);
+    return u*tmp;
+  }
+
 
 #if DEAL_II_PETSC_VERSION_GTE(3,1,0)
   PetscReal
@@ -473,11 +458,7 @@ namespace PETScWrappers
   MatrixBase &
   MatrixBase::operator *= (const PetscScalar a)
   {
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = MatScale (&a, matrix);
-#else
     const int ierr = MatScale (matrix, a);
-#endif
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -489,12 +470,7 @@ namespace PETScWrappers
   MatrixBase::operator /= (const PetscScalar a)
   {
     const PetscScalar factor = 1./a;
-
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = MatScale (&factor, matrix);
-#else
     const int ierr = MatScale (matrix, factor);
-#endif
 
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
@@ -574,14 +550,7 @@ namespace PETScWrappers
   void
   MatrixBase::transpose ()
   {
-    int ierr;
-
-#if DEAL_II_PETSC_VERSION_LT(3,0,0)
-    ierr = MatTranspose(matrix, PETSC_NULL);
-#else
-    ierr = MatTranspose(matrix, MAT_REUSE_MATRIX, &matrix);
-#endif
-
+    int ierr = MatTranspose(matrix, MAT_REUSE_MATRIX, &matrix);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -620,15 +589,8 @@ namespace PETScWrappers
 
                                      // First flush PETSc caches
     compress ();
-
-#if DEAL_II_PETSC_VERSION_LT(3,0,0)
-                                     // avoid warning about unused variables
-    (void) tolerance;
-
-    MatIsHermitian (matrix, &truth);
-#else
     MatIsHermitian (matrix, tolerance, &truth);
-#endif
+
     return truth;
   }
 
@@ -639,13 +601,9 @@ namespace PETScWrappers
     compress ();
 
                                        // Set options
-#if DEAL_II_PETSC_VERSION_LT(3,0,0)
-    PetscViewerSetFormat (PETSC_VIEWER_STDOUT_WORLD,
-                          PETSC_VIEWER_ASCII_DEFAULT);
-#else
     PetscViewerSetFormat (PETSC_VIEWER_STDOUT_WORLD,
                           PETSC_VIEWER_DEFAULT);
-#endif
+
                                        // Write to screen
     MatView (matrix,PETSC_VIEWER_STDOUT_WORLD);
   }
index 6f949bee070bbdfd9e069f5c6858210b1fb22eda..2760ae552700da18f9e84c04d277f1507baa9079 100644 (file)
@@ -27,12 +27,10 @@ namespace PETScWrappers
     {}
 
 
-
     BlockSparseMatrix::~BlockSparseMatrix ()
     {}
 
 
-
     BlockSparseMatrix &
     BlockSparseMatrix::operator = (const BlockSparseMatrix &m)
     {
index a590d2e30af2864ffb60aa2a6dfcbb273cfa4f19..2df82399d2060b90fd170068603724aea65bcdc4 100644 (file)
@@ -337,11 +337,7 @@ namespace PETScWrappers
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // then set flags
-#if DEAL_II_PETSC_VERSION_LT(2,3,1)
-    PCICCSetLevels (pc, additional_data.levels);
-#else
     PCFactorSetLevels (pc, additional_data.levels);
-#endif
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     ierr = PCSetFromOptions (pc);
@@ -386,11 +382,7 @@ namespace PETScWrappers
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // then set flags
-#if DEAL_II_PETSC_VERSION_LT(2,3,1)
-    PCILUSetLevels (pc, additional_data.levels);
-#else
     PCFactorSetLevels (pc, additional_data.levels);
-#endif
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     ierr = PCSetFromOptions (pc);
@@ -529,26 +521,17 @@ namespace PETScWrappers
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // set flags as given
-#if DEAL_II_PETSC_VERSION_LT(2,3,1)
-    ierr = PCLUSetPivoting (pc, additional_data.pivoting);
-#elif DEAL_II_PETSC_VERSION_LT(3,0,1)
+#if DEAL_II_PETSC_VERSION_LT(3,0,1)
     ierr = PCFactorSetPivoting (pc, additional_data.pivoting);
 #else
     ierr = PCFactorSetColumnPivot (pc, additional_data.pivoting);
 #endif
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    ierr = PCLUSetZeroPivot (pc, additional_data.zero_pivot);
-#else
     ierr = PCFactorSetZeroPivot (pc, additional_data.zero_pivot);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    ierr = PCLUSetDamping (pc, additional_data.damping);
-#elif DEAL_II_PETSC_VERSION_LT(3,0,1)
+#if DEAL_II_PETSC_VERSION_LT(3,0,1)
     ierr = PCFactorSetShiftNonzero (pc, additional_data.damping);
 #else
     ierr = PCFactorSetShiftAmount (pc, additional_data.damping);
@@ -562,7 +545,6 @@ namespace PETScWrappers
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
-
 }
 
 DEAL_II_NAMESPACE_CLOSE
index 03245ad41fbd6edb91ebafe4704450134e0b6ac1..d01dae47f093932a1cea97103968cb4552016564 100644 (file)
@@ -11,7 +11,7 @@
 //
 //---------------------------------------------------------------------------
 
-
+#include <deal.II/base/logstream.h>
 #include <deal.II/lac/petsc_solver.h>
 
 #ifdef DEAL_II_USE_PETSC
@@ -21,9 +21,6 @@
 #  include <deal.II/lac/petsc_precondition.h>
 #  include <cmath>
 
-#if DEAL_II_PETSC_VERSION_LT(2,2,0)
-#include <petscsles.h>
-#endif
 #include <petscversion.h>
 
 DEAL_II_NAMESPACE_OPEN
@@ -41,13 +38,6 @@ namespace PETScWrappers
 #endif
 
     AssertThrow (ierr == 0, ExcPETScError(ierr));
-
-                                     // and destroy the solver object if we
-                                     // are in old PETSc mode
-#if DEAL_II_PETSC_VERSION_LT(2,2,0)
-    ierr = SLESDestroy (sles);
-    AssertThrow (ierr == 0, ExcPETScError(ierr));
-#endif
   }
 
 
@@ -104,15 +94,9 @@ namespace PETScWrappers
                                          // checks with the solver_control
                                          // object we have in this object for
                                          // convergence
-#if DEAL_II_PETSC_VERSION_LT(3,0,0)
-        KSPSetConvergenceTest (solver_data->ksp, &convergence_test,
-                               reinterpret_cast<void *>(&solver_control));
-#else
         KSPSetConvergenceTest (solver_data->ksp, &convergence_test,
                                reinterpret_cast<void *>(&solver_control),
                                PETSC_NULL);
-#endif
-
       }
 
                                      // set the command line option prefix name
@@ -231,12 +215,8 @@ namespace PETScWrappers
   void
   SolverRichardson::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPRICHARDSON));
+    ierr = KSPSetType (ksp, KSPRICHARDSON);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // set the damping factor from the data
@@ -280,16 +260,16 @@ namespace PETScWrappers
   void
   SolverChebychev::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
+                                     // set the type of solver. note the
+                                     // completely pointless change in
+                                     // spelling Chebyshev between PETSc 3.2
+                                     // and 3.3...
     int ierr;
 
 #if DEAL_II_PETSC_VERSION_LT(3,3,0)
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPCHEBYCHEV));
+    ierr = KSPSetType (ksp, KSPCHEBYCHEV);
 #else
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPCHEBYSHEV));
+    ierr = KSPSetType (ksp, KSPCHEBYSHEV);
 #endif
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
@@ -314,12 +294,8 @@ namespace PETScWrappers
   void
   SolverCG::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPCG));
+    ierr = KSPSetType (ksp, KSPCG);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -343,12 +319,8 @@ namespace PETScWrappers
   void
   SolverBiCG::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPBICG));
+    ierr = KSPSetType (ksp, KSPBICG);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -382,12 +354,8 @@ namespace PETScWrappers
   void
   SolverGMRES::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPGMRES));
+    ierr = KSPSetType (ksp, KSPGMRES);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // set the restart parameter from the
@@ -453,12 +421,8 @@ namespace PETScWrappers
   void
   SolverBicgstab::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPBCGS));
+    ierr = KSPSetType (ksp, KSPBCGS);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -482,12 +446,8 @@ namespace PETScWrappers
   void
   SolverCGS::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPCGS));
+    ierr = KSPSetType (ksp, KSPCGS);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -511,12 +471,8 @@ namespace PETScWrappers
   void
   SolverTFQMR::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPTFQMR));
+    ierr = KSPSetType (ksp, KSPTFQMR);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -540,12 +496,8 @@ namespace PETScWrappers
   void
   SolverTCQMR::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPTCQMR));
+    ierr = KSPSetType (ksp, KSPTCQMR);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -569,12 +521,8 @@ namespace PETScWrappers
   void
   SolverCR::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPCR));
+    ierr = KSPSetType (ksp, KSPCR);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -598,12 +546,8 @@ namespace PETScWrappers
   void
   SolverLSQR::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPLSQR));
+    ierr = KSPSetType (ksp, KSPLSQR);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // in the deal.II solvers, we always
@@ -627,12 +571,8 @@ namespace PETScWrappers
   void
   SolverPreOnly::set_solver_type (KSP &ksp) const
   {
-                                     // set the type of solver. work around a
-                                     // problem in PETSc 2.1.6, where it asks
-                                     // for a char*, even though KSPXXXX is of
-                                     // type const char*
     int ierr;
-    ierr = KSPSetType (ksp, const_cast<char *>(KSPPREONLY));
+    ierr = KSPSetType (ksp, KSPPREONLY);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
                                      // The KSPPREONLY solver of
@@ -651,6 +591,277 @@ namespace PETScWrappers
     KSPSetInitialGuessNonzero (ksp, PETSC_FALSE);
   }
 
+
+/* ---------------------- SparseDirectMUMPS------------------------ */
+
+  SparseDirectMUMPS::SparseDirectMUMPS (SolverControl      &cn,
+                                       const MPI_Comm       &mpi_communicator,
+                                       const AdditionalData &data)
+                      :
+                      SolverBase (cn, mpi_communicator),
+                      additional_data (data)
+  {}
+
+
+  void
+  SparseDirectMUMPS::set_solver_type (KSP &ksp) const
+  {
+                               /**
+                                * KSPPREONLY implements a stub
+                                * method that applies only the
+                                * preconditioner.  Its use is due
+                                * to SparseDirectMUMPS being
+                                * a direct (rather than iterative)
+                                * solver
+                                */
+    int ierr;
+    ierr = KSPSetType (ksp, KSPPREONLY);
+    AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * The KSPPREONLY solver of
+                                * PETSc never calls the convergence
+                                * monitor, which leads to failure
+                                * even when everything was ok.
+                                * Therefore, the SolverControl
+                                * status is set to some nice
+                                * values, which guarantee a nice
+                                * result at the end of the solution
+                                * process.
+                                */
+    solver_control.check (1, 0.0);
+
+                               /**
+                                * Using a PREONLY solver with a
+                                * nonzero initial guess leads PETSc
+                                * to produce some error messages.
+                                */
+    KSPSetInitialGuessNonzero (ksp, PETSC_FALSE);
+  }
+
+  void
+  SparseDirectMUMPS::solve (const MatrixBase &A,
+                            VectorBase       &x,
+                            const VectorBase &b)
+  {
+#ifdef PETSC_HAVE_MUMPS
+                               /**
+                                * had some trouble with the
+                                * deallog printing to console
+                                * the outcome of the solve function
+                                * for every process. Brought
+                                * down the depth level to zero
+                                * to alleviate this
+                                */
+    deallog.depth_console (0);
+    int ierr;
+
+                               /**
+                                * factorization matrix to be
+                                * obtained from MUMPS
+                                */
+    Mat F;
+
+                               /**
+                                * setting MUMPS integer control
+                                * parameters ICNTL to be passed
+                                * to MUMPS.  Setting
+                                * entry 7 of MUMPS ICNTL array
+                                * (of size 40) to a value of 2.
+                                * This sets use of Approximate
+                                * Minimum Fill (AMF)
+                                */
+    PetscInt ival=2, icntl=7;
+                               /**
+                                * number of iterations to
+                                * solution (should be 1)
+                                * for a direct solver
+                                */
+    PetscInt its;
+                               /**
+                                * norm of residual
+                                */
+    PetscReal rnorm;
+
+                               /**
+                                * creating a solver object
+                                * if this is necessary
+                                */
+    if (solver_data.get() == 0)
+    {
+      solver_data.reset (new SolverDataMUMPS ());
+
+                               /**
+                                * creates the default KSP
+                                * context and puts it in
+                                * the location solver_data->ksp
+                                */
+      ierr = KSPCreate (mpi_communicator, &solver_data->ksp);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * set the matrices involved.
+                                * the last argument is irrelevant
+                                * here, since we use the solver
+                                * only once anyway
+                                */
+      ierr = KSPSetOperators (solver_data->ksp, A, A,
+                             DIFFERENT_NONZERO_PATTERN);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * setting the solver type
+                                */
+      set_solver_type (solver_data->ksp);
+
+                               /**
+                                * getting the associated
+                                * preconditioner context
+                                */
+      ierr = KSPGetPC (solver_data->ksp, & solver_data->pc);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * build PETSc PC for particular
+                                * PCLU preconditioner
+                                * (note: if the matrix is
+                                *  symmetric, then a cholesky
+                                *  decomposition PCCHOLESKY
+                                *  could be used)
+                                 */
+      ierr = PCSetType (solver_data->pc, PCLU);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * convergence monitor function
+                                * that checks with the solver_control
+                                * object for convergence
+                                */
+      KSPSetConvergenceTest (solver_data->ksp, &convergence_test,
+                            reinterpret_cast<void *>(&solver_control),
+                            PETSC_NULL);
+
+                               /**
+                                * set the software that is to be
+                                * used to perform the lu factorization
+                                * here we start to see differences
+                                * with the base class solve function
+                                */
+      ierr = PCFactorSetMatSolverPackage (solver_data->pc, MATSOLVERMUMPS);
+      AssertThrow (ierr == 0, ExcPETScError (ierr));
+
+                               /**
+                                * set up the package to call
+                                * for the factorization
+                                */
+      ierr = PCFactorSetUpMatSolverPackage (solver_data->pc);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * get the factored matrix F from the
+                                * preconditioner context.  This routine
+                                * is valid only for LU, ILU, Cholesky,
+                                * and imcomplete Cholesky
+                                */
+      ierr = PCFactorGetMatrix(solver_data->pc, &F);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * Passing the control parameters
+                                * to MUMPS
+                                */
+      ierr = MatMumpsSetIcntl (F, icntl, ival);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+    }
+
+                               /**
+                                * solve the linear system
+                                */
+    ierr = KSPSolve (solver_data->ksp, b, x);
+    AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                               /**
+                                * in case of failure
+                                * throw exception
+                                */
+    if (solver_control.last_check() != SolverControl::success)
+      throw SolverControl::NoConvergence (solver_control.last_step(),
+                                         solver_control.last_value());
+    else
+    {
+      PetscPrintf(PETSC_COMM_WORLD, "Success.  MUMPS has solved.\n");
+
+                                /**
+                                 * obtain convergence
+                                 * information. obtain
+                                 * the number of iterations
+                                 * and residual norm
+                                 */
+      ierr = KSPGetIterationNumber (solver_data->ksp, &its);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+      ierr = KSPGetResidualNorm (solver_data->ksp, &rnorm);
+      AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                                /**
+                                 * print the convergence
+                                 * information
+                                 */
+      PetscPrintf(PETSC_COMM_WORLD, "Norm of residual is %G in %D iteration(s)\n",
+                        rnorm, its);
+    }
+
+#else  // PETSC_HAVE_MUMPS
+  Assert (false,
+         ExcMessage ("Your PETSc installation does not include a copy of "
+                     "MUMPS package necessary for this solver"));
+
+                                // Cast to void to silence compiler
+                                // warnings
+  (void) A; (void) x; (void) b;
+#endif
+
+  }
+
+  int SparseDirectMUMPS::convergence_test (KSP                 /*ksp*/,
+#ifdef PETSC_USE_64BIT_INDICES
+                                           const PetscInt       iteration,
+#else
+                                           const int            iteration,
+#endif
+                                           const PetscReal      residual_norm,
+                                           KSPConvergedReason   *reason,
+                                           void                 *solver_control_x)
+  {
+    SolverControl &solver_control = *reinterpret_cast<SolverControl*>(solver_control_x);
+
+    const SolverControl::State state
+      = solver_control.check (iteration, residual_norm);
+
+    switch (state)
+    {
+      case ::dealii::SolverControl::iterate:
+            *reason = KSP_CONVERGED_ITERATING;
+            break;
+
+      case ::dealii::SolverControl::success:
+            *reason = static_cast<KSPConvergedReason>(1);
+            break;
+
+      case ::dealii::SolverControl::failure:
+            if (solver_control.last_step() > solver_control.max_steps())
+              *reason = KSP_DIVERGED_ITS;
+            else
+              *reason = KSP_DIVERGED_DTOL;
+            break;
+
+      default:
+            Assert (false, ExcNotImplemented());
+    }
+
+    return 0;
+  }
+
 }
 
 DEAL_II_NAMESPACE_CLOSE
index 20dcc6fd0ec9c68d936184481ff969495821855d..1369aa84c7b9a7095a16e8c094626377b6c29deb 100644 (file)
@@ -100,7 +100,7 @@ namespace PETScWrappers
               else
                 {
                                                    //ghost entry
-                  unsigned ghostidx
+                  unsigned int ghostidx
                     = vector.ghost_indices.index_within_set(index);
 
                   Assert(ghostidx+end-begin<(unsigned int)lsize, ExcInternalError());
@@ -177,7 +177,7 @@ namespace PETScWrappers
   VectorBase::VectorBase ()
                   :
                   ghosted(false),
-                  last_action (LastAction::none),
+                  last_action (::dealii::VectorOperation::unknown),
                   attained_ownership(true)
   {}
 
@@ -188,7 +188,7 @@ namespace PETScWrappers
                   Subscriptor (),
                   ghosted(v.ghosted),
                   ghost_indices(v.ghost_indices),
-                  last_action (LastAction::none),
+                  last_action (::dealii::VectorOperation::unknown),
                   attained_ownership(true)
   {
     int ierr = VecDuplicate (v.vector, &vector);
@@ -205,7 +205,7 @@ namespace PETScWrappers
                   Subscriptor (),
                   vector(v),
                   ghosted(false),
-                  last_action (LastAction::none),
+                  last_action (::dealii::VectorOperation::unknown),
                   attained_ownership(false)
   {}
 
@@ -238,12 +238,7 @@ namespace PETScWrappers
                                      // (see test bits/petsc_65)
     compress ();
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecSet (&s, vector);
-#else
     const int ierr = VecSet (vector, s);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -405,24 +400,32 @@ namespace PETScWrappers
 
 
   void
-  VectorBase::compress ()
+  VectorBase::compress (::dealii::VectorOperation::values operation)
   {
-    // note that one may think that we only need to do something
-    // if in fact the state is anything but LastAction::none. but
-    // that's not true: one frequently gets into situations where
-    // only one processor (or a subset of processors) actually writes
-    // something into a vector, but we still need to call
-    // VecAssemblyBegin/End on all processors, even those that are
-    // still in LastAction::none state
+                                     // note that one may think that
+                                     // we only need to do something
+                                     // if in fact the state is
+                                     // anything but
+                                     // last_action::unknown. but
+                                     // that's not true: one
+                                     // frequently gets into
+                                     // situations where only one
+                                     // processor (or a subset of
+                                     // processors) actually writes
+                                     // something into a vector, but
+                                     // we still need to call
+                                     // VecAssemblyBegin/End on all
+                                     // processors.
     int ierr;
     ierr = VecAssemblyBegin(vector);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
     ierr = VecAssemblyEnd(vector);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
-    // reset the last action field to indicate that we're back to
-    // a pristine state
-    last_action = VectorBase::LastAction::none;
+                                     // reset the last action field to
+                                     // indicate that we're back to a
+                                     // pristine state
+    last_action = ::dealii::VectorOperation::unknown;
   }
 
 
@@ -758,12 +761,7 @@ namespace PETScWrappers
 
     Assert (numbers::is_finite(a), ExcNumberNotFinite());
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecScale (&a, vector);
-#else
     const int ierr = VecScale (vector, a);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -778,15 +776,9 @@ namespace PETScWrappers
     Assert (numbers::is_finite(a), ExcNumberNotFinite());
 
     const PetscScalar factor = 1./a;
-
     Assert (numbers::is_finite(factor), ExcNumberNotFinite());
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecScale (&factor, vector);
-#else
     const int ierr = VecScale (vector, factor);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -797,13 +789,7 @@ namespace PETScWrappers
   VectorBase &
   VectorBase::operator += (const VectorBase &v)
   {
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const PetscScalar one = 1.0;
-    const int ierr = VecAXPY (&one, v, vector);
-#else
     const int ierr = VecAXPY (vector, 1, v);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -814,13 +800,7 @@ namespace PETScWrappers
   VectorBase &
   VectorBase::operator -= (const VectorBase &v)
   {
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const PetscScalar minus_one = -1.0;
-    const int ierr = VecAXPY (&minus_one, v, vector);
-#else
     const int ierr = VecAXPY (vector, -1, v);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
 
     return *this;
@@ -831,15 +811,9 @@ namespace PETScWrappers
   void
   VectorBase::add (const PetscScalar s)
   {
-
     Assert (numbers::is_finite(s), ExcNumberNotFinite());
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecShift (&s, vector);
-#else
     const int ierr = VecShift (vector, s);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -857,15 +831,9 @@ namespace PETScWrappers
   VectorBase::add (const PetscScalar a,
                    const VectorBase     &v)
   {
-
     Assert (numbers::is_finite(a), ExcNumberNotFinite());
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecAXPY (&a, v, vector);
-#else
     const int ierr = VecAXPY (vector, a, v);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -877,19 +845,13 @@ namespace PETScWrappers
                    const PetscScalar b,
                    const VectorBase &w)
   {
-
     Assert (numbers::is_finite(a), ExcNumberNotFinite());
     Assert (numbers::is_finite(b), ExcNumberNotFinite());
 
     const PetscScalar weights[2] = {a,b};
     Vec               addends[2] = {v.vector, w.vector};
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecMAXPY (2, weights, vector, addends);
-#else
     const int ierr = VecMAXPY (vector, 2, weights, addends);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -899,15 +861,9 @@ namespace PETScWrappers
   VectorBase::sadd (const PetscScalar s,
                     const VectorBase &v)
   {
-
     Assert (numbers::is_finite(s), ExcNumberNotFinite());
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecAYPX (&s, v, vector);
-#else
     const int ierr = VecAYPX (vector, s, v);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -938,7 +894,6 @@ namespace PETScWrappers
                     const PetscScalar b,
                     const VectorBase     &w)
   {
-
     Assert (numbers::is_finite(s), ExcNumberNotFinite());
     Assert (numbers::is_finite(a), ExcNumberNotFinite());
     Assert (numbers::is_finite(b), ExcNumberNotFinite());
@@ -950,12 +905,7 @@ namespace PETScWrappers
     const PetscScalar weights[2] = {a,b};
     Vec               addends[2] = {v.vector,w.vector};
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecMAXPY (2, weights, vector, addends);
-#else
     const int ierr = VecMAXPY (vector, 2, weights, addends);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -983,12 +933,7 @@ namespace PETScWrappers
     const PetscScalar weights[3] = {a,b,c};
     Vec               addends[3] = {v.vector, w.vector, x.vector};
 
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecMAXPY (3, weights, vector, addends);
-#else
     const int ierr = VecMAXPY (vector, 3, weights, addends);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -1053,12 +998,7 @@ namespace PETScWrappers
   VectorBase::ratio (const VectorBase &a,
                      const VectorBase &b)
   {
-#if DEAL_II_PETSC_VERSION_LT(2,3,0)
-    const int ierr = VecPointwiseDivide (a, b, vector);
-#else
     const int ierr = VecPointwiseDivide (vector, a, b);
-#endif
-
     AssertThrow (ierr == 0, ExcPETScError(ierr));
   }
 
@@ -1120,7 +1060,7 @@ namespace PETScWrappers
   std::size_t
   VectorBase::memory_consumption () const
   {
-    std::size_t mem = sizeof(Vec)+sizeof(LastAction::Values)
+    std::size_t mem = sizeof(Vec)+sizeof(last_action)
       +MemoryConsumption::memory_consumption(ghosted)
       +MemoryConsumption::memory_consumption(ghost_indices);
 
@@ -1145,14 +1085,13 @@ namespace PETScWrappers
                                     const PetscScalar  *values,
                                     const bool          add_values)
   {
-    Assert ((last_action == (add_values ?
-                             LastAction::add :
-                             LastAction::insert))
+    ::dealii::VectorOperation::values action = (add_values ?
+                                               ::dealii::VectorOperation::add :
+                                               ::dealii::VectorOperation::insert);
+    Assert ((last_action == action)
             ||
-            (last_action == LastAction::none),
-            internal::VectorReference::ExcWrongMode ((add_values ?
-                                                      LastAction::add :
-                                                      LastAction::insert),
+            (last_action == ::dealii::VectorOperation::unknown),
+            internal::VectorReference::ExcWrongMode (action,
                                                      last_action));
 
                                      // VecSetValues complains if we
@@ -1181,9 +1120,7 @@ namespace PETScWrappers
 
     // set the mode here, independent of whether we have actually
     // written elements or whether the list was empty
-    last_action = (add_values ?
-                   VectorBase::LastAction::add :
-                   VectorBase::LastAction::insert);
+    last_action = action;
   }
 
 
index 22432f1757c7dc8ddb1e12c5db038e641740ce26..8a294d6a73032320f02acfa587e7237e785463b4 100644 (file)
 #endif
 
 #ifdef DEAL_II_USE_METIS
-// This is sorta stupid. what we really would like to do here is this:
-//   extern "C" {
-//   #  include <metis.h>
-//   }
-// The problem with this is that (i) metis.h declares a couple of
-// functions with different exception specifications than are
-// declared in standard header files (in particular the drand48
-// function every one who's worked with Metis seems to know about);
-// and (ii) metis.h may include <mpi.h> which if we run a C++
-// compiler may include mpicxx.h -- but that leads to trouble
-// because we have wrapped an
-//   extern "C" {...}
-// around the whole block that now also includes a C++ header :-(
-//
-// The correct solution, of course, would be if Metis would produce
-// a new dot release after 10 years that would remove the unnecessary
-// function prototypes, and that would wrap the contents into
-//   #ifdef __C_PLUSPLUS__
-//   extern "C" {
-//   #endif
-// But that appears to not be happening, and so we have to do the
-// following hack where we just forward declare everything ourselves :-(
-
 extern "C"
 {
-// the following is from Metis-4.0/Lib/struct.h:
-  typedef int idxtype;
-// and this is from proto.h
-  void
-  METIS_PartGraphKway(int *, idxtype *, idxtype *,
-                      idxtype *, idxtype *, int *,
-                      int *, int *, int *, int *, idxtype *);
-  void
-  METIS_PartGraphRecursive(int *, idxtype *, idxtype *,
-                           idxtype *, idxtype *, int *,
-                           int *, int *, int *, int *, idxtype *);
+#include <metis.h>
 }
 #endif
 
@@ -103,28 +70,33 @@ namespace SparsityTools
                                      // simple, since METIS wants exactly our
                                      // compressed row storage format. we only
                                      // have to set up a few auxiliary arrays
-    int
-      n = static_cast<signed int>(sparsity_pattern.n_rows()),
-      wgtflag = 0,                          // no weights on nodes or edges
-      numflag = 0,                          // C-style 0-based numbering
+    idx_t
+      n       = static_cast<signed int>(sparsity_pattern.n_rows()),
+      ncon    = 1,                              // number of balancing constraints (should be >0)
+      wgtflag = 0,                              // no weights on nodes or edges
+      numflag = 0,                              // C-style 0-based numbering
       nparts  = static_cast<int>(n_partitions), // number of subdomains to create
-      dummy;                                // the numbers of edges cut by the
-                                     //   resulting partition
+      dummy;                                    // the numbers of edges cut by the
+                                               // resulting partition
 
                                      // use default options for METIS
-    int options[5] = { 0,0,0,0,0 };
+    idx_t options[METIS_NOPTIONS];
+    METIS_SetDefaultOptions (options);
 
                                      // one more nuisance: we have to copy our
                                      // own data to arrays that store signed
                                      // integers :-(
-    std::vector<idxtype> int_rowstart (sparsity_pattern.get_rowstart_indices(),
-                                       sparsity_pattern.get_rowstart_indices() +
-                                       sparsity_pattern.n_rows()+1);
-    std::vector<idxtype> int_colnums (sparsity_pattern.get_column_numbers(),
-                                      sparsity_pattern.get_column_numbers()+
-                                      int_rowstart[sparsity_pattern.n_rows()]);
+    std::vector<idx_t> int_rowstart (sparsity_pattern.get_rowstart_indices(),
+                                    sparsity_pattern.get_rowstart_indices() +
+                                    sparsity_pattern.n_rows()+1);
+    std::vector<idx_t> int_colnums (sparsity_pattern.get_column_numbers(),
+                                   sparsity_pattern.get_column_numbers()+
+                                   int_rowstart[sparsity_pattern.n_rows()]);
+
+    std::vector<idx_t> int_partition_indices (sparsity_pattern.n_rows());
 
-    std::vector<idxtype> int_partition_indices (sparsity_pattern.n_rows());
+                                     // Make use of METIS' error code.
+    int ierr;
 
                                      // Select which type of partitioning to
                                      // create
@@ -132,17 +104,23 @@ namespace SparsityTools
                                      // Use recursive if the number of
                                      // partitions is less than or equal to 8
     if (n_partitions <= 8)
-      METIS_PartGraphRecursive(&n, &int_rowstart[0], &int_colnums[0],
-                               NULL, NULL,
-                               &wgtflag, &numflag, &nparts, &options[0],
-                               &dummy, &int_partition_indices[0]);
+      ierr = METIS_PartGraphRecursive(&n, &ncon, &int_rowstart[0], &int_colnums[0],
+                                     NULL, NULL, NULL,
+                                     &nparts,NULL,NULL,&options[0],
+                                     &dummy,&int_partition_indices[0]);
 
-                                     // Otherwise  use kway
+                                     // Otherwise use kway
     else
-      METIS_PartGraphKway(&n, &int_rowstart[0], &int_colnums[0],
-                          NULL, NULL,
-                          &wgtflag, &numflag, &nparts, &options[0],
-                          &dummy, &int_partition_indices[0]);
+      ierr = METIS_PartGraphKway(&n, &ncon, &int_rowstart[0], &int_colnums[0],
+                                NULL, NULL, NULL,
+                                &nparts,NULL,NULL,&options[0],
+                                &dummy,&int_partition_indices[0]);
+
+                                     // If metis returns normally, an
+                                     // error code METIS_OK=1 is
+                                     // returned from the above
+                                     // functions (see metish.h)
+    AssertThrow (ierr == 1, ExcMETISError (ierr));
 
                                      // now copy back generated indices into the
                                      // output array
@@ -517,9 +495,9 @@ namespace SparsityTools
           MPI_Recv(&recv_buf[0], len, MPI_BYTE, status.MPI_SOURCE,
                    status.MPI_TAG, mpi_comm, &status);
 
-          unsigned int *ptr=&recv_buf[0];
-          unsigned int *end=&*(--recv_buf.end());
-          while (ptr<end)
+          std::vector<unsigned int>::const_iterator ptr = recv_buf.begin();
+          std::vector<unsigned int>::const_iterator end = recv_buf.end();
+          while (ptr+1<end)
             {
               unsigned int num=*(ptr++);
               unsigned int row=*(ptr++);
@@ -529,7 +507,7 @@ namespace SparsityTools
                   ptr++;
                 }
             }
-          Assert(ptr-1==end, ExcInternalError());
+          Assert(ptr==end, ExcInternalError());
 
         }
     }
index a107de8656182df532f2f2e79818447a82349f2e..e6452b6b8f599a3b1ee81e615bc56fede7ae6bfd 100644 (file)
@@ -249,14 +249,6 @@ namespace TrilinosWrappers
 
 
 
-  void
-  BlockSparseMatrix::compress()
-  {
-    for (unsigned int r=0; r<this->n_block_rows(); ++r)
-      for (unsigned int c=0; c<this->n_block_cols(); ++c)
-        this->block(r,c).compress();
-  }
-
 
 
   void
index e15cca09720457dbb874a9813921ce9293dd169e..3b3f5136958cf5dca7dfe743a256f9b28ccabe7c 100644 (file)
@@ -174,15 +174,6 @@ namespace TrilinosWrappers
 
 
 
-    void
-    BlockVector::compress (const Epetra_CombineMode last_action)
-    {
-      for (unsigned int i=0; i<n_blocks(); ++i)
-        components[i].compress(last_action);
-    }
-
-
-
     void BlockVector::print (std::ostream       &out,
                              const unsigned int  precision,
                              const bool          scientific,
index 4ca860c81013e175b19e226b01ff53cf1b12db95..2534911edc1ad5ee8ff7a502c9315c4d6b3b399c 100644 (file)
@@ -911,12 +911,19 @@ namespace TrilinosWrappers
   SparseMatrix::diag_element (const unsigned int i) const
   {
     Assert (m() == n(), ExcNotQuadratic());
-
+    
+#ifdef DEBUG
+                                    // use operator() in debug mode because
+                                    // it checks if this is a valid element
+                                    // (in parallel)
+    return operator()(i,i);
+#else    
                                   // Trilinos doesn't seem to have a
                                   // more efficient way to access the
                                   // diagonal than by just using the
                                   // standard el(i,j) function.
     return el(i,i);
+#endif    
   }
 
 
index ddda7908ac0c4327c3078f29847680d07c3a73d3..3d8f1a05ad38efebe1a822c0ecba54ca79d8f1af 100644 (file)
@@ -61,6 +61,7 @@ namespace TrilinosWrappers
     {
       last_action = Zero;
       vector.reset (new Epetra_FEVector(*v.vector));
+      has_ghosts = v.has_ghosts;
     }
 
 
@@ -124,6 +125,7 @@ namespace TrilinosWrappers
           Assert (ierr == 0, ExcTrilinosError(ierr));
         }
 
+      has_ghosts = vector->Map().UniqueGIDs()==false;
       last_action = Zero;
     }
 
@@ -158,6 +160,7 @@ namespace TrilinosWrappers
           if (vector->Map().SameAs(v.vector->Map()) == false)
             {
               vector.reset (new Epetra_FEVector(v.vector->Map()));
+              has_ghosts = v.has_ghosts;
               last_action = Zero;
             }
           else if (fast == false)
@@ -306,6 +309,7 @@ namespace TrilinosWrappers
         {
           vector.reset (new Epetra_FEVector(*v.vector));
           last_action = Zero;
+          has_ghosts = v.has_ghosts;
         }
 
       return *this;
index afb660aa725acae7b2d694423f4c296c06f232a0..a90bb9e0ae05ff9f48e1b96fedc8b0fc0d6597b8 100644 (file)
@@ -57,6 +57,7 @@ namespace TrilinosWrappers
                         :
                         last_action (Zero),
                         compressed  (true),
+                        has_ghosts  (false),
 #ifdef DEAL_II_COMPILER_SUPPORTS_MPI
                         vector(new Epetra_FEVector(
                                  Epetra_Map(0,0,Epetra_MpiComm(MPI_COMM_SELF))))
@@ -73,6 +74,7 @@ namespace TrilinosWrappers
                         Subscriptor(),
                         last_action (Zero),
                         compressed (true),
+                        has_ghosts  (v.has_ghosts),
                         vector(new Epetra_FEVector(*v.vector))
   {}
 
@@ -95,6 +97,7 @@ namespace TrilinosWrappers
     Epetra_Map map (0, 0, Epetra_SerialComm());
 #endif
 
+    has_ghosts = false;
     vector.reset (new Epetra_FEVector(map));
     last_action = Zero;
   }
@@ -111,6 +114,7 @@ namespace TrilinosWrappers
       {
         last_action = Zero;
         vector.reset (new Epetra_FEVector(*v.vector));
+        has_ghosts = v.has_ghosts;
       }
     else
       {
index a7ba79987676a2398a4d45a3768f6bb867203b93..7434a8b67e07555945efd2f80640e23dbfb39cfe 100644 (file)
@@ -254,7 +254,7 @@ namespace internal
                        const unsigned int       local_index,
                        const int2type<1>)
           {
-            return mg_level.lines.
+            return mg_level.dof_object.
               get_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -274,7 +274,7 @@ namespace internal
                        const unsigned int       global_index,
                        const int2type<1>)
           {
-            mg_level.lines.
+            mg_level.dof_object.
               set_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -336,7 +336,7 @@ namespace internal
                        const unsigned int       local_index,
                        const int2type<2>)
           {
-            return mg_level.quads.
+            return mg_level.dof_object.
               get_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -356,7 +356,7 @@ namespace internal
                        const unsigned int       global_index,
                        const int2type<2>)
           {
-            mg_level.quads.
+            mg_level.dof_object.
               set_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -437,7 +437,7 @@ namespace internal
                        const unsigned int       local_index,
                        const int2type<3>)
           {
-            return mg_level.hexes.
+            return mg_level.dof_object.
               get_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -479,7 +479,7 @@ namespace internal
                        const unsigned int       global_index,
                        const int2type<3>)
           {
-            mg_level.hexes.
+            mg_level.dof_object.
               set_dof_index (mg_dof_handler,
                              obj_index,
                              fe_index,
@@ -513,7 +513,7 @@ namespace internal
               {
                 mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<1>);
 
-                mg_dof_handler.mg_levels.back()->lines.dofs = std::vector<unsigned int>(mg_dof_handler.get_tria().n_raw_lines(i) *
+                mg_dof_handler.mg_levels.back()->dof_object.dofs = std::vector<unsigned int>(mg_dof_handler.get_tria().n_raw_lines(i) *
                                                                                         mg_dof_handler.get_fe().dofs_per_line,
                                                                                         DoFHandler<1>::invalid_dof_index);
               }
@@ -592,7 +592,7 @@ namespace internal
               {
                 mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<2>);
 
-                mg_dof_handler.mg_levels.back()->quads.dofs = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_quads(i) *
+                mg_dof_handler.mg_levels.back()->dof_object.dofs = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_quads(i) *
                                                                                          mg_dof_handler.get_fe().dofs_per_quad,
                                                                                          DoFHandler<2>::invalid_dof_index);
               }
@@ -682,7 +682,7 @@ namespace internal
               {
                 mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<3>);
 
-                mg_dof_handler.mg_levels.back()->hexes.dofs
+                mg_dof_handler.mg_levels.back()->dof_object.dofs
                   = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_hexs(i) *
                                                mg_dof_handler.get_fe().dofs_per_hex,
                                                DoFHandler<3>::invalid_dof_index);
@@ -1972,8 +1972,7 @@ set_dof_index (const unsigned int obj_level,
 
 
 template <int dim, int spacedim>
-void MGDoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spacedim> &fe,
-                                         const unsigned int        offset)
+void MGDoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spacedim> &fe)
 {
                                    // first distribute global dofs
   DoFHandler<dim,spacedim>::distribute_dofs (fe);
@@ -1999,7 +1998,7 @@ void MGDoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spaced
                                    // separately
   for (unsigned int level=0; level<this->get_tria().n_levels(); ++level)
     {
-      unsigned int next_free_dof = offset;
+      unsigned int next_free_dof = 0;
       cell_iterator cell = begin(level),
                     endc = end(level);
 
@@ -2063,8 +2062,8 @@ void MGDoFHandler<1>::renumber_dofs (const unsigned int level,
                       new_numbers[i->get_index (level, d,
                                                 this->get_fe().dofs_per_vertex)]);
 
-  for (std::vector<unsigned int>::iterator i=mg_levels[level]->lines.dofs.begin();
-       i!=mg_levels[level]->lines.dofs.end(); ++i)
+  for (std::vector<unsigned int>::iterator i=mg_levels[level]->dof_object.dofs.begin();
+       i!=mg_levels[level]->dof_object.dofs.end(); ++i)
     {
       if (*i != DoFHandler<1>::invalid_dof_index)
         {
@@ -2124,8 +2123,8 @@ void MGDoFHandler<2>::renumber_dofs (const unsigned int  level,
       const_cast<Triangulation<2> &>(this->get_tria()).load_user_flags (user_flags);
     }
 
-  for (std::vector<unsigned int>::iterator i=mg_levels[level]->quads.dofs.begin();
-       i!=mg_levels[level]->quads.dofs.end(); ++i)
+  for (std::vector<unsigned int>::iterator i=mg_levels[level]->dof_object.dofs.begin();
+       i!=mg_levels[level]->dof_object.dofs.end(); ++i)
     {
       if (*i != DoFHandler<2>::invalid_dof_index)
         {
@@ -2221,8 +2220,8 @@ void MGDoFHandler<3>::renumber_dofs (const unsigned int  level,
     }
 
                                    //HEX DoFs
-  for (std::vector<unsigned int>::iterator i=mg_levels[level]->hexes.dofs.begin();
-       i!=mg_levels[level]->hexes.dofs.end(); ++i)
+  for (std::vector<unsigned int>::iterator i=mg_levels[level]->dof_object.dofs.begin();
+       i!=mg_levels[level]->dof_object.dofs.end(); ++i)
     {
       if (*i != DoFHandler<3>::invalid_dof_index)
         {
index 9b54a14f498db4cbb0856aad669cf0bd3d7a34df..411b60a7e024012f628ae8e031e995659389affc 100644 (file)
@@ -1204,7 +1204,7 @@ namespace MGTools
                 {
                   const typename MGDoFHandler<dim,spacedim>::face_iterator
                     face = cell->face(face_no);
-                  const types::boundary_id_t bi = face->boundary_indicator();
+                  const types::boundary_id bi = face->boundary_indicator();
                                                    // Face is listed in
                                                    // boundary map
                   if (function_map.find(bi) != function_map.end())
@@ -1259,7 +1259,7 @@ namespace MGTools
                 }
 
               typename MGDoFHandler<dim,spacedim>::face_iterator face = cell->face(face_no);
-              const types::boundary_id_t boundary_component = face->boundary_indicator();
+              const types::boundary_id boundary_component = face->boundary_indicator();
               if (function_map.find(boundary_component) != function_map.end())
                                                  // face is of the right component
                 {
index 5f5ac9784e0c5825f94af432d29b7e986724cfa0..6ada44114c8bf6a29071074208254778f192ecb4 100644 (file)
@@ -672,7 +672,7 @@ DerivativeApproximation::approximate (const Mapping<dim,spacedim>    &mapping,
   typename DH<dim,spacedim>::active_cell_iterator cell, endc;
   cell = endc = dof_handler.begin_active();
                                    // (static_cast to avoid warnings
-                                   // about unsigned always >=0)
+                                   // about unsigned int always >=0)
   std::advance (cell, static_cast<int>(index_interval.first));
   std::advance (endc, static_cast<int>(index_interval.second));
 
index fb22599ec73a000ca917e1d174409db8c9cee94f..2f28e5e08b8ef9fa83cbe381546d65afad0811ca 100644 (file)
@@ -1,5 +1,5 @@
 //---------------------------------------------------------------------------
-//    $Id: vectors.inst.in 19046 2009-07-08 19:30:23Z bangerth $
+//    $Id$
 //    Version: $Name$
 //
 //    Copyright (C) 2010, 2012 by the deal.II authors
index 99de506b59faf539c19aa6ecb2e95e1fa3108133..95517074b6d7edc12bfc6f7354678a4ffc554497 100644 (file)
@@ -228,12 +228,12 @@ namespace internal
                                           * The subdomain id we are to care
                                           * for.
                                           */
-        const types::subdomain_id_t subdomain_id;
+        const types::subdomain_id subdomain_id;
                                          /**
                                           * The material id we are to care
                                           * for.
                                           */
-        const types::material_id_t material_id;
+        const types::material_id material_id;
 
                                          /**
                                           * Some more references to input data to
@@ -253,8 +253,8 @@ namespace internal
                       const dealii::hp::MappingCollection<DH::dimension, DH::space_dimension> &mapping,
                       const bool         need_quadrature_points,
                       const unsigned int n_solution_vectors,
-                      const types::subdomain_id_t subdomain_id,
-                      const types::material_id_t material_id,
+                      const types::subdomain_id subdomain_id,
+                      const types::material_id material_id,
                       const typename FunctionMap<spacedim>::type *neumann_bc,
                       const std::vector<bool>                component_mask,
                       const Function<spacedim>                   *coefficients);
@@ -277,8 +277,8 @@ namespace internal
                   const dealii::hp::MappingCollection<DH::dimension, DH::space_dimension> &mapping,
                   const bool     need_quadrature_points,
                   const unsigned int n_solution_vectors,
-                  const types::subdomain_id_t subdomain_id,
-                  const types::material_id_t material_id,
+                  const types::subdomain_id subdomain_id,
+                  const types::material_id material_id,
                   const typename FunctionMap<spacedim>::type *neumann_bc,
                   const std::vector<bool>                component_mask,
                   const Function<spacedim>         *coefficients)
@@ -547,7 +547,7 @@ namespace internal
                                          // difference between normal
                                          // derivative and boundary function
         {
-          const types::boundary_id_t boundary_indicator = face->boundary_indicator();
+          const types::boundary_id boundary_indicator = face->boundary_indicator();
 
           Assert (parallel_data.neumann_bc->find(boundary_indicator) !=
                   parallel_data.neumann_bc->end(),
@@ -832,7 +832,7 @@ namespace internal
     {
       const unsigned int n_solution_vectors = solutions.size();
 
-      const types::subdomain_id_t subdomain_id = parallel_data.subdomain_id;
+      const types::subdomain_id subdomain_id = parallel_data.subdomain_id;
       const unsigned int material_id  = parallel_data.material_id;
 
                                        // empty our own copy of the local face
@@ -907,7 +907,7 @@ namespace internal
                     ||
                     (cell->subdomain_id() == subdomain_id))
                    &&
-                   ((material_id == types::invalid_material_id)
+                   ((material_id == numbers::invalid_material_id)
                     ||
                     (cell->material_id() == material_id))) )
             {
@@ -927,7 +927,7 @@ namespace internal
                                  &&
                                  ((cell->neighbor(face_no)->material_id()
                                    == material_id) ||
-                                  (material_id == types::invalid_material_id));
+                                  (material_id == numbers::invalid_material_id));
               else
                 {
                   for (unsigned int sf=0; sf<face->n_children(); ++sf)
@@ -935,7 +935,7 @@ namespace internal
                           ->subdomain_id() == subdomain_id)
                          &&
                          (material_id ==
-                          types::invalid_material_id))
+                          numbers::invalid_material_id))
                         ||
                         ((cell->neighbor_child_on_subface(face_no,sf)
                           ->material_id() == material_id)
@@ -1016,8 +1016,8 @@ estimate (const Mapping<1,spacedim>      &mapping,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
                                    // just pass on to the other function
   const std::vector<const InputVector *> solutions (1, &solution);
@@ -1040,8 +1040,8 @@ estimate (const DH   &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<1,spacedim>::mapping, dof_handler, quadrature, neumann_bc, solution,
@@ -1062,8 +1062,8 @@ estimate (const DH   &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<1,spacedim>::mapping, dof_handler, quadrature, neumann_bc, solutions,
@@ -1085,8 +1085,8 @@ estimate (const Mapping<1,spacedim>      &mapping,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
                                    // just pass on to the other function
   const std::vector<const InputVector *> solutions (1, &solution);
@@ -1108,8 +1108,8 @@ estimate (const DH   &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<1,spacedim>::mapping, dof_handler, quadrature, neumann_bc, solution,
@@ -1130,8 +1130,8 @@ estimate (const DH   &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<1,spacedim>::mapping, dof_handler, quadrature, neumann_bc, solutions,
@@ -1153,8 +1153,8 @@ estimate (const Mapping<1,spacedim>                    &/*mapping*/,
           const std::vector<bool>                &/*component_mask_*/,
           const Function<spacedim>                   */*coefficient*/,
           const unsigned int,
-          const types::subdomain_id_t          /*subdomain_id*/,
-          const types::material_id_t                   /*material_id*/)
+          const types::subdomain_id          /*subdomain_id*/,
+          const types::material_id                   /*material_id*/)
 {
   Assert (false, ExcInternalError());
 }
@@ -1173,8 +1173,8 @@ estimate (const Mapping<1,spacedim>                    &mapping,
           const std::vector<bool>                  &component_mask_,
           const Function<spacedim>                   *coefficient,
           const unsigned int,
-          const types::subdomain_id_t         subdomain_id_,
-          const types::material_id_t                  material_id)
+          const types::subdomain_id         subdomain_id_,
+          const types::material_id                  material_id)
 {
 #ifdef DEAL_II_USE_P4EST
   if (dynamic_cast<const parallel::distributed::Triangulation<1,spacedim>*>
@@ -1189,7 +1189,7 @@ estimate (const Mapping<1,spacedim>                    &mapping,
                         "valid subdomain_id that can be passed here is the "
                         "one that corresponds to the locally owned subdomain id."));
 
-  const types::subdomain_id_t subdomain_id
+  const types::subdomain_id subdomain_id
     = ((dynamic_cast<const parallel::distributed::Triangulation<1,spacedim>*>
         (&dof_handler.get_tria())
         != 0)
@@ -1199,7 +1199,7 @@ estimate (const Mapping<1,spacedim>                    &mapping,
        :
        subdomain_id_);
 #else
-  const types::subdomain_id_t subdomain_id
+  const types::subdomain_id subdomain_id
     = subdomain_id_;
 #endif
 
@@ -1207,7 +1207,7 @@ estimate (const Mapping<1,spacedim>                    &mapping,
   const unsigned int n_solution_vectors = solutions.size();
 
                                    // sanity checks
-  Assert (neumann_bc.find(types::internal_face_boundary_id) == neumann_bc.end(),
+  Assert (neumann_bc.find(numbers::internal_face_boundary_id) == neumann_bc.end(),
           ExcInvalidBoundaryIndicator());
 
   for (typename FunctionMap<spacedim>::type::const_iterator i=neumann_bc.begin();
@@ -1305,7 +1305,7 @@ estimate (const Mapping<1,spacedim>                    &mapping,
          ||
          (cell->subdomain_id() == subdomain_id))
         &&
-        ((material_id == types::invalid_material_id)
+        ((material_id == numbers::invalid_material_id)
          ||
          (cell->material_id() == material_id)))
       {
@@ -1443,8 +1443,8 @@ estimate (const Mapping<dim, spacedim>      &mapping,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
                                    // just pass on to the other function
   const std::vector<const InputVector *> solutions (1, &solution);
@@ -1466,8 +1466,8 @@ estimate (const DH                &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<dim,spacedim>::mapping, dof_handler, quadrature, neumann_bc, solution,
@@ -1489,8 +1489,8 @@ estimate (const Mapping<dim, spacedim>      &mapping,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
                                    // just pass on to the other function
   const std::vector<const InputVector *> solutions (1, &solution);
@@ -1512,8 +1512,8 @@ estimate (const DH                &dof_handler,
           const std::vector<bool> &component_mask,
           const Function<spacedim>     *coefficients,
           const unsigned int       n_threads,
-          const types::subdomain_id_t subdomain_id,
-          const types::material_id_t       material_id)
+          const types::subdomain_id subdomain_id,
+          const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<dim, spacedim>::mapping, dof_handler, quadrature, neumann_bc, solution,
@@ -1537,8 +1537,8 @@ estimate (const Mapping<dim, spacedim>                  &mapping,
           const std::vector<bool>                  &component_mask_,
           const Function<spacedim>                 *coefficients,
           const unsigned int                   ,
-          const types::subdomain_id_t          subdomain_id_,
-          const types::material_id_t                   material_id)
+          const types::subdomain_id          subdomain_id_,
+          const types::material_id                   material_id)
 {
 #ifdef DEAL_II_USE_P4EST
   if (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>
@@ -1553,7 +1553,7 @@ estimate (const Mapping<dim, spacedim>                  &mapping,
                         "valid subdomain_id that can be passed here is the "
                         "one that corresponds to the locally owned subdomain id."));
 
-  const types::subdomain_id_t subdomain_id
+  const types::subdomain_id subdomain_id
     = ((dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>
         (&dof_handler.get_tria())
         != 0)
@@ -1563,7 +1563,7 @@ estimate (const Mapping<dim, spacedim>                  &mapping,
        :
        subdomain_id_);
 #else
-  const types::subdomain_id_t subdomain_id
+  const types::subdomain_id subdomain_id
     = subdomain_id_;
 #endif
 
@@ -1668,7 +1668,7 @@ estimate (const Mapping<dim, spacedim>                  &mapping,
           ||
           (cell->subdomain_id() == subdomain_id))
          &&
-         ((material_id == types::invalid_material_id)
+         ((material_id == numbers::invalid_material_id)
           ||
           (cell->material_id() == material_id)))
       {
@@ -1714,8 +1714,8 @@ estimate (const Mapping<dim, spacedim>                  &mapping,
           const std::vector<bool>                  &component_mask,
           const Function<spacedim>                 *coefficients,
           const unsigned int                   n_threads,
-          const types::subdomain_id_t          subdomain_id,
-          const types::material_id_t                   material_id)
+          const types::subdomain_id          subdomain_id,
+          const types::material_id                   material_id)
 {
                                    // forward to the function with the QCollection
   estimate (mapping, dof_handler,
@@ -1736,8 +1736,8 @@ void KellyErrorEstimator<dim, spacedim>::estimate (const DH
                                          const std::vector<bool>                  &component_mask,
                                          const Function<spacedim>                 *coefficients,
                                          const unsigned int                   n_threads,
-                                         const types::subdomain_id_t subdomain_id,
-                                         const types::material_id_t       material_id)
+                                         const types::subdomain_id subdomain_id,
+                                         const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<dim, spacedim>::mapping, dof_handler, quadrature, neumann_bc, solutions,
@@ -1757,8 +1757,8 @@ void KellyErrorEstimator<dim, spacedim>::estimate (const DH
                                          const std::vector<bool>                  &component_mask,
                                          const Function<spacedim>                 *coefficients,
                                          const unsigned int                   n_threads,
-                                         const types::subdomain_id_t subdomain_id,
-                                         const types::material_id_t       material_id)
+                                         const types::subdomain_id subdomain_id,
+                                         const types::material_id       material_id)
 {
   Assert (DEAL_II_COMPAT_MAPPING, ExcCompatibility("mapping"));
   estimate(StaticMappingQ1<dim, spacedim>::mapping, dof_handler, quadrature, neumann_bc, solutions,
index 41fcf4da9b10a9f44837bfebb30e95cda7de84ba..062fd660fa085e66e4fd250466ace77b48328af1 100644 (file)
@@ -39,7 +39,7 @@ estimate<InputVector,DH<deal_II_dimension> > (const Mapping<deal_II_dimension, d
           const Function<deal_II_dimension>     *,    \
           const unsigned int       , \
           const unsigned int       , \
-          const types::material_id_t);    \
+          const types::material_id);    \
     \
 template    \
 void    \
@@ -53,7 +53,7 @@ estimate<InputVector,DH<deal_II_dimension> > (const DH<deal_II_dimension>   &,
           const Function<deal_II_dimension>     *,    \
           const unsigned int       , \
           const unsigned int       , \
-          const types::material_id_t);    \
+          const types::material_id);    \
         \
 template    \
 void    \
@@ -68,7 +68,7 @@ estimate<InputVector,DH<deal_II_dimension> > (const Mapping<deal_II_dimension, d
           const Function<deal_II_dimension>         *,    \
           const unsigned int           , \
           const unsigned int           , \
-          const types::material_id_t);    \
+          const types::material_id);    \
     \
 template    \
 void    \
@@ -82,7 +82,7 @@ estimate<InputVector,DH<deal_II_dimension> > (const DH<deal_II_dimension>
           const Function<deal_II_dimension>         *,    \
           const unsigned int           , \
           const unsigned int           , \
-          const types::material_id_t);\
+          const types::material_id);\
 
 #if deal_II_dimension == 2 || deal_II_dimension == 1
 
@@ -100,7 +100,7 @@ estimate<InputVector,DH<deal_II_dimension,deal_II_dimension+1> > (const Mapping<
           const Function<deal_II_dimension+1>     *,    \
           const unsigned int       , \
           const unsigned int       , \
-          const types::material_id_t);    \
+          const types::material_id);    \
     \
 template    \
 void    \
@@ -114,7 +114,7 @@ estimate<InputVector,DH<deal_II_dimension,deal_II_dimension+1> > (const DH<deal_
           const Function<deal_II_dimension+1>     *,    \
           const unsigned int       , \
           const unsigned int       , \
-          const types::material_id_t);    \
+          const types::material_id);    \
         \
 template    \
 void    \
@@ -129,7 +129,7 @@ estimate<InputVector,DH<deal_II_dimension,deal_II_dimension+1> > (const Mapping<
           const Function<deal_II_dimension+1>         *,    \
           const unsigned int           , \
           const unsigned int           , \
-          const types::material_id_t);    \
+          const types::material_id);    \
     \
 template    \
 void    \
@@ -143,7 +143,7 @@ estimate<InputVector,DH<deal_II_dimension,deal_II_dimension+1> > (const DH<deal_
           const Function<deal_II_dimension+1>         *,    \
           const unsigned int           , \
           const unsigned int           , \
-          const types::material_id_t);\
+          const types::material_id);\
 
 #else
 #define INSTANTIATE_CODIM(InputVector,DH,Q)
similarity index 99%
rename from deal.II/source/numerics/matrices.cc
rename to deal.II/source/numerics/matrix_tools.cc
index 96f67c31d033881ec069a84132b0526eef5fc3f4..84bf26e84e8e58c2d9cbb6d1bd71f1c28e4fe893 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/grid/geometry_info.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/full_matrix.h>
@@ -2981,7 +2981,7 @@ namespace MatrixTools
           {
                                              // remove this row, except for the
                                              // diagonal element
-            for (unsigned j=0; j<n_local_dofs; ++j)
+            for (unsigned int j=0; j<n_local_dofs; ++j)
               if (i != j)
                 local_matrix(i,j) = 0;
 
@@ -3043,7 +3043,7 @@ namespace MatrixTools
 
 
 // explicit instantiations
-#include "matrices.inst"
+#include "matrix_tools.inst"
 
 namespace MatrixTools
 {
index f74d06648c5e4cd5e656634ca7e42ac0284246b9..3b545d35eb0b98b299e74bcb151ce56f06563755 100644 (file)
@@ -1,5 +1,5 @@
 //---------------------------------------------------------------------------
-//    $Id: fe_field_function.inst.in 19046 2009-07-08 19:30:23Z bangerth $
+//    $Id$
 //
 //    Copyright (C) 2009, 2010, 2012 by the deal.II authors
 //
index a708e95cd4d694fa9e27d68753eb3a0b52c651e3..053d2202e369009bcbe62a3343a40d21a9a58267 100644 (file)
@@ -20,7 +20,7 @@
 #include <deal.II/lac/trilinos_vector.h>
 #include <deal.II/lac/trilinos_block_vector.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <deal.II/numerics/point_value_history.h>
 
index be529b60f8c906b1a5336156ea45b830f827177c..c5d1355cc491117118f33cd70dc3d13564ae26a4 100644 (file)
@@ -270,7 +270,7 @@ TimeStepBase::~TimeStepBase ()
 
 
 void
-TimeStepBase::wake_up (const unsigned )
+TimeStepBase::wake_up (const unsigned int )
 {}
 
 
@@ -454,7 +454,7 @@ TimeStepBase_Tria<dim>::~TimeStepBase_Tria ()
 
 template <int dim>
 void
-TimeStepBase_Tria<dim>::wake_up (const unsigned wakeup_level)
+TimeStepBase_Tria<dim>::wake_up (const unsigned int wakeup_level)
 {
   TimeStepBase::wake_up (wakeup_level);
 
@@ -467,7 +467,7 @@ TimeStepBase_Tria<dim>::wake_up (const unsigned wakeup_level)
 
 template <int dim>
 void
-TimeStepBase_Tria<dim>::sleep (const unsigned sleep_level)
+TimeStepBase_Tria<dim>::sleep (const unsigned int sleep_level)
 {
   if (sleep_level == flags.sleep_level_to_delete_grid)
     {
similarity index 94%
rename from deal.II/source/numerics/vectors.cc
rename to deal.II/source/numerics/vector_tools.cc
index 3f1898a9752113ae52f91d84b0cecc1dbe970105..c4a0be5f6fe8526bdbd9028b3c8f6c7c2abf2291 100644 (file)
@@ -14,7 +14,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/hp/dof_handler.h>
 
-#include <deal.II/numerics/vectors.templates.h>
+#include <deal.II/numerics/vector_tools.templates.h>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -51,7 +51,7 @@ namespace VectorTools
 
 
 // ---------------------------- explicit instantiations --------------------
-#include "vectors.inst"
+#include "vector_tools.inst"
 
 
 DEAL_II_NAMESPACE_CLOSE
similarity index 97%
rename from deal.II/source/numerics/vectors.inst.in
rename to deal.II/source/numerics/vector_tools.inst.in
index f6bf113d3681fa807d7277ec3b4c4553f957d6c6..04d777422d31c81e56434a61d6a71bd81877d9bd 100644 (file)
@@ -298,7 +298,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS;
         void interpolate_boundary_values
         (const Mapping<deal_II_dimension,deal_II_space_dimension>    &,
          const DH<deal_II_dimension,deal_II_space_dimension> &,
-         const types::boundary_id_t,
+         const types::boundary_id,
          const Function<deal_II_space_dimension>   &,
          std::map<unsigned int,double>       &,
          const std::vector<bool>    &);
@@ -306,7 +306,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS;
       template
         void interpolate_boundary_values (
           const DH<deal_II_dimension,deal_II_space_dimension> &,
-          const types::boundary_id_t,
+          const types::boundary_id,
           const Function<deal_II_space_dimension>   &,
           std::map<unsigned int,double>       &,
           const std::vector<bool>    &);
@@ -330,7 +330,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS;
         void interpolate_boundary_values
         (const Mapping<deal_II_dimension,deal_II_space_dimension>    &,
          const DH<deal_II_dimension,deal_II_space_dimension> &,
-         const types::boundary_id_t,
+         const types::boundary_id,
          const Function<deal_II_space_dimension>   &,
          ConstraintMatrix                    &,
          const std::vector<bool>             &);
@@ -338,7 +338,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS;
       template
         void interpolate_boundary_values (
           const DH<deal_II_dimension,deal_II_space_dimension> &,
-          const types::boundary_id_t,
+          const types::boundary_id,
           const Function<deal_II_space_dimension>   &,
           ConstraintMatrix                    &,
           const std::vector<bool>    &);
@@ -459,7 +459,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
          const Quadrature<deal_II_dimension-1> &,
          const Function<deal_II_dimension>   &,
          Vector<double>                      &,
-         const std::set<types::boundary_id_t> &);
+         const std::set<types::boundary_id> &);
 #endif
 
       template
@@ -469,7 +469,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
          const Quadrature<deal_II_dimension-1> &,
          const Function<deal_II_dimension>   &,
          Vector<double>                      &,
-         const std::set<types::boundary_id_t> &);
+         const std::set<types::boundary_id> &);
 
 #if deal_II_dimension > 1
       template
@@ -480,7 +480,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
          const hp::QCollection<deal_II_dimension-1> &,
          const Function<deal_II_dimension>   &,
          Vector<double>                      &,
-         const std::set<types::boundary_id_t> &);
+         const std::set<types::boundary_id> &);
 #endif
 
       template
@@ -490,7 +490,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
          const hp::QCollection<deal_II_dimension-1> &,
          const Function<deal_II_dimension>   &,
          Vector<double>                      &,
-         const std::set<types::boundary_id_t> &);
+         const std::set<types::boundary_id> &);
 
 
 
@@ -536,7 +536,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
         (const DoFHandler<deal_II_dimension>&,
          const unsigned int,
          const Function<deal_II_dimension>&,
-         const types::boundary_id_t,
+         const types::boundary_id,
          ConstraintMatrix&,
          const Mapping<deal_II_dimension>&);
       template
@@ -544,7 +544,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
         (const hp::DoFHandler<deal_II_dimension>&,
          const unsigned int,
          const Function<deal_II_dimension>&,
-         const types::boundary_id_t,
+         const types::boundary_id,
          ConstraintMatrix&,
          const hp::MappingCollection<deal_II_dimension>&);
       template
@@ -552,7 +552,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
         (const DoFHandler<deal_II_dimension>&,
          const unsigned int,
          const Function<deal_II_dimension>&,
-         const types::boundary_id_t,
+         const types::boundary_id,
          ConstraintMatrix&,
          const Mapping<deal_II_dimension>&);
       template
@@ -560,21 +560,21 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
         (const hp::DoFHandler<deal_II_dimension>&,
          const unsigned int,
          const Function<deal_II_dimension>&,
-         const types::boundary_id_t,
+         const types::boundary_id,
          ConstraintMatrix&,
          const hp::MappingCollection<deal_II_dimension>&);
       template
         void
         compute_no_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
                                             const unsigned int     first_vector_component,
-                                            const std::set<types::boundary_id_t> &boundary_ids,
+                                            const std::set<types::boundary_id> &boundary_ids,
                                             ConstraintMatrix      &constraints,
                                             const Mapping<deal_II_dimension>    &mapping);
       template
         void
         compute_no_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
                                             const unsigned int     first_vector_component,
-                                            const std::set<types::boundary_id_t> &boundary_ids,
+                                            const std::set<types::boundary_id> &boundary_ids,
                                             ConstraintMatrix      &constraints,
                                             const Mapping<deal_II_dimension>    &mapping);
 #endif
index cc3a80ad51537f394f7c2ca6ee61b3ff78b6f48c..cdcf4d72afc5162f9db15f660db62dde4518f07e 100644 (file)
@@ -46,6 +46,18 @@ report:
                cd $$i ; $(MAKE) report ; cd .. ; \
         done
 
+report+summary:
+       -@$(MAKE) -k nofail
+       @for i in $(nofail-dirs) fail all-headers ; do \
+               echo =======Report: $$i ======= ; \
+               cd $$i ; $(MAKE) report ; cd .. ; \
+        done
+       @echo "                Compiling Linking Running   Check      OK     all"
+       @for i in $(nofail-dirs) fail all-headers ; do \
+               printf "%20s\t" "$$i"; \
+               cd $$i ; $(MAKE) -s summary ; cd .. ; \
+        done
+
 report+mail:
        -@$(MAKE) -k nofail
        @for i in $(nofail-dirs) fail all-headers ; do \
index dfa47ce41d427fc89b3e00f8bbccb22dbfbf5f73..9c48628b70b498e1f7990169612f446c168b68bb 100644 (file)
@@ -27,8 +27,11 @@ PLATFORM-HIERARCHY = $(shell $(PERL) ../hierarchy.pl $(PLATFORM))
 ID = `id -un`"@"`hostname`
 
 ############################################################
-# First how to create executables, including all necessary
-# flags:
+# First how to create object files, including all necessary
+# flags. Before we start the compilation, write the status
+# of the next operation into the test/status file. If these
+# are MPI tests, also remove all status files from the
+# test/ncpus_*/ directories
 ############################################################
 
 flags     = $(CXXFLAGS.g)
@@ -40,11 +43,13 @@ endif
 %/obj.g.$(OBJEXT) : %.cc
        @echo =====debug========= $<
        @echo Compiling > $(dir $@)/status
+       @-rm -f $(dir $@)/ncpu*/status
        @$(CXX) $(flags) -c $< -o $@
 
 %/obj.$(OBJEXT) : %.cc
        @echo =====optimized===== $<
        @echo Compiling > $(dir $@)/status
+       @-rm -f $(dir $@)/ncpu*/status
        @$(CXX) $(CXXFLAGS.o) -c $< -o $@
 
 ######################################################################
@@ -116,9 +121,9 @@ endif
            if test -f $$testname/cmp/$$i ; then \
                cmpfile_found=yes ; \
                if test "x$(verbose)" = "xon" ; then \
-                       cmd="diff $(DIFFOPT) -w $< $$testname/cmp/$$i" ; \
+                       cmd="diff $(DIFFOPT) $< $$testname/cmp/$$i" ; \
                 else \
-                       cmd="diff -w $< $$testname/cmp/$$i > /dev/null" ; \
+                       cmd="diff $< $$testname/cmp/$$i > /dev/null" ; \
                 fi ; \
                 if eval $$cmd ; then \
                        echo '=====OK============' $@ ; \
@@ -182,6 +187,36 @@ report:
        done
 
 
+status=Compiling Linking Running Checking diff all
+
+summary:
+       @for curstatus in $(status) ; do \
+         counter=0 ; \
+         all=0 ; \
+         for test in $(sort $(tests)) ; do \
+            case $$test in \
+               *ncpu_*) \
+                if test -f $$test/status ; then \
+                   file=$$test/status ; \
+                 else \
+                  file=`echo $$test | $(PERL) -pi -e 's/ncpu_\d+//g;'`/status ; \
+               fi ; \
+               ;; \
+           *) \
+               file=$$test/status ; \
+               ;; \
+         esac ; \
+         curcount=`if test -f $$file ; then grep -c $$curstatus $$file;else echo 0;fi;`; \
+         all=$$(($$all+1));\
+         counter=$$(($$counter+$$curcount)); \
+       done; \
+       if test "$$curstatus" = "all"; then printf "%s\t" $$all; \
+       else if test "$$curstatus" = "diff"; then printf "%s\t" $$counter; \
+       else if test "$$counter" != "0"; then printf "%s\t" $$counter; \
+       else printf "%s\t" $$counter ; fi;fi;fi;\
+       done;\
+       printf "\n";
+
 report+mail:
        @$(MAKE) report | tee testresults
        @cat testresults | $(MAIL) regression-tests@dealii.org
@@ -204,7 +239,7 @@ report+mail:
        @for i in $(PLATFORM-HIERARCHY) ; do \
            testname=$(<:%/output=%) ; \
            if test -f $$testname/cmp/$$i ; then \
-               cmd="diff -w $< $$testname/cmp/$$i > /dev/null" ; \
+               cmd="diff $< $$testname/cmp/$$i > /dev/null" ; \
                if eval ! $$cmd ; then \
                    echo '=====Creating======' $$testname/cmp/$(PLATFORM) ; \
                    cp $$testname/output $$testname/cmp/$(PLATFORM); \
@@ -247,7 +282,8 @@ update: $(tests:%=%/update)
 clean:
        -rm -f Makefile.depend Makefile.*tests */obj.$(OBJEXT) \
                */obj.g.$(OBJEXT) */output *~ */*.vtu */*.pvtu */*visit \
-               */status */OK
+               */status */OK \
+               */ncpu*/status
 
 distclean: clean
        -rm -f */exe *.testcase *.gpl *.eps *.gnuplot
@@ -274,5 +310,5 @@ Makefile.tests: Makefile $(shell echo *.cc)
                > $@
 
 
-.PHONY: report show-tests clean distclean %/ref
+.PHONY: report show-tests clean distclean summary %/ref
 
index 82487180cf75b334936fc2378a2bc7a9e0f356ba..e9bdf36c7f7b0fff1943ebc1b578284f9998dce7 100644 (file)
@@ -90,5 +90,7 @@ clean:
        -rm -f Makefile.dep *.$(OBJEXT) \
                *.g.$(OBJEXT) *.output *~ *.OK *.cc
 
+summary:
+       @echo "not implemented"
 
-.PHONY: report clean distclean all default report report+mail
+.PHONY: report clean distclean all default report report+mail summary
index 57acf8035412327c9b95f8f5377d0809d35a7108..30bd09048b5f9a4b28c567fe8dde2cf6dfc7cd96 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/solution_transfer.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_dgq.h>
index bfb6551373034c44dcb1a213ae97684b97c5ba52..7a9fe00266be5c47cf8caa02737c7cde930521b1 100644 (file)
@@ -155,7 +155,7 @@ LOOKUP_TABLE default
 Writing deal_II_intermediate dimensions 1,2
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 first name
@@ -1259,7 +1259,7 @@ LOOKUP_TABLE default
 Writing deal_II_intermediate dimensions 2,2
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 first name
@@ -2049,7 +2049,7 @@ LOOKUP_TABLE default
 Writing deal_II_intermediate dimensions 2,3
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 first name
@@ -10415,7 +10415,7 @@ LOOKUP_TABLE default
 Writing deal_II_intermediate dimensions 3,3
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 first name
index 3556374cc2ac40dc30c0865ca348c624738e9a82..8013744098f2427346240d8f60b9d5a70c2b2db9 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!--
-#This file was generated
- -->
+#This file was generated 
+-->
 <VTKFile type="PUnstructuredGrid" version="0.1" byte_order="LittleEndian">
   <PUnstructuredGrid GhostLevel="0">
     <PPointData Scalars="scalars">
index 5dd7f1948acb7d1f759cd8e5a30ef73adfe846ae..14af548202534e62ee2827a0d2956bee624278d7 100644 (file)
@@ -1,7 +1,7 @@
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 5
 x1
@@ -33,7 +33,7 @@ i
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 5
 x1
@@ -65,7 +65,7 @@ i
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 5
 x1
@@ -97,7 +97,7 @@ i
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 5
 x1
@@ -129,7 +129,7 @@ i
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 5
 x1
diff --git a/tests/base/table_handler_07.cc b/tests/base/table_handler_07.cc
new file mode 100644 (file)
index 0000000..7928499
--- /dev/null
@@ -0,0 +1,60 @@
+//-----------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-----------------------------------------------------------------------------
+
+// make sure a TableHandler can be copied
+
+
+#include "../tests.h"
+#include <deal.II/base/data_out_base.h>
+#include <deal.II/base/table_handler.h>
+#include <deal.II/base/logstream.h>
+
+#include <vector>
+#include <iomanip>
+#include <fstream>
+#include <string>
+
+
+int main ()
+{
+  std::ofstream logfile("table_handler_07/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+/* Like in _06 */
+  TableHandler table;
+  table.set_auto_fill_mode (true);
+
+  std::string keys[3] = { "key1", "key2", "key3" };
+
+                                  // fill rows 1 and 2 partially
+  table.add_value(keys[0], 0);
+  table.add_value(keys[0], 1);
+                                  // now fill row 3 completely
+  table.add_value(keys[0], 2);
+  table.add_value(keys[1], 13);
+  table.add_value(keys[2], std::string("a"));
+
+                                  // now again fill row 4 partially
+  table.add_value(keys[0], 1);
+
+/* Now copy and write the file from the copy */
+  TableHandler table2;
+  table2 = table;
+
+                                  // produce output. hope that row 4 is
+                                  // completely padded
+  table2.write_text(deallog.get_file_stream(),
+                  TableHandler::table_with_separate_column_description);
+}
diff --git a/tests/base/table_handler_07/cmp/generic b/tests/base/table_handler_07/cmp/generic
new file mode 100644 (file)
index 0000000..e6a8bb1
--- /dev/null
@@ -0,0 +1,8 @@
+
+# 1: key1
+# 2: key2
+# 3: key3
+0 0  "" 
+1 0  "" 
+2 13 a  
+1 0  "" 
diff --git a/tests/base/table_handler_08.cc b/tests/base/table_handler_08.cc
new file mode 100644 (file)
index 0000000..777c55c
--- /dev/null
@@ -0,0 +1,60 @@
+//-----------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-----------------------------------------------------------------------------
+
+// make sure a TableHandler can be copied, this time using the copy
+// constructor
+
+
+#include "../tests.h"
+#include <deal.II/base/data_out_base.h>
+#include <deal.II/base/table_handler.h>
+#include <deal.II/base/logstream.h>
+
+#include <vector>
+#include <iomanip>
+#include <fstream>
+#include <string>
+
+
+int main ()
+{
+  std::ofstream logfile("table_handler_08/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+/* Like in _06 */
+  TableHandler table;
+  table.set_auto_fill_mode (true);
+
+  std::string keys[3] = { "key1", "key2", "key3" };
+
+                                  // fill rows 1 and 2 partially
+  table.add_value(keys[0], 0);
+  table.add_value(keys[0], 1);
+                                  // now fill row 3 completely
+  table.add_value(keys[0], 2);
+  table.add_value(keys[1], 13);
+  table.add_value(keys[2], std::string("a"));
+
+                                  // now again fill row 4 partially
+  table.add_value(keys[0], 1);
+
+/* Now copy and write the file from the copy */
+  TableHandler table2(table);
+
+                                  // produce output. hope that row 4 is
+                                  // completely padded
+  table2.write_text(deallog.get_file_stream(),
+                  TableHandler::table_with_separate_column_description);
+}
diff --git a/tests/base/table_handler_08/cmp/generic b/tests/base/table_handler_08/cmp/generic
new file mode 100644 (file)
index 0000000..e6a8bb1
--- /dev/null
@@ -0,0 +1,8 @@
+
+# 1: key1
+# 2: key2
+# 3: key3
+0 0  "" 
+1 0  "" 
+2 13 a  
+1 0  "" 
diff --git a/tests/base/table_handler_09.cc b/tests/base/table_handler_09.cc
new file mode 100644 (file)
index 0000000..d176e1e
--- /dev/null
@@ -0,0 +1,55 @@
+//-----------------------------------------------------------------------------
+//    $Id: table_handler_06.cc 24924 2012-01-25 12:35:17Z kormann $
+//    Version: $Name$
+//
+//    Copyright (C) 2010, 2011 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-----------------------------------------------------------------------------
+
+// use the alternative format for the headers in TableHandler::write_text
+
+
+#include "../tests.h"
+#include <deal.II/base/data_out_base.h>
+#include <deal.II/base/table_handler.h>
+#include <deal.II/base/logstream.h>
+
+#include <vector>
+#include <iomanip>
+#include <fstream>
+#include <string>
+
+
+int main ()
+{
+  std::ofstream logfile("table_handler_09/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  TableHandler table;
+  table.set_auto_fill_mode (true);
+
+  std::string keys[3] = { "key1", "key2", "key3" };
+
+                                  // fill rows 1 and 2 partially
+  table.add_value(keys[0], 0);
+  table.add_value(keys[0], 1);
+                                  // now fill row 3 completely
+  table.add_value(keys[0], 2);
+  table.add_value(keys[1], 113);
+  table.add_value(keys[2], std::string("a"));
+
+                                  // now again fill row 4 partially
+  table.add_value(keys[0], 1);
+
+                                  // produce output. hope that row 4 is
+                                  // completely padded
+  table.write_text(deallog.get_file_stream(),
+                  TableHandler::simple_table_with_separate_column_description);
+}
diff --git a/tests/base/table_handler_09/cmp/generic b/tests/base/table_handler_09/cmp/generic
new file mode 100644 (file)
index 0000000..b023c8a
--- /dev/null
@@ -0,0 +1,8 @@
+
+# 1: key1
+# 2: key2
+# 3: key3
+0 0 "" 
+1 0 "" 
+2 113 a 
+1 0 "" 
index 41d7d6f35555fab52c5b10977c1d34e04c6247d6..91a918933ac59c09aceea0b6f9ca32164d7ad58b 100644 (file)
 
 int main ()
 {
-  std::ofstream logfile("tensor_05/output");
-  deallog << std::setprecision(3);
+  std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
   deallog.attach(logfile);
   deallog.depth_console(0);
+  deallog << std::setprecision(3);
   deallog.threshold_double(1.e-10);
 
   double a[3][3] = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}};
diff --git a/tests/base/tensor_07.cc b/tests/base/tensor_07.cc
new file mode 100644 (file)
index 0000000..442fe0a
--- /dev/null
@@ -0,0 +1,89 @@
+//----------------------------  tensor_05.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2006, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  tensor_05.cc  ---------------------------
+
+// check double_contract(Tensor<2,dim>,Tensor<2,dim>)
+
+#include "../tests.h"
+#include <deal.II/base/tensor.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <fstream>
+#include <iomanip>
+
+template <int dim>
+void test_constant()
+{
+  Tensor<2,dim> t;
+  for (unsigned int i=0;i<dim;++i)
+    for (unsigned int j=0;j<dim;++j)
+      t[i][j] = 2.;
+  deallog << "Constant dim " << dim << '\t' << double_contract(t,t)
+         << " compare " << 4*dim*dim << std::endl;
+}
+
+
+template <int dim>
+void test_equal()
+{
+  Tensor<2,dim> t;
+  unsigned int sum = 0;
+  for (unsigned int i=0;i<dim;++i)
+    for (unsigned int j=0;j<dim;++j)
+      {
+       t[i][j] = i+dim*j;
+       sum += (i+dim*j)*(i+dim*j);
+      }
+  
+  deallog << "Equal    dim " << dim << '\t' << double_contract(t,t)
+         << " compare " << sum << std::endl;
+}
+
+
+template <int dim>
+void test_unequal()
+{
+  Tensor<2,dim> s;
+  Tensor<2,dim> t;
+  unsigned int sum = 0;
+  for (unsigned int i=0;i<dim;++i)
+    for (unsigned int j=0;j<dim;++j)
+      {
+       s[i][j] = i+dim*j;
+       t[i][j] = dim*i+j;
+       sum += (i+dim*j)*(dim*i+j);
+      }
+  
+  deallog << "Unequal  dim " << dim << '\t' << double_contract(s,t)
+         << " compare " << sum << std::endl;
+}
+
+
+int main ()
+{
+  std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  test_constant<2>();
+  test_constant<3>();
+  test_constant<4>();
+
+  test_equal<2>();
+  test_equal<3>();
+  test_equal<4>();
+
+  test_unequal<2>();
+  test_unequal<3>();
+  test_unequal<4>();
+}
diff --git a/tests/base/tensor_07/cmp/generic b/tests/base/tensor_07/cmp/generic
new file mode 100644 (file)
index 0000000..4d35b35
--- /dev/null
@@ -0,0 +1,10 @@
+
+DEAL::Constant dim 2   16.0000 compare 16
+DEAL::Constant dim 3   36.0000 compare 36
+DEAL::Constant dim 4   64.0000 compare 64
+DEAL::Equal    dim 2   14.0000 compare 14
+DEAL::Equal    dim 3   204.000 compare 204
+DEAL::Equal    dim 4   1240.00 compare 1240
+DEAL::Unequal  dim 2   13.0000 compare 13
+DEAL::Unequal  dim 3   180.000 compare 180
+DEAL::Unequal  dim 4   1060.00 compare 1060
diff --git a/tests/base/tensor_08.cc b/tests/base/tensor_08.cc
new file mode 100644 (file)
index 0000000..32ec919
--- /dev/null
@@ -0,0 +1,58 @@
+//----------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 2006, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+// check contract(Tensor<1,dim>,Tensor<2,dim>,Tensor<1,dim>)
+
+#include "../tests.h"
+#include <deal.II/base/tensor.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <fstream>
+#include <iomanip>
+
+template <int dim>
+void test_select(double f1, double f2)
+{
+  Tensor<2,dim> t;
+  unsigned int k = 0;
+  for (unsigned int i=0;i<dim;++i)
+    for (unsigned int j=0;j<dim;++j)
+      t[i][j] = ++k;
+  
+  for (unsigned int i=0;i<dim;++i)
+    for (unsigned int j=0;j<dim;++j)
+      {
+       Tensor<1,dim> u, v;
+       u[i] = f1;
+       v[j] = f2;
+       deallog << '\t' << contract3(u,t,v);
+      }
+  deallog << std::endl;
+}
+
+
+int main ()
+{
+  std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);  
+  deallog.depth_console(0);
+  deallog << std::setprecision(3);
+
+  test_select<2>(1.,1.);
+  test_select<3>(1.,1.);
+  test_select<4>(1.,1.);
+  
+  test_select<2>(2.,3.);
+  test_select<3>(2.,3.);
+  test_select<4>(2.,3.);
+}
diff --git a/tests/base/tensor_08/cmp/generic b/tests/base/tensor_08/cmp/generic
new file mode 100644 (file)
index 0000000..4b541e0
--- /dev/null
@@ -0,0 +1,7 @@
+
+DEAL:: 1.00    2.00    3.00    4.00
+DEAL:: 1.00    2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00
+DEAL:: 1.00    2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.0    11.0    12.0    13.0    14.0    15.0    16.0
+DEAL:: 6.00    12.0    18.0    24.0
+DEAL:: 6.00    12.0    18.0    24.0    30.0    36.0    42.0    48.0    54.0
+DEAL:: 6.00    12.0    18.0    24.0    30.0    36.0    42.0    48.0    54.0    60.0    66.0    72.0    78.0    84.0    90.0    96.0
index ba65336dd6bb80cfc4bb64bc6c08a200ff79ccf8..9fc45eac2ce92e9f327ef84b0a133cca447a9fc8 100644 (file)
@@ -40,8 +40,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_tools.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/derivative_approximation.h>
index 139870cf42e4e3d6a63dc65aeeaa48e51f19f05a..f990548eb0116162ff56ec3240d8f27be807d82a 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
                                  // We need a FESystem
 #include <deal.II/fe/fe_system.h>
@@ -187,7 +187,7 @@ void FindBug<dim>::dirichlet_conditions ()
 
 
   std::vector<bool> fixed_dofs (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> boundary_indicators;
+  std::set<types::boundary_id> boundary_indicators;
   boundary_indicators.insert (0);
 
                                    // get a list of those boundary DoFs which
index 9c8dd245f9102dad129983993ffa6370ae73adb4..eb9233b28e78d6f252ca221303d911ed5a21ce83 100644 (file)
@@ -56,8 +56,8 @@ author: Anna Schneebeli, February 2003
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
                                
@@ -183,7 +183,7 @@ void ImposeBC<dim>::test_extract_boundary_DoFs ()
   bc_component_select[2] = false;
                        
   std::vector<bool> ned_boundary_dofs (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> boundary_indicators;
+  std::set<types::boundary_id> boundary_indicators;
   boundary_indicators.insert (0);
   DoFTools::extract_boundary_dofs (dof_handler, 
                                    bc_component_select,
@@ -222,7 +222,7 @@ void ImposeBC<dim>::test_interpolate_BC ()
                                    // (the pressure is assumed to be set to 1
                                    // on the boundary)                                  
   std::vector<bool> p_boundary_dofs (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> boundary_indicators;
+  std::set<types::boundary_id> boundary_indicators;
   boundary_indicators.insert (0);
   DoFTools::extract_boundary_dofs (dof_handler, 
                                    bc_component_select,
index 800bf92eb139333c56de05064f6e647402c4947e..ef1221b4f7cea20ecd3205298f8c2311f6f10a3c 100644 (file)
@@ -28,8 +28,8 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <fstream>
 #include <iomanip>
index 901a6bb451f3bdcdb0cbdbdc889f8cf82789bac3..9632d620f866353092b44967b984923d7c3ef72b 100644 (file)
@@ -28,8 +28,8 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <fstream>
 #include <iomanip>
index 78f48870b6fa8ac4589d83c709aa30f365291c01..0ce4a061714d48caa78c16f89e6a5728895c98dc 100644 (file)
@@ -44,8 +44,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
index 47b7a6234ca68947e95235de61c46bfb3f3c7de2..cb4fc8d69fc7ea15946066f9b86a6a06e54ae84c 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out_stack.h>
 #include <fstream>
 #include <iomanip>
index 7d14cbac476baf6d75597737b2dc593a36ac0bfb..cef1edee2c8624275ca80130ee2b22d6a849f202 100644 (file)
@@ -157,7 +157,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -616,7 +616,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2907,7 +2907,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3208,7 +3208,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3667,7 +3667,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5958,7 +5958,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -6259,7 +6259,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -6718,7 +6718,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9009,7 +9009,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9310,7 +9310,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9769,7 +9769,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12060,7 +12060,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12361,7 +12361,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12820,7 +12820,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15111,7 +15111,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15412,7 +15412,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15871,7 +15871,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -18162,7 +18162,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -18765,7 +18765,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
@@ -21313,7 +21313,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 4
 node_data_0
index 7d14cbac476baf6d75597737b2dc593a36ac0bfb..cef1edee2c8624275ca80130ee2b22d6a849f202 100644 (file)
@@ -157,7 +157,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -616,7 +616,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2907,7 +2907,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3208,7 +3208,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3667,7 +3667,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5958,7 +5958,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -6259,7 +6259,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -6718,7 +6718,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9009,7 +9009,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9310,7 +9310,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9769,7 +9769,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12060,7 +12060,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12361,7 +12361,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12820,7 +12820,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15111,7 +15111,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15412,7 +15412,7 @@ LOOKUP_TABLE default
 
 1 1
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15871,7 +15871,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -18162,7 +18162,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -18765,7 +18765,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
@@ -21313,7 +21313,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 4
 node_data_0
index 56ad37e5705ea78509a25ca30be3f6884e62354f..70940c193d197054a036cc9714ab0306e92828af 100644 (file)
@@ -43,7 +43,7 @@
 #include <deal.II/fe/mapping_q_eulerian.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/multithread_info.h>
 #include <fstream>
index a4559e72a3c4c61c6f8abcb075aa6f7722ed391d..3a6e53934fff5e143f3594f95b72426bb49d3a1d 100644 (file)
@@ -361,7 +361,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2290,7 +2290,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2957,7 +2957,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -4886,7 +4886,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5553,7 +5553,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -7482,7 +7482,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -8149,7 +8149,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10078,7 +10078,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10745,7 +10745,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12674,7 +12674,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -13341,7 +13341,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15270,7 +15270,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15964,7 +15964,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
@@ -18174,7 +18174,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 4
 node_data_0
index a4559e72a3c4c61c6f8abcb075aa6f7722ed391d..3a6e53934fff5e143f3594f95b72426bb49d3a1d 100644 (file)
@@ -361,7 +361,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2290,7 +2290,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2957,7 +2957,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -4886,7 +4886,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5553,7 +5553,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -7482,7 +7482,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -8149,7 +8149,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10078,7 +10078,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10745,7 +10745,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -12674,7 +12674,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -13341,7 +13341,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15270,7 +15270,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15964,7 +15964,7 @@ LOOKUP_TABLE default
 
 1 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
@@ -18174,7 +18174,7 @@ LOOKUP_TABLE default
 
 2 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 4
 node_data_0
index 7cabb96ff36220540061db808b7a241f1c2a222f..e4c42e1c2e8bb28290f6ff88a3f1039530e80053 100644 (file)
@@ -668,7 +668,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -4796,7 +4796,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5726,7 +5726,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9854,7 +9854,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10784,7 +10784,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -14912,7 +14912,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15842,7 +15842,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -19970,7 +19970,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -20900,7 +20900,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -25028,7 +25028,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -25958,7 +25958,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -30086,7 +30086,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -34413,7 +34413,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
index 7cabb96ff36220540061db808b7a241f1c2a222f..e4c42e1c2e8bb28290f6ff88a3f1039530e80053 100644 (file)
@@ -668,7 +668,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -4796,7 +4796,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -5726,7 +5726,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -9854,7 +9854,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -10784,7 +10784,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -14912,7 +14912,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -15842,7 +15842,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -19970,7 +19970,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -20900,7 +20900,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -25028,7 +25028,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -25958,7 +25958,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -30086,7 +30086,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -34413,7 +34413,7 @@ LOOKUP_TABLE default
 
 3 3
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 3
 node_data_0
index 995f174273a8468bd4aa2f359dcb8c98cdf2e5f3..f8f4f1b86199742b1417be6ce30f8d093e5ee340 100644 (file)
@@ -374,7 +374,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -931,7 +931,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -1488,7 +1488,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2045,7 +2045,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2602,7 +2602,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3159,7 +3159,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
index 995f174273a8468bd4aa2f359dcb8c98cdf2e5f3..f8f4f1b86199742b1417be6ce30f8d093e5ee340 100644 (file)
@@ -374,7 +374,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -931,7 +931,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -1488,7 +1488,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2045,7 +2045,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -2602,7 +2602,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
@@ -3159,7 +3159,7 @@ LOOKUP_TABLE default
 
 2 2
 [deal.II intermediate format graphics data]
-[written by deal.II 7.2.pre]
+[written by deal.II 7.3.pre]
 [Version: 3]
 2
 node_data
index f24cb665b5c084562b38efa278b02434bdd2ceba..38254bee735a042640ccabb441378080da72cc11 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/derivative_approximation.h>
 #include <fstream>
index 53c93c82f706abcb7be75611242b4eab40da33ed..5aa56dc21763eb46e362fe141d5af252e24d16c7 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$ 
 //
-//    Copyright (C) 2003, 2004, 2006 by the deal.II authors
+//    Copyright (C) 2003, 2004, 2006, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -38,7 +38,8 @@ check_this (const DoFHandler<dim> &dof_handler)
                                   // which sometimes rounds to 0.38 and
                                   // sometimes to 0.37, depending on how
                                   // intermediate errors have accumulated)
-  deallog.get_file_stream().precision (5);
+  deallog << std::setprecision (5);
+  
                                    // don't run this test if hanging
                                    // nodes are not implemented
   if (dof_handler.get_fe().constraints_are_implemented() == false)
index 54bc51f55870aaaf28deae6f22f3b6e2826e7c4a..979352ca510a8dde927030894cf348e3cdd40772 100644 (file)
@@ -7,11 +7,11 @@ DEAL::111111111111011110
 DEAL::2
 DEAL::111111111111111111
 DEAL::not identity constrained: 12
-DEAL::  line 0: 0.50
-DEAL::  line 1: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 1: 0.50000
 DEAL::not identity constrained: 17
-DEAL::  line 1: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::Checking Q1 in 3d:
 DEAL::16
 DEAL::4
@@ -19,61 +19,61 @@ DEAL::111111111111111111111111111111111111000000000111111110000000
 DEAL::16
 DEAL::111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 36
-DEAL::  line 0: 0.50
-DEAL::  line 1: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 1: 0.50000
 DEAL::not identity constrained: 37
-DEAL::  line 0: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 38
-DEAL::  line 0: 0.25
-DEAL::  line 1: 0.25
-DEAL::  line 4: 0.25
-DEAL::  line 5: 0.25
+DEAL::  line 0: 0.25000
+DEAL::  line 1: 0.25000
+DEAL::  line 4: 0.25000
+DEAL::  line 5: 0.25000
 DEAL::not identity constrained: 39
-DEAL::  line 1: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 40
-DEAL::  line 12: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 41
-DEAL::  line 4: 0.50
-DEAL::  line 12: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 12: 0.50000
 DEAL::not identity constrained: 42
-DEAL::  line 4: 0.25
-DEAL::  line 5: 0.25
-DEAL::  line 12: 0.25
-DEAL::  line 13: 0.25
+DEAL::  line 4: 0.25000
+DEAL::  line 5: 0.25000
+DEAL::  line 12: 0.25000
+DEAL::  line 13: 0.25000
 DEAL::not identity constrained: 43
-DEAL::  line 5: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 44
-DEAL::  line 4: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 53
-DEAL::  line 1: 0.50
-DEAL::  line 8: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 8: 0.50000
 DEAL::not identity constrained: 54
-DEAL::  line 1: 0.25
-DEAL::  line 5: 0.25
-DEAL::  line 8: 0.25
-DEAL::  line 10: 0.25
+DEAL::  line 1: 0.25000
+DEAL::  line 5: 0.25000
+DEAL::  line 8: 0.25000
+DEAL::  line 10: 0.25000
 DEAL::not identity constrained: 55
-DEAL::  line 8: 0.50
-DEAL::  line 10: 0.50
+DEAL::  line 8: 0.50000
+DEAL::  line 10: 0.50000
 DEAL::not identity constrained: 56
-DEAL::  line 13: 0.50
-DEAL::  line 18: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 18: 0.50000
 DEAL::not identity constrained: 57
-DEAL::  line 5: 0.25
-DEAL::  line 10: 0.25
-DEAL::  line 13: 0.25
-DEAL::  line 18: 0.25
+DEAL::  line 5: 0.25000
+DEAL::  line 10: 0.25000
+DEAL::  line 13: 0.25000
+DEAL::  line 18: 0.25000
 DEAL::not identity constrained: 58
-DEAL::  line 10: 0.50
-DEAL::  line 18: 0.50
+DEAL::  line 10: 0.50000
+DEAL::  line 18: 0.50000
 DEAL::not identity constrained: 59
-DEAL::  line 5: 0.50
-DEAL::  line 10: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 10: 0.50000
 DEAL::Checking Q2 in 1d:
 DEAL::Checking Q2 in 2d:
 DEAL::6
@@ -82,25 +82,25 @@ DEAL::111111111111111111111111111111011011011111111111110101101
 DEAL::6
 DEAL::111111111111111111111111111111011111111111111111110111111
 DEAL::not identity constrained: 30
-DEAL::  line 6: 1.0
+DEAL::  line 6: 1.0000
 DEAL::not identity constrained: 33
-DEAL::  line 0: 0.38
-DEAL::  line 1: -0.12
-DEAL::  line 6: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 1: -0.12500
+DEAL::  line 6: 0.75000
 DEAL::not identity constrained: 36
-DEAL::  line 0: -0.12
-DEAL::  line 1: 0.38
-DEAL::  line 6: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 1: 0.37500
+DEAL::  line 6: 0.75000
 DEAL::not identity constrained: 50
-DEAL::  line 12: 1.0
+DEAL::  line 12: 1.0000
 DEAL::not identity constrained: 52
-DEAL::  line 1: 0.38
-DEAL::  line 9: -0.12
-DEAL::  line 12: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 9: -0.12500
+DEAL::  line 12: 0.75000
 DEAL::not identity constrained: 55
-DEAL::  line 1: -0.12
-DEAL::  line 9: 0.38
-DEAL::  line 12: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 9: 0.37500
+DEAL::  line 12: 0.75000
 DEAL::Checking Q2 in 3d:
 DEAL::72
 DEAL::9
@@ -108,357 +108,357 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::72
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000111111111111110111111111100011111111111111011111111110111111111111111111111111111111111111111111111111111110011111111110111111111100111111111101111111111011111111111111
 DEAL::not identity constrained: 150
-DEAL::  line 10: 1.0
+DEAL::  line 10: 1.0000
 DEAL::not identity constrained: 151
-DEAL::  line 16: 1.0
+DEAL::  line 16: 1.0000
 DEAL::not identity constrained: 152
-DEAL::  line 22: 1.0
+DEAL::  line 22: 1.0000
 DEAL::not identity constrained: 155
-DEAL::  line 0: 0.38
-DEAL::  line 1: -0.12
-DEAL::  line 10: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 1: -0.12500
+DEAL::  line 10: 0.75000
 DEAL::not identity constrained: 158
-DEAL::  line 16: 0.38
-DEAL::  line 17: -0.12
-DEAL::  line 22: 0.75
+DEAL::  line 16: 0.37500
+DEAL::  line 17: -0.12500
+DEAL::  line 22: 0.75000
 DEAL::not identity constrained: 159
-DEAL::  line 0: 0.38
-DEAL::  line 4: -0.12
-DEAL::  line 16: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 4: -0.12500
+DEAL::  line 16: 0.75000
 DEAL::not identity constrained: 160
-DEAL::  line 10: 0.38
-DEAL::  line 14: -0.12
-DEAL::  line 22: 0.75
+DEAL::  line 10: 0.37500
+DEAL::  line 14: -0.12500
+DEAL::  line 22: 0.75000
 DEAL::not identity constrained: 163
-DEAL::  line 0: 0.14
-DEAL::  line 1: -0.047
-DEAL::  line 4: -0.047
-DEAL::  line 5: 0.016
-DEAL::  line 10: 0.28
-DEAL::  line 14: -0.094
-DEAL::  line 16: 0.28
-DEAL::  line 17: -0.094
-DEAL::  line 22: 0.56
+DEAL::  line 0: 0.14062
+DEAL::  line 1: -0.046875
+DEAL::  line 4: -0.046875
+DEAL::  line 5: 0.015625
+DEAL::  line 10: 0.28125
+DEAL::  line 14: -0.093750
+DEAL::  line 16: 0.28125
+DEAL::  line 17: -0.093750
+DEAL::  line 22: 0.56250
 DEAL::not identity constrained: 167
-DEAL::  line 17: 1.0
+DEAL::  line 17: 1.0000
 DEAL::not identity constrained: 169
-DEAL::  line 0: -0.12
-DEAL::  line 1: 0.38
-DEAL::  line 10: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 1: 0.37500
+DEAL::  line 10: 0.75000
 DEAL::not identity constrained: 171
-DEAL::  line 16: -0.12
-DEAL::  line 17: 0.38
-DEAL::  line 22: 0.75
+DEAL::  line 16: -0.12500
+DEAL::  line 17: 0.37500
+DEAL::  line 22: 0.75000
 DEAL::not identity constrained: 172
-DEAL::  line 1: 0.38
-DEAL::  line 5: -0.12
-DEAL::  line 17: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 5: -0.12500
+DEAL::  line 17: 0.75000
 DEAL::not identity constrained: 174
-DEAL::  line 0: -0.047
-DEAL::  line 1: 0.14
-DEAL::  line 4: 0.016
-DEAL::  line 5: -0.047
-DEAL::  line 10: 0.28
-DEAL::  line 14: -0.094
-DEAL::  line 16: -0.094
-DEAL::  line 17: 0.28
-DEAL::  line 22: 0.56
+DEAL::  line 0: -0.046875
+DEAL::  line 1: 0.14062
+DEAL::  line 4: 0.015625
+DEAL::  line 5: -0.046875
+DEAL::  line 10: 0.28125
+DEAL::  line 14: -0.093750
+DEAL::  line 16: -0.093750
+DEAL::  line 17: 0.28125
+DEAL::  line 22: 0.56250
 DEAL::not identity constrained: 178
-DEAL::  line 53: 1.0
+DEAL::  line 53: 1.0000
 DEAL::not identity constrained: 179
-DEAL::  line 51: 1.0
+DEAL::  line 51: 1.0000
 DEAL::not identity constrained: 180
-DEAL::  line 66: 1.0
+DEAL::  line 66: 1.0000
 DEAL::not identity constrained: 181
-DEAL::  line 4: -0.12
-DEAL::  line 45: 0.38
-DEAL::  line 51: 0.75
+DEAL::  line 4: -0.12500
+DEAL::  line 45: 0.37500
+DEAL::  line 51: 0.75000
 DEAL::not identity constrained: 182
-DEAL::  line 14: -0.12
-DEAL::  line 53: 0.38
-DEAL::  line 66: 0.75
+DEAL::  line 14: -0.12500
+DEAL::  line 53: 0.37500
+DEAL::  line 66: 0.75000
 DEAL::not identity constrained: 183
-DEAL::  line 45: 0.38
-DEAL::  line 46: -0.12
-DEAL::  line 53: 0.75
+DEAL::  line 45: 0.37500
+DEAL::  line 46: -0.12500
+DEAL::  line 53: 0.75000
 DEAL::not identity constrained: 184
-DEAL::  line 51: 0.38
-DEAL::  line 52: -0.12
-DEAL::  line 66: 0.75
+DEAL::  line 51: 0.37500
+DEAL::  line 52: -0.12500
+DEAL::  line 66: 0.75000
 DEAL::not identity constrained: 193
-DEAL::  line 4: -0.047
-DEAL::  line 5: 0.016
-DEAL::  line 14: -0.094
-DEAL::  line 45: 0.14
-DEAL::  line 46: -0.047
-DEAL::  line 51: 0.28
-DEAL::  line 52: -0.094
-DEAL::  line 53: 0.28
-DEAL::  line 66: 0.56
+DEAL::  line 4: -0.046875
+DEAL::  line 5: 0.015625
+DEAL::  line 14: -0.093750
+DEAL::  line 45: 0.14062
+DEAL::  line 46: -0.046875
+DEAL::  line 51: 0.28125
+DEAL::  line 52: -0.093750
+DEAL::  line 53: 0.28125
+DEAL::  line 66: 0.56250
 DEAL::not identity constrained: 195
-DEAL::  line 52: 1.0
+DEAL::  line 52: 1.0000
 DEAL::not identity constrained: 196
-DEAL::  line 5: -0.12
-DEAL::  line 46: 0.38
-DEAL::  line 52: 0.75
+DEAL::  line 5: -0.12500
+DEAL::  line 46: 0.37500
+DEAL::  line 52: 0.75000
 DEAL::not identity constrained: 197
-DEAL::  line 45: -0.12
-DEAL::  line 46: 0.38
-DEAL::  line 53: 0.75
+DEAL::  line 45: -0.12500
+DEAL::  line 46: 0.37500
+DEAL::  line 53: 0.75000
 DEAL::not identity constrained: 198
-DEAL::  line 51: -0.12
-DEAL::  line 52: 0.38
-DEAL::  line 66: 0.75
+DEAL::  line 51: -0.12500
+DEAL::  line 52: 0.37500
+DEAL::  line 66: 0.75000
 DEAL::not identity constrained: 204
-DEAL::  line 4: 0.016
-DEAL::  line 5: -0.047
-DEAL::  line 14: -0.094
-DEAL::  line 45: -0.047
-DEAL::  line 46: 0.14
-DEAL::  line 51: -0.094
-DEAL::  line 52: 0.28
-DEAL::  line 53: 0.28
-DEAL::  line 66: 0.56
+DEAL::  line 4: 0.015625
+DEAL::  line 5: -0.046875
+DEAL::  line 14: -0.093750
+DEAL::  line 45: -0.046875
+DEAL::  line 46: 0.14062
+DEAL::  line 51: -0.093750
+DEAL::  line 52: 0.28125
+DEAL::  line 53: 0.28125
+DEAL::  line 66: 0.56250
 DEAL::not identity constrained: 206
-DEAL::  line 14: 1.0
+DEAL::  line 14: 1.0000
 DEAL::not identity constrained: 207
-DEAL::  line 4: 0.38
-DEAL::  line 45: -0.12
-DEAL::  line 51: 0.75
+DEAL::  line 4: 0.37500
+DEAL::  line 45: -0.12500
+DEAL::  line 51: 0.75000
 DEAL::not identity constrained: 208
-DEAL::  line 14: 0.38
-DEAL::  line 53: -0.12
-DEAL::  line 66: 0.75
+DEAL::  line 14: 0.37500
+DEAL::  line 53: -0.12500
+DEAL::  line 66: 0.75000
 DEAL::not identity constrained: 209
-DEAL::  line 4: 0.38
-DEAL::  line 5: -0.12
-DEAL::  line 14: 0.75
+DEAL::  line 4: 0.37500
+DEAL::  line 5: -0.12500
+DEAL::  line 14: 0.75000
 DEAL::not identity constrained: 210
-DEAL::  line 0: -0.12
-DEAL::  line 4: 0.38
-DEAL::  line 16: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 4: 0.37500
+DEAL::  line 16: 0.75000
 DEAL::not identity constrained: 211
-DEAL::  line 10: -0.12
-DEAL::  line 14: 0.38
-DEAL::  line 22: 0.75
+DEAL::  line 10: -0.12500
+DEAL::  line 14: 0.37500
+DEAL::  line 22: 0.75000
 DEAL::not identity constrained: 214
-DEAL::  line 0: -0.047
-DEAL::  line 1: 0.016
-DEAL::  line 4: 0.14
-DEAL::  line 5: -0.047
-DEAL::  line 10: -0.094
-DEAL::  line 14: 0.28
-DEAL::  line 16: 0.28
-DEAL::  line 17: -0.094
-DEAL::  line 22: 0.56
+DEAL::  line 0: -0.046875
+DEAL::  line 1: 0.015625
+DEAL::  line 4: 0.14062
+DEAL::  line 5: -0.046875
+DEAL::  line 10: -0.093750
+DEAL::  line 14: 0.28125
+DEAL::  line 16: 0.28125
+DEAL::  line 17: -0.093750
+DEAL::  line 22: 0.56250
 DEAL::not identity constrained: 215
-DEAL::  line 4: 0.14
-DEAL::  line 5: -0.047
-DEAL::  line 14: 0.28
-DEAL::  line 45: -0.047
-DEAL::  line 46: 0.016
-DEAL::  line 51: 0.28
-DEAL::  line 52: -0.094
-DEAL::  line 53: -0.094
-DEAL::  line 66: 0.56
+DEAL::  line 4: 0.14062
+DEAL::  line 5: -0.046875
+DEAL::  line 14: 0.28125
+DEAL::  line 45: -0.046875
+DEAL::  line 46: 0.015625
+DEAL::  line 51: 0.28125
+DEAL::  line 52: -0.093750
+DEAL::  line 53: -0.093750
+DEAL::  line 66: 0.56250
 DEAL::not identity constrained: 217
-DEAL::  line 5: 0.38
-DEAL::  line 46: -0.12
-DEAL::  line 52: 0.75
+DEAL::  line 5: 0.37500
+DEAL::  line 46: -0.12500
+DEAL::  line 52: 0.75000
 DEAL::not identity constrained: 218
-DEAL::  line 4: -0.12
-DEAL::  line 5: 0.38
-DEAL::  line 14: 0.75
+DEAL::  line 4: -0.12500
+DEAL::  line 5: 0.37500
+DEAL::  line 14: 0.75000
 DEAL::not identity constrained: 219
-DEAL::  line 1: -0.12
-DEAL::  line 5: 0.38
-DEAL::  line 17: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 5: 0.37500
+DEAL::  line 17: 0.75000
 DEAL::not identity constrained: 221
-DEAL::  line 0: 0.016
-DEAL::  line 1: -0.047
-DEAL::  line 4: -0.047
-DEAL::  line 5: 0.14
-DEAL::  line 10: -0.094
-DEAL::  line 14: 0.28
-DEAL::  line 16: -0.094
-DEAL::  line 17: 0.28
-DEAL::  line 22: 0.56
+DEAL::  line 0: 0.015625
+DEAL::  line 1: -0.046875
+DEAL::  line 4: -0.046875
+DEAL::  line 5: 0.14062
+DEAL::  line 10: -0.093750
+DEAL::  line 14: 0.28125
+DEAL::  line 16: -0.093750
+DEAL::  line 17: 0.28125
+DEAL::  line 22: 0.56250
 DEAL::not identity constrained: 222
-DEAL::  line 4: -0.047
-DEAL::  line 5: 0.14
-DEAL::  line 14: 0.28
-DEAL::  line 45: 0.016
-DEAL::  line 46: -0.047
-DEAL::  line 51: -0.094
-DEAL::  line 52: 0.28
-DEAL::  line 53: -0.094
-DEAL::  line 66: 0.56
+DEAL::  line 4: -0.046875
+DEAL::  line 5: 0.14062
+DEAL::  line 14: 0.28125
+DEAL::  line 45: 0.015625
+DEAL::  line 46: -0.046875
+DEAL::  line 51: -0.093750
+DEAL::  line 52: 0.28125
+DEAL::  line 53: -0.093750
+DEAL::  line 66: 0.56250
 DEAL::not identity constrained: 260
-DEAL::  line 32: 1.0
+DEAL::  line 32: 1.0000
 DEAL::not identity constrained: 261
-DEAL::  line 40: 1.0
+DEAL::  line 40: 1.0000
 DEAL::not identity constrained: 263
-DEAL::  line 1: 0.38
-DEAL::  line 27: -0.12
-DEAL::  line 32: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 27: -0.12500
+DEAL::  line 32: 0.75000
 DEAL::not identity constrained: 265
-DEAL::  line 17: 0.38
-DEAL::  line 37: -0.12
-DEAL::  line 40: 0.75
+DEAL::  line 17: 0.37500
+DEAL::  line 37: -0.12500
+DEAL::  line 40: 0.75000
 DEAL::not identity constrained: 266
-DEAL::  line 32: 0.38
-DEAL::  line 35: -0.12
-DEAL::  line 40: 0.75
+DEAL::  line 32: 0.37500
+DEAL::  line 35: -0.12500
+DEAL::  line 40: 0.75000
 DEAL::not identity constrained: 268
-DEAL::  line 1: 0.14
-DEAL::  line 5: -0.047
-DEAL::  line 17: 0.28
-DEAL::  line 27: -0.047
-DEAL::  line 29: 0.016
-DEAL::  line 32: 0.28
-DEAL::  line 35: -0.094
-DEAL::  line 37: -0.094
-DEAL::  line 40: 0.56
+DEAL::  line 1: 0.14062
+DEAL::  line 5: -0.046875
+DEAL::  line 17: 0.28125
+DEAL::  line 27: -0.046875
+DEAL::  line 29: 0.015625
+DEAL::  line 32: 0.28125
+DEAL::  line 35: -0.093750
+DEAL::  line 37: -0.093750
+DEAL::  line 40: 0.56250
 DEAL::not identity constrained: 272
-DEAL::  line 37: 1.0
+DEAL::  line 37: 1.0000
 DEAL::not identity constrained: 274
-DEAL::  line 1: -0.12
-DEAL::  line 27: 0.38
-DEAL::  line 32: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 27: 0.37500
+DEAL::  line 32: 0.75000
 DEAL::not identity constrained: 276
-DEAL::  line 17: -0.12
-DEAL::  line 37: 0.38
-DEAL::  line 40: 0.75
+DEAL::  line 17: -0.12500
+DEAL::  line 37: 0.37500
+DEAL::  line 40: 0.75000
 DEAL::not identity constrained: 277
-DEAL::  line 27: 0.38
-DEAL::  line 29: -0.12
-DEAL::  line 37: 0.75
+DEAL::  line 27: 0.37500
+DEAL::  line 29: -0.12500
+DEAL::  line 37: 0.75000
 DEAL::not identity constrained: 279
-DEAL::  line 1: -0.047
-DEAL::  line 5: 0.016
-DEAL::  line 17: -0.094
-DEAL::  line 27: 0.14
-DEAL::  line 29: -0.047
-DEAL::  line 32: 0.28
-DEAL::  line 35: -0.094
-DEAL::  line 37: 0.28
-DEAL::  line 40: 0.56
+DEAL::  line 1: -0.046875
+DEAL::  line 5: 0.015625
+DEAL::  line 17: -0.093750
+DEAL::  line 27: 0.14062
+DEAL::  line 29: -0.046875
+DEAL::  line 32: 0.28125
+DEAL::  line 35: -0.093750
+DEAL::  line 37: 0.28125
+DEAL::  line 40: 0.56250
 DEAL::not identity constrained: 283
-DEAL::  line 73: 1.0
+DEAL::  line 73: 1.0000
 DEAL::not identity constrained: 284
-DEAL::  line 82: 1.0
+DEAL::  line 82: 1.0000
 DEAL::not identity constrained: 285
-DEAL::  line 35: -0.12
-DEAL::  line 73: 0.38
-DEAL::  line 82: 0.75
+DEAL::  line 35: -0.12500
+DEAL::  line 73: 0.37500
+DEAL::  line 82: 0.75000
 DEAL::not identity constrained: 286
-DEAL::  line 46: 0.38
-DEAL::  line 69: -0.12
-DEAL::  line 73: 0.75
+DEAL::  line 46: 0.37500
+DEAL::  line 69: -0.12500
+DEAL::  line 73: 0.75000
 DEAL::not identity constrained: 287
-DEAL::  line 52: 0.38
-DEAL::  line 72: -0.12
-DEAL::  line 82: 0.75
+DEAL::  line 52: 0.37500
+DEAL::  line 72: -0.12500
+DEAL::  line 82: 0.75000
 DEAL::not identity constrained: 293
-DEAL::  line 5: -0.047
-DEAL::  line 29: 0.016
-DEAL::  line 35: -0.094
-DEAL::  line 46: 0.14
-DEAL::  line 52: 0.28
-DEAL::  line 69: -0.047
-DEAL::  line 72: -0.094
-DEAL::  line 73: 0.28
-DEAL::  line 82: 0.56
+DEAL::  line 5: -0.046875
+DEAL::  line 29: 0.015625
+DEAL::  line 35: -0.093750
+DEAL::  line 46: 0.14062
+DEAL::  line 52: 0.28125
+DEAL::  line 69: -0.046875
+DEAL::  line 72: -0.093750
+DEAL::  line 73: 0.28125
+DEAL::  line 82: 0.56250
 DEAL::not identity constrained: 295
-DEAL::  line 72: 1.0
+DEAL::  line 72: 1.0000
 DEAL::not identity constrained: 296
-DEAL::  line 29: -0.12
-DEAL::  line 69: 0.38
-DEAL::  line 72: 0.75
+DEAL::  line 29: -0.12500
+DEAL::  line 69: 0.37500
+DEAL::  line 72: 0.75000
 DEAL::not identity constrained: 297
-DEAL::  line 46: -0.12
-DEAL::  line 69: 0.38
-DEAL::  line 73: 0.75
+DEAL::  line 46: -0.12500
+DEAL::  line 69: 0.37500
+DEAL::  line 73: 0.75000
 DEAL::not identity constrained: 298
-DEAL::  line 52: -0.12
-DEAL::  line 72: 0.38
-DEAL::  line 82: 0.75
+DEAL::  line 52: -0.12500
+DEAL::  line 72: 0.37500
+DEAL::  line 82: 0.75000
 DEAL::not identity constrained: 304
-DEAL::  line 5: 0.016
-DEAL::  line 29: -0.047
-DEAL::  line 35: -0.094
-DEAL::  line 46: -0.047
-DEAL::  line 52: -0.094
-DEAL::  line 69: 0.14
-DEAL::  line 72: 0.28
-DEAL::  line 73: 0.28
-DEAL::  line 82: 0.56
+DEAL::  line 5: 0.015625
+DEAL::  line 29: -0.046875
+DEAL::  line 35: -0.093750
+DEAL::  line 46: -0.046875
+DEAL::  line 52: -0.093750
+DEAL::  line 69: 0.14062
+DEAL::  line 72: 0.28125
+DEAL::  line 73: 0.28125
+DEAL::  line 82: 0.56250
 DEAL::not identity constrained: 306
-DEAL::  line 35: 1.0
+DEAL::  line 35: 1.0000
 DEAL::not identity constrained: 307
-DEAL::  line 35: 0.38
-DEAL::  line 73: -0.12
-DEAL::  line 82: 0.75
+DEAL::  line 35: 0.37500
+DEAL::  line 73: -0.12500
+DEAL::  line 82: 0.75000
 DEAL::not identity constrained: 308
-DEAL::  line 5: 0.38
-DEAL::  line 29: -0.12
-DEAL::  line 35: 0.75
+DEAL::  line 5: 0.37500
+DEAL::  line 29: -0.12500
+DEAL::  line 35: 0.75000
 DEAL::not identity constrained: 309
-DEAL::  line 32: -0.12
-DEAL::  line 35: 0.38
-DEAL::  line 40: 0.75
+DEAL::  line 32: -0.12500
+DEAL::  line 35: 0.37500
+DEAL::  line 40: 0.75000
 DEAL::not identity constrained: 311
-DEAL::  line 1: -0.047
-DEAL::  line 5: 0.14
-DEAL::  line 17: 0.28
-DEAL::  line 27: 0.016
-DEAL::  line 29: -0.047
-DEAL::  line 32: -0.094
-DEAL::  line 35: 0.28
-DEAL::  line 37: -0.094
-DEAL::  line 40: 0.56
+DEAL::  line 1: -0.046875
+DEAL::  line 5: 0.14062
+DEAL::  line 17: 0.28125
+DEAL::  line 27: 0.015625
+DEAL::  line 29: -0.046875
+DEAL::  line 32: -0.093750
+DEAL::  line 35: 0.28125
+DEAL::  line 37: -0.093750
+DEAL::  line 40: 0.56250
 DEAL::not identity constrained: 312
-DEAL::  line 5: 0.14
-DEAL::  line 29: -0.047
-DEAL::  line 35: 0.28
-DEAL::  line 46: -0.047
-DEAL::  line 52: 0.28
-DEAL::  line 69: 0.016
-DEAL::  line 72: -0.094
-DEAL::  line 73: -0.094
-DEAL::  line 82: 0.56
+DEAL::  line 5: 0.14062
+DEAL::  line 29: -0.046875
+DEAL::  line 35: 0.28125
+DEAL::  line 46: -0.046875
+DEAL::  line 52: 0.28125
+DEAL::  line 69: 0.015625
+DEAL::  line 72: -0.093750
+DEAL::  line 73: -0.093750
+DEAL::  line 82: 0.56250
 DEAL::not identity constrained: 314
-DEAL::  line 29: 0.38
-DEAL::  line 69: -0.12
-DEAL::  line 72: 0.75
+DEAL::  line 29: 0.37500
+DEAL::  line 69: -0.12500
+DEAL::  line 72: 0.75000
 DEAL::not identity constrained: 315
-DEAL::  line 5: -0.12
-DEAL::  line 29: 0.38
-DEAL::  line 35: 0.75
+DEAL::  line 5: -0.12500
+DEAL::  line 29: 0.37500
+DEAL::  line 35: 0.75000
 DEAL::not identity constrained: 316
-DEAL::  line 27: -0.12
-DEAL::  line 29: 0.38
-DEAL::  line 37: 0.75
+DEAL::  line 27: -0.12500
+DEAL::  line 29: 0.37500
+DEAL::  line 37: 0.75000
 DEAL::not identity constrained: 318
-DEAL::  line 1: 0.016
-DEAL::  line 5: -0.047
-DEAL::  line 17: -0.094
-DEAL::  line 27: -0.047
-DEAL::  line 29: 0.14
-DEAL::  line 32: -0.094
-DEAL::  line 35: 0.28
-DEAL::  line 37: 0.28
-DEAL::  line 40: 0.56
+DEAL::  line 1: 0.015625
+DEAL::  line 5: -0.046875
+DEAL::  line 17: -0.093750
+DEAL::  line 27: -0.046875
+DEAL::  line 29: 0.14062
+DEAL::  line 32: -0.093750
+DEAL::  line 35: 0.28125
+DEAL::  line 37: 0.28125
+DEAL::  line 40: 0.56250
 DEAL::not identity constrained: 319
-DEAL::  line 5: -0.047
-DEAL::  line 29: 0.14
-DEAL::  line 35: 0.28
-DEAL::  line 46: 0.016
-DEAL::  line 52: -0.094
-DEAL::  line 69: -0.047
-DEAL::  line 72: 0.28
-DEAL::  line 73: -0.094
-DEAL::  line 82: 0.56
+DEAL::  line 5: -0.046875
+DEAL::  line 29: 0.14062
+DEAL::  line 35: 0.28125
+DEAL::  line 46: 0.015625
+DEAL::  line 52: -0.093750
+DEAL::  line 69: -0.046875
+DEAL::  line 72: 0.28125
+DEAL::  line 73: -0.093750
+DEAL::  line 82: 0.56250
 DEAL::Checking Q3 in 1d:
 DEAL::Checking Q3 in 2d:
 DEAL::10
@@ -467,43 +467,43 @@ DEAL::11111111111111111111111111111111111111111111111111111111011110011111100111
 DEAL::10
 DEAL::11111111111111111111111111111111111111111111111111111111111111011111101111111111111111111111111111111110111111011111
 DEAL::not identity constrained: 56
-DEAL::  line 0: -0.062
-DEAL::  line 1: -0.062
-DEAL::  line 8: 0.56
-DEAL::  line 9: 0.56
+DEAL::  line 0: -0.062500
+DEAL::  line 1: -0.062500
+DEAL::  line 8: 0.56250
+DEAL::  line 9: 0.56250
 DEAL::not identity constrained: 61
-DEAL::  line 0: 0.31
-DEAL::  line 1: 0.062
-DEAL::  line 8: 0.94
-DEAL::  line 9: -0.31
+DEAL::  line 0: 0.31250
+DEAL::  line 1: 0.062500
+DEAL::  line 8: 0.93750
+DEAL::  line 9: -0.31250
 DEAL::not identity constrained: 62
-DEAL::  line 8: 1.0
+DEAL::  line 8: 1.0000
 DEAL::not identity constrained: 69
-DEAL::  line 9: 1.0
+DEAL::  line 9: 1.0000
 DEAL::not identity constrained: 70
-DEAL::  line 0: 0.063
-DEAL::  line 1: 0.31
-DEAL::  line 8: -0.31
-DEAL::  line 9: 0.94
+DEAL::  line 0: 0.062500
+DEAL::  line 1: 0.31250
+DEAL::  line 8: -0.31250
+DEAL::  line 9: 0.93750
 DEAL::not identity constrained: 99
-DEAL::  line 1: -0.062
-DEAL::  line 16: -0.062
-DEAL::  line 20: 0.56
-DEAL::  line 21: 0.56
+DEAL::  line 1: -0.062500
+DEAL::  line 16: -0.062500
+DEAL::  line 20: 0.56250
+DEAL::  line 21: 0.56250
 DEAL::not identity constrained: 102
-DEAL::  line 1: 0.31
-DEAL::  line 16: 0.062
-DEAL::  line 20: 0.94
-DEAL::  line 21: -0.31
+DEAL::  line 1: 0.31250
+DEAL::  line 16: 0.062500
+DEAL::  line 20: 0.93750
+DEAL::  line 21: -0.31250
 DEAL::not identity constrained: 103
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 110
-DEAL::  line 21: 1.0
+DEAL::  line 21: 1.0000
 DEAL::not identity constrained: 111
-DEAL::  line 1: 0.063
-DEAL::  line 16: 0.31
-DEAL::  line 20: -0.31
-DEAL::  line 21: 0.94
+DEAL::  line 1: 0.062500
+DEAL::  line 16: 0.31250
+DEAL::  line 20: -0.31250
+DEAL::  line 21: 0.93750
 DEAL::Checking Q3 in 3d:
 DEAL::160
 DEAL::16
@@ -511,1117 +511,1117 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::160
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110111111101111111111111011111111111111111110111111011111011111111111111111111110111011111111111111111111111111111011111111110011111111111111111111101111111111011110011111111111110110111111111101010111110111011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110111111111111101111111111111111111011111101111101111111111111111111111101111111111111111111110111111111100111111111111111111111011111111111110111111110110111111111101010111110111011111111111
 DEAL::not identity constrained: 392
-DEAL::  line 0: -0.062
-DEAL::  line 1: -0.062
-DEAL::  line 12: 0.56
-DEAL::  line 13: 0.56
+DEAL::  line 0: -0.062500
+DEAL::  line 1: -0.062500
+DEAL::  line 12: 0.56250
+DEAL::  line 13: 0.56250
 DEAL::not identity constrained: 393
-DEAL::  line 0: -0.062
-DEAL::  line 4: -0.062
-DEAL::  line 24: 0.56
-DEAL::  line 25: 0.56
+DEAL::  line 0: -0.062500
+DEAL::  line 4: -0.062500
+DEAL::  line 24: 0.56250
+DEAL::  line 25: 0.56250
 DEAL::not identity constrained: 394
-DEAL::  line 0: 0.0039
-DEAL::  line 1: 0.0039
-DEAL::  line 4: 0.0039
-DEAL::  line 5: 0.0039
-DEAL::  line 12: -0.035
-DEAL::  line 13: -0.035
-DEAL::  line 20: -0.035
-DEAL::  line 21: -0.035
-DEAL::  line 24: -0.035
-DEAL::  line 25: -0.035
-DEAL::  line 26: -0.035
-DEAL::  line 27: -0.035
-DEAL::  line 40: 0.32
-DEAL::  line 41: 0.32
-DEAL::  line 42: 0.32
-DEAL::  line 43: 0.32
+DEAL::  line 0: 0.0039062
+DEAL::  line 1: 0.0039062
+DEAL::  line 4: 0.0039062
+DEAL::  line 5: 0.0039062
+DEAL::  line 12: -0.035156
+DEAL::  line 13: -0.035156
+DEAL::  line 20: -0.035156
+DEAL::  line 21: -0.035156
+DEAL::  line 24: -0.035156
+DEAL::  line 25: -0.035156
+DEAL::  line 26: -0.035156
+DEAL::  line 27: -0.035156
+DEAL::  line 40: 0.31641
+DEAL::  line 41: 0.31641
+DEAL::  line 42: 0.31641
+DEAL::  line 43: 0.31641
 DEAL::not identity constrained: 399
-DEAL::  line 0: 0.31
-DEAL::  line 1: 0.062
-DEAL::  line 12: 0.94
-DEAL::  line 13: -0.31
+DEAL::  line 0: 0.31250
+DEAL::  line 1: 0.062500
+DEAL::  line 12: 0.93750
+DEAL::  line 13: -0.31250
 DEAL::not identity constrained: 400
-DEAL::  line 12: 1.0
+DEAL::  line 12: 1.0000
 DEAL::not identity constrained: 405
-DEAL::  line 0: -0.020
-DEAL::  line 1: -0.0039
-DEAL::  line 4: -0.020
-DEAL::  line 5: -0.0039
-DEAL::  line 12: -0.059
-DEAL::  line 13: 0.020
-DEAL::  line 20: -0.059
-DEAL::  line 21: 0.020
-DEAL::  line 24: 0.18
-DEAL::  line 25: 0.18
-DEAL::  line 26: 0.035
-DEAL::  line 27: 0.035
-DEAL::  line 40: 0.53
-DEAL::  line 41: 0.53
-DEAL::  line 42: -0.18
-DEAL::  line 43: -0.18
+DEAL::  line 0: -0.019531
+DEAL::  line 1: -0.0039062
+DEAL::  line 4: -0.019531
+DEAL::  line 5: -0.0039062
+DEAL::  line 12: -0.058594
+DEAL::  line 13: 0.019531
+DEAL::  line 20: -0.058594
+DEAL::  line 21: 0.019531
+DEAL::  line 24: 0.17578
+DEAL::  line 25: 0.17578
+DEAL::  line 26: 0.035156
+DEAL::  line 27: 0.035156
+DEAL::  line 40: 0.52734
+DEAL::  line 41: 0.52734
+DEAL::  line 42: -0.17578
+DEAL::  line 43: -0.17578
 DEAL::not identity constrained: 406
-DEAL::  line 12: -0.062
-DEAL::  line 20: -0.062
-DEAL::  line 40: 0.56
-DEAL::  line 41: 0.56
+DEAL::  line 12: -0.062500
+DEAL::  line 20: -0.062500
+DEAL::  line 40: 0.56250
+DEAL::  line 41: 0.56250
 DEAL::not identity constrained: 407
-DEAL::  line 0: 0.31
-DEAL::  line 4: 0.062
-DEAL::  line 24: 0.94
-DEAL::  line 25: -0.31
+DEAL::  line 0: 0.31250
+DEAL::  line 4: 0.062500
+DEAL::  line 24: 0.93750
+DEAL::  line 25: -0.31250
 DEAL::not identity constrained: 408
-DEAL::  line 24: 1.0
+DEAL::  line 24: 1.0000
 DEAL::not identity constrained: 409
-DEAL::  line 0: -0.020
-DEAL::  line 1: -0.020
-DEAL::  line 4: -0.0039
-DEAL::  line 5: -0.0039
-DEAL::  line 12: 0.18
-DEAL::  line 13: 0.18
-DEAL::  line 20: 0.035
-DEAL::  line 21: 0.035
-DEAL::  line 24: -0.059
-DEAL::  line 25: 0.020
-DEAL::  line 26: -0.059
-DEAL::  line 27: 0.020
-DEAL::  line 40: 0.53
-DEAL::  line 41: -0.18
-DEAL::  line 42: 0.53
-DEAL::  line 43: -0.18
+DEAL::  line 0: -0.019531
+DEAL::  line 1: -0.019531
+DEAL::  line 4: -0.0039062
+DEAL::  line 5: -0.0039062
+DEAL::  line 12: 0.17578
+DEAL::  line 13: 0.17578
+DEAL::  line 20: 0.035156
+DEAL::  line 21: 0.035156
+DEAL::  line 24: -0.058594
+DEAL::  line 25: 0.019531
+DEAL::  line 26: -0.058594
+DEAL::  line 27: 0.019531
+DEAL::  line 40: 0.52734
+DEAL::  line 41: -0.17578
+DEAL::  line 42: 0.52734
+DEAL::  line 43: -0.17578
 DEAL::not identity constrained: 410
-DEAL::  line 24: -0.062
-DEAL::  line 26: -0.062
-DEAL::  line 40: 0.56
-DEAL::  line 42: 0.56
+DEAL::  line 24: -0.062500
+DEAL::  line 26: -0.062500
+DEAL::  line 40: 0.56250
+DEAL::  line 42: 0.56250
 DEAL::not identity constrained: 419
-DEAL::  line 0: 0.098
-DEAL::  line 1: 0.020
-DEAL::  line 4: 0.020
-DEAL::  line 5: 0.0039
-DEAL::  line 12: 0.29
-DEAL::  line 13: -0.098
-DEAL::  line 20: 0.059
-DEAL::  line 21: -0.020
-DEAL::  line 24: 0.29
-DEAL::  line 25: -0.098
-DEAL::  line 26: 0.059
-DEAL::  line 27: -0.020
-DEAL::  line 40: 0.88
-DEAL::  line 41: -0.29
-DEAL::  line 42: -0.29
-DEAL::  line 43: 0.098
+DEAL::  line 0: 0.097656
+DEAL::  line 1: 0.019531
+DEAL::  line 4: 0.019531
+DEAL::  line 5: 0.0039062
+DEAL::  line 12: 0.29297
+DEAL::  line 13: -0.097656
+DEAL::  line 20: 0.058594
+DEAL::  line 21: -0.019531
+DEAL::  line 24: 0.29297
+DEAL::  line 25: -0.097656
+DEAL::  line 26: 0.058594
+DEAL::  line 27: -0.019531
+DEAL::  line 40: 0.87891
+DEAL::  line 41: -0.29297
+DEAL::  line 42: -0.29297
+DEAL::  line 43: 0.097656
 DEAL::not identity constrained: 420
-DEAL::  line 24: 0.31
-DEAL::  line 26: 0.062
-DEAL::  line 40: 0.94
-DEAL::  line 42: -0.31
+DEAL::  line 24: 0.31250
+DEAL::  line 26: 0.062500
+DEAL::  line 40: 0.93750
+DEAL::  line 42: -0.31250
 DEAL::not identity constrained: 421
-DEAL::  line 12: 0.31
-DEAL::  line 20: 0.062
-DEAL::  line 40: 0.94
-DEAL::  line 41: -0.31
+DEAL::  line 12: 0.31250
+DEAL::  line 20: 0.062500
+DEAL::  line 40: 0.93750
+DEAL::  line 41: -0.31250
 DEAL::not identity constrained: 422
-DEAL::  line 40: 1.0
+DEAL::  line 40: 1.0000
 DEAL::not identity constrained: 439
-DEAL::  line 1: -0.062
-DEAL::  line 5: -0.062
-DEAL::  line 26: 0.56
-DEAL::  line 27: 0.56
+DEAL::  line 1: -0.062500
+DEAL::  line 5: -0.062500
+DEAL::  line 26: 0.56250
+DEAL::  line 27: 0.56250
 DEAL::not identity constrained: 442
-DEAL::  line 13: 1.0
+DEAL::  line 13: 1.0000
 DEAL::not identity constrained: 443
-DEAL::  line 0: 0.063
-DEAL::  line 1: 0.31
-DEAL::  line 12: -0.31
-DEAL::  line 13: 0.94
+DEAL::  line 0: 0.062500
+DEAL::  line 1: 0.31250
+DEAL::  line 12: -0.31250
+DEAL::  line 13: 0.93750
 DEAL::not identity constrained: 446
-DEAL::  line 13: -0.062
-DEAL::  line 21: -0.062
-DEAL::  line 42: 0.56
-DEAL::  line 43: 0.56
+DEAL::  line 13: -0.062500
+DEAL::  line 21: -0.062500
+DEAL::  line 42: 0.56250
+DEAL::  line 43: 0.56250
 DEAL::not identity constrained: 447
-DEAL::  line 0: -0.0039
-DEAL::  line 1: -0.020
-DEAL::  line 4: -0.0039
-DEAL::  line 5: -0.020
-DEAL::  line 12: 0.020
-DEAL::  line 13: -0.059
-DEAL::  line 20: 0.020
-DEAL::  line 21: -0.059
-DEAL::  line 24: 0.035
-DEAL::  line 25: 0.035
-DEAL::  line 26: 0.18
-DEAL::  line 27: 0.18
-DEAL::  line 40: -0.18
-DEAL::  line 41: -0.18
-DEAL::  line 42: 0.53
-DEAL::  line 43: 0.53
+DEAL::  line 0: -0.0039063
+DEAL::  line 1: -0.019531
+DEAL::  line 4: -0.0039063
+DEAL::  line 5: -0.019531
+DEAL::  line 12: 0.019531
+DEAL::  line 13: -0.058594
+DEAL::  line 20: 0.019531
+DEAL::  line 21: -0.058594
+DEAL::  line 24: 0.035156
+DEAL::  line 25: 0.035156
+DEAL::  line 26: 0.17578
+DEAL::  line 27: 0.17578
+DEAL::  line 40: -0.17578
+DEAL::  line 41: -0.17578
+DEAL::  line 42: 0.52734
+DEAL::  line 43: 0.52734
 DEAL::not identity constrained: 448
-DEAL::  line 1: 0.31
-DEAL::  line 5: 0.062
-DEAL::  line 26: 0.94
-DEAL::  line 27: -0.31
+DEAL::  line 1: 0.31250
+DEAL::  line 5: 0.062500
+DEAL::  line 26: 0.93750
+DEAL::  line 27: -0.31250
 DEAL::not identity constrained: 449
-DEAL::  line 26: 1.0
+DEAL::  line 26: 1.0000
 DEAL::not identity constrained: 454
-DEAL::  line 13: 0.31
-DEAL::  line 21: 0.062
-DEAL::  line 42: 0.94
-DEAL::  line 43: -0.31
+DEAL::  line 13: 0.31250
+DEAL::  line 21: 0.062500
+DEAL::  line 42: 0.93750
+DEAL::  line 43: -0.31250
 DEAL::not identity constrained: 455
-DEAL::  line 42: 1.0
+DEAL::  line 42: 1.0000
 DEAL::not identity constrained: 456
-DEAL::  line 0: 0.020
-DEAL::  line 1: 0.098
-DEAL::  line 4: 0.0039
-DEAL::  line 5: 0.020
-DEAL::  line 12: -0.098
-DEAL::  line 13: 0.29
-DEAL::  line 20: -0.020
-DEAL::  line 21: 0.059
-DEAL::  line 24: 0.059
-DEAL::  line 25: -0.020
-DEAL::  line 26: 0.29
-DEAL::  line 27: -0.098
-DEAL::  line 40: -0.29
-DEAL::  line 41: 0.098
-DEAL::  line 42: 0.88
-DEAL::  line 43: -0.29
+DEAL::  line 0: 0.019531
+DEAL::  line 1: 0.097656
+DEAL::  line 4: 0.0039063
+DEAL::  line 5: 0.019531
+DEAL::  line 12: -0.097656
+DEAL::  line 13: 0.29297
+DEAL::  line 20: -0.019531
+DEAL::  line 21: 0.058594
+DEAL::  line 24: 0.058594
+DEAL::  line 25: -0.019531
+DEAL::  line 26: 0.29297
+DEAL::  line 27: -0.097656
+DEAL::  line 40: -0.29297
+DEAL::  line 41: 0.097656
+DEAL::  line 42: 0.87891
+DEAL::  line 43: -0.29297
 DEAL::not identity constrained: 457
-DEAL::  line 24: 0.063
-DEAL::  line 26: 0.31
-DEAL::  line 40: -0.31
-DEAL::  line 42: 0.94
+DEAL::  line 24: 0.062500
+DEAL::  line 26: 0.31250
+DEAL::  line 40: -0.31250
+DEAL::  line 42: 0.93750
 DEAL::not identity constrained: 474
-DEAL::  line 112: -0.062
-DEAL::  line 113: -0.062
-DEAL::  line 122: 0.56
-DEAL::  line 123: 0.56
+DEAL::  line 112: -0.062500
+DEAL::  line 113: -0.062500
+DEAL::  line 122: 0.56250
+DEAL::  line 123: 0.56250
 DEAL::not identity constrained: 475
-DEAL::  line 4: -0.062
-DEAL::  line 112: -0.062
-DEAL::  line 118: 0.56
-DEAL::  line 119: 0.56
+DEAL::  line 4: -0.062500
+DEAL::  line 112: -0.062500
+DEAL::  line 118: 0.56250
+DEAL::  line 119: 0.56250
 DEAL::not identity constrained: 476
-DEAL::  line 4: 0.0039
-DEAL::  line 5: 0.0039
-DEAL::  line 20: -0.035
-DEAL::  line 21: -0.035
-DEAL::  line 112: 0.0039
-DEAL::  line 113: 0.0039
-DEAL::  line 118: -0.035
-DEAL::  line 119: -0.035
-DEAL::  line 120: -0.035
-DEAL::  line 121: -0.035
-DEAL::  line 122: -0.035
-DEAL::  line 123: -0.035
-DEAL::  line 156: 0.32
-DEAL::  line 157: 0.32
-DEAL::  line 158: 0.32
-DEAL::  line 159: 0.32
+DEAL::  line 4: 0.0039062
+DEAL::  line 5: 0.0039062
+DEAL::  line 20: -0.035156
+DEAL::  line 21: -0.035156
+DEAL::  line 112: 0.0039062
+DEAL::  line 113: 0.0039062
+DEAL::  line 118: -0.035156
+DEAL::  line 119: -0.035156
+DEAL::  line 120: -0.035156
+DEAL::  line 121: -0.035156
+DEAL::  line 122: -0.035156
+DEAL::  line 123: -0.035156
+DEAL::  line 156: 0.31641
+DEAL::  line 157: 0.31641
+DEAL::  line 158: 0.31641
+DEAL::  line 159: 0.31641
 DEAL::not identity constrained: 477
-DEAL::  line 4: 0.062
-DEAL::  line 112: 0.31
-DEAL::  line 118: 0.94
-DEAL::  line 119: -0.31
+DEAL::  line 4: 0.062500
+DEAL::  line 112: 0.31250
+DEAL::  line 118: 0.93750
+DEAL::  line 119: -0.31250
 DEAL::not identity constrained: 478
-DEAL::  line 118: 1.0
+DEAL::  line 118: 1.0000
 DEAL::not identity constrained: 479
-DEAL::  line 4: -0.0039
-DEAL::  line 5: -0.0039
-DEAL::  line 20: 0.035
-DEAL::  line 21: 0.035
-DEAL::  line 112: -0.020
-DEAL::  line 113: -0.020
-DEAL::  line 118: -0.059
-DEAL::  line 119: 0.020
-DEAL::  line 120: -0.059
-DEAL::  line 121: 0.020
-DEAL::  line 122: 0.18
-DEAL::  line 123: 0.18
-DEAL::  line 156: 0.53
-DEAL::  line 157: 0.53
-DEAL::  line 158: -0.18
-DEAL::  line 159: -0.18
+DEAL::  line 4: -0.0039062
+DEAL::  line 5: -0.0039062
+DEAL::  line 20: 0.035156
+DEAL::  line 21: 0.035156
+DEAL::  line 112: -0.019531
+DEAL::  line 113: -0.019531
+DEAL::  line 118: -0.058594
+DEAL::  line 119: 0.019531
+DEAL::  line 120: -0.058594
+DEAL::  line 121: 0.019531
+DEAL::  line 122: 0.17578
+DEAL::  line 123: 0.17578
+DEAL::  line 156: 0.52734
+DEAL::  line 157: 0.52734
+DEAL::  line 158: -0.17578
+DEAL::  line 159: -0.17578
 DEAL::not identity constrained: 480
-DEAL::  line 118: -0.062
-DEAL::  line 120: -0.062
-DEAL::  line 156: 0.56
-DEAL::  line 157: 0.56
+DEAL::  line 118: -0.062500
+DEAL::  line 120: -0.062500
+DEAL::  line 156: 0.56250
+DEAL::  line 157: 0.56250
 DEAL::not identity constrained: 481
-DEAL::  line 112: 0.31
-DEAL::  line 113: 0.062
-DEAL::  line 122: 0.94
-DEAL::  line 123: -0.31
+DEAL::  line 112: 0.31250
+DEAL::  line 113: 0.062500
+DEAL::  line 122: 0.93750
+DEAL::  line 123: -0.31250
 DEAL::not identity constrained: 482
-DEAL::  line 122: 1.0
+DEAL::  line 122: 1.0000
 DEAL::not identity constrained: 483
-DEAL::  line 4: -0.020
-DEAL::  line 5: -0.0039
-DEAL::  line 20: -0.059
-DEAL::  line 21: 0.020
-DEAL::  line 112: -0.020
-DEAL::  line 113: -0.0039
-DEAL::  line 118: 0.18
-DEAL::  line 119: 0.18
-DEAL::  line 120: 0.035
-DEAL::  line 121: 0.035
-DEAL::  line 122: -0.059
-DEAL::  line 123: 0.020
-DEAL::  line 156: 0.53
-DEAL::  line 157: -0.18
-DEAL::  line 158: 0.53
-DEAL::  line 159: -0.18
+DEAL::  line 4: -0.019531
+DEAL::  line 5: -0.0039062
+DEAL::  line 20: -0.058594
+DEAL::  line 21: 0.019531
+DEAL::  line 112: -0.019531
+DEAL::  line 113: -0.0039062
+DEAL::  line 118: 0.17578
+DEAL::  line 119: 0.17578
+DEAL::  line 120: 0.035156
+DEAL::  line 121: 0.035156
+DEAL::  line 122: -0.058594
+DEAL::  line 123: 0.019531
+DEAL::  line 156: 0.52734
+DEAL::  line 157: -0.17578
+DEAL::  line 158: 0.52734
+DEAL::  line 159: -0.17578
 DEAL::not identity constrained: 484
-DEAL::  line 20: -0.062
-DEAL::  line 122: -0.062
-DEAL::  line 156: 0.56
-DEAL::  line 158: 0.56
+DEAL::  line 20: -0.062500
+DEAL::  line 122: -0.062500
+DEAL::  line 156: 0.56250
+DEAL::  line 158: 0.56250
 DEAL::not identity constrained: 509
-DEAL::  line 4: 0.020
-DEAL::  line 5: 0.0039
-DEAL::  line 20: 0.059
-DEAL::  line 21: -0.020
-DEAL::  line 112: 0.098
-DEAL::  line 113: 0.020
-DEAL::  line 118: 0.29
-DEAL::  line 119: -0.098
-DEAL::  line 120: 0.059
-DEAL::  line 121: -0.020
-DEAL::  line 122: 0.29
-DEAL::  line 123: -0.098
-DEAL::  line 156: 0.88
-DEAL::  line 157: -0.29
-DEAL::  line 158: -0.29
-DEAL::  line 159: 0.098
+DEAL::  line 4: 0.019531
+DEAL::  line 5: 0.0039062
+DEAL::  line 20: 0.058594
+DEAL::  line 21: -0.019531
+DEAL::  line 112: 0.097656
+DEAL::  line 113: 0.019531
+DEAL::  line 118: 0.29297
+DEAL::  line 119: -0.097656
+DEAL::  line 120: 0.058594
+DEAL::  line 121: -0.019531
+DEAL::  line 122: 0.29297
+DEAL::  line 123: -0.097656
+DEAL::  line 156: 0.87891
+DEAL::  line 157: -0.29297
+DEAL::  line 158: -0.29297
+DEAL::  line 159: 0.097656
 DEAL::not identity constrained: 510
-DEAL::  line 20: 0.062
-DEAL::  line 122: 0.31
-DEAL::  line 156: 0.94
-DEAL::  line 158: -0.31
+DEAL::  line 20: 0.062500
+DEAL::  line 122: 0.31250
+DEAL::  line 156: 0.93750
+DEAL::  line 158: -0.31250
 DEAL::not identity constrained: 511
-DEAL::  line 118: 0.31
-DEAL::  line 120: 0.062
-DEAL::  line 156: 0.94
-DEAL::  line 157: -0.31
+DEAL::  line 118: 0.31250
+DEAL::  line 120: 0.062500
+DEAL::  line 156: 0.93750
+DEAL::  line 157: -0.31250
 DEAL::not identity constrained: 512
-DEAL::  line 156: 1.0
+DEAL::  line 156: 1.0000
 DEAL::not identity constrained: 521
-DEAL::  line 5: -0.062
-DEAL::  line 113: -0.062
-DEAL::  line 120: 0.56
-DEAL::  line 121: 0.56
+DEAL::  line 5: -0.062500
+DEAL::  line 113: -0.062500
+DEAL::  line 120: 0.56250
+DEAL::  line 121: 0.56250
 DEAL::not identity constrained: 522
-DEAL::  line 5: 0.062
-DEAL::  line 113: 0.31
-DEAL::  line 120: 0.94
-DEAL::  line 121: -0.31
+DEAL::  line 5: 0.062500
+DEAL::  line 113: 0.31250
+DEAL::  line 120: 0.93750
+DEAL::  line 121: -0.31250
 DEAL::not identity constrained: 523
-DEAL::  line 120: 1.0
+DEAL::  line 120: 1.0000
 DEAL::not identity constrained: 524
-DEAL::  line 123: 1.0
+DEAL::  line 123: 1.0000
 DEAL::not identity constrained: 525
-DEAL::  line 112: 0.063
-DEAL::  line 113: 0.31
-DEAL::  line 122: -0.31
-DEAL::  line 123: 0.94
+DEAL::  line 112: 0.062500
+DEAL::  line 113: 0.31250
+DEAL::  line 122: -0.31250
+DEAL::  line 123: 0.93750
 DEAL::not identity constrained: 526
-DEAL::  line 21: -0.062
-DEAL::  line 123: -0.062
-DEAL::  line 157: 0.56
-DEAL::  line 159: 0.56
+DEAL::  line 21: -0.062500
+DEAL::  line 123: -0.062500
+DEAL::  line 157: 0.56250
+DEAL::  line 159: 0.56250
 DEAL::not identity constrained: 527
-DEAL::  line 4: -0.0039
-DEAL::  line 5: -0.020
-DEAL::  line 20: 0.020
-DEAL::  line 21: -0.059
-DEAL::  line 112: -0.0039
-DEAL::  line 113: -0.020
-DEAL::  line 118: 0.035
-DEAL::  line 119: 0.035
-DEAL::  line 120: 0.18
-DEAL::  line 121: 0.18
-DEAL::  line 122: 0.020
-DEAL::  line 123: -0.059
-DEAL::  line 156: -0.18
-DEAL::  line 157: 0.53
-DEAL::  line 158: -0.18
-DEAL::  line 159: 0.53
+DEAL::  line 4: -0.0039063
+DEAL::  line 5: -0.019531
+DEAL::  line 20: 0.019531
+DEAL::  line 21: -0.058594
+DEAL::  line 112: -0.0039063
+DEAL::  line 113: -0.019531
+DEAL::  line 118: 0.035156
+DEAL::  line 119: 0.035156
+DEAL::  line 120: 0.17578
+DEAL::  line 121: 0.17578
+DEAL::  line 122: 0.019531
+DEAL::  line 123: -0.058594
+DEAL::  line 156: -0.17578
+DEAL::  line 157: 0.52734
+DEAL::  line 158: -0.17578
+DEAL::  line 159: 0.52734
 DEAL::not identity constrained: 544
-DEAL::  line 21: 0.062
-DEAL::  line 123: 0.31
-DEAL::  line 157: 0.94
-DEAL::  line 159: -0.31
+DEAL::  line 21: 0.062500
+DEAL::  line 123: 0.31250
+DEAL::  line 157: 0.93750
+DEAL::  line 159: -0.31250
 DEAL::not identity constrained: 545
-DEAL::  line 4: 0.0039
-DEAL::  line 5: 0.020
-DEAL::  line 20: -0.020
-DEAL::  line 21: 0.059
-DEAL::  line 112: 0.020
-DEAL::  line 113: 0.098
-DEAL::  line 118: 0.059
-DEAL::  line 119: -0.020
-DEAL::  line 120: 0.29
-DEAL::  line 121: -0.098
-DEAL::  line 122: -0.098
-DEAL::  line 123: 0.29
-DEAL::  line 156: -0.29
-DEAL::  line 157: 0.88
-DEAL::  line 158: 0.098
-DEAL::  line 159: -0.29
+DEAL::  line 4: 0.0039063
+DEAL::  line 5: 0.019531
+DEAL::  line 20: -0.019531
+DEAL::  line 21: 0.058594
+DEAL::  line 112: 0.019531
+DEAL::  line 113: 0.097656
+DEAL::  line 118: 0.058594
+DEAL::  line 119: -0.019531
+DEAL::  line 120: 0.29297
+DEAL::  line 121: -0.097656
+DEAL::  line 122: -0.097656
+DEAL::  line 123: 0.29297
+DEAL::  line 156: -0.29297
+DEAL::  line 157: 0.87891
+DEAL::  line 158: 0.097656
+DEAL::  line 159: -0.29297
 DEAL::not identity constrained: 546
-DEAL::  line 157: 1.0
+DEAL::  line 157: 1.0000
 DEAL::not identity constrained: 547
-DEAL::  line 118: 0.063
-DEAL::  line 120: 0.31
-DEAL::  line 156: -0.31
-DEAL::  line 157: 0.94
+DEAL::  line 118: 0.062500
+DEAL::  line 120: 0.31250
+DEAL::  line 156: -0.31250
+DEAL::  line 157: 0.93750
 DEAL::not identity constrained: 556
-DEAL::  line 4: -0.062
-DEAL::  line 5: -0.062
-DEAL::  line 20: 0.56
-DEAL::  line 21: 0.56
+DEAL::  line 4: -0.062500
+DEAL::  line 5: -0.062500
+DEAL::  line 20: 0.56250
+DEAL::  line 21: 0.56250
 DEAL::not identity constrained: 557
-DEAL::  line 119: 1.0
+DEAL::  line 119: 1.0000
 DEAL::not identity constrained: 558
-DEAL::  line 4: 0.31
-DEAL::  line 112: 0.063
-DEAL::  line 118: -0.31
-DEAL::  line 119: 0.94
+DEAL::  line 4: 0.31250
+DEAL::  line 112: 0.062500
+DEAL::  line 118: -0.31250
+DEAL::  line 119: 0.93750
 DEAL::not identity constrained: 559
-DEAL::  line 119: -0.062
-DEAL::  line 121: -0.062
-DEAL::  line 158: 0.56
-DEAL::  line 159: 0.56
+DEAL::  line 119: -0.062500
+DEAL::  line 121: -0.062500
+DEAL::  line 158: 0.56250
+DEAL::  line 159: 0.56250
 DEAL::not identity constrained: 560
-DEAL::  line 4: -0.020
-DEAL::  line 5: -0.020
-DEAL::  line 20: 0.18
-DEAL::  line 21: 0.18
-DEAL::  line 112: -0.0039
-DEAL::  line 113: -0.0039
-DEAL::  line 118: 0.020
-DEAL::  line 119: -0.059
-DEAL::  line 120: 0.020
-DEAL::  line 121: -0.059
-DEAL::  line 122: 0.035
-DEAL::  line 123: 0.035
-DEAL::  line 156: -0.18
-DEAL::  line 157: -0.18
-DEAL::  line 158: 0.53
-DEAL::  line 159: 0.53
+DEAL::  line 4: -0.019531
+DEAL::  line 5: -0.019531
+DEAL::  line 20: 0.17578
+DEAL::  line 21: 0.17578
+DEAL::  line 112: -0.0039063
+DEAL::  line 113: -0.0039063
+DEAL::  line 118: 0.019531
+DEAL::  line 119: -0.058594
+DEAL::  line 120: 0.019531
+DEAL::  line 121: -0.058594
+DEAL::  line 122: 0.035156
+DEAL::  line 123: 0.035156
+DEAL::  line 156: -0.17578
+DEAL::  line 157: -0.17578
+DEAL::  line 158: 0.52734
+DEAL::  line 159: 0.52734
 DEAL::not identity constrained: 561
-DEAL::  line 4: 0.31
-DEAL::  line 5: 0.062
-DEAL::  line 20: 0.94
-DEAL::  line 21: -0.31
+DEAL::  line 4: 0.31250
+DEAL::  line 5: 0.062500
+DEAL::  line 20: 0.93750
+DEAL::  line 21: -0.31250
 DEAL::not identity constrained: 562
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 563
-DEAL::  line 25: 1.0
+DEAL::  line 25: 1.0000
 DEAL::not identity constrained: 564
-DEAL::  line 0: 0.063
-DEAL::  line 4: 0.31
-DEAL::  line 24: -0.31
-DEAL::  line 25: 0.94
+DEAL::  line 0: 0.062500
+DEAL::  line 4: 0.31250
+DEAL::  line 24: -0.31250
+DEAL::  line 25: 0.93750
 DEAL::not identity constrained: 565
-DEAL::  line 25: -0.062
-DEAL::  line 27: -0.062
-DEAL::  line 41: 0.56
-DEAL::  line 43: 0.56
+DEAL::  line 25: -0.062500
+DEAL::  line 27: -0.062500
+DEAL::  line 41: 0.56250
+DEAL::  line 43: 0.56250
 DEAL::not identity constrained: 566
-DEAL::  line 0: -0.0039
-DEAL::  line 1: -0.0039
-DEAL::  line 4: -0.020
-DEAL::  line 5: -0.020
-DEAL::  line 12: 0.035
-DEAL::  line 13: 0.035
-DEAL::  line 20: 0.18
-DEAL::  line 21: 0.18
-DEAL::  line 24: 0.020
-DEAL::  line 25: -0.059
-DEAL::  line 26: 0.020
-DEAL::  line 27: -0.059
-DEAL::  line 40: -0.18
-DEAL::  line 41: 0.53
-DEAL::  line 42: -0.18
-DEAL::  line 43: 0.53
+DEAL::  line 0: -0.0039063
+DEAL::  line 1: -0.0039063
+DEAL::  line 4: -0.019531
+DEAL::  line 5: -0.019531
+DEAL::  line 12: 0.035156
+DEAL::  line 13: 0.035156
+DEAL::  line 20: 0.17578
+DEAL::  line 21: 0.17578
+DEAL::  line 24: 0.019531
+DEAL::  line 25: -0.058594
+DEAL::  line 26: 0.019531
+DEAL::  line 27: -0.058594
+DEAL::  line 40: -0.17578
+DEAL::  line 41: 0.52734
+DEAL::  line 42: -0.17578
+DEAL::  line 43: 0.52734
 DEAL::not identity constrained: 575
-DEAL::  line 25: 0.31
-DEAL::  line 27: 0.062
-DEAL::  line 41: 0.94
-DEAL::  line 43: -0.31
+DEAL::  line 25: 0.31250
+DEAL::  line 27: 0.062500
+DEAL::  line 41: 0.93750
+DEAL::  line 43: -0.31250
 DEAL::not identity constrained: 576
-DEAL::  line 0: 0.020
-DEAL::  line 1: 0.0039
-DEAL::  line 4: 0.098
-DEAL::  line 5: 0.020
-DEAL::  line 12: 0.059
-DEAL::  line 13: -0.020
-DEAL::  line 20: 0.29
-DEAL::  line 21: -0.098
-DEAL::  line 24: -0.098
-DEAL::  line 25: 0.29
-DEAL::  line 26: -0.020
-DEAL::  line 27: 0.059
-DEAL::  line 40: -0.29
-DEAL::  line 41: 0.88
-DEAL::  line 42: 0.098
-DEAL::  line 43: -0.29
+DEAL::  line 0: 0.019531
+DEAL::  line 1: 0.0039063
+DEAL::  line 4: 0.097656
+DEAL::  line 5: 0.019531
+DEAL::  line 12: 0.058594
+DEAL::  line 13: -0.019531
+DEAL::  line 20: 0.29297
+DEAL::  line 21: -0.097656
+DEAL::  line 24: -0.097656
+DEAL::  line 25: 0.29297
+DEAL::  line 26: -0.019531
+DEAL::  line 27: 0.058594
+DEAL::  line 40: -0.29297
+DEAL::  line 41: 0.87891
+DEAL::  line 42: 0.097656
+DEAL::  line 43: -0.29297
 DEAL::not identity constrained: 577
-DEAL::  line 41: 1.0
+DEAL::  line 41: 1.0000
 DEAL::not identity constrained: 578
-DEAL::  line 12: 0.063
-DEAL::  line 20: 0.31
-DEAL::  line 40: -0.31
-DEAL::  line 41: 0.94
+DEAL::  line 12: 0.062500
+DEAL::  line 20: 0.31250
+DEAL::  line 40: -0.31250
+DEAL::  line 41: 0.93750
 DEAL::not identity constrained: 579
-DEAL::  line 119: 0.31
-DEAL::  line 121: 0.062
-DEAL::  line 158: 0.94
-DEAL::  line 159: -0.31
+DEAL::  line 119: 0.31250
+DEAL::  line 121: 0.062500
+DEAL::  line 158: 0.93750
+DEAL::  line 159: -0.31250
 DEAL::not identity constrained: 580
-DEAL::  line 158: 1.0
+DEAL::  line 158: 1.0000
 DEAL::not identity constrained: 581
-DEAL::  line 4: 0.098
-DEAL::  line 5: 0.020
-DEAL::  line 20: 0.29
-DEAL::  line 21: -0.098
-DEAL::  line 112: 0.020
-DEAL::  line 113: 0.0039
-DEAL::  line 118: -0.098
-DEAL::  line 119: 0.29
-DEAL::  line 120: -0.020
-DEAL::  line 121: 0.059
-DEAL::  line 122: 0.059
-DEAL::  line 123: -0.020
-DEAL::  line 156: -0.29
-DEAL::  line 157: 0.098
-DEAL::  line 158: 0.88
-DEAL::  line 159: -0.29
+DEAL::  line 4: 0.097656
+DEAL::  line 5: 0.019531
+DEAL::  line 20: 0.29297
+DEAL::  line 21: -0.097656
+DEAL::  line 112: 0.019531
+DEAL::  line 113: 0.0039063
+DEAL::  line 118: -0.097656
+DEAL::  line 119: 0.29297
+DEAL::  line 120: -0.019531
+DEAL::  line 121: 0.058594
+DEAL::  line 122: 0.058594
+DEAL::  line 123: -0.019531
+DEAL::  line 156: -0.29297
+DEAL::  line 157: 0.097656
+DEAL::  line 158: 0.87891
+DEAL::  line 159: -0.29297
 DEAL::not identity constrained: 582
-DEAL::  line 20: 0.31
-DEAL::  line 122: 0.063
-DEAL::  line 156: -0.31
-DEAL::  line 158: 0.94
+DEAL::  line 20: 0.31250
+DEAL::  line 122: 0.062500
+DEAL::  line 156: -0.31250
+DEAL::  line 158: 0.93750
 DEAL::not identity constrained: 591
-DEAL::  line 121: 1.0
+DEAL::  line 121: 1.0000
 DEAL::not identity constrained: 592
-DEAL::  line 5: 0.31
-DEAL::  line 113: 0.063
-DEAL::  line 120: -0.31
-DEAL::  line 121: 0.94
+DEAL::  line 5: 0.31250
+DEAL::  line 113: 0.062500
+DEAL::  line 120: -0.31250
+DEAL::  line 121: 0.93750
 DEAL::not identity constrained: 593
-DEAL::  line 21: 1.0
+DEAL::  line 21: 1.0000
 DEAL::not identity constrained: 594
-DEAL::  line 4: 0.063
-DEAL::  line 5: 0.31
-DEAL::  line 20: -0.31
-DEAL::  line 21: 0.94
+DEAL::  line 4: 0.062500
+DEAL::  line 5: 0.31250
+DEAL::  line 20: -0.31250
+DEAL::  line 21: 0.93750
 DEAL::not identity constrained: 595
-DEAL::  line 27: 1.0
+DEAL::  line 27: 1.0000
 DEAL::not identity constrained: 596
-DEAL::  line 1: 0.063
-DEAL::  line 5: 0.31
-DEAL::  line 26: -0.31
-DEAL::  line 27: 0.94
+DEAL::  line 1: 0.062500
+DEAL::  line 5: 0.31250
+DEAL::  line 26: -0.31250
+DEAL::  line 27: 0.93750
 DEAL::not identity constrained: 601
-DEAL::  line 43: 1.0
+DEAL::  line 43: 1.0000
 DEAL::not identity constrained: 602
-DEAL::  line 13: 0.063
-DEAL::  line 21: 0.31
-DEAL::  line 42: -0.31
-DEAL::  line 43: 0.94
+DEAL::  line 13: 0.062500
+DEAL::  line 21: 0.31250
+DEAL::  line 42: -0.31250
+DEAL::  line 43: 0.93750
 DEAL::not identity constrained: 603
-DEAL::  line 25: 0.063
-DEAL::  line 27: 0.31
-DEAL::  line 41: -0.31
-DEAL::  line 43: 0.94
+DEAL::  line 25: 0.062500
+DEAL::  line 27: 0.31250
+DEAL::  line 41: -0.31250
+DEAL::  line 43: 0.93750
 DEAL::not identity constrained: 604
-DEAL::  line 0: 0.0039
-DEAL::  line 1: 0.020
-DEAL::  line 4: 0.020
-DEAL::  line 5: 0.098
-DEAL::  line 12: -0.020
-DEAL::  line 13: 0.059
-DEAL::  line 20: -0.098
-DEAL::  line 21: 0.29
-DEAL::  line 24: -0.020
-DEAL::  line 25: 0.059
-DEAL::  line 26: -0.098
-DEAL::  line 27: 0.29
-DEAL::  line 40: 0.098
-DEAL::  line 41: -0.29
-DEAL::  line 42: -0.29
-DEAL::  line 43: 0.88
+DEAL::  line 0: 0.0039063
+DEAL::  line 1: 0.019531
+DEAL::  line 4: 0.019531
+DEAL::  line 5: 0.097656
+DEAL::  line 12: -0.019531
+DEAL::  line 13: 0.058594
+DEAL::  line 20: -0.097656
+DEAL::  line 21: 0.29297
+DEAL::  line 24: -0.019531
+DEAL::  line 25: 0.058594
+DEAL::  line 26: -0.097656
+DEAL::  line 27: 0.29297
+DEAL::  line 40: 0.097656
+DEAL::  line 41: -0.29297
+DEAL::  line 42: -0.29297
+DEAL::  line 43: 0.87891
 DEAL::not identity constrained: 605
-DEAL::  line 159: 1.0
+DEAL::  line 159: 1.0000
 DEAL::not identity constrained: 606
-DEAL::  line 119: 0.063
-DEAL::  line 121: 0.31
-DEAL::  line 158: -0.31
-DEAL::  line 159: 0.94
+DEAL::  line 119: 0.062500
+DEAL::  line 121: 0.31250
+DEAL::  line 158: -0.31250
+DEAL::  line 159: 0.93750
 DEAL::not identity constrained: 607
-DEAL::  line 21: 0.31
-DEAL::  line 123: 0.063
-DEAL::  line 157: -0.31
-DEAL::  line 159: 0.94
+DEAL::  line 21: 0.31250
+DEAL::  line 123: 0.062500
+DEAL::  line 157: -0.31250
+DEAL::  line 159: 0.93750
 DEAL::not identity constrained: 608
-DEAL::  line 4: 0.020
-DEAL::  line 5: 0.098
-DEAL::  line 20: -0.098
-DEAL::  line 21: 0.29
-DEAL::  line 112: 0.0039
-DEAL::  line 113: 0.020
-DEAL::  line 118: -0.020
-DEAL::  line 119: 0.059
-DEAL::  line 120: -0.098
-DEAL::  line 121: 0.29
-DEAL::  line 122: -0.020
-DEAL::  line 123: 0.059
-DEAL::  line 156: 0.098
-DEAL::  line 157: -0.29
-DEAL::  line 158: -0.29
-DEAL::  line 159: 0.88
+DEAL::  line 4: 0.019531
+DEAL::  line 5: 0.097656
+DEAL::  line 20: -0.097656
+DEAL::  line 21: 0.29297
+DEAL::  line 112: 0.0039063
+DEAL::  line 113: 0.019531
+DEAL::  line 118: -0.019531
+DEAL::  line 119: 0.058594
+DEAL::  line 120: -0.097656
+DEAL::  line 121: 0.29297
+DEAL::  line 122: -0.019531
+DEAL::  line 123: 0.058594
+DEAL::  line 156: 0.097656
+DEAL::  line 157: -0.29297
+DEAL::  line 158: -0.29297
+DEAL::  line 159: 0.87891
 DEAL::not identity constrained: 713
-DEAL::  line 1: -0.062
-DEAL::  line 64: -0.062
-DEAL::  line 70: 0.56
-DEAL::  line 71: 0.56
+DEAL::  line 1: -0.062500
+DEAL::  line 64: -0.062500
+DEAL::  line 70: 0.56250
+DEAL::  line 71: 0.56250
 DEAL::not identity constrained: 714
-DEAL::  line 1: 0.0039
-DEAL::  line 5: 0.0039
-DEAL::  line 26: -0.035
-DEAL::  line 27: -0.035
-DEAL::  line 64: 0.0039
-DEAL::  line 66: 0.0039
-DEAL::  line 70: -0.035
-DEAL::  line 71: -0.035
-DEAL::  line 76: -0.035
-DEAL::  line 77: -0.035
-DEAL::  line 80: -0.035
-DEAL::  line 81: -0.035
-DEAL::  line 88: 0.32
-DEAL::  line 89: 0.32
-DEAL::  line 90: 0.32
-DEAL::  line 91: 0.32
+DEAL::  line 1: 0.0039062
+DEAL::  line 5: 0.0039062
+DEAL::  line 26: -0.035156
+DEAL::  line 27: -0.035156
+DEAL::  line 64: 0.0039062
+DEAL::  line 66: 0.0039062
+DEAL::  line 70: -0.035156
+DEAL::  line 71: -0.035156
+DEAL::  line 76: -0.035156
+DEAL::  line 77: -0.035156
+DEAL::  line 80: -0.035156
+DEAL::  line 81: -0.035156
+DEAL::  line 88: 0.31641
+DEAL::  line 89: 0.31641
+DEAL::  line 90: 0.31641
+DEAL::  line 91: 0.31641
 DEAL::not identity constrained: 717
-DEAL::  line 1: 0.31
-DEAL::  line 64: 0.062
-DEAL::  line 70: 0.94
-DEAL::  line 71: -0.31
+DEAL::  line 1: 0.31250
+DEAL::  line 64: 0.062500
+DEAL::  line 70: 0.93750
+DEAL::  line 71: -0.31250
 DEAL::not identity constrained: 718
-DEAL::  line 70: 1.0
+DEAL::  line 70: 1.0000
 DEAL::not identity constrained: 721
-DEAL::  line 1: -0.020
-DEAL::  line 5: -0.020
-DEAL::  line 26: 0.18
-DEAL::  line 27: 0.18
-DEAL::  line 64: -0.0039
-DEAL::  line 66: -0.0039
-DEAL::  line 70: -0.059
-DEAL::  line 71: 0.020
-DEAL::  line 76: -0.059
-DEAL::  line 77: 0.020
-DEAL::  line 80: 0.035
-DEAL::  line 81: 0.035
-DEAL::  line 88: 0.53
-DEAL::  line 89: 0.53
-DEAL::  line 90: -0.18
-DEAL::  line 91: -0.18
+DEAL::  line 1: -0.019531
+DEAL::  line 5: -0.019531
+DEAL::  line 26: 0.17578
+DEAL::  line 27: 0.17578
+DEAL::  line 64: -0.0039062
+DEAL::  line 66: -0.0039062
+DEAL::  line 70: -0.058594
+DEAL::  line 71: 0.019531
+DEAL::  line 76: -0.058594
+DEAL::  line 77: 0.019531
+DEAL::  line 80: 0.035156
+DEAL::  line 81: 0.035156
+DEAL::  line 88: 0.52734
+DEAL::  line 89: 0.52734
+DEAL::  line 90: -0.17578
+DEAL::  line 91: -0.17578
 DEAL::not identity constrained: 722
-DEAL::  line 70: -0.062
-DEAL::  line 76: -0.062
-DEAL::  line 88: 0.56
-DEAL::  line 89: 0.56
+DEAL::  line 70: -0.062500
+DEAL::  line 76: -0.062500
+DEAL::  line 88: 0.56250
+DEAL::  line 89: 0.56250
 DEAL::not identity constrained: 723
-DEAL::  line 1: -0.020
-DEAL::  line 5: -0.0039
-DEAL::  line 26: -0.059
-DEAL::  line 27: 0.020
-DEAL::  line 64: -0.020
-DEAL::  line 66: -0.0039
-DEAL::  line 70: 0.18
-DEAL::  line 71: 0.18
-DEAL::  line 76: 0.035
-DEAL::  line 77: 0.035
-DEAL::  line 80: -0.059
-DEAL::  line 81: 0.020
-DEAL::  line 88: 0.53
-DEAL::  line 89: -0.18
-DEAL::  line 90: 0.53
-DEAL::  line 91: -0.18
+DEAL::  line 1: -0.019531
+DEAL::  line 5: -0.0039062
+DEAL::  line 26: -0.058594
+DEAL::  line 27: 0.019531
+DEAL::  line 64: -0.019531
+DEAL::  line 66: -0.0039062
+DEAL::  line 70: 0.17578
+DEAL::  line 71: 0.17578
+DEAL::  line 76: 0.035156
+DEAL::  line 77: 0.035156
+DEAL::  line 80: -0.058594
+DEAL::  line 81: 0.019531
+DEAL::  line 88: 0.52734
+DEAL::  line 89: -0.17578
+DEAL::  line 90: 0.52734
+DEAL::  line 91: -0.17578
 DEAL::not identity constrained: 724
-DEAL::  line 26: -0.062
-DEAL::  line 80: -0.062
-DEAL::  line 88: 0.56
-DEAL::  line 90: 0.56
+DEAL::  line 26: -0.062500
+DEAL::  line 80: -0.062500
+DEAL::  line 88: 0.56250
+DEAL::  line 90: 0.56250
 DEAL::not identity constrained: 729
-DEAL::  line 1: 0.098
-DEAL::  line 5: 0.020
-DEAL::  line 26: 0.29
-DEAL::  line 27: -0.098
-DEAL::  line 64: 0.020
-DEAL::  line 66: 0.0039
-DEAL::  line 70: 0.29
-DEAL::  line 71: -0.098
-DEAL::  line 76: 0.059
-DEAL::  line 77: -0.020
-DEAL::  line 80: 0.059
-DEAL::  line 81: -0.020
-DEAL::  line 88: 0.88
-DEAL::  line 89: -0.29
-DEAL::  line 90: -0.29
-DEAL::  line 91: 0.098
+DEAL::  line 1: 0.097656
+DEAL::  line 5: 0.019531
+DEAL::  line 26: 0.29297
+DEAL::  line 27: -0.097656
+DEAL::  line 64: 0.019531
+DEAL::  line 66: 0.0039062
+DEAL::  line 70: 0.29297
+DEAL::  line 71: -0.097656
+DEAL::  line 76: 0.058594
+DEAL::  line 77: -0.019531
+DEAL::  line 80: 0.058594
+DEAL::  line 81: -0.019531
+DEAL::  line 88: 0.87891
+DEAL::  line 89: -0.29297
+DEAL::  line 90: -0.29297
+DEAL::  line 91: 0.097656
 DEAL::not identity constrained: 730
-DEAL::  line 26: 0.31
-DEAL::  line 80: 0.062
-DEAL::  line 88: 0.94
-DEAL::  line 90: -0.31
+DEAL::  line 26: 0.31250
+DEAL::  line 80: 0.062500
+DEAL::  line 88: 0.93750
+DEAL::  line 90: -0.31250
 DEAL::not identity constrained: 731
-DEAL::  line 70: 0.31
-DEAL::  line 76: 0.062
-DEAL::  line 88: 0.94
-DEAL::  line 89: -0.31
+DEAL::  line 70: 0.31250
+DEAL::  line 76: 0.062500
+DEAL::  line 88: 0.93750
+DEAL::  line 89: -0.31250
 DEAL::not identity constrained: 732
-DEAL::  line 88: 1.0
+DEAL::  line 88: 1.0000
 DEAL::not identity constrained: 749
-DEAL::  line 64: -0.062
-DEAL::  line 66: -0.062
-DEAL::  line 80: 0.56
-DEAL::  line 81: 0.56
+DEAL::  line 64: -0.062500
+DEAL::  line 66: -0.062500
+DEAL::  line 80: 0.56250
+DEAL::  line 81: 0.56250
 DEAL::not identity constrained: 752
-DEAL::  line 71: 1.0
+DEAL::  line 71: 1.0000
 DEAL::not identity constrained: 753
-DEAL::  line 1: 0.063
-DEAL::  line 64: 0.31
-DEAL::  line 70: -0.31
-DEAL::  line 71: 0.94
+DEAL::  line 1: 0.062500
+DEAL::  line 64: 0.31250
+DEAL::  line 70: -0.31250
+DEAL::  line 71: 0.93750
 DEAL::not identity constrained: 756
-DEAL::  line 71: -0.062
-DEAL::  line 77: -0.062
-DEAL::  line 90: 0.56
-DEAL::  line 91: 0.56
+DEAL::  line 71: -0.062500
+DEAL::  line 77: -0.062500
+DEAL::  line 90: 0.56250
+DEAL::  line 91: 0.56250
 DEAL::not identity constrained: 757
-DEAL::  line 1: -0.0039
-DEAL::  line 5: -0.0039
-DEAL::  line 26: 0.035
-DEAL::  line 27: 0.035
-DEAL::  line 64: -0.020
-DEAL::  line 66: -0.020
-DEAL::  line 70: 0.020
-DEAL::  line 71: -0.059
-DEAL::  line 76: 0.020
-DEAL::  line 77: -0.059
-DEAL::  line 80: 0.18
-DEAL::  line 81: 0.18
-DEAL::  line 88: -0.18
-DEAL::  line 89: -0.18
-DEAL::  line 90: 0.53
-DEAL::  line 91: 0.53
+DEAL::  line 1: -0.0039063
+DEAL::  line 5: -0.0039063
+DEAL::  line 26: 0.035156
+DEAL::  line 27: 0.035156
+DEAL::  line 64: -0.019531
+DEAL::  line 66: -0.019531
+DEAL::  line 70: 0.019531
+DEAL::  line 71: -0.058594
+DEAL::  line 76: 0.019531
+DEAL::  line 77: -0.058594
+DEAL::  line 80: 0.17578
+DEAL::  line 81: 0.17578
+DEAL::  line 88: -0.17578
+DEAL::  line 89: -0.17578
+DEAL::  line 90: 0.52734
+DEAL::  line 91: 0.52734
 DEAL::not identity constrained: 758
-DEAL::  line 64: 0.31
-DEAL::  line 66: 0.062
-DEAL::  line 80: 0.94
-DEAL::  line 81: -0.31
+DEAL::  line 64: 0.31250
+DEAL::  line 66: 0.062500
+DEAL::  line 80: 0.93750
+DEAL::  line 81: -0.31250
 DEAL::not identity constrained: 759
-DEAL::  line 80: 1.0
+DEAL::  line 80: 1.0000
 DEAL::not identity constrained: 764
-DEAL::  line 71: 0.31
-DEAL::  line 77: 0.062
-DEAL::  line 90: 0.94
-DEAL::  line 91: -0.31
+DEAL::  line 71: 0.31250
+DEAL::  line 77: 0.062500
+DEAL::  line 90: 0.93750
+DEAL::  line 91: -0.31250
 DEAL::not identity constrained: 765
-DEAL::  line 90: 1.0
+DEAL::  line 90: 1.0000
 DEAL::not identity constrained: 766
-DEAL::  line 1: 0.020
-DEAL::  line 5: 0.0039
-DEAL::  line 26: 0.059
-DEAL::  line 27: -0.020
-DEAL::  line 64: 0.098
-DEAL::  line 66: 0.020
-DEAL::  line 70: -0.098
-DEAL::  line 71: 0.29
-DEAL::  line 76: -0.020
-DEAL::  line 77: 0.059
-DEAL::  line 80: 0.29
-DEAL::  line 81: -0.098
-DEAL::  line 88: -0.29
-DEAL::  line 89: 0.098
-DEAL::  line 90: 0.88
-DEAL::  line 91: -0.29
+DEAL::  line 1: 0.019531
+DEAL::  line 5: 0.0039063
+DEAL::  line 26: 0.058594
+DEAL::  line 27: -0.019531
+DEAL::  line 64: 0.097656
+DEAL::  line 66: 0.019531
+DEAL::  line 70: -0.097656
+DEAL::  line 71: 0.29297
+DEAL::  line 76: -0.019531
+DEAL::  line 77: 0.058594
+DEAL::  line 80: 0.29297
+DEAL::  line 81: -0.097656
+DEAL::  line 88: -0.29297
+DEAL::  line 89: 0.097656
+DEAL::  line 90: 0.87891
+DEAL::  line 91: -0.29297
 DEAL::not identity constrained: 767
-DEAL::  line 26: 0.063
-DEAL::  line 80: 0.31
-DEAL::  line 88: -0.31
-DEAL::  line 90: 0.94
+DEAL::  line 26: 0.062500
+DEAL::  line 80: 0.31250
+DEAL::  line 88: -0.31250
+DEAL::  line 90: 0.93750
 DEAL::not identity constrained: 784
-DEAL::  line 113: -0.062
-DEAL::  line 172: -0.062
-DEAL::  line 177: 0.56
-DEAL::  line 178: 0.56
+DEAL::  line 113: -0.062500
+DEAL::  line 172: -0.062500
+DEAL::  line 177: 0.56250
+DEAL::  line 178: 0.56250
 DEAL::not identity constrained: 785
-DEAL::  line 5: 0.0039
-DEAL::  line 66: 0.0039
-DEAL::  line 76: -0.035
-DEAL::  line 77: -0.035
-DEAL::  line 113: 0.0039
-DEAL::  line 120: -0.035
-DEAL::  line 121: -0.035
-DEAL::  line 172: 0.0039
-DEAL::  line 175: -0.035
-DEAL::  line 176: -0.035
-DEAL::  line 177: -0.035
-DEAL::  line 178: -0.035
-DEAL::  line 201: 0.32
-DEAL::  line 202: 0.32
-DEAL::  line 203: 0.32
-DEAL::  line 204: 0.32
+DEAL::  line 5: 0.0039062
+DEAL::  line 66: 0.0039062
+DEAL::  line 76: -0.035156
+DEAL::  line 77: -0.035156
+DEAL::  line 113: 0.0039062
+DEAL::  line 120: -0.035156
+DEAL::  line 121: -0.035156
+DEAL::  line 172: 0.0039062
+DEAL::  line 175: -0.035156
+DEAL::  line 176: -0.035156
+DEAL::  line 177: -0.035156
+DEAL::  line 178: -0.035156
+DEAL::  line 201: 0.31641
+DEAL::  line 202: 0.31641
+DEAL::  line 203: 0.31641
+DEAL::  line 204: 0.31641
 DEAL::not identity constrained: 786
-DEAL::  line 5: -0.0039
-DEAL::  line 66: -0.0039
-DEAL::  line 76: 0.035
-DEAL::  line 77: 0.035
-DEAL::  line 113: -0.020
-DEAL::  line 120: -0.059
-DEAL::  line 121: 0.020
-DEAL::  line 172: -0.020
-DEAL::  line 175: -0.059
-DEAL::  line 176: 0.020
-DEAL::  line 177: 0.18
-DEAL::  line 178: 0.18
-DEAL::  line 201: 0.53
-DEAL::  line 202: 0.53
-DEAL::  line 203: -0.18
-DEAL::  line 204: -0.18
+DEAL::  line 5: -0.0039062
+DEAL::  line 66: -0.0039062
+DEAL::  line 76: 0.035156
+DEAL::  line 77: 0.035156
+DEAL::  line 113: -0.019531
+DEAL::  line 120: -0.058594
+DEAL::  line 121: 0.019531
+DEAL::  line 172: -0.019531
+DEAL::  line 175: -0.058594
+DEAL::  line 176: 0.019531
+DEAL::  line 177: 0.17578
+DEAL::  line 178: 0.17578
+DEAL::  line 201: 0.52734
+DEAL::  line 202: 0.52734
+DEAL::  line 203: -0.17578
+DEAL::  line 204: -0.17578
 DEAL::not identity constrained: 787
-DEAL::  line 120: -0.062
-DEAL::  line 175: -0.062
-DEAL::  line 201: 0.56
-DEAL::  line 202: 0.56
+DEAL::  line 120: -0.062500
+DEAL::  line 175: -0.062500
+DEAL::  line 201: 0.56250
+DEAL::  line 202: 0.56250
 DEAL::not identity constrained: 788
-DEAL::  line 113: 0.31
-DEAL::  line 172: 0.062
-DEAL::  line 177: 0.94
-DEAL::  line 178: -0.31
+DEAL::  line 113: 0.31250
+DEAL::  line 172: 0.062500
+DEAL::  line 177: 0.93750
+DEAL::  line 178: -0.31250
 DEAL::not identity constrained: 789
-DEAL::  line 177: 1.0
+DEAL::  line 177: 1.0000
 DEAL::not identity constrained: 790
-DEAL::  line 5: -0.020
-DEAL::  line 66: -0.0039
-DEAL::  line 76: -0.059
-DEAL::  line 77: 0.020
-DEAL::  line 113: -0.020
-DEAL::  line 120: 0.18
-DEAL::  line 121: 0.18
-DEAL::  line 172: -0.0039
-DEAL::  line 175: 0.035
-DEAL::  line 176: 0.035
-DEAL::  line 177: -0.059
-DEAL::  line 178: 0.020
-DEAL::  line 201: 0.53
-DEAL::  line 202: -0.18
-DEAL::  line 203: 0.53
-DEAL::  line 204: -0.18
+DEAL::  line 5: -0.019531
+DEAL::  line 66: -0.0039062
+DEAL::  line 76: -0.058594
+DEAL::  line 77: 0.019531
+DEAL::  line 113: -0.019531
+DEAL::  line 120: 0.17578
+DEAL::  line 121: 0.17578
+DEAL::  line 172: -0.0039062
+DEAL::  line 175: 0.035156
+DEAL::  line 176: 0.035156
+DEAL::  line 177: -0.058594
+DEAL::  line 178: 0.019531
+DEAL::  line 201: 0.52734
+DEAL::  line 202: -0.17578
+DEAL::  line 203: 0.52734
+DEAL::  line 204: -0.17578
 DEAL::not identity constrained: 791
-DEAL::  line 76: -0.062
-DEAL::  line 177: -0.062
-DEAL::  line 201: 0.56
-DEAL::  line 203: 0.56
+DEAL::  line 76: -0.062500
+DEAL::  line 177: -0.062500
+DEAL::  line 201: 0.56250
+DEAL::  line 203: 0.56250
 DEAL::not identity constrained: 808
-DEAL::  line 5: 0.020
-DEAL::  line 66: 0.0039
-DEAL::  line 76: 0.059
-DEAL::  line 77: -0.020
-DEAL::  line 113: 0.098
-DEAL::  line 120: 0.29
-DEAL::  line 121: -0.098
-DEAL::  line 172: 0.020
-DEAL::  line 175: 0.059
-DEAL::  line 176: -0.020
-DEAL::  line 177: 0.29
-DEAL::  line 178: -0.098
-DEAL::  line 201: 0.88
-DEAL::  line 202: -0.29
-DEAL::  line 203: -0.29
-DEAL::  line 204: 0.098
+DEAL::  line 5: 0.019531
+DEAL::  line 66: 0.0039062
+DEAL::  line 76: 0.058594
+DEAL::  line 77: -0.019531
+DEAL::  line 113: 0.097656
+DEAL::  line 120: 0.29297
+DEAL::  line 121: -0.097656
+DEAL::  line 172: 0.019531
+DEAL::  line 175: 0.058594
+DEAL::  line 176: -0.019531
+DEAL::  line 177: 0.29297
+DEAL::  line 178: -0.097656
+DEAL::  line 201: 0.87891
+DEAL::  line 202: -0.29297
+DEAL::  line 203: -0.29297
+DEAL::  line 204: 0.097656
 DEAL::not identity constrained: 809
-DEAL::  line 76: 0.062
-DEAL::  line 177: 0.31
-DEAL::  line 201: 0.94
-DEAL::  line 203: -0.31
+DEAL::  line 76: 0.062500
+DEAL::  line 177: 0.31250
+DEAL::  line 201: 0.93750
+DEAL::  line 203: -0.31250
 DEAL::not identity constrained: 810
-DEAL::  line 120: 0.31
-DEAL::  line 175: 0.062
-DEAL::  line 201: 0.94
-DEAL::  line 202: -0.31
+DEAL::  line 120: 0.31250
+DEAL::  line 175: 0.062500
+DEAL::  line 201: 0.93750
+DEAL::  line 202: -0.31250
 DEAL::not identity constrained: 811
-DEAL::  line 201: 1.0
+DEAL::  line 201: 1.0000
 DEAL::not identity constrained: 820
-DEAL::  line 66: -0.062
-DEAL::  line 172: -0.062
-DEAL::  line 175: 0.56
-DEAL::  line 176: 0.56
+DEAL::  line 66: -0.062500
+DEAL::  line 172: -0.062500
+DEAL::  line 175: 0.56250
+DEAL::  line 176: 0.56250
 DEAL::not identity constrained: 821
-DEAL::  line 66: 0.062
-DEAL::  line 172: 0.31
-DEAL::  line 175: 0.94
-DEAL::  line 176: -0.31
+DEAL::  line 66: 0.062500
+DEAL::  line 172: 0.31250
+DEAL::  line 175: 0.93750
+DEAL::  line 176: -0.31250
 DEAL::not identity constrained: 822
-DEAL::  line 175: 1.0
+DEAL::  line 175: 1.0000
 DEAL::not identity constrained: 823
-DEAL::  line 178: 1.0
+DEAL::  line 178: 1.0000
 DEAL::not identity constrained: 824
-DEAL::  line 113: 0.063
-DEAL::  line 172: 0.31
-DEAL::  line 177: -0.31
-DEAL::  line 178: 0.94
+DEAL::  line 113: 0.062500
+DEAL::  line 172: 0.31250
+DEAL::  line 177: -0.31250
+DEAL::  line 178: 0.93750
 DEAL::not identity constrained: 825
-DEAL::  line 77: -0.062
-DEAL::  line 178: -0.062
-DEAL::  line 202: 0.56
-DEAL::  line 204: 0.56
+DEAL::  line 77: -0.062500
+DEAL::  line 178: -0.062500
+DEAL::  line 202: 0.56250
+DEAL::  line 204: 0.56250
 DEAL::not identity constrained: 826
-DEAL::  line 5: -0.0039
-DEAL::  line 66: -0.020
-DEAL::  line 76: 0.020
-DEAL::  line 77: -0.059
-DEAL::  line 113: -0.0039
-DEAL::  line 120: 0.035
-DEAL::  line 121: 0.035
-DEAL::  line 172: -0.020
-DEAL::  line 175: 0.18
-DEAL::  line 176: 0.18
-DEAL::  line 177: 0.020
-DEAL::  line 178: -0.059
-DEAL::  line 201: -0.18
-DEAL::  line 202: 0.53
-DEAL::  line 203: -0.18
-DEAL::  line 204: 0.53
+DEAL::  line 5: -0.0039063
+DEAL::  line 66: -0.019531
+DEAL::  line 76: 0.019531
+DEAL::  line 77: -0.058594
+DEAL::  line 113: -0.0039063
+DEAL::  line 120: 0.035156
+DEAL::  line 121: 0.035156
+DEAL::  line 172: -0.019531
+DEAL::  line 175: 0.17578
+DEAL::  line 176: 0.17578
+DEAL::  line 177: 0.019531
+DEAL::  line 178: -0.058594
+DEAL::  line 201: -0.17578
+DEAL::  line 202: 0.52734
+DEAL::  line 203: -0.17578
+DEAL::  line 204: 0.52734
 DEAL::not identity constrained: 843
-DEAL::  line 77: 0.062
-DEAL::  line 178: 0.31
-DEAL::  line 202: 0.94
-DEAL::  line 204: -0.31
+DEAL::  line 77: 0.062500
+DEAL::  line 178: 0.31250
+DEAL::  line 202: 0.93750
+DEAL::  line 204: -0.31250
 DEAL::not identity constrained: 844
-DEAL::  line 5: 0.0039
-DEAL::  line 66: 0.020
-DEAL::  line 76: -0.020
-DEAL::  line 77: 0.059
-DEAL::  line 113: 0.020
-DEAL::  line 120: 0.059
-DEAL::  line 121: -0.020
-DEAL::  line 172: 0.098
-DEAL::  line 175: 0.29
-DEAL::  line 176: -0.098
-DEAL::  line 177: -0.098
-DEAL::  line 178: 0.29
-DEAL::  line 201: -0.29
-DEAL::  line 202: 0.88
-DEAL::  line 203: 0.098
-DEAL::  line 204: -0.29
+DEAL::  line 5: 0.0039063
+DEAL::  line 66: 0.019531
+DEAL::  line 76: -0.019531
+DEAL::  line 77: 0.058594
+DEAL::  line 113: 0.019531
+DEAL::  line 120: 0.058594
+DEAL::  line 121: -0.019531
+DEAL::  line 172: 0.097656
+DEAL::  line 175: 0.29297
+DEAL::  line 176: -0.097656
+DEAL::  line 177: -0.097656
+DEAL::  line 178: 0.29297
+DEAL::  line 201: -0.29297
+DEAL::  line 202: 0.87891
+DEAL::  line 203: 0.097656
+DEAL::  line 204: -0.29297
 DEAL::not identity constrained: 845
-DEAL::  line 202: 1.0
+DEAL::  line 202: 1.0000
 DEAL::not identity constrained: 846
-DEAL::  line 120: 0.063
-DEAL::  line 175: 0.31
-DEAL::  line 201: -0.31
-DEAL::  line 202: 0.94
+DEAL::  line 120: 0.062500
+DEAL::  line 175: 0.31250
+DEAL::  line 201: -0.31250
+DEAL::  line 202: 0.93750
 DEAL::not identity constrained: 855
-DEAL::  line 5: -0.062
-DEAL::  line 66: -0.062
-DEAL::  line 76: 0.56
-DEAL::  line 77: 0.56
+DEAL::  line 5: -0.062500
+DEAL::  line 66: -0.062500
+DEAL::  line 76: 0.56250
+DEAL::  line 77: 0.56250
 DEAL::not identity constrained: 856
-DEAL::  line 121: -0.062
-DEAL::  line 176: -0.062
-DEAL::  line 203: 0.56
-DEAL::  line 204: 0.56
+DEAL::  line 121: -0.062500
+DEAL::  line 176: -0.062500
+DEAL::  line 203: 0.56250
+DEAL::  line 204: 0.56250
 DEAL::not identity constrained: 857
-DEAL::  line 5: -0.020
-DEAL::  line 66: -0.020
-DEAL::  line 76: 0.18
-DEAL::  line 77: 0.18
-DEAL::  line 113: -0.0039
-DEAL::  line 120: 0.020
-DEAL::  line 121: -0.059
-DEAL::  line 172: -0.0039
-DEAL::  line 175: 0.020
-DEAL::  line 176: -0.059
-DEAL::  line 177: 0.035
-DEAL::  line 178: 0.035
-DEAL::  line 201: -0.18
-DEAL::  line 202: -0.18
-DEAL::  line 203: 0.53
-DEAL::  line 204: 0.53
+DEAL::  line 5: -0.019531
+DEAL::  line 66: -0.019531
+DEAL::  line 76: 0.17578
+DEAL::  line 77: 0.17578
+DEAL::  line 113: -0.0039063
+DEAL::  line 120: 0.019531
+DEAL::  line 121: -0.058594
+DEAL::  line 172: -0.0039063
+DEAL::  line 175: 0.019531
+DEAL::  line 176: -0.058594
+DEAL::  line 177: 0.035156
+DEAL::  line 178: 0.035156
+DEAL::  line 201: -0.17578
+DEAL::  line 202: -0.17578
+DEAL::  line 203: 0.52734
+DEAL::  line 204: 0.52734
 DEAL::not identity constrained: 858
-DEAL::  line 5: 0.31
-DEAL::  line 66: 0.062
-DEAL::  line 76: 0.94
-DEAL::  line 77: -0.31
+DEAL::  line 5: 0.31250
+DEAL::  line 66: 0.062500
+DEAL::  line 76: 0.93750
+DEAL::  line 77: -0.31250
 DEAL::not identity constrained: 859
-DEAL::  line 76: 1.0
+DEAL::  line 76: 1.0000
 DEAL::not identity constrained: 860
-DEAL::  line 27: -0.062
-DEAL::  line 81: -0.062
-DEAL::  line 89: 0.56
-DEAL::  line 91: 0.56
+DEAL::  line 27: -0.062500
+DEAL::  line 81: -0.062500
+DEAL::  line 89: 0.56250
+DEAL::  line 91: 0.56250
 DEAL::not identity constrained: 861
-DEAL::  line 1: -0.0039
-DEAL::  line 5: -0.020
-DEAL::  line 26: 0.020
-DEAL::  line 27: -0.059
-DEAL::  line 64: -0.0039
-DEAL::  line 66: -0.020
-DEAL::  line 70: 0.035
-DEAL::  line 71: 0.035
-DEAL::  line 76: 0.18
-DEAL::  line 77: 0.18
-DEAL::  line 80: 0.020
-DEAL::  line 81: -0.059
-DEAL::  line 88: -0.18
-DEAL::  line 89: 0.53
-DEAL::  line 90: -0.18
-DEAL::  line 91: 0.53
+DEAL::  line 1: -0.0039063
+DEAL::  line 5: -0.019531
+DEAL::  line 26: 0.019531
+DEAL::  line 27: -0.058594
+DEAL::  line 64: -0.0039063
+DEAL::  line 66: -0.019531
+DEAL::  line 70: 0.035156
+DEAL::  line 71: 0.035156
+DEAL::  line 76: 0.17578
+DEAL::  line 77: 0.17578
+DEAL::  line 80: 0.019531
+DEAL::  line 81: -0.058594
+DEAL::  line 88: -0.17578
+DEAL::  line 89: 0.52734
+DEAL::  line 90: -0.17578
+DEAL::  line 91: 0.52734
 DEAL::not identity constrained: 866
-DEAL::  line 27: 0.31
-DEAL::  line 81: 0.062
-DEAL::  line 89: 0.94
-DEAL::  line 91: -0.31
+DEAL::  line 27: 0.31250
+DEAL::  line 81: 0.062500
+DEAL::  line 89: 0.93750
+DEAL::  line 91: -0.31250
 DEAL::not identity constrained: 867
-DEAL::  line 1: 0.020
-DEAL::  line 5: 0.098
-DEAL::  line 26: -0.098
-DEAL::  line 27: 0.29
-DEAL::  line 64: 0.0039
-DEAL::  line 66: 0.020
-DEAL::  line 70: 0.059
-DEAL::  line 71: -0.020
-DEAL::  line 76: 0.29
-DEAL::  line 77: -0.098
-DEAL::  line 80: -0.020
-DEAL::  line 81: 0.059
-DEAL::  line 88: -0.29
-DEAL::  line 89: 0.88
-DEAL::  line 90: 0.098
-DEAL::  line 91: -0.29
+DEAL::  line 1: 0.019531
+DEAL::  line 5: 0.097656
+DEAL::  line 26: -0.097656
+DEAL::  line 27: 0.29297
+DEAL::  line 64: 0.0039063
+DEAL::  line 66: 0.019531
+DEAL::  line 70: 0.058594
+DEAL::  line 71: -0.019531
+DEAL::  line 76: 0.29297
+DEAL::  line 77: -0.097656
+DEAL::  line 80: -0.019531
+DEAL::  line 81: 0.058594
+DEAL::  line 88: -0.29297
+DEAL::  line 89: 0.87891
+DEAL::  line 90: 0.097656
+DEAL::  line 91: -0.29297
 DEAL::not identity constrained: 868
-DEAL::  line 89: 1.0
+DEAL::  line 89: 1.0000
 DEAL::not identity constrained: 869
-DEAL::  line 70: 0.063
-DEAL::  line 76: 0.31
-DEAL::  line 88: -0.31
-DEAL::  line 89: 0.94
+DEAL::  line 70: 0.062500
+DEAL::  line 76: 0.31250
+DEAL::  line 88: -0.31250
+DEAL::  line 89: 0.93750
 DEAL::not identity constrained: 870
-DEAL::  line 121: 0.31
-DEAL::  line 176: 0.062
-DEAL::  line 203: 0.94
-DEAL::  line 204: -0.31
+DEAL::  line 121: 0.31250
+DEAL::  line 176: 0.062500
+DEAL::  line 203: 0.93750
+DEAL::  line 204: -0.31250
 DEAL::not identity constrained: 871
-DEAL::  line 203: 1.0
+DEAL::  line 203: 1.0000
 DEAL::not identity constrained: 872
-DEAL::  line 5: 0.098
-DEAL::  line 66: 0.020
-DEAL::  line 76: 0.29
-DEAL::  line 77: -0.098
-DEAL::  line 113: 0.020
-DEAL::  line 120: -0.098
-DEAL::  line 121: 0.29
-DEAL::  line 172: 0.0039
-DEAL::  line 175: -0.020
-DEAL::  line 176: 0.059
-DEAL::  line 177: 0.059
-DEAL::  line 178: -0.020
-DEAL::  line 201: -0.29
-DEAL::  line 202: 0.098
-DEAL::  line 203: 0.88
-DEAL::  line 204: -0.29
+DEAL::  line 5: 0.097656
+DEAL::  line 66: 0.019531
+DEAL::  line 76: 0.29297
+DEAL::  line 77: -0.097656
+DEAL::  line 113: 0.019531
+DEAL::  line 120: -0.097656
+DEAL::  line 121: 0.29297
+DEAL::  line 172: 0.0039063
+DEAL::  line 175: -0.019531
+DEAL::  line 176: 0.058594
+DEAL::  line 177: 0.058594
+DEAL::  line 178: -0.019531
+DEAL::  line 201: -0.29297
+DEAL::  line 202: 0.097656
+DEAL::  line 203: 0.87891
+DEAL::  line 204: -0.29297
 DEAL::not identity constrained: 873
-DEAL::  line 76: 0.31
-DEAL::  line 177: 0.063
-DEAL::  line 201: -0.31
-DEAL::  line 203: 0.94
+DEAL::  line 76: 0.31250
+DEAL::  line 177: 0.062500
+DEAL::  line 201: -0.31250
+DEAL::  line 203: 0.93750
 DEAL::not identity constrained: 882
-DEAL::  line 176: 1.0
+DEAL::  line 176: 1.0000
 DEAL::not identity constrained: 883
-DEAL::  line 66: 0.31
-DEAL::  line 172: 0.063
-DEAL::  line 175: -0.31
-DEAL::  line 176: 0.94
+DEAL::  line 66: 0.31250
+DEAL::  line 172: 0.062500
+DEAL::  line 175: -0.31250
+DEAL::  line 176: 0.93750
 DEAL::not identity constrained: 884
-DEAL::  line 77: 1.0
+DEAL::  line 77: 1.0000
 DEAL::not identity constrained: 885
-DEAL::  line 5: 0.063
-DEAL::  line 66: 0.31
-DEAL::  line 76: -0.31
-DEAL::  line 77: 0.94
+DEAL::  line 5: 0.062500
+DEAL::  line 66: 0.31250
+DEAL::  line 76: -0.31250
+DEAL::  line 77: 0.93750
 DEAL::not identity constrained: 886
-DEAL::  line 81: 1.0
+DEAL::  line 81: 1.0000
 DEAL::not identity constrained: 887
-DEAL::  line 64: 0.063
-DEAL::  line 66: 0.31
-DEAL::  line 80: -0.31
-DEAL::  line 81: 0.94
+DEAL::  line 64: 0.062500
+DEAL::  line 66: 0.31250
+DEAL::  line 80: -0.31250
+DEAL::  line 81: 0.93750
 DEAL::not identity constrained: 892
-DEAL::  line 91: 1.0
+DEAL::  line 91: 1.0000
 DEAL::not identity constrained: 893
-DEAL::  line 71: 0.063
-DEAL::  line 77: 0.31
-DEAL::  line 90: -0.31
-DEAL::  line 91: 0.94
+DEAL::  line 71: 0.062500
+DEAL::  line 77: 0.31250
+DEAL::  line 90: -0.31250
+DEAL::  line 91: 0.93750
 DEAL::not identity constrained: 894
-DEAL::  line 27: 0.063
-DEAL::  line 81: 0.31
-DEAL::  line 89: -0.31
-DEAL::  line 91: 0.94
+DEAL::  line 27: 0.062500
+DEAL::  line 81: 0.31250
+DEAL::  line 89: -0.31250
+DEAL::  line 91: 0.93750
 DEAL::not identity constrained: 895
-DEAL::  line 1: 0.0039
-DEAL::  line 5: 0.020
-DEAL::  line 26: -0.020
-DEAL::  line 27: 0.059
-DEAL::  line 64: 0.020
-DEAL::  line 66: 0.098
-DEAL::  line 70: -0.020
-DEAL::  line 71: 0.059
-DEAL::  line 76: -0.098
-DEAL::  line 77: 0.29
-DEAL::  line 80: -0.098
-DEAL::  line 81: 0.29
-DEAL::  line 88: 0.098
-DEAL::  line 89: -0.29
-DEAL::  line 90: -0.29
-DEAL::  line 91: 0.88
+DEAL::  line 1: 0.0039063
+DEAL::  line 5: 0.019531
+DEAL::  line 26: -0.019531
+DEAL::  line 27: 0.058594
+DEAL::  line 64: 0.019531
+DEAL::  line 66: 0.097656
+DEAL::  line 70: -0.019531
+DEAL::  line 71: 0.058594
+DEAL::  line 76: -0.097656
+DEAL::  line 77: 0.29297
+DEAL::  line 80: -0.097656
+DEAL::  line 81: 0.29297
+DEAL::  line 88: 0.097656
+DEAL::  line 89: -0.29297
+DEAL::  line 90: -0.29297
+DEAL::  line 91: 0.87891
 DEAL::not identity constrained: 896
-DEAL::  line 204: 1.0
+DEAL::  line 204: 1.0000
 DEAL::not identity constrained: 897
-DEAL::  line 121: 0.063
-DEAL::  line 176: 0.31
-DEAL::  line 203: -0.31
-DEAL::  line 204: 0.94
+DEAL::  line 121: 0.062500
+DEAL::  line 176: 0.31250
+DEAL::  line 203: -0.31250
+DEAL::  line 204: 0.93750
 DEAL::not identity constrained: 898
-DEAL::  line 77: 0.31
-DEAL::  line 178: 0.063
-DEAL::  line 202: -0.31
-DEAL::  line 204: 0.94
+DEAL::  line 77: 0.31250
+DEAL::  line 178: 0.062500
+DEAL::  line 202: -0.31250
+DEAL::  line 204: 0.93750
 DEAL::not identity constrained: 899
-DEAL::  line 5: 0.020
-DEAL::  line 66: 0.098
-DEAL::  line 76: -0.098
-DEAL::  line 77: 0.29
-DEAL::  line 113: 0.0039
-DEAL::  line 120: -0.020
-DEAL::  line 121: 0.059
-DEAL::  line 172: 0.020
-DEAL::  line 175: -0.098
-DEAL::  line 176: 0.29
-DEAL::  line 177: -0.020
-DEAL::  line 178: 0.059
-DEAL::  line 201: 0.098
-DEAL::  line 202: -0.29
-DEAL::  line 203: -0.29
-DEAL::  line 204: 0.88
+DEAL::  line 5: 0.019531
+DEAL::  line 66: 0.097656
+DEAL::  line 76: -0.097656
+DEAL::  line 77: 0.29297
+DEAL::  line 113: 0.0039063
+DEAL::  line 120: -0.019531
+DEAL::  line 121: 0.058594
+DEAL::  line 172: 0.019531
+DEAL::  line 175: -0.097656
+DEAL::  line 176: 0.29297
+DEAL::  line 177: -0.019531
+DEAL::  line 178: 0.058594
+DEAL::  line 201: 0.097656
+DEAL::  line 202: -0.29297
+DEAL::  line 203: -0.29297
+DEAL::  line 204: 0.87891
 DEAL::Checking DGQ0 in 1d:
 DEAL::0
 DEAL::0
@@ -1737,13 +1737,13 @@ DEAL::11111111111111110101111111010
 DEAL::4
 DEAL::11111111111111111111111111111
 DEAL::not identity constrained: 16
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 18
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 26
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 28
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::Checking Nedelec0 in 3d:
 DEAL::40
 DEAL::2
@@ -1751,101 +1751,101 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111011000
 DEAL::40
 DEAL::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 68
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 71
-DEAL::  line 2: 0.25
-DEAL::  line 6: 0.25
+DEAL::  line 2: 0.25000
+DEAL::  line 6: 0.25000
 DEAL::not identity constrained: 72
-DEAL::  line 8: 0.50
+DEAL::  line 8: 0.50000
 DEAL::not identity constrained: 73
-DEAL::  line 8: 0.25
-DEAL::  line 9: 0.25
+DEAL::  line 8: 0.25000
+DEAL::  line 9: 0.25000
 DEAL::not identity constrained: 75
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 77
-DEAL::  line 2: 0.25
-DEAL::  line 6: 0.25
+DEAL::  line 2: 0.25000
+DEAL::  line 6: 0.25000
 DEAL::not identity constrained: 78
-DEAL::  line 9: 0.50
+DEAL::  line 9: 0.50000
 DEAL::not identity constrained: 79
-DEAL::  line 20: 0.50
+DEAL::  line 20: 0.50000
 DEAL::not identity constrained: 80
-DEAL::  line 20: 0.25
-DEAL::  line 21: 0.25
+DEAL::  line 20: 0.25000
+DEAL::  line 21: 0.25000
 DEAL::not identity constrained: 81
-DEAL::  line 22: 0.50
+DEAL::  line 22: 0.50000
 DEAL::not identity constrained: 82
-DEAL::  line 6: 0.25
-DEAL::  line 22: 0.25
+DEAL::  line 6: 0.25000
+DEAL::  line 22: 0.25000
 DEAL::not identity constrained: 87
-DEAL::  line 21: 0.50
+DEAL::  line 21: 0.50000
 DEAL::not identity constrained: 88
-DEAL::  line 22: 0.50
+DEAL::  line 22: 0.50000
 DEAL::not identity constrained: 89
-DEAL::  line 6: 0.25
-DEAL::  line 22: 0.25
+DEAL::  line 6: 0.25000
+DEAL::  line 22: 0.25000
 DEAL::not identity constrained: 92
-DEAL::  line 20: 0.50
+DEAL::  line 20: 0.50000
 DEAL::not identity constrained: 93
-DEAL::  line 20: 0.25
-DEAL::  line 21: 0.25
+DEAL::  line 20: 0.25000
+DEAL::  line 21: 0.25000
 DEAL::not identity constrained: 94
-DEAL::  line 6: 0.50
+DEAL::  line 6: 0.50000
 DEAL::not identity constrained: 95
-DEAL::  line 8: 0.50
+DEAL::  line 8: 0.50000
 DEAL::not identity constrained: 96
-DEAL::  line 8: 0.25
-DEAL::  line 9: 0.25
+DEAL::  line 8: 0.25000
+DEAL::  line 9: 0.25000
 DEAL::not identity constrained: 97
-DEAL::  line 21: 0.50
+DEAL::  line 21: 0.50000
 DEAL::not identity constrained: 98
-DEAL::  line 6: 0.50
+DEAL::  line 6: 0.50000
 DEAL::not identity constrained: 99
-DEAL::  line 9: 0.50
+DEAL::  line 9: 0.50000
 DEAL::not identity constrained: 117
-DEAL::  line 13: 0.50
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 119
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
 DEAL::not identity constrained: 120
-DEAL::  line 9: 0.25
-DEAL::  line 18: 0.25
+DEAL::  line 9: 0.25000
+DEAL::  line 18: 0.25000
 DEAL::not identity constrained: 122
-DEAL::  line 13: 0.50
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 124
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
 DEAL::not identity constrained: 125
-DEAL::  line 18: 0.50
+DEAL::  line 18: 0.50000
 DEAL::not identity constrained: 126
-DEAL::  line 21: 0.25
-DEAL::  line 31: 0.25
+DEAL::  line 21: 0.25000
+DEAL::  line 31: 0.25000
 DEAL::not identity constrained: 127
-DEAL::  line 32: 0.50
+DEAL::  line 32: 0.50000
 DEAL::not identity constrained: 128
-DEAL::  line 16: 0.25
-DEAL::  line 32: 0.25
+DEAL::  line 16: 0.25000
+DEAL::  line 32: 0.25000
 DEAL::not identity constrained: 131
-DEAL::  line 31: 0.50
+DEAL::  line 31: 0.50000
 DEAL::not identity constrained: 132
-DEAL::  line 32: 0.50
+DEAL::  line 32: 0.50000
 DEAL::not identity constrained: 133
-DEAL::  line 16: 0.25
-DEAL::  line 32: 0.25
+DEAL::  line 16: 0.25000
+DEAL::  line 32: 0.25000
 DEAL::not identity constrained: 136
-DEAL::  line 21: 0.25
-DEAL::  line 31: 0.25
+DEAL::  line 21: 0.25000
+DEAL::  line 31: 0.25000
 DEAL::not identity constrained: 137
-DEAL::  line 16: 0.50
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 138
-DEAL::  line 9: 0.25
-DEAL::  line 18: 0.25
+DEAL::  line 9: 0.25000
+DEAL::  line 18: 0.25000
 DEAL::not identity constrained: 139
-DEAL::  line 31: 0.50
+DEAL::  line 31: 0.50000
 DEAL::not identity constrained: 140
-DEAL::  line 16: 0.50
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 141
-DEAL::  line 18: 0.50
+DEAL::  line 18: 0.50000
 DEAL::Checking RaviartThomas0 in 2d:
 DEAL::4
 DEAL::1
@@ -1853,13 +1853,13 @@ DEAL::11111111111111110101111111010
 DEAL::4
 DEAL::11111111111111111111111111111
 DEAL::not identity constrained: 16
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 18
-DEAL::  line 2: 0.50
+DEAL::  line 2: 0.50000
 DEAL::not identity constrained: 26
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 28
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::Checking RaviartThomas1 in 2d:
 DEAL::8
 DEAL::2
@@ -1867,25 +1867,25 @@ DEAL::11111111111111111111111111111111111111111111111100111111001111111111111111
 DEAL::8
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 48
-DEAL::  line 4: 0.50
-DEAL::  line 5: -0.43
+DEAL::  line 4: 0.50000
+DEAL::  line 5: -0.43301
 DEAL::not identity constrained: 49
-DEAL::  line 5: 0.25
+DEAL::  line 5: 0.25000
 DEAL::not identity constrained: 56
-DEAL::  line 4: 0.50
-DEAL::  line 5: 0.43
+DEAL::  line 4: 0.50000
+DEAL::  line 5: 0.43301
 DEAL::not identity constrained: 57
-DEAL::  line 5: 0.25
+DEAL::  line 5: 0.25000
 DEAL::not identity constrained: 84
-DEAL::  line 14: 0.50
-DEAL::  line 15: -0.43
+DEAL::  line 14: 0.50000
+DEAL::  line 15: -0.43301
 DEAL::not identity constrained: 85
-DEAL::  line 15: 0.25
+DEAL::  line 15: 0.25000
 DEAL::not identity constrained: 92
-DEAL::  line 14: 0.50
-DEAL::  line 15: 0.43
+DEAL::  line 14: 0.50000
+DEAL::  line 15: 0.43301
 DEAL::not identity constrained: 93
-DEAL::  line 15: 0.25
+DEAL::  line 15: 0.25000
 DEAL::Checking RaviartThomas2 in 2d:
 DEAL::12
 DEAL::2
@@ -1893,37 +1893,37 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::12
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 96
-DEAL::  line 6: 0.50
-DEAL::  line 7: -0.43
+DEAL::  line 6: 0.50000
+DEAL::  line 7: -0.43301
 DEAL::not identity constrained: 97
-DEAL::  line 7: 0.25
-DEAL::  line 8: -0.48
+DEAL::  line 7: 0.25000
+DEAL::  line 8: -0.48412
 DEAL::not identity constrained: 98
-DEAL::  line 8: 0.12
+DEAL::  line 8: 0.12500
 DEAL::not identity constrained: 114
-DEAL::  line 6: 0.50
-DEAL::  line 7: 0.43
+DEAL::  line 6: 0.50000
+DEAL::  line 7: 0.43301
 DEAL::not identity constrained: 115
-DEAL::  line 7: 0.25
-DEAL::  line 8: 0.48
+DEAL::  line 7: 0.25000
+DEAL::  line 8: 0.48412
 DEAL::not identity constrained: 116
-DEAL::  line 8: 0.12
+DEAL::  line 8: 0.12500
 DEAL::not identity constrained: 174
-DEAL::  line 27: 0.50
-DEAL::  line 28: -0.43
+DEAL::  line 27: 0.50000
+DEAL::  line 28: -0.43301
 DEAL::not identity constrained: 175
-DEAL::  line 28: 0.25
-DEAL::  line 29: -0.48
+DEAL::  line 28: 0.25000
+DEAL::  line 29: -0.48412
 DEAL::not identity constrained: 176
-DEAL::  line 29: 0.12
+DEAL::  line 29: 0.12500
 DEAL::not identity constrained: 192
-DEAL::  line 27: 0.50
-DEAL::  line 28: 0.43
+DEAL::  line 27: 0.50000
+DEAL::  line 28: 0.43301
 DEAL::not identity constrained: 193
-DEAL::  line 28: 0.25
-DEAL::  line 29: 0.48
+DEAL::  line 28: 0.25000
+DEAL::  line 29: 0.48412
 DEAL::not identity constrained: 194
-DEAL::  line 29: 0.12
+DEAL::  line 29: 0.12500
 DEAL::Checking RaviartThomasNodal0 in 2d:
 DEAL::4
 DEAL::1
@@ -1931,13 +1931,13 @@ DEAL::11111111111111110101111111010
 DEAL::4
 DEAL::11111111111111110101111111010
 DEAL::not identity constrained: 16
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 18
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 26
-DEAL::  line 5: 1.0
+DEAL::  line 5: 1.0000
 DEAL::not identity constrained: 28
-DEAL::  line 5: 1.0
+DEAL::  line 5: 1.0000
 DEAL::Checking RaviartThomasNodal1 in 2d:
 DEAL::8
 DEAL::2
@@ -1945,29 +1945,29 @@ DEAL::11111111111111111111111111111111111111111111111100111111001111111111111111
 DEAL::8
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 48
-DEAL::  line 4: 1.2
-DEAL::  line 5: -0.18
+DEAL::  line 4: 1.1830
+DEAL::  line 5: -0.18301
 DEAL::not identity constrained: 49
-DEAL::  line 4: 0.68
-DEAL::  line 5: 0.32
+DEAL::  line 4: 0.68301
+DEAL::  line 5: 0.31699
 DEAL::not identity constrained: 56
-DEAL::  line 4: 0.32
-DEAL::  line 5: 0.68
+DEAL::  line 4: 0.31699
+DEAL::  line 5: 0.68301
 DEAL::not identity constrained: 57
-DEAL::  line 4: -0.18
-DEAL::  line 5: 1.2
+DEAL::  line 4: -0.18301
+DEAL::  line 5: 1.1830
 DEAL::not identity constrained: 84
-DEAL::  line 14: 1.2
-DEAL::  line 15: -0.18
+DEAL::  line 14: 1.1830
+DEAL::  line 15: -0.18301
 DEAL::not identity constrained: 85
-DEAL::  line 14: 0.68
-DEAL::  line 15: 0.32
+DEAL::  line 14: 0.68301
+DEAL::  line 15: 0.31699
 DEAL::not identity constrained: 92
-DEAL::  line 14: 0.32
-DEAL::  line 15: 0.68
+DEAL::  line 14: 0.31699
+DEAL::  line 15: 0.68301
 DEAL::not identity constrained: 93
-DEAL::  line 14: -0.18
-DEAL::  line 15: 1.2
+DEAL::  line 14: -0.18301
+DEAL::  line 15: 1.1830
 DEAL::Checking RaviartThomasNodal2 in 2d:
 DEAL::12
 DEAL::3
@@ -1975,53 +1975,53 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::12
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 96
-DEAL::  line 6: 1.2
-DEAL::  line 7: -0.31
-DEAL::  line 8: 0.083
+DEAL::  line 6: 1.2288
+DEAL::  line 7: -0.31216
+DEAL::  line 8: 0.083333
 DEAL::not identity constrained: 97
-DEAL::  line 6: 0.53
-DEAL::  line 7: 0.58
-DEAL::  line 8: -0.11
+DEAL::  line 6: 0.53108
+DEAL::  line 7: 0.58333
+DEAL::  line 8: -0.11442
 DEAL::not identity constrained: 98
-DEAL::  line 6: 0.083
-DEAL::  line 7: 0.98
-DEAL::  line 8: -0.062
+DEAL::  line 6: 0.083333
+DEAL::  line 7: 0.97883
+DEAL::  line 8: -0.062164
 DEAL::not identity constrained: 114
-DEAL::  line 6: -0.062
-DEAL::  line 7: 0.98
-DEAL::  line 8: 0.083
+DEAL::  line 6: -0.062164
+DEAL::  line 7: 0.97883
+DEAL::  line 8: 0.083333
 DEAL::not identity constrained: 115
-DEAL::  line 6: -0.11
-DEAL::  line 7: 0.58
-DEAL::  line 8: 0.53
+DEAL::  line 6: -0.11442
+DEAL::  line 7: 0.58333
+DEAL::  line 8: 0.53108
 DEAL::not identity constrained: 116
-DEAL::  line 6: 0.083
-DEAL::  line 7: -0.31
-DEAL::  line 8: 1.2
+DEAL::  line 6: 0.083333
+DEAL::  line 7: -0.31216
+DEAL::  line 8: 1.2288
 DEAL::not identity constrained: 174
-DEAL::  line 27: 1.2
-DEAL::  line 28: -0.31
-DEAL::  line 29: 0.083
+DEAL::  line 27: 1.2288
+DEAL::  line 28: -0.31216
+DEAL::  line 29: 0.083333
 DEAL::not identity constrained: 175
-DEAL::  line 27: 0.53
-DEAL::  line 28: 0.58
-DEAL::  line 29: -0.11
+DEAL::  line 27: 0.53108
+DEAL::  line 28: 0.58333
+DEAL::  line 29: -0.11442
 DEAL::not identity constrained: 176
-DEAL::  line 27: 0.083
-DEAL::  line 28: 0.98
-DEAL::  line 29: -0.062
+DEAL::  line 27: 0.083333
+DEAL::  line 28: 0.97883
+DEAL::  line 29: -0.062164
 DEAL::not identity constrained: 192
-DEAL::  line 27: -0.062
-DEAL::  line 28: 0.98
-DEAL::  line 29: 0.083
+DEAL::  line 27: -0.062164
+DEAL::  line 28: 0.97883
+DEAL::  line 29: 0.083333
 DEAL::not identity constrained: 193
-DEAL::  line 27: -0.11
-DEAL::  line 28: 0.58
-DEAL::  line 29: 0.53
+DEAL::  line 27: -0.11442
+DEAL::  line 28: 0.58333
+DEAL::  line 29: 0.53108
 DEAL::not identity constrained: 194
-DEAL::  line 27: 0.083
-DEAL::  line 28: -0.31
-DEAL::  line 29: 1.2
+DEAL::  line 27: 0.083333
+DEAL::  line 28: -0.31216
+DEAL::  line 29: 1.2288
 DEAL::Checking RaviartThomasNodal0 in 3d:
 DEAL::16
 DEAL::1
@@ -2029,37 +2029,37 @@ DEAL::11111111111111111111111111111111111111111101110111111011101100100111111111
 DEAL::16
 DEAL::1111111111111111111111111111111111111111110111011111101110110010011111111111011101111101110100100
 DEAL::not identity constrained: 42
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 46
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 53
-DEAL::  line 15: 1.0
+DEAL::  line 15: 1.0000
 DEAL::not identity constrained: 57
-DEAL::  line 15: 1.0
+DEAL::  line 15: 1.0000
 DEAL::not identity constrained: 60
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 61
-DEAL::  line 15: 1.0
+DEAL::  line 15: 1.0000
 DEAL::not identity constrained: 63
-DEAL::  line 2: 1.0
+DEAL::  line 2: 1.0000
 DEAL::not identity constrained: 64
-DEAL::  line 15: 1.0
+DEAL::  line 15: 1.0000
 DEAL::not identity constrained: 76
-DEAL::  line 7: 1.0
+DEAL::  line 7: 1.0000
 DEAL::not identity constrained: 80
-DEAL::  line 7: 1.0
+DEAL::  line 7: 1.0000
 DEAL::not identity constrained: 86
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 90
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 92
-DEAL::  line 7: 1.0
+DEAL::  line 7: 1.0000
 DEAL::not identity constrained: 93
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 95
-DEAL::  line 7: 1.0
+DEAL::  line 7: 1.0000
 DEAL::not identity constrained: 96
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::Checking RaviartThomasNodal1 in 3d:
 DEAL::64
 DEAL::4
@@ -2067,325 +2067,325 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::64
 DEAL::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 264
-DEAL::  line 8: 1.4
-DEAL::  line 9: -0.22
-DEAL::  line 10: -0.22
-DEAL::  line 11: 0.033
+DEAL::  line 8: 1.3995
+DEAL::  line 9: -0.21651
+DEAL::  line 10: -0.21651
+DEAL::  line 11: 0.033494
 DEAL::not identity constrained: 265
-DEAL::  line 8: 0.81
-DEAL::  line 9: 0.38
-DEAL::  line 10: -0.12
-DEAL::  line 11: -0.058
+DEAL::  line 8: 0.80801
+DEAL::  line 9: 0.37500
+DEAL::  line 10: -0.12500
+DEAL::  line 11: -0.058013
 DEAL::not identity constrained: 266
-DEAL::  line 8: 0.81
-DEAL::  line 9: -0.12
-DEAL::  line 10: 0.38
-DEAL::  line 11: -0.058
+DEAL::  line 8: 0.80801
+DEAL::  line 9: -0.12500
+DEAL::  line 10: 0.37500
+DEAL::  line 11: -0.058013
 DEAL::not identity constrained: 267
-DEAL::  line 8: 0.47
-DEAL::  line 9: 0.22
-DEAL::  line 10: 0.22
-DEAL::  line 11: 0.10
+DEAL::  line 8: 0.46651
+DEAL::  line 9: 0.21651
+DEAL::  line 10: 0.21651
+DEAL::  line 11: 0.10048
 DEAL::not identity constrained: 292
-DEAL::  line 8: 0.37
-DEAL::  line 9: -0.058
-DEAL::  line 10: 0.81
-DEAL::  line 11: -0.12
+DEAL::  line 8: 0.37500
+DEAL::  line 9: -0.058013
+DEAL::  line 10: 0.80801
+DEAL::  line 11: -0.12500
 DEAL::not identity constrained: 293
-DEAL::  line 8: 0.22
-DEAL::  line 9: 0.10
-DEAL::  line 10: 0.47
-DEAL::  line 11: 0.22
+DEAL::  line 8: 0.21651
+DEAL::  line 9: 0.10048
+DEAL::  line 10: 0.46651
+DEAL::  line 11: 0.21651
 DEAL::not identity constrained: 294
-DEAL::  line 8: -0.22
-DEAL::  line 9: 0.033
-DEAL::  line 10: 1.4
-DEAL::  line 11: -0.22
+DEAL::  line 8: -0.21651
+DEAL::  line 9: 0.033494
+DEAL::  line 10: 1.3995
+DEAL::  line 11: -0.21651
 DEAL::not identity constrained: 295
-DEAL::  line 8: -0.13
-DEAL::  line 9: -0.058
-DEAL::  line 10: 0.81
-DEAL::  line 11: 0.37
+DEAL::  line 8: -0.12500
+DEAL::  line 9: -0.058013
+DEAL::  line 10: 0.80801
+DEAL::  line 11: 0.37500
 DEAL::not identity constrained: 332
-DEAL::  line 84: 1.4
-DEAL::  line 85: -0.22
-DEAL::  line 86: -0.22
-DEAL::  line 87: 0.033
+DEAL::  line 84: 1.3995
+DEAL::  line 85: -0.21651
+DEAL::  line 86: -0.21651
+DEAL::  line 87: 0.033494
 DEAL::not identity constrained: 333
-DEAL::  line 84: 0.81
-DEAL::  line 85: 0.38
-DEAL::  line 86: -0.12
-DEAL::  line 87: -0.058
+DEAL::  line 84: 0.80801
+DEAL::  line 85: 0.37500
+DEAL::  line 86: -0.12500
+DEAL::  line 87: -0.058013
 DEAL::not identity constrained: 334
-DEAL::  line 84: 0.81
-DEAL::  line 85: -0.12
-DEAL::  line 86: 0.38
-DEAL::  line 87: -0.058
+DEAL::  line 84: 0.80801
+DEAL::  line 85: -0.12500
+DEAL::  line 86: 0.37500
+DEAL::  line 87: -0.058013
 DEAL::not identity constrained: 335
-DEAL::  line 84: 0.47
-DEAL::  line 85: 0.22
-DEAL::  line 86: 0.22
-DEAL::  line 87: 0.10
+DEAL::  line 84: 0.46651
+DEAL::  line 85: 0.21651
+DEAL::  line 86: 0.21651
+DEAL::  line 87: 0.10048
 DEAL::not identity constrained: 360
-DEAL::  line 84: 0.38
-DEAL::  line 85: 0.81
-DEAL::  line 86: -0.058
-DEAL::  line 87: -0.13
+DEAL::  line 84: 0.37500
+DEAL::  line 85: 0.80801
+DEAL::  line 86: -0.058013
+DEAL::  line 87: -0.12500
 DEAL::not identity constrained: 361
-DEAL::  line 84: -0.22
-DEAL::  line 85: 1.4
-DEAL::  line 86: 0.033
-DEAL::  line 87: -0.22
+DEAL::  line 84: -0.21651
+DEAL::  line 85: 1.3995
+DEAL::  line 86: 0.033494
+DEAL::  line 87: -0.21651
 DEAL::not identity constrained: 362
-DEAL::  line 84: 0.22
-DEAL::  line 85: 0.47
-DEAL::  line 86: 0.10
-DEAL::  line 87: 0.22
+DEAL::  line 84: 0.21651
+DEAL::  line 85: 0.46651
+DEAL::  line 86: 0.10048
+DEAL::  line 87: 0.21651
 DEAL::not identity constrained: 363
-DEAL::  line 84: -0.13
-DEAL::  line 85: 0.81
-DEAL::  line 86: -0.058
-DEAL::  line 87: 0.37
+DEAL::  line 84: -0.12500
+DEAL::  line 85: 0.80801
+DEAL::  line 86: -0.058013
+DEAL::  line 87: 0.37500
 DEAL::not identity constrained: 384
-DEAL::  line 8: 0.38
-DEAL::  line 9: 0.81
-DEAL::  line 10: -0.058
-DEAL::  line 11: -0.13
+DEAL::  line 8: 0.37500
+DEAL::  line 9: 0.80801
+DEAL::  line 10: -0.058013
+DEAL::  line 11: -0.12500
 DEAL::not identity constrained: 385
-DEAL::  line 8: -0.22
-DEAL::  line 9: 1.4
-DEAL::  line 10: 0.033
-DEAL::  line 11: -0.22
+DEAL::  line 8: -0.21651
+DEAL::  line 9: 1.3995
+DEAL::  line 10: 0.033494
+DEAL::  line 11: -0.21651
 DEAL::not identity constrained: 386
-DEAL::  line 8: 0.22
-DEAL::  line 9: 0.47
-DEAL::  line 10: 0.10
-DEAL::  line 11: 0.22
+DEAL::  line 8: 0.21651
+DEAL::  line 9: 0.46651
+DEAL::  line 10: 0.10048
+DEAL::  line 11: 0.21651
 DEAL::not identity constrained: 387
-DEAL::  line 8: -0.13
-DEAL::  line 9: 0.81
-DEAL::  line 10: -0.058
-DEAL::  line 11: 0.37
+DEAL::  line 8: -0.12500
+DEAL::  line 9: 0.80801
+DEAL::  line 10: -0.058013
+DEAL::  line 11: 0.37500
 DEAL::not identity constrained: 388
-DEAL::  line 84: 0.37
-DEAL::  line 85: -0.058
-DEAL::  line 86: 0.81
-DEAL::  line 87: -0.12
+DEAL::  line 84: 0.37500
+DEAL::  line 85: -0.058013
+DEAL::  line 86: 0.80801
+DEAL::  line 87: -0.12500
 DEAL::not identity constrained: 389
-DEAL::  line 84: 0.22
-DEAL::  line 85: 0.10
-DEAL::  line 86: 0.47
-DEAL::  line 87: 0.22
+DEAL::  line 84: 0.21651
+DEAL::  line 85: 0.10048
+DEAL::  line 86: 0.46651
+DEAL::  line 87: 0.21651
 DEAL::not identity constrained: 390
-DEAL::  line 84: -0.22
-DEAL::  line 85: 0.033
-DEAL::  line 86: 1.4
-DEAL::  line 87: -0.22
+DEAL::  line 84: -0.21651
+DEAL::  line 85: 0.033494
+DEAL::  line 86: 1.3995
+DEAL::  line 87: -0.21651
 DEAL::not identity constrained: 391
-DEAL::  line 84: -0.13
-DEAL::  line 85: -0.058
-DEAL::  line 86: 0.81
-DEAL::  line 87: 0.37
+DEAL::  line 84: -0.12500
+DEAL::  line 85: -0.058013
+DEAL::  line 86: 0.80801
+DEAL::  line 87: 0.37500
 DEAL::not identity constrained: 408
-DEAL::  line 8: 0.10
-DEAL::  line 9: 0.22
-DEAL::  line 10: 0.22
-DEAL::  line 11: 0.47
+DEAL::  line 8: 0.10048
+DEAL::  line 9: 0.21651
+DEAL::  line 10: 0.21651
+DEAL::  line 11: 0.46651
 DEAL::not identity constrained: 409
-DEAL::  line 8: -0.058
-DEAL::  line 9: 0.38
-DEAL::  line 10: -0.12
-DEAL::  line 11: 0.81
+DEAL::  line 8: -0.058013
+DEAL::  line 9: 0.37500
+DEAL::  line 10: -0.12500
+DEAL::  line 11: 0.80801
 DEAL::not identity constrained: 410
-DEAL::  line 8: -0.058
-DEAL::  line 9: -0.12
-DEAL::  line 10: 0.38
-DEAL::  line 11: 0.81
+DEAL::  line 8: -0.058013
+DEAL::  line 9: -0.12500
+DEAL::  line 10: 0.37500
+DEAL::  line 11: 0.80801
 DEAL::not identity constrained: 411
-DEAL::  line 8: 0.033
-DEAL::  line 9: -0.22
-DEAL::  line 10: -0.22
-DEAL::  line 11: 1.4
+DEAL::  line 8: 0.033494
+DEAL::  line 9: -0.21651
+DEAL::  line 10: -0.21651
+DEAL::  line 11: 1.3995
 DEAL::not identity constrained: 412
-DEAL::  line 84: 0.10
-DEAL::  line 85: 0.22
-DEAL::  line 86: 0.22
-DEAL::  line 87: 0.47
+DEAL::  line 84: 0.10048
+DEAL::  line 85: 0.21651
+DEAL::  line 86: 0.21651
+DEAL::  line 87: 0.46651
 DEAL::not identity constrained: 413
-DEAL::  line 84: -0.058
-DEAL::  line 85: 0.38
-DEAL::  line 86: -0.12
-DEAL::  line 87: 0.81
+DEAL::  line 84: -0.058013
+DEAL::  line 85: 0.37500
+DEAL::  line 86: -0.12500
+DEAL::  line 87: 0.80801
 DEAL::not identity constrained: 414
-DEAL::  line 84: -0.058
-DEAL::  line 85: -0.12
-DEAL::  line 86: 0.38
-DEAL::  line 87: 0.81
+DEAL::  line 84: -0.058013
+DEAL::  line 85: -0.12500
+DEAL::  line 86: 0.37500
+DEAL::  line 87: 0.80801
 DEAL::not identity constrained: 415
-DEAL::  line 84: 0.033
-DEAL::  line 85: -0.22
-DEAL::  line 86: -0.22
-DEAL::  line 87: 1.4
+DEAL::  line 84: 0.033494
+DEAL::  line 85: -0.21651
+DEAL::  line 86: -0.21651
+DEAL::  line 87: 1.3995
 DEAL::not identity constrained: 496
-DEAL::  line 40: 1.4
-DEAL::  line 41: -0.22
-DEAL::  line 42: -0.22
-DEAL::  line 43: 0.033
+DEAL::  line 40: 1.3995
+DEAL::  line 41: -0.21651
+DEAL::  line 42: -0.21651
+DEAL::  line 43: 0.033494
 DEAL::not identity constrained: 497
-DEAL::  line 40: 0.81
-DEAL::  line 41: 0.38
-DEAL::  line 42: -0.12
-DEAL::  line 43: -0.058
+DEAL::  line 40: 0.80801
+DEAL::  line 41: 0.37500
+DEAL::  line 42: -0.12500
+DEAL::  line 43: -0.058013
 DEAL::not identity constrained: 498
-DEAL::  line 40: 0.81
-DEAL::  line 41: -0.12
-DEAL::  line 42: 0.38
-DEAL::  line 43: -0.058
+DEAL::  line 40: 0.80801
+DEAL::  line 41: -0.12500
+DEAL::  line 42: 0.37500
+DEAL::  line 43: -0.058013
 DEAL::not identity constrained: 499
-DEAL::  line 40: 0.47
-DEAL::  line 41: 0.22
-DEAL::  line 42: 0.22
-DEAL::  line 43: 0.10
+DEAL::  line 40: 0.46651
+DEAL::  line 41: 0.21651
+DEAL::  line 42: 0.21651
+DEAL::  line 43: 0.10048
 DEAL::not identity constrained: 524
-DEAL::  line 40: 0.37
-DEAL::  line 41: -0.058
-DEAL::  line 42: 0.81
-DEAL::  line 43: -0.12
+DEAL::  line 40: 0.37500
+DEAL::  line 41: -0.058013
+DEAL::  line 42: 0.80801
+DEAL::  line 43: -0.12500
 DEAL::not identity constrained: 525
-DEAL::  line 40: 0.22
-DEAL::  line 41: 0.10
-DEAL::  line 42: 0.47
-DEAL::  line 43: 0.22
+DEAL::  line 40: 0.21651
+DEAL::  line 41: 0.10048
+DEAL::  line 42: 0.46651
+DEAL::  line 43: 0.21651
 DEAL::not identity constrained: 526
-DEAL::  line 40: -0.22
-DEAL::  line 41: 0.033
-DEAL::  line 42: 1.4
-DEAL::  line 43: -0.22
+DEAL::  line 40: -0.21651
+DEAL::  line 41: 0.033494
+DEAL::  line 42: 1.3995
+DEAL::  line 43: -0.21651
 DEAL::not identity constrained: 527
-DEAL::  line 40: -0.13
-DEAL::  line 41: -0.058
-DEAL::  line 42: 0.81
-DEAL::  line 43: 0.37
+DEAL::  line 40: -0.12500
+DEAL::  line 41: -0.058013
+DEAL::  line 42: 0.80801
+DEAL::  line 43: 0.37500
 DEAL::not identity constrained: 560
-DEAL::  line 116: 1.4
-DEAL::  line 117: -0.22
-DEAL::  line 118: -0.22
-DEAL::  line 119: 0.033
+DEAL::  line 116: 1.3995
+DEAL::  line 117: -0.21651
+DEAL::  line 118: -0.21651
+DEAL::  line 119: 0.033494
 DEAL::not identity constrained: 561
-DEAL::  line 116: 0.81
-DEAL::  line 117: 0.38
-DEAL::  line 118: -0.12
-DEAL::  line 119: -0.058
+DEAL::  line 116: 0.80801
+DEAL::  line 117: 0.37500
+DEAL::  line 118: -0.12500
+DEAL::  line 119: -0.058013
 DEAL::not identity constrained: 562
-DEAL::  line 116: 0.81
-DEAL::  line 117: -0.12
-DEAL::  line 118: 0.38
-DEAL::  line 119: -0.058
+DEAL::  line 116: 0.80801
+DEAL::  line 117: -0.12500
+DEAL::  line 118: 0.37500
+DEAL::  line 119: -0.058013
 DEAL::not identity constrained: 563
-DEAL::  line 116: 0.47
-DEAL::  line 117: 0.22
-DEAL::  line 118: 0.22
-DEAL::  line 119: 0.10
+DEAL::  line 116: 0.46651
+DEAL::  line 117: 0.21651
+DEAL::  line 118: 0.21651
+DEAL::  line 119: 0.10048
 DEAL::not identity constrained: 588
-DEAL::  line 116: 0.38
-DEAL::  line 117: 0.81
-DEAL::  line 118: -0.058
-DEAL::  line 119: -0.13
+DEAL::  line 116: 0.37500
+DEAL::  line 117: 0.80801
+DEAL::  line 118: -0.058013
+DEAL::  line 119: -0.12500
 DEAL::not identity constrained: 589
-DEAL::  line 116: -0.22
-DEAL::  line 117: 1.4
-DEAL::  line 118: 0.033
-DEAL::  line 119: -0.22
+DEAL::  line 116: -0.21651
+DEAL::  line 117: 1.3995
+DEAL::  line 118: 0.033494
+DEAL::  line 119: -0.21651
 DEAL::not identity constrained: 590
-DEAL::  line 116: 0.22
-DEAL::  line 117: 0.47
-DEAL::  line 118: 0.10
-DEAL::  line 119: 0.22
+DEAL::  line 116: 0.21651
+DEAL::  line 117: 0.46651
+DEAL::  line 118: 0.10048
+DEAL::  line 119: 0.21651
 DEAL::not identity constrained: 591
-DEAL::  line 116: -0.13
-DEAL::  line 117: 0.81
-DEAL::  line 118: -0.058
-DEAL::  line 119: 0.37
+DEAL::  line 116: -0.12500
+DEAL::  line 117: 0.80801
+DEAL::  line 118: -0.058013
+DEAL::  line 119: 0.37500
 DEAL::not identity constrained: 608
-DEAL::  line 40: 0.38
-DEAL::  line 41: 0.81
-DEAL::  line 42: -0.058
-DEAL::  line 43: -0.13
+DEAL::  line 40: 0.37500
+DEAL::  line 41: 0.80801
+DEAL::  line 42: -0.058013
+DEAL::  line 43: -0.12500
 DEAL::not identity constrained: 609
-DEAL::  line 40: -0.22
-DEAL::  line 41: 1.4
-DEAL::  line 42: 0.033
-DEAL::  line 43: -0.22
+DEAL::  line 40: -0.21651
+DEAL::  line 41: 1.3995
+DEAL::  line 42: 0.033494
+DEAL::  line 43: -0.21651
 DEAL::not identity constrained: 610
-DEAL::  line 40: 0.22
-DEAL::  line 41: 0.47
-DEAL::  line 42: 0.10
-DEAL::  line 43: 0.22
+DEAL::  line 40: 0.21651
+DEAL::  line 41: 0.46651
+DEAL::  line 42: 0.10048
+DEAL::  line 43: 0.21651
 DEAL::not identity constrained: 611
-DEAL::  line 40: -0.13
-DEAL::  line 41: 0.81
-DEAL::  line 42: -0.058
-DEAL::  line 43: 0.37
+DEAL::  line 40: -0.12500
+DEAL::  line 41: 0.80801
+DEAL::  line 42: -0.058013
+DEAL::  line 43: 0.37500
 DEAL::not identity constrained: 612
-DEAL::  line 116: 0.37
-DEAL::  line 117: -0.058
-DEAL::  line 118: 0.81
-DEAL::  line 119: -0.12
+DEAL::  line 116: 0.37500
+DEAL::  line 117: -0.058013
+DEAL::  line 118: 0.80801
+DEAL::  line 119: -0.12500
 DEAL::not identity constrained: 613
-DEAL::  line 116: 0.22
-DEAL::  line 117: 0.10
-DEAL::  line 118: 0.47
-DEAL::  line 119: 0.22
+DEAL::  line 116: 0.21651
+DEAL::  line 117: 0.10048
+DEAL::  line 118: 0.46651
+DEAL::  line 119: 0.21651
 DEAL::not identity constrained: 614
-DEAL::  line 116: -0.22
-DEAL::  line 117: 0.033
-DEAL::  line 118: 1.4
-DEAL::  line 119: -0.22
+DEAL::  line 116: -0.21651
+DEAL::  line 117: 0.033494
+DEAL::  line 118: 1.3995
+DEAL::  line 119: -0.21651
 DEAL::not identity constrained: 615
-DEAL::  line 116: -0.13
-DEAL::  line 117: -0.058
-DEAL::  line 118: 0.81
-DEAL::  line 119: 0.37
+DEAL::  line 116: -0.12500
+DEAL::  line 117: -0.058013
+DEAL::  line 118: 0.80801
+DEAL::  line 119: 0.37500
 DEAL::not identity constrained: 632
-DEAL::  line 40: 0.10
-DEAL::  line 41: 0.22
-DEAL::  line 42: 0.22
-DEAL::  line 43: 0.47
+DEAL::  line 40: 0.10048
+DEAL::  line 41: 0.21651
+DEAL::  line 42: 0.21651
+DEAL::  line 43: 0.46651
 DEAL::not identity constrained: 633
-DEAL::  line 40: -0.058
-DEAL::  line 41: 0.38
-DEAL::  line 42: -0.12
-DEAL::  line 43: 0.81
+DEAL::  line 40: -0.058013
+DEAL::  line 41: 0.37500
+DEAL::  line 42: -0.12500
+DEAL::  line 43: 0.80801
 DEAL::not identity constrained: 634
-DEAL::  line 40: -0.058
-DEAL::  line 41: -0.12
-DEAL::  line 42: 0.38
-DEAL::  line 43: 0.81
+DEAL::  line 40: -0.058013
+DEAL::  line 41: -0.12500
+DEAL::  line 42: 0.37500
+DEAL::  line 43: 0.80801
 DEAL::not identity constrained: 635
-DEAL::  line 40: 0.033
-DEAL::  line 41: -0.22
-DEAL::  line 42: -0.22
-DEAL::  line 43: 1.4
+DEAL::  line 40: 0.033494
+DEAL::  line 41: -0.21651
+DEAL::  line 42: -0.21651
+DEAL::  line 43: 1.3995
 DEAL::not identity constrained: 636
-DEAL::  line 116: 0.10
-DEAL::  line 117: 0.22
-DEAL::  line 118: 0.22
-DEAL::  line 119: 0.47
+DEAL::  line 116: 0.10048
+DEAL::  line 117: 0.21651
+DEAL::  line 118: 0.21651
+DEAL::  line 119: 0.46651
 DEAL::not identity constrained: 637
-DEAL::  line 116: -0.058
-DEAL::  line 117: 0.38
-DEAL::  line 118: -0.12
-DEAL::  line 119: 0.81
+DEAL::  line 116: -0.058013
+DEAL::  line 117: 0.37500
+DEAL::  line 118: -0.12500
+DEAL::  line 119: 0.80801
 DEAL::not identity constrained: 638
-DEAL::  line 116: -0.058
-DEAL::  line 117: -0.12
-DEAL::  line 118: 0.38
-DEAL::  line 119: 0.81
+DEAL::  line 116: -0.058013
+DEAL::  line 117: -0.12500
+DEAL::  line 118: 0.37500
+DEAL::  line 119: 0.80801
 DEAL::not identity constrained: 639
-DEAL::  line 116: 0.033
-DEAL::  line 117: -0.22
-DEAL::  line 118: -0.22
-DEAL::  line 119: 1.4
+DEAL::  line 116: 0.033494
+DEAL::  line 117: -0.21651
+DEAL::  line 118: -0.21651
+DEAL::  line 119: 1.3995
 DEAL::Checking RaviartThomasNodal2 in 3d:
 DEAL::144
 DEAL::9
@@ -2393,1445 +2393,1445 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::144
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 810
-DEAL::  line 18: 1.5
-DEAL::  line 19: -0.38
-DEAL::  line 20: 0.10
-DEAL::  line 21: -0.38
-DEAL::  line 22: 0.097
-DEAL::  line 23: -0.026
-DEAL::  line 24: 0.10
-DEAL::  line 25: -0.026
-DEAL::  line 26: 0.0069
+DEAL::  line 18: 1.5100
+DEAL::  line 19: -0.38360
+DEAL::  line 20: 0.10240
+DEAL::  line 21: -0.38360
+DEAL::  line 22: 0.097446
+DEAL::  line 23: -0.026014
+DEAL::  line 24: 0.10240
+DEAL::  line 25: -0.026014
+DEAL::  line 26: 0.0069444
 DEAL::not identity constrained: 811
-DEAL::  line 18: 0.65
-DEAL::  line 19: 0.72
-DEAL::  line 20: -0.14
-DEAL::  line 21: -0.17
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.036
-DEAL::  line 24: 0.044
-DEAL::  line 25: 0.049
-DEAL::  line 26: -0.0095
+DEAL::  line 18: 0.65261
+DEAL::  line 19: 0.71682
+DEAL::  line 20: -0.14060
+DEAL::  line 21: -0.16578
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.035716
+DEAL::  line 24: 0.044257
+DEAL::  line 25: 0.048611
+DEAL::  line 26: -0.0095346
 DEAL::not identity constrained: 812
-DEAL::  line 18: 0.10
-DEAL::  line 19: 1.2
-DEAL::  line 20: -0.076
-DEAL::  line 21: -0.026
-DEAL::  line 22: -0.31
-DEAL::  line 23: 0.019
-DEAL::  line 24: 0.0069
-DEAL::  line 25: 0.082
-DEAL::  line 26: -0.0052
+DEAL::  line 18: 0.10240
+DEAL::  line 19: 1.2028
+DEAL::  line 20: -0.076389
+DEAL::  line 21: -0.026014
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 0.019405
+DEAL::  line 24: 0.0069444
+DEAL::  line 25: 0.081569
+DEAL::  line 26: -0.0051803
 DEAL::not identity constrained: 813
-DEAL::  line 18: 0.65
-DEAL::  line 19: -0.17
-DEAL::  line 20: 0.044
-DEAL::  line 21: 0.72
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.049
-DEAL::  line 24: -0.14
-DEAL::  line 25: 0.036
-DEAL::  line 26: -0.0095
+DEAL::  line 18: 0.65261
+DEAL::  line 19: -0.16578
+DEAL::  line 20: 0.044257
+DEAL::  line 21: 0.71682
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.048611
+DEAL::  line 24: -0.14060
+DEAL::  line 25: 0.035716
+DEAL::  line 26: -0.0095346
 DEAL::not identity constrained: 814
-DEAL::  line 18: 0.28
-DEAL::  line 19: 0.31
-DEAL::  line 20: -0.061
-DEAL::  line 21: 0.31
-DEAL::  line 22: 0.34
-DEAL::  line 23: -0.067
-DEAL::  line 24: -0.061
-DEAL::  line 25: -0.067
-DEAL::  line 26: 0.013
+DEAL::  line 18: 0.28205
+DEAL::  line 19: 0.30980
+DEAL::  line 20: -0.060764
+DEAL::  line 21: 0.30980
+DEAL::  line 22: 0.34028
+DEAL::  line 23: -0.066742
+DEAL::  line 24: -0.060764
+DEAL::  line 25: -0.066742
+DEAL::  line 26: 0.013091
 DEAL::not identity constrained: 815
-DEAL::  line 18: 0.044
-DEAL::  line 19: 0.52
-DEAL::  line 20: -0.033
-DEAL::  line 21: 0.049
-DEAL::  line 22: 0.57
-DEAL::  line 23: -0.036
-DEAL::  line 24: -0.0095
-DEAL::  line 25: -0.11
-DEAL::  line 26: 0.0071
+DEAL::  line 18: 0.044257
+DEAL::  line 19: 0.51984
+DEAL::  line 20: -0.033014
+DEAL::  line 21: 0.048611
+DEAL::  line 22: 0.57098
+DEAL::  line 23: -0.036262
+DEAL::  line 24: -0.0095346
+DEAL::  line 25: -0.11199
+DEAL::  line 26: 0.0071125
 DEAL::not identity constrained: 816
-DEAL::  line 18: 0.10
-DEAL::  line 19: -0.026
-DEAL::  line 20: 0.0069
-DEAL::  line 21: 1.2
-DEAL::  line 22: -0.31
-DEAL::  line 23: 0.082
-DEAL::  line 24: -0.076
-DEAL::  line 25: 0.019
-DEAL::  line 26: -0.0052
+DEAL::  line 18: 0.10240
+DEAL::  line 19: -0.026014
+DEAL::  line 20: 0.0069444
+DEAL::  line 21: 1.2028
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 0.081569
+DEAL::  line 24: -0.076389
+DEAL::  line 25: 0.019405
+DEAL::  line 26: -0.0051803
 DEAL::not identity constrained: 817
-DEAL::  line 18: 0.044
-DEAL::  line 19: 0.049
-DEAL::  line 20: -0.0095
-DEAL::  line 21: 0.52
-DEAL::  line 22: 0.57
-DEAL::  line 23: -0.11
-DEAL::  line 24: -0.033
-DEAL::  line 25: -0.036
-DEAL::  line 26: 0.0071
+DEAL::  line 18: 0.044257
+DEAL::  line 19: 0.048611
+DEAL::  line 20: -0.0095346
+DEAL::  line 21: 0.51984
+DEAL::  line 22: 0.57098
+DEAL::  line 23: -0.11199
+DEAL::  line 24: -0.033014
+DEAL::  line 25: -0.036262
+DEAL::  line 26: 0.0071125
 DEAL::not identity constrained: 818
-DEAL::  line 18: 0.0069
-DEAL::  line 19: 0.082
-DEAL::  line 20: -0.0052
-DEAL::  line 21: 0.082
-DEAL::  line 22: 0.96
-DEAL::  line 23: -0.061
-DEAL::  line 24: -0.0052
-DEAL::  line 25: -0.061
-DEAL::  line 26: 0.0039
+DEAL::  line 18: 0.0069444
+DEAL::  line 19: 0.081569
+DEAL::  line 20: -0.0051803
+DEAL::  line 21: 0.081569
+DEAL::  line 22: 0.95811
+DEAL::  line 23: -0.060848
+DEAL::  line 24: -0.0051803
+DEAL::  line 25: -0.060848
+DEAL::  line 26: 0.0038643
 DEAL::not identity constrained: 900
-DEAL::  line 18: -0.076
-DEAL::  line 19: 0.019
-DEAL::  line 20: -0.0052
-DEAL::  line 21: 1.2
-DEAL::  line 22: -0.31
-DEAL::  line 23: 0.082
-DEAL::  line 24: 0.10
-DEAL::  line 25: -0.026
-DEAL::  line 26: 0.0069
+DEAL::  line 18: -0.076389
+DEAL::  line 19: 0.019405
+DEAL::  line 20: -0.0051803
+DEAL::  line 21: 1.2028
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 0.081569
+DEAL::  line 24: 0.10240
+DEAL::  line 25: -0.026014
+DEAL::  line 26: 0.0069444
 DEAL::not identity constrained: 901
-DEAL::  line 18: -0.033
-DEAL::  line 19: -0.036
-DEAL::  line 20: 0.0071
-DEAL::  line 21: 0.52
-DEAL::  line 22: 0.57
-DEAL::  line 23: -0.11
-DEAL::  line 24: 0.044
-DEAL::  line 25: 0.049
-DEAL::  line 26: -0.0095
+DEAL::  line 18: -0.033014
+DEAL::  line 19: -0.036262
+DEAL::  line 20: 0.0071125
+DEAL::  line 21: 0.51984
+DEAL::  line 22: 0.57098
+DEAL::  line 23: -0.11199
+DEAL::  line 24: 0.044257
+DEAL::  line 25: 0.048611
+DEAL::  line 26: -0.0095346
 DEAL::not identity constrained: 902
-DEAL::  line 18: -0.0052
-DEAL::  line 19: -0.061
-DEAL::  line 20: 0.0039
-DEAL::  line 21: 0.082
-DEAL::  line 22: 0.96
-DEAL::  line 23: -0.061
-DEAL::  line 24: 0.0069
-DEAL::  line 25: 0.082
-DEAL::  line 26: -0.0052
+DEAL::  line 18: -0.0051803
+DEAL::  line 19: -0.060848
+DEAL::  line 20: 0.0038643
+DEAL::  line 21: 0.081569
+DEAL::  line 22: 0.95811
+DEAL::  line 23: -0.060848
+DEAL::  line 24: 0.0069444
+DEAL::  line 25: 0.081569
+DEAL::  line 26: -0.0051803
 DEAL::not identity constrained: 903
-DEAL::  line 18: -0.14
-DEAL::  line 19: 0.036
-DEAL::  line 20: -0.0095
-DEAL::  line 21: 0.72
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.049
-DEAL::  line 24: 0.65
-DEAL::  line 25: -0.17
-DEAL::  line 26: 0.044
+DEAL::  line 18: -0.14060
+DEAL::  line 19: 0.035716
+DEAL::  line 20: -0.0095346
+DEAL::  line 21: 0.71682
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.048611
+DEAL::  line 24: 0.65261
+DEAL::  line 25: -0.16578
+DEAL::  line 26: 0.044257
 DEAL::not identity constrained: 904
-DEAL::  line 18: -0.061
-DEAL::  line 19: -0.067
-DEAL::  line 20: 0.013
-DEAL::  line 21: 0.31
-DEAL::  line 22: 0.34
-DEAL::  line 23: -0.067
-DEAL::  line 24: 0.28
-DEAL::  line 25: 0.31
-DEAL::  line 26: -0.061
+DEAL::  line 18: -0.060764
+DEAL::  line 19: -0.066742
+DEAL::  line 20: 0.013091
+DEAL::  line 21: 0.30980
+DEAL::  line 22: 0.34028
+DEAL::  line 23: -0.066742
+DEAL::  line 24: 0.28205
+DEAL::  line 25: 0.30980
+DEAL::  line 26: -0.060764
 DEAL::not identity constrained: 905
-DEAL::  line 18: -0.0095
-DEAL::  line 19: -0.11
-DEAL::  line 20: 0.0071
-DEAL::  line 21: 0.049
-DEAL::  line 22: 0.57
-DEAL::  line 23: -0.036
-DEAL::  line 24: 0.044
-DEAL::  line 25: 0.52
-DEAL::  line 26: -0.033
+DEAL::  line 18: -0.0095346
+DEAL::  line 19: -0.11199
+DEAL::  line 20: 0.0071125
+DEAL::  line 21: 0.048611
+DEAL::  line 22: 0.57098
+DEAL::  line 23: -0.036262
+DEAL::  line 24: 0.044257
+DEAL::  line 25: 0.51984
+DEAL::  line 26: -0.033014
 DEAL::not identity constrained: 906
-DEAL::  line 18: 0.10
-DEAL::  line 19: -0.026
-DEAL::  line 20: 0.0069
-DEAL::  line 21: -0.38
-DEAL::  line 22: 0.097
-DEAL::  line 23: -0.026
-DEAL::  line 24: 1.5
-DEAL::  line 25: -0.38
-DEAL::  line 26: 0.10
+DEAL::  line 18: 0.10240
+DEAL::  line 19: -0.026014
+DEAL::  line 20: 0.0069444
+DEAL::  line 21: -0.38360
+DEAL::  line 22: 0.097446
+DEAL::  line 23: -0.026014
+DEAL::  line 24: 1.5100
+DEAL::  line 25: -0.38360
+DEAL::  line 26: 0.10240
 DEAL::not identity constrained: 907
-DEAL::  line 18: 0.044
-DEAL::  line 19: 0.049
-DEAL::  line 20: -0.0095
-DEAL::  line 21: -0.17
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.036
-DEAL::  line 24: 0.65
-DEAL::  line 25: 0.72
-DEAL::  line 26: -0.14
+DEAL::  line 18: 0.044257
+DEAL::  line 19: 0.048611
+DEAL::  line 20: -0.0095346
+DEAL::  line 21: -0.16578
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.035716
+DEAL::  line 24: 0.65261
+DEAL::  line 25: 0.71682
+DEAL::  line 26: -0.14060
 DEAL::not identity constrained: 908
-DEAL::  line 18: 0.0069
-DEAL::  line 19: 0.082
-DEAL::  line 20: -0.0052
-DEAL::  line 21: -0.026
-DEAL::  line 22: -0.31
-DEAL::  line 23: 0.019
-DEAL::  line 24: 0.10
-DEAL::  line 25: 1.2
-DEAL::  line 26: -0.076
+DEAL::  line 18: 0.0069444
+DEAL::  line 19: 0.081569
+DEAL::  line 20: -0.0051803
+DEAL::  line 21: -0.026014
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 0.019405
+DEAL::  line 24: 0.10240
+DEAL::  line 25: 1.2028
+DEAL::  line 26: -0.076389
 DEAL::not identity constrained: 1017
-DEAL::  line 243: 1.5
-DEAL::  line 244: -0.38
-DEAL::  line 245: 0.10
-DEAL::  line 246: -0.38
-DEAL::  line 247: 0.097
-DEAL::  line 248: -0.026
-DEAL::  line 249: 0.10
-DEAL::  line 250: -0.026
-DEAL::  line 251: 0.0069
+DEAL::  line 243: 1.5100
+DEAL::  line 244: -0.38360
+DEAL::  line 245: 0.10240
+DEAL::  line 246: -0.38360
+DEAL::  line 247: 0.097446
+DEAL::  line 248: -0.026014
+DEAL::  line 249: 0.10240
+DEAL::  line 250: -0.026014
+DEAL::  line 251: 0.0069444
 DEAL::not identity constrained: 1018
-DEAL::  line 243: 0.65
-DEAL::  line 244: 0.72
-DEAL::  line 245: -0.14
-DEAL::  line 246: -0.17
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.036
-DEAL::  line 249: 0.044
-DEAL::  line 250: 0.049
-DEAL::  line 251: -0.0095
+DEAL::  line 243: 0.65261
+DEAL::  line 244: 0.71682
+DEAL::  line 245: -0.14060
+DEAL::  line 246: -0.16578
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.035716
+DEAL::  line 249: 0.044257
+DEAL::  line 250: 0.048611
+DEAL::  line 251: -0.0095346
 DEAL::not identity constrained: 1019
-DEAL::  line 243: 0.10
-DEAL::  line 244: 1.2
-DEAL::  line 245: -0.076
-DEAL::  line 246: -0.026
-DEAL::  line 247: -0.31
-DEAL::  line 248: 0.019
-DEAL::  line 249: 0.0069
-DEAL::  line 250: 0.082
-DEAL::  line 251: -0.0052
+DEAL::  line 243: 0.10240
+DEAL::  line 244: 1.2028
+DEAL::  line 245: -0.076389
+DEAL::  line 246: -0.026014
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 0.019405
+DEAL::  line 249: 0.0069444
+DEAL::  line 250: 0.081569
+DEAL::  line 251: -0.0051803
 DEAL::not identity constrained: 1020
-DEAL::  line 243: 0.65
-DEAL::  line 244: -0.17
-DEAL::  line 245: 0.044
-DEAL::  line 246: 0.72
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.049
-DEAL::  line 249: -0.14
-DEAL::  line 250: 0.036
-DEAL::  line 251: -0.0095
+DEAL::  line 243: 0.65261
+DEAL::  line 244: -0.16578
+DEAL::  line 245: 0.044257
+DEAL::  line 246: 0.71682
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.048611
+DEAL::  line 249: -0.14060
+DEAL::  line 250: 0.035716
+DEAL::  line 251: -0.0095346
 DEAL::not identity constrained: 1021
-DEAL::  line 243: 0.28
-DEAL::  line 244: 0.31
-DEAL::  line 245: -0.061
-DEAL::  line 246: 0.31
-DEAL::  line 247: 0.34
-DEAL::  line 248: -0.067
-DEAL::  line 249: -0.061
-DEAL::  line 250: -0.067
-DEAL::  line 251: 0.013
+DEAL::  line 243: 0.28205
+DEAL::  line 244: 0.30980
+DEAL::  line 245: -0.060764
+DEAL::  line 246: 0.30980
+DEAL::  line 247: 0.34028
+DEAL::  line 248: -0.066742
+DEAL::  line 249: -0.060764
+DEAL::  line 250: -0.066742
+DEAL::  line 251: 0.013091
 DEAL::not identity constrained: 1022
-DEAL::  line 243: 0.044
-DEAL::  line 244: 0.52
-DEAL::  line 245: -0.033
-DEAL::  line 246: 0.049
-DEAL::  line 247: 0.57
-DEAL::  line 248: -0.036
-DEAL::  line 249: -0.0095
-DEAL::  line 250: -0.11
-DEAL::  line 251: 0.0071
+DEAL::  line 243: 0.044257
+DEAL::  line 244: 0.51984
+DEAL::  line 245: -0.033014
+DEAL::  line 246: 0.048611
+DEAL::  line 247: 0.57098
+DEAL::  line 248: -0.036262
+DEAL::  line 249: -0.0095346
+DEAL::  line 250: -0.11199
+DEAL::  line 251: 0.0071125
 DEAL::not identity constrained: 1023
-DEAL::  line 243: 0.10
-DEAL::  line 244: -0.026
-DEAL::  line 245: 0.0069
-DEAL::  line 246: 1.2
-DEAL::  line 247: -0.31
-DEAL::  line 248: 0.082
-DEAL::  line 249: -0.076
-DEAL::  line 250: 0.019
-DEAL::  line 251: -0.0052
+DEAL::  line 243: 0.10240
+DEAL::  line 244: -0.026014
+DEAL::  line 245: 0.0069444
+DEAL::  line 246: 1.2028
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 0.081569
+DEAL::  line 249: -0.076389
+DEAL::  line 250: 0.019405
+DEAL::  line 251: -0.0051803
 DEAL::not identity constrained: 1024
-DEAL::  line 243: 0.044
-DEAL::  line 244: 0.049
-DEAL::  line 245: -0.0095
-DEAL::  line 246: 0.52
-DEAL::  line 247: 0.57
-DEAL::  line 248: -0.11
-DEAL::  line 249: -0.033
-DEAL::  line 250: -0.036
-DEAL::  line 251: 0.0071
+DEAL::  line 243: 0.044257
+DEAL::  line 244: 0.048611
+DEAL::  line 245: -0.0095346
+DEAL::  line 246: 0.51984
+DEAL::  line 247: 0.57098
+DEAL::  line 248: -0.11199
+DEAL::  line 249: -0.033014
+DEAL::  line 250: -0.036262
+DEAL::  line 251: 0.0071125
 DEAL::not identity constrained: 1025
-DEAL::  line 243: 0.0069
-DEAL::  line 244: 0.082
-DEAL::  line 245: -0.0052
-DEAL::  line 246: 0.082
-DEAL::  line 247: 0.96
-DEAL::  line 248: -0.061
-DEAL::  line 249: -0.0052
-DEAL::  line 250: -0.061
-DEAL::  line 251: 0.0039
+DEAL::  line 243: 0.0069444
+DEAL::  line 244: 0.081569
+DEAL::  line 245: -0.0051803
+DEAL::  line 246: 0.081569
+DEAL::  line 247: 0.95811
+DEAL::  line 248: -0.060848
+DEAL::  line 249: -0.0051803
+DEAL::  line 250: -0.060848
+DEAL::  line 251: 0.0038643
 DEAL::not identity constrained: 1107
-DEAL::  line 243: -0.076
-DEAL::  line 244: 1.2
-DEAL::  line 245: 0.10
-DEAL::  line 246: 0.019
-DEAL::  line 247: -0.31
-DEAL::  line 248: -0.026
-DEAL::  line 249: -0.0052
-DEAL::  line 250: 0.082
-DEAL::  line 251: 0.0069
+DEAL::  line 243: -0.076389
+DEAL::  line 244: 1.2028
+DEAL::  line 245: 0.10240
+DEAL::  line 246: 0.019405
+DEAL::  line 247: -0.30556
+DEAL::  line 248: -0.026014
+DEAL::  line 249: -0.0051803
+DEAL::  line 250: 0.081569
+DEAL::  line 251: 0.0069444
 DEAL::not identity constrained: 1108
-DEAL::  line 243: -0.14
-DEAL::  line 244: 0.72
-DEAL::  line 245: 0.65
-DEAL::  line 246: 0.036
-DEAL::  line 247: -0.18
-DEAL::  line 248: -0.17
-DEAL::  line 249: -0.0095
-DEAL::  line 250: 0.049
-DEAL::  line 251: 0.044
+DEAL::  line 243: -0.14060
+DEAL::  line 244: 0.71682
+DEAL::  line 245: 0.65261
+DEAL::  line 246: 0.035716
+DEAL::  line 247: -0.18210
+DEAL::  line 248: -0.16578
+DEAL::  line 249: -0.0095346
+DEAL::  line 250: 0.048611
+DEAL::  line 251: 0.044257
 DEAL::not identity constrained: 1109
-DEAL::  line 243: 0.10
-DEAL::  line 244: -0.38
-DEAL::  line 245: 1.5
-DEAL::  line 246: -0.026
-DEAL::  line 247: 0.097
-DEAL::  line 248: -0.38
-DEAL::  line 249: 0.0069
-DEAL::  line 250: -0.026
-DEAL::  line 251: 0.10
+DEAL::  line 243: 0.10240
+DEAL::  line 244: -0.38360
+DEAL::  line 245: 1.5100
+DEAL::  line 246: -0.026014
+DEAL::  line 247: 0.097446
+DEAL::  line 248: -0.38360
+DEAL::  line 249: 0.0069444
+DEAL::  line 250: -0.026014
+DEAL::  line 251: 0.10240
 DEAL::not identity constrained: 1110
-DEAL::  line 243: -0.033
-DEAL::  line 244: 0.52
-DEAL::  line 245: 0.044
-DEAL::  line 246: -0.036
-DEAL::  line 247: 0.57
-DEAL::  line 248: 0.049
-DEAL::  line 249: 0.0071
-DEAL::  line 250: -0.11
-DEAL::  line 251: -0.0095
+DEAL::  line 243: -0.033014
+DEAL::  line 244: 0.51984
+DEAL::  line 245: 0.044257
+DEAL::  line 246: -0.036262
+DEAL::  line 247: 0.57098
+DEAL::  line 248: 0.048611
+DEAL::  line 249: 0.0071125
+DEAL::  line 250: -0.11199
+DEAL::  line 251: -0.0095346
 DEAL::not identity constrained: 1111
-DEAL::  line 243: -0.061
-DEAL::  line 244: 0.31
-DEAL::  line 245: 0.28
-DEAL::  line 246: -0.067
-DEAL::  line 247: 0.34
-DEAL::  line 248: 0.31
-DEAL::  line 249: 0.013
-DEAL::  line 250: -0.067
-DEAL::  line 251: -0.061
+DEAL::  line 243: -0.060764
+DEAL::  line 244: 0.30980
+DEAL::  line 245: 0.28205
+DEAL::  line 246: -0.066742
+DEAL::  line 247: 0.34028
+DEAL::  line 248: 0.30980
+DEAL::  line 249: 0.013091
+DEAL::  line 250: -0.066742
+DEAL::  line 251: -0.060764
 DEAL::not identity constrained: 1112
-DEAL::  line 243: 0.044
-DEAL::  line 244: -0.17
-DEAL::  line 245: 0.65
-DEAL::  line 246: 0.049
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.72
-DEAL::  line 249: -0.0095
-DEAL::  line 250: 0.036
-DEAL::  line 251: -0.14
+DEAL::  line 243: 0.044257
+DEAL::  line 244: -0.16578
+DEAL::  line 245: 0.65261
+DEAL::  line 246: 0.048611
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.71682
+DEAL::  line 249: -0.0095346
+DEAL::  line 250: 0.035716
+DEAL::  line 251: -0.14060
 DEAL::not identity constrained: 1113
-DEAL::  line 243: -0.0052
-DEAL::  line 244: 0.082
-DEAL::  line 245: 0.0069
-DEAL::  line 246: -0.061
-DEAL::  line 247: 0.96
-DEAL::  line 248: 0.082
-DEAL::  line 249: 0.0039
-DEAL::  line 250: -0.061
-DEAL::  line 251: -0.0052
+DEAL::  line 243: -0.0051803
+DEAL::  line 244: 0.081569
+DEAL::  line 245: 0.0069444
+DEAL::  line 246: -0.060848
+DEAL::  line 247: 0.95811
+DEAL::  line 248: 0.081569
+DEAL::  line 249: 0.0038643
+DEAL::  line 250: -0.060848
+DEAL::  line 251: -0.0051803
 DEAL::not identity constrained: 1114
-DEAL::  line 243: -0.0095
-DEAL::  line 244: 0.049
-DEAL::  line 245: 0.044
-DEAL::  line 246: -0.11
-DEAL::  line 247: 0.57
-DEAL::  line 248: 0.52
-DEAL::  line 249: 0.0071
-DEAL::  line 250: -0.036
-DEAL::  line 251: -0.033
+DEAL::  line 243: -0.0095346
+DEAL::  line 244: 0.048611
+DEAL::  line 245: 0.044257
+DEAL::  line 246: -0.11199
+DEAL::  line 247: 0.57098
+DEAL::  line 248: 0.51984
+DEAL::  line 249: 0.0071125
+DEAL::  line 250: -0.036262
+DEAL::  line 251: -0.033014
 DEAL::not identity constrained: 1115
-DEAL::  line 243: 0.0069
-DEAL::  line 244: -0.026
-DEAL::  line 245: 0.10
-DEAL::  line 246: 0.082
-DEAL::  line 247: -0.31
-DEAL::  line 248: 1.2
-DEAL::  line 249: -0.0052
-DEAL::  line 250: 0.019
-DEAL::  line 251: -0.076
+DEAL::  line 243: 0.0069444
+DEAL::  line 244: -0.026014
+DEAL::  line 245: 0.10240
+DEAL::  line 246: 0.081569
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 1.2028
+DEAL::  line 249: -0.0051803
+DEAL::  line 250: 0.019405
+DEAL::  line 251: -0.076389
 DEAL::not identity constrained: 1188
-DEAL::  line 18: -0.076
-DEAL::  line 19: 1.2
-DEAL::  line 20: 0.10
-DEAL::  line 21: 0.019
-DEAL::  line 22: -0.31
-DEAL::  line 23: -0.026
-DEAL::  line 24: -0.0052
-DEAL::  line 25: 0.082
-DEAL::  line 26: 0.0069
+DEAL::  line 18: -0.076389
+DEAL::  line 19: 1.2028
+DEAL::  line 20: 0.10240
+DEAL::  line 21: 0.019405
+DEAL::  line 22: -0.30556
+DEAL::  line 23: -0.026014
+DEAL::  line 24: -0.0051803
+DEAL::  line 25: 0.081569
+DEAL::  line 26: 0.0069444
 DEAL::not identity constrained: 1189
-DEAL::  line 18: -0.14
-DEAL::  line 19: 0.72
-DEAL::  line 20: 0.65
-DEAL::  line 21: 0.036
-DEAL::  line 22: -0.18
-DEAL::  line 23: -0.17
-DEAL::  line 24: -0.0095
-DEAL::  line 25: 0.049
-DEAL::  line 26: 0.044
+DEAL::  line 18: -0.14060
+DEAL::  line 19: 0.71682
+DEAL::  line 20: 0.65261
+DEAL::  line 21: 0.035716
+DEAL::  line 22: -0.18210
+DEAL::  line 23: -0.16578
+DEAL::  line 24: -0.0095346
+DEAL::  line 25: 0.048611
+DEAL::  line 26: 0.044257
 DEAL::not identity constrained: 1190
-DEAL::  line 18: 0.10
-DEAL::  line 19: -0.38
-DEAL::  line 20: 1.5
-DEAL::  line 21: -0.026
-DEAL::  line 22: 0.097
-DEAL::  line 23: -0.38
-DEAL::  line 24: 0.0069
-DEAL::  line 25: -0.026
-DEAL::  line 26: 0.10
+DEAL::  line 18: 0.10240
+DEAL::  line 19: -0.38360
+DEAL::  line 20: 1.5100
+DEAL::  line 21: -0.026014
+DEAL::  line 22: 0.097446
+DEAL::  line 23: -0.38360
+DEAL::  line 24: 0.0069444
+DEAL::  line 25: -0.026014
+DEAL::  line 26: 0.10240
 DEAL::not identity constrained: 1191
-DEAL::  line 18: -0.033
-DEAL::  line 19: 0.52
-DEAL::  line 20: 0.044
-DEAL::  line 21: -0.036
-DEAL::  line 22: 0.57
-DEAL::  line 23: 0.049
-DEAL::  line 24: 0.0071
-DEAL::  line 25: -0.11
-DEAL::  line 26: -0.0095
+DEAL::  line 18: -0.033014
+DEAL::  line 19: 0.51984
+DEAL::  line 20: 0.044257
+DEAL::  line 21: -0.036262
+DEAL::  line 22: 0.57098
+DEAL::  line 23: 0.048611
+DEAL::  line 24: 0.0071125
+DEAL::  line 25: -0.11199
+DEAL::  line 26: -0.0095346
 DEAL::not identity constrained: 1192
-DEAL::  line 18: -0.061
-DEAL::  line 19: 0.31
-DEAL::  line 20: 0.28
-DEAL::  line 21: -0.067
-DEAL::  line 22: 0.34
-DEAL::  line 23: 0.31
-DEAL::  line 24: 0.013
-DEAL::  line 25: -0.067
-DEAL::  line 26: -0.061
+DEAL::  line 18: -0.060764
+DEAL::  line 19: 0.30980
+DEAL::  line 20: 0.28205
+DEAL::  line 21: -0.066742
+DEAL::  line 22: 0.34028
+DEAL::  line 23: 0.30980
+DEAL::  line 24: 0.013091
+DEAL::  line 25: -0.066742
+DEAL::  line 26: -0.060764
 DEAL::not identity constrained: 1193
-DEAL::  line 18: 0.044
-DEAL::  line 19: -0.17
-DEAL::  line 20: 0.65
-DEAL::  line 21: 0.049
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.72
-DEAL::  line 24: -0.0095
-DEAL::  line 25: 0.036
-DEAL::  line 26: -0.14
+DEAL::  line 18: 0.044257
+DEAL::  line 19: -0.16578
+DEAL::  line 20: 0.65261
+DEAL::  line 21: 0.048611
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.71682
+DEAL::  line 24: -0.0095346
+DEAL::  line 25: 0.035716
+DEAL::  line 26: -0.14060
 DEAL::not identity constrained: 1194
-DEAL::  line 18: -0.0052
-DEAL::  line 19: 0.082
-DEAL::  line 20: 0.0069
-DEAL::  line 21: -0.061
-DEAL::  line 22: 0.96
-DEAL::  line 23: 0.082
-DEAL::  line 24: 0.0039
-DEAL::  line 25: -0.061
-DEAL::  line 26: -0.0052
+DEAL::  line 18: -0.0051803
+DEAL::  line 19: 0.081569
+DEAL::  line 20: 0.0069444
+DEAL::  line 21: -0.060848
+DEAL::  line 22: 0.95811
+DEAL::  line 23: 0.081569
+DEAL::  line 24: 0.0038643
+DEAL::  line 25: -0.060848
+DEAL::  line 26: -0.0051803
 DEAL::not identity constrained: 1195
-DEAL::  line 18: -0.0095
-DEAL::  line 19: 0.049
-DEAL::  line 20: 0.044
-DEAL::  line 21: -0.11
-DEAL::  line 22: 0.57
-DEAL::  line 23: 0.52
-DEAL::  line 24: 0.0071
-DEAL::  line 25: -0.036
-DEAL::  line 26: -0.033
+DEAL::  line 18: -0.0095346
+DEAL::  line 19: 0.048611
+DEAL::  line 20: 0.044257
+DEAL::  line 21: -0.11199
+DEAL::  line 22: 0.57098
+DEAL::  line 23: 0.51984
+DEAL::  line 24: 0.0071125
+DEAL::  line 25: -0.036262
+DEAL::  line 26: -0.033014
 DEAL::not identity constrained: 1196
-DEAL::  line 18: 0.0069
-DEAL::  line 19: -0.026
-DEAL::  line 20: 0.10
-DEAL::  line 21: 0.082
-DEAL::  line 22: -0.31
-DEAL::  line 23: 1.2
-DEAL::  line 24: -0.0052
-DEAL::  line 25: 0.019
-DEAL::  line 26: -0.076
+DEAL::  line 18: 0.0069444
+DEAL::  line 19: -0.026014
+DEAL::  line 20: 0.10240
+DEAL::  line 21: 0.081569
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 1.2028
+DEAL::  line 24: -0.0051803
+DEAL::  line 25: 0.019405
+DEAL::  line 26: -0.076389
 DEAL::not identity constrained: 1197
-DEAL::  line 243: -0.076
-DEAL::  line 244: 0.019
-DEAL::  line 245: -0.0052
-DEAL::  line 246: 1.2
-DEAL::  line 247: -0.31
-DEAL::  line 248: 0.082
-DEAL::  line 249: 0.10
-DEAL::  line 250: -0.026
-DEAL::  line 251: 0.0069
+DEAL::  line 243: -0.076389
+DEAL::  line 244: 0.019405
+DEAL::  line 245: -0.0051803
+DEAL::  line 246: 1.2028
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 0.081569
+DEAL::  line 249: 0.10240
+DEAL::  line 250: -0.026014
+DEAL::  line 251: 0.0069444
 DEAL::not identity constrained: 1198
-DEAL::  line 243: -0.033
-DEAL::  line 244: -0.036
-DEAL::  line 245: 0.0071
-DEAL::  line 246: 0.52
-DEAL::  line 247: 0.57
-DEAL::  line 248: -0.11
-DEAL::  line 249: 0.044
-DEAL::  line 250: 0.049
-DEAL::  line 251: -0.0095
+DEAL::  line 243: -0.033014
+DEAL::  line 244: -0.036262
+DEAL::  line 245: 0.0071125
+DEAL::  line 246: 0.51984
+DEAL::  line 247: 0.57098
+DEAL::  line 248: -0.11199
+DEAL::  line 249: 0.044257
+DEAL::  line 250: 0.048611
+DEAL::  line 251: -0.0095346
 DEAL::not identity constrained: 1199
-DEAL::  line 243: -0.0052
-DEAL::  line 244: -0.061
-DEAL::  line 245: 0.0039
-DEAL::  line 246: 0.082
-DEAL::  line 247: 0.96
-DEAL::  line 248: -0.061
-DEAL::  line 249: 0.0069
-DEAL::  line 250: 0.082
-DEAL::  line 251: -0.0052
+DEAL::  line 243: -0.0051803
+DEAL::  line 244: -0.060848
+DEAL::  line 245: 0.0038643
+DEAL::  line 246: 0.081569
+DEAL::  line 247: 0.95811
+DEAL::  line 248: -0.060848
+DEAL::  line 249: 0.0069444
+DEAL::  line 250: 0.081569
+DEAL::  line 251: -0.0051803
 DEAL::not identity constrained: 1200
-DEAL::  line 243: -0.14
-DEAL::  line 244: 0.036
-DEAL::  line 245: -0.0095
-DEAL::  line 246: 0.72
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.049
-DEAL::  line 249: 0.65
-DEAL::  line 250: -0.17
-DEAL::  line 251: 0.044
+DEAL::  line 243: -0.14060
+DEAL::  line 244: 0.035716
+DEAL::  line 245: -0.0095346
+DEAL::  line 246: 0.71682
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.048611
+DEAL::  line 249: 0.65261
+DEAL::  line 250: -0.16578
+DEAL::  line 251: 0.044257
 DEAL::not identity constrained: 1201
-DEAL::  line 243: -0.061
-DEAL::  line 244: -0.067
-DEAL::  line 245: 0.013
-DEAL::  line 246: 0.31
-DEAL::  line 247: 0.34
-DEAL::  line 248: -0.067
-DEAL::  line 249: 0.28
-DEAL::  line 250: 0.31
-DEAL::  line 251: -0.061
+DEAL::  line 243: -0.060764
+DEAL::  line 244: -0.066742
+DEAL::  line 245: 0.013091
+DEAL::  line 246: 0.30980
+DEAL::  line 247: 0.34028
+DEAL::  line 248: -0.066742
+DEAL::  line 249: 0.28205
+DEAL::  line 250: 0.30980
+DEAL::  line 251: -0.060764
 DEAL::not identity constrained: 1202
-DEAL::  line 243: -0.0095
-DEAL::  line 244: -0.11
-DEAL::  line 245: 0.0071
-DEAL::  line 246: 0.049
-DEAL::  line 247: 0.57
-DEAL::  line 248: -0.036
-DEAL::  line 249: 0.044
-DEAL::  line 250: 0.52
-DEAL::  line 251: -0.033
+DEAL::  line 243: -0.0095346
+DEAL::  line 244: -0.11199
+DEAL::  line 245: 0.0071125
+DEAL::  line 246: 0.048611
+DEAL::  line 247: 0.57098
+DEAL::  line 248: -0.036262
+DEAL::  line 249: 0.044257
+DEAL::  line 250: 0.51984
+DEAL::  line 251: -0.033014
 DEAL::not identity constrained: 1203
-DEAL::  line 243: 0.10
-DEAL::  line 244: -0.026
-DEAL::  line 245: 0.0069
-DEAL::  line 246: -0.38
-DEAL::  line 247: 0.097
-DEAL::  line 248: -0.026
-DEAL::  line 249: 1.5
-DEAL::  line 250: -0.38
-DEAL::  line 251: 0.10
+DEAL::  line 243: 0.10240
+DEAL::  line 244: -0.026014
+DEAL::  line 245: 0.0069444
+DEAL::  line 246: -0.38360
+DEAL::  line 247: 0.097446
+DEAL::  line 248: -0.026014
+DEAL::  line 249: 1.5100
+DEAL::  line 250: -0.38360
+DEAL::  line 251: 0.10240
 DEAL::not identity constrained: 1204
-DEAL::  line 243: 0.044
-DEAL::  line 244: 0.049
-DEAL::  line 245: -0.0095
-DEAL::  line 246: -0.17
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.036
-DEAL::  line 249: 0.65
-DEAL::  line 250: 0.72
-DEAL::  line 251: -0.14
+DEAL::  line 243: 0.044257
+DEAL::  line 244: 0.048611
+DEAL::  line 245: -0.0095346
+DEAL::  line 246: -0.16578
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.035716
+DEAL::  line 249: 0.65261
+DEAL::  line 250: 0.71682
+DEAL::  line 251: -0.14060
 DEAL::not identity constrained: 1205
-DEAL::  line 243: 0.0069
-DEAL::  line 244: 0.082
-DEAL::  line 245: -0.0052
-DEAL::  line 246: -0.026
-DEAL::  line 247: -0.31
-DEAL::  line 248: 0.019
-DEAL::  line 249: 0.10
-DEAL::  line 250: 1.2
-DEAL::  line 251: -0.076
+DEAL::  line 243: 0.0069444
+DEAL::  line 244: 0.081569
+DEAL::  line 245: -0.0051803
+DEAL::  line 246: -0.026014
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 0.019405
+DEAL::  line 249: 0.10240
+DEAL::  line 250: 1.2028
+DEAL::  line 251: -0.076389
 DEAL::not identity constrained: 1269
-DEAL::  line 18: 0.0039
-DEAL::  line 19: -0.061
-DEAL::  line 20: -0.0052
-DEAL::  line 21: -0.061
-DEAL::  line 22: 0.96
-DEAL::  line 23: 0.082
-DEAL::  line 24: -0.0052
-DEAL::  line 25: 0.082
-DEAL::  line 26: 0.0069
+DEAL::  line 18: 0.0038643
+DEAL::  line 19: -0.060848
+DEAL::  line 20: -0.0051803
+DEAL::  line 21: -0.060848
+DEAL::  line 22: 0.95811
+DEAL::  line 23: 0.081569
+DEAL::  line 24: -0.0051803
+DEAL::  line 25: 0.081569
+DEAL::  line 26: 0.0069444
 DEAL::not identity constrained: 1270
-DEAL::  line 18: 0.0071
-DEAL::  line 19: -0.036
-DEAL::  line 20: -0.033
-DEAL::  line 21: -0.11
-DEAL::  line 22: 0.57
-DEAL::  line 23: 0.52
-DEAL::  line 24: -0.0095
-DEAL::  line 25: 0.049
-DEAL::  line 26: 0.044
+DEAL::  line 18: 0.0071125
+DEAL::  line 19: -0.036262
+DEAL::  line 20: -0.033014
+DEAL::  line 21: -0.11199
+DEAL::  line 22: 0.57098
+DEAL::  line 23: 0.51984
+DEAL::  line 24: -0.0095346
+DEAL::  line 25: 0.048611
+DEAL::  line 26: 0.044257
 DEAL::not identity constrained: 1271
-DEAL::  line 18: -0.0052
-DEAL::  line 19: 0.019
-DEAL::  line 20: -0.076
-DEAL::  line 21: 0.082
-DEAL::  line 22: -0.31
-DEAL::  line 23: 1.2
-DEAL::  line 24: 0.0069
-DEAL::  line 25: -0.026
-DEAL::  line 26: 0.10
+DEAL::  line 18: -0.0051803
+DEAL::  line 19: 0.019405
+DEAL::  line 20: -0.076389
+DEAL::  line 21: 0.081569
+DEAL::  line 22: -0.30556
+DEAL::  line 23: 1.2028
+DEAL::  line 24: 0.0069444
+DEAL::  line 25: -0.026014
+DEAL::  line 26: 0.10240
 DEAL::not identity constrained: 1272
-DEAL::  line 18: 0.0071
-DEAL::  line 19: -0.11
-DEAL::  line 20: -0.0095
-DEAL::  line 21: -0.036
-DEAL::  line 22: 0.57
-DEAL::  line 23: 0.049
-DEAL::  line 24: -0.033
-DEAL::  line 25: 0.52
-DEAL::  line 26: 0.044
+DEAL::  line 18: 0.0071125
+DEAL::  line 19: -0.11199
+DEAL::  line 20: -0.0095346
+DEAL::  line 21: -0.036262
+DEAL::  line 22: 0.57098
+DEAL::  line 23: 0.048611
+DEAL::  line 24: -0.033014
+DEAL::  line 25: 0.51984
+DEAL::  line 26: 0.044257
 DEAL::not identity constrained: 1273
-DEAL::  line 18: 0.013
-DEAL::  line 19: -0.067
-DEAL::  line 20: -0.061
-DEAL::  line 21: -0.067
-DEAL::  line 22: 0.34
-DEAL::  line 23: 0.31
-DEAL::  line 24: -0.061
-DEAL::  line 25: 0.31
-DEAL::  line 26: 0.28
+DEAL::  line 18: 0.013091
+DEAL::  line 19: -0.066742
+DEAL::  line 20: -0.060764
+DEAL::  line 21: -0.066742
+DEAL::  line 22: 0.34028
+DEAL::  line 23: 0.30980
+DEAL::  line 24: -0.060764
+DEAL::  line 25: 0.30980
+DEAL::  line 26: 0.28205
 DEAL::not identity constrained: 1274
-DEAL::  line 18: -0.0095
-DEAL::  line 19: 0.036
-DEAL::  line 20: -0.14
-DEAL::  line 21: 0.049
-DEAL::  line 22: -0.18
-DEAL::  line 23: 0.72
-DEAL::  line 24: 0.044
-DEAL::  line 25: -0.17
-DEAL::  line 26: 0.65
+DEAL::  line 18: -0.0095346
+DEAL::  line 19: 0.035716
+DEAL::  line 20: -0.14060
+DEAL::  line 21: 0.048611
+DEAL::  line 22: -0.18210
+DEAL::  line 23: 0.71682
+DEAL::  line 24: 0.044257
+DEAL::  line 25: -0.16578
+DEAL::  line 26: 0.65261
 DEAL::not identity constrained: 1275
-DEAL::  line 18: -0.0052
-DEAL::  line 19: 0.082
-DEAL::  line 20: 0.0069
-DEAL::  line 21: 0.019
-DEAL::  line 22: -0.31
-DEAL::  line 23: -0.026
-DEAL::  line 24: -0.076
-DEAL::  line 25: 1.2
-DEAL::  line 26: 0.10
+DEAL::  line 18: -0.0051803
+DEAL::  line 19: 0.081569
+DEAL::  line 20: 0.0069444
+DEAL::  line 21: 0.019405
+DEAL::  line 22: -0.30556
+DEAL::  line 23: -0.026014
+DEAL::  line 24: -0.076389
+DEAL::  line 25: 1.2028
+DEAL::  line 26: 0.10240
 DEAL::not identity constrained: 1276
-DEAL::  line 18: -0.0095
-DEAL::  line 19: 0.049
-DEAL::  line 20: 0.044
-DEAL::  line 21: 0.036
-DEAL::  line 22: -0.18
-DEAL::  line 23: -0.17
-DEAL::  line 24: -0.14
-DEAL::  line 25: 0.72
-DEAL::  line 26: 0.65
+DEAL::  line 18: -0.0095346
+DEAL::  line 19: 0.048611
+DEAL::  line 20: 0.044257
+DEAL::  line 21: 0.035716
+DEAL::  line 22: -0.18210
+DEAL::  line 23: -0.16578
+DEAL::  line 24: -0.14060
+DEAL::  line 25: 0.71682
+DEAL::  line 26: 0.65261
 DEAL::not identity constrained: 1277
-DEAL::  line 18: 0.0069
-DEAL::  line 19: -0.026
-DEAL::  line 20: 0.10
-DEAL::  line 21: -0.026
-DEAL::  line 22: 0.097
-DEAL::  line 23: -0.38
-DEAL::  line 24: 0.10
-DEAL::  line 25: -0.38
-DEAL::  line 26: 1.5
+DEAL::  line 18: 0.0069444
+DEAL::  line 19: -0.026014
+DEAL::  line 20: 0.10240
+DEAL::  line 21: -0.026014
+DEAL::  line 22: 0.097446
+DEAL::  line 23: -0.38360
+DEAL::  line 24: 0.10240
+DEAL::  line 25: -0.38360
+DEAL::  line 26: 1.5100
 DEAL::not identity constrained: 1278
-DEAL::  line 243: 0.0039
-DEAL::  line 244: -0.061
-DEAL::  line 245: -0.0052
-DEAL::  line 246: -0.061
-DEAL::  line 247: 0.96
-DEAL::  line 248: 0.082
-DEAL::  line 249: -0.0052
-DEAL::  line 250: 0.082
-DEAL::  line 251: 0.0069
+DEAL::  line 243: 0.0038643
+DEAL::  line 244: -0.060848
+DEAL::  line 245: -0.0051803
+DEAL::  line 246: -0.060848
+DEAL::  line 247: 0.95811
+DEAL::  line 248: 0.081569
+DEAL::  line 249: -0.0051803
+DEAL::  line 250: 0.081569
+DEAL::  line 251: 0.0069444
 DEAL::not identity constrained: 1279
-DEAL::  line 243: 0.0071
-DEAL::  line 244: -0.036
-DEAL::  line 245: -0.033
-DEAL::  line 246: -0.11
-DEAL::  line 247: 0.57
-DEAL::  line 248: 0.52
-DEAL::  line 249: -0.0095
-DEAL::  line 250: 0.049
-DEAL::  line 251: 0.044
+DEAL::  line 243: 0.0071125
+DEAL::  line 244: -0.036262
+DEAL::  line 245: -0.033014
+DEAL::  line 246: -0.11199
+DEAL::  line 247: 0.57098
+DEAL::  line 248: 0.51984
+DEAL::  line 249: -0.0095346
+DEAL::  line 250: 0.048611
+DEAL::  line 251: 0.044257
 DEAL::not identity constrained: 1280
-DEAL::  line 243: -0.0052
-DEAL::  line 244: 0.019
-DEAL::  line 245: -0.076
-DEAL::  line 246: 0.082
-DEAL::  line 247: -0.31
-DEAL::  line 248: 1.2
-DEAL::  line 249: 0.0069
-DEAL::  line 250: -0.026
-DEAL::  line 251: 0.10
+DEAL::  line 243: -0.0051803
+DEAL::  line 244: 0.019405
+DEAL::  line 245: -0.076389
+DEAL::  line 246: 0.081569
+DEAL::  line 247: -0.30556
+DEAL::  line 248: 1.2028
+DEAL::  line 249: 0.0069444
+DEAL::  line 250: -0.026014
+DEAL::  line 251: 0.10240
 DEAL::not identity constrained: 1281
-DEAL::  line 243: 0.0071
-DEAL::  line 244: -0.11
-DEAL::  line 245: -0.0095
-DEAL::  line 246: -0.036
-DEAL::  line 247: 0.57
-DEAL::  line 248: 0.049
-DEAL::  line 249: -0.033
-DEAL::  line 250: 0.52
-DEAL::  line 251: 0.044
+DEAL::  line 243: 0.0071125
+DEAL::  line 244: -0.11199
+DEAL::  line 245: -0.0095346
+DEAL::  line 246: -0.036262
+DEAL::  line 247: 0.57098
+DEAL::  line 248: 0.048611
+DEAL::  line 249: -0.033014
+DEAL::  line 250: 0.51984
+DEAL::  line 251: 0.044257
 DEAL::not identity constrained: 1282
-DEAL::  line 243: 0.013
-DEAL::  line 244: -0.067
-DEAL::  line 245: -0.061
-DEAL::  line 246: -0.067
-DEAL::  line 247: 0.34
-DEAL::  line 248: 0.31
-DEAL::  line 249: -0.061
-DEAL::  line 250: 0.31
-DEAL::  line 251: 0.28
+DEAL::  line 243: 0.013091
+DEAL::  line 244: -0.066742
+DEAL::  line 245: -0.060764
+DEAL::  line 246: -0.066742
+DEAL::  line 247: 0.34028
+DEAL::  line 248: 0.30980
+DEAL::  line 249: -0.060764
+DEAL::  line 250: 0.30980
+DEAL::  line 251: 0.28205
 DEAL::not identity constrained: 1283
-DEAL::  line 243: -0.0095
-DEAL::  line 244: 0.036
-DEAL::  line 245: -0.14
-DEAL::  line 246: 0.049
-DEAL::  line 247: -0.18
-DEAL::  line 248: 0.72
-DEAL::  line 249: 0.044
-DEAL::  line 250: -0.17
-DEAL::  line 251: 0.65
+DEAL::  line 243: -0.0095346
+DEAL::  line 244: 0.035716
+DEAL::  line 245: -0.14060
+DEAL::  line 246: 0.048611
+DEAL::  line 247: -0.18210
+DEAL::  line 248: 0.71682
+DEAL::  line 249: 0.044257
+DEAL::  line 250: -0.16578
+DEAL::  line 251: 0.65261
 DEAL::not identity constrained: 1284
-DEAL::  line 243: -0.0052
-DEAL::  line 244: 0.082
-DEAL::  line 245: 0.0069
-DEAL::  line 246: 0.019
-DEAL::  line 247: -0.31
-DEAL::  line 248: -0.026
-DEAL::  line 249: -0.076
-DEAL::  line 250: 1.2
-DEAL::  line 251: 0.10
+DEAL::  line 243: -0.0051803
+DEAL::  line 244: 0.081569
+DEAL::  line 245: 0.0069444
+DEAL::  line 246: 0.019405
+DEAL::  line 247: -0.30556
+DEAL::  line 248: -0.026014
+DEAL::  line 249: -0.076389
+DEAL::  line 250: 1.2028
+DEAL::  line 251: 0.10240
 DEAL::not identity constrained: 1285
-DEAL::  line 243: -0.0095
-DEAL::  line 244: 0.049
-DEAL::  line 245: 0.044
-DEAL::  line 246: 0.036
-DEAL::  line 247: -0.18
-DEAL::  line 248: -0.17
-DEAL::  line 249: -0.14
-DEAL::  line 250: 0.72
-DEAL::  line 251: 0.65
+DEAL::  line 243: -0.0095346
+DEAL::  line 244: 0.048611
+DEAL::  line 245: 0.044257
+DEAL::  line 246: 0.035716
+DEAL::  line 247: -0.18210
+DEAL::  line 248: -0.16578
+DEAL::  line 249: -0.14060
+DEAL::  line 250: 0.71682
+DEAL::  line 251: 0.65261
 DEAL::not identity constrained: 1286
-DEAL::  line 243: 0.0069
-DEAL::  line 244: -0.026
-DEAL::  line 245: 0.10
-DEAL::  line 246: -0.026
-DEAL::  line 247: 0.097
-DEAL::  line 248: -0.38
-DEAL::  line 249: 0.10
-DEAL::  line 250: -0.38
-DEAL::  line 251: 1.5
+DEAL::  line 243: 0.0069444
+DEAL::  line 244: -0.026014
+DEAL::  line 245: 0.10240
+DEAL::  line 246: -0.026014
+DEAL::  line 247: 0.097446
+DEAL::  line 248: -0.38360
+DEAL::  line 249: 0.10240
+DEAL::  line 250: -0.38360
+DEAL::  line 251: 1.5100
 DEAL::not identity constrained: 1548
-DEAL::  line 117: 1.5
-DEAL::  line 118: -0.38
-DEAL::  line 119: 0.10
-DEAL::  line 120: -0.38
-DEAL::  line 121: 0.097
-DEAL::  line 122: -0.026
-DEAL::  line 123: 0.10
-DEAL::  line 124: -0.026
-DEAL::  line 125: 0.0069
+DEAL::  line 117: 1.5100
+DEAL::  line 118: -0.38360
+DEAL::  line 119: 0.10240
+DEAL::  line 120: -0.38360
+DEAL::  line 121: 0.097446
+DEAL::  line 122: -0.026014
+DEAL::  line 123: 0.10240
+DEAL::  line 124: -0.026014
+DEAL::  line 125: 0.0069444
 DEAL::not identity constrained: 1549
-DEAL::  line 117: 0.65
-DEAL::  line 118: 0.72
-DEAL::  line 119: -0.14
-DEAL::  line 120: -0.17
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.036
-DEAL::  line 123: 0.044
-DEAL::  line 124: 0.049
-DEAL::  line 125: -0.0095
+DEAL::  line 117: 0.65261
+DEAL::  line 118: 0.71682
+DEAL::  line 119: -0.14060
+DEAL::  line 120: -0.16578
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.035716
+DEAL::  line 123: 0.044257
+DEAL::  line 124: 0.048611
+DEAL::  line 125: -0.0095346
 DEAL::not identity constrained: 1550
-DEAL::  line 117: 0.10
-DEAL::  line 118: 1.2
-DEAL::  line 119: -0.076
-DEAL::  line 120: -0.026
-DEAL::  line 121: -0.31
-DEAL::  line 122: 0.019
-DEAL::  line 123: 0.0069
-DEAL::  line 124: 0.082
-DEAL::  line 125: -0.0052
+DEAL::  line 117: 0.10240
+DEAL::  line 118: 1.2028
+DEAL::  line 119: -0.076389
+DEAL::  line 120: -0.026014
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 0.019405
+DEAL::  line 123: 0.0069444
+DEAL::  line 124: 0.081569
+DEAL::  line 125: -0.0051803
 DEAL::not identity constrained: 1551
-DEAL::  line 117: 0.65
-DEAL::  line 118: -0.17
-DEAL::  line 119: 0.044
-DEAL::  line 120: 0.72
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.049
-DEAL::  line 123: -0.14
-DEAL::  line 124: 0.036
-DEAL::  line 125: -0.0095
+DEAL::  line 117: 0.65261
+DEAL::  line 118: -0.16578
+DEAL::  line 119: 0.044257
+DEAL::  line 120: 0.71682
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.048611
+DEAL::  line 123: -0.14060
+DEAL::  line 124: 0.035716
+DEAL::  line 125: -0.0095346
 DEAL::not identity constrained: 1552
-DEAL::  line 117: 0.28
-DEAL::  line 118: 0.31
-DEAL::  line 119: -0.061
-DEAL::  line 120: 0.31
-DEAL::  line 121: 0.34
-DEAL::  line 122: -0.067
-DEAL::  line 123: -0.061
-DEAL::  line 124: -0.067
-DEAL::  line 125: 0.013
+DEAL::  line 117: 0.28205
+DEAL::  line 118: 0.30980
+DEAL::  line 119: -0.060764
+DEAL::  line 120: 0.30980
+DEAL::  line 121: 0.34028
+DEAL::  line 122: -0.066742
+DEAL::  line 123: -0.060764
+DEAL::  line 124: -0.066742
+DEAL::  line 125: 0.013091
 DEAL::not identity constrained: 1553
-DEAL::  line 117: 0.044
-DEAL::  line 118: 0.52
-DEAL::  line 119: -0.033
-DEAL::  line 120: 0.049
-DEAL::  line 121: 0.57
-DEAL::  line 122: -0.036
-DEAL::  line 123: -0.0095
-DEAL::  line 124: -0.11
-DEAL::  line 125: 0.0071
+DEAL::  line 117: 0.044257
+DEAL::  line 118: 0.51984
+DEAL::  line 119: -0.033014
+DEAL::  line 120: 0.048611
+DEAL::  line 121: 0.57098
+DEAL::  line 122: -0.036262
+DEAL::  line 123: -0.0095346
+DEAL::  line 124: -0.11199
+DEAL::  line 125: 0.0071125
 DEAL::not identity constrained: 1554
-DEAL::  line 117: 0.10
-DEAL::  line 118: -0.026
-DEAL::  line 119: 0.0069
-DEAL::  line 120: 1.2
-DEAL::  line 121: -0.31
-DEAL::  line 122: 0.082
-DEAL::  line 123: -0.076
-DEAL::  line 124: 0.019
-DEAL::  line 125: -0.0052
+DEAL::  line 117: 0.10240
+DEAL::  line 118: -0.026014
+DEAL::  line 119: 0.0069444
+DEAL::  line 120: 1.2028
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 0.081569
+DEAL::  line 123: -0.076389
+DEAL::  line 124: 0.019405
+DEAL::  line 125: -0.0051803
 DEAL::not identity constrained: 1555
-DEAL::  line 117: 0.044
-DEAL::  line 118: 0.049
-DEAL::  line 119: -0.0095
-DEAL::  line 120: 0.52
-DEAL::  line 121: 0.57
-DEAL::  line 122: -0.11
-DEAL::  line 123: -0.033
-DEAL::  line 124: -0.036
-DEAL::  line 125: 0.0071
+DEAL::  line 117: 0.044257
+DEAL::  line 118: 0.048611
+DEAL::  line 119: -0.0095346
+DEAL::  line 120: 0.51984
+DEAL::  line 121: 0.57098
+DEAL::  line 122: -0.11199
+DEAL::  line 123: -0.033014
+DEAL::  line 124: -0.036262
+DEAL::  line 125: 0.0071125
 DEAL::not identity constrained: 1556
-DEAL::  line 117: 0.0069
-DEAL::  line 118: 0.082
-DEAL::  line 119: -0.0052
-DEAL::  line 120: 0.082
-DEAL::  line 121: 0.96
-DEAL::  line 122: -0.061
-DEAL::  line 123: -0.0052
-DEAL::  line 124: -0.061
-DEAL::  line 125: 0.0039
+DEAL::  line 117: 0.0069444
+DEAL::  line 118: 0.081569
+DEAL::  line 119: -0.0051803
+DEAL::  line 120: 0.081569
+DEAL::  line 121: 0.95811
+DEAL::  line 122: -0.060848
+DEAL::  line 123: -0.0051803
+DEAL::  line 124: -0.060848
+DEAL::  line 125: 0.0038643
 DEAL::not identity constrained: 1638
-DEAL::  line 117: -0.076
-DEAL::  line 118: 0.019
-DEAL::  line 119: -0.0052
-DEAL::  line 120: 1.2
-DEAL::  line 121: -0.31
-DEAL::  line 122: 0.082
-DEAL::  line 123: 0.10
-DEAL::  line 124: -0.026
-DEAL::  line 125: 0.0069
+DEAL::  line 117: -0.076389
+DEAL::  line 118: 0.019405
+DEAL::  line 119: -0.0051803
+DEAL::  line 120: 1.2028
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 0.081569
+DEAL::  line 123: 0.10240
+DEAL::  line 124: -0.026014
+DEAL::  line 125: 0.0069444
 DEAL::not identity constrained: 1639
-DEAL::  line 117: -0.033
-DEAL::  line 118: -0.036
-DEAL::  line 119: 0.0071
-DEAL::  line 120: 0.52
-DEAL::  line 121: 0.57
-DEAL::  line 122: -0.11
-DEAL::  line 123: 0.044
-DEAL::  line 124: 0.049
-DEAL::  line 125: -0.0095
+DEAL::  line 117: -0.033014
+DEAL::  line 118: -0.036262
+DEAL::  line 119: 0.0071125
+DEAL::  line 120: 0.51984
+DEAL::  line 121: 0.57098
+DEAL::  line 122: -0.11199
+DEAL::  line 123: 0.044257
+DEAL::  line 124: 0.048611
+DEAL::  line 125: -0.0095346
 DEAL::not identity constrained: 1640
-DEAL::  line 117: -0.0052
-DEAL::  line 118: -0.061
-DEAL::  line 119: 0.0039
-DEAL::  line 120: 0.082
-DEAL::  line 121: 0.96
-DEAL::  line 122: -0.061
-DEAL::  line 123: 0.0069
-DEAL::  line 124: 0.082
-DEAL::  line 125: -0.0052
+DEAL::  line 117: -0.0051803
+DEAL::  line 118: -0.060848
+DEAL::  line 119: 0.0038643
+DEAL::  line 120: 0.081569
+DEAL::  line 121: 0.95811
+DEAL::  line 122: -0.060848
+DEAL::  line 123: 0.0069444
+DEAL::  line 124: 0.081569
+DEAL::  line 125: -0.0051803
 DEAL::not identity constrained: 1641
-DEAL::  line 117: -0.14
-DEAL::  line 118: 0.036
-DEAL::  line 119: -0.0095
-DEAL::  line 120: 0.72
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.049
-DEAL::  line 123: 0.65
-DEAL::  line 124: -0.17
-DEAL::  line 125: 0.044
+DEAL::  line 117: -0.14060
+DEAL::  line 118: 0.035716
+DEAL::  line 119: -0.0095346
+DEAL::  line 120: 0.71682
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.048611
+DEAL::  line 123: 0.65261
+DEAL::  line 124: -0.16578
+DEAL::  line 125: 0.044257
 DEAL::not identity constrained: 1642
-DEAL::  line 117: -0.061
-DEAL::  line 118: -0.067
-DEAL::  line 119: 0.013
-DEAL::  line 120: 0.31
-DEAL::  line 121: 0.34
-DEAL::  line 122: -0.067
-DEAL::  line 123: 0.28
-DEAL::  line 124: 0.31
-DEAL::  line 125: -0.061
+DEAL::  line 117: -0.060764
+DEAL::  line 118: -0.066742
+DEAL::  line 119: 0.013091
+DEAL::  line 120: 0.30980
+DEAL::  line 121: 0.34028
+DEAL::  line 122: -0.066742
+DEAL::  line 123: 0.28205
+DEAL::  line 124: 0.30980
+DEAL::  line 125: -0.060764
 DEAL::not identity constrained: 1643
-DEAL::  line 117: -0.0095
-DEAL::  line 118: -0.11
-DEAL::  line 119: 0.0071
-DEAL::  line 120: 0.049
-DEAL::  line 121: 0.57
-DEAL::  line 122: -0.036
-DEAL::  line 123: 0.044
-DEAL::  line 124: 0.52
-DEAL::  line 125: -0.033
+DEAL::  line 117: -0.0095346
+DEAL::  line 118: -0.11199
+DEAL::  line 119: 0.0071125
+DEAL::  line 120: 0.048611
+DEAL::  line 121: 0.57098
+DEAL::  line 122: -0.036262
+DEAL::  line 123: 0.044257
+DEAL::  line 124: 0.51984
+DEAL::  line 125: -0.033014
 DEAL::not identity constrained: 1644
-DEAL::  line 117: 0.10
-DEAL::  line 118: -0.026
-DEAL::  line 119: 0.0069
-DEAL::  line 120: -0.38
-DEAL::  line 121: 0.097
-DEAL::  line 122: -0.026
-DEAL::  line 123: 1.5
-DEAL::  line 124: -0.38
-DEAL::  line 125: 0.10
+DEAL::  line 117: 0.10240
+DEAL::  line 118: -0.026014
+DEAL::  line 119: 0.0069444
+DEAL::  line 120: -0.38360
+DEAL::  line 121: 0.097446
+DEAL::  line 122: -0.026014
+DEAL::  line 123: 1.5100
+DEAL::  line 124: -0.38360
+DEAL::  line 125: 0.10240
 DEAL::not identity constrained: 1645
-DEAL::  line 117: 0.044
-DEAL::  line 118: 0.049
-DEAL::  line 119: -0.0095
-DEAL::  line 120: -0.17
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.036
-DEAL::  line 123: 0.65
-DEAL::  line 124: 0.72
-DEAL::  line 125: -0.14
+DEAL::  line 117: 0.044257
+DEAL::  line 118: 0.048611
+DEAL::  line 119: -0.0095346
+DEAL::  line 120: -0.16578
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.035716
+DEAL::  line 123: 0.65261
+DEAL::  line 124: 0.71682
+DEAL::  line 125: -0.14060
 DEAL::not identity constrained: 1646
-DEAL::  line 117: 0.0069
-DEAL::  line 118: 0.082
-DEAL::  line 119: -0.0052
-DEAL::  line 120: -0.026
-DEAL::  line 121: -0.31
-DEAL::  line 122: 0.019
-DEAL::  line 123: 0.10
-DEAL::  line 124: 1.2
-DEAL::  line 125: -0.076
+DEAL::  line 117: 0.0069444
+DEAL::  line 118: 0.081569
+DEAL::  line 119: -0.0051803
+DEAL::  line 120: -0.026014
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 0.019405
+DEAL::  line 123: 0.10240
+DEAL::  line 124: 1.2028
+DEAL::  line 125: -0.076389
 DEAL::not identity constrained: 1746
-DEAL::  line 342: 1.5
-DEAL::  line 343: -0.38
-DEAL::  line 344: 0.10
-DEAL::  line 345: -0.38
-DEAL::  line 346: 0.097
-DEAL::  line 347: -0.026
-DEAL::  line 348: 0.10
-DEAL::  line 349: -0.026
-DEAL::  line 350: 0.0069
+DEAL::  line 342: 1.5100
+DEAL::  line 343: -0.38360
+DEAL::  line 344: 0.10240
+DEAL::  line 345: -0.38360
+DEAL::  line 346: 0.097446
+DEAL::  line 347: -0.026014
+DEAL::  line 348: 0.10240
+DEAL::  line 349: -0.026014
+DEAL::  line 350: 0.0069444
 DEAL::not identity constrained: 1747
-DEAL::  line 342: 0.65
-DEAL::  line 343: 0.72
-DEAL::  line 344: -0.14
-DEAL::  line 345: -0.17
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.036
-DEAL::  line 348: 0.044
-DEAL::  line 349: 0.049
-DEAL::  line 350: -0.0095
+DEAL::  line 342: 0.65261
+DEAL::  line 343: 0.71682
+DEAL::  line 344: -0.14060
+DEAL::  line 345: -0.16578
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.035716
+DEAL::  line 348: 0.044257
+DEAL::  line 349: 0.048611
+DEAL::  line 350: -0.0095346
 DEAL::not identity constrained: 1748
-DEAL::  line 342: 0.10
-DEAL::  line 343: 1.2
-DEAL::  line 344: -0.076
-DEAL::  line 345: -0.026
-DEAL::  line 346: -0.31
-DEAL::  line 347: 0.019
-DEAL::  line 348: 0.0069
-DEAL::  line 349: 0.082
-DEAL::  line 350: -0.0052
+DEAL::  line 342: 0.10240
+DEAL::  line 343: 1.2028
+DEAL::  line 344: -0.076389
+DEAL::  line 345: -0.026014
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 0.019405
+DEAL::  line 348: 0.0069444
+DEAL::  line 349: 0.081569
+DEAL::  line 350: -0.0051803
 DEAL::not identity constrained: 1749
-DEAL::  line 342: 0.65
-DEAL::  line 343: -0.17
-DEAL::  line 344: 0.044
-DEAL::  line 345: 0.72
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.049
-DEAL::  line 348: -0.14
-DEAL::  line 349: 0.036
-DEAL::  line 350: -0.0095
+DEAL::  line 342: 0.65261
+DEAL::  line 343: -0.16578
+DEAL::  line 344: 0.044257
+DEAL::  line 345: 0.71682
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.048611
+DEAL::  line 348: -0.14060
+DEAL::  line 349: 0.035716
+DEAL::  line 350: -0.0095346
 DEAL::not identity constrained: 1750
-DEAL::  line 342: 0.28
-DEAL::  line 343: 0.31
-DEAL::  line 344: -0.061
-DEAL::  line 345: 0.31
-DEAL::  line 346: 0.34
-DEAL::  line 347: -0.067
-DEAL::  line 348: -0.061
-DEAL::  line 349: -0.067
-DEAL::  line 350: 0.013
+DEAL::  line 342: 0.28205
+DEAL::  line 343: 0.30980
+DEAL::  line 344: -0.060764
+DEAL::  line 345: 0.30980
+DEAL::  line 346: 0.34028
+DEAL::  line 347: -0.066742
+DEAL::  line 348: -0.060764
+DEAL::  line 349: -0.066742
+DEAL::  line 350: 0.013091
 DEAL::not identity constrained: 1751
-DEAL::  line 342: 0.044
-DEAL::  line 343: 0.52
-DEAL::  line 344: -0.033
-DEAL::  line 345: 0.049
-DEAL::  line 346: 0.57
-DEAL::  line 347: -0.036
-DEAL::  line 348: -0.0095
-DEAL::  line 349: -0.11
-DEAL::  line 350: 0.0071
+DEAL::  line 342: 0.044257
+DEAL::  line 343: 0.51984
+DEAL::  line 344: -0.033014
+DEAL::  line 345: 0.048611
+DEAL::  line 346: 0.57098
+DEAL::  line 347: -0.036262
+DEAL::  line 348: -0.0095346
+DEAL::  line 349: -0.11199
+DEAL::  line 350: 0.0071125
 DEAL::not identity constrained: 1752
-DEAL::  line 342: 0.10
-DEAL::  line 343: -0.026
-DEAL::  line 344: 0.0069
-DEAL::  line 345: 1.2
-DEAL::  line 346: -0.31
-DEAL::  line 347: 0.082
-DEAL::  line 348: -0.076
-DEAL::  line 349: 0.019
-DEAL::  line 350: -0.0052
+DEAL::  line 342: 0.10240
+DEAL::  line 343: -0.026014
+DEAL::  line 344: 0.0069444
+DEAL::  line 345: 1.2028
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 0.081569
+DEAL::  line 348: -0.076389
+DEAL::  line 349: 0.019405
+DEAL::  line 350: -0.0051803
 DEAL::not identity constrained: 1753
-DEAL::  line 342: 0.044
-DEAL::  line 343: 0.049
-DEAL::  line 344: -0.0095
-DEAL::  line 345: 0.52
-DEAL::  line 346: 0.57
-DEAL::  line 347: -0.11
-DEAL::  line 348: -0.033
-DEAL::  line 349: -0.036
-DEAL::  line 350: 0.0071
+DEAL::  line 342: 0.044257
+DEAL::  line 343: 0.048611
+DEAL::  line 344: -0.0095346
+DEAL::  line 345: 0.51984
+DEAL::  line 346: 0.57098
+DEAL::  line 347: -0.11199
+DEAL::  line 348: -0.033014
+DEAL::  line 349: -0.036262
+DEAL::  line 350: 0.0071125
 DEAL::not identity constrained: 1754
-DEAL::  line 342: 0.0069
-DEAL::  line 343: 0.082
-DEAL::  line 344: -0.0052
-DEAL::  line 345: 0.082
-DEAL::  line 346: 0.96
-DEAL::  line 347: -0.061
-DEAL::  line 348: -0.0052
-DEAL::  line 349: -0.061
-DEAL::  line 350: 0.0039
+DEAL::  line 342: 0.0069444
+DEAL::  line 343: 0.081569
+DEAL::  line 344: -0.0051803
+DEAL::  line 345: 0.081569
+DEAL::  line 346: 0.95811
+DEAL::  line 347: -0.060848
+DEAL::  line 348: -0.0051803
+DEAL::  line 349: -0.060848
+DEAL::  line 350: 0.0038643
 DEAL::not identity constrained: 1836
-DEAL::  line 342: -0.076
-DEAL::  line 343: 1.2
-DEAL::  line 344: 0.10
-DEAL::  line 345: 0.019
-DEAL::  line 346: -0.31
-DEAL::  line 347: -0.026
-DEAL::  line 348: -0.0052
-DEAL::  line 349: 0.082
-DEAL::  line 350: 0.0069
+DEAL::  line 342: -0.076389
+DEAL::  line 343: 1.2028
+DEAL::  line 344: 0.10240
+DEAL::  line 345: 0.019405
+DEAL::  line 346: -0.30556
+DEAL::  line 347: -0.026014
+DEAL::  line 348: -0.0051803
+DEAL::  line 349: 0.081569
+DEAL::  line 350: 0.0069444
 DEAL::not identity constrained: 1837
-DEAL::  line 342: -0.14
-DEAL::  line 343: 0.72
-DEAL::  line 344: 0.65
-DEAL::  line 345: 0.036
-DEAL::  line 346: -0.18
-DEAL::  line 347: -0.17
-DEAL::  line 348: -0.0095
-DEAL::  line 349: 0.049
-DEAL::  line 350: 0.044
+DEAL::  line 342: -0.14060
+DEAL::  line 343: 0.71682
+DEAL::  line 344: 0.65261
+DEAL::  line 345: 0.035716
+DEAL::  line 346: -0.18210
+DEAL::  line 347: -0.16578
+DEAL::  line 348: -0.0095346
+DEAL::  line 349: 0.048611
+DEAL::  line 350: 0.044257
 DEAL::not identity constrained: 1838
-DEAL::  line 342: 0.10
-DEAL::  line 343: -0.38
-DEAL::  line 344: 1.5
-DEAL::  line 345: -0.026
-DEAL::  line 346: 0.097
-DEAL::  line 347: -0.38
-DEAL::  line 348: 0.0069
-DEAL::  line 349: -0.026
-DEAL::  line 350: 0.10
+DEAL::  line 342: 0.10240
+DEAL::  line 343: -0.38360
+DEAL::  line 344: 1.5100
+DEAL::  line 345: -0.026014
+DEAL::  line 346: 0.097446
+DEAL::  line 347: -0.38360
+DEAL::  line 348: 0.0069444
+DEAL::  line 349: -0.026014
+DEAL::  line 350: 0.10240
 DEAL::not identity constrained: 1839
-DEAL::  line 342: -0.033
-DEAL::  line 343: 0.52
-DEAL::  line 344: 0.044
-DEAL::  line 345: -0.036
-DEAL::  line 346: 0.57
-DEAL::  line 347: 0.049
-DEAL::  line 348: 0.0071
-DEAL::  line 349: -0.11
-DEAL::  line 350: -0.0095
+DEAL::  line 342: -0.033014
+DEAL::  line 343: 0.51984
+DEAL::  line 344: 0.044257
+DEAL::  line 345: -0.036262
+DEAL::  line 346: 0.57098
+DEAL::  line 347: 0.048611
+DEAL::  line 348: 0.0071125
+DEAL::  line 349: -0.11199
+DEAL::  line 350: -0.0095346
 DEAL::not identity constrained: 1840
-DEAL::  line 342: -0.061
-DEAL::  line 343: 0.31
-DEAL::  line 344: 0.28
-DEAL::  line 345: -0.067
-DEAL::  line 346: 0.34
-DEAL::  line 347: 0.31
-DEAL::  line 348: 0.013
-DEAL::  line 349: -0.067
-DEAL::  line 350: -0.061
+DEAL::  line 342: -0.060764
+DEAL::  line 343: 0.30980
+DEAL::  line 344: 0.28205
+DEAL::  line 345: -0.066742
+DEAL::  line 346: 0.34028
+DEAL::  line 347: 0.30980
+DEAL::  line 348: 0.013091
+DEAL::  line 349: -0.066742
+DEAL::  line 350: -0.060764
 DEAL::not identity constrained: 1841
-DEAL::  line 342: 0.044
-DEAL::  line 343: -0.17
-DEAL::  line 344: 0.65
-DEAL::  line 345: 0.049
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.72
-DEAL::  line 348: -0.0095
-DEAL::  line 349: 0.036
-DEAL::  line 350: -0.14
+DEAL::  line 342: 0.044257
+DEAL::  line 343: -0.16578
+DEAL::  line 344: 0.65261
+DEAL::  line 345: 0.048611
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.71682
+DEAL::  line 348: -0.0095346
+DEAL::  line 349: 0.035716
+DEAL::  line 350: -0.14060
 DEAL::not identity constrained: 1842
-DEAL::  line 342: -0.0052
-DEAL::  line 343: 0.082
-DEAL::  line 344: 0.0069
-DEAL::  line 345: -0.061
-DEAL::  line 346: 0.96
-DEAL::  line 347: 0.082
-DEAL::  line 348: 0.0039
-DEAL::  line 349: -0.061
-DEAL::  line 350: -0.0052
+DEAL::  line 342: -0.0051803
+DEAL::  line 343: 0.081569
+DEAL::  line 344: 0.0069444
+DEAL::  line 345: -0.060848
+DEAL::  line 346: 0.95811
+DEAL::  line 347: 0.081569
+DEAL::  line 348: 0.0038643
+DEAL::  line 349: -0.060848
+DEAL::  line 350: -0.0051803
 DEAL::not identity constrained: 1843
-DEAL::  line 342: -0.0095
-DEAL::  line 343: 0.049
-DEAL::  line 344: 0.044
-DEAL::  line 345: -0.11
-DEAL::  line 346: 0.57
-DEAL::  line 347: 0.52
-DEAL::  line 348: 0.0071
-DEAL::  line 349: -0.036
-DEAL::  line 350: -0.033
+DEAL::  line 342: -0.0095346
+DEAL::  line 343: 0.048611
+DEAL::  line 344: 0.044257
+DEAL::  line 345: -0.11199
+DEAL::  line 346: 0.57098
+DEAL::  line 347: 0.51984
+DEAL::  line 348: 0.0071125
+DEAL::  line 349: -0.036262
+DEAL::  line 350: -0.033014
 DEAL::not identity constrained: 1844
-DEAL::  line 342: 0.0069
-DEAL::  line 343: -0.026
-DEAL::  line 344: 0.10
-DEAL::  line 345: 0.082
-DEAL::  line 346: -0.31
-DEAL::  line 347: 1.2
-DEAL::  line 348: -0.0052
-DEAL::  line 349: 0.019
-DEAL::  line 350: -0.076
+DEAL::  line 342: 0.0069444
+DEAL::  line 343: -0.026014
+DEAL::  line 344: 0.10240
+DEAL::  line 345: 0.081569
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 1.2028
+DEAL::  line 348: -0.0051803
+DEAL::  line 349: 0.019405
+DEAL::  line 350: -0.076389
 DEAL::not identity constrained: 1908
-DEAL::  line 117: -0.076
-DEAL::  line 118: 1.2
-DEAL::  line 119: 0.10
-DEAL::  line 120: 0.019
-DEAL::  line 121: -0.31
-DEAL::  line 122: -0.026
-DEAL::  line 123: -0.0052
-DEAL::  line 124: 0.082
-DEAL::  line 125: 0.0069
+DEAL::  line 117: -0.076389
+DEAL::  line 118: 1.2028
+DEAL::  line 119: 0.10240
+DEAL::  line 120: 0.019405
+DEAL::  line 121: -0.30556
+DEAL::  line 122: -0.026014
+DEAL::  line 123: -0.0051803
+DEAL::  line 124: 0.081569
+DEAL::  line 125: 0.0069444
 DEAL::not identity constrained: 1909
-DEAL::  line 117: -0.14
-DEAL::  line 118: 0.72
-DEAL::  line 119: 0.65
-DEAL::  line 120: 0.036
-DEAL::  line 121: -0.18
-DEAL::  line 122: -0.17
-DEAL::  line 123: -0.0095
-DEAL::  line 124: 0.049
-DEAL::  line 125: 0.044
+DEAL::  line 117: -0.14060
+DEAL::  line 118: 0.71682
+DEAL::  line 119: 0.65261
+DEAL::  line 120: 0.035716
+DEAL::  line 121: -0.18210
+DEAL::  line 122: -0.16578
+DEAL::  line 123: -0.0095346
+DEAL::  line 124: 0.048611
+DEAL::  line 125: 0.044257
 DEAL::not identity constrained: 1910
-DEAL::  line 117: 0.10
-DEAL::  line 118: -0.38
-DEAL::  line 119: 1.5
-DEAL::  line 120: -0.026
-DEAL::  line 121: 0.097
-DEAL::  line 122: -0.38
-DEAL::  line 123: 0.0069
-DEAL::  line 124: -0.026
-DEAL::  line 125: 0.10
+DEAL::  line 117: 0.10240
+DEAL::  line 118: -0.38360
+DEAL::  line 119: 1.5100
+DEAL::  line 120: -0.026014
+DEAL::  line 121: 0.097446
+DEAL::  line 122: -0.38360
+DEAL::  line 123: 0.0069444
+DEAL::  line 124: -0.026014
+DEAL::  line 125: 0.10240
 DEAL::not identity constrained: 1911
-DEAL::  line 117: -0.033
-DEAL::  line 118: 0.52
-DEAL::  line 119: 0.044
-DEAL::  line 120: -0.036
-DEAL::  line 121: 0.57
-DEAL::  line 122: 0.049
-DEAL::  line 123: 0.0071
-DEAL::  line 124: -0.11
-DEAL::  line 125: -0.0095
+DEAL::  line 117: -0.033014
+DEAL::  line 118: 0.51984
+DEAL::  line 119: 0.044257
+DEAL::  line 120: -0.036262
+DEAL::  line 121: 0.57098
+DEAL::  line 122: 0.048611
+DEAL::  line 123: 0.0071125
+DEAL::  line 124: -0.11199
+DEAL::  line 125: -0.0095346
 DEAL::not identity constrained: 1912
-DEAL::  line 117: -0.061
-DEAL::  line 118: 0.31
-DEAL::  line 119: 0.28
-DEAL::  line 120: -0.067
-DEAL::  line 121: 0.34
-DEAL::  line 122: 0.31
-DEAL::  line 123: 0.013
-DEAL::  line 124: -0.067
-DEAL::  line 125: -0.061
+DEAL::  line 117: -0.060764
+DEAL::  line 118: 0.30980
+DEAL::  line 119: 0.28205
+DEAL::  line 120: -0.066742
+DEAL::  line 121: 0.34028
+DEAL::  line 122: 0.30980
+DEAL::  line 123: 0.013091
+DEAL::  line 124: -0.066742
+DEAL::  line 125: -0.060764
 DEAL::not identity constrained: 1913
-DEAL::  line 117: 0.044
-DEAL::  line 118: -0.17
-DEAL::  line 119: 0.65
-DEAL::  line 120: 0.049
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.72
-DEAL::  line 123: -0.0095
-DEAL::  line 124: 0.036
-DEAL::  line 125: -0.14
+DEAL::  line 117: 0.044257
+DEAL::  line 118: -0.16578
+DEAL::  line 119: 0.65261
+DEAL::  line 120: 0.048611
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.71682
+DEAL::  line 123: -0.0095346
+DEAL::  line 124: 0.035716
+DEAL::  line 125: -0.14060
 DEAL::not identity constrained: 1914
-DEAL::  line 117: -0.0052
-DEAL::  line 118: 0.082
-DEAL::  line 119: 0.0069
-DEAL::  line 120: -0.061
-DEAL::  line 121: 0.96
-DEAL::  line 122: 0.082
-DEAL::  line 123: 0.0039
-DEAL::  line 124: -0.061
-DEAL::  line 125: -0.0052
+DEAL::  line 117: -0.0051803
+DEAL::  line 118: 0.081569
+DEAL::  line 119: 0.0069444
+DEAL::  line 120: -0.060848
+DEAL::  line 121: 0.95811
+DEAL::  line 122: 0.081569
+DEAL::  line 123: 0.0038643
+DEAL::  line 124: -0.060848
+DEAL::  line 125: -0.0051803
 DEAL::not identity constrained: 1915
-DEAL::  line 117: -0.0095
-DEAL::  line 118: 0.049
-DEAL::  line 119: 0.044
-DEAL::  line 120: -0.11
-DEAL::  line 121: 0.57
-DEAL::  line 122: 0.52
-DEAL::  line 123: 0.0071
-DEAL::  line 124: -0.036
-DEAL::  line 125: -0.033
+DEAL::  line 117: -0.0095346
+DEAL::  line 118: 0.048611
+DEAL::  line 119: 0.044257
+DEAL::  line 120: -0.11199
+DEAL::  line 121: 0.57098
+DEAL::  line 122: 0.51984
+DEAL::  line 123: 0.0071125
+DEAL::  line 124: -0.036262
+DEAL::  line 125: -0.033014
 DEAL::not identity constrained: 1916
-DEAL::  line 117: 0.0069
-DEAL::  line 118: -0.026
-DEAL::  line 119: 0.10
-DEAL::  line 120: 0.082
-DEAL::  line 121: -0.31
-DEAL::  line 122: 1.2
-DEAL::  line 123: -0.0052
-DEAL::  line 124: 0.019
-DEAL::  line 125: -0.076
+DEAL::  line 117: 0.0069444
+DEAL::  line 118: -0.026014
+DEAL::  line 119: 0.10240
+DEAL::  line 120: 0.081569
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 1.2028
+DEAL::  line 123: -0.0051803
+DEAL::  line 124: 0.019405
+DEAL::  line 125: -0.076389
 DEAL::not identity constrained: 1917
-DEAL::  line 342: -0.076
-DEAL::  line 343: 0.019
-DEAL::  line 344: -0.0052
-DEAL::  line 345: 1.2
-DEAL::  line 346: -0.31
-DEAL::  line 347: 0.082
-DEAL::  line 348: 0.10
-DEAL::  line 349: -0.026
-DEAL::  line 350: 0.0069
+DEAL::  line 342: -0.076389
+DEAL::  line 343: 0.019405
+DEAL::  line 344: -0.0051803
+DEAL::  line 345: 1.2028
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 0.081569
+DEAL::  line 348: 0.10240
+DEAL::  line 349: -0.026014
+DEAL::  line 350: 0.0069444
 DEAL::not identity constrained: 1918
-DEAL::  line 342: -0.033
-DEAL::  line 343: -0.036
-DEAL::  line 344: 0.0071
-DEAL::  line 345: 0.52
-DEAL::  line 346: 0.57
-DEAL::  line 347: -0.11
-DEAL::  line 348: 0.044
-DEAL::  line 349: 0.049
-DEAL::  line 350: -0.0095
+DEAL::  line 342: -0.033014
+DEAL::  line 343: -0.036262
+DEAL::  line 344: 0.0071125
+DEAL::  line 345: 0.51984
+DEAL::  line 346: 0.57098
+DEAL::  line 347: -0.11199
+DEAL::  line 348: 0.044257
+DEAL::  line 349: 0.048611
+DEAL::  line 350: -0.0095346
 DEAL::not identity constrained: 1919
-DEAL::  line 342: -0.0052
-DEAL::  line 343: -0.061
-DEAL::  line 344: 0.0039
-DEAL::  line 345: 0.082
-DEAL::  line 346: 0.96
-DEAL::  line 347: -0.061
-DEAL::  line 348: 0.0069
-DEAL::  line 349: 0.082
-DEAL::  line 350: -0.0052
+DEAL::  line 342: -0.0051803
+DEAL::  line 343: -0.060848
+DEAL::  line 344: 0.0038643
+DEAL::  line 345: 0.081569
+DEAL::  line 346: 0.95811
+DEAL::  line 347: -0.060848
+DEAL::  line 348: 0.0069444
+DEAL::  line 349: 0.081569
+DEAL::  line 350: -0.0051803
 DEAL::not identity constrained: 1920
-DEAL::  line 342: -0.14
-DEAL::  line 343: 0.036
-DEAL::  line 344: -0.0095
-DEAL::  line 345: 0.72
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.049
-DEAL::  line 348: 0.65
-DEAL::  line 349: -0.17
-DEAL::  line 350: 0.044
+DEAL::  line 342: -0.14060
+DEAL::  line 343: 0.035716
+DEAL::  line 344: -0.0095346
+DEAL::  line 345: 0.71682
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.048611
+DEAL::  line 348: 0.65261
+DEAL::  line 349: -0.16578
+DEAL::  line 350: 0.044257
 DEAL::not identity constrained: 1921
-DEAL::  line 342: -0.061
-DEAL::  line 343: -0.067
-DEAL::  line 344: 0.013
-DEAL::  line 345: 0.31
-DEAL::  line 346: 0.34
-DEAL::  line 347: -0.067
-DEAL::  line 348: 0.28
-DEAL::  line 349: 0.31
-DEAL::  line 350: -0.061
+DEAL::  line 342: -0.060764
+DEAL::  line 343: -0.066742
+DEAL::  line 344: 0.013091
+DEAL::  line 345: 0.30980
+DEAL::  line 346: 0.34028
+DEAL::  line 347: -0.066742
+DEAL::  line 348: 0.28205
+DEAL::  line 349: 0.30980
+DEAL::  line 350: -0.060764
 DEAL::not identity constrained: 1922
-DEAL::  line 342: -0.0095
-DEAL::  line 343: -0.11
-DEAL::  line 344: 0.0071
-DEAL::  line 345: 0.049
-DEAL::  line 346: 0.57
-DEAL::  line 347: -0.036
-DEAL::  line 348: 0.044
-DEAL::  line 349: 0.52
-DEAL::  line 350: -0.033
+DEAL::  line 342: -0.0095346
+DEAL::  line 343: -0.11199
+DEAL::  line 344: 0.0071125
+DEAL::  line 345: 0.048611
+DEAL::  line 346: 0.57098
+DEAL::  line 347: -0.036262
+DEAL::  line 348: 0.044257
+DEAL::  line 349: 0.51984
+DEAL::  line 350: -0.033014
 DEAL::not identity constrained: 1923
-DEAL::  line 342: 0.10
-DEAL::  line 343: -0.026
-DEAL::  line 344: 0.0069
-DEAL::  line 345: -0.38
-DEAL::  line 346: 0.097
-DEAL::  line 347: -0.026
-DEAL::  line 348: 1.5
-DEAL::  line 349: -0.38
-DEAL::  line 350: 0.10
+DEAL::  line 342: 0.10240
+DEAL::  line 343: -0.026014
+DEAL::  line 344: 0.0069444
+DEAL::  line 345: -0.38360
+DEAL::  line 346: 0.097446
+DEAL::  line 347: -0.026014
+DEAL::  line 348: 1.5100
+DEAL::  line 349: -0.38360
+DEAL::  line 350: 0.10240
 DEAL::not identity constrained: 1924
-DEAL::  line 342: 0.044
-DEAL::  line 343: 0.049
-DEAL::  line 344: -0.0095
-DEAL::  line 345: -0.17
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.036
-DEAL::  line 348: 0.65
-DEAL::  line 349: 0.72
-DEAL::  line 350: -0.14
+DEAL::  line 342: 0.044257
+DEAL::  line 343: 0.048611
+DEAL::  line 344: -0.0095346
+DEAL::  line 345: -0.16578
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.035716
+DEAL::  line 348: 0.65261
+DEAL::  line 349: 0.71682
+DEAL::  line 350: -0.14060
 DEAL::not identity constrained: 1925
-DEAL::  line 342: 0.0069
-DEAL::  line 343: 0.082
-DEAL::  line 344: -0.0052
-DEAL::  line 345: -0.026
-DEAL::  line 346: -0.31
-DEAL::  line 347: 0.019
-DEAL::  line 348: 0.10
-DEAL::  line 349: 1.2
-DEAL::  line 350: -0.076
+DEAL::  line 342: 0.0069444
+DEAL::  line 343: 0.081569
+DEAL::  line 344: -0.0051803
+DEAL::  line 345: -0.026014
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 0.019405
+DEAL::  line 348: 0.10240
+DEAL::  line 349: 1.2028
+DEAL::  line 350: -0.076389
 DEAL::not identity constrained: 1989
-DEAL::  line 117: 0.0039
-DEAL::  line 118: -0.061
-DEAL::  line 119: -0.0052
-DEAL::  line 120: -0.061
-DEAL::  line 121: 0.96
-DEAL::  line 122: 0.082
-DEAL::  line 123: -0.0052
-DEAL::  line 124: 0.082
-DEAL::  line 125: 0.0069
+DEAL::  line 117: 0.0038643
+DEAL::  line 118: -0.060848
+DEAL::  line 119: -0.0051803
+DEAL::  line 120: -0.060848
+DEAL::  line 121: 0.95811
+DEAL::  line 122: 0.081569
+DEAL::  line 123: -0.0051803
+DEAL::  line 124: 0.081569
+DEAL::  line 125: 0.0069444
 DEAL::not identity constrained: 1990
-DEAL::  line 117: 0.0071
-DEAL::  line 118: -0.036
-DEAL::  line 119: -0.033
-DEAL::  line 120: -0.11
-DEAL::  line 121: 0.57
-DEAL::  line 122: 0.52
-DEAL::  line 123: -0.0095
-DEAL::  line 124: 0.049
-DEAL::  line 125: 0.044
+DEAL::  line 117: 0.0071125
+DEAL::  line 118: -0.036262
+DEAL::  line 119: -0.033014
+DEAL::  line 120: -0.11199
+DEAL::  line 121: 0.57098
+DEAL::  line 122: 0.51984
+DEAL::  line 123: -0.0095346
+DEAL::  line 124: 0.048611
+DEAL::  line 125: 0.044257
 DEAL::not identity constrained: 1991
-DEAL::  line 117: -0.0052
-DEAL::  line 118: 0.019
-DEAL::  line 119: -0.076
-DEAL::  line 120: 0.082
-DEAL::  line 121: -0.31
-DEAL::  line 122: 1.2
-DEAL::  line 123: 0.0069
-DEAL::  line 124: -0.026
-DEAL::  line 125: 0.10
+DEAL::  line 117: -0.0051803
+DEAL::  line 118: 0.019405
+DEAL::  line 119: -0.076389
+DEAL::  line 120: 0.081569
+DEAL::  line 121: -0.30556
+DEAL::  line 122: 1.2028
+DEAL::  line 123: 0.0069444
+DEAL::  line 124: -0.026014
+DEAL::  line 125: 0.10240
 DEAL::not identity constrained: 1992
-DEAL::  line 117: 0.0071
-DEAL::  line 118: -0.11
-DEAL::  line 119: -0.0095
-DEAL::  line 120: -0.036
-DEAL::  line 121: 0.57
-DEAL::  line 122: 0.049
-DEAL::  line 123: -0.033
-DEAL::  line 124: 0.52
-DEAL::  line 125: 0.044
+DEAL::  line 117: 0.0071125
+DEAL::  line 118: -0.11199
+DEAL::  line 119: -0.0095346
+DEAL::  line 120: -0.036262
+DEAL::  line 121: 0.57098
+DEAL::  line 122: 0.048611
+DEAL::  line 123: -0.033014
+DEAL::  line 124: 0.51984
+DEAL::  line 125: 0.044257
 DEAL::not identity constrained: 1993
-DEAL::  line 117: 0.013
-DEAL::  line 118: -0.067
-DEAL::  line 119: -0.061
-DEAL::  line 120: -0.067
-DEAL::  line 121: 0.34
-DEAL::  line 122: 0.31
-DEAL::  line 123: -0.061
-DEAL::  line 124: 0.31
-DEAL::  line 125: 0.28
+DEAL::  line 117: 0.013091
+DEAL::  line 118: -0.066742
+DEAL::  line 119: -0.060764
+DEAL::  line 120: -0.066742
+DEAL::  line 121: 0.34028
+DEAL::  line 122: 0.30980
+DEAL::  line 123: -0.060764
+DEAL::  line 124: 0.30980
+DEAL::  line 125: 0.28205
 DEAL::not identity constrained: 1994
-DEAL::  line 117: -0.0095
-DEAL::  line 118: 0.036
-DEAL::  line 119: -0.14
-DEAL::  line 120: 0.049
-DEAL::  line 121: -0.18
-DEAL::  line 122: 0.72
-DEAL::  line 123: 0.044
-DEAL::  line 124: -0.17
-DEAL::  line 125: 0.65
+DEAL::  line 117: -0.0095346
+DEAL::  line 118: 0.035716
+DEAL::  line 119: -0.14060
+DEAL::  line 120: 0.048611
+DEAL::  line 121: -0.18210
+DEAL::  line 122: 0.71682
+DEAL::  line 123: 0.044257
+DEAL::  line 124: -0.16578
+DEAL::  line 125: 0.65261
 DEAL::not identity constrained: 1995
-DEAL::  line 117: -0.0052
-DEAL::  line 118: 0.082
-DEAL::  line 119: 0.0069
-DEAL::  line 120: 0.019
-DEAL::  line 121: -0.31
-DEAL::  line 122: -0.026
-DEAL::  line 123: -0.076
-DEAL::  line 124: 1.2
-DEAL::  line 125: 0.10
+DEAL::  line 117: -0.0051803
+DEAL::  line 118: 0.081569
+DEAL::  line 119: 0.0069444
+DEAL::  line 120: 0.019405
+DEAL::  line 121: -0.30556
+DEAL::  line 122: -0.026014
+DEAL::  line 123: -0.076389
+DEAL::  line 124: 1.2028
+DEAL::  line 125: 0.10240
 DEAL::not identity constrained: 1996
-DEAL::  line 117: -0.0095
-DEAL::  line 118: 0.049
-DEAL::  line 119: 0.044
-DEAL::  line 120: 0.036
-DEAL::  line 121: -0.18
-DEAL::  line 122: -0.17
-DEAL::  line 123: -0.14
-DEAL::  line 124: 0.72
-DEAL::  line 125: 0.65
+DEAL::  line 117: -0.0095346
+DEAL::  line 118: 0.048611
+DEAL::  line 119: 0.044257
+DEAL::  line 120: 0.035716
+DEAL::  line 121: -0.18210
+DEAL::  line 122: -0.16578
+DEAL::  line 123: -0.14060
+DEAL::  line 124: 0.71682
+DEAL::  line 125: 0.65261
 DEAL::not identity constrained: 1997
-DEAL::  line 117: 0.0069
-DEAL::  line 118: -0.026
-DEAL::  line 119: 0.10
-DEAL::  line 120: -0.026
-DEAL::  line 121: 0.097
-DEAL::  line 122: -0.38
-DEAL::  line 123: 0.10
-DEAL::  line 124: -0.38
-DEAL::  line 125: 1.5
+DEAL::  line 117: 0.0069444
+DEAL::  line 118: -0.026014
+DEAL::  line 119: 0.10240
+DEAL::  line 120: -0.026014
+DEAL::  line 121: 0.097446
+DEAL::  line 122: -0.38360
+DEAL::  line 123: 0.10240
+DEAL::  line 124: -0.38360
+DEAL::  line 125: 1.5100
 DEAL::not identity constrained: 1998
-DEAL::  line 342: 0.0039
-DEAL::  line 343: -0.061
-DEAL::  line 344: -0.0052
-DEAL::  line 345: -0.061
-DEAL::  line 346: 0.96
-DEAL::  line 347: 0.082
-DEAL::  line 348: -0.0052
-DEAL::  line 349: 0.082
-DEAL::  line 350: 0.0069
+DEAL::  line 342: 0.0038643
+DEAL::  line 343: -0.060848
+DEAL::  line 344: -0.0051803
+DEAL::  line 345: -0.060848
+DEAL::  line 346: 0.95811
+DEAL::  line 347: 0.081569
+DEAL::  line 348: -0.0051803
+DEAL::  line 349: 0.081569
+DEAL::  line 350: 0.0069444
 DEAL::not identity constrained: 1999
-DEAL::  line 342: 0.0071
-DEAL::  line 343: -0.036
-DEAL::  line 344: -0.033
-DEAL::  line 345: -0.11
-DEAL::  line 346: 0.57
-DEAL::  line 347: 0.52
-DEAL::  line 348: -0.0095
-DEAL::  line 349: 0.049
-DEAL::  line 350: 0.044
+DEAL::  line 342: 0.0071125
+DEAL::  line 343: -0.036262
+DEAL::  line 344: -0.033014
+DEAL::  line 345: -0.11199
+DEAL::  line 346: 0.57098
+DEAL::  line 347: 0.51984
+DEAL::  line 348: -0.0095346
+DEAL::  line 349: 0.048611
+DEAL::  line 350: 0.044257
 DEAL::not identity constrained: 2000
-DEAL::  line 342: -0.0052
-DEAL::  line 343: 0.019
-DEAL::  line 344: -0.076
-DEAL::  line 345: 0.082
-DEAL::  line 346: -0.31
-DEAL::  line 347: 1.2
-DEAL::  line 348: 0.0069
-DEAL::  line 349: -0.026
-DEAL::  line 350: 0.10
+DEAL::  line 342: -0.0051803
+DEAL::  line 343: 0.019405
+DEAL::  line 344: -0.076389
+DEAL::  line 345: 0.081569
+DEAL::  line 346: -0.30556
+DEAL::  line 347: 1.2028
+DEAL::  line 348: 0.0069444
+DEAL::  line 349: -0.026014
+DEAL::  line 350: 0.10240
 DEAL::not identity constrained: 2001
-DEAL::  line 342: 0.0071
-DEAL::  line 343: -0.11
-DEAL::  line 344: -0.0095
-DEAL::  line 345: -0.036
-DEAL::  line 346: 0.57
-DEAL::  line 347: 0.049
-DEAL::  line 348: -0.033
-DEAL::  line 349: 0.52
-DEAL::  line 350: 0.044
+DEAL::  line 342: 0.0071125
+DEAL::  line 343: -0.11199
+DEAL::  line 344: -0.0095346
+DEAL::  line 345: -0.036262
+DEAL::  line 346: 0.57098
+DEAL::  line 347: 0.048611
+DEAL::  line 348: -0.033014
+DEAL::  line 349: 0.51984
+DEAL::  line 350: 0.044257
 DEAL::not identity constrained: 2002
-DEAL::  line 342: 0.013
-DEAL::  line 343: -0.067
-DEAL::  line 344: -0.061
-DEAL::  line 345: -0.067
-DEAL::  line 346: 0.34
-DEAL::  line 347: 0.31
-DEAL::  line 348: -0.061
-DEAL::  line 349: 0.31
-DEAL::  line 350: 0.28
+DEAL::  line 342: 0.013091
+DEAL::  line 343: -0.066742
+DEAL::  line 344: -0.060764
+DEAL::  line 345: -0.066742
+DEAL::  line 346: 0.34028
+DEAL::  line 347: 0.30980
+DEAL::  line 348: -0.060764
+DEAL::  line 349: 0.30980
+DEAL::  line 350: 0.28205
 DEAL::not identity constrained: 2003
-DEAL::  line 342: -0.0095
-DEAL::  line 343: 0.036
-DEAL::  line 344: -0.14
-DEAL::  line 345: 0.049
-DEAL::  line 346: -0.18
-DEAL::  line 347: 0.72
-DEAL::  line 348: 0.044
-DEAL::  line 349: -0.17
-DEAL::  line 350: 0.65
+DEAL::  line 342: -0.0095346
+DEAL::  line 343: 0.035716
+DEAL::  line 344: -0.14060
+DEAL::  line 345: 0.048611
+DEAL::  line 346: -0.18210
+DEAL::  line 347: 0.71682
+DEAL::  line 348: 0.044257
+DEAL::  line 349: -0.16578
+DEAL::  line 350: 0.65261
 DEAL::not identity constrained: 2004
-DEAL::  line 342: -0.0052
-DEAL::  line 343: 0.082
-DEAL::  line 344: 0.0069
-DEAL::  line 345: 0.019
-DEAL::  line 346: -0.31
-DEAL::  line 347: -0.026
-DEAL::  line 348: -0.076
-DEAL::  line 349: 1.2
-DEAL::  line 350: 0.10
+DEAL::  line 342: -0.0051803
+DEAL::  line 343: 0.081569
+DEAL::  line 344: 0.0069444
+DEAL::  line 345: 0.019405
+DEAL::  line 346: -0.30556
+DEAL::  line 347: -0.026014
+DEAL::  line 348: -0.076389
+DEAL::  line 349: 1.2028
+DEAL::  line 350: 0.10240
 DEAL::not identity constrained: 2005
-DEAL::  line 342: -0.0095
-DEAL::  line 343: 0.049
-DEAL::  line 344: 0.044
-DEAL::  line 345: 0.036
-DEAL::  line 346: -0.18
-DEAL::  line 347: -0.17
-DEAL::  line 348: -0.14
-DEAL::  line 349: 0.72
-DEAL::  line 350: 0.65
+DEAL::  line 342: -0.0095346
+DEAL::  line 343: 0.048611
+DEAL::  line 344: 0.044257
+DEAL::  line 345: 0.035716
+DEAL::  line 346: -0.18210
+DEAL::  line 347: -0.16578
+DEAL::  line 348: -0.14060
+DEAL::  line 349: 0.71682
+DEAL::  line 350: 0.65261
 DEAL::not identity constrained: 2006
-DEAL::  line 342: 0.0069
-DEAL::  line 343: -0.026
-DEAL::  line 344: 0.10
-DEAL::  line 345: -0.026
-DEAL::  line 346: 0.097
-DEAL::  line 347: -0.38
-DEAL::  line 348: 0.10
-DEAL::  line 349: -0.38
-DEAL::  line 350: 1.5
+DEAL::  line 342: 0.0069444
+DEAL::  line 343: -0.026014
+DEAL::  line 344: 0.10240
+DEAL::  line 345: -0.026014
+DEAL::  line 346: 0.097446
+DEAL::  line 347: -0.38360
+DEAL::  line 348: 0.10240
+DEAL::  line 349: -0.38360
+DEAL::  line 350: 1.5100
 DEAL::Checking FE_Q<1>(1)3 in 1d:
 DEAL::Checking FE_DGQ<1>(2)2 in 1d:
 DEAL::0
@@ -3852,23 +3852,23 @@ DEAL::111111111111111111111111111111111111000111111111111000
 DEAL::6
 DEAL::111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 36
-DEAL::  line 0: 0.50
-DEAL::  line 3: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 3: 0.50000
 DEAL::not identity constrained: 37
-DEAL::  line 1: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 38
-DEAL::  line 2: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 51
-DEAL::  line 3: 0.50
-DEAL::  line 12: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 12: 0.50000
 DEAL::not identity constrained: 52
-DEAL::  line 4: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 53
-DEAL::  line 5: 0.50
-DEAL::  line 14: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 14: 0.50000
 DEAL::Checking FE_DGQ<2>(2)2 in 2d:
 DEAL::0
 DEAL::0
@@ -3888,173 +3888,173 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::48
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 108
-DEAL::  line 0: 0.50
-DEAL::  line 3: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 3: 0.50000
 DEAL::not identity constrained: 109
-DEAL::  line 1: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 110
-DEAL::  line 2: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 111
-DEAL::  line 0: 0.50
-DEAL::  line 12: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 12: 0.50000
 DEAL::not identity constrained: 112
-DEAL::  line 1: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 113
-DEAL::  line 2: 0.50
-DEAL::  line 14: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 14: 0.50000
 DEAL::not identity constrained: 114
-DEAL::  line 0: 0.25
-DEAL::  line 3: 0.25
-DEAL::  line 12: 0.25
-DEAL::  line 15: 0.25
+DEAL::  line 0: 0.25000
+DEAL::  line 3: 0.25000
+DEAL::  line 12: 0.25000
+DEAL::  line 15: 0.25000
 DEAL::not identity constrained: 115
-DEAL::  line 1: 0.25
-DEAL::  line 4: 0.25
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
+DEAL::  line 1: 0.25000
+DEAL::  line 4: 0.25000
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
 DEAL::not identity constrained: 116
-DEAL::  line 2: 0.25
-DEAL::  line 5: 0.25
-DEAL::  line 14: 0.25
-DEAL::  line 17: 0.25
+DEAL::  line 2: 0.25000
+DEAL::  line 5: 0.25000
+DEAL::  line 14: 0.25000
+DEAL::  line 17: 0.25000
 DEAL::not identity constrained: 117
-DEAL::  line 3: 0.50
-DEAL::  line 15: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 15: 0.50000
 DEAL::not identity constrained: 118
-DEAL::  line 4: 0.50
-DEAL::  line 16: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 119
-DEAL::  line 5: 0.50
-DEAL::  line 17: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 17: 0.50000
 DEAL::not identity constrained: 120
-DEAL::  line 36: 0.50
-DEAL::  line 39: 0.50
+DEAL::  line 36: 0.50000
+DEAL::  line 39: 0.50000
 DEAL::not identity constrained: 121
-DEAL::  line 37: 0.50
-DEAL::  line 40: 0.50
+DEAL::  line 37: 0.50000
+DEAL::  line 40: 0.50000
 DEAL::not identity constrained: 122
-DEAL::  line 38: 0.50
-DEAL::  line 41: 0.50
+DEAL::  line 38: 0.50000
+DEAL::  line 41: 0.50000
 DEAL::not identity constrained: 123
-DEAL::  line 12: 0.50
-DEAL::  line 36: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 36: 0.50000
 DEAL::not identity constrained: 124
-DEAL::  line 13: 0.50
-DEAL::  line 37: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 37: 0.50000
 DEAL::not identity constrained: 125
-DEAL::  line 14: 0.50
-DEAL::  line 38: 0.50
+DEAL::  line 14: 0.50000
+DEAL::  line 38: 0.50000
 DEAL::not identity constrained: 126
-DEAL::  line 12: 0.25
-DEAL::  line 15: 0.25
-DEAL::  line 36: 0.25
-DEAL::  line 39: 0.25
+DEAL::  line 12: 0.25000
+DEAL::  line 15: 0.25000
+DEAL::  line 36: 0.25000
+DEAL::  line 39: 0.25000
 DEAL::not identity constrained: 127
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
-DEAL::  line 37: 0.25
-DEAL::  line 40: 0.25
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
+DEAL::  line 37: 0.25000
+DEAL::  line 40: 0.25000
 DEAL::not identity constrained: 128
-DEAL::  line 14: 0.25
-DEAL::  line 17: 0.25
-DEAL::  line 38: 0.25
-DEAL::  line 41: 0.25
+DEAL::  line 14: 0.25000
+DEAL::  line 17: 0.25000
+DEAL::  line 38: 0.25000
+DEAL::  line 41: 0.25000
 DEAL::not identity constrained: 129
-DEAL::  line 15: 0.50
-DEAL::  line 39: 0.50
+DEAL::  line 15: 0.50000
+DEAL::  line 39: 0.50000
 DEAL::not identity constrained: 130
-DEAL::  line 16: 0.50
-DEAL::  line 40: 0.50
+DEAL::  line 16: 0.50000
+DEAL::  line 40: 0.50000
 DEAL::not identity constrained: 131
-DEAL::  line 17: 0.50
-DEAL::  line 41: 0.50
+DEAL::  line 17: 0.50000
+DEAL::  line 41: 0.50000
 DEAL::not identity constrained: 132
-DEAL::  line 12: 0.50
-DEAL::  line 15: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 15: 0.50000
 DEAL::not identity constrained: 133
-DEAL::  line 13: 0.50
-DEAL::  line 16: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 134
-DEAL::  line 14: 0.50
-DEAL::  line 17: 0.50
+DEAL::  line 14: 0.50000
+DEAL::  line 17: 0.50000
 DEAL::not identity constrained: 159
-DEAL::  line 3: 0.50
-DEAL::  line 24: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 24: 0.50000
 DEAL::not identity constrained: 160
-DEAL::  line 4: 0.50
-DEAL::  line 25: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 25: 0.50000
 DEAL::not identity constrained: 161
-DEAL::  line 5: 0.50
-DEAL::  line 26: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 26: 0.50000
 DEAL::not identity constrained: 162
-DEAL::  line 3: 0.25
-DEAL::  line 15: 0.25
-DEAL::  line 24: 0.25
-DEAL::  line 30: 0.25
+DEAL::  line 3: 0.25000
+DEAL::  line 15: 0.25000
+DEAL::  line 24: 0.25000
+DEAL::  line 30: 0.25000
 DEAL::not identity constrained: 163
-DEAL::  line 4: 0.25
-DEAL::  line 16: 0.25
-DEAL::  line 25: 0.25
-DEAL::  line 31: 0.25
+DEAL::  line 4: 0.25000
+DEAL::  line 16: 0.25000
+DEAL::  line 25: 0.25000
+DEAL::  line 31: 0.25000
 DEAL::not identity constrained: 164
-DEAL::  line 5: 0.25
-DEAL::  line 17: 0.25
-DEAL::  line 26: 0.25
-DEAL::  line 32: 0.25
+DEAL::  line 5: 0.25000
+DEAL::  line 17: 0.25000
+DEAL::  line 26: 0.25000
+DEAL::  line 32: 0.25000
 DEAL::not identity constrained: 165
-DEAL::  line 24: 0.50
-DEAL::  line 30: 0.50
+DEAL::  line 24: 0.50000
+DEAL::  line 30: 0.50000
 DEAL::not identity constrained: 166
-DEAL::  line 25: 0.50
-DEAL::  line 31: 0.50
+DEAL::  line 25: 0.50000
+DEAL::  line 31: 0.50000
 DEAL::not identity constrained: 167
-DEAL::  line 26: 0.50
-DEAL::  line 32: 0.50
+DEAL::  line 26: 0.50000
+DEAL::  line 32: 0.50000
 DEAL::not identity constrained: 168
-DEAL::  line 39: 0.50
-DEAL::  line 54: 0.50
+DEAL::  line 39: 0.50000
+DEAL::  line 54: 0.50000
 DEAL::not identity constrained: 169
-DEAL::  line 40: 0.50
-DEAL::  line 55: 0.50
+DEAL::  line 40: 0.50000
+DEAL::  line 55: 0.50000
 DEAL::not identity constrained: 170
-DEAL::  line 41: 0.50
-DEAL::  line 56: 0.50
+DEAL::  line 41: 0.50000
+DEAL::  line 56: 0.50000
 DEAL::not identity constrained: 171
-DEAL::  line 15: 0.25
-DEAL::  line 30: 0.25
-DEAL::  line 39: 0.25
-DEAL::  line 54: 0.25
+DEAL::  line 15: 0.25000
+DEAL::  line 30: 0.25000
+DEAL::  line 39: 0.25000
+DEAL::  line 54: 0.25000
 DEAL::not identity constrained: 172
-DEAL::  line 16: 0.25
-DEAL::  line 31: 0.25
-DEAL::  line 40: 0.25
-DEAL::  line 55: 0.25
+DEAL::  line 16: 0.25000
+DEAL::  line 31: 0.25000
+DEAL::  line 40: 0.25000
+DEAL::  line 55: 0.25000
 DEAL::not identity constrained: 173
-DEAL::  line 17: 0.25
-DEAL::  line 32: 0.25
-DEAL::  line 41: 0.25
-DEAL::  line 56: 0.25
+DEAL::  line 17: 0.25000
+DEAL::  line 32: 0.25000
+DEAL::  line 41: 0.25000
+DEAL::  line 56: 0.25000
 DEAL::not identity constrained: 174
-DEAL::  line 30: 0.50
-DEAL::  line 54: 0.50
+DEAL::  line 30: 0.50000
+DEAL::  line 54: 0.50000
 DEAL::not identity constrained: 175
-DEAL::  line 31: 0.50
-DEAL::  line 55: 0.50
+DEAL::  line 31: 0.50000
+DEAL::  line 55: 0.50000
 DEAL::not identity constrained: 176
-DEAL::  line 32: 0.50
-DEAL::  line 56: 0.50
+DEAL::  line 32: 0.50000
+DEAL::  line 56: 0.50000
 DEAL::not identity constrained: 177
-DEAL::  line 15: 0.50
-DEAL::  line 30: 0.50
+DEAL::  line 15: 0.50000
+DEAL::  line 30: 0.50000
 DEAL::not identity constrained: 178
-DEAL::  line 16: 0.50
-DEAL::  line 31: 0.50
+DEAL::  line 16: 0.50000
+DEAL::  line 31: 0.50000
 DEAL::not identity constrained: 179
-DEAL::  line 17: 0.50
-DEAL::  line 32: 0.50
+DEAL::  line 17: 0.50000
+DEAL::  line 32: 0.50000
 DEAL::Checking FE_DGQ<3>(2)2 in 3d:
 DEAL::0
 DEAL::0
@@ -4087,23 +4087,23 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::6
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 108
-DEAL::  line 0: 0.50
-DEAL::  line 3: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 3: 0.50000
 DEAL::not identity constrained: 109
-DEAL::  line 1: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 110
-DEAL::  line 2: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 195
-DEAL::  line 3: 0.50
-DEAL::  line 30: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 30: 0.50000
 DEAL::not identity constrained: 196
-DEAL::  line 4: 0.50
-DEAL::  line 31: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 31: 0.50000
 DEAL::not identity constrained: 197
-DEAL::  line 5: 0.50
-DEAL::  line 32: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 32: 0.50000
 DEAL::Checking FE_DGQ<2>(2)2FE_DGP<2>(3)1 in 2d:
 DEAL::0
 DEAL::0
@@ -4126,41 +4126,41 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::12
 DEAL::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 112
-DEAL::  line 0: 0.50
-DEAL::  line 6: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 6: 0.50000
 DEAL::not identity constrained: 113
-DEAL::  line 1: 0.50
-DEAL::  line 7: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 7: 0.50000
 DEAL::not identity constrained: 114
-DEAL::  line 2: 0.50
-DEAL::  line 8: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 8: 0.50000
 DEAL::not identity constrained: 115
-DEAL::  line 3: 0.50
-DEAL::  line 9: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 9: 0.50000
 DEAL::not identity constrained: 116
-DEAL::  line 4: 0.50
-DEAL::  line 10: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 10: 0.50000
 DEAL::not identity constrained: 117
-DEAL::  line 5: 0.50
-DEAL::  line 11: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 11: 0.50000
 DEAL::not identity constrained: 182
-DEAL::  line 6: 0.50
-DEAL::  line 34: 0.50
+DEAL::  line 6: 0.50000
+DEAL::  line 34: 0.50000
 DEAL::not identity constrained: 183
-DEAL::  line 7: 0.50
-DEAL::  line 35: 0.50
+DEAL::  line 7: 0.50000
+DEAL::  line 35: 0.50000
 DEAL::not identity constrained: 184
-DEAL::  line 8: 0.50
-DEAL::  line 36: 0.50
+DEAL::  line 8: 0.50000
+DEAL::  line 36: 0.50000
 DEAL::not identity constrained: 185
-DEAL::  line 9: 0.50
-DEAL::  line 37: 0.50
+DEAL::  line 9: 0.50000
+DEAL::  line 37: 0.50000
 DEAL::not identity constrained: 186
-DEAL::  line 10: 0.50
-DEAL::  line 38: 0.50
+DEAL::  line 10: 0.50000
+DEAL::  line 38: 0.50000
 DEAL::not identity constrained: 187
-DEAL::  line 11: 0.50
-DEAL::  line 39: 0.50
+DEAL::  line 11: 0.50000
+DEAL::  line 39: 0.50000
 DEAL::Checking FE_DGQ<2>(2)2FE_DGQ<2>(2)2FE_Q<2>(3)3 in 2d:
 DEAL::30
 DEAL::4
@@ -4168,119 +4168,119 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::30
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101010111111111111111111111111111111111111111111111111111111010101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101010111111111111111111111111111111111111111111111111111111010101111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 312
-DEAL::  line 0: -0.062
-DEAL::  line 3: -0.062
-DEAL::  line 24: 0.56
-DEAL::  line 25: 0.56
+DEAL::  line 0: -0.062500
+DEAL::  line 3: -0.062500
+DEAL::  line 24: 0.56250
+DEAL::  line 25: 0.56250
 DEAL::not identity constrained: 313
-DEAL::  line 1: -0.062
-DEAL::  line 4: -0.062
-DEAL::  line 26: 0.56
-DEAL::  line 27: 0.56
+DEAL::  line 1: -0.062500
+DEAL::  line 4: -0.062500
+DEAL::  line 26: 0.56250
+DEAL::  line 27: 0.56250
 DEAL::not identity constrained: 314
-DEAL::  line 2: -0.062
-DEAL::  line 5: -0.062
-DEAL::  line 28: 0.56
-DEAL::  line 29: 0.56
+DEAL::  line 2: -0.062500
+DEAL::  line 5: -0.062500
+DEAL::  line 28: 0.56250
+DEAL::  line 29: 0.56250
 DEAL::not identity constrained: 327
-DEAL::  line 0: 0.31
-DEAL::  line 3: 0.062
-DEAL::  line 24: 0.94
-DEAL::  line 25: -0.31
+DEAL::  line 0: 0.31250
+DEAL::  line 3: 0.062500
+DEAL::  line 24: 0.93750
+DEAL::  line 25: -0.31250
 DEAL::not identity constrained: 328
-DEAL::  line 24: 1.0
+DEAL::  line 24: 1.0000
 DEAL::not identity constrained: 329
-DEAL::  line 1: 0.31
-DEAL::  line 4: 0.062
-DEAL::  line 26: 0.94
-DEAL::  line 27: -0.31
+DEAL::  line 1: 0.31250
+DEAL::  line 4: 0.062500
+DEAL::  line 26: 0.93750
+DEAL::  line 27: -0.31250
 DEAL::not identity constrained: 330
-DEAL::  line 26: 1.0
+DEAL::  line 26: 1.0000
 DEAL::not identity constrained: 331
-DEAL::  line 2: 0.31
-DEAL::  line 5: 0.062
-DEAL::  line 28: 0.94
-DEAL::  line 29: -0.31
+DEAL::  line 2: 0.31250
+DEAL::  line 5: 0.062500
+DEAL::  line 28: 0.93750
+DEAL::  line 29: -0.31250
 DEAL::not identity constrained: 332
-DEAL::  line 28: 1.0
+DEAL::  line 28: 1.0000
 DEAL::not identity constrained: 387
-DEAL::  line 25: 1.0
+DEAL::  line 25: 1.0000
 DEAL::not identity constrained: 388
-DEAL::  line 0: 0.063
-DEAL::  line 3: 0.31
-DEAL::  line 24: -0.31
-DEAL::  line 25: 0.94
+DEAL::  line 0: 0.062500
+DEAL::  line 3: 0.31250
+DEAL::  line 24: -0.31250
+DEAL::  line 25: 0.93750
 DEAL::not identity constrained: 389
-DEAL::  line 27: 1.0
+DEAL::  line 27: 1.0000
 DEAL::not identity constrained: 390
-DEAL::  line 1: 0.063
-DEAL::  line 4: 0.31
-DEAL::  line 26: -0.31
-DEAL::  line 27: 0.94
+DEAL::  line 1: 0.062500
+DEAL::  line 4: 0.31250
+DEAL::  line 26: -0.31250
+DEAL::  line 27: 0.93750
 DEAL::not identity constrained: 391
-DEAL::  line 29: 1.0
+DEAL::  line 29: 1.0000
 DEAL::not identity constrained: 392
-DEAL::  line 2: 0.063
-DEAL::  line 5: 0.31
-DEAL::  line 28: -0.31
-DEAL::  line 29: 0.94
+DEAL::  line 2: 0.062500
+DEAL::  line 5: 0.31250
+DEAL::  line 28: -0.31250
+DEAL::  line 29: 0.93750
 DEAL::not identity constrained: 585
-DEAL::  line 3: -0.062
-DEAL::  line 84: -0.062
-DEAL::  line 96: 0.56
-DEAL::  line 97: 0.56
+DEAL::  line 3: -0.062500
+DEAL::  line 84: -0.062500
+DEAL::  line 96: 0.56250
+DEAL::  line 97: 0.56250
 DEAL::not identity constrained: 586
-DEAL::  line 4: -0.062
-DEAL::  line 85: -0.062
-DEAL::  line 98: 0.56
-DEAL::  line 99: 0.56
+DEAL::  line 4: -0.062500
+DEAL::  line 85: -0.062500
+DEAL::  line 98: 0.56250
+DEAL::  line 99: 0.56250
 DEAL::not identity constrained: 587
-DEAL::  line 5: -0.062
-DEAL::  line 86: -0.062
-DEAL::  line 100: 0.56
-DEAL::  line 101: 0.56
+DEAL::  line 5: -0.062500
+DEAL::  line 86: -0.062500
+DEAL::  line 100: 0.56250
+DEAL::  line 101: 0.56250
 DEAL::not identity constrained: 594
-DEAL::  line 3: 0.31
-DEAL::  line 84: 0.062
-DEAL::  line 96: 0.94
-DEAL::  line 97: -0.31
+DEAL::  line 3: 0.31250
+DEAL::  line 84: 0.062500
+DEAL::  line 96: 0.93750
+DEAL::  line 97: -0.31250
 DEAL::not identity constrained: 595
-DEAL::  line 96: 1.0
+DEAL::  line 96: 1.0000
 DEAL::not identity constrained: 596
-DEAL::  line 4: 0.31
-DEAL::  line 85: 0.062
-DEAL::  line 98: 0.94
-DEAL::  line 99: -0.31
+DEAL::  line 4: 0.31250
+DEAL::  line 85: 0.062500
+DEAL::  line 98: 0.93750
+DEAL::  line 99: -0.31250
 DEAL::not identity constrained: 597
-DEAL::  line 98: 1.0
+DEAL::  line 98: 1.0000
 DEAL::not identity constrained: 598
-DEAL::  line 5: 0.31
-DEAL::  line 86: 0.062
-DEAL::  line 100: 0.94
-DEAL::  line 101: -0.31
+DEAL::  line 5: 0.31250
+DEAL::  line 86: 0.062500
+DEAL::  line 100: 0.93750
+DEAL::  line 101: -0.31250
 DEAL::not identity constrained: 599
-DEAL::  line 100: 1.0
+DEAL::  line 100: 1.0000
 DEAL::not identity constrained: 654
-DEAL::  line 97: 1.0
+DEAL::  line 97: 1.0000
 DEAL::not identity constrained: 655
-DEAL::  line 3: 0.063
-DEAL::  line 84: 0.31
-DEAL::  line 96: -0.31
-DEAL::  line 97: 0.94
+DEAL::  line 3: 0.062500
+DEAL::  line 84: 0.31250
+DEAL::  line 96: -0.31250
+DEAL::  line 97: 0.93750
 DEAL::not identity constrained: 656
-DEAL::  line 99: 1.0
+DEAL::  line 99: 1.0000
 DEAL::not identity constrained: 657
-DEAL::  line 4: 0.063
-DEAL::  line 85: 0.31
-DEAL::  line 98: -0.31
-DEAL::  line 99: 0.94
+DEAL::  line 4: 0.062500
+DEAL::  line 85: 0.31250
+DEAL::  line 98: -0.31250
+DEAL::  line 99: 0.93750
 DEAL::not identity constrained: 658
-DEAL::  line 101: 1.0
+DEAL::  line 101: 1.0000
 DEAL::not identity constrained: 659
-DEAL::  line 5: 0.063
-DEAL::  line 86: 0.31
-DEAL::  line 100: -0.31
-DEAL::  line 101: 0.94
+DEAL::  line 5: 0.062500
+DEAL::  line 86: 0.31250
+DEAL::  line 100: -0.31250
+DEAL::  line 101: 0.93750
 DEAL::Checking FE_DGP<2>(3)1FE_DGP<2>(3)1FE_Q<2>(2)3 in 2d:
 DEAL::18
 DEAL::3
@@ -4288,65 +4288,65 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::18
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 170
-DEAL::  line 18: 1.0
+DEAL::  line 18: 1.0000
 DEAL::not identity constrained: 171
-DEAL::  line 19: 1.0
+DEAL::  line 19: 1.0000
 DEAL::not identity constrained: 172
-DEAL::  line 20: 1.0
+DEAL::  line 20: 1.0000
 DEAL::not identity constrained: 179
-DEAL::  line 0: 0.38
-DEAL::  line 3: -0.12
-DEAL::  line 18: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 3: -0.12500
+DEAL::  line 18: 0.75000
 DEAL::not identity constrained: 180
-DEAL::  line 1: 0.38
-DEAL::  line 4: -0.12
-DEAL::  line 19: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 4: -0.12500
+DEAL::  line 19: 0.75000
 DEAL::not identity constrained: 181
-DEAL::  line 2: 0.38
-DEAL::  line 5: -0.12
-DEAL::  line 20: 0.75
+DEAL::  line 2: 0.37500
+DEAL::  line 5: -0.12500
+DEAL::  line 20: 0.75000
 DEAL::not identity constrained: 208
-DEAL::  line 0: -0.12
-DEAL::  line 3: 0.38
-DEAL::  line 18: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 3: 0.37500
+DEAL::  line 18: 0.75000
 DEAL::not identity constrained: 209
-DEAL::  line 1: -0.12
-DEAL::  line 4: 0.38
-DEAL::  line 19: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 4: 0.37500
+DEAL::  line 19: 0.75000
 DEAL::not identity constrained: 210
-DEAL::  line 2: -0.12
-DEAL::  line 5: 0.38
-DEAL::  line 20: 0.75
+DEAL::  line 2: -0.12500
+DEAL::  line 5: 0.37500
+DEAL::  line 20: 0.75000
 DEAL::not identity constrained: 310
-DEAL::  line 56: 1.0
+DEAL::  line 56: 1.0000
 DEAL::not identity constrained: 311
-DEAL::  line 57: 1.0
+DEAL::  line 57: 1.0000
 DEAL::not identity constrained: 312
-DEAL::  line 58: 1.0
+DEAL::  line 58: 1.0000
 DEAL::not identity constrained: 316
-DEAL::  line 3: 0.38
-DEAL::  line 47: -0.12
-DEAL::  line 56: 0.75
+DEAL::  line 3: 0.37500
+DEAL::  line 47: -0.12500
+DEAL::  line 56: 0.75000
 DEAL::not identity constrained: 317
-DEAL::  line 4: 0.38
-DEAL::  line 48: -0.12
-DEAL::  line 57: 0.75
+DEAL::  line 4: 0.37500
+DEAL::  line 48: -0.12500
+DEAL::  line 57: 0.75000
 DEAL::not identity constrained: 318
-DEAL::  line 5: 0.38
-DEAL::  line 49: -0.12
-DEAL::  line 58: 0.75
+DEAL::  line 5: 0.37500
+DEAL::  line 49: -0.12500
+DEAL::  line 58: 0.75000
 DEAL::not identity constrained: 345
-DEAL::  line 3: -0.12
-DEAL::  line 47: 0.38
-DEAL::  line 56: 0.75
+DEAL::  line 3: -0.12500
+DEAL::  line 47: 0.37500
+DEAL::  line 56: 0.75000
 DEAL::not identity constrained: 346
-DEAL::  line 4: -0.12
-DEAL::  line 48: 0.38
-DEAL::  line 57: 0.75
+DEAL::  line 4: -0.12500
+DEAL::  line 48: 0.37500
+DEAL::  line 57: 0.75000
 DEAL::not identity constrained: 347
-DEAL::  line 5: -0.12
-DEAL::  line 49: 0.38
-DEAL::  line 58: 0.75
+DEAL::  line 5: -0.12500
+DEAL::  line 49: 0.37500
+DEAL::  line 58: 0.75000
 DEAL::Checking FE_DGQ<3>(1)3FE_DGP<3>(3)1FE_Q<3>(1)3 in 3d:
 DEAL::48
 DEAL::4
@@ -4354,173 +4354,173 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::48
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 460
-DEAL::  line 0: 0.50
-DEAL::  line 3: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 3: 0.50000
 DEAL::not identity constrained: 461
-DEAL::  line 1: 0.50
-DEAL::  line 4: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 462
-DEAL::  line 2: 0.50
-DEAL::  line 5: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 463
-DEAL::  line 0: 0.50
-DEAL::  line 12: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 12: 0.50000
 DEAL::not identity constrained: 464
-DEAL::  line 1: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 465
-DEAL::  line 2: 0.50
-DEAL::  line 14: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 14: 0.50000
 DEAL::not identity constrained: 466
-DEAL::  line 0: 0.25
-DEAL::  line 3: 0.25
-DEAL::  line 12: 0.25
-DEAL::  line 15: 0.25
+DEAL::  line 0: 0.25000
+DEAL::  line 3: 0.25000
+DEAL::  line 12: 0.25000
+DEAL::  line 15: 0.25000
 DEAL::not identity constrained: 467
-DEAL::  line 1: 0.25
-DEAL::  line 4: 0.25
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
+DEAL::  line 1: 0.25000
+DEAL::  line 4: 0.25000
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
 DEAL::not identity constrained: 468
-DEAL::  line 2: 0.25
-DEAL::  line 5: 0.25
-DEAL::  line 14: 0.25
-DEAL::  line 17: 0.25
+DEAL::  line 2: 0.25000
+DEAL::  line 5: 0.25000
+DEAL::  line 14: 0.25000
+DEAL::  line 17: 0.25000
 DEAL::not identity constrained: 513
-DEAL::  line 3: 0.50
-DEAL::  line 15: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 15: 0.50000
 DEAL::not identity constrained: 514
-DEAL::  line 4: 0.50
-DEAL::  line 16: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 515
-DEAL::  line 5: 0.50
-DEAL::  line 17: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 17: 0.50000
 DEAL::not identity constrained: 560
-DEAL::  line 124: 0.50
-DEAL::  line 127: 0.50
+DEAL::  line 124: 0.50000
+DEAL::  line 127: 0.50000
 DEAL::not identity constrained: 561
-DEAL::  line 125: 0.50
-DEAL::  line 128: 0.50
+DEAL::  line 125: 0.50000
+DEAL::  line 128: 0.50000
 DEAL::not identity constrained: 562
-DEAL::  line 126: 0.50
-DEAL::  line 129: 0.50
+DEAL::  line 126: 0.50000
+DEAL::  line 129: 0.50000
 DEAL::not identity constrained: 563
-DEAL::  line 12: 0.50
-DEAL::  line 124: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 124: 0.50000
 DEAL::not identity constrained: 564
-DEAL::  line 13: 0.50
-DEAL::  line 125: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 125: 0.50000
 DEAL::not identity constrained: 565
-DEAL::  line 14: 0.50
-DEAL::  line 126: 0.50
+DEAL::  line 14: 0.50000
+DEAL::  line 126: 0.50000
 DEAL::not identity constrained: 566
-DEAL::  line 12: 0.25
-DEAL::  line 15: 0.25
-DEAL::  line 124: 0.25
-DEAL::  line 127: 0.25
+DEAL::  line 12: 0.25000
+DEAL::  line 15: 0.25000
+DEAL::  line 124: 0.25000
+DEAL::  line 127: 0.25000
 DEAL::not identity constrained: 567
-DEAL::  line 13: 0.25
-DEAL::  line 16: 0.25
-DEAL::  line 125: 0.25
-DEAL::  line 128: 0.25
+DEAL::  line 13: 0.25000
+DEAL::  line 16: 0.25000
+DEAL::  line 125: 0.25000
+DEAL::  line 128: 0.25000
 DEAL::not identity constrained: 568
-DEAL::  line 14: 0.25
-DEAL::  line 17: 0.25
-DEAL::  line 126: 0.25
-DEAL::  line 129: 0.25
+DEAL::  line 14: 0.25000
+DEAL::  line 17: 0.25000
+DEAL::  line 126: 0.25000
+DEAL::  line 129: 0.25000
 DEAL::not identity constrained: 613
-DEAL::  line 15: 0.50
-DEAL::  line 127: 0.50
+DEAL::  line 15: 0.50000
+DEAL::  line 127: 0.50000
 DEAL::not identity constrained: 614
-DEAL::  line 16: 0.50
-DEAL::  line 128: 0.50
+DEAL::  line 16: 0.50000
+DEAL::  line 128: 0.50000
 DEAL::not identity constrained: 615
-DEAL::  line 17: 0.50
-DEAL::  line 129: 0.50
+DEAL::  line 17: 0.50000
+DEAL::  line 129: 0.50000
 DEAL::not identity constrained: 660
-DEAL::  line 12: 0.50
-DEAL::  line 15: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 15: 0.50000
 DEAL::not identity constrained: 661
-DEAL::  line 13: 0.50
-DEAL::  line 16: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 662
-DEAL::  line 14: 0.50
-DEAL::  line 17: 0.50
+DEAL::  line 14: 0.50000
+DEAL::  line 17: 0.50000
 DEAL::not identity constrained: 863
-DEAL::  line 3: 0.50
-DEAL::  line 68: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 68: 0.50000
 DEAL::not identity constrained: 864
-DEAL::  line 4: 0.50
-DEAL::  line 69: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 69: 0.50000
 DEAL::not identity constrained: 865
-DEAL::  line 5: 0.50
-DEAL::  line 70: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 70: 0.50000
 DEAL::not identity constrained: 866
-DEAL::  line 3: 0.25
-DEAL::  line 15: 0.25
-DEAL::  line 68: 0.25
-DEAL::  line 74: 0.25
+DEAL::  line 3: 0.25000
+DEAL::  line 15: 0.25000
+DEAL::  line 68: 0.25000
+DEAL::  line 74: 0.25000
 DEAL::not identity constrained: 867
-DEAL::  line 4: 0.25
-DEAL::  line 16: 0.25
-DEAL::  line 69: 0.25
-DEAL::  line 75: 0.25
+DEAL::  line 4: 0.25000
+DEAL::  line 16: 0.25000
+DEAL::  line 69: 0.25000
+DEAL::  line 75: 0.25000
 DEAL::not identity constrained: 868
-DEAL::  line 5: 0.25
-DEAL::  line 17: 0.25
-DEAL::  line 70: 0.25
-DEAL::  line 76: 0.25
+DEAL::  line 5: 0.25000
+DEAL::  line 17: 0.25000
+DEAL::  line 70: 0.25000
+DEAL::  line 76: 0.25000
 DEAL::not identity constrained: 913
-DEAL::  line 68: 0.50
-DEAL::  line 74: 0.50
+DEAL::  line 68: 0.50000
+DEAL::  line 74: 0.50000
 DEAL::not identity constrained: 914
-DEAL::  line 69: 0.50
-DEAL::  line 75: 0.50
+DEAL::  line 69: 0.50000
+DEAL::  line 75: 0.50000
 DEAL::not identity constrained: 915
-DEAL::  line 70: 0.50
-DEAL::  line 76: 0.50
+DEAL::  line 70: 0.50000
+DEAL::  line 76: 0.50000
 DEAL::not identity constrained: 960
-DEAL::  line 127: 0.50
-DEAL::  line 186: 0.50
+DEAL::  line 127: 0.50000
+DEAL::  line 186: 0.50000
 DEAL::not identity constrained: 961
-DEAL::  line 128: 0.50
-DEAL::  line 187: 0.50
+DEAL::  line 128: 0.50000
+DEAL::  line 187: 0.50000
 DEAL::not identity constrained: 962
-DEAL::  line 129: 0.50
-DEAL::  line 188: 0.50
+DEAL::  line 129: 0.50000
+DEAL::  line 188: 0.50000
 DEAL::not identity constrained: 963
-DEAL::  line 15: 0.25
-DEAL::  line 74: 0.25
-DEAL::  line 127: 0.25
-DEAL::  line 186: 0.25
+DEAL::  line 15: 0.25000
+DEAL::  line 74: 0.25000
+DEAL::  line 127: 0.25000
+DEAL::  line 186: 0.25000
 DEAL::not identity constrained: 964
-DEAL::  line 16: 0.25
-DEAL::  line 75: 0.25
-DEAL::  line 128: 0.25
-DEAL::  line 187: 0.25
+DEAL::  line 16: 0.25000
+DEAL::  line 75: 0.25000
+DEAL::  line 128: 0.25000
+DEAL::  line 187: 0.25000
 DEAL::not identity constrained: 965
-DEAL::  line 17: 0.25
-DEAL::  line 76: 0.25
-DEAL::  line 129: 0.25
-DEAL::  line 188: 0.25
+DEAL::  line 17: 0.25000
+DEAL::  line 76: 0.25000
+DEAL::  line 129: 0.25000
+DEAL::  line 188: 0.25000
 DEAL::not identity constrained: 1010
-DEAL::  line 74: 0.50
-DEAL::  line 186: 0.50
+DEAL::  line 74: 0.50000
+DEAL::  line 186: 0.50000
 DEAL::not identity constrained: 1011
-DEAL::  line 75: 0.50
-DEAL::  line 187: 0.50
+DEAL::  line 75: 0.50000
+DEAL::  line 187: 0.50000
 DEAL::not identity constrained: 1012
-DEAL::  line 76: 0.50
-DEAL::  line 188: 0.50
+DEAL::  line 76: 0.50000
+DEAL::  line 188: 0.50000
 DEAL::not identity constrained: 1057
-DEAL::  line 15: 0.50
-DEAL::  line 74: 0.50
+DEAL::  line 15: 0.50000
+DEAL::  line 74: 0.50000
 DEAL::not identity constrained: 1058
-DEAL::  line 16: 0.50
-DEAL::  line 75: 0.50
+DEAL::  line 16: 0.50000
+DEAL::  line 75: 0.50000
 DEAL::not identity constrained: 1059
-DEAL::  line 17: 0.50
-DEAL::  line 76: 0.50
+DEAL::  line 17: 0.50000
+DEAL::  line 76: 0.50000
 DEAL::Checking (FESystem<2>(FE_Q<2>(1),3))3FE_DGQ<2>(0)1FE_Q<2>(1)3 in 2d:
 DEAL::24
 DEAL::2
@@ -4528,77 +4528,77 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::24
 DEAL::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 148
-DEAL::  line 0: 0.50
-DEAL::  line 12: 0.50
+DEAL::  line 0: 0.50000
+DEAL::  line 12: 0.50000
 DEAL::not identity constrained: 149
-DEAL::  line 1: 0.50
-DEAL::  line 13: 0.50
+DEAL::  line 1: 0.50000
+DEAL::  line 13: 0.50000
 DEAL::not identity constrained: 150
-DEAL::  line 2: 0.50
-DEAL::  line 14: 0.50
+DEAL::  line 2: 0.50000
+DEAL::  line 14: 0.50000
 DEAL::not identity constrained: 151
-DEAL::  line 3: 0.50
-DEAL::  line 15: 0.50
+DEAL::  line 3: 0.50000
+DEAL::  line 15: 0.50000
 DEAL::not identity constrained: 152
-DEAL::  line 4: 0.50
-DEAL::  line 16: 0.50
+DEAL::  line 4: 0.50000
+DEAL::  line 16: 0.50000
 DEAL::not identity constrained: 153
-DEAL::  line 5: 0.50
-DEAL::  line 17: 0.50
+DEAL::  line 5: 0.50000
+DEAL::  line 17: 0.50000
 DEAL::not identity constrained: 154
-DEAL::  line 6: 0.50
-DEAL::  line 18: 0.50
+DEAL::  line 6: 0.50000
+DEAL::  line 18: 0.50000
 DEAL::not identity constrained: 155
-DEAL::  line 7: 0.50
-DEAL::  line 19: 0.50
+DEAL::  line 7: 0.50000
+DEAL::  line 19: 0.50000
 DEAL::not identity constrained: 156
-DEAL::  line 8: 0.50
-DEAL::  line 20: 0.50
+DEAL::  line 8: 0.50000
+DEAL::  line 20: 0.50000
 DEAL::not identity constrained: 157
-DEAL::  line 9: 0.50
-DEAL::  line 21: 0.50
+DEAL::  line 9: 0.50000
+DEAL::  line 21: 0.50000
 DEAL::not identity constrained: 158
-DEAL::  line 10: 0.50
-DEAL::  line 22: 0.50
+DEAL::  line 10: 0.50000
+DEAL::  line 22: 0.50000
 DEAL::not identity constrained: 159
-DEAL::  line 11: 0.50
-DEAL::  line 23: 0.50
+DEAL::  line 11: 0.50000
+DEAL::  line 23: 0.50000
 DEAL::not identity constrained: 212
-DEAL::  line 12: 0.50
-DEAL::  line 49: 0.50
+DEAL::  line 12: 0.50000
+DEAL::  line 49: 0.50000
 DEAL::not identity constrained: 213
-DEAL::  line 13: 0.50
-DEAL::  line 50: 0.50
+DEAL::  line 13: 0.50000
+DEAL::  line 50: 0.50000
 DEAL::not identity constrained: 214
-DEAL::  line 14: 0.50
-DEAL::  line 51: 0.50
+DEAL::  line 14: 0.50000
+DEAL::  line 51: 0.50000
 DEAL::not identity constrained: 215
-DEAL::  line 15: 0.50
-DEAL::  line 52: 0.50
+DEAL::  line 15: 0.50000
+DEAL::  line 52: 0.50000
 DEAL::not identity constrained: 216
-DEAL::  line 16: 0.50
-DEAL::  line 53: 0.50
+DEAL::  line 16: 0.50000
+DEAL::  line 53: 0.50000
 DEAL::not identity constrained: 217
-DEAL::  line 17: 0.50
-DEAL::  line 54: 0.50
+DEAL::  line 17: 0.50000
+DEAL::  line 54: 0.50000
 DEAL::not identity constrained: 218
-DEAL::  line 18: 0.50
-DEAL::  line 55: 0.50
+DEAL::  line 18: 0.50000
+DEAL::  line 55: 0.50000
 DEAL::not identity constrained: 219
-DEAL::  line 19: 0.50
-DEAL::  line 56: 0.50
+DEAL::  line 19: 0.50000
+DEAL::  line 56: 0.50000
 DEAL::not identity constrained: 220
-DEAL::  line 20: 0.50
-DEAL::  line 57: 0.50
+DEAL::  line 20: 0.50000
+DEAL::  line 57: 0.50000
 DEAL::not identity constrained: 221
-DEAL::  line 21: 0.50
-DEAL::  line 58: 0.50
+DEAL::  line 21: 0.50000
+DEAL::  line 58: 0.50000
 DEAL::not identity constrained: 222
-DEAL::  line 22: 0.50
-DEAL::  line 59: 0.50
+DEAL::  line 22: 0.50000
+DEAL::  line 59: 0.50000
 DEAL::not identity constrained: 223
-DEAL::  line 23: 0.50
-DEAL::  line 60: 0.50
+DEAL::  line 23: 0.50000
+DEAL::  line 60: 0.50000
 DEAL::Checking FE_DGQ<2>(3)1FESystem<2>(FE_DGQ<2>(0),3)1FESystem<2>(FE_Q<2>(2),1, FE_DGQ<2>(0),1)2 in 2d:
 DEAL::12
 DEAL::3
@@ -4606,45 +4606,45 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::12
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 144
-DEAL::  line 12: 1.0
+DEAL::  line 12: 1.0000
 DEAL::not identity constrained: 145
-DEAL::  line 13: 1.0
+DEAL::  line 13: 1.0000
 DEAL::not identity constrained: 150
-DEAL::  line 0: 0.38
-DEAL::  line 2: -0.12
-DEAL::  line 12: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 2: -0.12500
+DEAL::  line 12: 0.75000
 DEAL::not identity constrained: 151
-DEAL::  line 1: 0.38
-DEAL::  line 3: -0.12
-DEAL::  line 13: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 3: -0.12500
+DEAL::  line 13: 0.75000
 DEAL::not identity constrained: 177
-DEAL::  line 0: -0.12
-DEAL::  line 2: 0.38
-DEAL::  line 12: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 2: 0.37500
+DEAL::  line 12: 0.75000
 DEAL::not identity constrained: 178
-DEAL::  line 1: -0.12
-DEAL::  line 3: 0.38
-DEAL::  line 13: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 3: 0.37500
+DEAL::  line 13: 0.75000
 DEAL::not identity constrained: 268
-DEAL::  line 45: 1.0
+DEAL::  line 45: 1.0000
 DEAL::not identity constrained: 269
-DEAL::  line 46: 1.0
+DEAL::  line 46: 1.0000
 DEAL::not identity constrained: 272
-DEAL::  line 2: 0.38
-DEAL::  line 39: -0.12
-DEAL::  line 45: 0.75
+DEAL::  line 2: 0.37500
+DEAL::  line 39: -0.12500
+DEAL::  line 45: 0.75000
 DEAL::not identity constrained: 273
-DEAL::  line 3: 0.38
-DEAL::  line 40: -0.12
-DEAL::  line 46: 0.75
+DEAL::  line 3: 0.37500
+DEAL::  line 40: -0.12500
+DEAL::  line 46: 0.75000
 DEAL::not identity constrained: 299
-DEAL::  line 2: -0.12
-DEAL::  line 39: 0.38
-DEAL::  line 45: 0.75
+DEAL::  line 2: -0.12500
+DEAL::  line 39: 0.37500
+DEAL::  line 45: 0.75000
 DEAL::not identity constrained: 300
-DEAL::  line 3: -0.12
-DEAL::  line 40: 0.38
-DEAL::  line 46: 0.75
+DEAL::  line 3: -0.12500
+DEAL::  line 40: 0.37500
+DEAL::  line 46: 0.75000
 DEAL::Checking FE_DGQ<2>(3)1FE_Nedelec<2>(0)2 in 2d:
 DEAL::8
 DEAL::1
@@ -4652,21 +4652,21 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::8
 DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 96
-DEAL::  line 4: 0.50
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 97
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 116
-DEAL::  line 4: 0.50
+DEAL::  line 4: 0.50000
 DEAL::not identity constrained: 117
-DEAL::  line 5: 0.50
+DEAL::  line 5: 0.50000
 DEAL::not identity constrained: 180
-DEAL::  line 26: 0.50
+DEAL::  line 26: 0.50000
 DEAL::not identity constrained: 181
-DEAL::  line 27: 0.50
+DEAL::  line 27: 0.50000
 DEAL::not identity constrained: 200
-DEAL::  line 26: 0.50
+DEAL::  line 26: 0.50000
 DEAL::not identity constrained: 201
-DEAL::  line 27: 0.50
+DEAL::  line 27: 0.50000
 DEAL::Checking FE_Nedelec<2>(0)1FESystem<2>(FE_DGQ<2>(1),2)1FESystem<2>(FE_Q<2>(2),1, FE_Nedelec<2>(0),2)2 in 2d:
 DEAL::32
 DEAL::3
@@ -4674,82 +4674,82 @@ DEAL::11111111111111111111111111111111111111111111111111111111111111111111111111
 DEAL::32
 DEAL::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111
 DEAL::not identity constrained: 162
-DEAL::  line 23: 1.0
+DEAL::  line 23: 1.0000
 DEAL::not identity constrained: 163
-DEAL::  line 26: 1.0
+DEAL::  line 26: 1.0000
 DEAL::not identity constrained: 178
-DEAL::  line 22: 0.50
+DEAL::  line 22: 0.50000
 DEAL::not identity constrained: 179
-DEAL::  line 0: 0.38
-DEAL::  line 2: -0.12
-DEAL::  line 23: 0.75
+DEAL::  line 0: 0.37500
+DEAL::  line 2: -0.12500
+DEAL::  line 23: 0.75000
 DEAL::not identity constrained: 180
-DEAL::  line 24: 0.50
+DEAL::  line 24: 0.50000
 DEAL::not identity constrained: 181
-DEAL::  line 25: 0.50
+DEAL::  line 25: 0.50000
 DEAL::not identity constrained: 182
-DEAL::  line 1: 0.38
-DEAL::  line 3: -0.12
-DEAL::  line 26: 0.75
+DEAL::  line 1: 0.37500
+DEAL::  line 3: -0.12500
+DEAL::  line 26: 0.75000
 DEAL::not identity constrained: 183
-DEAL::  line 27: 0.50
+DEAL::  line 27: 0.50000
 DEAL::not identity constrained: 184
-DEAL::  line 28: 0.50
+DEAL::  line 28: 0.50000
 DEAL::not identity constrained: 202
-DEAL::  line 22: 0.50
+DEAL::  line 22: 0.50000
 DEAL::not identity constrained: 203
-DEAL::  line 0: -0.12
-DEAL::  line 2: 0.38
-DEAL::  line 23: 0.75
+DEAL::  line 0: -0.12500
+DEAL::  line 2: 0.37500
+DEAL::  line 23: 0.75000
 DEAL::not identity constrained: 204
-DEAL::  line 24: 0.50
+DEAL::  line 24: 0.50000
 DEAL::not identity constrained: 205
-DEAL::  line 25: 0.50
+DEAL::  line 25: 0.50000
 DEAL::not identity constrained: 206
-DEAL::  line 1: -0.12
-DEAL::  line 3: 0.38
-DEAL::  line 26: 0.75
+DEAL::  line 1: -0.12500
+DEAL::  line 3: 0.37500
+DEAL::  line 26: 0.75000
 DEAL::not identity constrained: 207
-DEAL::  line 27: 0.50
+DEAL::  line 27: 0.50000
 DEAL::not identity constrained: 208
-DEAL::  line 28: 0.50
+DEAL::  line 28: 0.50000
 DEAL::not identity constrained: 289
-DEAL::  line 58: 1.0
+DEAL::  line 58: 1.0000
 DEAL::not identity constrained: 290
-DEAL::  line 61: 1.0
+DEAL::  line 61: 1.0000
 DEAL::not identity constrained: 298
-DEAL::  line 57: 0.50
+DEAL::  line 57: 0.50000
 DEAL::not identity constrained: 299
-DEAL::  line 2: 0.38
-DEAL::  line 46: -0.12
-DEAL::  line 58: 0.75
+DEAL::  line 2: 0.37500
+DEAL::  line 46: -0.12500
+DEAL::  line 58: 0.75000
 DEAL::not identity constrained: 300
-DEAL::  line 59: 0.50
+DEAL::  line 59: 0.50000
 DEAL::not identity constrained: 301
-DEAL::  line 60: 0.50
+DEAL::  line 60: 0.50000
 DEAL::not identity constrained: 302
-DEAL::  line 3: 0.38
-DEAL::  line 47: -0.12
-DEAL::  line 61: 0.75
+DEAL::  line 3: 0.37500
+DEAL::  line 47: -0.12500
+DEAL::  line 61: 0.75000
 DEAL::not identity constrained: 303
-DEAL::  line 62: 0.50
+DEAL::  line 62: 0.50000
 DEAL::not identity constrained: 304
-DEAL::  line 63: 0.50
+DEAL::  line 63: 0.50000
 DEAL::not identity constrained: 322
-DEAL::  line 57: 0.50
+DEAL::  line 57: 0.50000
 DEAL::not identity constrained: 323
-DEAL::  line 2: -0.12
-DEAL::  line 46: 0.38
-DEAL::  line 58: 0.75
+DEAL::  line 2: -0.12500
+DEAL::  line 46: 0.37500
+DEAL::  line 58: 0.75000
 DEAL::not identity constrained: 324
-DEAL::  line 59: 0.50
+DEAL::  line 59: 0.50000
 DEAL::not identity constrained: 325
-DEAL::  line 60: 0.50
+DEAL::  line 60: 0.50000
 DEAL::not identity constrained: 326
-DEAL::  line 3: -0.12
-DEAL::  line 47: 0.38
-DEAL::  line 61: 0.75
+DEAL::  line 3: -0.12500
+DEAL::  line 47: 0.37500
+DEAL::  line 61: 0.75000
 DEAL::not identity constrained: 327
-DEAL::  line 62: 0.50
+DEAL::  line 62: 0.50000
 DEAL::not identity constrained: 328
-DEAL::  line 63: 0.50
+DEAL::  line 63: 0.50000
index b2af03a4836c199efd4e7e5ce1f4579a63cbb083..d08f3eedd4d7469e08b5071dfa992eb787f22a07 100644 (file)
@@ -51,7 +51,7 @@ check_this (const DoFHandler<dim> &dof_handler)
                                    // third further restrict to
                                    // boundary indicator 0
   {
-    std::set<types::boundary_id_t> boundary_ids;
+    std::set<types::boundary_id> boundary_ids;
     boundary_ids.insert (0);
     DoFTools::extract_boundary_dofs (dof_handler,
                                      component_select,
index 5037e61eab3f45891f37b2fb59bb05daa1d11381..11552d6bde166683b6352534c06e4194b0a0efd5 100644 (file)
@@ -16,7 +16,7 @@
 
 // check
 //   DoFTools::map_dof_to_boundary_indices(const DoFHandler<int>     &,
-//                                         const std::set<types::boundary_id_t> &,
+//                                         const std::set<types::boundary_id> &,
 //                                         std::vector<unsigned int> &)
 
 
@@ -28,7 +28,7 @@ void
 check_this (const DoFHandler<dim> &dof_handler)
 {
   std::vector<unsigned int> map(dof_handler.n_dofs());
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
 
                                    // check for boundary id 0 alone
   boundary_ids.insert (0);
index 135a084f5f357a40e516a527b49a742cde6e897b..428f7fc9d258c7176a8a84000633dced89c58d6f 100644 (file)
@@ -36,7 +36,7 @@ check_this (const DoFHandler<dim> &dof_handler)
   deallog << dof_handler.n_boundary_dofs(fm) << std::endl;
   
                                    // with std::set
-  std::set<types::boundary_id_t> s;
+  std::set<types::boundary_id> s;
   s.insert (0);
   deallog << dof_handler.n_boundary_dofs(s) << std::endl;
   
index 2173bb0c30c592da597aa12515eecdce7d616a42..0d2e046887ebbecc1d495b3eaad000feb0663629 100644 (file)
@@ -36,7 +36,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
   
index 805d3cd67b8364a672dd413608bfc3bf1a11fc22..c2e3f797da1cd2cb09653f7c7fe4ef5ed9d91be7 100644 (file)
@@ -35,7 +35,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
   
index 97c1eb886056588ac38a1d334a15328c05823df5..e88a192fee71de1f3e68d20d3c4f98df547c0591 100644 (file)
@@ -35,7 +35,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
   
index d8476fe0cc046bedf656cbcc933e58c2183d7853..f758ee33944ae170427b95d8772ac2a20cff57a6 100644 (file)
@@ -35,7 +35,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
   
index 035c54513d0b6070276c5ba2c62845e84945d17d..1634cf490cc91c9aa42a80098f4c87b9af58c543 100644 (file)
@@ -35,7 +35,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
 
index 347f3db0d4c1d5741de6a8553ffdb5def5b750eb..ad9204f157d2a82844c46482b1b4e35522e97213 100644 (file)
@@ -35,7 +35,7 @@ check_this (const DoFHandler<dim> &dof_handler)
     return;
   
   std::vector<unsigned int> map (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> set;
+  std::set<types::boundary_id> set;
   set.insert (0);
   DoFTools::map_dof_to_boundary_indices (dof_handler, set, map);
 
index c603d793336f2774bc7fea6862b7b88fd394b843..b865513811e286b902f009a490b3dfb603cf787e 100644 (file)
@@ -16,7 +16,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/dofs/dof_tools.h>
 
index 3e4e9501df38e500acf70850f2908bd9e1ee179f..677b03f4930fba1ad3319bbe3da3b9dfa05cf448 100644 (file)
@@ -51,7 +51,7 @@ check_this (const DoFHandler<dim> &dof_handler)
                                    // third further restrict to
                                    // boundary indicator 0
   {
-    std::set<types::boundary_id_t> boundary_ids;
+    std::set<types::boundary_id> boundary_ids;
     boundary_ids.insert (0);
     DoFTools::extract_dofs_with_support_on_boundary (dof_handler,
                                      component_select,
index f8405718965d0f03101e56c48296df90dc1b8d09..ac9c8dc17a188c09819bc1afdee20dae937b3d19 100644 (file)
@@ -16,7 +16,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/dofs/dof_tools.h>
 
index f337f475767da3403746c8967bceb23ccd7429c0..6148aff77dbb8d316b49430e112a507eee2b68ad 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
@@ -130,7 +130,7 @@ check ()
   MappingQ<dim> mapping(3);
   Quadrature<dim-1> &q_face = get_q_face(function);
 
-  std::map<types::boundary_id_t,const Function<dim>*> neumann_bc;
+  std::map<types::boundary_id,const Function<dim>*> neumann_bc;
   neumann_bc[0] = &function;
   
   Vector<double> v (dof.n_dofs());
index 78557e6fdc3c3b9639479ea65290a56f12fc10a4..6169d491befbba84a12aeaeb925a373549fc79fb 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
@@ -130,7 +130,7 @@ check ()
   MappingQ<dim> mapping(3);
   Quadrature<dim-1> &q_face = get_q_face(function);
 
-  std::map<types::boundary_id_t,const Function<dim>*> neumann_bc;
+  std::map<types::boundary_id,const Function<dim>*> neumann_bc;
   neumann_bc[0] = &function;
   
   Vector<double> v (dof.n_dofs());
index 07141c4c5a4075272e00ea6eb152e18dac0524dc..aa6f013d60fb229395d7d77c97880e0a7b64b6a3 100644 (file)
@@ -36,7 +36,7 @@ char logname[] = "face_orientation_and_fe_nedelec_01/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_abf.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_dgp_monomial.h>
index 33d1f7f0c54a49294f961641167cb608240eba62..dcd014720c5daefcbf3e84ff27fe75ef54e631af 100644 (file)
@@ -39,7 +39,7 @@ char logname[] = "face_orientation_and_fe_q_01/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_abf.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_dgp_monomial.h>
index 689ebb980b25bbea69f8026d47c626fd01c9725f..222b1d681a714c2739ccd4b550f54a62dac59828 100644 (file)
@@ -36,7 +36,7 @@ char logname[] = "face_orientation_and_fe_q_02/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 36602a81828a1659d28b26d15a488348e48b428e..68b3c51860e09b74142b7f2bb240d0febf4a4af8 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
index 67206235eed609b258da4974ac82bd795083253f..d24647f6252bd77c84e4881ef2cc9bc294abbdd6 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 double abs_zero(double a)
 {
index 391a69923aa2be898b01bff1295efb5e982e78ab..a52884f7b2a1f22d84e8b284da08099353ea2a51 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 template <int dim>
index 9a71c69249cb7ca4677760c1d7ce67cc04dacf04..28e84d7573b66ad05d4c62b0d482c489cc83eeb8 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 double abs_zero(double a)
 {
index c5db68e84fcd447e5774f31cd1584a7dda445e8e..13f9ed23ff9a7472b8829001ac6af34cb9c50014 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index 644c6c7e0d7bc85aeabb88ac13e4de53e9df3eac..8fd643889e013b970d44822a2954ff239cfbd0d3 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 template <int dim>
 void test() {
index 108cab104abb92c3ff84e168099303c6841184de..f6ed3fd888d9564351c612ce87d69656d446f228 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 template <int dim>
 void test() {
index 661ab2afbc6966c5c6b3da3e33274c0424b4ab03..e72bf318e5b5043ae747dcd563871b6edf1472f4 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 template <int dim>
index 2288091207c28e552a90ee5678411d5a6ce40e41..4e54b5b1f772b5b798af34e31d5785722a33f3c8 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index d771e159faea10e9dbcdced96401bb945bdbb37a..e72e44bd26657893344c953d0b60d4c062c90944 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 template <int dim>
index 53a194cd28ced9b4c24fc8758003a55a24a0353d..5a092932aa35bcd592f1a877884bc206a3766a39 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index bcffb3fa7d6a29ab8a992232a7acd076a63b43ed..2d7dd824aac65dc198a69bb3160e28b119459d8e 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index a83b729078fa371ccf200e21702ebef3ad581118..91cb53f1db9b41c734832e8cc8c2090ff9689e45 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index 55aa7ff1e98f8ec6186a5106aa5945a58c3f62e5..fff76e745085ae9a0a6356c7a4248601dc791e2e 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/fe_field_function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_system.h>
 
 
index c24dd88235fc232f16638943728d4e7c12a06d35..f571a7c0c0ae4f2b206d60fe2f9dfc2138911896 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/base/function_lib.h>
 #include <deal.II/base/polynomial.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/dofs/dof_handler.h>
index 0cbc2f1559f38535b87934371712c86a3afe9d02..bbe8b80740911be837b5e852cd49a3bd106c524f 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$ 
 //
-//    Copyright (C) 2005 by the deal.II authors
+//    Copyright (C) 2005, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -27,6 +27,17 @@ void
 check_this (const FiniteElement<dim> &fe1,
             const FiniteElement<dim> &fe2)
 {
+                                  // use a higher output accuracy for this
+                                  // test. the reason is that many of the
+                                  // constraints are negative powers of 2,
+                                  // which have exact representations with 3
+                                  // or 4 digits of accuracy, but not with
+                                  // the usual 2 digits (for example, 0.375,
+                                  // which sometimes rounds to 0.38 and
+                                  // sometimes to 0.37, depending on how
+                                  // intermediate errors have accumulated)
+  deallog << std::setprecision (3);
+
   if (fe1.n_components() != 1)
     return;
   if (fe1.n_components() != fe2.n_components())
index 7c9019f0631717834e5cebc9eaf4411a191192c4..43b2862faa67f0479b2ff7d1d3f5dd27d6017a95 100644 (file)
 
 DEAL::Checking Q1 against Q1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking Q1 against Q1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking Q1 against Q1 in 2d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q1 against Q1 in 2d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q1 against Q1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.8
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.83
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q1 against Q1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.8
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.83
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q1 against Q2 in 1d:
-DEAL::1.5 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::1.50 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking Q2 against Q1 in 1d:
-DEAL::1.3 1.7
-DEAL::0.67 -0.33 0.67 -0.33 
+DEAL::1.33 1.67
+DEAL::0.667 -0.333 0.667 -0.333 
 DEAL::Checking Q1 against Q2 in 2d:
-DEAL::2.3 1.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::2.25 1.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q1 in 2d:
-DEAL::1.8 2.8
-DEAL::0.44 0.11 0.44 0.11 0.44 0.11 0.44 0.11 
+DEAL::1.78 2.78
+DEAL::0.444 0.111 0.444 0.111 0.444 0.111 0.444 0.111 
 DEAL::Checking Q1 against Q2 in 3d:
-DEAL::3.4 1.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::3.38 1.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q1 in 3d:
-DEAL::2.4 4.6
-DEAL::0.30 -0.037 0.30 -0.037 0.30 -0.037 0.30 -0.037 0.30 -0.037 0.30 -0.037 0.30 -0.037 0.30 -0.037 
+DEAL::2.37 4.63
+DEAL::0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 0.296 -0.0370 
 DEAL::Checking Q1 against Q3 in 1d:
-DEAL::2.0 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::2.00 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking Q3 against Q1 in 1d:
-DEAL::1.4 1.9
-DEAL::0.40 -0.15 0.40 -0.15 
+DEAL::1.35 1.90
+DEAL::0.400 -0.150 0.400 -0.150 
 DEAL::Checking Q1 against Q3 in 2d:
-DEAL::4.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::4.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q1 in 2d:
-DEAL::1.8 3.6
-DEAL::0.16 0.022 0.16 0.022 0.16 0.022 0.16 0.022 
+DEAL::1.82 3.61
+DEAL::0.160 0.0225 0.160 0.0225 0.160 0.0225 0.160 0.0225 
 DEAL::Checking Q1 against Q3 in 3d:
-DEAL::8.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::8.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q1 in 3d:
-DEAL::2.5 6.9
-DEAL::0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 0.064 -0.0034 
+DEAL::2.46 6.86
+DEAL::0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 0.0640 -0.00338 
 DEAL::Checking Q2 against Q2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking Q2 against Q2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking Q2 against Q2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q2 against Q3 in 1d:
-DEAL::1.8 1.2
-DEAL::1.0 0 1.0 1.0 0.89 0.22 
+DEAL::1.78 1.22
+DEAL::1.00 0 1.00 1.00 0.889 0.222 
 DEAL::Checking Q3 against Q2 in 1d:
-DEAL::1.9 2.4
-DEAL::0.78 0.68 0.77 0.77 0.56 -0.063 
+DEAL::1.91 2.35
+DEAL::0.775 0.675 0.775 0.775 0.562 -0.0625 
 DEAL::Checking Q2 against Q3 in 2d:
-DEAL::3.2 1.5
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 0.89 0.89 0 0 0 0 0 -0.11 0 0.22 
+DEAL::3.16 1.49
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 0.889 0.889 0 0 0 0 0 -0.111 0 0.222 
 DEAL::Checking Q3 against Q2 in 2d:
-DEAL::3.7 5.5
-DEAL::0.60 0.52 0.60 -0.52 0.60 -0.15 0.60 0.15 0.44 0.44 0.13 -0.048 -0.042 -0.014 -0.042 -0.014 -0.035 0.0039 
+DEAL::3.66 5.52
+DEAL::0.601 0.523 0.601 -0.523 0.601 -0.152 0.601 0.152 0.436 0.436 0.127 -0.0484 -0.0422 -0.0141 -0.0422 -0.0141 -0.0352 0.00391 
 DEAL::Checking Q2 against Q3 in 3d:
-DEAL::5.6 1.8
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 0.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.89 0 0 0 0 0 0 0 0.22 0 0 0 0.22 0 0 0 0 0 0 0 0 0 0 
+DEAL::5.62 1.83
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 0.889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.889 0 0 0 0 0 0 0 0.222 0 0 0 0.222 0 0 0 0 0 0 0 0 0 0 
 DEAL::Checking Q3 against Q2 in 3d:
-DEAL::7.0 13.
-DEAL::0.47 0.12 0.47 -0.12 0.47 0.12 0.47 0.12 0.47 0.12 0.47 0.41 0.47 0.12 0.47 0.41 0.34 0.028 0.098 0.028 -0.033 -0.0095 -0.033 0.34 -0.0095 -0.0095 -0.0095 -0.0095 0.028 0.098 0.098 -0.0095 -0.033 -0.0095 0.0095 0.0095 0.0095 0.033 -0.033 -0.038 0.0026 0.0030 0.0026 0.0030 -0.0079 0.0030 -0.027 0.0030 0.0026 0.0030 0.0026 0.00088 0.0022 -0.0002
+DEAL::7.00 13.0
+DEAL::0.465 0.118 0.465 -0.118 0.465 0.118 0.465 0.118 0.465 0.118 0.465 0.405 0.465 0.118 0.465 0.405 0.338 0.0285 0.0981 0.0285 -0.0327 -0.00949 -0.0327 0.338 -0.00949 -0.00949 -0.00949 -0.00949 0.0285 0.0981 0.0981 -0.00949 -0.0327 -0.00949 0.00949 0.00949 0.00949 0.0327 -0.0327 -0.0375 0.00264 0.00303 0.00264 0.00303 -0.00791 0.00303 -0.0272 0.00303 0.00264 0.00303 0.00264 0.000879 0.00220 -0.00024
 DEAL::Checking Q3 against Q3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q3 in 2d:
-DEAL::1.0 1.0
-DEAL::4.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q3 in 2d:
-DEAL::1.0 1.0
-DEAL::4.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q3 in 3d:
-DEAL::1.0 1.0
-DEAL::8.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::8.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Q3 against Q3 in 3d:
-DEAL::1.0 1.0
-DEAL::8.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::8.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ0 against DGQ0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ0 against DGQ1 in 1d:
-DEAL::2.0 1.0
-DEAL::1.0 1.
+DEAL::2.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ1 against DGQ0 in 1d:
-DEAL::0.50 1.0
-DEAL::0.50 0.5
+DEAL::0.500 1.00
+DEAL::0.500 0.50
 DEAL::Checking DGQ0 against DGQ1 in 2d:
-DEAL::4.0 1.0
-DEAL::1.0 1.
+DEAL::4.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ1 against DGQ0 in 2d:
-DEAL::0.25 1.0
-DEAL::0.25 0.25 
+DEAL::0.250 1.00
+DEAL::0.250 0.250 
 DEAL::Checking DGQ0 against DGQ1 in 3d:
-DEAL::8.0 1.0
-DEAL::1.0 1.
+DEAL::8.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ1 against DGQ0 in 3d:
-DEAL::0.13 1.0
-DEAL::0.12 0.12 
+DEAL::0.125 1.00
+DEAL::0.125 0.125 
 DEAL::Checking DGQ0 against DGQ2 in 1d:
-DEAL::3.0 1.0
-DEAL::1.0 1.
+DEAL::3.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ2 against DGQ0 in 1d:
-DEAL::0.67 1.0
-DEAL::0.17 0.1
+DEAL::0.667 1.00
+DEAL::0.167 0.16
 DEAL::Checking DGQ0 against DGQ2 in 2d:
-DEAL::9.0 1.0
-DEAL::1.0 1.
+DEAL::9.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ2 against DGQ0 in 2d:
-DEAL::0.44 1.0
-DEAL::0.028 0.02
+DEAL::0.444 1.00
+DEAL::0.0278 0.027
 DEAL::Checking DGQ0 against DGQ2 in 3d:
-DEAL::27. 1.0
-DEAL::1.0 1.
+DEAL::27.0 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ2 against DGQ0 in 3d:
-DEAL::0.30 1.0
-DEAL::0.0046 0.0046 
+DEAL::0.296 1.00
+DEAL::0.00463 0.00463 
 DEAL::Checking DGQ0 against DGQ4 in 1d:
-DEAL::5.0 1.0
-DEAL::1.0 1.
+DEAL::5.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ4 against DGQ0 in 1d:
-DEAL::0.36 1.0
-DEAL::0.078 0.078 
+DEAL::0.356 1.00
+DEAL::0.0778 0.0778 
 DEAL::Checking DGQ0 against DGQ4 in 2d:
-DEAL::25. 1.0
-DEAL::1.0 1.
+DEAL::25.0 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ4 against DGQ0 in 2d:
-DEAL::0.13 1.0
-DEAL::0.0060 0.0060 
+DEAL::0.126 1.00
+DEAL::0.00605 0.00605 
 DEAL::Checking DGQ0 against DGQ4 in 3d:
-DEAL::1.2e+02 1.0
-DEAL::1.0 1.
+DEAL::125. 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGQ4 against DGQ0 in 3d:
-DEAL::0.045 1.0
-DEAL::0.00047 0.00047 
+DEAL::0.0449 1.00
+DEAL::0.000471 0.000471 
 DEAL::Checking DGQ1 against DGQ1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ1 in 2d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ1 in 2d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.8
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.83
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.8
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.83
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ1 against DGQ3 in 1d:
-DEAL::2.0 1.0
-DEAL::1.0 0 0.33 0.67 
+DEAL::2.00 1.00
+DEAL::1.00 0 0.333 0.667 
 DEAL::Checking DGQ3 against DGQ1 in 1d:
-DEAL::1.4 1.9
-DEAL::0.40 1.0 -0.30 -0.15 
+DEAL::1.35 1.90
+DEAL::0.400 1.05 -0.300 -0.150 
 DEAL::Checking DGQ1 against DGQ3 in 2d:
-DEAL::4.0 1.0
-DEAL::1.0 0 0.33 0 0 0.67 0 0 
+DEAL::4.00 1.00
+DEAL::1.00 0 0.333 0 0 0.667 0 0 
 DEAL::Checking DGQ3 against DGQ1 in 2d:
-DEAL::1.8 3.6
-DEAL::0.16 -0.060 -0.12 0.42 0.045 -0.16 -0.060 0.022 
+DEAL::1.82 3.61
+DEAL::0.160 -0.0600 -0.120 0.420 0.0450 -0.157 -0.0600 0.0225 
 DEAL::Checking DGQ1 against DGQ3 in 3d:
-DEAL::8.0 1.0
-DEAL::1.0 0 0.33 0 0 0 0 0 0 0 0 0.22 0 0.44 0 0 
+DEAL::8.00 1.00
+DEAL::1.00 0 0.333 0 0 0 0 0 0 0 0 0.222 0 0.444 0 0 
 DEAL::Checking DGQ3 against DGQ1 in 3d:
-DEAL::2.5 6.9
-DEAL::0.064 -0.063 -0.048 0.44 0.018 -0.13 -0.024 0.018 -0.063 0.0090 0.047 -0.063 -0.014 0.024 0.018 -0.0034 
+DEAL::2.46 6.86
+DEAL::0.0640 -0.0630 -0.0480 0.441 0.0180 -0.126 -0.0240 0.0180 -0.0630 0.00900 0.0473 -0.0630 -0.0135 0.0236 0.0180 -0.00338 
 DEAL::Checking DGQ2 against DGQ2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 2d:
-DEAL::1.0 1.0
-DEAL::3.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ2 in 3d:
-DEAL::1.0 1.0
-DEAL::5.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::5.20
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 1.00 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ2 against DGQ4 in 1d:
-DEAL::2.5 1.2
-DEAL::1.0 0 0.75 0.75 0 0 
+DEAL::2.50 1.25
+DEAL::1.00 0 0.750 0.750 0 0 
 DEAL::Checking DGQ4 against DGQ2 in 1d:
-DEAL::2.5 2.8
-DEAL::0.58 -0.91 0.23 0.23 -0.91 0.11 
+DEAL::2.49 2.83
+DEAL::0.581 -0.914 0.229 0.229 -0.914 0.114 
 DEAL::Checking DGQ2 against DGQ4 in 2d:
-DEAL::6.3 1.6
-DEAL::1.0 0 0.75 0 0 0 0 0 0 0 0 0.75 -0.047 -0.047 -0.13 0.38 -0.047 -0.047 
+DEAL::6.25 1.56
+DEAL::1.00 0 0.750 0 0 0 0 0 0 0 0 0.750 -0.0469 -0.0469 -0.125 0.375 -0.0469 -0.0469 
 DEAL::Checking DGQ4 against DGQ2 in 2d:
-DEAL::6.2 8.0
-DEAL::0.34 0.087 0.13 0.75 -0.53 0.087 -0.0044 0.13 0.0033 0.0033 0.026 -0.065 0.087 -0.10 0.050 0.026 0.087 0.013 
+DEAL::6.18 8.00
+DEAL::0.338 0.0871 0.133 0.751 -0.531 0.0871 -0.00435 0.133 0.00327 0.00327 0.0261 -0.0653 0.0871 -0.104 0.0501 0.0261 0.0871 0.0131 
 DEAL::Checking DGQ2 against DGQ4 in 3d:
-DEAL::16. 2.0
-DEAL::1.0 0 0.75 0 0 0 0 0 0 0 0 0 -0.047 0 -0.13 0 -0.047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0.14 
+DEAL::15.6 1.95
+DEAL::1.00 0 0.750 0 0 0 0 0 0 0 0 0 -0.0469 0 -0.125 0 -0.0469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.141 0 0 0 1.00 0 0 0 0 0 0 0 0 0 0 0 0.141 
 DEAL::Checking DGQ4 against DGQ2 in 3d:
-DEAL::15. 23.
-DEAL::0.20 0.76 0.077 -0.038 -0.31 0.039 -0.0025 -0.0025 0.0019 -0.022 0.015 -0.0025 0.051 0.20 0.029 -0.038 0.051 0.76 -0.0075 0.0040 -0.0030 -0.0010 0.0040 -0.00050 0.034 -0.0043 -0.0086 -0.0086 -0.022 0.034 -0.038 0.060 -0.015 -0.0030 0.060 -0.0025 0.00066 0.010 -0.00050 0.086 0.0015 0.010 -0.0075 0.015 -0.0043 0.00037 -0.0075 -0.0075 0.0076 -0.012 -0.00050 0.0030 0.00066 0.0015 
+DEAL::15.4 22.6
+DEAL::0.196 0.759 0.0771 -0.0379 -0.309 0.0386 -0.00253 -0.00253 0.00190 -0.0218 0.0152 -0.00253 0.0506 0.196 0.0291 -0.0379 0.0506 0.759 -0.00746 0.00398 -0.00299 -0.000995 0.00398 -0.000498 0.0343 -0.00429 -0.00858 -0.00858 -0.0218 0.0343 -0.0379 0.0597 -0.0149 -0.00299 0.0597 -0.00253 0.000663 0.00995 -0.000498 0.0858 0.00149 0.00995 -0.00746 0.0152 -0.00429 0.000373 -0.00746 -0.00746 0.00759 -0.0119 -0.000498 0.00299 0.000663 0.00149 
 DEAL::Checking DGQ3 against DGQ3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ3 against DGQ3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ3 against DGQ3 in 2d:
-DEAL::1.0 1.0
-DEAL::4.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ3 against DGQ3 in 2d:
-DEAL::1.0 1.0
-DEAL::4.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ3 against DGQ3 in 3d:
-DEAL::1.0 1.0
-DEAL::8.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::8.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGQ3 against DGQ3 in 3d:
-DEAL::1.0 1.0
-DEAL::8.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::8.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP0 against DGP0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP1 against DGP0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP1 against DGP0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP1 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP1 against DGP0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP2 against DGP0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP2 against DGP0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP2 against DGP0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP4 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP4 against DGP0 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP4 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP4 against DGP0 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP0 against DGP4 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP4 against DGP0 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 1.
+DEAL::1.00 1.00
+DEAL::1.00 1.0
 DEAL::Checking DGP1 against DGP1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGP1 against DGP1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.4
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.41
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGP1 against DGP1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP1 against DGP1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP1 against DGP1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP1 against DGP1 in 3d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP1 against DGP3 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking DGP1 against DGP3 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 0 0 
 DEAL::Checking DGP3 against DGP1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 0 0 
 DEAL::Checking DGP1 against DGP3 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 0 0 0 0 
 DEAL::Checking DGP3 against DGP1 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 0 0 0 0 
 DEAL::Checking DGP2 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::2.4
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.45
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::2.4
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.45
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.7
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.73
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::2.4
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.45
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::2.4
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.45
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP2 against DGP4 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP4 against DGP2 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 1.00 0 
 DEAL::Checking DGP2 against DGP4 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 0 0 0 0 0 0 
 DEAL::Checking DGP4 against DGP2 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 0 0 0 0 0 0 
 DEAL::Checking DGP2 against DGP4 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 DEAL::Checking DGP4 against DGP2 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 1.00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 DEAL::Checking DGP3 against DGP3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP3 in 1d:
-DEAL::1.0 1.0
-DEAL::2.0
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::2.00
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP3 in 2d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP3 in 2d:
-DEAL::1.0 1.0
-DEAL::3.2
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::3.16
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP3 in 3d:
-DEAL::1.0 1.0
-DEAL::4.5
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.47
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking DGP3 against DGP3 in 3d:
-DEAL::1.0 1.0
-DEAL::4.5
-DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::4.47
+DEAL::1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 1.00 0 
 DEAL::Checking Nedelec0 against Nedelec0 in 2d:
 DEAL::Checking Nedelec0 against Nedelec0 in 2d:
 DEAL::Checking Nedelec0 against Nedelec0 in 3d:
@@ -554,28 +554,28 @@ DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d:
 DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d:
 DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
 DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 
 DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
 DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
 DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
 DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
 DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 0 0 
 DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 1.0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 1.00 0 0 
 DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
 DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
 DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
 DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
 DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 0 0 0 0 
 DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
-DEAL::1.0 1.0
-DEAL::1.0 0 1.0 0 0 0 0 0 
+DEAL::1.00 1.00
+DEAL::1.00 0 1.00 0 0 0 0 0 
index bc7c447a6d8f9b0a4196b85230df3c63ab0835e9..34fc1fb406c8895aa3909b838d1b4a521cd7259e 100644 (file)
@@ -27,8 +27,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 #include <deal.II/lac/vector.h>
index 72044ac50009ff31e111474d2b014467bf6e7b91..4ae93c48458491e2a3638962f63d4b732185f088 100644 (file)
@@ -26,7 +26,7 @@ int main ()
 
   Triangulation<1>   triangulation;
   GridGenerator::hyper_cube (triangulation, -1, 1);
-  const std::vector<types::boundary_id_t> indicators = triangulation.get_boundary_indicators();
+  const std::vector<types::boundary_id> indicators = triangulation.get_boundary_indicators();
   for (unsigned int i=0; i<indicators.size(); ++i)
     deallog << int (indicators[i]) << std::endl;
 
index 324937dc814dbf1809b981c74ad28aef6054281e..6db71d453f4e9d1f45bc6b192c004e8a0c2b6577 100644 (file)
 #include <iomanip>
 
 
-template <int dim> Table<dim,types::material_id_t> material_ids();
+template <int dim> Table<dim,types::material_id> material_ids();
 
-template <> Table<1,types::material_id_t> material_ids<1>()
+template <> Table<1,types::material_id> material_ids<1>()
 {
-  Table<1,types::material_id_t> t(2);
+  Table<1,types::material_id> t(2);
   for (unsigned int i=0; i<2; ++i)
     t[i] = 1;
   return t;
 }
 
 
-template <> Table<2,types::material_id_t> material_ids<2>()
+template <> Table<2,types::material_id> material_ids<2>()
 {
-  Table<2,types::material_id_t> t(2,3);
+  Table<2,types::material_id> t(2,3);
   for (unsigned int i=0; i<2; ++i)
     for (unsigned int j=0; j<3; ++j)
       t[i][j] = 1;
                                   // produce a hole in the middle
-  t[1][1] = (types::material_id_t)(-1);
+  t[1][1] = (types::material_id)(-1);
   return t;
 }
 
 
-template <> Table<3,types::material_id_t> material_ids<3>()
+template <> Table<3,types::material_id> material_ids<3>()
 {
-  Table<3,types::material_id_t> t(2,3,4);
+  Table<3,types::material_id> t(2,3,4);
   for (unsigned int i=0; i<2; ++i)
     for (unsigned int j=0; j<3; ++j)
       for (unsigned int k=0; k<4; ++k)
        t[i][j][k] = 1;
                                   // produce a hole in the middle
-  t[1][1][1] = (types::material_id_t)(-1);
-  t[1][1][2] = (types::material_id_t)(-1);
+  t[1][1][1] = (types::material_id)(-1);
+  t[1][1][2] = (types::material_id)(-1);
   return t;
 }
 
index a2e5e9c41ae30f596757beedc4f9051d50d7b717..f9b2f29c60f561158b8cc9b91a7d937f7d9d899f 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index e73c22dcd3e61b51e6a8c09b9883ef2a80f62d47..3644d5103a7c9dbb51990536bde7e6b0f9ab1ee2 100644 (file)
@@ -29,8 +29,8 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <fstream>
 #include <iomanip>
index 614a7d36f396a57852f1dce1840c315775eb8403..bf9fa84ecafbaaf644f3f6625539c09f4ea60bc7 100644 (file)
@@ -46,7 +46,7 @@
 #include <deal.II/fe/mapping_q1_eulerian.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/multithread_info.h>
 #include <fstream>
index e9dfcbdaccd4b06e9a88945d031a302403a189dc..86fa49d72bec908473d4490b71f8138246e6593b 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/fe/mapping_q_eulerian.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/multithread_info.h>
 #include <fstream>
index 7a2b512242d440b2045af30f986c6e27fd56519d..81cb27d7a1dec388428684a00f89b009cefe612a 100644 (file)
@@ -46,7 +46,7 @@
 #include <deal.II/fe/mapping_q_eulerian.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/multithread_info.h>
 #include <fstream>
index 5106c102bc07d9c3ea110786a0423289b4c22b21..7bb49ef6a06dc5057a5259951a74598ea8df8d09 100644 (file)
@@ -47,7 +47,7 @@
 #include <deal.II/fe/mapping_q_eulerian.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/multithread_info.h>
 #include <fstream>
index 018f300a0c9e43be2482ce12ffb3069ff3724cd0..69c1b72584409fba8281903e93d73348acf4ae15 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/numerics/error_estimator.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 468df4b71bb4804cba894db192dd2e475a5bff32..d077f9e51a5b51eccf7bd1b8e8ee4aa55cba221e 100644 (file)
@@ -47,7 +47,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index d3eab8446c585e74a43f5fe9fb757bb34504ec7d..87b1f47f829b5ed44e43d8a16038be8d816ee3fe 100644 (file)
@@ -46,7 +46,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 224cb027f64a509dc4747cafebde24b2561d30ea..325b8f72f179a4e93dc1920af235f2a21368eb40 100644 (file)
@@ -48,7 +48,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 98c86c16d47e875aab1efd2b89d6545b29d1cf53..856a84fc3bc12a25025103e8c9d6e9a760a27007 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index 33bb840a44443881fb29b817771886f5a14c1b10..592e417b42742f22627b4675d7e5cf4e27185c23 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index 69d13977adbd92abe77e503ed331e930510cd41f..6fc9391cac38a56cd2d6ad5fcb444831c8aaae52 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index b8c585f4a7ccf5a73b733126e5ff4306a998fce3..404e5aafc718aa60c70ce07e8c29b4565b3a8f97 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index 5a37b82c743154ea34a53e1dd34041319bb52bf1..52c6cd9adc5d36d49db99a1fcd7487e177f7e3b6 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index 11fab3cf3f7a2ff357a7baf118861e56c232d555..1f1db3c53f1bea369fbe48a1479490b84cb1ad96 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index aebfe10c0766e8190e36e3513381e0a023901f4c..5b025122773637ab5877b36467db39a5d061f02e 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index c14af9a4b11752c884a1b552e0d22ebc422eb3f4..61f3c3f99d695d19603db243db34fd4caf3071eb 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <cmath>
index 4afef3ad7e8e89edcd7a79871292e7551f067f00..84d099ccb9ea09db02a7ef3126e749411e9e763e 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/base/function.h>
index 4ec5593158f3c8773a397e7097e86753b96b4e14..fb03f958c1b14191b07c170ffa0aaf0af5a896dc 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/solution_transfer.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_dgq.h>
index 28d694e9569fa4b5b5fdb187e486fce326ee1e78..c01aa87c12cea02886d5dec78c69e425acb21b13 100644 (file)
@@ -41,8 +41,8 @@ std::ofstream logfile("step-11/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/compressed_sparsity_pattern.h>
 
index fb7d492c60979c6f26e4b3f65bfc8f9a695ff478..8e4188b6bcbea7b65a5d7eda0c4fa322967a06bb 100644 (file)
@@ -43,8 +43,8 @@ std::ofstream logfile("step-13/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 8b7e7937b8a3bd7cde2e9d81d9b7b17583617e6e..831e156ce02b020c0d9124340a23b2c98abb6052 100644 (file)
@@ -44,8 +44,8 @@ std::ofstream logfile("step-14/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/fe_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 7e63a064f8cf771c90810d29141d81637b4bdfb5..c6c9f35207ad2e3bcd2651204089be976dc798b3 100644 (file)
@@ -41,8 +41,8 @@ std::ofstream logfile("step-15/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/numerics/solution_transfer.h>
index cc28e4315a14d0cc8c3743cfd82a873bf3dcbbda..36cb905d4d185f93312cbb0ded92881ce9737913 100644 (file)
@@ -38,8 +38,8 @@ std::ofstream logfile("step-16/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/multigrid/multigrid.h>
 #include <deal.II/multigrid/mg_dof_handler.h>
index f294f10cf04a49f98407850d8bddeda85bb8b1d1..490b94021fd59676f9124f4fb4790ecf672d5048 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index fc8d32123cf5bc02b9b269484d4128c8a3eb87b2..8a10d3333abb94a7f6e49a6a47aff8c3d44aa75f 100644 (file)
@@ -32,8 +32,8 @@ std::ofstream logfile("step-4/output");
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/sparse_matrix.h>
index 10ceb6704c6f3f93c9806a20230a26985979087c..cf7fc85b26b6e05888e1f0dfe87440bc44a95b2f 100644 (file)
@@ -38,8 +38,8 @@ std::ofstream logfile("step-5/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/grid/grid_in.h>
index ee94fecd70c0743c68b7ef06ffcfe6b79d3e8013..5ce747bc720ce394ccfed83cc39855d4d993dd97 100644 (file)
@@ -39,8 +39,8 @@ std::ofstream logfile("step-6/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 295b89d62938887209ab8483fcc60eb5af69f595..d942acfb3c3c88a412e93673001f07952213e26a 100644 (file)
@@ -41,13 +41,13 @@ std::ofstream logfile("step-7/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/dofs/dof_renumbering.h>
 #include <deal.II/base/smartpointer.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/convergence_table.h>
 #include <deal.II/hp/fe_values.h>
 
index d8c4239c0733d639d0db7af90f3b46a8d650f494..c31863f3f4684995eaa321946b1fe580f2797f61 100644 (file)
@@ -40,8 +40,8 @@ std::ofstream logfile("step-8/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/numerics/error_estimator.h>
index 4eef579dcc19e94007f53ec0c70f6499d9793490..f44ca072956b8338aebc3c16958aed600203c8e7 100644 (file)
@@ -85,7 +85,7 @@ int main ()
 
                                     // now extract a mesh of the 5
                                     // surface faces
-    std::set<types::boundary_id_t> boundary_indicators;
+    std::set<types::boundary_id> boundary_indicators;
     boundary_indicators.insert (0);
     GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh,
                                      boundary_indicators);
index ff3fc5defdbf6098e6354cc28d62de9168c27d3b..4f42a23a9d659ef7dbb8bf6e6041c70c6783e026 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/base/function.h>
index dd412fc3294f4a1f1043eb0cb49ed9d01b9a08d2..a12f0eebcfa8d4bf3bae7456de757a0d1071a598 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/grid/grid_in.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/numerics/data_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/mapping_q.h>
 
 std::ofstream logfile("data_out_03/output");
@@ -88,7 +88,7 @@ int main ()
   tria.set_boundary (1, surface_description);
   tria.set_boundary (0, surface_description);
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert(0);
 
   GridTools::extract_boundary_mesh (volume_mesh, tria,
index 46088863d31302cc73c15d6fdf50b363123b8d99..d7f01aafb59ad624249f90b560e9871e737c70fc 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
@@ -128,7 +128,7 @@ check ()
   MappingQ<dim,spacedim> mapping(3);
   Quadrature<dim-1> &q_face = get_q_face<dim>();
 
-  std::map<types::boundary_id_t,const Function<spacedim>*> neumann_bc;
+  std::map<types::boundary_id,const Function<spacedim>*> neumann_bc;
   neumann_bc[0] = &function;
   
   Vector<double> v (dof.n_dofs());
index 6ab6d7af3a8c23fb38b977dc176e8246b54c7db1..9bc1495cbb9a7a1cb6a65a712384b7c0aa3053e2 100644 (file)
@@ -165,7 +165,7 @@ int main ()
     save_mesh(volume_mesh);
 
     Triangulation<dim-1,dim> boundary_mesh;
-    set<types::boundary_id_t> boundary_ids;
+    set<types::boundary_id> boundary_ids;
     boundary_ids.insert(0);
 
     surface_to_volume_mapping
index bebed43111687eb160ca8a05637489b1a5b03e9c..9ddcdd0c4d5d358505741c304843521a302b47f4 100644 (file)
@@ -117,7 +117,7 @@ int main ()
     boundary_mesh.set_boundary (1, surface_description);
     boundary_mesh.set_boundary (0, surface_description);
 
-    set<types::boundary_id_t> boundary_ids;
+    set<types::boundary_id> boundary_ids;
     boundary_ids.insert(1);
 
     surface_to_volume_mapping
index 5ea9fee01d01498cb17bdcb6848292256c8de512..486f4b92ef74a3dc0b3dd015b2609b18c1016d80 100644 (file)
@@ -39,7 +39,7 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_in.h>
 #include <deal.II/grid/grid_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <cmath>
index 79fb4485620eadd3653e85d6342992ae54ff665e..3f5fea6e4fb30a87bb33ced212c6ffe9da81236e 100644 (file)
@@ -39,7 +39,7 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_in.h>
 #include <deal.II/grid/grid_out.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <cmath>
index 4bc550b78365ced7dbb6306847fbb132b9b20e09..23f95ff4d1995d0854f00c5b691384ff5257e7cc 100644 (file)
@@ -50,7 +50,7 @@ int main ()
       cell = volume_mesh.begin_active();
 
     cell->face(0)->set_all_boundary_indicators (1);
-    std::set<types::boundary_id_t> boundary_ids;
+    std::set<types::boundary_id> boundary_ids;
     boundary_ids.insert(0);
     GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh, boundary_ids);
   }
index 0c9dae13ec767c25e7d290994a7867497c5a0825..1d49197267e8614ffd8d55d3259ca6b966ad23c8 100644 (file)
@@ -50,7 +50,7 @@ int main ()
       cell = volume_mesh.begin_active();
 
     cell->face(0)->set_all_boundary_indicators (1);
-    std::set<types::boundary_id_t> boundary_ids;
+    std::set<types::boundary_id> boundary_ids;
     boundary_ids.insert(0);
     GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh, boundary_ids);
   }
index 12b76b3f30d8462d8be14d0b269c0400bd7f487a..52c18f923df33d85f0883553db90fdda79e8f3e7 100644 (file)
@@ -44,7 +44,7 @@ int main ()
       cell = volume_mesh.begin_active();
 
     cell->face(0)->set_all_boundary_indicators (1);
-    std::set<types::boundary_id_t> boundary_ids;
+    std::set<types::boundary_id> boundary_ids;
     boundary_ids.insert(0);
     GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh, boundary_ids);
   }
index 254799440217385a26a986f61df96c0e23b99d7c..4229f17927d09e1a1e27dd016c1f0f792f229d23 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/grid/grid_in.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
index 849f43d05af6d76a353acefc2b55d92c56674bac..7c3c5819665479988524d1dbb00b8cd6abedd9b1 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
index a2af258758b15ea794ff56c213052a5a2159e4ff..dc43396160bdf54f94683600afaf854f596e17c0 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
index 49430da22517eb3e26065f9f327e5de73a03a37c..29f646f9ab18de4aa93bb5a524ac7dfb1b20cb34 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
index ee19bd19e676083311cc5f6ddbf012b29482d5e7..225d791ccac7842ab136096cc2b714cba3fd527a 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/grid/grid_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
@@ -38,7 +38,7 @@ void test() {
   Triangulation<dim, spacedim> tria;
   Triangulation<spacedim> volume_mesh;
   GridGenerator::half_hyper_ball(volume_mesh);
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert(0);
   
   GridTools::extract_boundary_mesh (volume_mesh, tria,boundary_ids);
index 1d97f03e4fe56740e6c5dbf44fa3c01591c0f1d0..a90f16a23864eba7295ef06796ed7782f7aac37c 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/grid/grid_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <string>
 
index 3825fa1116160d9c096d1b1a2550d3c0fa2daef3..5f73b983b9f2b4ab2e31cbf90e232806498c07d6 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/base/function.h>
index daafef0f91b2c51a19ea6939bd35032af00c8fdb..3a8503f0ec78c1ab081afdcf9c7f519eb3b72224 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/function_lib.h>
index afc5fc2c506e74a518051fb79dea7f5312ca1287..5e9d77d67d260923c3a5cde446c560a22519e6f2 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/function_parser.h>
index 616ff5870a809650bb1f27fbd3e14c626b077cbd..ab1d6a812b4c948d866b442969837d77d303c22f 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/function_lib.h>
index c9d881fc9d6016befe60bf4c6dbb38faa2011305..22f30b49cf7f9eea6d591a243cf9fdbcc3bb11c8 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/function_lib.h>
index 2697c81d8056e2f0cab15e94c6c3d91f3cc7847c..2cc8d7b21672f05d970f07111da0b9cd95ad347b 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/function_lib.h>
index cbe401a00054df012e82b824354039451bd2bf5d..ed419ef18df0edd95adf97883aba93de9aa07f7e 100644 (file)
@@ -37,7 +37,7 @@
 
 #include <deal.II/fe/fe_dgq.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/solution_transfer.h>
 
 #include <fstream>
index e7700d4f0e3007e32406a9c53bc91ab3639bd936..4d48db6c2a99b86ff648a9502aa4024d107db09a 100644 (file)
@@ -68,7 +68,7 @@ int main ()
   triangulation.set_boundary (1, surface_description);
   triangulation.set_boundary (0, surface_description);
   
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert(0);
   
   GridTools::extract_boundary_mesh (volume_mesh, triangulation,
index 847276be89109601ad9acfef917ef88938a73772..61671114752c6b444c83da5a3bc46d58382ba37b 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
index 782f9d8a0cef675d0411a41b8ffb4c5f6c36f7f9..7e456053b1f9a452d5afcf4e43480488dd5c57d6 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
diff --git a/tests/deal.II/constraints_block_01.cc b/tests/deal.II/constraints_block_01.cc
new file mode 100644 (file)
index 0000000..e2ed848
--- /dev/null
@@ -0,0 +1,348 @@
+//----------------------------  constraints.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  constraints.cc  ---------------------------
+
+
+// test that we fixed a case where we tried to deal with some constraints in a
+// block matrix where the last few rows of one of the blocks were empty and we
+// ran into an unrelated assertion because we were accessing something beyond
+// the end of the array
+//
+// testcase by Jason Sheldon
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/utilities.h>
+#include <base/quadrature_lib.h>
+
+#include <numerics/vectors.h>
+#include <numerics/matrices.h>
+#include <numerics/data_out.h>
+
+#include <lac/vector.h>
+#include <lac/sparse_direct.h>
+#include <lac/full_matrix.h>
+#include <lac/compressed_sparsity_pattern.h>
+#include <lac/sparse_matrix.h>
+#include <lac/constraint_matrix.h>
+
+#include <dofs/dof_accessor.h>
+#include <dofs/dof_constraints.h>
+#include <dofs/dof_renumbering.h>
+#include <dofs/dof_handler.h>
+#include <dofs/dof_tools.h>
+
+#include <hp/dof_handler.h>
+#include <hp/q_collection.h>
+#include <hp/fe_collection.h>
+#include <hp/fe_values.h>
+
+#include <fe/fe.h>
+#include <fe/fe_tools.h>
+#include <fe/fe_q.h>
+#include <fe/fe_nothing.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+
+#include <grid/grid_generator.h>
+#include <grid/tria_iterator.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria.h>
+
+#include <fstream>
+#include <cmath>
+#include <cstdlib>
+
+
+std::ofstream logfile("constraints_block_01/output");
+
+
+int main ()
+{
+  deallog << std::setprecision (2);
+  logfile << std::setprecision (2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+                                  // setting up some constants
+  const unsigned int dim = 2;
+  const unsigned int solid_dim = 2*dim;
+  const unsigned int fluid_dim = dim+1;
+  const unsigned int mesh_dim  = dim;
+  const unsigned int total_dim = solid_dim + fluid_dim + mesh_dim;
+
+                                  // make the tria and domain
+  Triangulation<dim>   tria;
+
+  GridGenerator::hyper_cube (tria);
+  tria.refine_global(1);
+
+  Point<dim> real_cell_center;
+
+                                  // create a solid domain (0) in the
+                                  // lower left hand corner of a 2x2 grid
+                                  // the rest is fluid/mesh (1)
+
+  for (Triangulation<dim>::active_cell_iterator
+        cell = tria.begin_active();
+       cell != tria.end(); ++cell)
+    {
+      real_cell_center = cell->center();
+      if (real_cell_center(0) < 0.5
+         && real_cell_center(1) < 0.5 )
+       cell->set_material_id (0); // solid
+      else
+       cell->set_material_id (1); //fluid
+    }//cell
+
+                                  //create the FE spaces for the solid and the fluid/mesh
+                                  //each are padded with FE_Nothing to be equal length
+
+  std::string solid_fe_name = "FESystem[FE_Q(2)^2-FE_Q(2)^2-FE_Nothing()^2-FE_Nothing()-FE_Nothing()^2]";
+  std::string fluid_fe_name = "FESystem[FE_Nothing()^2-FE_Nothing()^2-FE_Q(2)^2-FE_Q(1)-FE_Q(2)^2]";
+
+  hp::FECollection<dim> fe_collection;
+  FiniteElement<dim> * solid_fe = FETools::get_fe_from_name<dim>(solid_fe_name);
+  FiniteElement<dim> * fluid_fe = FETools::get_fe_from_name<dim>(fluid_fe_name);
+
+  deallog << "Solid FE Space: " << solid_fe->get_name() << std::endl;
+  deallog << "Fluid/Mesh FE Space: " << fluid_fe->get_name() << std::endl;
+
+  fe_collection.push_back(*solid_fe);
+  fe_collection.push_back(*fluid_fe);
+
+  hp::DoFHandler<dim> dh(tria);
+
+  for (hp::DoFHandler<dim>::active_cell_iterator
+        cell = dh.begin_active();
+       cell != dh.end(); ++cell)
+    {
+      if (int(cell->material_id()) == 0)
+       cell->set_active_fe_index (0);
+      else
+       cell->set_active_fe_index (1);
+    }//cell
+  dh.distribute_dofs(fe_collection);
+
+  std::vector<unsigned int> block_component (total_dim,0);
+
+  for (unsigned int comp=0; comp < total_dim; comp++)
+    {
+      if ( comp < solid_dim )
+       block_component[comp] = 0;
+      else if ( comp < solid_dim+fluid_dim )
+       block_component[comp] = 1;
+      else
+       block_component[comp] = 2;
+    }//comp
+
+  std::vector<unsigned int> dofs_per_block(3,0);//3 blocks, count dofs:
+  DoFTools::count_dofs_per_component (dh, dofs_per_block, false, block_component);
+
+  DoFRenumbering::component_wise(dh, block_component);
+
+                                  //build the sparsitypattern
+
+  BlockSparsityPattern   block_sparsity_pattern;
+  {
+    BlockCompressedSimpleSparsityPattern  csp(3,3);
+    csp.block(0,0).reinit (dofs_per_block[0],dofs_per_block[0]);//solid-solid
+    csp.block(0,1).reinit (dofs_per_block[0],dofs_per_block[1]);//solid-fluid
+    csp.block(0,2).reinit (dofs_per_block[0],dofs_per_block[2]);//solid-mesh
+
+    csp.block(1,0).reinit (dofs_per_block[1],dofs_per_block[0]);//fluid-solid
+    csp.block(1,1).reinit (dofs_per_block[1],dofs_per_block[1]);//fluid-fluid
+    csp.block(1,2).reinit (dofs_per_block[1],dofs_per_block[2]);//fluid-mesh
+
+    csp.block(2,0).reinit (dofs_per_block[2],dofs_per_block[0]);//mesh-solid
+    csp.block(2,1).reinit (dofs_per_block[2],dofs_per_block[1]);//mesh-fluid
+    csp.block(2,2).reinit (dofs_per_block[2],dofs_per_block[2]);//mesh-mesh
+
+    csp.collect_sizes();
+
+                                    //enforce coupling across cells and interface
+
+    Table<2,DoFTools::Coupling> cell_coupling (fe_collection.n_components(), fe_collection.n_components());
+    Table<2,DoFTools::Coupling> face_coupling (fe_collection.n_components(), fe_collection.n_components());
+
+    for (unsigned int c=0; c<fe_collection.n_components(); ++c)
+      {
+       for (unsigned int d=0; d<fe_collection.n_components(); ++d)
+         {
+           if (((c<solid_dim) && (d<solid_dim)) //couples solid dims with solid dims
+               ||
+               (((c>=solid_dim) && (d>=solid_dim)) //couples fluid dims and mesh dims
+                && !((c==solid_dim+dim) && (d==solid_dim+dim)))) //fluid pressure does not couple with itself
+             {
+               cell_coupling[c][d] = DoFTools::always;
+               cell_coupling[d][c] = DoFTools::always;
+             }//cell_coupling
+
+           if ((c<solid_dim) && (d>=solid_dim)) //couples solid dims with fluid and mesh dims on the interface
+             {
+               face_coupling[c][d] = DoFTools::always;
+               face_coupling[d][c] = DoFTools::always;
+             }//face_coupling
+         }//d
+      }//c
+    DoFTools::make_flux_sparsity_pattern (dh, csp, cell_coupling, face_coupling);
+    block_sparsity_pattern.copy_from (csp);
+  }
+
+                                  // build matrices and vectors
+
+  BlockSparseMatrix<double> system_matrix(block_sparsity_pattern);
+  BlockVector<double> system_rhs(dofs_per_block);
+
+                                  // set up constraints for solution and solution update
+                                  /**
+                                   * These constraints enforce that the solid displacement
+                                   * and mesh displacement are the same on the interface.
+                                   *
+                                   * They also constrain that the solid velocity
+                                   * and fluid velocity are the same on the interface
+                                   *
+                                   * The interface check is simplified for this 2x2 case
+                                   */
+
+  ConstraintMatrix constraints;
+
+  const unsigned int   dofs_per_fl_msh_face = fluid_fe->dofs_per_face;
+  const unsigned int   dofs_per_solid_face  = solid_fe->dofs_per_face;
+  std::vector<unsigned int> fl_msh_face_dof_indices (dofs_per_fl_msh_face);
+  std::vector<unsigned int> solid_face_dof_indices  (dofs_per_solid_face );
+
+  std::vector<std::pair<unsigned int, unsigned int> > solid_fluid_pairs;
+  std::vector<std::pair<unsigned int, unsigned int> > solid_mesh_pairs;
+
+  for (hp::DoFHandler<dim>::active_cell_iterator
+        cell = dh.begin_active(); cell!=dh.end(); ++cell) //loops over the cells
+    {
+      if (int(cell->material_id()) == 1)
+       {//Only loop over cells in the fluid region
+         for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+           {
+             if (!cell->at_boundary(f))
+               {
+                 bool face_is_on_interface = false;
+                                                  //checks to see if cell face neighbor is in the solid domain
+                 if (int(cell->neighbor(f)->material_id()) == 0 )
+                   face_is_on_interface = true;
+
+                 if (face_is_on_interface)
+                   {
+                     std::vector<unsigned int> solid_disp_dof, solid_vel_dof, fluid_vel_dof, mesh_disp_dof;
+
+                     cell->face(f)->get_dof_indices (solid_face_dof_indices, 0);
+                     cell->face(f)->get_dof_indices (fl_msh_face_dof_indices, 1);
+
+                     for (unsigned int i=0; i<dofs_per_solid_face; ++i)
+                       {
+                         unsigned int comp = solid_fe->face_system_to_component_index(i).first;
+                         if (comp <dim)
+                           solid_disp_dof.push_back(i);
+                         if (comp >= dim && comp < solid_dim)
+                           solid_vel_dof.push_back(i);
+                       }//i
+                     for (unsigned int i=0; i<dofs_per_fl_msh_face; ++i)
+                       {
+                         unsigned int comp = fluid_fe->face_system_to_component_index(i).first;
+                         if (comp >= solid_dim && comp < solid_dim+dim)
+                           fluid_vel_dof.push_back(i);
+                         if (comp>=solid_dim+fluid_dim)
+                           mesh_disp_dof.push_back(i);
+                       }//i
+
+                     for (unsigned int i=0; i<solid_vel_dof.size(); ++i)
+                       {//in this example solid_vel_dof.size()==fluid_vel_dof.size()
+                         constraints.add_line  (fl_msh_face_dof_indices[fluid_vel_dof[i]]);
+                         constraints.add_entry (fl_msh_face_dof_indices[fluid_vel_dof[i]],
+                                                solid_face_dof_indices[solid_vel_dof[i]], 1.0);
+
+                         solid_fluid_pairs.push_back(std::pair<unsigned int,unsigned int>
+                                                     (solid_face_dof_indices[solid_vel_dof[i]],
+                                                      fl_msh_face_dof_indices[fluid_vel_dof[i]]));
+                       }//i
+                     for (unsigned int i=0; i<solid_disp_dof.size(); ++i)
+                       {
+                         constraints.add_line  (fl_msh_face_dof_indices[mesh_disp_dof[i]]);
+                         constraints.add_entry (fl_msh_face_dof_indices[mesh_disp_dof[i]],
+                                                solid_face_dof_indices[solid_disp_dof[i]], 1.0);
+
+                         solid_mesh_pairs.push_back(std::pair<unsigned int,unsigned int>
+                                                    (solid_face_dof_indices[solid_disp_dof[i]],
+                                                     fl_msh_face_dof_indices[mesh_disp_dof[i]]));
+                       }
+                   }//at interface check
+               }//not at boundary check
+           }//face
+       }//is this in the fluid material region?
+    }//cell
+
+  constraints.close();
+
+                                  // prints out which dofs are coupled
+  deallog<<"---------------Coupled dofs---------------"<<std::endl;
+  for (unsigned int i=0; i<solid_fluid_pairs.size(); i++)
+    {
+      deallog<<"solid dof: "<< solid_fluid_pairs[i].first
+              <<", fluid dof: "<<solid_fluid_pairs[i].second<<std::endl;
+    }
+  for (unsigned int i=0; i<solid_fluid_pairs.size(); i++)
+    {
+      deallog<<"solid dof: "<<solid_mesh_pairs[i].first
+              <<", mesh dof: "<<solid_mesh_pairs[i].second<<std::endl;
+    }
+  deallog<<"------------------------------------------"<<std::endl;
+
+
+                                  //code crashes in the fluid assembly, mocked up below
+  {//fluid assembly
+    const unsigned int dofs_per_cell   = fluid_fe->dofs_per_cell;
+
+    FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+    Vector<double>       cell_rhs (dofs_per_cell);
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+    for (hp::DoFHandler<dim>::active_cell_iterator
+          cell = dh.begin_active();
+        cell!=dh.end();
+        ++cell) //loops over the cells
+      {
+       if (int(cell->material_id()) == 1)//are we in the fluid region?
+         {
+           cell->get_dof_indices (local_dof_indices);
+
+                                            // normally the governing equations would be added
+                                            // to the cell matrix and right hand side here
+
+           deallog<<"I am about to distribute cell: "<<cell<<std::endl;
+           deallog<<"Cell: "<<cell<<" has it's center at "<<cell->center()<<std::endl;
+
+           constraints.distribute_local_to_global(
+             cell_matrix,
+             cell_rhs,
+             local_dof_indices,
+             system_matrix,
+             system_rhs);
+
+         }//is this in the fluid material region?
+
+      }//cell
+
+  }//assemble fluid system
+
+   return 0;
+}
+
diff --git a/tests/deal.II/constraints_block_01/cmp/generic b/tests/deal.II/constraints_block_01/cmp/generic
new file mode 100644 (file)
index 0000000..e8cfce6
--- /dev/null
@@ -0,0 +1,35 @@
+
+DEAL::Solid FE Space: FESystem<2>[FE_Q<2>(2)^2-FE_Q<2>(2)^2-FE_Nothing<2>()^2-FE_Nothing<2>()-FE_Nothing<2>()^2]
+DEAL::Fluid/Mesh FE Space: FESystem<2>[FE_Nothing<2>()^2-FE_Nothing<2>()^2-FE_Q<2>(2)^2-FE_Q<2>(1)-FE_Q<2>(2)^2]
+DEAL::---------------Coupled dofs---------------
+DEAL::solid dof: 6, fluid dof: 36
+DEAL::solid dof: 7, fluid dof: 37
+DEAL::solid dof: 14, fluid dof: 42
+DEAL::solid dof: 15, fluid dof: 43
+DEAL::solid dof: 22, fluid dof: 48
+DEAL::solid dof: 23, fluid dof: 49
+DEAL::solid dof: 10, fluid dof: 58
+DEAL::solid dof: 11, fluid dof: 59
+DEAL::solid dof: 14, fluid dof: 42
+DEAL::solid dof: 15, fluid dof: 43
+DEAL::solid dof: 30, fluid dof: 71
+DEAL::solid dof: 31, fluid dof: 72
+DEAL::solid dof: 4, mesh dof: 86
+DEAL::solid dof: 5, mesh dof: 87
+DEAL::solid dof: 12, mesh dof: 90
+DEAL::solid dof: 13, mesh dof: 91
+DEAL::solid dof: 20, mesh dof: 94
+DEAL::solid dof: 21, mesh dof: 95
+DEAL::solid dof: 8, mesh dof: 104
+DEAL::solid dof: 9, mesh dof: 105
+DEAL::solid dof: 12, mesh dof: 90
+DEAL::solid dof: 13, mesh dof: 91
+DEAL::solid dof: 28, mesh dof: 114
+DEAL::solid dof: 29, mesh dof: 115
+DEAL::------------------------------------------
+DEAL::I am about to distribute cell: 1.1
+DEAL::Cell: 1.1 has it's center at 0.75 0.25
+DEAL::I am about to distribute cell: 1.2
+DEAL::Cell: 1.2 has it's center at 0.25 0.75
+DEAL::I am about to distribute cell: 1.3
+DEAL::Cell: 1.3 has it's center at 0.75 0.75
index 628e934e3e7be2fbdfad2977c6b99e44a5217395..214439f9e43179ffec55b6c5eefc796775ba80ae 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index a267c15fff8aee24fcba10f08ac108d9dbc09ae8..51b119e3a8857f71dbd0a13410adb8218de5acb3 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 
 #include <fstream>
index 6bc371d0b7f15726926983cbbaab73bd95391fea..7ef99bd71b0a5970a02c60ac4c85539149ec2db7 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 62f0a7435a479d5ad07a8f8e806d497b5d385b95..f4ebf6f22d7c1f2e20db66eb6a7c480437d7b063 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index abe94b062990e9e79142fdc172f1b79b9f743c2f..290b191da2bc6511522b0fdd688071449f20584f 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 7368cb102afd9ecf63b8ba094da08cd70dd861b5..5dcbedb4cbdeab3d23c268488a8b300a9c69be01 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 40e0c23fb59277eecb95ecf36d97e32a5d98e878..4ef8b12264d9db695880b358c83d4e5ecbc2945d 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 25c0005579d393329187a7d9173e593137bc350f..8e96ccead74e68596dd75b858196b519909e51e3 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 79d238b3e92ea32e4dce331b89fce5017d54eaa5..0891f5835eb8d2f7fcbc5770f70b1cb322bd4f13 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 14c66c74dcc2948025031aeb5216b36afff515fc..4aa529f457acfb0d13471c33ca67eda97448ed6c 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index a3f04c03def75917ea49a288871b33f9ccb574de..244e63cc25543cf6232f0b3675cf65364a3425ad 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index c9d055f5dbdf26c85b3179fbab7852c438204fa6..8d85e23b0906719fe8b555816437a2a2294e3bc7 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 76c3ccdc8b8c18c0d8beea31786ae1e0a6b23adb..af364d408b443c8f06c438af0cb973f81ba79f96 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index c70744f8c342e33f9a8f20a17d5d1d3e81600163..96c9d1b40ab698b03ce9471b01324d0419b2a009 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index b0b1ffc61a36435d4fd9a7211f0c16575857a76b..196933c30f7add7f4691c1f2541ab1325fd61020 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 60419c346e4126ca2df464e5cb8032d7626f7d68..ded452108bc20fdde9646cf448dd9436f99e9df3 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 83a67e199ed1d99be0b2f4125aaa955a729c235a..2389c88896b82536e94306b9d41e7e1f377b4e51 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index f5ffabc52878fdcdaaf19c7df2a7cf06620ef5df..b2f8d12d23b2a19cf8b32e7af516b782552bf807 100644 (file)
@@ -42,7 +42,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 77e7717eeb759ad42762b60fe0f384f5c3d7e0b5..de19a00dc8ffc122c56de7fc496ba980c8a275e8 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/fe/fe_raviart_thomas.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 23149c69c2078d1401b750300e01031fd474079c..454ef7371a7034aab71d71f829639883369f2c0f 100644 (file)
@@ -22,7 +22,7 @@
 #include<deal.II/fe/fe_system.h>
 #include<deal.II/grid/grid_generator.h>
 #include<deal.II/grid/tria.h>
-#include<deal.II/numerics/vectors.h>
+#include<deal.II/numerics/vector_tools.h>
 
 #include<fstream>
 
index de95c4a324460e480757cd8629296aa80406c467..1abe74ff2a41b87953ad502a18745d9689ba84a9 100644 (file)
@@ -23,7 +23,7 @@
 #include<deal.II/grid/tria.h>
 #include<deal.II/hp/dof_handler.h>
 #include<deal.II/hp/fe_collection.h>
-#include<deal.II/numerics/vectors.h>
+#include<deal.II/numerics/vector_tools.h>
 
 #include<fstream>
 
index c7d8542053b08da5817cef62a50aecd20390ebcf..85d272299d17149f5786e93740f783d200480888 100644 (file)
@@ -27,8 +27,8 @@
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 
 #include <deal.II/numerics/data_out.h>
index 752b016b8f3b5f86eae051f699b329d67761294d..6f8060c50b276685bcf21d220531e163dbbf080e 100644 (file)
@@ -26,8 +26,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 
 #include <deal.II/numerics/data_out.h>
index abcd03f4c354fafd9eeea45099f84be690035cd5..87465e72b64dd211a214adaec38f6bca3405829d 100644 (file)
@@ -29,8 +29,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 
 #include <deal.II/numerics/data_out.h>
index 393d05c6cce9c10386b4575d35f59d2ec5330e37..cdffd801cd9f8999553370517d205cb6087bad47 100644 (file)
@@ -29,8 +29,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 
 #include <deal.II/numerics/data_out.h>
index a8d4535d45ad44f4951c9c5ff0518fac66d34aad..1335739ec9ac54f458b65a38e1bca1b83ce8e11d 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/derivative_approximation.h>
 
 #include <fstream>
index 65785ac98d5faab08b6b6facc3ce98f6bc1bff0f..87caaf2d4525b5c6ddd8dac5dd463c4df8f87b05 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/derivative_approximation.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/mapping_q1.h>
index d7f02026e21c69a7d95afa46b372e67f0a407d0c..9c919020f36d4f9f34179e3da3b326919ff035db 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
@@ -95,7 +95,7 @@ check ()
   MappingQ<dim> mapping(3);
   Quadrature<dim-1> &q_face = get_q_face(function);
 
-  std::map<types::boundary_id_t,const Function<dim>*> neumann_bc;
+  std::map<types::boundary_id,const Function<dim>*> neumann_bc;
   neumann_bc[0] = &function;
   
   Vector<double> v (dof.n_dofs());
index 70936948363d1cc538a1b4bb7402373784b4f124..c0edc199c91289a860a3d5b33916271c8459e3e8 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 
 #include <fstream>
@@ -55,7 +55,7 @@ check ()
   MappingQ<dim,spacedim> mapping(3);
   QGauss<dim-1> q_face(4);
 
-  std::map<types::boundary_id_t,const Function<spacedim>*> neumann_bc;
+  std::map<types::boundary_id,const Function<spacedim>*> neumann_bc;
   neumann_bc[0] = &function;
   
   Vector<double> v (dof.n_dofs());
diff --git a/tests/deal.II/extract_dofs_by_component_01.cc b/tests/deal.II/extract_dofs_by_component_01.cc
new file mode 100644 (file)
index 0000000..e9a76e4
--- /dev/null
@@ -0,0 +1,89 @@
+//----------------------------  extract_dofs_by_component_01.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_01.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from DoFTools::extract_dofs via
+// the component_select flag
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_RaviartThomas<dim>(0), 1,
+                        FE_Q<dim>(1), 1,
+                        FE_Nedelec<dim>(0), 1);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+                                  // try all possible component
+                                  // masks, which we encode as bit
+                                  // strings
+  for (unsigned int int_mask=0; int_mask<(1U<<element.n_components()); ++int_mask)
+  {
+    std::vector<bool> component_mask (element.n_components());
+    for (unsigned int c=0; c<element.n_components(); ++c)
+      component_mask[c] = (int_mask & (1<<c));
+
+    std::vector<bool> dofs (dof.n_dofs());
+    DoFTools::extract_dofs (dof, component_mask, dofs);
+
+    for (unsigned int d=0; d<dof.n_dofs(); ++d)
+      deallog << dofs[d];
+    deallog << std::endl;
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_01/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_01/cmp/generic b/tests/deal.II/extract_dofs_by_component_01/cmp/generic
new file mode 100644 (file)
index 0000000..fee2269
--- /dev/null
@@ -0,0 +1,321 @@
+
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::101010101010101010101010101010101010101010
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::101010101010101010101010101010101010101010
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::101010101010101010101010101010101010101010
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::111111110000000011110000001111000000110000
+DEAL:2d::010101011010101001011010100101101010011010
+DEAL:2d::111111111010101011111010101111101010111010
+DEAL:2d::010101011010101001011010100101101010011010
+DEAL:2d::111111111010101011111010101111101010111010
+DEAL:2d::010101011010101001011010100101101010011010
+DEAL:2d::111111111010101011111010101111101010111010
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::101010100101010110100101011010010101100101
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::010101010101010101010101010101010101010101
+DEAL:2d::111111110101010111110101011111010101110101
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::101010100101010110100101011010010101100101
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::010101010101010101010101010101010101010101
+DEAL:2d::111111110101010111110101011111010101110101
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::101010100101010110100101011010010101100101
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::010101010101010101010101010101010101010101
+DEAL:2d::111111110101010111110101011111010101110101
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::111111111111111100000000000000000011111111000000000000011111111000000000000011110000000001111111100000000000001111000000000111100000000011000000
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
diff --git a/tests/deal.II/extract_dofs_by_component_01_hp.cc b/tests/deal.II/extract_dofs_by_component_01_hp.cc
new file mode 100644 (file)
index 0000000..5cab4fd
--- /dev/null
@@ -0,0 +1,93 @@
+//----------------------------  extract_dofs_by_component_01_hp.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_01_hp.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from DoFTools::extract_dofs via
+// the component_select flag
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+                                  // create an FECollection and set
+                                  // one cell to use the second
+                                  // element of this collection
+  hp::FECollection<dim> element;
+  for (unsigned int i=0; i<2; ++i)
+    element.push_back (FESystem<dim> (FE_Q<dim>(1+i), 1,
+                                     FE_Nedelec<dim>(0), 1));
+  hp::DoFHandler<dim> dof(tr);
+  dof.begin_active()->set_active_fe_index(1);
+  dof.distribute_dofs(element);
+
+                                  // try all possible component
+                                  // masks, which we encode as bit
+                                  // strings
+  for (unsigned int int_mask=0; int_mask<(1U<<element.n_components()); ++int_mask)
+  {
+    std::vector<bool> component_mask (element.n_components());
+    for (unsigned int c=0; c<element.n_components(); ++c)
+      component_mask[c] = (int_mask & (1<<c));
+
+    std::vector<bool> dofs (dof.n_dofs());
+    DoFTools::extract_dofs (dof, component_mask, dofs);
+
+    for (unsigned int d=0; d<dof.n_dofs(); ++d)
+      deallog << dofs[d];
+    deallog << std::endl;
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_01_hp/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_01_hp/cmp/generic b/tests/deal.II/extract_dofs_by_component_01_hp/cmp/generic
new file mode 100644 (file)
index 0000000..24288d9
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL:2d::00000000000000000000000000
+DEAL:2d::11011011111100001110000100
+DEAL:2d::00100100000011110001111011
+DEAL:2d::11111111111111111111111111
+DEAL:2d::00100100000011110001111011
+DEAL:2d::11111111111111111111111111
+DEAL:2d::00100100000011110001111011
+DEAL:2d::11111111111111111111111111
+DEAL:3d::0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::1101010101010101010101010111111111111111000000000000111111000000000001100000111110000000000110000011000001000
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
diff --git a/tests/deal.II/extract_dofs_by_component_02.cc b/tests/deal.II/extract_dofs_by_component_02.cc
new file mode 100644 (file)
index 0000000..81c76bb
--- /dev/null
@@ -0,0 +1,89 @@
+//----------------------------  extract_dofs_by_component_02.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_02.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from DoFTools::extract_dofs via
+// the block_select flag
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_RaviartThomas<dim>(0), 1,
+                        FE_Q<dim>(1), 1,
+                        FE_Nedelec<dim>(0), 1);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+                                  // try all possible block
+                                  // masks, which we encode as bit
+                                  // strings
+  for (unsigned int int_mask=0; int_mask<(1U<<element.n_blocks()); ++int_mask)
+  {
+    std::vector<bool> component_mask (element.n_blocks());
+    for (unsigned int c=0; c<element.n_blocks(); ++c)
+      component_mask[c] = (int_mask & (1<<c));
+
+    std::vector<bool> dofs (dof.n_dofs());
+    DoFTools::extract_dofs (dof, component_mask, dofs, true);
+
+    for (unsigned int d=0; d<dof.n_dofs(); ++d)
+      deallog << dofs[d];
+    deallog << std::endl;
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_02/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_02/cmp/generic b/tests/deal.II/extract_dofs_by_component_02/cmp/generic
new file mode 100644 (file)
index 0000000..3051a0b
--- /dev/null
@@ -0,0 +1,33 @@
+
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::101010101010101010101010101010101010101010
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::111111110000000011110000001111000000110000
+DEAL:2d::010101011010101001011010100101101010011010
+DEAL:2d::111111111010101011111010101111101010111010
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::101010100101010110100101011010010101100101
+DEAL:2d::000000001111111100001111110000111111001111
+DEAL:2d::101010101111111110101111111010111111101111
+DEAL:2d::010101010101010101010101010101010101010101
+DEAL:2d::111111110101010111110101011111010101110101
+DEAL:2d::010101011111111101011111110101111111011111
+DEAL:2d::111111111111111111111111111111111111111111
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::101010101010101000000000000011111110101010000000001111110101010000000001111110100000011111010101000000000111111010000001111101000000111110000111
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::111111111111111100000000000000000011111111000000000000011111111000000000000011110000000001111111100000000000001111000000000111100000000011000000
+DEAL:3d::010101010101010100000000000011111101010101000000001111101010101000000001111101010000011110101010100000000111110101000001111010100000111101000111
+DEAL:3d::111111111111111100000000000011111111111111000000001111111111111000000001111111110000011111111111100000000111111111000001111111100000111111000111
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::101010101010101011111111111100000010101010111111110000010101010111111110000010101111100001010101011111111000001010111110000101011111000010111000
+DEAL:3d::000000000000000011111111111111111100000000111111111111100000000111111111111100001111111110000000011111111111110000111111111000011111111100111111
+DEAL:3d::101010101010101011111111111111111110101010111111111111110101010111111111111110101111111111010101011111111111111010111111111101011111111110111111
+DEAL:3d::010101010101010111111111111100000001010101111111110000001010101111111110000001011111100000101010111111111000000101111110000010111111000001111000
+DEAL:3d::111111111111111111111111111100000011111111111111110000011111111111111110000011111111100001111111111111111000001111111110000111111111000011111000
+DEAL:3d::010101010101010111111111111111111101010101111111111111101010101111111111111101011111111110101010111111111111110101111111111010111111111101111111
+DEAL:3d::111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
diff --git a/tests/deal.II/extract_dofs_by_component_02_hp.cc b/tests/deal.II/extract_dofs_by_component_02_hp.cc
new file mode 100644 (file)
index 0000000..c03394b
--- /dev/null
@@ -0,0 +1,93 @@
+//----------------------------  extract_dofs_by_component_02_hp.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_02_hp.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from DoFTools::extract_dofs via
+// the block_select flag
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+                                  // create an FECollection and set
+                                  // one cell to use the second
+                                  // element of this collection
+  hp::FECollection<dim> element;
+  for (unsigned int i=0; i<2; ++i)
+    element.push_back (FESystem<dim> (FE_Q<dim>(1+i), 1,
+                                     FE_Nedelec<dim>(0), 1));
+  hp::DoFHandler<dim> dof(tr);
+  dof.begin_active()->set_active_fe_index(1);
+  dof.distribute_dofs(element);
+
+                                  // try all possible block
+                                  // masks, which we encode as bit
+                                  // strings
+  for (unsigned int int_mask=0; int_mask<(1U<<element[0].n_blocks()); ++int_mask)
+  {
+    std::vector<bool> component_mask (element[0].n_blocks());
+    for (unsigned int c=0; c<element[0].n_blocks(); ++c)
+      component_mask[c] = (int_mask & (1<<c));
+
+    std::vector<bool> dofs (dof.n_dofs());
+    DoFTools::extract_dofs (dof, component_mask, dofs, true);
+
+    for (unsigned int d=0; d<dof.n_dofs(); ++d)
+      deallog << dofs[d];
+    deallog << std::endl;
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_02_hp/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_02_hp/cmp/generic b/tests/deal.II/extract_dofs_by_component_02_hp/cmp/generic
new file mode 100644 (file)
index 0000000..f760614
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:2d::00000000000000000000000000
+DEAL:2d::11011011111100001110000100
+DEAL:2d::00100100000011110001111011
+DEAL:2d::11111111111111111111111111
+DEAL:3d::0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::1101010101010101010101010111111111111111000000000000111111000000000001100000111110000000000110000011000001000
+DEAL:3d::0010101010101010101010101000000000000000111111111111000000111111111110011111000001111111111001111100111110111
+DEAL:3d::1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
diff --git a/tests/deal.II/extract_dofs_by_component_03.cc b/tests/deal.II/extract_dofs_by_component_03.cc
new file mode 100644 (file)
index 0000000..dffe7f3
--- /dev/null
@@ -0,0 +1,84 @@
+//----------------------------  extract_dofs_by_component_03.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_03.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from
+// DoFTools::distribute_cell_to_dof_vector
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_Q<dim>(2), 2);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+                                  // try all possible components
+  for (unsigned int c=0; c<element.n_components(); ++c)
+  {
+    Vector<double> in(tr.n_active_cells());
+    for (unsigned int i=0; i<in.size(); ++i)
+      in[i] = i;
+    Vector<double> out(dof.n_dofs());
+    DoFTools::distribute_cell_to_dof_vector (dof, in, out, c);
+
+    for (unsigned int d=0; d<dof.n_dofs(); ++d)
+      deallog << out[d] << std::endl;
+    deallog << std::endl;
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_03/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_03/cmp/generic b/tests/deal.II/extract_dofs_by_component_03/cmp/generic
new file mode 100644 (file)
index 0000000..0ea218b
--- /dev/null
@@ -0,0 +1,1015 @@
+
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.50
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::2.50
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.50
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::1.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::2.50
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::2.50
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::2.00
+DEAL:2d::0.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::0.00
+DEAL:2d::3.00
+DEAL:2d::
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::1.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.50
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::2.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::3.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.50
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::4.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::5.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.50
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::6.00
+DEAL:3d::0.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::0.00
+DEAL:3d::7.00
+DEAL:3d::
diff --git a/tests/deal.II/extract_dofs_by_component_04.cc b/tests/deal.II/extract_dofs_by_component_04.cc
new file mode 100644 (file)
index 0000000..9c38f1b
--- /dev/null
@@ -0,0 +1,92 @@
+//----------------------------  extract_dofs_by_component_04.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_04.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from DoFTools::extract_constant_modes
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_RaviartThomas<dim>(0), 1,
+                        FE_Q<dim>(1), 1,
+                        FE_Nedelec<dim>(0), 1);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+                                  // try all possible component
+                                  // masks, which we encode as bit
+                                  // strings
+  for (unsigned int int_mask=0; int_mask<(1U<<element.n_components()); ++int_mask)
+  {
+    std::vector<bool> component_mask (element.n_components());
+    for (unsigned int c=0; c<element.n_components(); ++c)
+      component_mask[c] = (int_mask & (1<<c));
+
+    std::vector<std::vector<bool> > constant_modes;
+    DoFTools::extract_constant_modes (dof, component_mask, constant_modes);
+
+    for (unsigned int d=0; d<constant_modes.size(); ++d)
+      {
+       deallog << "constant mode " << d << std::endl;
+       for (unsigned int e=0; e<constant_modes[d].size(); ++e)
+         deallog << constant_modes[d][e];
+       deallog << std::endl;
+      }
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_04/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_04/cmp/generic b/tests/deal.II/extract_dofs_by_component_04/cmp/generic
new file mode 100644 (file)
index 0000000..7bd6058
--- /dev/null
@@ -0,0 +1,2433 @@
+
+DEAL:2d::constant mode 0
+DEAL:2d::111111111
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111111111
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 1
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 0
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 1
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 0
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 2
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 4
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 2
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 4
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 0
+DEAL:2d::111111111111
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010101010101010101010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::010101010101010101010101
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 1
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 4
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::111100001100011000100
+DEAL:2d::constant mode 1
+DEAL:2d::000011110011100111011
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000101000010100001000
+DEAL:2d::constant mode 1
+DEAL:2d::010101010000010100001010000100
+DEAL:2d::constant mode 2
+DEAL:2d::000000001111000011100001110011
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 4
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 2
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 3
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 4
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::000010101010001010100010101001010
+DEAL:2d::constant mode 1
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 2
+DEAL:2d::111100000000110000001100000010000
+DEAL:2d::constant mode 3
+DEAL:2d::000001010101000101010001010100101
+DEAL:2d::constant mode 4
+DEAL:2d::000000000000000000000000000000000
+DEAL:2d::constant mode 0
+DEAL:2d::101010100000000010100000001010000000100000
+DEAL:2d::constant mode 1
+DEAL:2d::000000001010101000001010100000101010001010
+DEAL:2d::constant mode 2
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:2d::constant mode 3
+DEAL:2d::010101010000000001010000000101000000010000
+DEAL:2d::constant mode 4
+DEAL:2d::000000000101010100000101010000010101000101
+DEAL:2d::constant mode 5
+DEAL:2d::000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101010101010101010101010101010101010101010
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010101010101010101010101010101010101010101
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::000000001111110000111110000111110011110000111110011110011110111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000001111000001111000001100001111000001100001100001000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000010101010000001010101000000101000001010101000000101000001010000010000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000011111100000000111110000000011111000011110000000011111000011110000111100111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000001010101000000101010100000010100000101010100000010100000101000001000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111111111111111111111111111111111111111111111111111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000111111000000001111100000000111110000011110000000011111000001111000001111000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111111111000000111111110000011111111000001111100001111111100000111110000111110000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::111111110000000000001111000000001111000000001100000111100000000110000011000001000
+DEAL:3d::constant mode 1
+DEAL:3d::000000001111111111110000111111110000111111110011111000011111111001111100111110111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000010101010000000001010101000000000101000000101010100000000010100000010100000010000
+DEAL:3d::constant mode 1
+DEAL:3d::010101010101010100000000000001010101000000000101010100000000010100000010101010000000001010000001010000001000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000011111111111100000000111111110000000011111111000011111000000001111111100001111100001111100111
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::000000000000000000001111110000000000001111100000000000011111000000011110000000000001111100000001111000000011110000111
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::111111110000000000000000001111000000000000011110000000000000110000000001111000000000000011000000000110000000001000000
+DEAL:3d::constant mode 4
+DEAL:3d::000000001111111111110000000000111111110000000001111111100000001111100000000111111110000000111110000001111100000111000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 0
+DEAL:3d::101010101010101000000000000000000010101010000000000000010101010000000000000010100000000001010101000000000000001010000000000101000000000010000000
+DEAL:3d::constant mode 1
+DEAL:3d::000000000000000000000000000011111100000000000000001111100000000000000001111100000000011110000000000000000111110000000001111000000000111100000111
+DEAL:3d::constant mode 2
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 3
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 4
+DEAL:3d::010101010101010100000000000000000001010101000000000000001010101000000000000001010000000000101010100000000000000101000000000010100000000001000000
+DEAL:3d::constant mode 5
+DEAL:3d::000000000000000011111111111100000000000000111111110000000000000111111110000000001111100000000000011111111000000000111110000000011111000000111000
+DEAL:3d::constant mode 6
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+DEAL:3d::constant mode 7
+DEAL:3d::000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
diff --git a/tests/deal.II/extract_dofs_by_component_05.cc b/tests/deal.II/extract_dofs_by_component_05.cc
new file mode 100644 (file)
index 0000000..e0bf695
--- /dev/null
@@ -0,0 +1,78 @@
+//----------------------------  extract_dofs_by_component_05.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_05.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from
+// DoFTools::count_dofs_per_component with argument only_once=false
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_RaviartThomas<dim>(0), 1,
+                        FE_Q<dim>(1), 1,
+                        FE_Nedelec<dim>(0), 1);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+  std::vector<unsigned int> count (element.n_components());
+  DoFTools::count_dofs_per_component (dof, count, false);
+
+  for (unsigned int d=0; d<count.size(); ++d)
+    deallog << count[d] << std::endl;
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_05/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_05/cmp/generic b/tests/deal.II/extract_dofs_by_component_05/cmp/generic
new file mode 100644 (file)
index 0000000..b042047
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL:2d::9
+DEAL:2d::12
+DEAL:2d::12
+DEAL:2d::9
+DEAL:2d::12
+DEAL:2d::12
+DEAL:3d::27
+DEAL:3d::36
+DEAL:3d::36
+DEAL:3d::36
+DEAL:3d::27
+DEAL:3d::54
+DEAL:3d::54
+DEAL:3d::54
diff --git a/tests/deal.II/extract_dofs_by_component_05_hp.cc b/tests/deal.II/extract_dofs_by_component_05_hp.cc
new file mode 100644 (file)
index 0000000..9899bb1
--- /dev/null
@@ -0,0 +1,82 @@
+//----------------------------  extract_dofs_by_component_05_hp.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_05_hp.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from
+// DoFTools::count_dofs_per_component with argument only_once=false
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+                                  // create an FECollection and set
+                                  // one cell to use the second
+                                  // element of this collection
+  hp::FECollection<dim> element;
+  for (unsigned int i=0; i<2; ++i)
+    element.push_back (FESystem<dim> (FE_Q<dim>(1+i), 1,
+                                     FE_Nedelec<dim>(0), 1));
+  hp::DoFHandler<dim> dof(tr);
+  dof.begin_active()->set_active_fe_index(1);
+  dof.distribute_dofs(element);
+
+  std::vector<unsigned int> count (element.n_components());
+  DoFTools::count_dofs_per_component (dof, count, false);
+
+  for (unsigned int d=0; d<count.size(); ++d)
+    deallog << count[d] << std::endl;
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_05_hp/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_05_hp/cmp/generic b/tests/deal.II/extract_dofs_by_component_05_hp/cmp/generic
new file mode 100644 (file)
index 0000000..def5f70
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL:2d::14
+DEAL:2d::12
+DEAL:2d::12
+DEAL:3d::46
+DEAL:3d::63
+DEAL:3d::63
+DEAL:3d::63
diff --git a/tests/deal.II/extract_dofs_by_component_06.cc b/tests/deal.II/extract_dofs_by_component_06.cc
new file mode 100644 (file)
index 0000000..d542137
--- /dev/null
@@ -0,0 +1,78 @@
+//----------------------------  extract_dofs_by_component_06.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_06.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from
+// DoFTools::count_dofs_per_component with argument only_once=true
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+  FESystem<dim> element (FE_Q<dim>(1), 1,
+                        FE_RaviartThomas<dim>(0), 1,
+                        FE_Q<dim>(1), 1,
+                        FE_Nedelec<dim>(0), 1);
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(element);
+
+  std::vector<unsigned int> count (element.n_components());
+  DoFTools::count_dofs_per_component (dof, count, true);
+
+  for (unsigned int d=0; d<count.size(); ++d)
+    deallog << count[d] << std::endl;
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_06/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_06/cmp/generic b/tests/deal.II/extract_dofs_by_component_06/cmp/generic
new file mode 100644 (file)
index 0000000..ad4caea
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL:2d::9
+DEAL:2d::12
+DEAL:2d::0
+DEAL:2d::9
+DEAL:2d::12
+DEAL:2d::0
+DEAL:3d::27
+DEAL:3d::36
+DEAL:3d::0
+DEAL:3d::0
+DEAL:3d::27
+DEAL:3d::54
+DEAL:3d::0
+DEAL:3d::0
diff --git a/tests/deal.II/extract_dofs_by_component_06_hp.cc b/tests/deal.II/extract_dofs_by_component_06_hp.cc
new file mode 100644 (file)
index 0000000..f09da69
--- /dev/null
@@ -0,0 +1,82 @@
+//----------------------------  extract_dofs_by_component_06_hp.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 2007, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  extract_dofs_by_component_06_hp.cc  ---------------------------
+
+
+// test internal::extract_dofs_by_component for some corner cases that
+// I was unsure about when refactoring some code in there
+//
+// this particular test checks the call path to
+// internal::extract_dofs_by_component from
+// DoFTools::count_dofs_per_component with argument only_once=true
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <fstream>
+
+
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1,1);
+  tr.refine_global (1);
+
+                                  // create an FECollection and set
+                                  // one cell to use the second
+                                  // element of this collection
+  hp::FECollection<dim> element;
+  for (unsigned int i=0; i<2; ++i)
+    element.push_back (FESystem<dim> (FE_Q<dim>(1+i), 1,
+                                     FE_Nedelec<dim>(0), 1));
+  hp::DoFHandler<dim> dof(tr);
+  dof.begin_active()->set_active_fe_index(1);
+  dof.distribute_dofs(element);
+
+  std::vector<unsigned int> count (element.n_components());
+  DoFTools::count_dofs_per_component (dof, count, true);
+
+  for (unsigned int d=0; d<count.size(); ++d)
+    deallog << count[d] << std::endl;
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("extract_dofs_by_component_06_hp/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/extract_dofs_by_component_06_hp/cmp/generic b/tests/deal.II/extract_dofs_by_component_06_hp/cmp/generic
new file mode 100644 (file)
index 0000000..c81bbc3
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL:2d::14
+DEAL:2d::12
+DEAL:2d::0
+DEAL:3d::46
+DEAL:3d::63
+DEAL:3d::0
+DEAL:3d::0
index c1b2c01f2129136216bbfbf921ca514ee5ec13c5..39d637ff89c4a32e07739944fc3b7a40cec25a1c 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -52,7 +52,7 @@ void test (const Triangulation<dim>& tr,
         cell = dof.begin_active(); cell != dof.end(); ++cell)
     {
       fe_values.reinit (cell);
-  
+
       for (unsigned int c=0; c<fe.n_components(); ++c)
                                         // use a vector extractor if there
                                         // are sufficiently many components
@@ -98,7 +98,7 @@ void test (const Triangulation<dim>& tr,
                              (fe_values[vec_components].gradient(i,q) +
                               transpose(fe_values[vec_components].gradient(i,q)))/2,
                              ExcInternalError());
-                     
+
                      Assert (fe_values[vec_components].hessian (i,q)[d]
                              ==
                              fe_values.shape_hessian_component (i,q,c+d),
@@ -134,7 +134,7 @@ int main()
 
   deallog.attach(logfile);
   deallog.depth_console (0);
-  deallog.threshold_double(1.e-12);
+  deallog.threshold_double(1.e-7);
 
   test_hyper_sphere<2>();
   test_hyper_sphere<3>();
index e0548e0257147a5a9b3b49dab8c4e545a83380ac..cdde55972b4163c248b255459b73dd537ae6ee21 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -48,7 +48,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -60,17 +60,19 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<1,dim> >(fe.n_components()));
 
   fe_values.get_function_gradients (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
     {
       FEValuesExtractors::Scalar single_component (c);
       fe_values[single_component].get_function_gradients (fe_function,
                                                          scalar_values);
       deallog << "component=" << c << std::endl;
-      
+
       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
        {
-         deallog << scalar_values[q] << std::endl;
+         for (unsigned int d=0; d<dim; ++d)
+           deallog << scalar_values[q][d] << (d<dim-1 ? " " : "");
+         deallog << std::endl;
          Assert ((scalar_values[q] - vector_values[q][c]).norm()
                  <= 1e-12 * scalar_values[q].norm(),
                  ExcInternalError());
index 6992daffc693b3a80e81b37094798d6b0ca7a9c3..e725b880cf3b9fd4d2b4fe0a2ccd4443b689fc20 100644 (file)
@@ -16,10 +16,10 @@ DEAL::43.2 118.
 DEAL::125. -61.1
 DEAL::125. -40.8
 DEAL::component=3
-DEAL::0.00 5.84
-DEAL::0.00 5.84
-DEAL::0.00 9.52
-DEAL::0.00 9.52
+DEAL::0 5.84
+DEAL::0 5.84
+DEAL::0 9.52
+DEAL::0 9.52
 DEAL::component=4
 DEAL::5.84 -6.75
 DEAL::5.84 6.75
@@ -36,8 +36,8 @@ DEAL::2.37 4.73 9.46
 DEAL::2.37 4.73 9.46
 DEAL::2.37 4.73 9.46
 DEAL::component=1
-DEAL::-2.21e-12 -275. -138.
-DEAL::2.77e-12 -275. -138.
+DEAL::0 -275. -138.
+DEAL::0 -275. -138.
 DEAL::-367. -275. 4.71e+03
 DEAL::367. -275. 4.92e+03
 DEAL::-184. 4.57e+03 -138.
@@ -45,47 +45,47 @@ DEAL::184. 4.79e+03 -138.
 DEAL::4.80e+03 4.57e+03 4.71e+03
 DEAL::-4.38e+03 4.79e+03 4.92e+03
 DEAL::component=2
-DEAL::-275. -8.99e-13 -138.
+DEAL::-275. 0 -138.
 DEAL::-275. -459. 4.80e+03
-DEAL::-275. 1.41e-12 -138.
+DEAL::-275. 0 -138.
 DEAL::-275. 459. 5.02e+03
 DEAL::4.67e+03 -91.8 -138.
 DEAL::4.67e+03 3.52e+03 4.80e+03
 DEAL::4.88e+03 91.8 -138.
 DEAL::4.88e+03 -3.09e+03 5.02e+03
 DEAL::component=3
-DEAL::-275. -138. 1.36e-12
+DEAL::-275. -138. 0
 DEAL::-275. 4.90e+03 -367.
 DEAL::4.76e+03 -138. -184.
 DEAL::4.76e+03 4.90e+03 2.23e+03
-DEAL::-275. -138. -1.36e-12
+DEAL::-275. -138. 0
 DEAL::-275. 5.11e+03 367.
 DEAL::4.97e+03 -138. 184.
 DEAL::4.97e+03 5.11e+03 -1.81e+03
 DEAL::component=4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::component=5
-DEAL::5.60 -1.84e-16 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 -1.84e-16 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 7.35e-16 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 7.35e-16 22.4
-DEAL::5.60 0.00 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 0 22.4
 DEAL::component=6
-DEAL::5.60 11.2 2.53e-16
-DEAL::5.60 11.2 1.01e-15
-DEAL::5.60 11.2 1.01e-15
-DEAL::5.60 11.2 0.00
-DEAL::5.60 11.2 2.53e-16
-DEAL::5.60 11.2 1.01e-15
-DEAL::5.60 11.2 1.01e-15
-DEAL::5.60 11.2 0.00
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
+DEAL::5.60 11.2 0
index e8e5925a5e1656f7524c3e078c674cb278d12bfe..51cd429bfd5454f4a075c8752c16572bc805c6f3 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -48,7 +48,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -60,17 +60,20 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<2,dim> >(fe.n_components()));
 
   fe_values.get_function_hessians (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
     {
       FEValuesExtractors::Scalar single_component (c);
       fe_values[single_component].get_function_hessians (fe_function,
                                                         scalar_values);
       deallog << "component=" << c << std::endl;
-      
+
       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
        {
-         deallog << scalar_values[q] << std::endl;
+         for (unsigned int d=0; d<dim; ++d)
+           for (unsigned int e=0; e<dim; ++e)
+             deallog << scalar_values[q][d][e] << (d<dim-1 || e<dim-1 ? " " : "");
+         deallog << std::endl;
          Assert ((scalar_values[q] - vector_values[q][c]).norm()
                  <= 1e-12 * scalar_values[q].norm(),
                  ExcInternalError());
@@ -103,7 +106,7 @@ int main()
 
   deallog.attach(logfile);
   deallog.depth_console (0);
-  deallog.threshold_double(1.e-7);
+  deallog.threshold_double(1.e-5);
 
   test_hyper_sphere<2>();
   test_hyper_sphere<3>();
index 160fddf650a191b16d1d3cea77c2f6fcc33bbd6d..5b2728f19067e4651a2ebc8b247940518b897a48 100644 (file)
@@ -1,91 +1,91 @@
 
 DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(0)]
 DEAL::component=0
-DEAL::5.60e-11 1.30 1.30 -1.50
-DEAL::0.00 1.30 1.30 1.50
-DEAL::0.00 3.45 3.45 -3.99
-DEAL::0.00 3.45 3.45 3.99
+DEAL::0 1.30 1.30 -1.50
+DEAL::0 1.30 1.30 1.50
+DEAL::0 3.45 3.45 -3.99
+DEAL::0 3.45 3.45 3.99
 DEAL::component=1
 DEAL::-50.8 877. 848. -953.
 DEAL::-50.8 -779. -889. -641.
 DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03
 DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03
 DEAL::component=2
-DEAL::3.99e-09 278. 209. -236.
-DEAL::-6.72e-10 278. 209. -247.
-DEAL::-1.25e-08 374. 46.3 -122.
-DEAL::8.76e-10 374. 46.3 -1.16e+03
+DEAL::0 278. 209. -236.
+DEAL::0 278. 209. -247.
+DEAL::0 374. 46.3 -122.
+DEAL::0 374. 46.3 -1.16e+03
 DEAL::component=3
-DEAL::0.00 0.00 2.69e-10 9.43
-DEAL::0.00 0.00 8.06e-10 9.43
-DEAL::0.00 0.00 -8.76e-10 25.0
-DEAL::0.00 0.00 8.76e-10 25.0
+DEAL::0 0 0 9.43
+DEAL::0 0 0 9.43
+DEAL::0 0 0 25.0
+DEAL::0 0 0 25.0
 DEAL::component=4
-DEAL::2.69e-10 9.43 18.9 -21.8
-DEAL::8.06e-10 9.43 18.9 21.8
-DEAL::-8.76e-10 25.0 50.0 -57.8
-DEAL::8.76e-10 25.0 50.0 57.8
+DEAL::0 9.43 18.9 -21.8
+DEAL::0 9.43 18.9 21.8
+DEAL::0 25.0 50.0 -57.8
+DEAL::0 25.0 50.0 57.8
 DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)]
 DEAL::component=0
-DEAL::0.00 9.85e-10 5.09e-10 1.54e-09 2.44e-26 5.91e-10 3.28e-10 4.60e-10 -2.17e-09
-DEAL::0.00 9.85e-10 1.74e-09 -1.38e-09 0.00 2.53e-09 -1.30e-09 5.58e-10 1.64e-09
-DEAL::4.27e-10 -1.18e-09 1.26e-09 2.89e-09 -8.21e-10 2.89e-09 -8.54e-10 -7.88e-10 1.64e-09
-DEAL::0.00 -1.18e-09 -2.30e-10 -3.94e-10 -8.21e-10 -4.60e-10 -7.88e-10 -7.88e-10 -2.17e-09
-DEAL::0.00 5.09e-10 -1.97e-10 1.97e-10 -1.94e-26 -1.38e-09 3.28e-10 4.60e-10 3.23e-27
-DEAL::0.00 5.09e-10 -2.13e-10 -3.94e-10 1.08e-09 -3.94e-10 -1.63e-09 9.52e-10 -1.11e-26
-DEAL::-5.42e-10 4.92e-11 5.42e-10 1.97e-10 -8.21e-10 -3.94e-10 -2.36e-09 -7.88e-10 -5.18e-26
-DEAL::0.00 4.92e-11 4.93e-11 -3.94e-10 0.00 -1.38e-09 -7.88e-10 -7.88e-10 0.00
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
 DEAL::component=1
-DEAL::2.57e-07 -1.50e+03 -752. -1.50e+03 3.49e-07 1.99e+04 -752. 1.99e+04 5.31e-08
-DEAL::-3.47e-07 1.50e+03 752. 1.50e+03 5.81e-07 2.07e+04 752. 2.07e+04 7.10e-07
-DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -4.08e-07 1.99e+04 2.12e+04 1.99e+04 2.96e-06
-DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 -2.94e-07 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
-DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -6.29e-08 1.99e+04 -752. 1.99e+04 2.25e-08
-DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 2.06e-06 2.07e+04 752. 2.07e+04 3.03e-13
-DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -8.04e-07 1.99e+04 2.12e+04 1.99e+04 -7.68e-07
-DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.10e-08 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
+DEAL::0 -1.50e+03 -752. -1.50e+03 0 1.99e+04 -752. 1.99e+04 0
+DEAL::0 1.50e+03 752. 1.50e+03 0 2.07e+04 752. 2.07e+04 0
+DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 0 1.99e+04 2.12e+04 1.99e+04 0
+DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 0 2.07e+04 -1.94e+04 2.07e+04 0
+DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 0 1.99e+04 -752. 1.99e+04 0
+DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 0 2.07e+04 752. 2.07e+04 0
+DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 0 1.99e+04 2.12e+04 1.99e+04 0
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 0 2.07e+04 -1.94e+04 2.07e+04 0
 DEAL::component=2
-DEAL::-2.06e-07 -1.88e+03 2.02e+04 -1.88e+03 1.75e-06 -376. 2.02e+04 -376. 4.37e-07
-DEAL::-3.62e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 2.93e-06
-DEAL::1.88e-08 1.88e+03 2.11e+04 1.88e+03 1.28e-06 376. 2.11e+04 376. 7.40e-07
-DEAL::5.04e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -9.08e-07
-DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -5.17e-07
-DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13
-DEAL::-1.46e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -9.25e-08
-DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00
+DEAL::0 -1.88e+03 2.02e+04 -1.88e+03 0 -376. 2.02e+04 -376. 0
+DEAL::0 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 0
+DEAL::0 1.88e+03 2.11e+04 1.88e+03 0 376. 2.11e+04 376. 0
+DEAL::0 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 0
+DEAL::0 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 0
+DEAL::0 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 0
+DEAL::0 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. 0
+DEAL::0 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0
 DEAL::component=3
-DEAL::5.81e-08 2.06e+04 -1.50e+03 2.06e+04 3.99e-08 -752. -1.50e+03 -752. -1.93e-06
-DEAL::-2.94e-08 2.06e+04 -1.50e+03 2.06e+04 2.26e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::3.01e-06 2.06e+04 9.89e+03 2.06e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::-9.50e-07 2.06e+04 9.89e+03 2.06e+04 -3.25e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -1.18e-07 752. 1.50e+03 752. -2.35e-06
-DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 1.87e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::-1.34e-06 2.15e+04 -8.16e+03 2.15e+04 1.09e-07 752. -8.16e+03 752. 1.50e+03
-DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 5.27e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::0 2.06e+04 -1.50e+03 2.06e+04 0 -752. -1.50e+03 -752. 0
+DEAL::0 2.06e+04 -1.50e+03 2.06e+04 0 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::0 2.06e+04 9.89e+03 2.06e+04 0 -752. 9.89e+03 -752. 1.50e+03
+DEAL::0 2.06e+04 9.89e+03 2.06e+04 0 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::0 2.15e+04 1.50e+03 2.15e+04 0 752. 1.50e+03 752. 0
+DEAL::0 2.15e+04 1.50e+03 2.15e+04 0 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::0 2.15e+04 -8.16e+03 2.15e+04 0 752. -8.16e+03 752. 1.50e+03
+DEAL::0 2.15e+04 -8.16e+03 2.15e+04 0 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
 DEAL::component=4
-DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26
-DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08
-DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08
-DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09
-DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26
-DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31
-DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09
-DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
 DEAL::component=5
-DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10
-DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08
-DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08
-DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09
-DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09
-DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25
-DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10
-DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
 DEAL::component=6
-DEAL::-1.63e-10 2.42e-09 2.38e-26 4.78e-09 -1.63e-10 1.76e-26 -7.07e-10 -4.89e-10 3.15e-26
-DEAL::-4.35e-10 2.58e-09 4.20e-09 -3.37e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.90e-25
-DEAL::1.10e-09 -3.43e-09 3.94e-09 8.10e-09 -3.17e-09 8.41e-09 -2.17e-10 -5.98e-09 6.64e-25
-DEAL::0.00 -2.89e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00
-DEAL::-1.63e-10 1.11e-09 -2.51e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -5.96e-26
-DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 3.08e-10 -1.08e-26 -3.70e-09 2.17e-10 -5.71e-26
-DEAL::-1.79e-09 -8.06e-10 1.31e-09 -2.41e-09 -3.17e-09 -7.87e-26 -2.17e-10 -5.98e-09 5.87e-26
-DEAL::0.00 -2.63e-10 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
+DEAL::0 0 0 0 0 0 0 0 0
index cb7ae02a9b761d20b82829dc6a888360b9900738..e54149f467b1aa27b9c42d8297cbd523b34996f0 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -51,7 +51,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -63,17 +63,21 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<2,dim> >(fe.n_components()));
 
   fe_values.get_function_hessians (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
     {
       FEValuesExtractors::Scalar single_component (c);
       fe_values[single_component].get_function_hessians (fe_function,
                                                         scalar_values);
       deallog << "component=" << c << std::endl;
-      
+
       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
        {
-         deallog << scalar_values[q] << std::endl;
+         for (unsigned int d=0; d<dim; ++d)
+           for (unsigned int e=0; e<dim; ++e)
+             deallog << scalar_values[q][d][e] << (d<dim-1 || e<dim-1 ? " " : "");
+         deallog << std::endl;
+
          Assert ((scalar_values[q] - vector_values[q][c]).norm()
                  <= 1e-12 * scalar_values[q].norm(),
                  ExcInternalError());
@@ -104,7 +108,7 @@ int main()
 
   deallog.attach(logfile);
   deallog.depth_console (0);
-  deallog.threshold_double(1.e-7);
+  deallog.threshold_double(1.e-5);
 
   test_hyper_sphere<2>();
   test_hyper_sphere<3>();
index 6ce4a0c45a798a63635fc5571de370719e49d3c6..3e4e837302bbfd1ea7943c4d5dd3959f2005034a 100644 (file)
@@ -6,35 +6,35 @@ DEAL::-22.7 -530. -617. -425.
 DEAL::-949. 1.90e+03 1.76e+03 -1.73e+03
 DEAL::-949. -1.73e+03 -1.39e+03 -877.
 DEAL::component=1
-DEAL::2.33e-09 188. 147. -148.
-DEAL::-3.58e-10 188. 147. -204.
-DEAL::-7.59e-09 174. -23.5 33.7
-DEAL::5.84e-10 174. -23.5 -967.
+DEAL::0 188. 147. -148.
+DEAL::0 188. 147. -204.
+DEAL::0 174. -23.5 33.7
+DEAL::0 174. -23.5 -967.
 DEAL::FE=FE_RaviartThomas<3>(1)
 DEAL::component=0
-DEAL::2.57e-07 -1.50e+03 -752. -1.50e+03 2.23e-07 1.24e+04 -752. 1.24e+04 1.11e-08
-DEAL::2.41e-07 1.50e+03 752. 1.50e+03 3.42e-07 1.32e+04 752. 1.32e+04 4.58e-07
-DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -1.98e-07 1.24e+04 2.12e+04 1.24e+04 1.83e-06
-DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 -1.68e-07 1.32e+04 -1.94e+04 1.32e+04 -5.46e-07
-DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.24e+04 -752. 1.24e+04 2.25e-08
-DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 1.23e-06 1.32e+04 752. 1.32e+04 1.80e-13
-DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.09e-07 1.24e+04 2.12e+04 1.24e+04 -5.15e-07
-DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.10e-08 1.32e+04 -1.94e+04 1.32e+04 -5.46e-07
+DEAL::0 -1.50e+03 -752. -1.50e+03 0 1.24e+04 -752. 1.24e+04 0
+DEAL::0 1.50e+03 752. 1.50e+03 0 1.32e+04 752. 1.32e+04 0
+DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 0 1.24e+04 2.12e+04 1.24e+04 0
+DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 0 1.32e+04 -1.94e+04 1.32e+04 0
+DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 0 1.24e+04 -752. 1.24e+04 0
+DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 0 1.32e+04 752. 1.32e+04 0
+DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 0 1.24e+04 2.12e+04 1.24e+04 0
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 0 1.32e+04 -1.94e+04 1.32e+04 0
 DEAL::component=1
-DEAL::-1.21e-07 -1.88e+03 1.27e+04 -1.88e+03 1.29e-06 -376. 1.27e+04 -376. 2.69e-07
-DEAL::-2.36e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 1.84e-06
-DEAL::-1.05e-08 1.88e+03 1.36e+04 1.88e+03 1.03e-06 376. 1.36e+04 376. 4.46e-07
-DEAL::5.04e-08 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -5.72e-07
-DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. -3.07e-07
-DEAL::-2.14e-08 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 4.27e-13
-DEAL::-9.39e-07 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. -5.04e-08
-DEAL::0.00 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0.00
+DEAL::0 -1.88e+03 1.27e+04 -1.88e+03 0 -376. 1.27e+04 -376. 0
+DEAL::0 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 0
+DEAL::0 1.88e+03 1.36e+04 1.88e+03 0 376. 1.36e+04 376. 0
+DEAL::0 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 0
+DEAL::0 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. 0
+DEAL::0 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 0
+DEAL::0 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. 0
+DEAL::0 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0
 DEAL::component=2
-DEAL::-2.60e-08 1.31e+04 -1.50e+03 1.31e+04 -2.10e-09 -752. -1.50e+03 -752. -1.05e-06
-DEAL::1.26e-08 1.31e+04 -1.50e+03 1.31e+04 1.42e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::1.83e-06 1.31e+04 9.89e+03 1.31e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::-5.72e-07 1.31e+04 9.89e+03 1.31e+04 -2.03e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -7.57e-08 752. 1.50e+03 752. -1.34e-06
-DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.20e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::-8.49e-07 1.40e+04 -8.16e+03 1.40e+04 6.72e-08 752. -8.16e+03 752. 1.50e+03
-DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 3.17e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::0 1.31e+04 -1.50e+03 1.31e+04 0 -752. -1.50e+03 -752. 0
+DEAL::0 1.31e+04 -1.50e+03 1.31e+04 0 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::0 1.31e+04 9.89e+03 1.31e+04 0 -752. 9.89e+03 -752. 1.50e+03
+DEAL::0 1.31e+04 9.89e+03 1.31e+04 0 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::0 1.40e+04 1.50e+03 1.40e+04 0 752. 1.50e+03 752. 0
+DEAL::0 1.40e+04 1.50e+03 1.40e+04 0 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::0 1.40e+04 -8.16e+03 1.40e+04 0 752. -8.16e+03 752. 1.50e+03
+DEAL::0 1.40e+04 -8.16e+03 1.40e+04 0 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
index 502ccaeefc7e6389251cdb3b6d2c6ac67de71a4d..2e8aad22680156880b8602ecae4e7ead6e55d9c9 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -51,7 +51,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -63,17 +63,21 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<2,dim> >(fe.n_components()));
 
   fe_values.get_function_hessians (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
     {
       FEValuesExtractors::Scalar single_component (c);
       fe_values[single_component].get_function_hessians (fe_function,
                                                         scalar_values);
       deallog << "component=" << c << std::endl;
-      
+
       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
        {
-         deallog << scalar_values[q] << std::endl;
+         for (unsigned int d=0; d<dim; ++d)
+           for (unsigned int e=0; e<dim; ++e)
+             deallog << scalar_values[q][d][e] << (d<dim-1 || e<dim-1 ? " " : "");
+         deallog << std::endl;
+
          Assert ((scalar_values[q] - vector_values[q][c]).norm()
                  <= 1e-12 * scalar_values[q].norm(),
                  ExcInternalError());
index ea7a73ae1ecf86d7cbcda769118eeb401b96df75..0c21e8169dcb95595e35a22e49a7ca3d3acc8117 100644 (file)
@@ -1,10 +1,10 @@
 
 DEAL::FE=FE_Nedelec<2>(1)
 DEAL::component=0
-DEAL::1.03e-25 -17.8 -30.7 14.9
-DEAL::0.00 -17.8 -30.7 234.
-DEAL::0.00 321. 247. -363.
-DEAL::0.00 321. 247. 1.02e+03
+DEAL::0 -17.8 -30.7 14.9
+DEAL::0 -17.8 -30.7 234.
+DEAL::0 321. 247. -363.
+DEAL::0 321. 247. 1.02e+03
 DEAL::component=1
 DEAL::7.43 -154. -143. 177.
 DEAL::7.43 219. 164. 370.
@@ -12,29 +12,29 @@ DEAL::406. -844. -809. 839.
 DEAL::406. 1.02e+03 1.17e+03 1.53e+03
 DEAL::FE=FE_Nedelec<3>(1)
 DEAL::component=0
-DEAL::0.00 -1.26e+03 -714. -1.26e+03 -32.6 -13.2 -714. -13.2 -32.6
-DEAL::0.00 -1.26e+03 -714. -1.26e+03 2.57e+03 1.10e+03 -714. 1.10e+03 2.02e+03
-DEAL::-7.62e-08 1.34e+03 -820. 1.34e+03 -32.6 13.2 -820. 13.2 -32.6
-DEAL::0.00 1.34e+03 -820. 1.34e+03 2.57e+03 -1.31e+03 -820. -1.31e+03 2.24e+03
-DEAL::0.00 -1.37e+03 1.34e+03 -1.37e+03 -32.6 13.2 1.34e+03 13.2 -32.6
-DEAL::0.00 -1.37e+03 1.34e+03 -1.37e+03 2.79e+03 -1.31e+03 1.34e+03 -1.31e+03 2.02e+03
-DEAL::8.30e-08 1.45e+03 1.45e+03 1.45e+03 -32.6 -13.2 1.45e+03 -13.2 -32.6
-DEAL::0.00 1.45e+03 1.45e+03 1.45e+03 2.79e+03 1.52e+03 1.45e+03 1.52e+03 2.24e+03
+DEAL::0 -1.26e+03 -714. -1.26e+03 -32.6 -13.2 -714. -13.2 -32.6
+DEAL::0 -1.26e+03 -714. -1.26e+03 2.57e+03 1.10e+03 -714. 1.10e+03 2.02e+03
+DEAL::0 1.34e+03 -820. 1.34e+03 -32.6 13.2 -820. 13.2 -32.6
+DEAL::0 1.34e+03 -820. 1.34e+03 2.57e+03 -1.31e+03 -820. -1.31e+03 2.24e+03
+DEAL::0 -1.37e+03 1.34e+03 -1.37e+03 -32.6 13.2 1.34e+03 13.2 -32.6
+DEAL::0 -1.37e+03 1.34e+03 -1.37e+03 2.79e+03 -1.31e+03 1.34e+03 -1.31e+03 2.02e+03
+DEAL::0 1.45e+03 1.45e+03 1.45e+03 -32.6 -13.2 1.45e+03 -13.2 -32.6
+DEAL::0 1.45e+03 1.45e+03 1.45e+03 2.79e+03 1.52e+03 1.45e+03 1.52e+03 2.24e+03
 DEAL::component=1
-DEAL::-32.6 -1.33e+03 -13.2 -1.33e+03 -2.47e-14 -229. -13.2 -229. -32.6
-DEAL::-32.6 1.41e+03 13.2 1.41e+03 0.00 -335. 13.2 -335. -32.6
+DEAL::-32.6 -1.33e+03 -13.2 -1.33e+03 0 -229. -13.2 -229. -32.6
+DEAL::-32.6 1.41e+03 13.2 1.41e+03 0 -335. 13.2 -335. -32.6
 DEAL::2.71e+03 -1.33e+03 1.15e+03 -1.33e+03 1.23e-07 -229. 1.15e+03 -229. 1.05e+03
-DEAL::2.71e+03 1.41e+03 -1.36e+03 1.41e+03 9.06e-08 -335. -1.36e+03 -335. 1.27e+03
-DEAL::-32.6 -1.44e+03 13.2 -1.44e+03 9.40e-15 857. 13.2 857. -32.6
-DEAL::-32.6 1.51e+03 -13.2 1.51e+03 -9.30e-08 963. -13.2 963. -32.6
-DEAL::2.92e+03 -1.44e+03 -1.36e+03 -1.44e+03 8.09e-08 857. -1.36e+03 857. 1.05e+03
-DEAL::2.92e+03 1.51e+03 1.58e+03 1.51e+03 0.00 963. 1.58e+03 963. 1.27e+03
+DEAL::2.71e+03 1.41e+03 -1.36e+03 1.41e+03 0 -335. -1.36e+03 -335. 1.27e+03
+DEAL::-32.6 -1.44e+03 13.2 -1.44e+03 0 857. 13.2 857. -32.6
+DEAL::-32.6 1.51e+03 -13.2 1.51e+03 0 963. -13.2 963. -32.6
+DEAL::2.92e+03 -1.44e+03 -1.36e+03 -1.44e+03 0 857. -1.36e+03 857. 1.05e+03
+DEAL::2.92e+03 1.51e+03 1.58e+03 1.51e+03 0 963. 1.58e+03 963. 1.27e+03
 DEAL::component=2
-DEAL::-32.6 -13.2 -845. -13.2 -32.6 -478. -845. -478. -1.94e-08
-DEAL::-32.6 13.2 922. 13.2 -32.6 -584. 922. -584. 4.75e-08
-DEAL::-32.6 13.2 -951. 13.2 -32.6 739. -951. 739. 8.09e-08
-DEAL::-32.6 -13.2 1.03e+03 -13.2 -32.6 845. 1.03e+03 845. -2.94e-08
-DEAL::1.73e+03 1.21e+03 -845. 1.21e+03 1.18e+03 -478. -845. -478. -5.70e-15
-DEAL::1.73e+03 -1.42e+03 922. -1.42e+03 1.40e+03 -584. 922. -584. 3.83e-14
-DEAL::1.95e+03 -1.42e+03 -951. -1.42e+03 1.18e+03 739. -951. 739. 1.33e-14
-DEAL::1.95e+03 1.63e+03 1.03e+03 1.63e+03 1.40e+03 845. 1.03e+03 845. 0.00
+DEAL::-32.6 -13.2 -845. -13.2 -32.6 -478. -845. -478. 0
+DEAL::-32.6 13.2 922. 13.2 -32.6 -584. 922. -584. 0
+DEAL::-32.6 13.2 -951. 13.2 -32.6 739. -951. 739. 0
+DEAL::-32.6 -13.2 1.03e+03 -13.2 -32.6 845. 1.03e+03 845. 0
+DEAL::1.73e+03 1.21e+03 -845. 1.21e+03 1.18e+03 -478. -845. -478. 0
+DEAL::1.73e+03 -1.42e+03 922. -1.42e+03 1.40e+03 -584. 922. -584. 0
+DEAL::1.95e+03 -1.42e+03 -951. -1.42e+03 1.18e+03 739. -951. 739. 0
+DEAL::1.95e+03 1.63e+03 1.03e+03 1.63e+03 1.40e+03 845. 1.03e+03 845. 0
index 10b18c316dc117b6409240925b5ffbc69bc9928c..e59731b34633b7351dca199b05fa32af757b497e 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -51,7 +51,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -63,17 +63,21 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<2,dim> >(fe.n_components()));
 
   fe_values.get_function_hessians (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
     {
       FEValuesExtractors::Scalar single_component (c);
       fe_values[single_component].get_function_hessians (fe_function,
                                                         scalar_values);
       deallog << "component=" << c << std::endl;
-      
+
       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
        {
-         deallog << scalar_values[q] << std::endl;
+         for (unsigned int d=0; d<dim; ++d)
+           for (unsigned int e=0; e<dim; ++e)
+             deallog << scalar_values[q][d][e] << (d<dim-1 || e<dim-1 ? " " : "");
+         deallog << std::endl;
+
          Assert ((scalar_values[q] - vector_values[q][c]).norm()
                  <= 1e-12 * scalar_values[q].norm(),
                  ExcInternalError());
@@ -104,7 +108,7 @@ int main()
 
   deallog.attach(logfile);
   deallog.depth_console (0);
-  deallog.threshold_double(1.e-7);
+  deallog.threshold_double(1.e-5);
 
   test_hyper_sphere<2>();
   test_hyper_sphere<3>();
index 348c174f8dec9247e24bb9e265c7ccf8027ad16a..a96a35bba1fdc391b30404aee04d3b3ce943930f 100644 (file)
@@ -6,35 +6,35 @@ DEAL::-22.7 -530. -617. -425.
 DEAL::-949. 1.90e+03 1.76e+03 -1.73e+03
 DEAL::-949. -1.73e+03 -1.39e+03 -877.
 DEAL::component=1
-DEAL::2.33e-09 188. 147. -148.
-DEAL::-3.58e-10 188. 147. -204.
-DEAL::-7.59e-09 174. -23.5 33.7
-DEAL::5.84e-10 174. -23.5 -967.
+DEAL::0 188. 147. -148.
+DEAL::0 188. 147. -204.
+DEAL::0 174. -23.5 33.7
+DEAL::0 174. -23.5 -967.
 DEAL::FE=FESystem<3>[FE_RaviartThomas<3>(1)]
 DEAL::component=0
-DEAL::2.57e-07 -1.50e+03 -752. -1.50e+03 2.23e-07 1.24e+04 -752. 1.24e+04 1.11e-08
-DEAL::2.41e-07 1.50e+03 752. 1.50e+03 3.42e-07 1.32e+04 752. 1.32e+04 4.58e-07
-DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -1.98e-07 1.24e+04 2.12e+04 1.24e+04 1.83e-06
-DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 -1.68e-07 1.32e+04 -1.94e+04 1.32e+04 -5.46e-07
-DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.24e+04 -752. 1.24e+04 2.25e-08
-DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 1.23e-06 1.32e+04 752. 1.32e+04 1.80e-13
-DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.09e-07 1.24e+04 2.12e+04 1.24e+04 -5.15e-07
-DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.10e-08 1.32e+04 -1.94e+04 1.32e+04 -5.46e-07
+DEAL::0 -1.50e+03 -752. -1.50e+03 0 1.24e+04 -752. 1.24e+04 0
+DEAL::0 1.50e+03 752. 1.50e+03 0 1.32e+04 752. 1.32e+04 0
+DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 0 1.24e+04 2.12e+04 1.24e+04 0
+DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 0 1.32e+04 -1.94e+04 1.32e+04 0
+DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 0 1.24e+04 -752. 1.24e+04 0
+DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 0 1.32e+04 752. 1.32e+04 0
+DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 0 1.24e+04 2.12e+04 1.24e+04 0
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 0 1.32e+04 -1.94e+04 1.32e+04 0
 DEAL::component=1
-DEAL::-1.21e-07 -1.88e+03 1.27e+04 -1.88e+03 1.29e-06 -376. 1.27e+04 -376. 2.69e-07
-DEAL::-2.36e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 1.84e-06
-DEAL::-1.05e-08 1.88e+03 1.36e+04 1.88e+03 1.03e-06 376. 1.36e+04 376. 4.46e-07
-DEAL::5.04e-08 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -5.72e-07
-DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. -3.07e-07
-DEAL::-2.14e-08 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 4.27e-13
-DEAL::-9.39e-07 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. -5.04e-08
-DEAL::0.00 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0.00
+DEAL::0 -1.88e+03 1.27e+04 -1.88e+03 0 -376. 1.27e+04 -376. 0
+DEAL::0 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 0
+DEAL::0 1.88e+03 1.36e+04 1.88e+03 0 376. 1.36e+04 376. 0
+DEAL::0 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 0
+DEAL::0 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. 0
+DEAL::0 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 0
+DEAL::0 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. 0
+DEAL::0 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0
 DEAL::component=2
-DEAL::-2.60e-08 1.31e+04 -1.50e+03 1.31e+04 -2.10e-09 -752. -1.50e+03 -752. -1.05e-06
-DEAL::1.26e-08 1.31e+04 -1.50e+03 1.31e+04 1.42e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::1.83e-06 1.31e+04 9.89e+03 1.31e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::-5.72e-07 1.31e+04 9.89e+03 1.31e+04 -2.03e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -7.57e-08 752. 1.50e+03 752. -1.34e-06
-DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.20e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::-8.49e-07 1.40e+04 -8.16e+03 1.40e+04 6.72e-08 752. -8.16e+03 752. 1.50e+03
-DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 3.17e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::0 1.31e+04 -1.50e+03 1.31e+04 0 -752. -1.50e+03 -752. 0
+DEAL::0 1.31e+04 -1.50e+03 1.31e+04 0 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::0 1.31e+04 9.89e+03 1.31e+04 0 -752. 9.89e+03 -752. 1.50e+03
+DEAL::0 1.31e+04 9.89e+03 1.31e+04 0 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::0 1.40e+04 1.50e+03 1.40e+04 0 752. 1.50e+03 752. 0
+DEAL::0 1.40e+04 1.50e+03 1.40e+04 0 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::0 1.40e+04 -8.16e+03 1.40e+04 0 752. -8.16e+03 752. 1.50e+03
+DEAL::0 1.40e+04 -8.16e+03 1.40e+04 0 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
index 025c18a2ea1c7a9f278554b381dc863074639b98..024261d7a0bf4b8b358f8fe087168f0f551ff042 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -48,7 +48,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -60,7 +60,7 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<1,dim> >(fe.n_components()));
 
   fe_values.get_function_gradients (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
                                     // use a vector extractor if there
                                     // are sufficiently many components
@@ -72,11 +72,13 @@ void test (const Triangulation<dim>& tr,
        fe_values[vector_components].get_function_gradients (fe_function,
                                                            selected_vector_values);
        deallog << "component=" << c << std::endl;
-      
+
        for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
          for (unsigned int d=0; d<dim; ++d)
            {
-             deallog << selected_vector_values[q][d] << std::endl;
+             for (unsigned int e=0; e<dim; ++e)
+               deallog << selected_vector_values[q][d][e] << (e<dim-1 ? " " : "");
+             deallog << std::endl;
              Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
                      <= 1e-12 * selected_vector_values[q][d].norm(),
                      ExcInternalError());
index 3cd362911800819f922aa14825fffabebda51f39..fd01def79710e7e6b36e8803c3ead95fdcf2265b 100644 (file)
@@ -20,33 +20,33 @@ DEAL::-295. 296.
 DEAL::125. -40.8
 DEAL::component=2
 DEAL::43.2 -31.7
-DEAL::0.00 5.84
+DEAL::0 5.84
 DEAL::43.2 118.
-DEAL::0.00 5.84
+DEAL::0 5.84
 DEAL::125. -61.1
-DEAL::0.00 9.52
+DEAL::0 9.52
 DEAL::125. -40.8
-DEAL::0.00 9.52
+DEAL::0 9.52
 DEAL::component=3
-DEAL::0.00 5.84
+DEAL::0 5.84
 DEAL::5.84 -6.75
-DEAL::0.00 5.84
+DEAL::0 5.84
 DEAL::5.84 6.75
-DEAL::0.00 9.52
+DEAL::0 9.52
 DEAL::9.52 -11.0
-DEAL::0.00 9.52
+DEAL::0 9.52
 DEAL::9.52 11.0
 DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)]
 DEAL::component=0
 DEAL::2.37 4.73 9.46
-DEAL::-2.21e-12 -275. -138.
-DEAL::-275. -8.99e-13 -138.
+DEAL::0 -275. -138.
+DEAL::-275. 0 -138.
 DEAL::2.37 4.73 9.46
-DEAL::2.77e-12 -275. -138.
+DEAL::0 -275. -138.
 DEAL::-275. -459. 4.80e+03
 DEAL::2.37 4.73 9.46
 DEAL::-367. -275. 4.71e+03
-DEAL::-275. 1.41e-12 -138.
+DEAL::-275. 0 -138.
 DEAL::2.37 4.73 9.46
 DEAL::367. -275. 4.92e+03
 DEAL::-275. 459. 5.02e+03
@@ -63,21 +63,21 @@ DEAL::2.37 4.73 9.46
 DEAL::-4.38e+03 4.79e+03 4.92e+03
 DEAL::4.88e+03 -3.09e+03 5.02e+03
 DEAL::component=1
-DEAL::-2.21e-12 -275. -138.
-DEAL::-275. -8.99e-13 -138.
-DEAL::-275. -138. 1.36e-12
-DEAL::2.77e-12 -275. -138.
+DEAL::0 -275. -138.
+DEAL::-275. 0 -138.
+DEAL::-275. -138. 0
+DEAL::0 -275. -138.
 DEAL::-275. -459. 4.80e+03
 DEAL::-275. 4.90e+03 -367.
 DEAL::-367. -275. 4.71e+03
-DEAL::-275. 1.41e-12 -138.
+DEAL::-275. 0 -138.
 DEAL::4.76e+03 -138. -184.
 DEAL::367. -275. 4.92e+03
 DEAL::-275. 459. 5.02e+03
 DEAL::4.76e+03 4.90e+03 2.23e+03
 DEAL::-184. 4.57e+03 -138.
 DEAL::4.67e+03 -91.8 -138.
-DEAL::-275. -138. -1.36e-12
+DEAL::-275. -138. 0
 DEAL::184. 4.79e+03 -138.
 DEAL::4.67e+03 3.52e+03 4.80e+03
 DEAL::-275. 5.11e+03 367.
@@ -88,77 +88,77 @@ DEAL::-4.38e+03 4.79e+03 4.92e+03
 DEAL::4.88e+03 -3.09e+03 5.02e+03
 DEAL::4.97e+03 5.11e+03 -1.81e+03
 DEAL::component=2
-DEAL::-275. -8.99e-13 -138.
-DEAL::-275. -138. 1.36e-12
-DEAL::0.00 5.60 22.4
+DEAL::-275. 0 -138.
+DEAL::-275. -138. 0
+DEAL::0 5.60 22.4
 DEAL::-275. -459. 4.80e+03
 DEAL::-275. 4.90e+03 -367.
-DEAL::0.00 5.60 22.4
-DEAL::-275. 1.41e-12 -138.
+DEAL::0 5.60 22.4
+DEAL::-275. 0 -138.
 DEAL::4.76e+03 -138. -184.
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::-275. 459. 5.02e+03
 DEAL::4.76e+03 4.90e+03 2.23e+03
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::4.67e+03 -91.8 -138.
-DEAL::-275. -138. -1.36e-12
-DEAL::0.00 5.60 22.4
+DEAL::-275. -138. 0
+DEAL::0 5.60 22.4
 DEAL::4.67e+03 3.52e+03 4.80e+03
 DEAL::-275. 5.11e+03 367.
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::4.88e+03 91.8 -138.
 DEAL::4.97e+03 -138. 184.
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::4.88e+03 -3.09e+03 5.02e+03
 DEAL::4.97e+03 5.11e+03 -1.81e+03
-DEAL::0.00 5.60 22.4
+DEAL::0 5.60 22.4
 DEAL::component=3
-DEAL::-275. -138. 1.36e-12
-DEAL::0.00 5.60 22.4
-DEAL::5.60 -1.84e-16 22.4
+DEAL::-275. -138. 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::-275. 4.90e+03 -367.
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::4.76e+03 -138. -184.
-DEAL::0.00 5.60 22.4
-DEAL::5.60 -1.84e-16 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::4.76e+03 4.90e+03 2.23e+03
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
-DEAL::-275. -138. -1.36e-12
-DEAL::0.00 5.60 22.4
-DEAL::5.60 7.35e-16 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::-275. -138. 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::-275. 5.11e+03 367.
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::4.97e+03 -138. 184.
-DEAL::0.00 5.60 22.4
-DEAL::5.60 7.35e-16 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::4.97e+03 5.11e+03 -1.81e+03
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
 DEAL::component=4
-DEAL::0.00 5.60 22.4
-DEAL::5.60 -1.84e-16 22.4
-DEAL::5.60 11.2 2.53e-16
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 11.2 1.01e-15
-DEAL::0.00 5.60 22.4
-DEAL::5.60 -1.84e-16 22.4
-DEAL::5.60 11.2 1.01e-15
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 11.2 0.00
-DEAL::0.00 5.60 22.4
-DEAL::5.60 7.35e-16 22.4
-DEAL::5.60 11.2 2.53e-16
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 11.2 1.01e-15
-DEAL::0.00 5.60 22.4
-DEAL::5.60 7.35e-16 22.4
-DEAL::5.60 11.2 1.01e-15
-DEAL::0.00 5.60 22.4
-DEAL::5.60 0.00 22.4
-DEAL::5.60 11.2 0.00
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
+DEAL::0 5.60 22.4
+DEAL::5.60 0 22.4
+DEAL::5.60 11.2 0
index f964000526b25a2cfc93be10efd84b742134a00b..2ca342c687acca4e0b75e3b7cd143502ade1deca 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -48,7 +48,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -60,7 +60,7 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<2,dim> >(fe.n_components()));
 
   fe_values.get_function_hessians (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
                                     // use a vector extractor if there
                                     // are sufficiently many components
@@ -72,11 +72,14 @@ void test (const Triangulation<dim>& tr,
        fe_values[vector_components].get_function_hessians (fe_function,
                                                           selected_vector_values);
        deallog << "component=" << c << std::endl;
-      
+
        for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
          for (unsigned int d=0; d<dim; ++d)
            {
-             deallog << selected_vector_values[q][d] << std::endl;
+             for (unsigned int e=0; e<dim; ++e)
+               for (unsigned int f=0; f<dim; ++f)
+                 deallog << selected_vector_values[q][d][e][f] << (e<dim-1 && f<dim-1 ? " " : "");
+             deallog << std::endl;
              Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
                      <= 1e-12 * selected_vector_values[q][d].norm(),
                      ExcInternalError());
@@ -109,7 +112,7 @@ int main()
 
   deallog.attach(logfile);
   deallog.depth_console (0);
-  deallog.threshold_double(1.e-7);
+  deallog.threshold_double(1.e-5);
 
   test_hyper_sphere<2>();
   test_hyper_sphere<3>();
index 5113302d4cd801dfddb07434615750eae630928e..925ac421be32ce98f6dcde45891001f615d97765 100644 (file)
 
 DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(0)]
 DEAL::component=0
-DEAL::5.60e-11 1.30 1.30 -1.50
-DEAL::-50.8 877. 848. -953.
-DEAL::0.00 1.30 1.30 1.50
-DEAL::-50.8 -779. -889. -641.
-DEAL::0.00 3.45 3.45 -3.99
-DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03
-DEAL::0.00 3.45 3.45 3.99
-DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03
+DEAL::0 1.301.30-1.50
+DEAL::-50.8 877.848.-953.
+DEAL::0 1.301.301.50
+DEAL::-50.8 -779.-889.-641.
+DEAL::0 3.453.45-3.99
+DEAL::-1.43e+03 2.86e+032.65e+03-2.63e+03
+DEAL::0 3.453.453.99
+DEAL::-1.43e+03 -2.60e+03-2.12e+03-1.44e+03
 DEAL::component=1
-DEAL::-50.8 877. 848. -953.
-DEAL::3.99e-09 278. 209. -236.
-DEAL::-50.8 -779. -889. -641.
-DEAL::-6.72e-10 278. 209. -247.
-DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03
-DEAL::-1.25e-08 374. 46.3 -122.
-DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03
-DEAL::8.76e-10 374. 46.3 -1.16e+03
+DEAL::-50.8 877.848.-953.
+DEAL::0 278.209.-236.
+DEAL::-50.8 -779.-889.-641.
+DEAL::0 278.209.-247.
+DEAL::-1.43e+03 2.86e+032.65e+03-2.63e+03
+DEAL::0 374.46.3-122.
+DEAL::-1.43e+03 -2.60e+03-2.12e+03-1.44e+03
+DEAL::0 374.46.3-1.16e+03
 DEAL::component=2
-DEAL::3.99e-09 278. 209. -236.
-DEAL::0.00 0.00 2.69e-10 9.43
-DEAL::-6.72e-10 278. 209. -247.
-DEAL::0.00 0.00 8.06e-10 9.43
-DEAL::-1.25e-08 374. 46.3 -122.
-DEAL::0.00 0.00 -8.76e-10 25.0
-DEAL::8.76e-10 374. 46.3 -1.16e+03
-DEAL::0.00 0.00 8.76e-10 25.0
+DEAL::0 278.209.-236.
+DEAL::0 009.43
+DEAL::0 278.209.-247.
+DEAL::0 009.43
+DEAL::0 374.46.3-122.
+DEAL::0 0025.0
+DEAL::0 374.46.3-1.16e+03
+DEAL::0 0025.0
 DEAL::component=3
-DEAL::0.00 0.00 2.69e-10 9.43
-DEAL::2.69e-10 9.43 18.9 -21.8
-DEAL::0.00 0.00 8.06e-10 9.43
-DEAL::8.06e-10 9.43 18.9 21.8
-DEAL::0.00 0.00 -8.76e-10 25.0
-DEAL::-8.76e-10 25.0 50.0 -57.8
-DEAL::0.00 0.00 8.76e-10 25.0
-DEAL::8.76e-10 25.0 50.0 57.8
+DEAL::0 009.43
+DEAL::0 9.4318.9-21.8
+DEAL::0 009.43
+DEAL::0 9.4318.921.8
+DEAL::0 0025.0
+DEAL::0 25.050.0-57.8
+DEAL::0 0025.0
+DEAL::0 25.050.057.8
 DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)]
 DEAL::component=0
-DEAL::0.00 9.85e-10 5.09e-10 1.54e-09 2.44e-26 5.91e-10 3.28e-10 4.60e-10 -2.17e-09
-DEAL::2.57e-07 -1.50e+03 -752. -1.50e+03 3.49e-07 1.99e+04 -752. 1.99e+04 5.31e-08
-DEAL::-2.06e-07 -1.88e+03 2.02e+04 -1.88e+03 1.75e-06 -376. 2.02e+04 -376. 4.37e-07
-DEAL::0.00 9.85e-10 1.74e-09 -1.38e-09 0.00 2.53e-09 -1.30e-09 5.58e-10 1.64e-09
-DEAL::-3.47e-07 1.50e+03 752. 1.50e+03 5.81e-07 2.07e+04 752. 2.07e+04 7.10e-07
-DEAL::-3.62e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 2.93e-06
-DEAL::4.27e-10 -1.18e-09 1.26e-09 2.89e-09 -8.21e-10 2.89e-09 -8.54e-10 -7.88e-10 1.64e-09
-DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -4.08e-07 1.99e+04 2.12e+04 1.99e+04 2.96e-06
-DEAL::1.88e-08 1.88e+03 2.11e+04 1.88e+03 1.28e-06 376. 2.11e+04 376. 7.40e-07
-DEAL::0.00 -1.18e-09 -2.30e-10 -3.94e-10 -8.21e-10 -4.60e-10 -7.88e-10 -7.88e-10 -2.17e-09
-DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 -2.94e-07 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
-DEAL::5.04e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -9.08e-07
-DEAL::0.00 5.09e-10 -1.97e-10 1.97e-10 -1.94e-26 -1.38e-09 3.28e-10 4.60e-10 3.23e-27
-DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -6.29e-08 1.99e+04 -752. 1.99e+04 2.25e-08
-DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -5.17e-07
-DEAL::0.00 5.09e-10 -2.13e-10 -3.94e-10 1.08e-09 -3.94e-10 -1.63e-09 9.52e-10 -1.11e-26
-DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 2.06e-06 2.07e+04 752. 2.07e+04 3.03e-13
-DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13
-DEAL::-5.42e-10 4.92e-11 5.42e-10 1.97e-10 -8.21e-10 -3.94e-10 -2.36e-09 -7.88e-10 -5.18e-26
-DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -8.04e-07 1.99e+04 2.12e+04 1.99e+04 -7.68e-07
-DEAL::-1.46e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -9.25e-08
-DEAL::0.00 4.92e-11 4.93e-11 -3.94e-10 0.00 -1.38e-09 -7.88e-10 -7.88e-10 0.00
-DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.10e-08 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
-DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00
+DEAL::0 0 00 0 0000
+DEAL::0 -1.50e+03 -752.-1.50e+03 0 1.99e+04-752.1.99e+040
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 0 -376.2.02e+04-376.0
+DEAL::0 0 00 0 0000
+DEAL::0 1.50e+03 752.1.50e+03 0 2.07e+04752.2.07e+040
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 3.76e+03 1.63e+042.02e+041.63e+040
+DEAL::0 0 00 0 0000
+DEAL::3.01e+03 -1.50e+03 2.12e+04-1.50e+03 0 1.99e+042.12e+041.99e+040
+DEAL::0 1.88e+03 2.11e+041.88e+03 0 376.2.11e+04376.0
+DEAL::0 0 00 0 0000
+DEAL::3.01e+03 1.50e+03 -1.94e+041.50e+03 0 2.07e+04-1.94e+042.07e+040
+DEAL::0 1.88e+03 2.11e+041.88e+03 3.76e+03 -1.46e+042.11e+04-1.46e+040
+DEAL::0 0 00 0 0000
+DEAL::1.50e+03 2.04e+04 -752.2.04e+04 0 1.99e+04-752.1.99e+040
+DEAL::0 1.48e+04 2.02e+041.48e+04 752. -376.2.02e+04-376.0
+DEAL::0 0 00 0 0000
+DEAL::1.50e+03 -1.87e+04 752.-1.87e+04 0 2.07e+04752.2.07e+040
+DEAL::0 1.48e+04 2.02e+041.48e+04 -2.71e+04 1.63e+042.02e+041.63e+040
+DEAL::0 0 00 0 0000
+DEAL::-3.76e+04 2.04e+04 2.12e+042.04e+04 0 1.99e+042.12e+041.99e+040
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 752. 376.2.11e+04376.0
+DEAL::0 0 00 0 0000
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04-1.87e+04 0 2.07e+04-1.94e+042.07e+040
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 -2.71e+04 -1.46e+042.11e+04-1.46e+040
 DEAL::component=1
-DEAL::2.57e-07 -1.50e+03 -752. -1.50e+03 3.49e-07 1.99e+04 -752. 1.99e+04 5.31e-08
-DEAL::-2.06e-07 -1.88e+03 2.02e+04 -1.88e+03 1.75e-06 -376. 2.02e+04 -376. 4.37e-07
-DEAL::5.81e-08 2.06e+04 -1.50e+03 2.06e+04 3.99e-08 -752. -1.50e+03 -752. -1.93e-06
-DEAL::-3.47e-07 1.50e+03 752. 1.50e+03 5.81e-07 2.07e+04 752. 2.07e+04 7.10e-07
-DEAL::-3.62e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 2.93e-06
-DEAL::-2.94e-08 2.06e+04 -1.50e+03 2.06e+04 2.26e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -4.08e-07 1.99e+04 2.12e+04 1.99e+04 2.96e-06
-DEAL::1.88e-08 1.88e+03 2.11e+04 1.88e+03 1.28e-06 376. 2.11e+04 376. 7.40e-07
-DEAL::3.01e-06 2.06e+04 9.89e+03 2.06e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 -2.94e-07 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
-DEAL::5.04e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -9.08e-07
-DEAL::-9.50e-07 2.06e+04 9.89e+03 2.06e+04 -3.25e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -6.29e-08 1.99e+04 -752. 1.99e+04 2.25e-08
-DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -5.17e-07
-DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -1.18e-07 752. 1.50e+03 752. -2.35e-06
-DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 2.06e-06 2.07e+04 752. 2.07e+04 3.03e-13
-DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13
-DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 1.87e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -8.04e-07 1.99e+04 2.12e+04 1.99e+04 -7.68e-07
-DEAL::-1.46e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -9.25e-08
-DEAL::-1.34e-06 2.15e+04 -8.16e+03 2.15e+04 1.09e-07 752. -8.16e+03 752. 1.50e+03
-DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.10e-08 2.07e+04 -1.94e+04 2.07e+04 -8.83e-07
-DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00
-DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 5.27e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::0 -1.50e+03 -752.-1.50e+03 0 1.99e+04-752.1.99e+040
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 0 -376.2.02e+04-376.0
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 -752.-1.50e+03-752.0
+DEAL::0 1.50e+03 752.1.50e+03 0 2.07e+04752.2.07e+040
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 3.76e+03 1.63e+042.02e+041.63e+040
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 1.06e+04-1.50e+031.06e+043.01e+03
+DEAL::3.01e+03 -1.50e+03 2.12e+04-1.50e+03 0 1.99e+042.12e+041.99e+040
+DEAL::0 1.88e+03 2.11e+041.88e+03 0 376.2.11e+04376.0
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 -752.9.89e+03-752.1.50e+03
+DEAL::3.01e+03 1.50e+03 -1.94e+041.50e+03 0 2.07e+04-1.94e+042.07e+040
+DEAL::0 1.88e+03 2.11e+041.88e+03 3.76e+03 -1.46e+042.11e+04-1.46e+040
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 1.06e+049.89e+031.06e+04-1.65e+04
+DEAL::1.50e+03 2.04e+04 -752.2.04e+04 0 1.99e+04-752.1.99e+040
+DEAL::0 1.48e+04 2.02e+041.48e+04 752. -376.2.02e+04-376.0
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 752.1.50e+03752.0
+DEAL::1.50e+03 -1.87e+04 752.-1.87e+04 0 2.07e+04752.2.07e+040
+DEAL::0 1.48e+04 2.02e+041.48e+04 -2.71e+04 1.63e+042.02e+041.63e+040
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 -8.91e+031.50e+03-8.91e+033.01e+03
+DEAL::-3.76e+04 2.04e+04 2.12e+042.04e+04 0 1.99e+042.12e+041.99e+040
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 752. 376.2.11e+04376.0
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 752.-8.16e+03752.1.50e+03
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04-1.87e+04 0 2.07e+04-1.94e+042.07e+040
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 -2.71e+04 -1.46e+042.11e+04-1.46e+040
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 -8.91e+03-8.16e+03-8.91e+03-1.65e+04
 DEAL::component=2
-DEAL::-2.06e-07 -1.88e+03 2.02e+04 -1.88e+03 1.75e-06 -376. 2.02e+04 -376. 4.37e-07
-DEAL::5.81e-08 2.06e+04 -1.50e+03 2.06e+04 3.99e-08 -752. -1.50e+03 -752. -1.93e-06
-DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26
-DEAL::-3.62e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 2.93e-06
-DEAL::-2.94e-08 2.06e+04 -1.50e+03 2.06e+04 2.26e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08
-DEAL::1.88e-08 1.88e+03 2.11e+04 1.88e+03 1.28e-06 376. 2.11e+04 376. 7.40e-07
-DEAL::3.01e-06 2.06e+04 9.89e+03 2.06e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08
-DEAL::5.04e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -9.08e-07
-DEAL::-9.50e-07 2.06e+04 9.89e+03 2.06e+04 -3.25e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09
-DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -5.17e-07
-DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -1.18e-07 752. 1.50e+03 752. -2.35e-06
-DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26
-DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13
-DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 1.87e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31
-DEAL::-1.46e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -9.25e-08
-DEAL::-1.34e-06 2.15e+04 -8.16e+03 2.15e+04 1.09e-07 752. -8.16e+03 752. 1.50e+03
-DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09
-DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00
-DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 5.27e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
-DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 0 -376.2.02e+04-376.0
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 -752.-1.50e+03-752.0
+DEAL::0 0 00 0 0000
+DEAL::0 -1.88e+03 2.02e+04-1.88e+03 3.76e+03 1.63e+042.02e+041.63e+040
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 1.06e+04-1.50e+031.06e+043.01e+03
+DEAL::0 0 00 0 0000
+DEAL::0 1.88e+03 2.11e+041.88e+03 0 376.2.11e+04376.0
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 -752.9.89e+03-752.1.50e+03
+DEAL::0 0 00 0 0000
+DEAL::0 1.88e+03 2.11e+041.88e+03 3.76e+03 -1.46e+042.11e+04-1.46e+040
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 1.06e+049.89e+031.06e+04-1.65e+04
+DEAL::0 0 00 0 0000
+DEAL::0 1.48e+04 2.02e+041.48e+04 752. -376.2.02e+04-376.0
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 752.1.50e+03752.0
+DEAL::0 0 00 0 0000
+DEAL::0 1.48e+04 2.02e+041.48e+04 -2.71e+04 1.63e+042.02e+041.63e+040
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 -8.91e+031.50e+03-8.91e+033.01e+03
+DEAL::0 0 00 0 0000
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 752. 376.2.11e+04376.0
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 752.-8.16e+03752.1.50e+03
+DEAL::0 0 00 0 0000
+DEAL::0 -1.30e+04 2.11e+04-1.30e+04 -2.71e+04 -1.46e+042.11e+04-1.46e+040
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 -8.91e+03-8.16e+03-8.91e+03-1.65e+04
+DEAL::0 0 00 0 0000
 DEAL::component=3
-DEAL::5.81e-08 2.06e+04 -1.50e+03 2.06e+04 3.99e-08 -752. -1.50e+03 -752. -1.93e-06
-DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26
-DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10
-DEAL::-2.94e-08 2.06e+04 -1.50e+03 2.06e+04 2.26e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
-DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08
-DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08
-DEAL::3.01e-06 2.06e+04 9.89e+03 2.06e+04 7.78e-08 -752. 9.89e+03 -752. 1.50e+03
-DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08
-DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08
-DEAL::-9.50e-07 2.06e+04 9.89e+03 2.06e+04 -3.25e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
-DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09
-DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09
-DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -1.18e-07 752. 1.50e+03 752. -2.35e-06
-DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26
-DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09
-DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 1.87e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
-DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31
-DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25
-DEAL::-1.34e-06 2.15e+04 -8.16e+03 2.15e+04 1.09e-07 752. -8.16e+03 752. 1.50e+03
-DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09
-DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10
-DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 5.27e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
-DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00
-DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 -752.-1.50e+03-752.0
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.06e+04 -1.50e+032.06e+04 0 1.06e+04-1.50e+031.06e+043.01e+03
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 -752.9.89e+03-752.1.50e+03
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.06e+04 9.89e+032.06e+04 0 1.06e+049.89e+031.06e+04-1.65e+04
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 752.1.50e+03752.0
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.15e+04 1.50e+032.15e+04 0 -8.91e+031.50e+03-8.91e+033.01e+03
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 752.-8.16e+03752.1.50e+03
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 2.15e+04 -8.16e+032.15e+04 0 -8.91e+03-8.16e+03-8.91e+03-1.65e+04
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
 DEAL::component=4
-DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26
-DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10
-DEAL::-1.63e-10 2.42e-09 2.38e-26 4.78e-09 -1.63e-10 1.76e-26 -7.07e-10 -4.89e-10 3.15e-26
-DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08
-DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08
-DEAL::-4.35e-10 2.58e-09 4.20e-09 -3.37e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.90e-25
-DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08
-DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08
-DEAL::1.10e-09 -3.43e-09 3.94e-09 8.10e-09 -3.17e-09 8.41e-09 -2.17e-10 -5.98e-09 6.64e-25
-DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09
-DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09
-DEAL::0.00 -2.89e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00
-DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26
-DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09
-DEAL::-1.63e-10 1.11e-09 -2.51e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -5.96e-26
-DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31
-DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25
-DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 3.08e-10 -1.08e-26 -3.70e-09 2.17e-10 -5.71e-26
-DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09
-DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10
-DEAL::-1.79e-09 -8.06e-10 1.31e-09 -2.41e-09 -3.17e-09 -7.87e-26 -2.17e-10 -5.98e-09 5.87e-26
-DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00
-DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09
-DEAL::0.00 -2.63e-10 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
+DEAL::0 0 00 0 0000
index 6782bce58fb609ef037944f9b5528a3c5c12ca5c..01cda8620708c681e8f0dbdbf7f99d23e949d05d 100644 (file)
@@ -1,8 +1,8 @@
 //----------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
+//    Version: $Name$
 //
-//    Copyright (C) 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -48,7 +48,7 @@ void test (const Triangulation<dim>& tr,
   Vector<double> fe_function(dof.n_dofs());
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     fe_function(i) = i+1;
-  
+
   const QGauss<dim> quadrature(2);
   FEValues<dim> fe_values (fe, quadrature,
                           update_values | update_gradients | update_hessians);
@@ -60,7 +60,7 @@ void test (const Triangulation<dim>& tr,
                   std::vector<Tensor<1,dim> >(fe.n_components()));
 
   fe_values.get_function_gradients (fe_function, vector_values);
-  
+
   for (unsigned int c=0; c<fe.n_components(); ++c)
                                     // use a vector extractor if there
                                     // are sufficiently many components
@@ -72,15 +72,18 @@ void test (const Triangulation<dim>& tr,
        fe_values[vector_components].get_function_symmetric_gradients (fe_function,
                                                                       selected_vector_values);
        deallog << "component=" << c << std::endl;
-      
+
        for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
          {
-           deallog << selected_vector_values[q] << std::endl;
+           for (unsigned int d=0; d<dim; ++d)
+             for (unsigned int e=0; e<dim; ++e)
+               deallog << selected_vector_values[q][d][e] << (d<dim-1 || e<dim-1 ? " " : "");
+           deallog << std::endl;
 
            Tensor<2,dim> grad;
            for (unsigned int d=0; d<dim; ++d)
              grad[d] = vector_values[q][c+d];
-           
+
            Assert ((selected_vector_values[q] - symmetrize(grad)).norm()
                    <= 1e-12 * selected_vector_values[q].norm(),
                    ExcInternalError());
index a5c7376139884f3841674832441a28cc0923616e..4049fdf1b75a9e4f78e77fff58409e99d5dbbc2a 100644 (file)
@@ -16,10 +16,10 @@ DEAL::43.2 58.8 58.8 5.84
 DEAL::125. -30.5 -30.5 9.52
 DEAL::125. -20.4 -20.4 9.52
 DEAL::component=3
-DEAL::0.00 5.84 5.84 -6.75
-DEAL::0.00 5.84 5.84 6.75
-DEAL::0.00 9.52 9.52 -11.0
-DEAL::0.00 9.52 9.52 11.0
+DEAL::0 5.84 5.84 -6.75
+DEAL::0 5.84 5.84 6.75
+DEAL::0 9.52 9.52 -11.0
+DEAL::0 9.52 9.52 11.0
 DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)]
 DEAL::component=0
 DEAL::2.37 2.37 -133. 2.37 -275. -68.8 -133. -68.8 -138.
@@ -31,11 +31,11 @@ DEAL::2.37 94.1 2.34e+03 94.1 4.79e+03 1.69e+03 2.34e+03 1.69e+03 4.80e+03
 DEAL::2.37 2.40e+03 2.44e+03 2.40e+03 4.57e+03 2.40e+03 2.44e+03 2.40e+03 -138.
 DEAL::2.37 -2.19e+03 2.44e+03 -2.19e+03 4.79e+03 916. 2.44e+03 916. 5.02e+03
 DEAL::component=1
-DEAL::-2.21e-12 -275. -206. -275. -8.99e-13 -138. -206. -138. 1.36e-12
-DEAL::2.77e-12 -275. -206. -275. -459. 4.85e+03 -206. 4.85e+03 -367.
-DEAL::-367. -275. 4.73e+03 -275. 1.41e-12 -138. 4.73e+03 -138. -184.
+DEAL::0 -275. -206. -275. 0 -138. -206. -138. 0
+DEAL::0 -275. -206. -275. -459. 4.85e+03 -206. 4.85e+03 -367.
+DEAL::-367. -275. 4.73e+03 -275. 0 -138. 4.73e+03 -138. -184.
 DEAL::367. -275. 4.84e+03 -275. 459. 4.96e+03 4.84e+03 4.96e+03 2.23e+03
-DEAL::-184. 4.62e+03 -206. 4.62e+03 -91.8 -138. -206. -138. -1.36e-12
+DEAL::-184. 4.62e+03 -206. 4.62e+03 -91.8 -138. -206. -138. 0
 DEAL::184. 4.73e+03 -206. 4.73e+03 3.52e+03 4.96e+03 -206. 4.96e+03 367.
 DEAL::4.80e+03 4.73e+03 4.84e+03 4.73e+03 91.8 -138. 4.84e+03 -138. 184.
 DEAL::-4.38e+03 4.83e+03 4.95e+03 4.83e+03 -3.09e+03 5.06e+03 4.95e+03 5.06e+03 -1.81e+03
@@ -58,11 +58,11 @@ DEAL::-275. 2.55e+03 186. 2.55e+03 5.60 11.2 186. 11.2 22.4
 DEAL::4.97e+03 -68.8 94.6 -68.8 5.60 11.2 94.6 11.2 22.4
 DEAL::4.97e+03 2.55e+03 -901. 2.55e+03 5.60 11.2 -901. 11.2 22.4
 DEAL::component=4
-DEAL::0.00 5.60 14.0 5.60 -1.84e-16 16.8 14.0 16.8 2.53e-16
-DEAL::0.00 5.60 14.0 5.60 0.00 16.8 14.0 16.8 1.01e-15
-DEAL::0.00 5.60 14.0 5.60 -1.84e-16 16.8 14.0 16.8 1.01e-15
-DEAL::0.00 5.60 14.0 5.60 0.00 16.8 14.0 16.8 0.00
-DEAL::0.00 5.60 14.0 5.60 7.35e-16 16.8 14.0 16.8 2.53e-16
-DEAL::0.00 5.60 14.0 5.60 0.00 16.8 14.0 16.8 1.01e-15
-DEAL::0.00 5.60 14.0 5.60 7.35e-16 16.8 14.0 16.8 1.01e-15
-DEAL::0.00 5.60 14.0 5.60 0.00 16.8 14.0 16.8 0.00
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
+DEAL::0 5.60 14.0 5.60 0 16.8 14.0 16.8 0
index 306b1120ab7efb4a4b08e34650e698bb9e8031e3..aa8dd0d040cd7558ddca20139c449db5c4ff4ae1 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_q.h>
 
index 7ffb1e3432683eee0876c28dc5133f27366d3ed0..90e885cf084b36ccf3c9426d3c8661b638e13221 100644 (file)
@@ -27,8 +27,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_q.h>
 
index 628dac91ea229ac4076a7d54c41a56d068b62693..6f69072c6964a12f264466f510678163e7d17219 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <vector>
 #include <fstream>
 #include <string>
index 73e6884de470d9f878cc0cb5b195c56654cbb801..50bc3a333a8613ca8b6456500661d7b07331b7b2 100644 (file)
@@ -39,8 +39,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 #include <deal.II/hp/dof_handler.h>
index 1ebe24c36e008557fc9b6504da9de5e93e6021aa..43f7789151d0c7d0e65231ddb9678db3556f2323 100644 (file)
@@ -39,8 +39,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 
index 56a440807b6f4c9960f23604a1e5d11a5745cdf7..75102a78963306a646125608a1a45fe933e10abd 100644 (file)
@@ -43,8 +43,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 
index 45873f9026f4b7a1a3143ea0f7b20c604b3dce9e..023dda873ee51a02106bb943879994ace874f87f 100644 (file)
@@ -40,8 +40,8 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 
index e47ff6a965d5f53c7ad45bfe98ba28c86bf75852..fc57ff8e9ac5f95924d966cb8f71844469304f99 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/block_sparsity_pattern.h>
 
index 1129d7852d1c2445a2ccdf0fe2bb5f5e2eba97d3..af9a617c3286416e1d9b831bde6847e0c3ddcc2b 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 
index 10befb50701ce3049a33bee472386a8384d6d6eb..324c45fc4093fdaa7d3a127d00abe1e62580509d 100644 (file)
@@ -39,8 +39,8 @@
 #include <deal.II/grid/tria_accessor.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 867707e98c63b831ae0d4b8f7794ef0b6ce51a58..f6ecedf81651295962587215dc57d9bb8d973d21 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
                                  // We need a FESystem
 #include <deal.II/fe/fe_system.h>
@@ -148,7 +148,7 @@ void FindBug<dim>::dirichlet_conditions ()
 
 
   std::vector<bool> fixed_dofs (dof_handler.n_dofs());
-  std::set<types::boundary_id_t> boundary_indicators;
+  std::set<types::boundary_id> boundary_indicators;
   boundary_indicators.insert (0);
 
                                    // get a list of those boundary DoFs which
index 6ef55c57116aea1eb6056e8a07a7a7215c7c5550..90641af8bc13faaeee5192f62b5b219c44179c98 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_dgq.h>
 
 #include <fstream>
index ca2f4a27b1f5571ce4d1b92bd153ed5b149f72ba..13ac76f63e63a35aff50cb596746724d877dc596 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_dgq.h>
 
 #include <fstream>
index 1fe8aca75be2a1c98021924bb8ce1c7463a7f081..b533bb1c20fcc9870cf6c6b09d36030236320141 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 258cc2962641bdaf3af6fe090c3243bbada88de5..0f780220fa6c01409de93e18dfb6ced20bf32b76 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 61341c75768af55525b008c8c09ecf7bdd0b4000..e348f5c8287fda1577827aed8e85d4c0ce488b5f 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 
index 9e35e3051ffb9fd0002d21e4afb3d3168d8fa3f3..5c60107f95c5f6f3cd8b5230b7e427d731798d68 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 
index 19fb4e5f0f821e0494d676f60e72394e9a80d156..aa8de378123a7488e764eaa873ae213a7ecfc820 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index d2f3c4e73f04ec5509c6b430823450a1f2effaa6..6c2fd84d83ead4eb27e63e0f04578702bc7faf52 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 4b0fb8bbc3fa1852d69ec50b459cfdc6156dd558..4800cda4ecb2dab4c6bb001c5de6a4923b8859cf 100644 (file)
@@ -14,7 +14,7 @@
 #include "../tests.h"
 #include <deal.II/numerics/operator.h>
 #include <deal.II/numerics/newton.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/named_data.h>
 
 
index 983403a3638aba2b1968c1bf5a9673bb7c565a67..30862e203cacac401de1b55bfdd7ccb03b0d25c2 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -45,7 +45,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
       
index 522a3ec686c06287ee24b01302bdbc7e4e2979f0..ed03b0cf98c2f54af2b9c6cfa38b0c58554afda7 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -47,7 +47,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
       
index c4eae8e8065f22c3edba8937ad8ef6292e913f36..420bc832472d2ef1f87f9d770541a98812eb0d0b 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -45,7 +45,7 @@ void test (const Triangulation<dim>& tr,
   deallog << "FE=" << fe.get_name()
          << std::endl;
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (0);
       
   ConstraintMatrix cm;
index a5614e7a9ec85152810ca28c3bf9a2f10f99f0a5..1da08dc969230552101daed19da875270293c0d0 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
@@ -78,7 +78,7 @@ void test (const Triangulation<dim>& tr,
   deallog << "FE=" << fe.get_name()
          << std::endl;
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (0);
 
   ConstraintMatrix cm;
index 64a3e768432582ea836e4178e0c05b8256fdf833..6b7d547acb986990482ed5cd4f2a30db7fcff56e 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -57,7 +57,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
 
index 7db9d72ea9e600c394ccbafb15212956da7cf921..1bb8df815cb4fe15a783924f9634abfc68801e63 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/vectors.templates.h>
 
 #include <fstream>
@@ -48,7 +48,7 @@ void test_hyper_cube()
   deallog << "FE=" << fe.get_name()
          << std::endl;
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (1);
   boundary_ids.insert (3);
   
index 0ab0b20273162653daaa18216531d9d49ca7c858..dacd22392c8e39b6b4f087e88fe3b0b9d8995af3 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -47,7 +47,7 @@ void test (const Triangulation<dim>& tr,
   DoFHandler<dim> dof(tr);
   dof.distribute_dofs(fe);
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (0);
 
   ConstraintMatrix cm;
index a8fca95aae6ba5edfa7cd9d5f878cf268ff62b38..d453b05a5e3ee072f2405246d9c254d419623af3 100644 (file)
@@ -15,7 +15,7 @@
 // we used to get this crash:
 //
 // An error occurred in line <4646> of file </w/heister/deal-trunk/deal.II/include/deal.II/numerics/vectors.templates.h> in function
-//     static void dealii::VectorTools::compute_no_normal_flux_constraints(const DH<dim, spacedim>&, unsigned int, const std::set<types::boundary_id_t>&, dealii::ConstraintMatrix&, const dealii::Mapping<dim, spacedim>&) [with int dim = 3, DH = dealii::DoFHandler, int spacedim = 3]
+//     static void dealii::VectorTools::compute_no_normal_flux_constraints(const DH<dim, spacedim>&, unsigned int, const std::set<types::boundary_id>&, dealii::ConstraintMatrix&, const dealii::Mapping<dim, spacedim>&) [with int dim = 3, DH = dealii::DoFHandler, int spacedim = 3]
 // The violated condition was:
 //     std::fabs (tangent.norm()-1) < 1e-12
 // The name and call sequence of the exception was:
@@ -34,7 +34,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 template <int dim>
@@ -55,7 +55,7 @@ check ()
 
   dofh.distribute_dofs (fe);
 
-  std::set<types::boundary_id_t> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (0);
   VectorTools::compute_no_normal_flux_constraints (dofh, 0, no_normal_flux_boundaries, cm, mapping);
 
index 7ed51d2601d1f534992096ae2925e10e7027c7dd..6bb2b86089e6ed18691571bd527ffd7abbd103c5 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 template <int dim>
@@ -53,7 +53,7 @@ check ()
 
   dofh.distribute_dofs (fe);
 
-  std::set<types::boundary_id_t> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (1);
   //  no_normal_flux_boundaries.insert (2); // not required for the crash for now, please test with it later!
   no_normal_flux_boundaries.insert (3);
index 46fa963653886bae5adeb10cb6d23ba1aa95a174..c003b26ff3ff653a22beee8f5159b4c97fa431ec 100644 (file)
@@ -35,7 +35,7 @@
 #include <dofs/dof_handler.h>
 #include <fe/fe_system.h>
 #include <fe/mapping_q.h>
-#include <numerics/vectors.h>
+#include <numerics/vector_tools.h>
 #include <numerics/data_out.h>
 #include <base/exceptions.h>
 #include <base/function.h>
index b0da9dccdb3c724af98ffd127780de02b86325f7..abe5c93ba06764eb2c5c45de449319a4faaede86 100644 (file)
@@ -14,7 +14,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/hp/fe_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -32,7 +32,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
       
index 7fa21f12f5bc2a080221f9cff3644db3546adff8..1e2938aaa6140858638389ce3b84d623f47b0134 100644 (file)
@@ -16,7 +16,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -35,7 +35,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
       
index 21ab7b7200ae9b2a28f1a98759acb54b7af1059a..d46089e471032517a7d934d783a03f69e3710cdd 100644 (file)
@@ -17,7 +17,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -32,7 +32,7 @@ void test (const Triangulation<dim>& tr,
   deallog << "FE=" << fe[0].get_name()
          << std::endl;
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (0);
       
   ConstraintMatrix cm;
index e5d14eedef2431de0e80986d0eec48c5742d1b82..d9f149769c680c47e5d77340be7b4f026ce34615 100644 (file)
@@ -18,7 +18,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
@@ -65,7 +65,7 @@ void test (const Triangulation<dim>& tr,
   deallog << "FE=" << fe[0].get_name()
          << std::endl;
 
-  std::set<types::boundary_id_t> boundary_ids;
+  std::set<types::boundary_id> boundary_ids;
   boundary_ids.insert (0);
 
   ConstraintMatrix cm;
index 256bb11b31c18d3b6171e80f7fd72c8a0a4c7658..b9d411b26cf6d7adc246a6afc5b38174b6efa46f 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -45,7 +45,7 @@ void test (const Triangulation<dim>& tr,
              << ", case=" << i
              << std::endl;
 
-      std::set<types::boundary_id_t> boundary_ids;
+      std::set<types::boundary_id> boundary_ids;
       for (unsigned int j=0; j<=i; ++j)
        boundary_ids.insert (j);
 
index 943030cb6263b80fa9104f4402fb714c3aea26e5..57e9df7ff3354889c55b678208f04ba4eb3a050e 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/dofs/dof_accessor.h>
 
 #include <fstream>
index 6dbd2ddb634c07fc94f4d72dd3186b8f9535549b..165ecd7354288c35462db6da52191597f8fddde1 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/dofs/dof_accessor.h>
 
 #include <fstream>
index aab7171e0bc43524590acd9b25254c0980210f31..8a9157f0d7cb1845caebfb9fe8ff4d4df417db39 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/fe/fe_raviart_thomas.h>
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
@@ -134,7 +134,7 @@ void test_projection (const Triangulation<dim>& tr,
   TestFunction<dim> f(degree-1);
   std::map<unsigned int, double> boundary_constraints;
   typename FunctionMap<dim>::type boundary_map;
-  for (types::boundary_id_t i=0;i<255;++i)
+  for (types::boundary_id i=0;i<255;++i)
     boundary_map[i] = &f;
   VectorTools::project_boundary_values(mapping, dof, boundary_map, quadrature,
                                       boundary_constraints);
index e3ff02c148d458e52364ec53442956abc7c60748..c120a12f1d0673e3b1677a808c2d5c0e3522d40e 100644 (file)
@@ -6,7 +6,7 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/fe/fe_nedelec.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 std::ofstream logfile ("project_bv_curl_conf/output");
 
index 8bab7e62c539202d689d0728c5315092685a599d..ddee1b52454616d0c822e01b1c5f8d942270782c 100644 (file)
@@ -6,7 +6,7 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/fe/fe_raviart_thomas.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 std::ofstream logfile ("project_bv_div_conf/output");
 
index 383f46f86cf4645bbaa2dff6476812fe7fba7e86..09b0f2cc2e295c7f9994d3255455197a71200872 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_abf.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_dgp_monomial.h>
index 5addf357f323be449844907a4a1aaab5b314cacf..e6671558f512c4a42e47a3f82cace01e80e46b57 100644 (file)
@@ -34,7 +34,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 1467d11e82e8be55b0220d9bd798721a74426ad0..e1b8faf55e3ce8be3bd7b8dd3468ad466cf0fb91 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index b846ad8abf6053257657275a420601e19dd0886a..548399dca275531cd39c9d36184223d70455eaff 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 6adff79292015a2af5b25266c1380b434c21db84..8cda23c59389e343e001c587f9c2299ffb954d21 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 4bc06e0b0c1fcad425dedea8fc6462a085212f29..24d3b0d71772ed4813c2c114cb7bdb31dab7c64c 100644 (file)
@@ -34,7 +34,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 7927fdd1bb1185492d41b0417888684ba81b95d6..25f3a716913fa7a8cb2e183878354992527cbf2c 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index eba87370b879c4a8f1693d40d6a81ba5a57ddfd2..bcf2236adda7a1b77aa4aa791c34a12cc4cdd75e 100644 (file)
@@ -31,7 +31,7 @@ void test ()
   GridGenerator::hyper_cube (tria);
   tria.refine_global (2);
 
-  std::vector<types::boundary_id_t>
+  std::vector<types::boundary_id>
     boundary_ids = tria.get_boundary_indicators ();
 
   for (unsigned int i=0; i<boundary_ids.size(); ++i)
index 22b8afa14b6b4f9bcfe17aff3aecf030ec3cbf21..2297c3ab00577c06b601f6823092bb0cb559f1d8 100644 (file)
@@ -33,7 +33,7 @@ void test ()
   tria.begin_active()->face(0)->set_boundary_indicator(2);
   tria.begin_active()->face(1)->set_boundary_indicator(4);
 
-  std::vector<types::boundary_id_t>
+  std::vector<types::boundary_id>
     boundary_ids = tria.get_boundary_indicators ();
 
   for (unsigned int i=0; i<boundary_ids.size(); ++i)
index 4f2779808c0293329562eb209762479b7accfd41..2e879286af1d5840a42428deaddac0bd18977191 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/lac/petsc_vector.h>
 #include <deal.II/fe/fe_q.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/base/function.h>
 
index a21ee0924169ca5bbaa01678014c9dfed02ad4d4..7f51dfdc8c53d7744e76a1198b4ad0b4f5308911 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/lac/petsc_vector.h>
 #include <deal.II/fe/fe_q.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/base/function.h>
 
index 80b4cb88736696e1cde7c0e646929032da993fe9..979064a33f17169858f0b52cc8785cfb3ab21e74 100644 (file)
@@ -39,8 +39,8 @@ char buf[1000];
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
index 8752ea34fd74f4aa9f6702528dccfd9508d71c43..fcab834f696fc48e27b7621b8addb0f78f952862 100644 (file)
@@ -40,8 +40,8 @@ char logname[] = "circular_01/output";
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 8913c9d34311135e29e9e0f1dfa24c82debcd0e9..a7e0b9bb6bb0db34d5ff174b0f7647f7179047bc 100644 (file)
@@ -44,8 +44,8 @@ std::ofstream logfile("step-14/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/fe/fe_tools.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 18e501047ec4d8022f187b7ccc812095bbb6bda4..7e8743e1ef763d6a0c27158d378fe9ca9bf974ad 100644 (file)
@@ -42,8 +42,8 @@ std::ofstream logfile("step-15/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/numerics/solution_transfer.h>
index c6d17c9b2c376cf525cbe6feac25a927b3329368..e4d70b11603ab7981035504c4dd5c456d16636c4 100644 (file)
@@ -16,7 +16,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/quadrature_lib.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/numerics/data_out.h>
index bb12951a960e988ed8da0bab59665e1e94e98f32..88818d05e5b42233690c87879a9c7bcea0510d0f 100644 (file)
@@ -34,8 +34,8 @@ std::ofstream logfile ("rt_distorted_01/output");
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
index cec39c2b5f36df8d99d0f73102741cdd76de82ed..4b687fc1e5af51e08b6515a1cbe177457018ca53 100644 (file)
@@ -36,8 +36,8 @@ char buf[1000];
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
index 9ff73ca52a4377492a634abb28c138554ff5bd6c..83e07754a36e69a4a9cf35c34b71f8f5b7b3091a 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 6b2f3a961504b2689753f71c9f5fa77beecc4e28..39a64a9cbebce61a933bb1933eae6277f0693e39 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 6d5de5c267b844a4c201365a6698ca9af02b502f..b13f7f61b5a215e1cbfeae0d7534f58a9eb92b54 100644 (file)
@@ -30,8 +30,8 @@
 
 #include <deal.II/fe/mapping_q.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
@@ -493,7 +493,7 @@ void project (const Mapping<dim>       &mapping,
                                         // @p{function} to hold on all parts of the
                                         // boundary
        typename FunctionMap<dim>::type boundary_functions;
-       for (types::boundary_id_t c=0; c<255; ++c)
+       for (types::boundary_id c=0; c<255; ++c)
          boundary_functions[c] = &function;
        project_boundary_values (dof, boundary_functions, q_boundary,
                                 boundary_values);
index 51e7563af24ab20ed834906e096134c6f0687e99..8a8ee32b9c8d48ba4ac44325d69af1f78ffea11a 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
index 6b07ee627751da43bde3d84535e79e6fd6089083..8e6d5aa55a9baba8e8b470f2f99b36e2436b1485 100644 (file)
@@ -1,8 +1,8 @@
 //--------------------------------------------------------------------------
 //    fe_tools.cc,v 1.1 2003/11/28 15:03:26 guido Exp
-//    Version: 
+//    Version:
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -54,10 +54,10 @@ void print_formatted (const FullMatrix<number> &A,
 
 template<int dim>
 void test_embedding (const FiniteElement<dim>& fe)
-{  
+{
   const unsigned int n = fe.dofs_per_cell;
   const unsigned int nc= GeometryInfo<dim>::max_children_per_cell;
-  
+
   std::vector<std::vector<FullMatrix<double> > > P;
 
   P.resize(RefinementCase<dim>::isotropic_refinement);
@@ -73,7 +73,7 @@ void test_embedding (const FiniteElement<dim>& fe)
 
 
   FETools::compute_embedding_matrices(fe, P);
-  
+
   for (unsigned int i=0;i<nc;++i)
     {
       deallog << fe.get_name() << " embedding " << i << std::endl;
@@ -81,7 +81,7 @@ void test_embedding (const FiniteElement<dim>& fe)
     }
 }
 
-  
+
 template<int dim>
 void test_projection (const FiniteElement<dim>& fe1,
                      const FiniteElement<dim>& fe2,
@@ -89,17 +89,21 @@ void test_projection (const FiniteElement<dim>& fe1,
 {
   out << fe1.get_name() << " -> "
       << fe2.get_name() << std::endl;
-  
+
   const unsigned int n1 = fe1.dofs_per_cell;
   const unsigned int n2 = fe2.dofs_per_cell;
 
   FullMatrix<double> P(n2,n1);
 
   FETools::get_projection_matrix(fe1, fe2, P);
+  for (unsigned int i=0; i<P.m(); ++i)
+    for (unsigned int j=0; j<P.n(); ++j)
+      if (std::fabs (P(i,j)) < 1e-14)
+       P(i,j) = 0;
   P.print_formatted(out, 3, false, 5);
 }
 
-  
+
 template<int dim>
 void test_projection (std::ostream& out)
 {
@@ -122,7 +126,7 @@ void test_projection (std::ostream& out)
   test_embedding(p1);
   test_embedding(p2);
   test_embedding(p3);
-  
+
   test_projection(p1,p0, out);
   test_projection(p0,p1, out);
   test_projection(p2,p1, out);
@@ -164,7 +168,7 @@ void test_renumbering(const FiniteElement<dim>& fe)
        deallog << ' ' << start[i][j];
       deallog << std::endl;
     }
-  
+
 }
 
 
@@ -172,11 +176,11 @@ template<int dim>
 void test_renumbering()
 {
   deallog.push("Renumber");
-  
+
   FE_Q<dim> q1(1);
   FE_Q<dim> q3(3);
 //Todo:[GK] Test Raviart-Thomas and Nedelec?
-  
+
   FESystem<dim> q1_3(q1,3);
   test_renumbering(q1_3);
   FESystem<dim> q3_3(q3,3);
@@ -194,11 +198,11 @@ int main()
   deallog.attach(logfile);
   deallog.depth_console(0);
   deallog.threshold_double(1.e-10);
-  
+
   test_projection<1>(logfile);
   test_projection<2>(logfile);
   test_projection<3>(logfile);
-  
+
   test_renumbering<1>();
   test_renumbering<2>();
   test_renumbering<3>();
index 42c031811bb2b99e00bb334c0074caffd2cdbac3..88950dc326f7a5f43f3d9a905fbeda5d36e229d5 100644 (file)
@@ -52,43 +52,43 @@ DEAL::~      0.5000 0.9682 0.5728
 DEAL::~      ~      0.2500 0.7395 
 DEAL::~      ~      ~      0.1250 
 FE_DGP<1>(1) -> FE_DGP<1>(0)
-1.000 0.000 
+1.000       
 FE_DGP<1>(0) -> FE_DGP<1>(1)
 1.000 
       
 FE_DGP<1>(2) -> FE_DGP<1>(1)
-1.000       0.000 
-      1.000 0.000 
+1.000             
+      1.000       
 FE_DGP<1>(1) -> FE_DGP<1>(2)
-1.000 0.000 
-0.000 1.000 
+1.000       
+      1.000 
             
 FE_DGP<1>(2) -> FE_DGP<1>(0)
-1.000 0.000 0.000 
+1.000             
 FE_DGP<1>(0) -> FE_DGP<1>(2)
 1.000 
-0.000 
+      
       
 FE_DGP<1>(3) -> FE_DGP<1>(2)
-1.000             0.000 
-      1.000       0.000 
-            1.000 0.000 
+1.000                   
+      1.000             
+            1.000       
 FE_DGP<1>(2) -> FE_DGP<1>(3)
-1.000 0.000 0.000 
-0.000 1.000 0.000 
-0.000 0.000 1.000 
-      0.000 0.000 
+1.000             
+      1.000       
+            1.000 
+                  
 FE_DGP<1>(4) -> FE_DGP<1>(3)
-1.000 0.000 0.000       0.000 
-0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 
-      0.000 0.000 1.000 0.000 
+1.000                         
+      1.000                   
+            1.000             
+                  1.000       
 FE_DGP<1>(3) -> FE_DGP<1>(4)
-1.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 
-0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 
+1.000                   
+      1.000             
+            1.000       
+                  1.000 
+                        
 FE_DGQ<1>(1) -> FE_DGQ<1>(0)
 0.500 0.500 
 FE_DGQ<1>(2) -> FE_DGQ<1>(0)
@@ -101,7 +101,7 @@ FE_DGQ<1>(2) -> FE_DGQ<1>(1)
 0.667 0.667 -0.333 
 -0.333 0.667 0.667 
 FE_DGQ<1>(1) -> FE_DGQ<1>(2)
-1.000 0.000 
+1.000       
 0.500 0.500 
       1.000 
 FE_DGQ<1>(3) -> FE_DGQ<1>(2)
@@ -338,76 +338,76 @@ DEAL::~      ~      ~      ~      ~      ~      ~      0.2500 0.2165 0.7395
 DEAL::~      ~      ~      ~      ~      ~      ~      ~      0.1250 ~      
 DEAL::~      ~      ~      ~      ~      ~      ~      ~      ~      0.1250 
 FE_DGP<2>(1) -> FE_DGP<2>(0)
-1.000 0.000 0.000 
+1.000             
 FE_DGP<2>(0) -> FE_DGP<2>(1)
 1.000 
-0.000 
+      
       
 FE_DGP<2>(2) -> FE_DGP<2>(1)
-1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 1.000 0.000 0.000 
+1.000                               
+      1.000                         
+                  1.000             
 FE_DGP<2>(1) -> FE_DGP<2>(2)
-1.000 0.000 0.000 
-0.000 1.000 0.000 
-0.000 0.000 0.000 
-0.000 0.000 1.000 
-0.000 0.000 0.000 
-      0.000 0.000 
+1.000             
+      1.000       
+                  
+            1.000 
+                  
+                  
 FE_DGP<2>(2) -> FE_DGP<2>(0)
-1.000 0.000 0.000 0.000       0.000 
+1.000                               
 FE_DGP<2>(0) -> FE_DGP<2>(2)
 1.000 
-0.000 
-0.000 
-0.000 
-0.000 
+      
+      
+      
+      
       
 FE_DGP<2>(3) -> FE_DGP<2>(2)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000       0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
+1.000                                                       
+      1.000                                                 
+            1.000                                           
+                        1.000                               
+                              1.000                         
+                                          1.000             
 FE_DGP<2>(2) -> FE_DGP<2>(3)
-1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 
-      0.000 0.000 0.000 1.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 
+1.000                               
+      1.000                         
+            1.000                   
+                                    
+                  1.000             
+                        1.000       
+                                    
+                              1.000 
+                                    
+                                    
 FE_DGP<2>(4) -> FE_DGP<2>(3)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000       0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
+1.000                                                                                     
+      1.000                                                                               
+            1.000                                                                         
+                  1.000                                                                   
+                              1.000                                                       
+                                    1.000                                                 
+                                          1.000                                           
+                                                      1.000                               
+                                                            1.000                         
+                                                                        1.000             
 FE_DGP<2>(3) -> FE_DGP<2>(4)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000       0.000 0.000 
+1.000                                                       
+      1.000                                                 
+            1.000                                           
+                  1.000                                     
+                                                            
+                        1.000                               
+                              1.000                         
+                                    1.000                   
+                                                            
+                                          1.000             
+                                                1.000       
+                                                            
+                                                      1.000 
+                                                            
+                                                            
 FE_DGQ<2>(1) -> FE_DGQ<2>(0)
 0.250 0.250 0.250 0.250 
 FE_DGQ<2>(2) -> FE_DGQ<2>(0)
@@ -422,15 +422,15 @@ FE_DGQ<2>(2) -> FE_DGQ<2>(1)
 -0.222 -0.222 0.111 0.444 0.444 -0.222 0.444 0.444 -0.222 
 0.111 -0.222 -0.222 -0.222 0.444 0.444 -0.222 0.444 0.444 
 FE_DGQ<2>(1) -> FE_DGQ<2>(2)
-1.000 0.000 0.000 0.000 
-0.500 0.500       0.000 
-0.000 1.000 0.000 0.000 
-0.500 0.000 0.500 0.000 
+1.000                   
+0.500 0.500             
+      1.000             
+0.500       0.500       
 0.250 0.250 0.250 0.250 
-0.000 0.500 0.000 0.500 
-0.000 0.000 1.000 0.000 
-0.000 0.000 0.500 0.500 
-0.000 0.000       1.000 
+      0.500       0.500 
+            1.000       
+            0.500 0.500 
+                  1.000 
 FE_DGQ<2>(3) -> FE_DGQ<2>(2)
 0.601 0.523 -0.523 0.174 0.523 0.456 -0.456 0.152 -0.523 -0.456 0.456 -0.152 0.174 0.152 -0.152 0.051 
 -0.048 0.436 0.436 -0.048 -0.042 0.380 0.380 -0.042 0.042 -0.380 -0.380 0.042 -0.014 0.127 0.127 -0.014 
@@ -1587,130 +1587,130 @@ DEAL::~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~
 DEAL::~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      0.1250 ~      
 DEAL::~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      ~      0.1250 
 FE_DGP<3>(1) -> FE_DGP<3>(0)
-1.000 0.000 0.000 0.000 
+1.000                   
 FE_DGP<3>(0) -> FE_DGP<3>(1)
 1.000 
-0.000 
-0.000 
+      
+      
       
 FE_DGP<3>(2) -> FE_DGP<3>(1)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
+1.000                                                       
+      1.000                                                 
+                  1.000                                     
+                                    1.000                   
 FE_DGP<3>(1) -> FE_DGP<3>(2)
-1.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 
-0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 
+1.000                   
+      1.000             
+                        
+            1.000       
+                        
+                        
+                  1.000 
+                        
+                        
+                        
 FE_DGP<3>(2) -> FE_DGP<3>(0)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
+1.000                                                       
 FE_DGP<3>(0) -> FE_DGP<3>(2)
 1.000 
-0.000 
-0.000 
-0.000 
-0.000 
-0.000 
-0.000 
-0.000 
-0.000 
+      
+      
+      
+      
+      
+      
+      
+      
       
 FE_DGP<3>(3) -> FE_DGP<3>(2)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000       0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
+1.000                                                                                                                   
+      1.000                                                                                                             
+            1.000                                                                                                       
+                        1.000                                                                                           
+                              1.000                                                                                     
+                                          1.000                                                                         
+                                                            1.000                                                       
+                                                                  1.000                                                 
+                                                                              1.000                                     
+                                                                                                1.000                   
 FE_DGP<3>(2) -> FE_DGP<3>(3)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
+1.000                                                       
+      1.000                                                 
+            1.000                                           
+                                                            
+                  1.000                                     
+                        1.000                               
+                                                            
+                              1.000                         
+                                                            
+                                                            
+                                    1.000                   
+                                          1.000             
+                                                            
+                                                1.000       
+                                                            
+                                                            
+                                                      1.000 
+                                                            
+                                                            
+                                                            
 FE_DGP<3>(4) -> FE_DGP<3>(3)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
+1.000                                                                                                                                                                                                             
+      1.000                                                                                                                                                                                                       
+            1.000                                                                                                                                                                                                 
+                  1.000                                                                                                                                                                                           
+                              1.000                                                                                                                                                                               
+                                    1.000                                                                                                                                                                         
+                                          1.000                                                                                                                                                                   
+                                                      1.000                                                                                                                                                       
+                                                            1.000                                                                                                                                                 
+                                                                        1.000                                                                                                                                     
+                                                                                          1.000                                                                                                                   
+                                                                                                1.000                                                                                                             
+                                                                                                      1.000                                                                                                       
+                                                                                                                  1.000                                                                                           
+                                                                                                                        1.000                                                                                     
+                                                                                                                                    1.000                                                                         
+                                                                                                                                                      1.000                                                       
+                                                                                                                                                            1.000                                                 
+                                                                                                                                                                        1.000                                     
+                                                                                                                                                                                          1.000                   
 FE_DGP<3>(3) -> FE_DGP<3>(4)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-      0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
+1.000                                                                                                                   
+      1.000                                                                                                             
+            1.000                                                                                                       
+                  1.000                                                                                                 
+                                                                                                                        
+                        1.000                                                                                           
+                              1.000                                                                                     
+                                    1.000                                                                               
+                                                                                                                        
+                                          1.000                                                                         
+                                                1.000                                                                   
+                                                                                                                        
+                                                      1.000                                                             
+                                                                                                                        
+                                                                                                                        
+                                                            1.000                                                       
+                                                                  1.000                                                 
+                                                                        1.000                                           
+                                                                                                                        
+                                                                              1.000                                     
+                                                                                    1.000                               
+                                                                                                                        
+                                                                                          1.000                         
+                                                                                                                        
+                                                                                                                        
+                                                                                                1.000                   
+                                                                                                      1.000             
+                                                                                                                        
+                                                                                                            1.000       
+                                                                                                                        
+                                                                                                                        
+                                                                                                                  1.000 
+                                                                                                                        
+                                                                                                                        
+                                                                                                                        
 FE_DGQ<3>(1) -> FE_DGQ<3>(0)
 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 
 FE_DGQ<3>(2) -> FE_DGQ<3>(0)
@@ -1729,33 +1729,33 @@ FE_DGQ<3>(2) -> FE_DGQ<3>(1)
 0.074 0.074 -0.037 -0.148 -0.148 0.074 -0.148 -0.148 0.074 -0.148 -0.148 0.074 0.296 0.296 -0.148 0.296 0.296 -0.148 -0.148 -0.148 0.074 0.296 0.296 -0.148 0.296 0.296 -0.148 
 -0.037 0.074 0.074 0.074 -0.148 -0.148 0.074 -0.148 -0.148 0.074 -0.148 -0.148 -0.148 0.296 0.296 -0.148 0.296 0.296 0.074 -0.148 -0.148 -0.148 0.296 0.296 -0.148 0.296 0.296 
 FE_DGQ<3>(1) -> FE_DGQ<3>(2)
-1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.500 0.500 0.000 0.000 0.000 0.000 0.000 0.000 
-0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 
-0.500 0.000 0.500 0.000 0.000 0.000 0.000 0.000 
-0.250 0.250 0.250 0.250 0.000 0.000 0.000 0.000 
-0.000 0.500 0.000 0.500 0.000 0.000 0.000 0.000 
-0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 
-0.000 0.000 0.500 0.500 0.000 0.000 0.000 0.000 
-0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 
-0.500 0.000 0.000 0.000 0.500 0.000 0.000 0.000 
-0.250 0.250 0.000 0.000 0.250 0.250 0.000 0.000 
-0.000 0.500 0.000 0.000 0.000 0.500 0.000 0.000 
-0.250 0.000 0.250 0.000 0.250 0.000 0.250 0.000 
+1.000                                           
+0.500 0.500                                     
+      1.000                                     
+0.500       0.500                               
+0.250 0.250 0.250 0.250                         
+      0.500       0.500                         
+            1.000                               
+            0.500 0.500                         
+                  1.000                         
+0.500                   0.500                   
+0.250 0.250             0.250 0.250             
+      0.500                   0.500             
+0.250       0.250       0.250       0.250       
 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 
-0.000 0.250 0.000 0.250 0.000 0.250 0.000 0.250 
-0.000 0.000 0.500 0.000 0.000 0.000 0.500 0.000 
-0.000 0.000 0.250 0.250 0.000 0.000 0.250 0.250 
-0.000 0.000 0.000 0.500 0.000 0.000 0.000 0.500 
-0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.500 0.500       0.000 
-0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 
-0.000 0.000 0.000 0.000 0.500 0.000 0.500 0.000 
-0.000 0.000 0.000 0.000 0.250 0.250 0.250 0.250 
-0.000 0.000 0.000 0.000 0.000 0.500 0.000 0.500 
-0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 
-0.000 0.000 0.000 0.000 0.000 0.000 0.500 0.500 
-0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 
+      0.250       0.250       0.250       0.250 
+            0.500                   0.500       
+            0.250 0.250             0.250 0.250 
+                  0.500                   0.500 
+                        1.000                   
+                        0.500 0.500             
+                              1.000             
+                        0.500       0.500       
+                        0.250 0.250 0.250 0.250 
+                              0.500       0.500 
+                                    1.000       
+                                    0.500 0.500 
+                                          1.000 
 FE_DGQ<3>(3) -> FE_DGQ<3>(2)
 0.465 0.405 -0.405 0.135 0.405 0.353 -0.353 0.118 -0.405 -0.353 0.353 -0.118 0.135 0.118 -0.118 0.039 0.405 0.353 -0.353 0.118 0.353 0.308 -0.308 0.103 -0.353 -0.308 0.308 -0.103 0.118 0.103 -0.103 0.034 -0.405 -0.353 0.353 -0.118 -0.353 -0.308 0.308 -0.103 0.353 0.308 -0.308 0.103 -0.118 -0.103 0.103 -0.034 0.135 0.118 -0.118 0.039 0.118 0.103 -0.103 0.034 -0.118 -0.103 0.103 -0.034 0.039 0.034 -0.034 0.011 
 -0.038 0.338 0.338 -0.038 -0.033 0.294 0.294 -0.033 0.033 -0.294 -0.294 0.033 -0.011 0.098 0.098 -0.011 -0.033 0.294 0.294 -0.033 -0.028 0.256 0.256 -0.028 0.028 -0.256 -0.256 0.028 -0.009 0.085 0.085 -0.009 0.033 -0.294 -0.294 0.033 0.028 -0.256 -0.256 0.028 -0.028 0.256 0.256 -0.028 0.009 -0.085 -0.085 0.009 -0.011 0.098 0.098 -0.011 -0.009 0.085 0.085 -0.009 0.009 -0.085 -0.085 0.009 -0.003 0.028 0.028 -0.003 
index bd504fcf6c0fc9b86323461ae1e3d2c71e5e7182..dd3a3ce9e7e17eebe9b2e7ad66b366ad811c1e7d 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/fe/mapping_q1.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 
                                 // This is needed for C++ output:
index 2d0e8f3d9f92530ba9b457ee4c519a6bf0d0eb30..e61873413b77af34840f524c4e8c2f56a550f2c7 100644 (file)
@@ -1,5 +1,15 @@
-// internals.cc,v 1.12 2003/04/09 15:49:55 wolf Exp
-// (c) Guido Kanschat
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2007, 2008, 2010, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
 //
 // Compute support points
 
@@ -59,17 +69,17 @@ check_support (const FiniteElement<dim>& finel, const char* name)
   dof.distribute_dofs (finel);
 
   deallog << name << '<' << dim << '>' << " cell support points" << std::endl;
-  
+
   const std::vector<Point<dim> > &cell_points = finel.get_unit_support_points ();
 
   for (unsigned int k=0;k<cell_points.size();++k)
     deallog << std::setprecision(3) << cell_points[k] << std::endl;
-  
+
   const std::vector<Point<dim-1> > &face_points = finel.get_unit_face_support_points ();
   const std::vector<double> dummy_weights (face_points.size());
-  
+
   Quadrature<dim-1> q(face_points, dummy_weights);
-  
+
   for (unsigned int i=0;i<GeometryInfo<dim>::faces_per_cell;++i)
     {
       std::vector<Point<dim> > q_points (q.get_points().size());
@@ -77,7 +87,7 @@ check_support (const FiniteElement<dim>& finel, const char* name)
       Quadrature<dim> qp(q_points);
       deallog << name << '<' << dim << '>' << " face " << i
                << " support points" << std::endl;
-        
+
       for (unsigned int k=0; k<face_points.size(); ++k)
        deallog << std::setprecision(3) << qp.point(k)
                << std::endl;
@@ -95,10 +105,10 @@ check_matrices (FiniteElement<dim>& fe, const char* name)
     {
       deallog << name << '<' << dim << '>' << " restriction " << i << std::endl;
       if (fe.isotropic_restriction_is_implemented())
-       print_formatted (fe.get_restriction_matrix(i), 3, 6);
+       print_formatted (fe.get_restriction_matrix(i), 6, 8);
       deallog << name << '<' << dim << '>' << " embedding " << i << std::endl;
       if (fe.isotropic_prolongation_is_implemented())
-       print_formatted (fe.get_prolongation_matrix(i), 3, 6);
+       print_formatted (fe.get_prolongation_matrix(i), 6, 8);
     }
 }
 
@@ -166,15 +176,15 @@ main()
   CHECK_ALL(Nedelec, 0, 3);
   CHECK_ALL(Nedelec, 1, 2);
   CHECK_ALL(Nedelec, 1, 3);
-  
+
   CHECK_ALL(RaviartThomas, 0, 2);
   CHECK_ALL(RaviartThomas, 0, 3);
   CHECK_ALL(RaviartThomas, 1, 2);
   CHECK_ALL(RaviartThomas, 1, 3);
-  
+
   CHECK_ALL(BDM, 1, 2);
   CHECK_ALL(BDM, 2, 2);
-  
+
   CHECK_SYS1(FE_Q<2>(1),3,2);
   CHECK_SYS1(FE_DGQ<2>(2),2,2);
 //  CHECK_SYS1(FE_DGP<2>(3),1,2);
@@ -187,7 +197,7 @@ main()
   CHECK_SYS3(FE_DGQ<2>(2),2,FE_DGQ<2>(2),2,FE_Q<2>(3),3,2);
 //   CHECK_SYS3(FE_DGP<2>(3),1,FE_DGP<2>(3),1,FE_Q<2>(2),3,2);
 
-                                  // systems of systems  
+                                  // systems of systems
   CHECK_SYS3((FESystem<2>(FE_Q<2>(1),3)), 3,
             FE_DGQ<2>(3), 1,
             FE_Q<2>(1), 3,
@@ -215,6 +225,6 @@ main()
             FESystem<2>(FE_Q<2>(2),3,
                         FE_Nedelec<2>(1),2),2,
             2);
-  
+
   return 0;
 }
index 3ceb8643ff1e35d4f57ba09d5301079238063b75..20685c16d246b2c94337e78aa43c88e1c54ef3ff 100644 (file)
@@ -32,8 +32,8 @@
 #include <deal.II/fe/fe_values.h>
 #include <deal.II/fe/mapping.h>
 #include <deal.II/fe/mapping_q1.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_q.h>
index ee50b487bf1056f4de6d3e099020f0340cd600e7..abe1a6a45435a5df6c56740744377d4cee550855 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/fe/fe_dgq.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
index 81faa2d3d7517e3ca85f398a52479fe5cfbd34c5..67c9581e3f0e39b6ce6a35c9865be0fe6cb12313 100644 (file)
@@ -2,7 +2,7 @@
 //    rt_8.cc,v 1.3 2003/06/09 16:00:38 wolf Exp
 //    Version: 
 //
-//    Copyright (C) 2003, 2005, 2010 by the deal.II authors
+//    Copyright (C) 2003, 2005, 2010, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -72,7 +72,7 @@ test (const unsigned int degree)
                 fe.JxW(q_point));
   for (unsigned int i=0; i<dofs_per_cell; ++i)
     for (unsigned int j=0; j<dofs_per_cell; ++j)
-      if (std::fabs(mass_matrix(i,j)) < 1e-16)
+      if (std::fabs(mass_matrix(i,j)) < 1e-14)
        mass_matrix(i,j) = 0;
   mass_matrix.print_formatted (logfile, 3, false, 0, " ", 1);
 
index 89ec6a6785ba3cef638edfc6daf41f9d6a2ba5e4..8aec3586e5a7aa974da597223e511716ed53b239 100644 (file)
@@ -14,80 +14,80 @@ DEAL::Degree=0: 2 iterations to obtain convergence.
                               0.196       -0.015                   -0.145 
                         -0.014       0.174             -0.129             
                               -0.015       0.196                   -0.145 
--0.129       -0.129                               1.195       0.000       
-                        -0.129       -0.129             1.195       0.000 
-      -0.145       -0.145                         0.000       1.345       
-                              -0.145       -0.145       0.000       1.345 
+-0.129       -0.129                               1.195                   
+                        -0.129       -0.129             1.195             
+      -0.145       -0.145                                     1.345       
+                              -0.145       -0.145                   1.345 
 DEAL:cg::Starting value 2.17323
 DEAL:cg::Convergence step 6 value 0
 DEAL::Degree=1: 6 iterations to obtain convergence.
 0.167       0.023 -0.006       -0.001                                     -0.129       0.178                               -0.018       0.025       
-      0.187             -0.007                                                                   -0.145       0.200       0.000                   
+      0.187             -0.007                                                                   -0.145       0.200                               
 0.023       0.267 -0.001       -0.010                                     -0.018       0.025                               -0.206       0.284       
 -0.006       -0.001 0.167       0.023                                     -0.129       -0.178                               -0.018       -0.025       
       -0.007             0.187                                                                   -0.145       -0.200                               
--0.001       -0.010 0.023       0.267                                     -0.018       -0.025       0.000       0.000       -0.206       -0.284       
+-0.001       -0.010 0.023       0.267                                     -0.018       -0.025                               -0.206       -0.284       
                                     0.167       0.023 -0.006       -0.001       -0.129                   -0.018       0.178                   0.025 
                                           0.187             -0.007                         -0.145                               0.200             
-                                    0.023       0.267 -0.001       -0.010       -0.018       0.000       -0.206       0.025                   0.284 
+                                    0.023       0.267 -0.001       -0.010       -0.018                   -0.206       0.025                   0.284 
                                     -0.006       -0.001 0.167       0.023       -0.129                   -0.018       -0.178                   -0.025 
                                           -0.007             0.187                         -0.145                               -0.200             
                                     -0.001       -0.010 0.023       0.267       -0.018                   -0.206       -0.025                   -0.284 
--0.129       -0.018 -0.129       -0.018                                     1.195       0.000                               0.167                   
-                                    -0.129       -0.018 -0.129       -0.018       1.195                   0.167       0.000                         
-0.178       0.025 -0.178       -0.025                                     0.000       1.318                   0.000                   0.184       
-                                          -0.145 0.000       -0.145                         1.345       0.000                               0.000 
-      -0.145             -0.145 0.000                                                             1.345                   0.000                   
-                                    -0.018       -0.206 -0.018       -0.206       0.167       0.000       1.914                                     
-      0.200             -0.200 0.000                                                 0.000                   1.483       0.000       0.000       
-                                    0.178       0.025 -0.178       -0.025       0.000                               1.318       0.000       0.184 
--0.018 0.000 -0.206 -0.018       -0.206                                     0.167                   0.000       0.000       1.914       0.000       
-                                          0.200             -0.200                                                 0.000       1.483       0.000 
-0.025       0.284 -0.025       -0.284                                                 0.184                   0.000       0.000       2.111       
-                                    0.025       0.284 -0.025       -0.284                   0.000                   0.184       0.000       2.111 
+-0.129       -0.018 -0.129       -0.018                                     1.195                                           0.167                   
+                                    -0.129       -0.018 -0.129       -0.018       1.195                   0.167                                     
+0.178       0.025 -0.178       -0.025                                                 1.318                                           0.184       
+                                          -0.145             -0.145                         1.345                                                 
+      -0.145             -0.145                                                                   1.345                                           
+                                    -0.018       -0.206 -0.018       -0.206       0.167                   1.914                                     
+      0.200             -0.200                                                                               1.483                               
+                                    0.178       0.025 -0.178       -0.025                                           1.318                   0.184 
+-0.018       -0.206 -0.018       -0.206                                     0.167                                           1.914                   
+                                          0.200             -0.200                                                             1.483             
+0.025       0.284 -0.025       -0.284                                                 0.184                                           2.111       
+                                    0.025       0.284 -0.025       -0.284                                           0.184                   2.111 
 DEAL:cg::Starting value 2.69692
 DEAL:cg::Convergence step 12 value 0
 DEAL::Degree=2: 12 iterations to obtain convergence.
-0.168 0.000 0.024 0.000 -0.005       -0.001                                                       -0.064       0.178       -0.118                   0.000                   -0.009       0.025       -0.017       0.000       0.000       0.000       
-0.000 0.189 0.000 0.108       -0.005       -0.003                                                             0.000                   -0.072       0.200       -0.133                   0.000       0.000       -0.041       0.114       -0.076       
-0.024 0.000 0.269 0.000 -0.001       -0.008                                                       -0.009       0.025       -0.017                   0.000       0.000       -0.102       0.284       -0.189                   0.000                   
-0.000 0.108 0.000 0.407       -0.003       -0.011                                                 0.000       0.000       0.000       -0.041       0.114       -0.076                   0.000       0.000       -0.155       0.430       -0.286       
--0.005       -0.001       0.168 0.000 0.024 0.000                                                 -0.064       -0.178       -0.118                   0.000                   -0.009       -0.025       -0.017       0.000       0.000       0.000       
-      -0.005       -0.003 0.000 0.189 0.000 0.108                                                             0.000                   -0.072       -0.200       -0.133                   0.000       0.000       -0.041       -0.114       -0.076       
--0.001       -0.008       0.024 0.000 0.269 0.000                                                 -0.009       -0.025       -0.017                   0.000       0.000       -0.102       -0.284       -0.189                                           
-      -0.003       -0.011 0.000 0.108 0.000 0.407                                                             0.000       0.000       -0.041       -0.114       -0.076                   0.000       0.000       -0.155       -0.430       -0.286       
-                                                0.168 0.000 0.024 0.000 -0.005       -0.001             -0.064                   -0.009       0.000       0.178                   0.025       0.000       -0.118       0.000       -0.017       0.000 
-                                                0.000 0.189 0.000 0.108       -0.005       -0.003                   -0.072       0.000       -0.041       0.000       0.200       0.000       0.114                   -0.133       0.000       -0.076 
-                                                0.024 0.000 0.269 0.000 -0.001       -0.008             -0.009                   -0.102                   0.025       0.000       0.284                   -0.017       0.000       -0.189             
-                                                0.000 0.108 0.000 0.407       -0.003       -0.011       0.000       -0.041                   -0.155       0.000       0.114                   0.430       0.000       -0.076       0.000       -0.286 
-                                                -0.005       -0.001       0.168       0.024 0.000       -0.064                   -0.009       0.000       -0.178       0.000       -0.025       0.000       -0.118                   -0.017       0.000 
-                                                      -0.005       -0.003       0.189 0.000 0.108                   -0.072                   -0.041       0.000       -0.200       0.000       -0.114                   -0.133       0.000       -0.076 
-                                                -0.001       -0.008       0.024 0.000 0.269 0.000       -0.009                   -0.102                   -0.025       0.000       -0.284       0.000       -0.017       0.000       -0.189       0.000 
-                                                      -0.003       -0.011 0.000 0.108 0.000 0.407       0.000       -0.041                   -0.155       0.000       -0.114                   -0.430       0.000       -0.076       0.000       -0.286 
--0.064       -0.009 0.000 -0.064       -0.009                                                       0.928       0.000       -0.069       0.000                               0.130                   -0.010       0.000       0.000       0.000       
-                                                -0.064       -0.009 0.000 -0.064       -0.009 0.000       0.928       0.000       0.130       0.000       0.000       0.000       0.000       0.000       -0.069       0.000       -0.010       0.000 
-0.178 0.000 0.025 0.000 -0.178 0.000 -0.025 0.000                                                 0.000       1.318       0.000                   0.000                   0.000       0.184                   0.000       0.000                   
-                                                      -0.072       -0.041       -0.072       -0.041       0.000       1.045       0.000       0.598       0.000       0.000       0.000       0.000                   -0.078       0.000       -0.045 
--0.118       -0.017 0.000 -0.118       -0.017 0.000                                                 -0.069       0.000       1.024                               0.000       -0.010                   0.143       0.000       0.000       0.000       
-                                                -0.009 0.000 -0.102       -0.009       -0.102             0.130       0.000       1.487       0.000       0.000       0.000       0.000       0.000       -0.010       0.000       -0.111       0.000 
-      -0.072       -0.041       -0.072       -0.041                                                 0.000                               1.045       0.000       -0.078       0.000       0.000                   0.598       0.000       -0.045       
-                                                0.000 -0.041       -0.155 0.000 -0.041       -0.155       0.000       0.598       0.000       2.247       0.000       0.000       0.000       0.000       0.000       -0.045       0.000       -0.168 
-0.000 0.200 0.000 0.114 0.000 -0.200 0.000 -0.114                                                             0.000                   0.000       1.483       0.000       0.000       0.000                               0.850       0.000       
-                                                0.178 0.000 0.025 0.000 -0.178 0.000 -0.025 0.000       0.000       0.000       0.000       0.000       1.318       0.000       0.184       0.000       0.000                   0.000       0.000 
-      -0.133 0.000 -0.076       -0.133 0.000 -0.076                                                                         0.000       -0.078       0.000       1.152       0.000                   0.000       -0.045       0.000       0.660       
-                                                      0.200 0.000 0.114 0.000 -0.200 0.000 -0.114       0.000       0.000       0.000       0.000       0.000       1.483       0.000       0.850                   0.000                   0.000 
--0.009       -0.102       -0.009       -0.102                                                       0.130       0.000       -0.010       0.000       0.000       0.000       1.487       0.000       -0.111       0.000       0.000       0.000       
-                                                0.025 0.000 0.284       -0.025 0.000 -0.284             0.000       0.000       0.000       0.000       0.184       0.000       2.111       0.000                   0.000       0.000       0.000 
-0.025 0.000 0.284 0.000 -0.025 0.000 -0.284 0.000                                                             0.184                   0.000       0.000                   0.000       2.111       0.000       0.000       0.000       0.000       
-                                                0.000 0.114       0.430 0.000 -0.114 0.000 -0.430       0.000       0.000       0.000       0.000       0.000       0.850       0.000       3.190       0.000       0.000                   0.000 
--0.017 0.000 -0.189 0.000 -0.017 0.000 -0.189 0.000                                                 -0.010                   0.143                               0.000       -0.111       0.000       1.641       0.000                   0.000       
-                                                -0.118       -0.017 0.000 -0.118       -0.017 0.000       -0.069                   -0.010       0.000       0.000                               0.000       1.024       0.000       0.143       0.000 
-0.000 -0.041       -0.155 0.000 -0.041       -0.155                                                 0.000       0.000       0.000       0.598                   -0.045       0.000       0.000       0.000       2.247       0.000       -0.168       
-                                                0.000 -0.133 0.000 -0.076       -0.133 0.000 -0.076       0.000       -0.078       0.000       -0.045                   0.000       0.000       0.000       0.000       1.152       0.000       0.660 
-0.000 0.114 0.000 0.430 0.000 -0.114       -0.430                                                 0.000       0.000       0.000       0.000       0.850       0.000       0.000       0.000                   0.000       3.190       0.000       
-                                                -0.017 0.000 -0.189 0.000 -0.017 0.000 -0.189 0.000       -0.010       0.000       -0.111       0.000       0.000                   0.000                   0.143       0.000       1.641       0.000 
-0.000 -0.076       -0.286 0.000 -0.076       -0.286                                                 0.000                   0.000       -0.045       0.000       0.660       0.000       0.000       0.000       -0.168       0.000       2.479       
-                                                0.000 -0.076       -0.286 0.000 -0.076 0.000 -0.286       0.000       -0.045       0.000       -0.168       0.000       0.000       0.000       0.000       0.000       0.660       0.000       2.479 
+0.168       0.024       -0.005       -0.001                                                       -0.064       0.178       -0.118                                           -0.009       0.025       -0.017                                           
+      0.189       0.108       -0.005       -0.003                                                                                     -0.072       0.200       -0.133                                           -0.041       0.114       -0.076       
+0.024       0.269       -0.001       -0.008                                                       -0.009       0.025       -0.017                                           -0.102       0.284       -0.189                                           
+      0.108       0.407       -0.003       -0.011                                                                                     -0.041       0.114       -0.076                                           -0.155       0.430       -0.286       
+-0.005       -0.001       0.168       0.024                                                       -0.064       -0.178       -0.118                                           -0.009       -0.025       -0.017                                           
+      -0.005       -0.003       0.189       0.108                                                                                     -0.072       -0.200       -0.133                                           -0.041       -0.114       -0.076       
+-0.001       -0.008       0.024       0.269                                                       -0.009       -0.025       -0.017                                           -0.102       -0.284       -0.189                                           
+      -0.003       -0.011       0.108       0.407                                                                                     -0.041       -0.114       -0.076                                           -0.155       -0.430       -0.286       
+                                                0.168       0.024       -0.005       -0.001             -0.064                   -0.009                   0.178                   0.025                   -0.118                   -0.017             
+                                                      0.189       0.108       -0.005       -0.003                   -0.072                   -0.041                   0.200                   0.114                   -0.133                   -0.076 
+                                                0.024       0.269       -0.001       -0.008             -0.009                   -0.102                   0.025                   0.284                   -0.017                   -0.189             
+                                                      0.108       0.407       -0.003       -0.011                   -0.041                   -0.155                   0.114                   0.430                   -0.076                   -0.286 
+                                                -0.005       -0.001       0.168       0.024             -0.064                   -0.009                   -0.178                   -0.025                   -0.118                   -0.017             
+                                                      -0.005       -0.003       0.189       0.108                   -0.072                   -0.041                   -0.200                   -0.114                   -0.133                   -0.076 
+                                                -0.001       -0.008       0.024       0.269             -0.009                   -0.102                   -0.025                   -0.284                   -0.017                   -0.189             
+                                                      -0.003       -0.011       0.108       0.407                   -0.041                   -0.155                   -0.114                   -0.430                   -0.076                   -0.286 
+-0.064       -0.009       -0.064       -0.009                                                       0.928                   -0.069                                           0.130                   -0.010                                           
+                                                -0.064       -0.009       -0.064       -0.009             0.928                   0.130                                                                   -0.069                   -0.010             
+0.178       0.025       -0.178       -0.025                                                                   1.318                                                                   0.184                                                       
+                                                      -0.072       -0.041       -0.072       -0.041                   1.045                   0.598                                                                   -0.078                   -0.045 
+-0.118       -0.017       -0.118       -0.017                                                       -0.069                   1.024                                           -0.010                   0.143                                           
+                                                -0.009       -0.102       -0.009       -0.102             0.130                   1.487                                                                   -0.010                   -0.111             
+      -0.072       -0.041       -0.072       -0.041                                                                                     1.045                   -0.078                                           0.598                   -0.045       
+                                                      -0.041       -0.155       -0.041       -0.155                   0.598                   2.247                                                                   -0.045                   -0.168 
+      0.200       0.114       -0.200       -0.114                                                                                                 1.483                                                                   0.850                   
+                                                0.178       0.025       -0.178       -0.025                                                             1.318                   0.184                                                             
+      -0.133       -0.076       -0.133       -0.076                                                                                     -0.078                   1.152                                           -0.045                   0.660       
+                                                      0.200       0.114       -0.200       -0.114                                                                   1.483                   0.850                                                 
+-0.009       -0.102       -0.009       -0.102                                                       0.130                   -0.010                                           1.487                   -0.111                                           
+                                                0.025       0.284       -0.025       -0.284                                                             0.184                   2.111                                                             
+0.025       0.284       -0.025       -0.284                                                                   0.184                                                                   2.111                                                       
+                                                      0.114       0.430       -0.114       -0.430                                                                   0.850                   3.190                                                 
+-0.017       -0.189       -0.017       -0.189                                                       -0.010                   0.143                                           -0.111                   1.641                                           
+                                                -0.118       -0.017       -0.118       -0.017             -0.069                   -0.010                                                                   1.024                   0.143             
+      -0.041       -0.155       -0.041       -0.155                                                                                     0.598                   -0.045                                           2.247                   -0.168       
+                                                      -0.133       -0.076       -0.133       -0.076                   -0.078                   -0.045                                                                   1.152                   0.660 
+      0.114       0.430       -0.114       -0.430                                                                                                 0.850                                                                   3.190                   
+                                                -0.017       -0.189       -0.017       -0.189             -0.010                   -0.111                                                                   0.143                   1.641             
+      -0.076       -0.286       -0.076       -0.286                                                                                     -0.045                   0.660                                           -0.168                   2.479       
+                                                      -0.076       -0.286       -0.076       -0.286                   -0.045                   -0.168                                                                   0.660                   2.479 
 DEAL:cg::Starting value 3.81366
 DEAL:cg::Convergence step 21 value 0.00000
 DEAL::Degree=3: 21 iterations to obtain convergence.
index 44125cbda64a027a234637503b658e65820638cc..0c8a3b597a599c2a5b4d4511fe1c06f589b6f15b 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/grid/grid_tools.h>
 #include <deal.II/fe/fe_raviart_thomas.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <vector>
 #include <fstream>
index b296f18675252db16885ba3825c70b5ea2eea0c6..9d424085dbbc4536dd6c25d2d67ec649855b95a9 100644 (file)
@@ -39,8 +39,8 @@ char buf[1000];
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/solver_cg.h>
index bb5491b50c3a7db8e98682f235afb58eabd7fe23..a14df3eea9e3ed8dc524dee6800189bcfba88ea8 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/fe/mapping_q1_eulerian.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/base/function.h>
index 9910b20dbbbcbe856b70d2f92e2863ebf3e905fa..0dffdc32fa6eba6217128a1e5a6d8d4d6f098a3b 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index 2da8a92e3c4e686ae14f4124054da35df623930c..b48250539d55a8cb42cd5bf905762f02a74c8f2b 100644 (file)
@@ -34,7 +34,7 @@ char logname[] = "crash_06/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_abf.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_dgp_monomial.h>
index 3bfbd3b3ebd761273f6cb5eaf163033031b4d679..897eea8e9b3cea4a261bd68e63a75ce7b3948a1c 100644 (file)
@@ -34,7 +34,7 @@ char logname[] = "crash_07/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index ec02c7748d838f35a132489a73ef1a6e9d93630d..bfc0e55f2c8be16d5db66eecab9cb8da1b26c522 100644 (file)
@@ -35,7 +35,7 @@ char logname[] = "crash_08/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 2d1c1a30fbbe176db66932264b008879b5d8ca2d..bb33e687dea2f671905618957cc3c75b51c4750d 100644 (file)
@@ -34,7 +34,7 @@ char logname[] = "crash_09/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 11c984633c1d8f7959674873f5710b7c6535f17f..f318e019600d29e098f3f106e6193ea16762e48e 100644 (file)
@@ -34,7 +34,7 @@ char logname[] = "crash_11/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 82b826a254bdc45a4dd8d26f2297137a6460c7a9..d4e7f4bec9be86b9c7d2705ca9e971c28c28b1f0 100644 (file)
@@ -42,7 +42,7 @@ char logname[] = "crash_12/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 
 #include <fstream>
index 577402e4fb26f2e672568320d73f9e4601481893..6cab6c0f52359c06c0bed629de2565a382a3fa35 100644 (file)
@@ -35,7 +35,7 @@ char logname[] = "crash_16/output";
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/fe_system.h>
index b0d621ff2d61bb0f4aaf5ea9f993c0d3c2fcb3cb..0ebfa639236513850b7e25a90c9efae92fe67f7e 100644 (file)
@@ -40,8 +40,8 @@ char logname[] = "crash_17/output";
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 43ada8158cf0e34b8748dd7f699d33d14213363e..659daea25a9d05e6241726c7ff652b8fc11204d1 100644 (file)
@@ -42,8 +42,8 @@ char logname[] = "crash_17_compressed_set_sparsity/output";
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 813ab04cf8d7a8cdf086f45f346dae10fcb95a6a..cdfd0be4427a1b46c277d0f5f5b17f471186be6e 100644 (file)
@@ -43,8 +43,8 @@ char logname[] = "crash_18/output";
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index c6abb387db7e95442e621b6f1a8e34650f199e2a..e0cbe9d828da022163bb611a5c71d813fb6d978e 100644 (file)
@@ -46,8 +46,8 @@ char logname[] = "crash_18_compressed_set_sparsity/output";
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index c760e7e5898036da49d554cc2a7d9dc1150677f9..36af88503dbee8161dd78fe3bda36378a6a44a17 100644 (file)
@@ -43,8 +43,8 @@ std::ofstream logfile("crash_19/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 7151fca8719ff86945d5343bf7d8c3e07c9adc94..b1850232863a541fefbccc62c4d5950e5ea168f0 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index abc9fe4f1141d11edc1ebde9ab4a22d8bd9f2994..8be0b2c50f16cc002e487380c37f215c7d92369a 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 1e8800a4098944ef7d2233bfbd5f677d2a0ad6f5..6fe3b913dfc965a6b60b33effd6d7ab5ff6afaf5 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 135d77b945e0ba15bdd79b0e574b78af1b5b2292..eb06f1dd592554239a91921f3b3713024541dcbd 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index cb2d486a64be147d3385aa059fd383f474c87e2f..d91f10a7a364d6b5a9e9eca236f02a7425ea3fe7 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 6e934fc3a10ec3a9a6e8fdcc4c605e29913431d8..8a65445b9c5b3c351637b510925e8c6bb64338e5 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 963e6f707407e8fafa2fa3727775ed4432973574..dccca20a133998a3d6d4fef019dbabf86c5bc7bb 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 7f3f8480ccb16fb1a2513ebcb5eb10cc1b7e2d81..3ccea4f9ea7cc4d719800d1cb40eadebf0855e04 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 17a7b0040266715e2afe36ad46f551edaa3e6e10..5648869bfc0c841318ce035856a63fbee4dbf494 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 5069de1d4434b14eff4335d7a62992b6ca15bacc..d36cc81a1c7e3c76d4e3eee95d52c65aca0b8055 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index a2f0c242c6d34973fc105760419ed67beb07608a..d6c40cfb6e428cd2ecc734559e33011254eb24b1 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index bdf2af9848acc69ee83f480755b139c7392737f4..9c0ce87a21bbfefbbc74b545ffbe581c71a1b44d 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 2bfaaf4a4cb0f5890c6909f0e12f6d35916d136c..76aafb7286dc81f35b76f3c5529e30a0dfec7353 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index a6bd426f0a3b015c5b5a9a64ff5f6f7881028783..fb20e149c7738d9e08dce0a8446b83e3072ecc7c 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index a2e95726554e8ca5e1912f5b9ee4e01bf0a13629..693f16d50b78225da3db19a86913e1f0044fd467 100644 (file)
@@ -44,7 +44,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 3e6f751bb33aed96bae91e6f4cdd5c86a73e80f9..49962a57e1a4fd79bba8b97d6634dafe77928ac4 100644 (file)
@@ -45,7 +45,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 0b087c270f62e94b37f15cc36b5ab77e63034a4b..ae60365061fde094dfa5671ae9e525ac2dc3e4d7 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/mapping_collection.h>
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 53207ac82e131d7f3f68c042de405b7cb35bcb2f..b961f2fe57f588c2fa1b9a6ecf58d391265533a5 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/function.h>
 #include <deal.II/base/quadrature_lib.h>
 
@@ -72,8 +72,8 @@ void test ()
   Vector<double> rhs_vector(hp_dof_handler.n_dofs());
   Vector<double> rhs_vector2(hp_dof_handler2.n_dofs());
 
-  types::boundary_id_t myints[1];
-  std::set<types::boundary_id_t> boundary_indicators  (myints,myints+1);  
+  types::boundary_id myints[1];
+  std::set<types::boundary_id> boundary_indicators  (myints,myints+1);  
   myints[0]=0;
   hp::QCollection<1>   quadrature;
   quadrature.push_back (QGauss<1>(1));
index 9a65890aeef3f7229f25f4bf7039d7d9c7b332af..7e9b37e357449c70bddaf7cbc79eb75f1e134bd9 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index f0c36e7468fc76c9caa262f7263279dc3d40fb3c..2861defa337fb5f8835865ff74e69d22e9141070 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index 8dfb6c05db9b3ae300010ba99dbde87c31ca1ad6..2e536e19e26486f6d2295c9f36b08d95509ce068 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index abfb1dc1c49cab6e4e02638c5cb0825df226c85e..5868f6f9e6dfd5594731d360e0fe52b8e3219921 100644 (file)
@@ -41,7 +41,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index 90b8d1118b2cbab5c0f25cfcccea86c3731e1da3..d5247edcd8abfa125019f25a934f8ba971664893 100644 (file)
@@ -46,7 +46,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index 20b54dc9ca48c5db36ae08d48886b0a6c5a21ea0..f5890e6702d175ad0c85824838c26d6ee9f5bb37 100644 (file)
@@ -58,7 +58,7 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/dof_handler.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 
 #include <fstream>
index f660dd210877748078524e952f49043dccc30dc3..c8e307224192bc650f9e4499d08ca409fd513b63 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_abf.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_dgp_monomial.h>
index a2a82edbca563e8651e1ca0977d4cdd7d60ccb93..658d2feb812f260e975c76c6b55d1251198a9a00 100644 (file)
@@ -30,8 +30,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index d86714230432f83a95b2c34f04fb7d2579d51683..2a97f2d1d7d7fd0c545574e531960b518e4a0788 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index 4f57f747028f60d9fc168c1274003e388f97ecd5..423c108075ff5fa85a54d322a2b91528c47963db 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index f8df00ecce0507f91e62ef70d9e946af33960001..a562203a70485f599095a00f90e229d3889be9b2 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 56663108c1c48f5e3c56f5f1b77ad0b121e816eb..a7d042903c62cd54bd6697d60f0d301be8a02af5 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/hp/q_collection.h>
 
index 461ee4e21b351f7f6298a80c294624ef364eb99d..65356a304b1ee165d2254355c88e65d9a7f635dc 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/hp/q_collection.h>
 
index e5f68709496821866043d1f7285b3a60c64adf61..157243fdb628f61bf11b8d2031be47ed0629e086 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/q_collection.h>
 
index 9ee886a4e14548ecac541453be0d2187c484ef4a..7257d7eeec5ef00752a97707553ca1da553907e2 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/q_collection.h>
 
index ca787af53b2415acd03628e3017fcf4435caafe8..0bd1681957acfe2b01a38c6689b17a9f4f265800 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/q_collection.h>
index 039a2972743797dda05ef9d8609b6d243e463be9..d3d4bbf35d225dcf92fa15783aa92822213a5253 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/hp/q_collection.h>
index 4920cd97a7d49d266fb27912de1227c4a9b93fbe..61f8c6f9a2e692b21df3dbe84d4fed2535321e93 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index d1213ef93b53b5a09b0594a07dfe1deeade8fcf2..0c05043902cbdc983fe8f18a84bb5883ca65ba83 100644 (file)
@@ -34,7 +34,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <fstream>
 
index 01d9fb511c628e848ecde5cbeeabbc8a2794a4a3..174ffd2f9fd93f00baf2c0dd1a41778063db9091 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/solution_transfer.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/fe/fe_dgq.h>
index f9a5dcdd1826d3266c0215ab580652abc36fac85..81651555c7308b2aa59eb88ecc26988c1431d0ae 100644 (file)
@@ -41,8 +41,8 @@ std::ofstream logfile("step-11/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/compressed_sparsity_pattern.h>
 
index 2094caad37f8594b7b8fc13faa12bd30e5acd410..428a51d200adce4de6af57fb53218b72097b1112 100644 (file)
@@ -44,8 +44,8 @@ std::ofstream logfile("step-11_compressed_set_sparsity/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/fe/mapping_q.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/compressed_set_sparsity_pattern.h>
 
index 42ad8ba30cfbf568b8a7172f457c9fcb5ea82c9c..54958e13cb5aba4f7082072a64cce33ccb551814 100644 (file)
@@ -42,8 +42,8 @@ std::ofstream logfile("step-13/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index aa97cc8a8df0e0746c4193a0930d6d690030b6cd..0ea9336758e9441df1e47ea427ebbb2e4b2843b0 100644 (file)
@@ -33,8 +33,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index 5cb2162112303116950326b76d4a0b02b18a669b..2cc3fbe8b9f85b0d54784423bd4bff15dd853bdf 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index 140edba89bd3c407e49763cfc05848326f62fc83..6e429bcb7c56ed33b24cb6df8778b4fc985c8c47 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index dcc457da82ceb4c4a0348ed48abe1e5016d0edfd..3f60d555bf3c9e16fa655c29e3ccedb1563299ad 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/base/quadrature_lib.h>
 
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
index ba1809a4e9f838f0f733e4e829642024a3ed508d..03e1637960db9ddc08e556f5265803137841751b 100644 (file)
@@ -32,8 +32,8 @@ std::ofstream logfile("step-4/output");
 #include <deal.II/hp/fe_values.h>
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/sparse_matrix.h>
index 145f1538ef2324338016076c8647e850ef0f9016..8d9e9bca7a03a82f1a315b0953b4731781e5608b 100644 (file)
@@ -37,8 +37,8 @@ std::ofstream logfile("step-5/output");
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/grid/grid_in.h>
index 397d5a597707e9ffa09dc774595ae65db91d69e9..3b3da9e3cd7266817dc9b93377b87fff5c8b3a05 100644 (file)
@@ -38,8 +38,8 @@ std::ofstream logfile("step-6/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <fstream>
index 0aebd7b33f2a3501325ac3410cf4b8ecff70f4b4..fae4ed3f0945cbcb6e184a4b23636a9d54885ded 100644 (file)
@@ -40,13 +40,13 @@ std::ofstream logfile("step-7/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/error_estimator.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/dofs/dof_renumbering.h>
 #include <deal.II/base/smartpointer.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/convergence_table.h>
 #include <deal.II/hp/fe_values.h>
 
index 7786eb3c58b5f894da08c58ac0912af34f838a7e..5da1d959348f8d26f5f5adf39d94ebe02addbb3a 100644 (file)
@@ -39,8 +39,8 @@ std::ofstream logfile("step-8/output");
 #include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/hp/fe_values.h>
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/numerics/error_estimator.h>
index 59dbf6d9afea92c4567e13a852bb6b5c034b6bc7..9d4e5e83f3e745731f9b1e145b48ff26f3cad795 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 39817d6f4b2723158c247b31abd0343b477387d4..c0d873a347313b4088427afed0b84634ac9b4f69 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 6967688e0a3ea9e3840e124ed61afa889d2e8991..4a3ab1058e055ae423db53494078d4ab7b22b9e9 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index dd9370c187bdbdce413ee076867d1bfb18f9c82b..5d0a4db74762c8c56655fabc65f1d7730395e93d 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index e7545a0f84991ddf09e1fd4583e783cf2849437b..5b32d79a1dc46168c321946a17ad2db2e6123922 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 49af2299e2920e8440250c534ae315f2adb3ac08..767d1ad10aa60786d04e1c93cb9f188df6923d11 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 2dcd810f1e445e60f43cd5e0eafe4b3d1233ecee..19f4b32c0c0093403a4da193683b6e35a8773fdc 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index bcaa1069d9d292160796abc061a2345e7d452c40..6d0ba2a5d177dce86b317ad1b73834774287fda1 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index e50edb9f9c930fbd4cd7aa4d4f62b8e886fb9954..9dc77a39e7635f4505eba88ee64c732d05d91460 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 368e537856f404f0fe5f40a06338e0c06cca8743..8f6994f92e00d78422402b2704919060ac88dbbb 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 815797a312c331c243f0f0c0f69324536db5b15f..33017c0d5ef279efd816122a94d1b9f70b9c4217 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 0d024b7699116eef01976b7e252cdad419d7b8f6..733c27fa248dee9cbc0915158988c879a60a9b13 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/hp/q_collection.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/hp/mapping_collection.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 6795e30d611786e15b8fa4b2e07a08d865f1998d..c9b573d25d4e3d4537480d1938e3919625a4be77 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
index 19df4ca33dab8a772615d69e32bb15361f3a9041..215295bf292805811cebf5ac777062aacfd67d94 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
index 58fba6a79b76cc85ba5ed62141ecaa5c493aed29..46007911187676fefa09fefd3159676ceeed61da 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
index 532b2ece7bb15fa9a76ce7082394db2eed4be165..d86e6eaddb449e3d6e92ff5c1fb82a2e1898b66e 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 
diff --git a/tests/integrators/divergence_01.cc b/tests/integrators/divergence_01.cc
new file mode 100644 (file)
index 0000000..fe07a82
--- /dev/null
@@ -0,0 +1,281 @@
+//--------------------------------------------------------------------
+//    $Id$
+//
+//    Copyright (C) 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//--------------------------------------------------------------------
+
+// Test the functions in integrators/divergence.h
+// Output matrices and assert consistency of residuals
+
+#include "../tests.h"
+#include "../lib/test_grids.h"
+
+#include <deal.II/base/logstream.h>
+#include <deal.II/integrators/divergence.h>
+
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_system.h>
+
+using namespace LocalIntegrators::Divergence;
+
+template <int dim>
+void test_cell(const FEValuesBase<dim>& fev, const FEValuesBase<dim>& fes)
+{
+  AssertDimension(fev.get_fe().n_components(), dim);
+  AssertDimension(fes.get_fe().n_components(), 1);
+  
+  const unsigned int nv = fev.dofs_per_cell;
+  const unsigned int ns = fes.dofs_per_cell;
+  
+  FullMatrix<double> Md(ns,nv);
+  cell_matrix(Md,fev,fes);
+  Md.print(deallog,8);
+
+  deallog << "gradient_matrix" << std::endl;
+  FullMatrix<double> Mg(nv,ns);
+  gradient_matrix(Mg,fes,fev);
+  Mg.print(deallog,8);
+
+  
+  Vector<double> u(nv), v(ns), w(ns);
+  std::vector<std::vector<Tensor<1,dim> > >
+    ugrad(dim,std::vector<Tensor<1,dim> >(fev.n_quadrature_points));
+  
+  std::vector<unsigned int> indices(nv);
+  for (unsigned int i=0;i<nv;++i)
+    indices[i] = i;
+  
+  deallog << "Divergence-Residuals";
+  for (unsigned int i=0;i<nv;++i)
+    {
+      u = 0.;
+      u(i) = 1.;
+      w = 0.;
+      fev.get_function_gradients(u, indices, ugrad, true);
+      cell_residual(w, fes, make_slice(ugrad));
+      Md.vmult(v,u);
+      w.add(-1., v);
+      deallog << ' ' << w.l2_norm();
+    }
+  deallog << std::endl;
+
+  v.reinit(nv);
+  indices.resize(ns);
+  for (unsigned int i=0;i<ns;++i)
+    indices[i] = i;
+  
+  deallog << "Gradient-Residuals";
+  for (unsigned int i=0;i<ns;++i)
+    {
+      w = 0.;
+      w(i) = 1.;
+      u = 0.;
+      fes.get_function_gradients(w, indices, ugrad[0]);
+      gradient_residual(u, fev, ugrad[0]);
+      Mg.vmult(v,w);
+      u.add(-1., v);
+      deallog << ' ' << u.l2_norm();
+    }
+  deallog << std::endl;
+}
+
+
+template <int dim>
+void test_boundary(const FEValuesBase<dim>& fev, const FEValuesBase<dim>& fes)
+{
+  AssertDimension(fev.get_fe().n_components(), dim);
+  AssertDimension(fes.get_fe().n_components(), 1);
+  
+  const unsigned int nv = fev.dofs_per_cell;
+  const unsigned int ns = fes.dofs_per_cell;
+  
+  FullMatrix<double> M(ns,nv);
+  u_dot_n_matrix(M, fev, fes);
+  M.print(deallog,8);
+  
+  Vector<double> u(nv), v(ns), w(ns);
+  std::vector<std::vector<double> >
+    uval    (dim,std::vector<double>(fev.n_quadrature_points));
+  
+  std::vector<unsigned int> indices(nv);
+  for (unsigned int i=0;i<nv;++i)
+    indices[i] = i;
+  
+  deallog << "Residuals u dot n";
+  for (unsigned int i=0;i<nv;++i)
+    {
+      u = 0.;
+      u(i) = 1.;
+      w = 0.;
+      fev.get_function_values(u, indices, uval, true);
+      u_dot_n_residual(w, fev, fes, make_slice(uval));
+      M.vmult(v,u);
+      w.add(-1., v);
+      deallog << ' ' << w.l2_norm();
+    }
+  deallog << std::endl;
+}
+
+
+template <int dim>
+void test_face(const FEValuesBase<dim>& fev1,
+              const FEValuesBase<dim>& fev2,
+              const FEValuesBase<dim>& fes1,
+              const FEValuesBase<dim>& fes2)
+{
+  AssertDimension(fev1.get_fe().n_components(), dim);
+  AssertDimension(fes1.get_fe().n_components(), 1);
+  AssertDimension(fev2.get_fe().n_components(), dim);
+  AssertDimension(fes2.get_fe().n_components(), 1);
+  
+  const unsigned int nv1 = fev1.dofs_per_cell;
+  const unsigned int nv2 = fev1.dofs_per_cell;
+  const unsigned int ns1 = fes1.dofs_per_cell;
+  const unsigned int ns2 = fes1.dofs_per_cell;
+  
+  FullMatrix<double> M11(ns1,nv1);
+  FullMatrix<double> M12(ns1,nv2);
+  FullMatrix<double> M21(ns2,nv1);
+  FullMatrix<double> M22(ns2,nv2);
+  
+  u_dot_n_matrix(M11, M12, M21, M22, fev1, fev2, fes1, fes2);
+  deallog << "M11" << std::endl;
+  M11.print(deallog,8);
+  deallog << "M22" << std::endl;
+  M22.print(deallog,8);
+  deallog << "M12" << std::endl;
+  M12.print(deallog,8);
+  deallog << "M21" << std::endl;
+  M21.print(deallog,8);
+  
+  // Vector<double> u1(n1), v1(n1), w1(n1);
+  // Vector<double> u2(n2), v2(n2), w2(n2);
+  // std::vector<std::vector<double> >
+  //   u1val (d,std::vector<double>(fev1.n_quadrature_points)),
+  //   u2val (d,std::vector<double>(fev2.n_quadrature_points));
+  // std::vector<std::vector<Tensor<1,dim> > >
+  //   u1grad(d,std::vector<Tensor<1,dim> >(fev1.n_quadrature_points)),
+  //   u2grad(d,std::vector<Tensor<1,dim> >(fev2.n_quadrature_points));
+  
+  // std::vector<unsigned int> indices1(n1), indices2(n2);
+  // for (unsigned int i=0;i<n1;++i) indices1[i] = i;
+  // for (unsigned int i=0;i<n2;++i) indices2[i] = i;
+  
+  // deallog << "Residuals";  for (unsigned int i=0;i<n1;++i) indices1[i] = i;
+
+  // for (unsigned int i1=0;i1<n1;++i1)
+  //   for (unsigned int i2=0;i2<n2;++i2)
+  //     {
+  //   u1 = 0.;
+  //   u1(i1) = 1.;
+  //   w1 = 0.;
+  //   fev1.get_function_values(u1, indices1, u1val, true);
+  //   fev1.get_function_gradients(u1, indices1, u1grad, true);
+  //   u2 = 0.;
+  //   u2(i2) = 1.;
+  //   w2 = 0.;
+  //   fev2.get_function_values(u2, indices2, u2val, true);
+  //   fev2.get_function_gradients(u2, indices2, u2grad, true);
+  //   ip_residual(w1, w2, fev1, fev2,
+  //               make_slice(u1val), make_slice(u1grad),
+  //               make_slice(u2val), make_slice(u2grad),
+  //               17);
+  //   M11.vmult(v1,u1); w1.add(-1., v1);
+  //   M12.vmult(v1,u2); w1.add(-1., v1);
+  //   M21.vmult(v2,u1); w2.add(-1., v2);
+  //   M22.vmult(v2,u2); w2.add(-1., v2);
+  //   deallog << ' ' << w1.l2_norm() + w2.l2_norm();
+  //   if (d==1)
+  //     {
+  //       ip_residual(w1, w2, fev1, fev2, u1val[0], u1grad[0], u2val[0], u2grad[0], 17);
+  //       M11.vmult(v1,u1); w1.add(-1., v1);
+  //       M12.vmult(v1,u2); w1.add(-1., v1);
+  //       M21.vmult(v2,u1); w2.add(-1., v2);
+  //       M22.vmult(v2,u2); w2.add(-1., v2);
+  //       deallog << " e" << w1.l2_norm() + w2.l2_norm();       
+  //     }
+  //     }
+  // deallog << std::endl;
+}
+
+
+template <int dim>
+void
+test_fe(Triangulation<dim>& tr, FiniteElement<dim>& fv, FiniteElement<dim>& fs)
+{
+  deallog << fv.get_name() << " x " << fs.get_name() << std::endl << "cell matrix" << std::endl;
+  QGauss<dim> quadrature(fv.tensor_degree()+1);
+  FEValues<dim> fev(fv, quadrature, update_values | update_gradients);
+  FEValues<dim> fes(fs, quadrature, update_values | update_gradients);
+
+  typename Triangulation<dim>::cell_iterator cell1 = tr.begin(1);
+  fev.reinit(cell1);
+  fes.reinit(cell1);
+  test_cell(fev, fes);
+  
+  QGauss<dim-1> face_quadrature(fv.tensor_degree()+1);
+  FEFaceValues<dim> fev1(fv, face_quadrature, update_values | update_gradients | update_normal_vectors);
+  FEFaceValues<dim> fes1(fs, face_quadrature, update_values | update_gradients | update_normal_vectors);
+  for (unsigned int i=0;i<GeometryInfo<dim>::faces_per_cell;++i)
+    {
+      deallog << "boundary_matrix " << i << std::endl;
+      fev1.reinit(cell1, i);
+      fes1.reinit(cell1, i);
+      test_boundary(fev1, fes1);
+    }
+  
+  FEFaceValues<dim> fev2(fv, face_quadrature, update_values | update_gradients);
+  FEFaceValues<dim> fes2(fs, face_quadrature, update_values | update_gradients);
+  typename Triangulation<dim>::cell_iterator cell2 = cell1->neighbor(1);
+  
+  deallog << "face_matrix " << 0 << std::endl;
+  cell1 = tr.begin(1);
+  fev1.reinit(cell1, 1);
+  fev2.reinit(cell2, 0);
+  fes1.reinit(cell1, 1);
+  fes2.reinit(cell2, 0);
+  test_face(fev1, fev2, fes1, fes2);  
+}
+
+
+template <int dim>
+void
+test(Triangulation<dim>& tr)
+{
+  FE_DGQ<dim> q1(1);
+  FE_Nedelec<dim> n1(1);
+  FE_RaviartThomas<dim> r1(1);
+  FESystem<dim> s1(q1,dim);
+  
+  test_fe(tr, r1, q1);
+  test_fe(tr, n1, q1);
+  test_fe(tr, s1, q1);
+  
+}
+
+
+int main()
+{
+  const std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+  
+  Triangulation<2> tr2;
+  TestGrids::hypercube(tr2, 1);
+  test(tr2);
+  
+//  Triangulation<3> tr3;
+//  TestGrids::hypercube(tr3, 1);
+//  test(tr3);
+  
+}
diff --git a/tests/integrators/divergence_01/cmp/generic b/tests/integrators/divergence_01/cmp/generic
new file mode 100644 (file)
index 0000000..6959f37
--- /dev/null
@@ -0,0 +1,196 @@
+
+DEAL::Triangulation hypercube 2D refinement 1 steps 4 active cells 5 total cells 
+DEAL::FE_RaviartThomas<2>(1) x FE_DGQ<2>(1)
+DEAL::cell matrix
+DEAL::-0.50   0.29    0       0       -0.50   0.29    0       0       0.50    0.50    -0.29   -0.29   
+DEAL::0       0       0.50    -0.29   -0.50   -0.29   0       0       -0.50   0.50    0.29    0.29    
+DEAL::-0.50   -0.29   0       0       0       0       0.50    -0.29   0.50    -0.50   0.29    0.29    
+DEAL::0       0       0.50    0.29    0       0       0.50    0.29    -0.50   -0.50   -0.29   -0.29   
+DEAL::gradient_matrix
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::0       0       0       0       
+DEAL::-0.50   0.50    -0.50   0.50    
+DEAL::-0.50   -0.50   0.50    0.50    
+DEAL::0.29    -0.29   -0.29   0.29    
+DEAL::0.29    -0.29   -0.29   0.29    
+DEAL::Divergence-Residuals 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::Gradient-Residuals 0 0 0 0
+DEAL::boundary_matrix 0
+DEAL::-0.50   0.29    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.50   -0.29   0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 1
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0.50    -0.29   0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0.50    0.29    0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 2
+DEAL::0       0       0       0       -0.50   0.29    0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.50   -0.29   0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 3
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0.50    -0.29   0       0       0       0       
+DEAL::0       0       0       0       0       0       0.50    0.29    0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0.25    -0.14   0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0.25    0.14    0       0       0       0       0       0       0       0       
+DEAL::M22
+DEAL::-0.25   0.14    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.25   -0.14   0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::M12
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.25   0.14    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.25   -0.14   0       0       0       0       0       0       0       0       0       0       
+DEAL::M21
+DEAL::0       0       0.25    -0.14   0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0.25    0.14    0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::FE_Nedelec<2>(1) x FE_DGQ<2>(1)
+DEAL::cell matrix
+DEAL::0       0.58    0       0.29    0       0.58    0       0.29    0       -0.25   0       -0.25   
+DEAL::0       0.29    0       0.58    0       0.58    0       0.29    0       -0.25   0       -0.25   
+DEAL::0       0.58    0       0.29    0       0.29    0       0.58    0       -0.25   0       -0.25   
+DEAL::0       0.29    0       0.58    0       0.29    0       0.58    0       -0.25   0       -0.25   
+DEAL::gradient_matrix
+DEAL::-0.33   -0.17   0.33    0.17    
+DEAL::0       0       0       0       
+DEAL::-0.17   -0.33   0.17    0.33    
+DEAL::0       0       0       0       
+DEAL::-0.33   0.33    -0.17   0.17    
+DEAL::0       0       0       0       
+DEAL::-0.17   0.17    -0.33   0.33    
+DEAL::0       0       0       0       
+DEAL::0.14    -0.14   0.14    -0.14   
+DEAL::0       0       0       0       
+DEAL::0.14    0.14    -0.14   -0.14   
+DEAL::0       0       0       0       
+DEAL::Divergence-Residuals 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::Gradient-Residuals 0 0 0 0
+DEAL::boundary_matrix 0
+DEAL::0       0       0       0       -0.33   0.58    -0.17   0.29    0.14    -0.25   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.17   0.29    -0.33   0.58    0.14    -0.25   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 1
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.33    0.58    0.17    0.29    -0.14   -0.25   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.17    0.29    0.33    0.58    -0.14   -0.25   0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 2
+DEAL::-0.33   0.58    -0.17   0.29    0       0       0       0       0       0       0.14    -0.25   
+DEAL::-0.17   0.29    -0.33   0.58    0       0       0       0       0       0       0.14    -0.25   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 3
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.33    0.58    0.17    0.29    0       0       0       0       0       0       -0.14   -0.25   
+DEAL::0.17    0.29    0.33    0.58    0       0       0       0       0       0       -0.14   -0.25   
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.17    0.29    0.083   0.14    -0.072  -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.083   0.14    0.17    0.29    -0.072  -0.12   0       0       
+DEAL::M22
+DEAL::0       0       0       0       -0.17   0.29    -0.083  0.14    0.072   -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.083  0.14    -0.17   0.29    0.072   -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::M12
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.17   0.29    -0.083  0.14    0.072   -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.083  0.14    -0.17   0.29    0.072   -0.12   0       0       
+DEAL::M21
+DEAL::0       0       0       0       0.17    0.29    0.083   0.14    -0.072  -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.083   0.14    0.17    0.29    -0.072  -0.12   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::FESystem<2>[FE_DGQ<2>(1)^2] x FE_DGQ<2>(1)
+DEAL::cell matrix
+DEAL::-0.17   0.17    -0.083  0.083   -0.17   -0.083  0.17    0.083   
+DEAL::-0.17   0.17    -0.083  0.083   -0.083  -0.17   0.083   0.17    
+DEAL::-0.083  0.083   -0.17   0.17    -0.17   -0.083  0.17    0.083   
+DEAL::-0.083  0.083   -0.17   0.17    -0.083  -0.17   0.083   0.17    
+DEAL::gradient_matrix
+DEAL::-0.17   0.17    -0.083  0.083   
+DEAL::-0.17   0.17    -0.083  0.083   
+DEAL::-0.083  0.083   -0.17   0.17    
+DEAL::-0.083  0.083   -0.17   0.17    
+DEAL::-0.17   -0.083  0.17    0.083   
+DEAL::-0.083  -0.17   0.083   0.17    
+DEAL::-0.17   -0.083  0.17    0.083   
+DEAL::-0.083  -0.17   0.083   0.17    
+DEAL::Divergence-Residuals 0 0 0 0 0 0 0 0
+DEAL::Gradient-Residuals 0 0 0 0
+DEAL::boundary_matrix 0
+DEAL::-0.33   0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::-0.17   0       -0.33   0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 1
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0.33    0       0.17    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0.17    0       0.33    0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 2
+DEAL::0       0       0       0       -0.33   -0.17   0       0       
+DEAL::0       0       0       0       -0.17   -0.33   0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 3
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0.33    0.17    
+DEAL::0       0       0       0       0       0       0.17    0.33    
+DEAL::Residuals u dot n 0 0 0 0 0 0 0 0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0.17    0       0.083   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0.083   0       0.17    0       0       0       0       
+DEAL::M22
+DEAL::-0.17   0       -0.083  0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::-0.083  0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::M12
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::-0.17   0       -0.083  0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::-0.083  0       -0.17   0       0       0       0       0       
+DEAL::M21
+DEAL::0       0.17    0       0.083   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
+DEAL::0       0.083   0       0.17    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       
index 10bbb9bb005a199409cd28c886128b8c6f145aab..08170ff5c548aac823d5b332a1ab4513af203bc1 100644 (file)
@@ -1,5 +1,5 @@
 //--------------------------------------------------------------------
-//    $Id: cochain_01.cc 25686 2012-07-04 14:18:43Z bangerth $
+//    $Id$
 //
 //    Copyright (C) 2012 by the deal.II authors
 //
@@ -219,12 +219,21 @@ test(Triangulation<dim>& tr)
 {
   FE_DGQ<dim> q1(1);
   test_fe(tr, q1);
+<<<<<<< HEAD
 
 //  FE_DGQ<dim> q2(2);
 //  test_fe(tr, q2);
 
  FE_Nedelec<dim> n1(1);  
  test_fe(tr, n1);  
+=======
+  
+  FE_DGQ<dim> q2(2);
+  test_fe(tr, q2);
+  
+  FE_Nedelec<dim> n1(1);  
+  test_fe(tr, n1);  
+>>>>>>> trunk
 }
 
 
@@ -240,8 +249,14 @@ int main()
   TestGrids::hypercube(tr2, 1);
   test(tr2);
   
+<<<<<<< HEAD
 //  Triangulation<3> tr3;
 //  TestGrids::hypercube(tr3, 1);
 //  test(tr3);
   
+=======
+ Triangulation<3> tr3;
+ TestGrids::hypercube(tr3, 1);
+ test(tr3);  
+>>>>>>> trunk
 }
index 059b0eb97e80191f72bea4b9f11dc28c4dfca8ae..f50f58ce52877f3910c2eb47473a3371050c4bb0 100644 (file)
@@ -53,6 +53,104 @@ DEAL::0       -0.17   0       -0.083
 DEAL::-0.083  -2.7    -0.17   -5.3    
 DEAL::0       -0.083  0       -0.17   
 DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::FE_DGQ<2>(2)
+DEAL::cell matrix
+DEAL::0.62    -0.20   -0.033  -0.20   -0.36   0.11    -0.033  0.11    -0.022  
+DEAL::-0.20   2.0     -0.20   -0.36   -1.1    -0.36   0.11    0       0.11    
+DEAL::-0.033  -0.20   0.62    0.11    -0.36   -0.20   -0.022  0.11    -0.033  
+DEAL::-0.20   -0.36   0.11    2.0     -1.1    0       -0.20   -0.36   0.11    
+DEAL::-0.36   -1.1    -0.36   -1.1    5.7     -1.1    -0.36   -1.1    -0.36   
+DEAL::0.11    -0.36   -0.20   0       -1.1    2.0     0.11    -0.36   -0.20   
+DEAL::-0.033  0.11    -0.022  -0.20   -0.36   0.11    0.62    -0.20   -0.033  
+DEAL::0.11    0       0.11    -0.36   -1.1    -0.36   -0.20   2.0     -0.20   
+DEAL::-0.022  0.11    -0.033  0.11    -0.36   -0.20   -0.033  -0.20   0.62    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 0
+DEAL::3.7     0.53    -0.13   1.9     0.27    -0.067  -0.93   -0.13   0.033   
+DEAL::0.53    0       0       0.27    0       0       -0.13   0       0       
+DEAL::-0.13   0       0       -0.067  0       0       0.033   0       0       
+DEAL::1.9     0.27    -0.067  15.     2.1     -0.53   1.9     0.27    -0.067  
+DEAL::0.27    0       0       2.1     0       0       0.27    0       0       
+DEAL::-0.067  0       0       -0.53   0       0       -0.067  0       0       
+DEAL::-0.93   -0.13   0.033   1.9     0.27    -0.067  3.7     0.53    -0.13   
+DEAL::-0.13   0       0       0.27    0       0       0.53    0       0       
+DEAL::0.033   0       0       -0.067  0       0       -0.13   0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 1
+DEAL::0       0       -0.13   0       0       -0.067  0       0       0.033   
+DEAL::0       0       0.53    0       0       0.27    0       0       -0.13   
+DEAL::-0.13   0.53    3.7     -0.067  0.27    1.9     0.033   -0.13   -0.93   
+DEAL::0       0       -0.067  0       0       -0.53   0       0       -0.067  
+DEAL::0       0       0.27    0       0       2.1     0       0       0.27    
+DEAL::-0.067  0.27    1.9     -0.53   2.1     15.     -0.067  0.27    1.9     
+DEAL::0       0       0.033   0       0       -0.067  0       0       -0.13   
+DEAL::0       0       -0.13   0       0       0.27    0       0       0.53    
+DEAL::0.033   -0.13   -0.93   -0.067  0.27    1.9     -0.13   0.53    3.7     
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 2
+DEAL::3.7     1.9     -0.93   0.53    0.27    -0.13   -0.13   -0.067  0.033   
+DEAL::1.9     15.     1.9     0.27    2.1     0.27    -0.067  -0.53   -0.067  
+DEAL::-0.93   1.9     3.7     -0.13   0.27    0.53    0.033   -0.067  -0.13   
+DEAL::0.53    0.27    -0.13   0       0       0       0       0       0       
+DEAL::0.27    2.1     0.27    0       0       0       0       0       0       
+DEAL::-0.13   0.27    0.53    0       0       0       0       0       0       
+DEAL::-0.13   -0.067  0.033   0       0       0       0       0       0       
+DEAL::-0.067  -0.53   -0.067  0       0       0       0       0       0       
+DEAL::0.033   -0.067  -0.13   0       0       0       0       0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 3
+DEAL::0       0       0       0       0       0       -0.13   -0.067  0.033   
+DEAL::0       0       0       0       0       0       -0.067  -0.53   -0.067  
+DEAL::0       0       0       0       0       0       0.033   -0.067  -0.13   
+DEAL::0       0       0       0       0       0       0.53    0.27    -0.13   
+DEAL::0       0       0       0       0       0       0.27    2.1     0.27    
+DEAL::0       0       0       0       0       0       -0.13   0.27    0.53    
+DEAL::-0.13   -0.067  0.033   0.53    0.27    -0.13   3.7     1.9     -0.93   
+DEAL::-0.067  -0.53   -0.067  0.27    2.1     0.27    1.9     15.     1.9     
+DEAL::0.033   -0.067  -0.13   -0.13   0.27    0.53    -0.93   1.9     3.7     
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       -0.067  0       0       -0.033  0       0       0.017   
+DEAL::0       0       0.27    0       0       0.13    0       0       -0.067  
+DEAL::-0.067  0.27    1.9     -0.033  0.13    0.93    0.017   -0.067  -0.47   
+DEAL::0       0       -0.033  0       0       -0.27   0       0       -0.033  
+DEAL::0       0       0.13    0       0       1.1     0       0       0.13    
+DEAL::-0.033  0.13    0.93    -0.27   1.1     7.5     -0.033  0.13    0.93    
+DEAL::0       0       0.017   0       0       -0.033  0       0       -0.067  
+DEAL::0       0       -0.067  0       0       0.13    0       0       0.27    
+DEAL::0.017   -0.067  -0.47   -0.033  0.13    0.93    -0.067  0.27    1.9     
+DEAL::M22
+DEAL::1.9     0.27    -0.067  0.93    0.13    -0.033  -0.47   -0.067  0.017   
+DEAL::0.27    0       0       0.13    0       0       -0.067  0       0       
+DEAL::-0.067  0       0       -0.033  0       0       0.017   0       0       
+DEAL::0.93    0.13    -0.033  7.5     1.1     -0.27   0.93    0.13    -0.033  
+DEAL::0.13    0       0       1.1     0       0       0.13    0       0       
+DEAL::-0.033  0       0       -0.27   0       0       -0.033  0       0       
+DEAL::-0.47   -0.067  0.017   0.93    0.13    -0.033  1.9     0.27    -0.067  
+DEAL::-0.067  0       0       0.13    0       0       0.27    0       0       
+DEAL::0.017   0       0       -0.033  0       0       -0.067  0       0       
+DEAL::M12
+DEAL::0.067   0       0       0.033   0       0       -0.017  0       0       
+DEAL::-0.27   0       0       -0.13   0       0       0.067   0       0       
+DEAL::-1.9    -0.27   0.067   -0.93   -0.13   0.033   0.47    0.067   -0.017  
+DEAL::0.033   0       0       0.27    0       0       0.033   0       0       
+DEAL::-0.13   0       0       -1.1    0       0       -0.13   0       0       
+DEAL::-0.93   -0.13   0.033   -7.5    -1.1    0.27    -0.93   -0.13   0.033   
+DEAL::-0.017  0       0       0.033   0       0       0.067   0       0       
+DEAL::0.067   0       0       -0.13   0       0       -0.27   0       0       
+DEAL::0.47    0.067   -0.017  -0.93   -0.13   0.033   -1.9    -0.27   0.067   
+DEAL::M21
+DEAL::0.067   -0.27   -1.9    0.033   -0.13   -0.93   -0.017  0.067   0.47    
+DEAL::0       0       -0.27   0       0       -0.13   0       0       0.067   
+DEAL::0       0       0.067   0       0       0.033   0       0       -0.017  
+DEAL::0.033   -0.13   -0.93   0.27    -1.1    -7.5    0.033   -0.13   -0.93   
+DEAL::0       0       -0.13   0       0       -1.1    0       0       -0.13   
+DEAL::0       0       0.033   0       0       0.27    0       0       0.033   
+DEAL::-0.017  0.067   0.47    0.033   -0.13   -0.93   0.067   -0.27   -1.9    
+DEAL::0       0       0.067   0       0       -0.13   0       0       -0.27   
+DEAL::0       0       -0.017  0       0       0.033   0       0       0.067   
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
 DEAL::FE_Nedelec<2>(1)
 DEAL::cell matrix
 DEAL::1.0     0       -1.0    0       0       0       0       0       0       0       0       0       
@@ -178,3 +276,1046 @@ DEAL::0       0       0       0       -4.0    -6.5    -4.0    -6.5    2.8     4.
 DEAL::0       0       0.87    0       0       0       0       0       0       0       0       0       
 DEAL::0       0       0       0.87    0       0       0       0       0       0       0       0       
 DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::Triangulation hypercube 3D refinement 1 steps 8 active cells 9 total cells 
+DEAL::FE_DGQ<3>(1)
+DEAL::cell matrix
+DEAL::0.33    0       0       -0.083  0       -0.083  -0.083  -0.083  
+DEAL::0       0.33    -0.083  0       -0.083  0       -0.083  -0.083  
+DEAL::0       -0.083  0.33    0       -0.083  -0.083  0       -0.083  
+DEAL::-0.083  0       0       0.33    -0.083  -0.083  -0.083  0       
+DEAL::0       -0.083  -0.083  -0.083  0.33    0       0       -0.083  
+DEAL::-0.083  0       -0.083  -0.083  0       0.33    -0.083  0       
+DEAL::-0.083  -0.083  0       -0.083  0       -0.083  0.33    0       
+DEAL::-0.083  -0.083  -0.083  0       -0.083  0       0       0.33    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 0
+DEAL::3.6     0.11    1.8     0.056   1.8     0.056   0.89    0.028   
+DEAL::0.11    0       0.056   0       0.056   0       0.028   0       
+DEAL::1.8     0.056   3.6     0.11    0.89    0.028   1.8     0.056   
+DEAL::0.056   0       0.11    0       0.028   0       0.056   0       
+DEAL::1.8     0.056   0.89    0.028   3.6     0.11    1.8     0.056   
+DEAL::0.056   0       0.028   0       0.11    0       0.056   0       
+DEAL::0.89    0.028   1.8     0.056   1.8     0.056   3.6     0.11    
+DEAL::0.028   0       0.056   0       0.056   0       0.11    0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 1
+DEAL::0       0.11    0       0.056   0       0.056   0       0.028   
+DEAL::0.11    3.6     0.056   1.8     0.056   1.8     0.028   0.89    
+DEAL::0       0.056   0       0.11    0       0.028   0       0.056   
+DEAL::0.056   1.8     0.11    3.6     0.028   0.89    0.056   1.8     
+DEAL::0       0.056   0       0.028   0       0.11    0       0.056   
+DEAL::0.056   1.8     0.028   0.89    0.11    3.6     0.056   1.8     
+DEAL::0       0.028   0       0.056   0       0.056   0       0.11    
+DEAL::0.028   0.89    0.056   1.8     0.056   1.8     0.11    3.6     
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 2
+DEAL::3.6     1.8     0.11    0.056   1.8     0.89    0.056   0.028   
+DEAL::1.8     3.6     0.056   0.11    0.89    1.8     0.028   0.056   
+DEAL::0.11    0.056   0       0       0.056   0.028   0       0       
+DEAL::0.056   0.11    0       0       0.028   0.056   0       0       
+DEAL::1.8     0.89    0.056   0.028   3.6     1.8     0.11    0.056   
+DEAL::0.89    1.8     0.028   0.056   1.8     3.6     0.056   0.11    
+DEAL::0.056   0.028   0       0       0.11    0.056   0       0       
+DEAL::0.028   0.056   0       0       0.056   0.11    0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 3
+DEAL::0       0       0.11    0.056   0       0       0.056   0.028   
+DEAL::0       0       0.056   0.11    0       0       0.028   0.056   
+DEAL::0.11    0.056   3.6     1.8     0.056   0.028   1.8     0.89    
+DEAL::0.056   0.11    1.8     3.6     0.028   0.056   0.89    1.8     
+DEAL::0       0       0.056   0.028   0       0       0.11    0.056   
+DEAL::0       0       0.028   0.056   0       0       0.056   0.11    
+DEAL::0.056   0.028   1.8     0.89    0.11    0.056   3.6     1.8     
+DEAL::0.028   0.056   0.89    1.8     0.056   0.11    1.8     3.6     
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 4
+DEAL::3.6     1.8     1.8     0.89    0.11    0.056   0.056   0.028   
+DEAL::1.8     3.6     0.89    1.8     0.056   0.11    0.028   0.056   
+DEAL::1.8     0.89    3.6     1.8     0.056   0.028   0.11    0.056   
+DEAL::0.89    1.8     1.8     3.6     0.028   0.056   0.056   0.11    
+DEAL::0.11    0.056   0.056   0.028   0       0       0       0       
+DEAL::0.056   0.11    0.028   0.056   0       0       0       0       
+DEAL::0.056   0.028   0.11    0.056   0       0       0       0       
+DEAL::0.028   0.056   0.056   0.11    0       0       0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 5
+DEAL::0       0       0       0       0.11    0.056   0.056   0.028   
+DEAL::0       0       0       0       0.056   0.11    0.028   0.056   
+DEAL::0       0       0       0       0.056   0.028   0.11    0.056   
+DEAL::0       0       0       0       0.028   0.056   0.056   0.11    
+DEAL::0.11    0.056   0.056   0.028   3.6     1.8     1.8     0.89    
+DEAL::0.056   0.11    0.028   0.056   1.8     3.6     0.89    1.8     
+DEAL::0.056   0.028   0.11    0.056   1.8     0.89    3.6     1.8     
+DEAL::0.028   0.056   0.056   0.11    0.89    1.8     1.8     3.6     
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0.056   0       0.028   0       0.028   0       0.014   
+DEAL::0.056   1.8     0.028   0.89    0.028   0.89    0.014   0.44    
+DEAL::0       0.028   0       0.056   0       0.014   0       0.028   
+DEAL::0.028   0.89    0.056   1.8     0.014   0.44    0.028   0.89    
+DEAL::0       0.028   0       0.014   0       0.056   0       0.028   
+DEAL::0.028   0.89    0.014   0.44    0.056   1.8     0.028   0.89    
+DEAL::0       0.014   0       0.028   0       0.028   0       0.056   
+DEAL::0.014   0.44    0.028   0.89    0.028   0.89    0.056   1.8     
+DEAL::M22
+DEAL::1.8     0.056   0.89    0.028   0.89    0.028   0.44    0.014   
+DEAL::0.056   0       0.028   0       0.028   0       0.014   0       
+DEAL::0.89    0.028   1.8     0.056   0.44    0.014   0.89    0.028   
+DEAL::0.028   0       0.056   0       0.014   0       0.028   0       
+DEAL::0.89    0.028   0.44    0.014   1.8     0.056   0.89    0.028   
+DEAL::0.028   0       0.014   0       0.056   0       0.028   0       
+DEAL::0.44    0.014   0.89    0.028   0.89    0.028   1.8     0.056   
+DEAL::0.014   0       0.028   0       0.028   0       0.056   0       
+DEAL::M12
+DEAL::-0.056  0       -0.028  0       -0.028  0       -0.014  0       
+DEAL::-1.8    -0.056  -0.89   -0.028  -0.89   -0.028  -0.44   -0.014  
+DEAL::-0.028  0       -0.056  0       -0.014  0       -0.028  0       
+DEAL::-0.89   -0.028  -1.8    -0.056  -0.44   -0.014  -0.89   -0.028  
+DEAL::-0.028  0       -0.014  0       -0.056  0       -0.028  0       
+DEAL::-0.89   -0.028  -0.44   -0.014  -1.8    -0.056  -0.89   -0.028  
+DEAL::-0.014  0       -0.028  0       -0.028  0       -0.056  0       
+DEAL::-0.44   -0.014  -0.89   -0.028  -0.89   -0.028  -1.8    -0.056  
+DEAL::M21
+DEAL::-0.056  -1.8    -0.028  -0.89   -0.028  -0.89   -0.014  -0.44   
+DEAL::0       -0.056  0       -0.028  0       -0.028  0       -0.014  
+DEAL::-0.028  -0.89   -0.056  -1.8    -0.014  -0.44   -0.028  -0.89   
+DEAL::0       -0.028  0       -0.056  0       -0.014  0       -0.028  
+DEAL::-0.028  -0.89   -0.014  -0.44   -0.056  -1.8    -0.028  -0.89   
+DEAL::0       -0.028  0       -0.014  0       -0.056  0       -0.028  
+DEAL::-0.014  -0.44   -0.028  -0.89   -0.028  -0.89   -0.056  -1.8    
+DEAL::0       -0.014  0       -0.028  0       -0.028  0       -0.056  
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::FE_DGQ<3>(2)
+DEAL::cell matrix
+DEAL::0.12    -0.0059 -0.015  -0.0059 -0.037  0.0096  -0.015  0.0096  -0.00037-0.0059 -0.037  0.0096  -0.037  -0.036  0.013   0.0096  0.013   -0.0044 -0.015  0.0096  -0.000370.0096  0.013   -0.0044 -0.00037-0.0044 0.0011  
+DEAL::-0.0059 0.43    -0.0059 -0.037  -0.059  -0.037  0.0096  -0.041  0.0096  -0.037  -0.059  -0.037  -0.036  -0.17   -0.036  0.013   0.047   0.013   0.0096  -0.041  0.0096  0.013   0.047   0.013   -0.0044 -0.0059 -0.0044 
+DEAL::-0.015  -0.0059 0.12    0.0096  -0.037  -0.0059 -0.000370.0096  -0.015  0.0096  -0.037  -0.0059 0.013   -0.036  -0.037  -0.0044 0.013   0.0096  -0.000370.0096  -0.015  -0.0044 0.013   0.0096  0.0011  -0.0044 -0.00037
+DEAL::-0.0059 -0.037  0.0096  0.43    -0.059  -0.041  -0.0059 -0.037  0.0096  -0.037  -0.036  0.013   -0.059  -0.17   0.047   -0.037  -0.036  0.013   0.0096  0.013   -0.0044 -0.041  0.047   -0.0059 0.0096  0.013   -0.0044 
+DEAL::-0.037  -0.059  -0.037  -0.059  1.4     -0.059  -0.037  -0.059  -0.037  -0.036  -0.17   -0.036  -0.17   -0.38   -0.17   -0.036  -0.17   -0.036  0.013   0.047   0.013   0.047   -0.095  0.047   0.013   0.047   0.013   
+DEAL::0.0096  -0.037  -0.0059 -0.041  -0.059  0.43    0.0096  -0.037  -0.0059 0.013   -0.036  -0.037  0.047   -0.17   -0.059  0.013   -0.036  -0.037  -0.0044 0.013   0.0096  -0.0059 0.047   -0.041  -0.0044 0.013   0.0096  
+DEAL::-0.015  0.0096  -0.00037-0.0059 -0.037  0.0096  0.12    -0.0059 -0.015  0.0096  0.013   -0.0044 -0.037  -0.036  0.013   -0.0059 -0.037  0.0096  -0.00037-0.0044 0.0011  0.0096  0.013   -0.0044 -0.015  0.0096  -0.00037
+DEAL::0.0096  -0.041  0.0096  -0.037  -0.059  -0.037  -0.0059 0.43    -0.0059 0.013   0.047   0.013   -0.036  -0.17   -0.036  -0.037  -0.059  -0.037  -0.0044 -0.0059 -0.0044 0.013   0.047   0.013   0.0096  -0.041  0.0096  
+DEAL::-0.000370.0096  -0.015  0.0096  -0.037  -0.0059 -0.015  -0.0059 0.12    -0.0044 0.013   0.0096  0.013   -0.036  -0.037  0.0096  -0.037  -0.0059 0.0011  -0.0044 -0.00037-0.0044 0.013   0.0096  -0.000370.0096  -0.015  
+DEAL::-0.0059 -0.037  0.0096  -0.037  -0.036  0.013   0.0096  0.013   -0.0044 0.43    -0.059  -0.041  -0.059  -0.17   0.047   -0.041  0.047   -0.0059 -0.0059 -0.037  0.0096  -0.037  -0.036  0.013   0.0096  0.013   -0.0044 
+DEAL::-0.037  -0.059  -0.037  -0.036  -0.17   -0.036  0.013   0.047   0.013   -0.059  1.4     -0.059  -0.17   -0.38   -0.17   0.047   -0.095  0.047   -0.037  -0.059  -0.037  -0.036  -0.17   -0.036  0.013   0.047   0.013   
+DEAL::0.0096  -0.037  -0.0059 0.013   -0.036  -0.037  -0.0044 0.013   0.0096  -0.041  -0.059  0.43    0.047   -0.17   -0.059  -0.0059 0.047   -0.041  0.0096  -0.037  -0.0059 0.013   -0.036  -0.037  -0.0044 0.013   0.0096  
+DEAL::-0.037  -0.036  0.013   -0.059  -0.17   0.047   -0.037  -0.036  0.013   -0.059  -0.17   0.047   1.4     -0.38   -0.095  -0.059  -0.17   0.047   -0.037  -0.036  0.013   -0.059  -0.17   0.047   -0.037  -0.036  0.013   
+DEAL::-0.036  -0.17   -0.036  -0.17   -0.38   -0.17   -0.036  -0.17   -0.036  -0.17   -0.38   -0.17   -0.38   4.6     -0.38   -0.17   -0.38   -0.17   -0.036  -0.17   -0.036  -0.17   -0.38   -0.17   -0.036  -0.17   -0.036  
+DEAL::0.013   -0.036  -0.037  0.047   -0.17   -0.059  0.013   -0.036  -0.037  0.047   -0.17   -0.059  -0.095  -0.38   1.4     0.047   -0.17   -0.059  0.013   -0.036  -0.037  0.047   -0.17   -0.059  0.013   -0.036  -0.037  
+DEAL::0.0096  0.013   -0.0044 -0.037  -0.036  0.013   -0.0059 -0.037  0.0096  -0.041  0.047   -0.0059 -0.059  -0.17   0.047   0.43    -0.059  -0.041  0.0096  0.013   -0.0044 -0.037  -0.036  0.013   -0.0059 -0.037  0.0096  
+DEAL::0.013   0.047   0.013   -0.036  -0.17   -0.036  -0.037  -0.059  -0.037  0.047   -0.095  0.047   -0.17   -0.38   -0.17   -0.059  1.4     -0.059  0.013   0.047   0.013   -0.036  -0.17   -0.036  -0.037  -0.059  -0.037  
+DEAL::-0.0044 0.013   0.0096  0.013   -0.036  -0.037  0.0096  -0.037  -0.0059 -0.0059 0.047   -0.041  0.047   -0.17   -0.059  -0.041  -0.059  0.43    -0.0044 0.013   0.0096  0.013   -0.036  -0.037  0.0096  -0.037  -0.0059 
+DEAL::-0.015  0.0096  -0.000370.0096  0.013   -0.0044 -0.00037-0.0044 0.0011  -0.0059 -0.037  0.0096  -0.037  -0.036  0.013   0.0096  0.013   -0.0044 0.12    -0.0059 -0.015  -0.0059 -0.037  0.0096  -0.015  0.0096  -0.00037
+DEAL::0.0096  -0.041  0.0096  0.013   0.047   0.013   -0.0044 -0.0059 -0.0044 -0.037  -0.059  -0.037  -0.036  -0.17   -0.036  0.013   0.047   0.013   -0.0059 0.43    -0.0059 -0.037  -0.059  -0.037  0.0096  -0.041  0.0096  
+DEAL::-0.000370.0096  -0.015  -0.0044 0.013   0.0096  0.0011  -0.0044 -0.000370.0096  -0.037  -0.0059 0.013   -0.036  -0.037  -0.0044 0.013   0.0096  -0.015  -0.0059 0.12    0.0096  -0.037  -0.0059 -0.000370.0096  -0.015  
+DEAL::0.0096  0.013   -0.0044 -0.041  0.047   -0.0059 0.0096  0.013   -0.0044 -0.037  -0.036  0.013   -0.059  -0.17   0.047   -0.037  -0.036  0.013   -0.0059 -0.037  0.0096  0.43    -0.059  -0.041  -0.0059 -0.037  0.0096  
+DEAL::0.013   0.047   0.013   0.047   -0.095  0.047   0.013   0.047   0.013   -0.036  -0.17   -0.036  -0.17   -0.38   -0.17   -0.036  -0.17   -0.036  -0.037  -0.059  -0.037  -0.059  1.4     -0.059  -0.037  -0.059  -0.037  
+DEAL::-0.0044 0.013   0.0096  -0.0059 0.047   -0.041  -0.0044 0.013   0.0096  0.013   -0.036  -0.037  0.047   -0.17   -0.059  0.013   -0.036  -0.037  0.0096  -0.037  -0.0059 -0.041  -0.059  0.43    0.0096  -0.037  -0.0059 
+DEAL::-0.00037-0.0044 0.0011  0.0096  0.013   -0.0044 -0.015  0.0096  -0.000370.0096  0.013   -0.0044 -0.037  -0.036  0.013   -0.0059 -0.037  0.0096  -0.015  0.0096  -0.00037-0.0059 -0.037  0.0096  0.12    -0.0059 -0.015  
+DEAL::-0.0044 -0.0059 -0.0044 0.013   0.047   0.013   0.0096  -0.041  0.0096  0.013   0.047   0.013   -0.036  -0.17   -0.036  -0.037  -0.059  -0.037  0.0096  -0.041  0.0096  -0.037  -0.059  -0.037  -0.0059 0.43    -0.0059 
+DEAL::0.0011  -0.0044 -0.00037-0.0044 0.013   0.0096  -0.000370.0096  -0.015  -0.0044 0.013   0.0096  0.013   -0.036  -0.037  0.0096  -0.037  -0.0059 -0.000370.0096  -0.015  0.0096  -0.037  -0.0059 -0.015  -0.0059 0.12    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 0
+DEAL::0.50    0.071   -0.018  0.25    0.036   -0.0089 -0.12   -0.018  0.0044  0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 
+DEAL::0.071   0       0       0.036   0       0       -0.018  0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       
+DEAL::-0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       
+DEAL::0.25    0.036   -0.0089 2.0     0.28    -0.071  0.25    0.036   -0.0089 0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  
+DEAL::0.036   0       0       0.28    0       0       0.036   0       0       0.018   0       0       0.14    0       0       0.018   0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       
+DEAL::-0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       
+DEAL::-0.12   -0.018  0.0044  0.25    0.036   -0.0089 0.50    0.071   -0.018  -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  
+DEAL::-0.018  0       0       0.036   0       0       0.071   0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       
+DEAL::0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       
+DEAL::0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  2.0     0.28    -0.071  1.0     0.14    -0.036  -0.50   -0.071  0.018   0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  
+DEAL::0.036   0       0       0.018   0       0       -0.0089 0       0       0.28    0       0       0.14    0       0       -0.071  0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       
+DEAL::-0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.071  0       0       -0.036  0       0       0.018   0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       
+DEAL::0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 1.0     0.14    -0.036  8.0     1.1     -0.28   1.0     0.14    -0.036  0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 
+DEAL::0.018   0       0       0.14    0       0       0.018   0       0       0.14    0       0       1.1     0       0       0.14    0       0       0.018   0       0       0.14    0       0       0.018   0       0       
+DEAL::-0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.036  0       0       -0.28   0       0       -0.036  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       
+DEAL::-0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 -0.50   -0.071  0.018   1.0     0.14    -0.036  2.0     0.28    -0.071  -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 
+DEAL::-0.0089 0       0       0.018   0       0       0.036   0       0       -0.071  0       0       0.14    0       0       0.28    0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       
+DEAL::0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.018   0       0       -0.036  0       0       -0.071  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       
+DEAL::-0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  0.50    0.071   -0.018  0.25    0.036   -0.0089 -0.12   -0.018  0.0044  
+DEAL::-0.018  0       0       -0.0089 0       0       0.0044  0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.071   0       0       0.036   0       0       -0.018  0       0       
+DEAL::0.0044  0       0       0.0022  0       0       -0.0011 0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       
+DEAL::-0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 0.25    0.036   -0.0089 2.0     0.28    -0.071  0.25    0.036   -0.0089 
+DEAL::-0.0089 0       0       -0.071  0       0       -0.0089 0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.036   0       0       0.28    0       0       0.036   0       0       
+DEAL::0.0022  0       0       0.018   0       0       0.0022  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       
+DEAL::0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 -0.12   -0.018  0.0044  0.25    0.036   -0.0089 0.50    0.071   -0.018  
+DEAL::0.0044  0       0       -0.0089 0       0       -0.018  0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.018  0       0       0.036   0       0       0.071   0       0       
+DEAL::-0.0011 0       0       0.0022  0       0       0.0044  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 1
+DEAL::0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       0.0044  0       0       0.0022  0       0       -0.0011 
+DEAL::0       0       0.071   0       0       0.036   0       0       -0.018  0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       -0.018  0       0       -0.0089 0       0       0.0044  
+DEAL::-0.018  0.071   0.50    -0.0089 0.036   0.25    0.0044  -0.018  -0.12   -0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   
+DEAL::0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       0.0022  0       0       0.018   0       0       0.0022  
+DEAL::0       0       0.036   0       0       0.28    0       0       0.036   0       0       0.018   0       0       0.14    0       0       0.018   0       0       -0.0089 0       0       -0.071  0       0       -0.0089 
+DEAL::-0.0089 0.036   0.25    -0.071  0.28    2.0     -0.0089 0.036   0.25    -0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  
+DEAL::0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       -0.0011 0       0       0.0022  0       0       0.0044  
+DEAL::0       0       -0.018  0       0       0.036   0       0       0.071   0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       0.0044  0       0       -0.0089 0       0       -0.018  
+DEAL::0.0044  -0.018  -0.12   -0.0089 0.036   0.25    -0.018  0.071   0.50    0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    -0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   
+DEAL::0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.071  0       0       -0.036  0       0       0.018   0       0       -0.0089 0       0       -0.0044 0       0       0.0022  
+DEAL::0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.28    0       0       0.14    0       0       -0.071  0       0       0.036   0       0       0.018   0       0       -0.0089 
+DEAL::-0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  -0.071  0.28    2.0     -0.036  0.14    1.0     0.018   -0.071  -0.50   -0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  
+DEAL::0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.036  0       0       -0.28   0       0       -0.036  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 
+DEAL::0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.14    0       0       1.1     0       0       0.14    0       0       0.018   0       0       0.14    0       0       0.018   
+DEAL::-0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    -0.036  0.14    1.0     -0.28   1.1     8.0     -0.036  0.14    1.0     -0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    
+DEAL::0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.018   0       0       -0.036  0       0       -0.071  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 
+DEAL::0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.071  0       0       0.14    0       0       0.28    0       0       -0.0089 0       0       0.018   0       0       0.036   
+DEAL::0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    0.018   -0.071  -0.50   -0.036  0.14    1.0     -0.071  0.28    2.0     0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    
+DEAL::0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.018  0       0       -0.0089 0       0       0.0044  
+DEAL::0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.071   0       0       0.036   0       0       -0.018  
+DEAL::0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   -0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  -0.018  0.071   0.50    -0.0089 0.036   0.25    0.0044  -0.018  -0.12   
+DEAL::0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.0089 0       0       -0.071  0       0       -0.0089 
+DEAL::0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.036   0       0       0.28    0       0       0.036   
+DEAL::0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    -0.0089 0.036   0.25    -0.071  0.28    2.0     -0.0089 0.036   0.25    
+DEAL::0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.0044  0       0       -0.0089 0       0       -0.018  
+DEAL::0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.018  0       0       0.036   0       0       0.071   
+DEAL::-0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    0.0044  -0.018  -0.12   -0.0089 0.036   0.25    -0.018  0.071   0.50    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 2
+DEAL::0.50    0.25    -0.12   0.071   0.036   -0.018  -0.018  -0.0089 0.0044  0.25    0.12    -0.062  0.036   0.018   -0.0089 -0.0089 -0.0044 0.0022  -0.12   -0.062  0.031   -0.018  -0.0089 0.0044  0.0044  0.0022  -0.0011 
+DEAL::0.25    2.0     0.25    0.036   0.28    0.036   -0.0089 -0.071  -0.0089 0.12    1.0     0.12    0.018   0.14    0.018   -0.0044 -0.036  -0.0044 -0.062  -0.50   -0.062  -0.0089 -0.071  -0.0089 0.0022  0.018   0.0022  
+DEAL::-0.12   0.25    0.50    -0.018  0.036   0.071   0.0044  -0.0089 -0.018  -0.062  0.12    0.25    -0.0089 0.018   0.036   0.0022  -0.0044 -0.0089 0.031   -0.062  -0.12   0.0044  -0.0089 -0.018  -0.0011 0.0022  0.0044  
+DEAL::0.071   0.036   -0.018  0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       -0.018  -0.0089 0.0044  0       0       0       0       0       0       
+DEAL::0.036   0.28    0.036   0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       -0.0089 -0.071  -0.0089 0       0       0       0       0       0       
+DEAL::-0.018  0.036   0.071   0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       0.0044  -0.0089 -0.018  0       0       0       0       0       0       
+DEAL::-0.018  -0.0089 0.0044  0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       0.0044  0.0022  -0.0011 0       0       0       0       0       0       
+DEAL::-0.0089 -0.071  -0.0089 0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       0.0022  0.018   0.0022  0       0       0       0       0       0       
+DEAL::0.0044  -0.0089 -0.018  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       -0.0011 0.0022  0.0044  0       0       0       0       0       0       
+DEAL::0.25    0.12    -0.062  0.036   0.018   -0.0089 -0.0089 -0.0044 0.0022  2.0     1.0     -0.50   0.28    0.14    -0.071  -0.071  -0.036  0.018   0.25    0.12    -0.062  0.036   0.018   -0.0089 -0.0089 -0.0044 0.0022  
+DEAL::0.12    1.0     0.12    0.018   0.14    0.018   -0.0044 -0.036  -0.0044 1.0     8.0     1.0     0.14    1.1     0.14    -0.036  -0.28   -0.036  0.12    1.0     0.12    0.018   0.14    0.018   -0.0044 -0.036  -0.0044 
+DEAL::-0.062  0.12    0.25    -0.0089 0.018   0.036   0.0022  -0.0044 -0.0089 -0.50   1.0     2.0     -0.071  0.14    0.28    0.018   -0.036  -0.071  -0.062  0.12    0.25    -0.0089 0.018   0.036   0.0022  -0.0044 -0.0089 
+DEAL::0.036   0.018   -0.0089 0       0       0       0       0       0       0.28    0.14    -0.071  0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       
+DEAL::0.018   0.14    0.018   0       0       0       0       0       0       0.14    1.1     0.14    0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       
+DEAL::-0.0089 0.018   0.036   0       0       0       0       0       0       -0.071  0.14    0.28    0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       
+DEAL::-0.0089 -0.0044 0.0022  0       0       0       0       0       0       -0.071  -0.036  0.018   0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       
+DEAL::-0.0044 -0.036  -0.0044 0       0       0       0       0       0       -0.036  -0.28   -0.036  0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       
+DEAL::0.0022  -0.0044 -0.0089 0       0       0       0       0       0       0.018   -0.036  -0.071  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       
+DEAL::-0.12   -0.062  0.031   -0.018  -0.0089 0.0044  0.0044  0.0022  -0.0011 0.25    0.12    -0.062  0.036   0.018   -0.0089 -0.0089 -0.0044 0.0022  0.50    0.25    -0.12   0.071   0.036   -0.018  -0.018  -0.0089 0.0044  
+DEAL::-0.062  -0.50   -0.062  -0.0089 -0.071  -0.0089 0.0022  0.018   0.0022  0.12    1.0     0.12    0.018   0.14    0.018   -0.0044 -0.036  -0.0044 0.25    2.0     0.25    0.036   0.28    0.036   -0.0089 -0.071  -0.0089 
+DEAL::0.031   -0.062  -0.12   0.0044  -0.0089 -0.018  -0.0011 0.0022  0.0044  -0.062  0.12    0.25    -0.0089 0.018   0.036   0.0022  -0.0044 -0.0089 -0.12   0.25    0.50    -0.018  0.036   0.071   0.0044  -0.0089 -0.018  
+DEAL::-0.018  -0.0089 0.0044  0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       0.071   0.036   -0.018  0       0       0       0       0       0       
+DEAL::-0.0089 -0.071  -0.0089 0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       0.036   0.28    0.036   0       0       0       0       0       0       
+DEAL::0.0044  -0.0089 -0.018  0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       -0.018  0.036   0.071   0       0       0       0       0       0       
+DEAL::0.0044  0.0022  -0.0011 0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       -0.018  -0.0089 0.0044  0       0       0       0       0       0       
+DEAL::0.0022  0.018   0.0022  0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       -0.0089 -0.071  -0.0089 0       0       0       0       0       0       
+DEAL::-0.0011 0.0022  0.0044  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       0.0044  -0.0089 -0.018  0       0       0       0       0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 3
+DEAL::0       0       0       0       0       0       -0.018  -0.0089 0.0044  0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       0.0044  0.0022  -0.0011 
+DEAL::0       0       0       0       0       0       -0.0089 -0.071  -0.0089 0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       0.0022  0.018   0.0022  
+DEAL::0       0       0       0       0       0       0.0044  -0.0089 -0.018  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       -0.0011 0.0022  0.0044  
+DEAL::0       0       0       0       0       0       0.071   0.036   -0.018  0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       -0.018  -0.0089 0.0044  
+DEAL::0       0       0       0       0       0       0.036   0.28    0.036   0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       -0.0089 -0.071  -0.0089 
+DEAL::0       0       0       0       0       0       -0.018  0.036   0.071   0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       0.0044  -0.0089 -0.018  
+DEAL::-0.018  -0.0089 0.0044  0.071   0.036   -0.018  0.50    0.25    -0.12   -0.0089 -0.0044 0.0022  0.036   0.018   -0.0089 0.25    0.12    -0.062  0.0044  0.0022  -0.0011 -0.018  -0.0089 0.0044  -0.12   -0.062  0.031   
+DEAL::-0.0089 -0.071  -0.0089 0.036   0.28    0.036   0.25    2.0     0.25    -0.0044 -0.036  -0.0044 0.018   0.14    0.018   0.12    1.0     0.12    0.0022  0.018   0.0022  -0.0089 -0.071  -0.0089 -0.062  -0.50   -0.062  
+DEAL::0.0044  -0.0089 -0.018  -0.018  0.036   0.071   -0.12   0.25    0.50    0.0022  -0.0044 -0.0089 -0.0089 0.018   0.036   -0.062  0.12    0.25    -0.0011 0.0022  0.0044  0.0044  -0.0089 -0.018  0.031   -0.062  -0.12   
+DEAL::0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       -0.071  -0.036  0.018   0       0       0       0       0       0       -0.0089 -0.0044 0.0022  
+DEAL::0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       -0.036  -0.28   -0.036  0       0       0       0       0       0       -0.0044 -0.036  -0.0044 
+DEAL::0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       0.018   -0.036  -0.071  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 
+DEAL::0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       0.28    0.14    -0.071  0       0       0       0       0       0       0.036   0.018   -0.0089 
+DEAL::0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       0.14    1.1     0.14    0       0       0       0       0       0       0.018   0.14    0.018   
+DEAL::0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       -0.071  0.14    0.28    0       0       0       0       0       0       -0.0089 0.018   0.036   
+DEAL::-0.0089 -0.0044 0.0022  0.036   0.018   -0.0089 0.25    0.12    -0.062  -0.071  -0.036  0.018   0.28    0.14    -0.071  2.0     1.0     -0.50   -0.0089 -0.0044 0.0022  0.036   0.018   -0.0089 0.25    0.12    -0.062  
+DEAL::-0.0044 -0.036  -0.0044 0.018   0.14    0.018   0.12    1.0     0.12    -0.036  -0.28   -0.036  0.14    1.1     0.14    1.0     8.0     1.0     -0.0044 -0.036  -0.0044 0.018   0.14    0.018   0.12    1.0     0.12    
+DEAL::0.0022  -0.0044 -0.0089 -0.0089 0.018   0.036   -0.062  0.12    0.25    0.018   -0.036  -0.071  -0.071  0.14    0.28    -0.50   1.0     2.0     0.0022  -0.0044 -0.0089 -0.0089 0.018   0.036   -0.062  0.12    0.25    
+DEAL::0       0       0       0       0       0       0.0044  0.0022  -0.0011 0       0       0       0       0       0       -0.0089 -0.0044 0.0022  0       0       0       0       0       0       -0.018  -0.0089 0.0044  
+DEAL::0       0       0       0       0       0       0.0022  0.018   0.0022  0       0       0       0       0       0       -0.0044 -0.036  -0.0044 0       0       0       0       0       0       -0.0089 -0.071  -0.0089 
+DEAL::0       0       0       0       0       0       -0.0011 0.0022  0.0044  0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0       0       0       0       0       0       0.0044  -0.0089 -0.018  
+DEAL::0       0       0       0       0       0       -0.018  -0.0089 0.0044  0       0       0       0       0       0       0.036   0.018   -0.0089 0       0       0       0       0       0       0.071   0.036   -0.018  
+DEAL::0       0       0       0       0       0       -0.0089 -0.071  -0.0089 0       0       0       0       0       0       0.018   0.14    0.018   0       0       0       0       0       0       0.036   0.28    0.036   
+DEAL::0       0       0       0       0       0       0.0044  -0.0089 -0.018  0       0       0       0       0       0       -0.0089 0.018   0.036   0       0       0       0       0       0       -0.018  0.036   0.071   
+DEAL::0.0044  0.0022  -0.0011 -0.018  -0.0089 0.0044  -0.12   -0.062  0.031   -0.0089 -0.0044 0.0022  0.036   0.018   -0.0089 0.25    0.12    -0.062  -0.018  -0.0089 0.0044  0.071   0.036   -0.018  0.50    0.25    -0.12   
+DEAL::0.0022  0.018   0.0022  -0.0089 -0.071  -0.0089 -0.062  -0.50   -0.062  -0.0044 -0.036  -0.0044 0.018   0.14    0.018   0.12    1.0     0.12    -0.0089 -0.071  -0.0089 0.036   0.28    0.036   0.25    2.0     0.25    
+DEAL::-0.0011 0.0022  0.0044  0.0044  -0.0089 -0.018  0.031   -0.062  -0.12   0.0022  -0.0044 -0.0089 -0.0089 0.018   0.036   -0.062  0.12    0.25    0.0044  -0.0089 -0.018  -0.018  0.036   0.071   -0.12   0.25    0.50    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 4
+DEAL::0.50    0.25    -0.12   0.25    0.12    -0.062  -0.12   -0.062  0.031   0.071   0.036   -0.018  0.036   0.018   -0.0089 -0.018  -0.0089 0.0044  -0.018  -0.0089 0.0044  -0.0089 -0.0044 0.0022  0.0044  0.0022  -0.0011 
+DEAL::0.25    2.0     0.25    0.12    1.0     0.12    -0.062  -0.50   -0.062  0.036   0.28    0.036   0.018   0.14    0.018   -0.0089 -0.071  -0.0089 -0.0089 -0.071  -0.0089 -0.0044 -0.036  -0.0044 0.0022  0.018   0.0022  
+DEAL::-0.12   0.25    0.50    -0.062  0.12    0.25    0.031   -0.062  -0.12   -0.018  0.036   0.071   -0.0089 0.018   0.036   0.0044  -0.0089 -0.018  0.0044  -0.0089 -0.018  0.0022  -0.0044 -0.0089 -0.0011 0.0022  0.0044  
+DEAL::0.25    0.12    -0.062  2.0     1.0     -0.50   0.25    0.12    -0.062  0.036   0.018   -0.0089 0.28    0.14    -0.071  0.036   0.018   -0.0089 -0.0089 -0.0044 0.0022  -0.071  -0.036  0.018   -0.0089 -0.0044 0.0022  
+DEAL::0.12    1.0     0.12    1.0     8.0     1.0     0.12    1.0     0.12    0.018   0.14    0.018   0.14    1.1     0.14    0.018   0.14    0.018   -0.0044 -0.036  -0.0044 -0.036  -0.28   -0.036  -0.0044 -0.036  -0.0044 
+DEAL::-0.062  0.12    0.25    -0.50   1.0     2.0     -0.062  0.12    0.25    -0.0089 0.018   0.036   -0.071  0.14    0.28    -0.0089 0.018   0.036   0.0022  -0.0044 -0.0089 0.018   -0.036  -0.071  0.0022  -0.0044 -0.0089 
+DEAL::-0.12   -0.062  0.031   0.25    0.12    -0.062  0.50    0.25    -0.12   -0.018  -0.0089 0.0044  0.036   0.018   -0.0089 0.071   0.036   -0.018  0.0044  0.0022  -0.0011 -0.0089 -0.0044 0.0022  -0.018  -0.0089 0.0044  
+DEAL::-0.062  -0.50   -0.062  0.12    1.0     0.12    0.25    2.0     0.25    -0.0089 -0.071  -0.0089 0.018   0.14    0.018   0.036   0.28    0.036   0.0022  0.018   0.0022  -0.0044 -0.036  -0.0044 -0.0089 -0.071  -0.0089 
+DEAL::0.031   -0.062  -0.12   -0.062  0.12    0.25    -0.12   0.25    0.50    0.0044  -0.0089 -0.018  -0.0089 0.018   0.036   -0.018  0.036   0.071   -0.0011 0.0022  0.0044  0.0022  -0.0044 -0.0089 0.0044  -0.0089 -0.018  
+DEAL::0.071   0.036   -0.018  0.036   0.018   -0.0089 -0.018  -0.0089 0.0044  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.036   0.28    0.036   0.018   0.14    0.018   -0.0089 -0.071  -0.0089 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.018  0.036   0.071   -0.0089 0.018   0.036   0.0044  -0.0089 -0.018  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.036   0.018   -0.0089 0.28    0.14    -0.071  0.036   0.018   -0.0089 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.018   0.14    0.018   0.14    1.1     0.14    0.018   0.14    0.018   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0089 0.018   0.036   -0.071  0.14    0.28    -0.0089 0.018   0.036   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.018  -0.0089 0.0044  0.036   0.018   -0.0089 0.071   0.036   -0.018  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0089 -0.071  -0.0089 0.018   0.14    0.018   0.036   0.28    0.036   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.0044  -0.0089 -0.018  -0.0089 0.018   0.036   -0.018  0.036   0.071   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.018  -0.0089 0.0044  -0.0089 -0.0044 0.0022  0.0044  0.0022  -0.0011 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0089 -0.071  -0.0089 -0.0044 -0.036  -0.0044 0.0022  0.018   0.0022  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.0044  -0.0089 -0.018  0.0022  -0.0044 -0.0089 -0.0011 0.0022  0.0044  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0089 -0.0044 0.0022  -0.071  -0.036  0.018   -0.0089 -0.0044 0.0022  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0044 -0.036  -0.0044 -0.036  -0.28   -0.036  -0.0044 -0.036  -0.0044 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.0022  -0.0044 -0.0089 0.018   -0.036  -0.071  0.0022  -0.0044 -0.0089 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.0044  0.0022  -0.0011 -0.0089 -0.0044 0.0022  -0.018  -0.0089 0.0044  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.0022  0.018   0.0022  -0.0044 -0.036  -0.0044 -0.0089 -0.071  -0.0089 0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.0011 0.0022  0.0044  0.0022  -0.0044 -0.0089 0.0044  -0.0089 -0.018  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::boundary_matrix 5
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.018  -0.0089 0.0044  -0.0089 -0.0044 0.0022  0.0044  0.0022  -0.0011 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0089 -0.071  -0.0089 -0.0044 -0.036  -0.0044 0.0022  0.018   0.0022  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.0044  -0.0089 -0.018  0.0022  -0.0044 -0.0089 -0.0011 0.0022  0.0044  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0089 -0.0044 0.0022  -0.071  -0.036  0.018   -0.0089 -0.0044 0.0022  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0044 -0.036  -0.0044 -0.036  -0.28   -0.036  -0.0044 -0.036  -0.0044 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.0022  -0.0044 -0.0089 0.018   -0.036  -0.071  0.0022  -0.0044 -0.0089 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.0044  0.0022  -0.0011 -0.0089 -0.0044 0.0022  -0.018  -0.0089 0.0044  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.0022  0.018   0.0022  -0.0044 -0.036  -0.0044 -0.0089 -0.071  -0.0089 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0011 0.0022  0.0044  0.0022  -0.0044 -0.0089 0.0044  -0.0089 -0.018  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.071   0.036   -0.018  0.036   0.018   -0.0089 -0.018  -0.0089 0.0044  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.036   0.28    0.036   0.018   0.14    0.018   -0.0089 -0.071  -0.0089 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.018  0.036   0.071   -0.0089 0.018   0.036   0.0044  -0.0089 -0.018  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.036   0.018   -0.0089 0.28    0.14    -0.071  0.036   0.018   -0.0089 
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.018   0.14    0.018   0.14    1.1     0.14    0.018   0.14    0.018   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0089 0.018   0.036   -0.071  0.14    0.28    -0.0089 0.018   0.036   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.018  -0.0089 0.0044  0.036   0.018   -0.0089 0.071   0.036   -0.018  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.0089 -0.071  -0.0089 0.018   0.14    0.018   0.036   0.28    0.036   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.0044  -0.0089 -0.018  -0.0089 0.018   0.036   -0.018  0.036   0.071   
+DEAL::-0.018  -0.0089 0.0044  -0.0089 -0.0044 0.0022  0.0044  0.0022  -0.0011 0.071   0.036   -0.018  0.036   0.018   -0.0089 -0.018  -0.0089 0.0044  0.50    0.25    -0.12   0.25    0.12    -0.062  -0.12   -0.062  0.031   
+DEAL::-0.0089 -0.071  -0.0089 -0.0044 -0.036  -0.0044 0.0022  0.018   0.0022  0.036   0.28    0.036   0.018   0.14    0.018   -0.0089 -0.071  -0.0089 0.25    2.0     0.25    0.12    1.0     0.12    -0.062  -0.50   -0.062  
+DEAL::0.0044  -0.0089 -0.018  0.0022  -0.0044 -0.0089 -0.0011 0.0022  0.0044  -0.018  0.036   0.071   -0.0089 0.018   0.036   0.0044  -0.0089 -0.018  -0.12   0.25    0.50    -0.062  0.12    0.25    0.031   -0.062  -0.12   
+DEAL::-0.0089 -0.0044 0.0022  -0.071  -0.036  0.018   -0.0089 -0.0044 0.0022  0.036   0.018   -0.0089 0.28    0.14    -0.071  0.036   0.018   -0.0089 0.25    0.12    -0.062  2.0     1.0     -0.50   0.25    0.12    -0.062  
+DEAL::-0.0044 -0.036  -0.0044 -0.036  -0.28   -0.036  -0.0044 -0.036  -0.0044 0.018   0.14    0.018   0.14    1.1     0.14    0.018   0.14    0.018   0.12    1.0     0.12    1.0     8.0     1.0     0.12    1.0     0.12    
+DEAL::0.0022  -0.0044 -0.0089 0.018   -0.036  -0.071  0.0022  -0.0044 -0.0089 -0.0089 0.018   0.036   -0.071  0.14    0.28    -0.0089 0.018   0.036   -0.062  0.12    0.25    -0.50   1.0     2.0     -0.062  0.12    0.25    
+DEAL::0.0044  0.0022  -0.0011 -0.0089 -0.0044 0.0022  -0.018  -0.0089 0.0044  -0.018  -0.0089 0.0044  0.036   0.018   -0.0089 0.071   0.036   -0.018  -0.12   -0.062  0.031   0.25    0.12    -0.062  0.50    0.25    -0.12   
+DEAL::0.0022  0.018   0.0022  -0.0044 -0.036  -0.0044 -0.0089 -0.071  -0.0089 -0.0089 -0.071  -0.0089 0.018   0.14    0.018   0.036   0.28    0.036   -0.062  -0.50   -0.062  0.12    1.0     0.12    0.25    2.0     0.25    
+DEAL::-0.0011 0.0022  0.0044  0.0022  -0.0044 -0.0089 0.0044  -0.0089 -0.018  0.0044  -0.0089 -0.018  -0.0089 0.018   0.036   -0.018  0.036   0.071   0.031   -0.062  -0.12   -0.062  0.12    0.25    -0.12   0.25    0.50    
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       0.0022  0       0       0.0011  0       0       -0.00056
+DEAL::0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       -0.0089 0       0       -0.0044 0       0       0.0022  
+DEAL::-0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0022 0.0089  0.062   0.0011  -0.0044 -0.031  0.0022  -0.0089 -0.062  0.0011  -0.0044 -0.031  -0.000560.0022  0.016   
+DEAL::0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       0.0011  0       0       0.0089  0       0       0.0011  
+DEAL::0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 
+DEAL::-0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    -0.0022 0.0089  0.062   -0.018  0.071   0.50    -0.0022 0.0089  0.062   0.0011  -0.0044 -0.031  0.0089  -0.036  -0.25   0.0011  -0.0044 -0.031  
+DEAL::0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       -0.000560       0       0.0011  0       0       0.0022  
+DEAL::0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       0.0022  0       0       -0.0044 0       0       -0.0089 
+DEAL::0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    0.0011  -0.0044 -0.031  -0.0022 0.0089  0.062   -0.0044 0.018   0.12    -0.000560.0022  0.016   0.0011  -0.0044 -0.031  0.0022  -0.0089 -0.062  
+DEAL::0       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       -0.036  0       0       -0.018  0       0       0.0089  0       0       -0.0044 0       0       -0.0022 0       0       0.0011  
+DEAL::0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       0.14    0       0       0.071   0       0       -0.036  0       0       0.018   0       0       0.0089  0       0       -0.0044 
+DEAL::-0.0044 0.018   0.12    -0.0022 0.0089  0.062   0.0011  -0.0044 -0.031  -0.036  0.14    1.0     -0.018  0.071   0.50    0.0089  -0.036  -0.25   -0.0044 0.018   0.12    -0.0022 0.0089  0.062   0.0011  -0.0044 -0.031  
+DEAL::0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       -0.018  0       0       -0.14   0       0       -0.018  0       0       -0.0022 0       0       -0.018  0       0       -0.0022 
+DEAL::0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       0.071   0       0       0.57    0       0       0.071   0       0       0.0089  0       0       0.071   0       0       0.0089  
+DEAL::-0.0022 0.0089  0.062   -0.018  0.071   0.50    -0.0022 0.0089  0.062   -0.018  0.071   0.50    -0.14   0.57    4.0     -0.018  0.071   0.50    -0.0022 0.0089  0.062   -0.018  0.071   0.50    -0.0022 0.0089  0.062   
+DEAL::0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       0.0089  0       0       -0.018  0       0       -0.036  0       0       0.0011  0       0       -0.0022 0       0       -0.0044 
+DEAL::0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       -0.036  0       0       0.071   0       0       0.14    0       0       -0.0044 0       0       0.0089  0       0       0.018   
+DEAL::0.0011  -0.0044 -0.031  -0.0022 0.0089  0.062   -0.0044 0.018   0.12    0.0089  -0.036  -0.25   -0.018  0.071   0.50    -0.036  0.14    1.0     0.0011  -0.0044 -0.031  -0.0022 0.0089  0.062   -0.0044 0.018   0.12    
+DEAL::0       0       0.0022  0       0       0.0011  0       0       -0.000560       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       -0.0089 0       0       -0.0044 0       0       0.0022  
+DEAL::0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       0.036   0       0       0.018   0       0       -0.0089 
+DEAL::0.0022  -0.0089 -0.062  0.0011  -0.0044 -0.031  -0.000560.0022  0.016   -0.0044 0.018   0.12    -0.0022 0.0089  0.062   0.0011  -0.0044 -0.031  -0.0089 0.036   0.25    -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  
+DEAL::0       0       0.0011  0       0       0.0089  0       0       0.0011  0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       -0.0044 0       0       -0.036  0       0       -0.0044 
+DEAL::0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       0.018   0       0       0.14    0       0       0.018   
+DEAL::0.0011  -0.0044 -0.031  0.0089  -0.036  -0.25   0.0011  -0.0044 -0.031  -0.0022 0.0089  0.062   -0.018  0.071   0.50    -0.0022 0.0089  0.062   -0.0044 0.018   0.12    -0.036  0.14    1.0     -0.0044 0.018   0.12    
+DEAL::0       0       -0.000560       0       0.0011  0       0       0.0022  0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       0.0022  0       0       -0.0044 0       0       -0.0089 
+DEAL::0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       -0.0089 0       0       0.018   0       0       0.036   
+DEAL::-0.000560.0022  0.016   0.0011  -0.0044 -0.031  0.0022  -0.0089 -0.062  0.0011  -0.0044 -0.031  -0.0022 0.0089  0.062   -0.0044 0.018   0.12    0.0022  -0.0089 -0.062  -0.0044 0.018   0.12    -0.0089 0.036   0.25    
+DEAL::M22
+DEAL::0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.062   0.0089  -0.0022 -0.031  -0.0044 0.0011  -0.062  -0.0089 0.0022  -0.031  -0.0044 0.0011  0.016   0.0022  -0.00056
+DEAL::0.036   0       0       0.018   0       0       -0.0089 0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       
+DEAL::-0.0089 0       0       -0.0044 0       0       0.0022  0       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       0.0022  0       0       0.0011  0       0       -0.000560       0       
+DEAL::0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 0.062   0.0089  -0.0022 0.50    0.071   -0.018  0.062   0.0089  -0.0022 -0.031  -0.0044 0.0011  -0.25   -0.036  0.0089  -0.031  -0.0044 0.0011  
+DEAL::0.018   0       0       0.14    0       0       0.018   0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       
+DEAL::-0.0044 0       0       -0.036  0       0       -0.0044 0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       0.0011  0       0       0.0089  0       0       0.0011  0       0       
+DEAL::-0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 -0.031  -0.0044 0.0011  0.062   0.0089  -0.0022 0.12    0.018   -0.0044 0.016   0.0022  -0.00056-0.031  -0.0044 0.0011  -0.062  -0.0089 0.0022  
+DEAL::-0.0089 0       0       0.018   0       0       0.036   0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       
+DEAL::0.0022  0       0       -0.0044 0       0       -0.0089 0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       -0.000560       0       0.0011  0       0       0.0022  0       0       
+DEAL::0.12    0.018   -0.0044 0.062   0.0089  -0.0022 -0.031  -0.0044 0.0011  1.0     0.14    -0.036  0.50    0.071   -0.018  -0.25   -0.036  0.0089  0.12    0.018   -0.0044 0.062   0.0089  -0.0022 -0.031  -0.0044 0.0011  
+DEAL::0.018   0       0       0.0089  0       0       -0.0044 0       0       0.14    0       0       0.071   0       0       -0.036  0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       
+DEAL::-0.0044 0       0       -0.0022 0       0       0.0011  0       0       -0.036  0       0       -0.018  0       0       0.0089  0       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       
+DEAL::0.062   0.0089  -0.0022 0.50    0.071   -0.018  0.062   0.0089  -0.0022 0.50    0.071   -0.018  4.0     0.57    -0.14   0.50    0.071   -0.018  0.062   0.0089  -0.0022 0.50    0.071   -0.018  0.062   0.0089  -0.0022 
+DEAL::0.0089  0       0       0.071   0       0       0.0089  0       0       0.071   0       0       0.57    0       0       0.071   0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       
+DEAL::-0.0022 0       0       -0.018  0       0       -0.0022 0       0       -0.018  0       0       -0.14   0       0       -0.018  0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       
+DEAL::-0.031  -0.0044 0.0011  0.062   0.0089  -0.0022 0.12    0.018   -0.0044 -0.25   -0.036  0.0089  0.50    0.071   -0.018  1.0     0.14    -0.036  -0.031  -0.0044 0.0011  0.062   0.0089  -0.0022 0.12    0.018   -0.0044 
+DEAL::-0.0044 0       0       0.0089  0       0       0.018   0       0       -0.036  0       0       0.071   0       0       0.14    0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       
+DEAL::0.0011  0       0       -0.0022 0       0       -0.0044 0       0       0.0089  0       0       -0.018  0       0       -0.036  0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       
+DEAL::-0.062  -0.0089 0.0022  -0.031  -0.0044 0.0011  0.016   0.0022  -0.000560.12    0.018   -0.0044 0.062   0.0089  -0.0022 -0.031  -0.0044 0.0011  0.25    0.036   -0.0089 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  
+DEAL::-0.0089 0       0       -0.0044 0       0       0.0022  0       0       0.018   0       0       0.0089  0       0       -0.0044 0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       
+DEAL::0.0022  0       0       0.0011  0       0       -0.000560       0       -0.0044 0       0       -0.0022 0       0       0.0011  0       0       -0.0089 0       0       -0.0044 0       0       0.0022  0       0       
+DEAL::-0.031  -0.0044 0.0011  -0.25   -0.036  0.0089  -0.031  -0.0044 0.0011  0.062   0.0089  -0.0022 0.50    0.071   -0.018  0.062   0.0089  -0.0022 0.12    0.018   -0.0044 1.0     0.14    -0.036  0.12    0.018   -0.0044 
+DEAL::-0.0044 0       0       -0.036  0       0       -0.0044 0       0       0.0089  0       0       0.071   0       0       0.0089  0       0       0.018   0       0       0.14    0       0       0.018   0       0       
+DEAL::0.0011  0       0       0.0089  0       0       0.0011  0       0       -0.0022 0       0       -0.018  0       0       -0.0022 0       0       -0.0044 0       0       -0.036  0       0       -0.0044 0       0       
+DEAL::0.016   0.0022  -0.00056-0.031  -0.0044 0.0011  -0.062  -0.0089 0.0022  -0.031  -0.0044 0.0011  0.062   0.0089  -0.0022 0.12    0.018   -0.0044 -0.062  -0.0089 0.0022  0.12    0.018   -0.0044 0.25    0.036   -0.0089 
+DEAL::0.0022  0       0       -0.0044 0       0       -0.0089 0       0       -0.0044 0       0       0.0089  0       0       0.018   0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       
+DEAL::-0.000560       0       0.0011  0       0       0.0022  0       0       0.0011  0       0       -0.0022 0       0       -0.0044 0       0       0.0022  0       0       -0.0044 0       0       -0.0089 0       0       
+DEAL::M12
+DEAL::0.0089  0       0       0.0044  0       0       -0.0022 0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       -0.0022 0       0       -0.0011 0       0       0.00056 0       0       
+DEAL::-0.036  0       0       -0.018  0       0       0.0089  0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       0.0089  0       0       0.0044  0       0       -0.0022 0       0       
+DEAL::-0.25   -0.036  0.0089  -0.12   -0.018  0.0044  0.062   0.0089  -0.0022 -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 0.062   0.0089  -0.0022 0.031   0.0044  -0.0011 -0.016  -0.0022 0.00056 
+DEAL::0.0044  0       0       0.036   0       0       0.0044  0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       -0.0011 0       0       -0.0089 0       0       -0.0011 0       0       
+DEAL::-0.018  0       0       -0.14   0       0       -0.018  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       0.0044  0       0       0.036   0       0       0.0044  0       0       
+DEAL::-0.12   -0.018  0.0044  -1.0    -0.14   0.036   -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 0.25    0.036   -0.0089 0.031   0.0044  -0.0011 
+DEAL::-0.0022 0       0       0.0044  0       0       0.0089  0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       0.00056 0       0       -0.0011 0       0       -0.0022 0       0       
+DEAL::0.0089  0       0       -0.018  0       0       -0.036  0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       -0.0022 0       0       0.0044  0       0       0.0089  0       0       
+DEAL::0.062   0.0089  -0.0022 -0.12   -0.018  0.0044  -0.25   -0.036  0.0089  0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  -0.016  -0.0022 0.00056 0.031   0.0044  -0.0011 0.062   0.0089  -0.0022 
+DEAL::0.0044  0       0       0.0022  0       0       -0.0011 0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       
+DEAL::-0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.14   0       0       -0.071  0       0       0.036   0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       
+DEAL::-0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 -1.0    -0.14   0.036   -0.50   -0.071  0.018   0.25    0.036   -0.0089 -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 
+DEAL::0.0022  0       0       0.018   0       0       0.0022  0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       
+DEAL::-0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.071  0       0       -0.57   0       0       -0.071  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       
+DEAL::-0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -4.0    -0.57   0.14    -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  
+DEAL::-0.0011 0       0       0.0022  0       0       0.0044  0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       
+DEAL::0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.036   0       0       -0.071  0       0       -0.14   0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       
+DEAL::0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  0.25    0.036   -0.0089 -0.50   -0.071  0.018   -1.0    -0.14   0.036   0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  
+DEAL::-0.0022 0       0       -0.0011 0       0       0.00056 0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       0.0089  0       0       0.0044  0       0       -0.0022 0       0       
+DEAL::0.0089  0       0       0.0044  0       0       -0.0022 0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.036  0       0       -0.018  0       0       0.0089  0       0       
+DEAL::0.062   0.0089  -0.0022 0.031   0.0044  -0.0011 -0.016  -0.0022 0.00056 -0.12   -0.018  0.0044  -0.062  -0.0089 0.0022  0.031   0.0044  -0.0011 -0.25   -0.036  0.0089  -0.12   -0.018  0.0044  0.062   0.0089  -0.0022 
+DEAL::-0.0011 0       0       -0.0089 0       0       -0.0011 0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       0.0044  0       0       0.036   0       0       0.0044  0       0       
+DEAL::0.0044  0       0       0.036   0       0       0.0044  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.018  0       0       -0.14   0       0       -0.018  0       0       
+DEAL::0.031   0.0044  -0.0011 0.25    0.036   -0.0089 0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.50   -0.071  0.018   -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  -1.0    -0.14   0.036   -0.12   -0.018  0.0044  
+DEAL::0.00056 0       0       -0.0011 0       0       -0.0022 0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       -0.0022 0       0       0.0044  0       0       0.0089  0       0       
+DEAL::-0.0022 0       0       0.0044  0       0       0.0089  0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.0089  0       0       -0.018  0       0       -0.036  0       0       
+DEAL::-0.016  -0.0022 0.00056 0.031   0.0044  -0.0011 0.062   0.0089  -0.0022 0.031   0.0044  -0.0011 -0.062  -0.0089 0.0022  -0.12   -0.018  0.0044  0.062   0.0089  -0.0022 -0.12   -0.018  0.0044  -0.25   -0.036  0.0089  
+DEAL::M21
+DEAL::0.0089  -0.036  -0.25   0.0044  -0.018  -0.12   -0.0022 0.0089  0.062   0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   -0.0022 0.0089  0.062   -0.0011 0.0044  0.031   0.00056 -0.0022 -0.016  
+DEAL::0       0       -0.036  0       0       -0.018  0       0       0.0089  0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       0.0089  0       0       0.0044  0       0       -0.0022 
+DEAL::0       0       0.0089  0       0       0.0044  0       0       -0.0022 0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       -0.0022 0       0       -0.0011 0       0       0.00056 
+DEAL::0.0044  -0.018  -0.12   0.036   -0.14   -1.0    0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   -0.0089 0.036   0.25    -0.0011 0.0044  0.031   
+DEAL::0       0       -0.018  0       0       -0.14   0       0       -0.018  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       0.0044  0       0       0.036   0       0       0.0044  
+DEAL::0       0       0.0044  0       0       0.036   0       0       0.0044  0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       -0.0011 0       0       -0.0089 0       0       -0.0011 
+DEAL::-0.0022 0.0089  0.062   0.0044  -0.018  -0.12   0.0089  -0.036  -0.25   -0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   0.00056 -0.0022 -0.016  -0.0011 0.0044  0.031   -0.0022 0.0089  0.062   
+DEAL::0       0       0.0089  0       0       -0.018  0       0       -0.036  0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       -0.0022 0       0       0.0044  0       0       0.0089  
+DEAL::0       0       -0.0022 0       0       0.0044  0       0       0.0089  0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       0.00056 0       0       -0.0011 0       0       -0.0022 
+DEAL::0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   0.036   -0.14   -1.0    0.018   -0.071  -0.50   -0.0089 0.036   0.25    0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   
+DEAL::0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.14   0       0       -0.071  0       0       0.036   0       0       -0.018  0       0       -0.0089 0       0       0.0044  
+DEAL::0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       0.036   0       0       0.018   0       0       -0.0089 0       0       0.0044  0       0       0.0022  0       0       -0.0011 
+DEAL::0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.14    -0.57   -4.0    0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  
+DEAL::0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.071  0       0       -0.57   0       0       -0.071  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 
+DEAL::0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       0.018   0       0       0.14    0       0       0.018   0       0       0.0022  0       0       0.018   0       0       0.0022  
+DEAL::-0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   -0.0089 0.036   0.25    0.018   -0.071  -0.50   0.036   -0.14   -1.0    -0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   
+DEAL::0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.036   0       0       -0.071  0       0       -0.14   0       0       0.0044  0       0       -0.0089 0       0       -0.018  
+DEAL::0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       -0.0089 0       0       0.018   0       0       0.036   0       0       -0.0011 0       0       0.0022  0       0       0.0044  
+DEAL::-0.0022 0.0089  0.062   -0.0011 0.0044  0.031   0.00056 -0.0022 -0.016  0.0044  -0.018  -0.12   0.0022  -0.0089 -0.062  -0.0011 0.0044  0.031   0.0089  -0.036  -0.25   0.0044  -0.018  -0.12   -0.0022 0.0089  0.062   
+DEAL::0       0       0.0089  0       0       0.0044  0       0       -0.0022 0       0       -0.018  0       0       -0.0089 0       0       0.0044  0       0       -0.036  0       0       -0.018  0       0       0.0089  
+DEAL::0       0       -0.0022 0       0       -0.0011 0       0       0.00056 0       0       0.0044  0       0       0.0022  0       0       -0.0011 0       0       0.0089  0       0       0.0044  0       0       -0.0022 
+DEAL::-0.0011 0.0044  0.031   -0.0089 0.036   0.25    -0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.018   -0.071  -0.50   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   0.036   -0.14   -1.0    0.0044  -0.018  -0.12   
+DEAL::0       0       0.0044  0       0       0.036   0       0       0.0044  0       0       -0.0089 0       0       -0.071  0       0       -0.0089 0       0       -0.018  0       0       -0.14   0       0       -0.018  
+DEAL::0       0       -0.0011 0       0       -0.0089 0       0       -0.0011 0       0       0.0022  0       0       0.018   0       0       0.0022  0       0       0.0044  0       0       0.036   0       0       0.0044  
+DEAL::0.00056 -0.0022 -0.016  -0.0011 0.0044  0.031   -0.0022 0.0089  0.062   -0.0011 0.0044  0.031   0.0022  -0.0089 -0.062  0.0044  -0.018  -0.12   -0.0022 0.0089  0.062   0.0044  -0.018  -0.12   0.0089  -0.036  -0.25   
+DEAL::0       0       -0.0022 0       0       0.0044  0       0       0.0089  0       0       0.0044  0       0       -0.0089 0       0       -0.018  0       0       0.0089  0       0       -0.018  0       0       -0.036  
+DEAL::0       0       0.00056 0       0       -0.0011 0       0       -0.0022 0       0       -0.0011 0       0       0.0022  0       0       0.0044  0       0       -0.0022 0       0       0.0044  0       0       0.0089  
+DEAL::Residuals 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0 0 e0
+DEAL::FE_Nedelec<3>(1)
+DEAL::cell matrix
+DEAL::0.67    0       -0.17   0       0       0       0       0       -0.17   0       -0.33   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       
+DEAL::0       2.0     0       0.50    0       0       0       0       0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       0       0       0.25    0       0       
+DEAL::-0.17   0       0.67    0       0       0       0       0       -0.33   0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       
+DEAL::0       0.50    0       2.0     0       0       0       0       0       0       0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       0       0       0.25    0       0       
+DEAL::0       0       0       0       0.67    0       -0.17   0       0       0       0       0       -0.17   0       -0.33   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       2.0     0       0.50    0       0       0       0       0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       -0.72   0       0       0       -0.14   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       -0.17   0       0.67    0       0       0       0       0       -0.33   0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.50    0       2.0     0       0       0       0       0       0       0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       -0.72   0       0       0       -0.14   0       0       0       0.25    0       0       0       0       
+DEAL::-0.17   0       -0.33   0       0       0       0       0       0.67    0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       
+DEAL::0       0.50    0       0       0       0       0       0       0       2.0     0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       0       0       0.25    0       0       
+DEAL::-0.33   0       -0.17   0       0       0       0       0       -0.17   0       0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       
+DEAL::0       0       0       0.50    0       0       0       0       0       0.50    0       2.0     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       0       0       0.25    0       0       
+DEAL::0       0       0       0       -0.17   0       -0.33   0       0       0       0       0       0.67    0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0.14    0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.50    0       0       0       0       0       0       0       2.0     0       0.50    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       0       0       -0.14   0       -0.14   0       0       0       -0.72   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       -0.33   0       -0.17   0       0       0       0       0       -0.17   0       0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       -0.14   0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0.50    0       0       0       0       0       0.50    0       2.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.72   0       -0.14   0       0       0       -0.72   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.67    0       -0.17   0       -0.17   0       -0.33   0       0       0       -0.14   0       0       0       0.14    0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.0     0       0.50    0       0.50    0       0       0       0       0       -0.72   0       0       0       -0.14   0       -0.72   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0.67    0       -0.33   0       -0.17   0       0       0       0.14    0       0       0       -0.14   0       -0.14   0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.50    0       2.0     0       0       0       0.50    0       0       0       -0.14   0       0       0       -0.72   0       -0.72   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       -0.33   0       0.67    0       -0.17   0       0       0       -0.14   0       0       0       0.14    0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.50    0       0       0       2.0     0       0.50    0       0       0       -0.72   0       0       0       -0.14   0       -0.14   0       0       0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.33   0       -0.17   0       -0.17   0       0.67    0       0       0       0.14    0       0       0       -0.14   0       0.14    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.50    0       0.50    0       2.0     0       0       0       -0.14   0       0       0       -0.72   0       -0.14   0       0       0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::-0.14   0       0.14    0       0       0       0       0       -0.14   0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0.43    0       0       0       0.067   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       
+DEAL::0       -0.72   0       -0.14   0       0       0       0       0       -0.72   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.83    0       0       0       0.27    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.32   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0.14    0       -0.14   0       0.14    0       0       0       0.43    0       0       0       0.067   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       -0.14   0       -0.72   0       -0.14   0       0       0       0.83    0       0       0       0.27    0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   
+DEAL::0.14    0       -0.14   0       0       0       0       0       0.14    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.067   0       0       0       0.43    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       
+DEAL::0       -0.14   0       -0.72   0       0       0       0       0       -0.14   0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0.27    0       0       0       0.83    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.32   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       -0.14   0       0.14    0       -0.14   0       0       0       0.067   0       0       0       0.43    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.72   0       -0.14   0       -0.72   0       0       0       0.27    0       0       0       0.83    0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0.14    0       0.14    0       0       0       0       0       0       0       0       0       0.43    0       0       0       0.067   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.72   0       -0.72   0       -0.14   0       -0.14   0       0       0       0.25    0       0       0       0.25    0       0.83    0       0       0       0.27    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   
+DEAL::0       0       0       0       -0.14   0       0.14    0       0       0       0       0       -0.14   0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.43    0       0       0       0.067   0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.72   0       -0.14   0       0       0       0       0       -0.72   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.83    0       0       0       0.27    0       0.25    0       0       0       0.25    0       0       0       -0.32   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0.14    0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0.067   0       0       0       0.43    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       -0.72   0       -0.72   0       0       0       0.25    0       0       0       0.25    0       0.27    0       0       0       0.83    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   
+DEAL::0       0       0       0       0.14    0       -0.14   0       0       0       0       0       0.14    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.067   0       0       0       0.43    0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       -0.72   0       0       0       0       0       -0.14   0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.27    0       0       0       0.83    0       0.25    0       0       0       0.25    0       0       0       -0.32   0       0       0       0       
+DEAL::0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0.14    0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.43    0       0       0       0.067   0       0       0       -0.14   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.72   0       -0.72   0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0.83    0       0       0       0.27    0       0       0       -0.32   0       0       0       0       
+DEAL::-0.14   0       -0.14   0       0       0       0       0       0.14    0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.43    0       0       0       0.067   0       0       0       -0.14   0       0       0       
+DEAL::0       -0.72   0       -0.72   0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0.83    0       0       0       0.27    0       0       0       -0.32   0       0       
+DEAL::0       0       0       0       0.14    0       0.14    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.067   0       0       0       0.43    0       0       0       -0.14   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       -0.72   0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0.27    0       0       0       0.83    0       0       0       -0.32   0       0       0       0       
+DEAL::0.14    0       0.14    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.067   0       0       0       0.43    0       0       0       -0.14   0       0       0       
+DEAL::0       -0.14   0       -0.14   0       0       0       0       0       -0.72   0       -0.72   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0.27    0       0       0       0.83    0       0       0       -0.32   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       -0.14   0       0       0       -0.14   0       0       0       0.20    0       0       0       0       0       
+DEAL::0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   0       0       0       -0.32   0       -0.32   0       0       0       -0.32   0       0       0       0.32    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0.20    0       0       0       
+DEAL::0       0.25    0       0.25    0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   0       0       0       -0.32   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.32   0       0       0       -0.32   0       0       0       0.32    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       -0.14   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.20    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0.25    0       0.25    0       0       0       -0.32   0       0       0       -0.32   0       -0.32   0       0       0       -0.32   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.32    
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 0
+DEAL::11.     0       0.33    0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       
+DEAL::0       11.     0       0.33    0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       
+DEAL::0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       3.8     -6.2    1.9     -3.1    0       0       0       0       1.9     -3.1    0.94    -1.5    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     -1.6    2.7     0       0       -0.82   1.3     0       0       0.71    -1.2    0       0       0       0       
+DEAL::0       0       0       0       -6.2    10.     -3.1    5.0     0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    2.7     -4.3    0       0       1.3     -2.2    0       0       -1.2    1.9     0       0       0       0       
+DEAL::0       0       0       0       1.9     -3.1    3.8     -6.2    0       0       0       0       0.94    -1.5    1.9     -3.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     -1.6    2.7     0       0       -0.82   1.3     0       0       0.71    -1.2    0       0       0       0       
+DEAL::0       0       0       0       -3.1    5.0     -6.2    10.     0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    2.7     -4.3    0       0       1.3     -2.2    0       0       -1.2    1.9     0       0       0       0       
+DEAL::5.3     0       0.17    0       0       0       0       0       11.     0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       
+DEAL::0       5.3     0       0.17    0       0       0       0       0       11.     0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       
+DEAL::0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       1.9     -3.1    0.94    -1.5    0       0       0       0       3.8     -6.2    1.9     -3.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     -0.82   1.3     0       0       -1.6    2.7     0       0       0.71    -1.2    0       0       0       0       
+DEAL::0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       -6.2    10.     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    1.3     -2.2    0       0       2.7     -4.3    0       0       -1.2    1.9     0       0       0       0       
+DEAL::0       0       0       0       0.94    -1.5    1.9     -3.1    0       0       0       0       1.9     -3.1    3.8     -6.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     -0.82   1.3     0       0       -1.6    2.7     0       0       0.71    -1.2    0       0       0       0       
+DEAL::0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       -3.1    5.0     -6.2    10.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    1.3     -2.2    0       0       2.7     -4.3    0       0       -1.2    1.9     0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       11.     0       0.33    0       5.3     0       0.17    0       0       0       -4.6    0       0       0       -0.14   0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       11.     0       0.33    0       5.3     0       0.17    0       0       0       -4.6    0       0       0       -0.14   0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0       0       0.17    0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0       0       0.17    0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       0.17    0       11.     0       0.33    0       0       0       -4.6    0       0       0       -0.14   0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       0.17    0       11.     0       0.33    0       0       0       -4.6    0       0       0       -0.14   0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.33    0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.33    0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-4.6    0       -0.14   0       0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       
+DEAL::0       -4.6    0       -0.14   0       0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       -0.14   0       -4.6    0       -0.14   0       0       0       3.2     0       0       0       0.10    0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       -0.14   0       -4.6    0       -0.14   0       0       0       3.2     0       0       0       0.10    0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   
+DEAL::-0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -1.6    2.7     -0.82   1.3     0       0       0       0       -1.6    2.7     -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.1     -1.8    0       0       0.57    -0.92   0.71    -1.2    0       0       0.71    -1.2    0       0       -0.49   0.80    0       0       0       0       
+DEAL::0       0       0       0       2.7     -4.3    1.3     -2.2    0       0       0       0       2.7     -4.3    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.8    3.0     0       0       -0.92   1.5     -1.2    1.9     0       0       -1.2    1.9     0       0       0.80    -1.3    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   1.3     -1.6    2.7     0       0       0       0       -0.82   1.3     -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.57    -0.92   0       0       1.1     -1.8    0.71    -1.2    0       0       0.71    -1.2    0       0       -0.49   0.80    0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    2.7     -4.3    0       0       0       0       1.3     -2.2    2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.92   1.5     0       0       -1.8    3.0     -1.2    1.9     0       0       -1.2    1.9     0       0       0.80    -1.3    0       0       0       0       
+DEAL::0       0       0       0       -1.6    2.7     -1.6    2.7     0       0       0       0       -0.82   1.3     -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    1.1     -1.8    0       0       0.57    -0.92   0       0       -0.49   0.80    0       0       0       0       
+DEAL::0       0       0       0       2.7     -4.3    2.7     -4.3    0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     -1.8    3.0     0       0       -0.92   1.5     0       0       0.80    -1.3    0       0       0       0       
+DEAL::-0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   1.3     -0.82   1.3     0       0       0       0       -1.6    2.7     -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    0.57    -0.92   0       0       1.1     -1.8    0       0       -0.49   0.80    0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       2.7     -4.3    2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     -0.92   1.5     0       0       -1.8    3.0     0       0       0.80    -1.3    0       0       0       0       
+DEAL::-0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.71    -1.2    0.71    -1.2    0       0       0       0       0.71    -1.2    0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    0       0       -0.49   0.80    -0.49   0.80    0       0       -0.49   0.80    0       0       0.34    -0.55   0       0       0       0       
+DEAL::0       0       0       0       -1.2    1.9     -1.2    1.9     0       0       0       0       -1.2    1.9     -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    0       0       0.80    -1.3    0.80    -1.3    0       0       0.80    -1.3    0       0       -0.55   0.90    0       0       0       0       
+DEAL::0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 1
+DEAL::0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.33    0       11.     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       
+DEAL::0       0.33    0       11.     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       
+DEAL::0       0       0       0       3.8     6.2     1.9     3.1     0       0       0       0       1.9     3.1     0.94    1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    -1.6    -2.7    0       0       -0.82   -1.3    0       0       0.71    1.2     0       0       0       0       
+DEAL::0       0       0       0       6.2     10.     3.1     5.0     0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    -2.7    -4.3    0       0       -1.3    -2.2    0       0       1.2     1.9     0       0       0       0       
+DEAL::0       0       0       0       1.9     3.1     3.8     6.2     0       0       0       0       0.94    1.5     1.9     3.1     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    -1.6    -2.7    0       0       -0.82   -1.3    0       0       0.71    1.2     0       0       0       0       
+DEAL::0       0       0       0       3.1     5.0     6.2     10.     0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    -2.7    -4.3    0       0       -1.3    -2.2    0       0       1.2     1.9     0       0       0       0       
+DEAL::0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.17    0       5.3     0       0       0       0       0       0.33    0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       
+DEAL::0       0.17    0       5.3     0       0       0       0       0       0.33    0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       
+DEAL::0       0       0       0       1.9     3.1     0.94    1.5     0       0       0       0       3.8     6.2     1.9     3.1     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    -0.82   -1.3    0       0       -1.6    -2.7    0       0       0.71    1.2     0       0       0       0       
+DEAL::0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       6.2     10.     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    -1.3    -2.2    0       0       -2.7    -4.3    0       0       1.2     1.9     0       0       0       0       
+DEAL::0       0       0       0       0.94    1.5     1.9     3.1     0       0       0       0       1.9     3.1     3.8     6.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    -0.82   -1.3    0       0       -1.6    -2.7    0       0       0.71    1.2     0       0       0       0       
+DEAL::0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       3.1     5.0     6.2     10.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    -1.3    -2.2    0       0       -2.7    -4.3    0       0       1.2     1.9     0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0       0       0.17    0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0       0       0.17    0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       11.     0       0.17    0       5.3     0       0       0       -0.14   0       0       0       -4.6    0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       11.     0       0.17    0       5.3     0       0       0       -0.14   0       0       0       -4.6    0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.33    0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.33    0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       5.3     0       0.33    0       11.     0       0       0       -0.14   0       0       0       -4.6    0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       5.3     0       0.33    0       11.     0       0       0       -0.14   0       0       0       -4.6    0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.14   0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.14   0       -4.6    0       0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       
+DEAL::0       -0.14   0       -4.6    0       0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -4.6    0       -0.14   0       -4.6    0       0       0       0.10    0       0       0       3.2     0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -4.6    0       -0.14   0       -4.6    0       0       0       0.10    0       0       0       3.2     0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -1.6    -2.7    -0.82   -1.3    0       0       0       0       -1.6    -2.7    -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.1     1.8     0       0       0.57    0.92    0.71    1.2     0       0       0.71    1.2     0       0       -0.49   -0.80   0       0       0       0       
+DEAL::0       0       0       0       -2.7    -4.3    -1.3    -2.2    0       0       0       0       -2.7    -4.3    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.8     3.0     0       0       0.92    1.5     1.2     1.9     0       0       1.2     1.9     0       0       -0.80   -1.3    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   -1.3    -1.6    -2.7    0       0       0       0       -0.82   -1.3    -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.57    0.92    0       0       1.1     1.8     0.71    1.2     0       0       0.71    1.2     0       0       -0.49   -0.80   0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -2.7    -4.3    0       0       0       0       -1.3    -2.2    -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.92    1.5     0       0       1.8     3.0     1.2     1.9     0       0       1.2     1.9     0       0       -0.80   -1.3    0       0       0       0       
+DEAL::0       0       0       0       -1.6    -2.7    -1.6    -2.7    0       0       0       0       -0.82   -1.3    -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     1.1     1.8     0       0       0.57    0.92    0       0       -0.49   -0.80   0       0       0       0       
+DEAL::0       0       0       0       -2.7    -4.3    -2.7    -4.3    0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     1.8     3.0     0       0       0.92    1.5     0       0       -0.80   -1.3    0       0       0       0       
+DEAL::0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   -1.3    -0.82   -1.3    0       0       0       0       -1.6    -2.7    -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     0.57    0.92    0       0       1.1     1.8     0       0       -0.49   -0.80   0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       -2.7    -4.3    -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     0.92    1.5     0       0       1.8     3.0     0       0       -0.80   -1.3    0       0       0       0       
+DEAL::0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.71    1.2     0.71    1.2     0       0       0       0       0.71    1.2     0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   0       0       -0.49   -0.80   -0.49   -0.80   0       0       -0.49   -0.80   0       0       0.34    0.55    0       0       0       0       
+DEAL::0       0       0       0       1.2     1.9     1.2     1.9     0       0       0       0       1.2     1.9     1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    0       0       -0.80   -1.3    -0.80   -1.3    0       0       -0.80   -1.3    0       0       0.55    0.90    0       0       0       0       
+DEAL::0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 2
+DEAL::3.8     -6.2    1.9     -3.1    0       0       0       0       1.9     -3.1    0.94    -1.5    0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     0       0       0.71    -1.2    0       0       
+DEAL::-6.2    10.     -3.1    5.0     0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    0       0       -1.2    1.9     0       0       
+DEAL::1.9     -3.1    3.8     -6.2    0       0       0       0       0.94    -1.5    1.9     -3.1    0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     0       0       0.71    -1.2    0       0       
+DEAL::-3.1    5.0     -6.2    10.     0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    0       0       -1.2    1.9     0       0       
+DEAL::0       0       0       0       11.     0       0.33    0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       11.     0       0.33    0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::1.9     -3.1    0.94    -1.5    0       0       0       0       3.8     -6.2    1.9     -3.1    0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     0       0       -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     0       0       0.71    -1.2    0       0       
+DEAL::-3.1    5.0     -1.5    2.5     0       0       0       0       -6.2    10.     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    0       0       1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    0       0       -1.2    1.9     0       0       
+DEAL::0.94    -1.5    1.9     -3.1    0       0       0       0       1.9     -3.1    3.8     -6.2    0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -1.6    2.7     0       0       0.71    -1.2    0       0       
+DEAL::-1.5    2.5     -3.1    5.0     0       0       0       0       -3.1    5.0     -6.2    10.     0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       2.7     -4.3    0       0       -1.2    1.9     0       0       
+DEAL::0       0       0       0       5.3     0       0.17    0       0       0       0       0       11.     0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       11.     0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       11.     0       5.3     0       0.33    0       0.17    0       0       0       -0.58   0       0       0       -0.29   0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       11.     0       5.3     0       0.33    0       0.17    0       0       0       -0.58   0       0       0       -0.29   0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       11.     0       0.17    0       0.33    0       0       0       -0.29   0       0       0       -0.58   0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       11.     0       0.17    0       0.33    0       0       0       -0.29   0       0       0       -0.58   0       -4.6    0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-1.6    2.7     -0.82   1.3     0       0       0       0       -1.6    2.7     -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       1.1     -1.8    0       0       0.57    -0.92   0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    0       0       -0.49   0.80    0       0       
+DEAL::2.7     -4.3    1.3     -2.2    0       0       0       0       2.7     -4.3    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       -1.8    3.0     0       0       -0.92   1.5     0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     0       0       0.80    -1.3    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.82   1.3     -1.6    2.7     0       0       0       0       -0.82   1.3     -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0.57    -0.92   0       0       1.1     -1.8    0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    0       0       -0.49   0.80    0       0       
+DEAL::1.3     -2.2    2.7     -4.3    0       0       0       0       1.3     -2.2    2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       -0.92   1.5     0       0       -1.8    3.0     0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     0       0       0.80    -1.3    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       -4.6    0       -0.14   0       -0.14   0       0       0       0.25    0       0       0       0.25    0       3.2     0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       -4.6    0       -0.14   0       -0.14   0       0       0       0.25    0       0       0       0.25    0       3.2     0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   
+DEAL::0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       -4.6    0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-1.6    2.7     -1.6    2.7     0       0       0       0       -0.82   1.3     -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       1.1     -1.8    0       0       0.57    -0.92   0       0       -0.49   0.80    0       0       
+DEAL::2.7     -4.3    2.7     -4.3    0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       -1.8    3.0     0       0       -0.92   1.5     0       0       0.80    -1.3    0       0       
+DEAL::0       0       0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.82   1.3     -0.82   1.3     0       0       0       0       -1.6    2.7     -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0       0       0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       0.57    -0.92   0       0       1.1     -1.8    0       0       -0.49   0.80    0       0       
+DEAL::1.3     -2.2    1.3     -2.2    0       0       0       0       2.7     -4.3    2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     0       0       -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       -0.92   1.5     0       0       -1.8    3.0     0       0       0.80    -1.3    0       0       
+DEAL::0       0       0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.71    -1.2    0.71    -1.2    0       0       0       0       0.71    -1.2    0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    0       0       -0.49   0.80    0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    0       0       -0.49   0.80    0       0       0.34    -0.55   0       0       
+DEAL::-1.2    1.9     -1.2    1.9     0       0       0       0       -1.2    1.9     -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    0       0       0.80    -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    0       0       0.80    -1.3    0       0       -0.55   0.90    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 3
+DEAL::3.8     6.2     1.9     3.1     0       0       0       0       1.9     3.1     0.94    1.5     0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    0       0       0.71    1.2     0       0       
+DEAL::6.2     10.     3.1     5.0     0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    0       0       1.2     1.9     0       0       
+DEAL::1.9     3.1     3.8     6.2     0       0       0       0       0.94    1.5     1.9     3.1     0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    0       0       0.71    1.2     0       0       
+DEAL::3.1     5.0     6.2     10.     0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    0       0       1.2     1.9     0       0       
+DEAL::0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.33    0       11.     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       0.33    0       11.     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       -0.58   0       0       0       -0.29   0       0       0       0.25    0       0       0       0       
+DEAL::1.9     3.1     0.94    1.5     0       0       0       0       3.8     6.2     1.9     3.1     0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    0       0       -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    0       0       0.71    1.2     0       0       
+DEAL::3.1     5.0     1.5     2.5     0       0       0       0       6.2     10.     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    0       0       -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    0       0       1.2     1.9     0       0       
+DEAL::0.94    1.5     1.9     3.1     0       0       0       0       1.9     3.1     3.8     6.2     0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -1.6    -2.7    0       0       0.71    1.2     0       0       
+DEAL::1.5     2.5     3.1     5.0     0       0       0       0       3.1     5.0     6.2     10.     0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -2.7    -4.3    0       0       1.2     1.9     0       0       
+DEAL::0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.17    0       5.3     0       0       0       0       0       0.33    0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0.33    0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       -0.29   0       0       0       -0.58   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       11.     0       5.3     0       0       0       -0.58   0       0       0       -0.29   0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       11.     0       5.3     0       0       0       -0.58   0       0       0       -0.29   0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       5.3     0       11.     0       0       0       -0.29   0       0       0       -0.58   0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       5.3     0       11.     0       0       0       -0.29   0       0       0       -0.58   0       -0.14   0       0       0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    
+DEAL::-1.6    -2.7    -0.82   -1.3    0       0       0       0       -1.6    -2.7    -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       1.1     1.8     0       0       0.57    0.92    0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     0       0       -0.49   -0.80   0       0       
+DEAL::-2.7    -4.3    -1.3    -2.2    0       0       0       0       -2.7    -4.3    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       1.8     3.0     0       0       0.92    1.5     0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     0       0       -0.80   -1.3    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.82   -1.3    -1.6    -2.7    0       0       0       0       -0.82   -1.3    -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0.57    0.92    0       0       1.1     1.8     0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     0       0       -0.49   -0.80   0       0       
+DEAL::-1.3    -2.2    -2.7    -4.3    0       0       0       0       -1.3    -2.2    -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0.92    1.5     0       0       1.8     3.0     0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     0       0       -0.80   -1.3    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       -4.6    0       -4.6    0       0       0       0.25    0       0       0       0.25    0       0.10    0       0       0       3.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       -4.6    0       -4.6    0       0       0       0.25    0       0       0       0.25    0       0.10    0       0       0       3.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   
+DEAL::0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       -0.14   0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0.25    0       0       0       0.25    0       0       0       -0.17   0       0       0       0       
+DEAL::0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-1.6    -2.7    -1.6    -2.7    0       0       0       0       -0.82   -1.3    -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       1.1     1.8     0       0       0.57    0.92    0       0       -0.49   -0.80   0       0       
+DEAL::-2.7    -4.3    -2.7    -4.3    0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       1.8     3.0     0       0       0.92    1.5     0       0       -0.80   -1.3    0       0       
+DEAL::0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.82   -1.3    -0.82   -1.3    0       0       0       0       -1.6    -2.7    -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0       0       0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0.57    0.92    0       0       1.1     1.8     0       0       -0.49   -0.80   0       0       
+DEAL::-1.3    -2.2    -1.3    -2.2    0       0       0       0       -2.7    -4.3    -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     0       0       1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       0.92    1.5     0       0       1.8     3.0     0       0       -0.80   -1.3    0       0       
+DEAL::0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.71    1.2     0.71    1.2     0       0       0       0       0.71    1.2     0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   0       0       -0.49   -0.80   0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   0       0       -0.49   -0.80   0       0       0.34    0.55    0       0       
+DEAL::1.2     1.9     1.2     1.9     0       0       0       0       1.2     1.9     1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    0       0       -0.80   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    0       0       -0.80   -1.3    0       0       0.55    0.90    0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 4
+DEAL::11.     0       5.3     0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       
+DEAL::0       11.     0       5.3     0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       
+DEAL::5.3     0       11.     0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       
+DEAL::0       5.3     0       11.     0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       
+DEAL::0       0       0       0       11.     0       5.3     0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       11.     0       5.3     0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       5.3     0       11.     0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       5.3     0       11.     0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       -4.6    0       0       0       -0.14   0       0       0       0.25    0       0       0       0       
+DEAL::0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       
+DEAL::0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.8     -6.2    1.9     -3.1    1.9     -3.1    0.94    -1.5    0       0       -1.6    2.7     0       0       -0.82   1.3     -1.6    2.7     0       0       -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -6.2    10.     -3.1    5.0     -3.1    5.0     -1.5    2.5     0       0       2.7     -4.3    0       0       1.3     -2.2    2.7     -4.3    0       0       1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.9     -3.1    3.8     -6.2    0.94    -1.5    1.9     -3.1    0       0       -0.82   1.3     0       0       -1.6    2.7     -1.6    2.7     0       0       -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -3.1    5.0     -6.2    10.     -1.5    2.5     -3.1    5.0     0       0       1.3     -2.2    0       0       2.7     -4.3    2.7     -4.3    0       0       1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.9     -3.1    0.94    -1.5    3.8     -6.2    1.9     -3.1    0       0       -1.6    2.7     0       0       -0.82   1.3     -0.82   1.3     0       0       -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -3.1    5.0     -1.5    2.5     -6.2    10.     -3.1    5.0     0       0       2.7     -4.3    0       0       1.3     -2.2    1.3     -2.2    0       0       2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.94    -1.5    1.9     -3.1    1.9     -3.1    3.8     -6.2    0       0       -0.82   1.3     0       0       -1.6    2.7     -0.82   1.3     0       0       -1.6    2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.5    2.5     -3.1    5.0     -3.1    5.0     -6.2    10.     0       0       1.3     -2.2    0       0       2.7     -4.3    1.3     -2.2    0       0       2.7     -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     
+DEAL::-0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     -0.82   1.3     -1.6    2.7     -0.82   1.3     0       0       1.1     -1.8    0       0       0.57    -0.92   0.71    -1.2    0       0       0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    1.3     -2.2    2.7     -4.3    1.3     -2.2    0       0       -1.8    3.0     0       0       -0.92   1.5     -1.2    1.9     0       0       -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    
+DEAL::-0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     -1.6    2.7     -0.82   1.3     -1.6    2.7     0       0       0.57    -0.92   0       0       1.1     -1.8    0.71    -1.2    0       0       0.71    -1.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    2.7     -4.3    1.3     -2.2    2.7     -4.3    0       0       -0.92   1.5     0       0       -1.8    3.0     -1.2    1.9     0       0       -1.2    1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    2.7     -1.6    2.7     -0.82   1.3     -0.82   1.3     0       0       0.71    -1.2    0       0       0.71    -1.2    1.1     -1.8    0       0       0.57    -0.92   0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     -4.3    2.7     -4.3    1.3     -2.2    1.3     -2.2    0       0       -1.2    1.9     0       0       -1.2    1.9     -1.8    3.0     0       0       -0.92   1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    
+DEAL::0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     -0.82   1.3     -1.6    2.7     -1.6    2.7     0       0       0.71    -1.2    0       0       0.71    -1.2    0.57    -0.92   0       0       1.1     -1.8    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   0.80    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    1.3     -2.2    2.7     -4.3    2.7     -4.3    0       0       -1.2    1.9     0       0       -1.2    1.9     -0.92   1.5     0       0       -1.8    3.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.80    -1.3    
+DEAL::0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       3.2     0       0       0       0.10    0       0       0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       3.2     0       0       0       0.10    0       0       0       -0.17   0       0       0       0       
+DEAL::-4.6    0       -4.6    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0       0       -0.17   0       0       0       
+DEAL::0       -4.6    0       -4.6    0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       3.2     0       0       0       0.10    0       0       0       -0.17   0       0       
+DEAL::0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    -1.2    0.71    -1.2    0.71    -1.2    0.71    -1.2    0       0       -0.49   0.80    0       0       -0.49   0.80    -0.49   0.80    0       0       -0.49   0.80    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.34    -0.55   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.2    1.9     -1.2    1.9     -1.2    1.9     -1.2    1.9     0       0       0.80    -1.3    0       0       0.80    -1.3    0.80    -1.3    0       0       0.80    -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.55   0.90    
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::boundary_matrix 5
+DEAL::0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       
+DEAL::0.33    0       0.17    0       0       0       0       0       11.     0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       
+DEAL::0       0.33    0       0.17    0       0       0       0       0       11.     0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       
+DEAL::0.17    0       0.33    0       0       0       0       0       5.3     0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       
+DEAL::0       0.17    0       0.33    0       0       0       0       0       5.3     0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       
+DEAL::0       0       0       0       0.33    0       0.17    0       0       0       0       0       11.     0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       0.33    0       0.17    0       0       0       0       0       11.     0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       0       0       -0.29   0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0.17    0       0.33    0       0       0       0       0       5.3     0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       0       0       
+DEAL::0       0       0       0       0       0.17    0       0.33    0       0       0       0       0       5.3     0       11.     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.58   0       -0.14   0       0       0       -4.6    0       0       0       0.25    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.8     6.2     1.9     3.1     1.9     3.1     0.94    1.5     0       0       -1.6    -2.7    0       0       -0.82   -1.3    -1.6    -2.7    0       0       -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       6.2     10.     3.1     5.0     3.1     5.0     1.5     2.5     0       0       -2.7    -4.3    0       0       -1.3    -2.2    -2.7    -4.3    0       0       -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.9     3.1     3.8     6.2     0.94    1.5     1.9     3.1     0       0       -0.82   -1.3    0       0       -1.6    -2.7    -1.6    -2.7    0       0       -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.1     5.0     6.2     10.     1.5     2.5     3.1     5.0     0       0       -1.3    -2.2    0       0       -2.7    -4.3    -2.7    -4.3    0       0       -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.9     3.1     0.94    1.5     3.8     6.2     1.9     3.1     0       0       -1.6    -2.7    0       0       -0.82   -1.3    -0.82   -1.3    0       0       -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       3.1     5.0     1.5     2.5     6.2     10.     3.1     5.0     0       0       -2.7    -4.3    0       0       -1.3    -2.2    -1.3    -2.2    0       0       -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.94    1.5     1.9     3.1     1.9     3.1     3.8     6.2     0       0       -0.82   -1.3    0       0       -1.6    -2.7    -0.82   -1.3    0       0       -1.6    -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.5     2.5     3.1     5.0     3.1     5.0     6.2     10.     0       0       -1.3    -2.2    0       0       -2.7    -4.3    -1.3    -2.2    0       0       -2.7    -4.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     
+DEAL::0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    -0.82   -1.3    -1.6    -2.7    -0.82   -1.3    0       0       1.1     1.8     0       0       0.57    0.92    0.71    1.2     0       0       0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    -1.3    -2.2    -2.7    -4.3    -1.3    -2.2    0       0       1.8     3.0     0       0       0.92    1.5     1.2     1.9     0       0       1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    
+DEAL::0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    -1.6    -2.7    -0.82   -1.3    -1.6    -2.7    0       0       0.57    0.92    0       0       1.1     1.8     0.71    1.2     0       0       0.71    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    -2.7    -4.3    -1.3    -2.2    -2.7    -4.3    0       0       0.92    1.5     0       0       1.8     3.0     1.2     1.9     0       0       1.2     1.9     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    -2.7    -1.6    -2.7    -0.82   -1.3    -0.82   -1.3    0       0       0.71    1.2     0       0       0.71    1.2     1.1     1.8     0       0       0.57    0.92    0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    -4.3    -2.7    -4.3    -1.3    -2.2    -1.3    -2.2    0       0       1.2     1.9     0       0       1.2     1.9     1.8     3.0     0       0       0.92    1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    -0.82   -1.3    -1.6    -2.7    -1.6    -2.7    0       0       0.71    1.2     0       0       0.71    1.2     0.57    0.92    0       0       1.1     1.8     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.49   -0.80   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    -1.3    -2.2    -2.7    -4.3    -2.7    -4.3    0       0       1.2     1.9     0       0       1.2     1.9     0.92    1.5     0       0       1.8     3.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.80   -1.3    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0.10    0       0       0       3.2     0       0       0       -0.17   0       0       0       0       0       
+DEAL::0       0       0       0       0       -0.14   0       -0.14   0       0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0.10    0       0       0       3.2     0       0       0       -0.17   0       0       0       0       
+DEAL::-0.14   0       -0.14   0       0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0       0       -0.17   0       0       0       
+DEAL::0       -0.14   0       -0.14   0       0       0       0       0       -4.6    0       -4.6    0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0       0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0.10    0       0       0       3.2     0       0       0       -0.17   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0.25    0       0.25    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.71    1.2     0.71    1.2     0.71    1.2     0.71    1.2     0       0       -0.49   -0.80   0       0       -0.49   -0.80   -0.49   -0.80   0       0       -0.49   -0.80   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.34    0.55    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.2     1.9     1.2     1.9     1.2     1.9     1.2     1.9     0       0       -0.80   -1.3    0       0       -0.80   -1.3    -0.80   -1.3    0       0       -0.80   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.55    0.90    
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DEAL::face_matrix 0
+DEAL::M11
+DEAL::0       0       0.17    0       0       0       0       0       0       0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.17    0       0       0       0       0       0       0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.17    0       5.3     0       0       0       0       0       0.083   0       2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0.12    0       0       0       
+DEAL::0       0.17    0       5.3     0       0       0       0       0       0.083   0       2.7     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0.12    0       0       
+DEAL::0       0       0       0       1.9     3.1     0.94    1.5     0       0       0       0       0.94    1.5     0.47    0.77    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -0.41   -0.67   -0.82   -1.3    0       0       -0.41   -0.67   0       0       0.35    0.58    0       0       0       0       
+DEAL::0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       1.5     2.5     0.77    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -0.67   -1.1    -1.3    -2.2    0       0       -0.67   -1.1    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       0.94    1.5     1.9     3.1     0       0       0       0       0.47    0.77    0.94    1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.41   -0.67   0       0       -0.82   -1.3    -0.82   -1.3    0       0       -0.41   -0.67   0       0       0.35    0.58    0       0       0       0       
+DEAL::0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0.77    1.2     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.67   -1.1    0       0       -1.3    -2.2    -1.3    -2.2    0       0       -0.67   -1.1    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0.083   0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.083   0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.083   0       2.7     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0.12    0       0       0       
+DEAL::0       0.083   0       2.7     0       0       0       0       0       0.17    0       5.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0.12    0       0       
+DEAL::0       0       0       0       0.94    1.5     0.47    0.77    0       0       0       0       1.9     3.1     0.94    1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   -1.3    0       0       -0.41   -0.67   -0.41   -0.67   0       0       -0.82   -1.3    0       0       0.35    0.58    0       0       0       0       
+DEAL::0       0       0       0       1.5     2.5     0.77    1.2     0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -0.67   -1.1    -0.67   -1.1    0       0       -1.3    -2.2    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       0.47    0.77    0.94    1.5     0       0       0       0       0.94    1.5     1.9     3.1     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.41   -0.67   0       0       -0.82   -1.3    -0.41   -0.67   0       0       -0.82   -1.3    0       0       0.35    0.58    0       0       0       0       
+DEAL::0       0       0       0       0.77    1.2     1.5     2.5     0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.67   -1.1    0       0       -1.3    -2.2    -0.67   -1.1    0       0       -1.3    -2.2    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.083   0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.083   0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       5.3     0       0.083   0       2.7     0       0       0       -0.072  0       0       0       -2.3    0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       5.3     0       0.083   0       2.7     0       0       0       -0.072  0       0       0       -2.3    0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       0       0       0.17    0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       0       0       0.17    0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       2.7     0       0.17    0       5.3     0       0       0       -0.072  0       0       0       -2.3    0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       2.7     0       0.17    0       5.3     0       0       0       -0.072  0       0       0       -2.3    0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    
+DEAL::0       0       -0.072  0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.072  0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -0.072  0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -0.072  0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-0.072  0       -2.3    0       0       0       0       0       -0.072  0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       1.6     0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       -0.087  0       0       0       
+DEAL::0       -0.072  0       -2.3    0       0       0       0       0       -0.072  0       -2.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       1.6     0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       -0.087  0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       -2.3    0       -0.072  0       -2.3    0       0       0       0.050   0       0       0       1.6     0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       -2.3    0       -0.072  0       -2.3    0       0       0       0.050   0       0       0       1.6     0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   -1.3    -0.41   -0.67   0       0       0       0       -0.82   -1.3    -0.41   -0.67   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.57    0.92    0       0       0.28    0.46    0.35    0.58    0       0       0.35    0.58    0       0       -0.25   -0.40   0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -0.67   -1.1    0       0       0       0       -1.3    -2.2    -0.67   -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.92    1.5     0       0       0.46    0.75    0.58    0.94    0       0       0.58    0.94    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.41   -0.67   -0.82   -1.3    0       0       0       0       -0.41   -0.67   -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.28    0.46    0       0       0.57    0.92    0.35    0.58    0       0       0.35    0.58    0       0       -0.25   -0.40   0       0       0       0       
+DEAL::0       0       0       0       -0.67   -1.1    -1.3    -2.2    0       0       0       0       -0.67   -1.1    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.46    0.75    0       0       0.92    1.5     0.58    0.94    0       0       0.58    0.94    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0       0       -0.82   -1.3    -0.82   -1.3    0       0       0       0       -0.41   -0.67   -0.41   -0.67   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.35    0.58    0       0       0.35    0.58    0.57    0.92    0       0       0.28    0.46    0       0       -0.25   -0.40   0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       -0.67   -1.1    -0.67   -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.58    0.94    0       0       0.58    0.94    0.92    1.5     0       0       0.46    0.75    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       -0.29   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.29   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.41   -0.67   -0.41   -0.67   0       0       0       0       -0.82   -1.3    -0.82   -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.35    0.58    0       0       0.35    0.58    0.28    0.46    0       0       0.57    0.92    0       0       -0.25   -0.40   0       0       0       0       
+DEAL::0       0       0       0       -0.67   -1.1    -0.67   -1.1    0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.58    0.94    0       0       0.58    0.94    0.46    0.75    0       0       0.92    1.5     0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       -0.14   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.14   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.35    0.58    0.35    0.58    0       0       0       0       0.35    0.58    0.35    0.58    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.25   -0.40   0       0       -0.25   -0.40   -0.25   -0.40   0       0       -0.25   -0.40   0       0       0.17    0.28    0       0       0       0       
+DEAL::0       0       0       0       0.58    0.94    0.58    0.94    0       0       0       0       0.58    0.94    0.58    0.94    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.40   -0.65   0       0       -0.40   -0.65   -0.40   -0.65   0       0       -0.40   -0.65   0       0       0.28    0.45    0       0       0       0       
+DEAL::0       0       0.12    0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.12    0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::M22
+DEAL::5.3     0       0.17    0       0       0       0       0       2.7     0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0.12    0       0       0       
+DEAL::0       5.3     0       0.17    0       0       0       0       0       2.7     0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0.12    0       0       
+DEAL::0.17    0       0       0       0       0       0       0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.17    0       0       0       0       0       0       0       0.083   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       1.9     -3.1    0.94    -1.5    0       0       0       0       0.94    -1.5    0.47    -0.77   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -0.41   0.67    -0.82   1.3     0       0       -0.41   0.67    0       0       0.35    -0.58   0       0       0       0       
+DEAL::0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       -1.5    2.5     -0.77   1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       0.67    -1.1    1.3     -2.2    0       0       0.67    -1.1    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       0.94    -1.5    1.9     -3.1    0       0       0       0       0.47    -0.77   0.94    -1.5    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.41   0.67    0       0       -0.82   1.3     -0.82   1.3     0       0       -0.41   0.67    0       0       0.35    -0.58   0       0       0       0       
+DEAL::0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       -0.77   1.2     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.67    -1.1    0       0       1.3     -2.2    1.3     -2.2    0       0       0.67    -1.1    0       0       -0.58   0.94    0       0       0       0       
+DEAL::2.7     0       0.083   0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0.12    0       0       0       
+DEAL::0       2.7     0       0.083   0       0       0       0       0       5.3     0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0.12    0       0       
+DEAL::0.083   0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.083   0       0       0       0       0       0       0       0.17    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.94    -1.5    0.47    -0.77   0       0       0       0       1.9     -3.1    0.94    -1.5    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.82   1.3     0       0       -0.41   0.67    -0.41   0.67    0       0       -0.82   1.3     0       0       0.35    -0.58   0       0       0       0       
+DEAL::0       0       0       0       -1.5    2.5     -0.77   1.2     0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       0.67    -1.1    0.67    -1.1    0       0       1.3     -2.2    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       0.47    -0.77   0.94    -1.5    0       0       0       0       0.94    -1.5    1.9     -3.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.41   0.67    0       0       -0.82   1.3     -0.41   0.67    0       0       -0.82   1.3     0       0       0.35    -0.58   0       0       0       0       
+DEAL::0       0       0       0       -0.77   1.2     -1.5    2.5     0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.67    -1.1    0       0       1.3     -2.2    0.67    -1.1    0       0       1.3     -2.2    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       0.17    0       2.7     0       0.083   0       0       0       -2.3    0       0       0       -0.072  0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       5.3     0       0.17    0       2.7     0       0.083   0       0       0       -2.3    0       0       0       -0.072  0       -0.29   0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.083   0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.17    0       0       0       0.083   0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     0       0.083   0       5.3     0       0.17    0       0       0       -2.3    0       0       0       -0.072  0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.7     0       0.083   0       5.3     0       0.17    0       0       0       -2.3    0       0       0       -0.072  0       -0.14   0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       0       0       0.17    0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.083   0       0       0       0.17    0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-2.3    0       -0.072  0       0       0       0       0       -2.3    0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       1.6     0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       -0.087  0       0       0       
+DEAL::0       -2.3    0       -0.072  0       0       0       0       0       -2.3    0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       1.6     0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       -0.087  0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       -0.072  0       -2.3    0       -0.072  0       0       0       1.6     0       0       0       0.050   0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.3    0       -0.072  0       -2.3    0       -0.072  0       0       0       1.6     0       0       0       0.050   0       0.12    0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  
+DEAL::-0.072  0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.072  0       0       0       0       0       0       0       -0.072  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -0.072  0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.072  0       0       0       -0.072  0       0       0       0       0       0.050   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.29   0       0       0       -0.14   0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.82   1.3     -0.41   0.67    0       0       0       0       -0.82   1.3     -0.41   0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.57    -0.92   0       0       0.28    -0.46   0.35    -0.58   0       0       0.35    -0.58   0       0       -0.25   0.40    0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    0.67    -1.1    0       0       0       0       1.3     -2.2    0.67    -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.92   1.5     0       0       -0.46   0.75    -0.58   0.94    0       0       -0.58   0.94    0       0       0.40    -0.65   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.14   0       0       0       -0.29   0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.41   0.67    -0.82   1.3     0       0       0       0       -0.41   0.67    -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.28    -0.46   0       0       0.57    -0.92   0.35    -0.58   0       0       0.35    -0.58   0       0       -0.25   0.40    0       0       0       0       
+DEAL::0       0       0       0       0.67    -1.1    1.3     -2.2    0       0       0       0       0.67    -1.1    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.46   0.75    0       0       -0.92   1.5     -0.58   0.94    0       0       -0.58   0.94    0       0       0.40    -0.65   0       0       0       0       
+DEAL::0       0       0       0       -0.82   1.3     -0.82   1.3     0       0       0       0       -0.41   0.67    -0.41   0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.35    -0.58   0       0       0.35    -0.58   0.57    -0.92   0       0       0.28    -0.46   0       0       -0.25   0.40    0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0.67    -1.1    0.67    -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0.94    0       0       -0.58   0.94    -0.92   1.5     0       0       -0.46   0.75    0       0       0.40    -0.65   0       0       0       0       
+DEAL::-0.29   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.29   0       0       0       0       0       0       0       -0.14   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.41   0.67    -0.41   0.67    0       0       0       0       -0.82   1.3     -0.82   1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.35    -0.58   0       0       0.35    -0.58   0.28    -0.46   0       0       0.57    -0.92   0       0       -0.25   0.40    0       0       0       0       
+DEAL::0       0       0       0       0.67    -1.1    0.67    -1.1    0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0.94    0       0       -0.58   0.94    -0.46   0.75    0       0       -0.92   1.5     0       0       0.40    -0.65   0       0       0       0       
+DEAL::-0.14   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.14   0       0       0       0       0       0       0       -0.29   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.35    -0.58   0.35    -0.58   0       0       0       0       0.35    -0.58   0.35    -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.25   0.40    0       0       -0.25   0.40    -0.25   0.40    0       0       -0.25   0.40    0       0       0.17    -0.28   0       0       0       0       
+DEAL::0       0       0       0       -0.58   0.94    -0.58   0.94    0       0       0       0       -0.58   0.94    -0.58   0.94    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.40    -0.65   0       0       0.40    -0.65   0.40    -0.65   0       0       0.40    -0.65   0       0       -0.28   0.45    0       0       0       0       
+DEAL::0.12    0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.12    0       0       0       0       0       0       0       0.12    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.12    0       0       0       0.12    0       0       0       0       0       -0.087  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::M12
+DEAL::-0.17   0       0       0       0       0       0       0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.17   0       0       0       0       0       0       0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-5.3    0       -0.17   0       0       0       0       0       -2.7    0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       -0.12   0       0       0       
+DEAL::0       -5.3    0       -0.17   0       0       0       0       0       -2.7    0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       -0.12   0       0       
+DEAL::0       0       0       0       -1.9    3.1     -0.94   1.5     0       0       0       0       -0.94   1.5     -0.47   0.77    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.82    -1.3    0       0       0.41    -0.67   0.82    -1.3    0       0       0.41    -0.67   0       0       -0.35   0.58    0       0       0       0       
+DEAL::0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       -1.5    2.5     -0.77   1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       0.67    -1.1    1.3     -2.2    0       0       0.67    -1.1    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       -0.94   1.5     -1.9    3.1     0       0       0       0       -0.47   0.77    -0.94   1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.41    -0.67   0       0       0.82    -1.3    0.82    -1.3    0       0       0.41    -0.67   0       0       -0.35   0.58    0       0       0       0       
+DEAL::0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       -0.77   1.2     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.67    -1.1    0       0       1.3     -2.2    1.3     -2.2    0       0       0.67    -1.1    0       0       -0.58   0.94    0       0       0       0       
+DEAL::-0.083  0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.083  0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::-2.7    0       -0.083  0       0       0       0       0       -5.3    0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       -0.12   0       0       0       
+DEAL::0       -2.7    0       -0.083  0       0       0       0       0       -5.3    0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       -0.12   0       0       
+DEAL::0       0       0       0       -0.94   1.5     -0.47   0.77    0       0       0       0       -1.9    3.1     -0.94   1.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.82    -1.3    0       0       0.41    -0.67   0.41    -0.67   0       0       0.82    -1.3    0       0       -0.35   0.58    0       0       0       0       
+DEAL::0       0       0       0       -1.5    2.5     -0.77   1.2     0       0       0       0       -3.1    5.0     -1.5    2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.3     -2.2    0       0       0.67    -1.1    0.67    -1.1    0       0       1.3     -2.2    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       -0.47   0.77    -0.94   1.5     0       0       0       0       -0.94   1.5     -1.9    3.1     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.41    -0.67   0       0       0.82    -1.3    0.41    -0.67   0       0       0.82    -1.3    0       0       -0.35   0.58    0       0       0       0       
+DEAL::0       0       0       0       -0.77   1.2     -1.5    2.5     0       0       0       0       -1.5    2.5     -3.1    5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.67    -1.1    0       0       1.3     -2.2    0.67    -1.1    0       0       1.3     -2.2    0       0       -0.58   0.94    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       -0.083  0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       -0.083  0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -5.3    0       -0.17   0       -2.7    0       -0.083  0       0       0       2.3     0       0       0       0.072   0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -5.3    0       -0.17   0       -2.7    0       -0.083  0       0       0       2.3     0       0       0       0.072   0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       0       0       -0.17   0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       0       0       -0.17   0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    0       -0.083  0       -5.3    0       -0.17   0       0       0       2.3     0       0       0       0.072   0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -2.7    0       -0.083  0       -5.3    0       -0.17   0       0       0       2.3     0       0       0       0.072   0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   
+DEAL::0.072   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.072   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0.072   0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0.072   0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::2.3     0       0.072   0       0       0       0       0       2.3     0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0.087   0       0       0       
+DEAL::0       2.3     0       0.072   0       0       0       0       0       2.3     0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       -1.6    0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0.087   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0.072   0       2.3     0       0.072   0       0       0       -1.6    0       0       0       -0.050  0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       2.3     0       0.072   0       2.3     0       0.072   0       0       0       -1.6    0       0       0       -0.050  0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.82    -1.3    0.41    -0.67   0       0       0       0       0.82    -1.3    0.41    -0.67   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.57   0.92    0       0       -0.28   0.46    -0.35   0.58    0       0       -0.35   0.58    0       0       0.25    -0.40   0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    0.67    -1.1    0       0       0       0       1.3     -2.2    0.67    -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.92   1.5     0       0       -0.46   0.75    -0.58   0.94    0       0       -0.58   0.94    0       0       0.40    -0.65   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.41    -0.67   0.82    -1.3    0       0       0       0       0.41    -0.67   0.82    -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.28   0.46    0       0       -0.57   0.92    -0.35   0.58    0       0       -0.35   0.58    0       0       0.25    -0.40   0       0       0       0       
+DEAL::0       0       0       0       0.67    -1.1    1.3     -2.2    0       0       0       0       0.67    -1.1    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.46   0.75    0       0       -0.92   1.5     -0.58   0.94    0       0       -0.58   0.94    0       0       0.40    -0.65   0       0       0       0       
+DEAL::0       0       0       0       0.82    -1.3    0.82    -1.3    0       0       0       0       0.41    -0.67   0.41    -0.67   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.35   0.58    0       0       -0.35   0.58    -0.57   0.92    0       0       -0.28   0.46    0       0       0.25    -0.40   0       0       0       0       
+DEAL::0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0.67    -1.1    0.67    -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0.94    0       0       -0.58   0.94    -0.92   1.5     0       0       -0.46   0.75    0       0       0.40    -0.65   0       0       0       0       
+DEAL::0.29    0       0       0       0       0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.29    0       0       0       0       0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.41    -0.67   0.41    -0.67   0       0       0       0       0.82    -1.3    0.82    -1.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.35   0.58    0       0       -0.35   0.58    -0.28   0.46    0       0       -0.57   0.92    0       0       0.25    -0.40   0       0       0       0       
+DEAL::0       0       0       0       0.67    -1.1    0.67    -1.1    0       0       0       0       1.3     -2.2    1.3     -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.58   0.94    0       0       -0.58   0.94    -0.46   0.75    0       0       -0.92   1.5     0       0       0.40    -0.65   0       0       0       0       
+DEAL::0.14    0       0       0       0       0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0.14    0       0       0       0       0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.35   0.58    -0.35   0.58    0       0       0       0       -0.35   0.58    -0.35   0.58    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    -0.40   0       0       0.25    -0.40   0.25    -0.40   0       0       0.25    -0.40   0       0       -0.17   0.28    0       0       0       0       
+DEAL::0       0       0       0       -0.58   0.94    -0.58   0.94    0       0       0       0       -0.58   0.94    -0.58   0.94    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.40    -0.65   0       0       0.40    -0.65   0.40    -0.65   0       0       0.40    -0.65   0       0       -0.28   0.45    0       0       0       0       
+DEAL::-0.12   0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       -0.12   0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::M21
+DEAL::-0.17   0       -5.3    0       0       0       0       0       -0.083  0       -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       -0.12   0       0       0       
+DEAL::0       -0.17   0       -5.3    0       0       0       0       0       -0.083  0       -2.7    0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       -0.12   0       0       
+DEAL::0       0       -0.17   0       0       0       0       0       0       0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.17   0       0       0       0       0       0       0       -0.083  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -1.9    -3.1    -0.94   -1.5    0       0       0       0       -0.94   -1.5    -0.47   -0.77   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.82    1.3     0       0       0.41    0.67    0.82    1.3     0       0       0.41    0.67    0       0       -0.35   -0.58   0       0       0       0       
+DEAL::0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       1.5     2.5     0.77    1.2     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -0.67   -1.1    -1.3    -2.2    0       0       -0.67   -1.1    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       -0.94   -1.5    -1.9    -3.1    0       0       0       0       -0.47   -0.77   -0.94   -1.5    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.41    0.67    0       0       0.82    1.3     0.82    1.3     0       0       0.41    0.67    0       0       -0.35   -0.58   0       0       0       0       
+DEAL::0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0.77    1.2     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.67   -1.1    0       0       -1.3    -2.2    -1.3    -2.2    0       0       -0.67   -1.1    0       0       0.58    0.94    0       0       0       0       
+DEAL::-0.083  0       -2.7    0       0       0       0       0       -0.17   0       -5.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       -0.12   0       0       0       
+DEAL::0       -0.083  0       -2.7    0       0       0       0       0       -0.17   0       -5.3    0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       -0.12   0       0       
+DEAL::0       0       -0.083  0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.083  0       0       0       0       0       0       0       -0.17   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.94   -1.5    -0.47   -0.77   0       0       0       0       -1.9    -3.1    -0.94   -1.5    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.82    1.3     0       0       0.41    0.67    0.41    0.67    0       0       0.82    1.3     0       0       -0.35   -0.58   0       0       0       0       
+DEAL::0       0       0       0       1.5     2.5     0.77    1.2     0       0       0       0       3.1     5.0     1.5     2.5     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.3    -2.2    0       0       -0.67   -1.1    -0.67   -1.1    0       0       -1.3    -2.2    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       -0.47   -0.77   -0.94   -1.5    0       0       0       0       -0.94   -1.5    -1.9    -3.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.41    0.67    0       0       0.82    1.3     0.41    0.67    0       0       0.82    1.3     0       0       -0.35   -0.58   0       0       0       0       
+DEAL::0       0       0       0       0.77    1.2     1.5     2.5     0       0       0       0       1.5     2.5     3.1     5.0     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.67   -1.1    0       0       -1.3    -2.2    -0.67   -1.1    0       0       -1.3    -2.2    0       0       0.58    0.94    0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       -5.3    0       -0.083  0       -2.7    0       0       0       0.072   0       0       0       2.3     0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       -5.3    0       -0.083  0       -2.7    0       0       0       0.072   0       0       0       2.3     0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       -0.083  0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.17   0       0       0       -0.083  0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       -2.7    0       -0.17   0       -5.3    0       0       0       0.072   0       0       0       2.3     0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       -2.7    0       -0.17   0       -5.3    0       0       0       0.072   0       0       0       2.3     0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       0       0       -0.17   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.083  0       0       0       -0.17   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0.072   0       2.3     0       0       0       0       0       0.072   0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       -1.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0.087   0       0       0       
+DEAL::0       0.072   0       2.3     0       0       0       0       0       0.072   0       2.3     0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       -1.6    0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0.087   0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       2.3     0       0.072   0       2.3     0       0       0       -0.050  0       0       0       -1.6    0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       2.3     0       0.072   0       2.3     0       0       0       -0.050  0       0       0       -1.6    0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   
+DEAL::0       0       0.072   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.072   0       0       0       0       0       0       0       0.072   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0.072   0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.072   0       0       0       0.072   0       0       0       0       0       0       0       -0.050  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.29    0       0       0       0.14    0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.82    1.3     0.41    0.67    0       0       0       0       0.82    1.3     0.41    0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.57   -0.92   0       0       -0.28   -0.46   -0.35   -0.58   0       0       -0.35   -0.58   0       0       0.25    0.40    0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -0.67   -1.1    0       0       0       0       -1.3    -2.2    -0.67   -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.92    1.5     0       0       0.46    0.75    0.58    0.94    0       0       0.58    0.94    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.14    0       0       0       0.29    0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.41    0.67    0.82    1.3     0       0       0       0       0.41    0.67    0.82    1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.28   -0.46   0       0       -0.57   -0.92   -0.35   -0.58   0       0       -0.35   -0.58   0       0       0.25    0.40    0       0       0       0       
+DEAL::0       0       0       0       -0.67   -1.1    -1.3    -2.2    0       0       0       0       -0.67   -1.1    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.46    0.75    0       0       0.92    1.5     0.58    0.94    0       0       0.58    0.94    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0       0       0.82    1.3     0.82    1.3     0       0       0       0       0.41    0.67    0.41    0.67    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.35   -0.58   0       0       -0.35   -0.58   -0.57   -0.92   0       0       -0.28   -0.46   0       0       0.25    0.40    0       0       0       0       
+DEAL::0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       -0.67   -1.1    -0.67   -1.1    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.58    0.94    0       0       0.58    0.94    0.92    1.5     0       0       0.46    0.75    0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0.29    0       0       0       0       0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.29    0       0       0       0       0       0       0       0.14    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0.41    0.67    0.41    0.67    0       0       0       0       0.82    1.3     0.82    1.3     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.35   -0.58   0       0       -0.35   -0.58   -0.28   -0.46   0       0       -0.57   -0.92   0       0       0.25    0.40    0       0       0       0       
+DEAL::0       0       0       0       -0.67   -1.1    -0.67   -1.1    0       0       0       0       -1.3    -2.2    -1.3    -2.2    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.58    0.94    0       0       0.58    0.94    0.46    0.75    0       0       0.92    1.5     0       0       -0.40   -0.65   0       0       0       0       
+DEAL::0       0       0.14    0       0       0       0       0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0.14    0       0       0       0       0       0       0       0.29    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       -0.35   -0.58   -0.35   -0.58   0       0       0       0       -0.35   -0.58   -0.35   -0.58   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.25    0.40    0       0       0.25    0.40    0.25    0.40    0       0       0.25    0.40    0       0       -0.17   -0.28   0       0       0       0       
+DEAL::0       0       0       0       0.58    0.94    0.58    0.94    0       0       0       0       0.58    0.94    0.58    0.94    0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.40   -0.65   0       0       -0.40   -0.65   -0.40   -0.65   0       0       -0.40   -0.65   0       0       0.28    0.45    0       0       0       0       
+DEAL::0       0       -0.12   0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       -0.12   0       0       0       0       0       0       0       -0.12   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.12   0       0       0       -0.12   0       0       0       0       0       0       0       0.087   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       
+DEAL::Residuals 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
diff --git a/tests/lac/constraints_c1.cc b/tests/lac/constraints_c1.cc
new file mode 100644 (file)
index 0000000..7ad414b
--- /dev/null
@@ -0,0 +1,160 @@
+/**********************************************************************
+ * $Id: constraint_test.cc -1   $
+ *
+ * Copyright Guido Kanschat, 2010, 2012
+ *
+ **********************************************************************/
+
+// H2-elements implemented through constraints on the degrees of
+// freedom. After adding all constrained lines, the program hangs in
+// constraints.close().
+// This is because it contains a cycle. The test now checks that this
+// is detected.
+
+
+#include <deal.II/base/job_identifier.h>
+#include <deal.II/grid/grid_generator.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+
+using namespace dealii;
+
+template <int dim>
+void
+setup_constraints(const DoFHandler<dim>& dof_handler)
+{
+  ConstraintMatrix     constraints;
+  constraints.clear();
+  const FiniteElement<dim>& fe = dof_handler.get_fe();
+  
+                                  // Set up derivative constraints to
+                                  // make element C1
+  std::vector<std::vector<std::vector<double> > > vertex_constraints(
+    GeometryInfo<dim>::vertices_per_cell, std::vector<std::vector<double> >(
+      dim+1, std::vector<double>(fe.dofs_per_cell, 0.)));
+  
+  for (unsigned int vertex=0;vertex<GeometryInfo<dim>::vertices_per_cell;++vertex)
+    {
+      Point<dim> v;
+      for (unsigned int d=0;d<dim;++d)
+       {
+         const unsigned int ds = 1<<d;
+         const unsigned int id = vertex/ds;
+         v[d] = (id%2 != 0) ? 1. : 0.;
+       }
+      
+      for (unsigned int j=0;j<fe.dofs_per_cell;++j)
+       {
+         for (unsigned int d=0;d<dim;++d)
+           {
+             const double f = fe.shape_grad(j,v)[d];
+             if (std::fabs(f) > 1.e-12)
+               vertex_constraints[vertex][d][j] = f;
+           }
+         const double f = fe.shape_grad_grad(j,v)[0][1];
+         if (std::fabs(f) > 1.e-12)
+           vertex_constraints[vertex][dim][j] = f;
+       }      
+    }
+  
+  std::vector<unsigned int> cell_indices(fe.dofs_per_cell);
+  std::vector<unsigned int> neighbor_indices(fe.dofs_per_cell);
+  
+  for (typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active();
+       cell != dof_handler.end();++cell)
+    {
+      deallog << "New cell" << std::endl;
+      
+      cell->get_dof_indices(cell_indices);
+      
+                                      // Do lower left and upper
+                                      // right vertex
+      for (unsigned int face=0;face<GeometryInfo<dim>::faces_per_cell;face+=2)
+      {
+       if (cell->at_boundary(face)) continue;
+       for (unsigned int fvertex=0;fvertex<GeometryInfo<dim>::vertices_per_face;++fvertex)
+           {
+             const unsigned int other_face = (face==0) ? (2+fvertex) : fvertex;
+             if (cell->at_boundary(other_face)) continue;
+             
+             const unsigned int vertex = GeometryInfo<dim>::face_to_cell_vertices(face, fvertex);
+             typename DoFHandler<dim>::active_cell_iterator neighbor = cell->neighbor(other_face);
+             const unsigned int neighbor_face = cell->neighbor_of_neighbor(other_face);
+             neighbor->get_dof_indices(neighbor_indices);
+             unsigned int neighbor_vertex = GeometryInfo<dim>::face_to_cell_vertices(neighbor_face, fvertex);
+             
+             const unsigned int d = GeometryInfo<dim>::unit_normal_direction[other_face];
+             
+             std::vector<std::pair<unsigned int, double> > rhs;
+             const unsigned int constrained = fe.face_to_cell_index(
+               (fvertex == 0) ? 2 : fe.dofs_per_face-1, face);
+             double constrained_weight = 0.;
+             
+             for (unsigned int i=0;i<fe.dofs_per_cell;++i)
+               {
+                 if (i == constrained)
+                   constrained_weight = vertex_constraints[vertex][d][i];
+                 else
+                   if (vertex_constraints[vertex][d][i] != 0.)
+                     rhs.push_back(std::make_pair(cell_indices[i], -vertex_constraints[vertex][d][i]));
+                 if (vertex_constraints[neighbor_vertex][d][i] != 0.)
+                   rhs.push_back(std::make_pair(neighbor_indices[i], vertex_constraints[neighbor_vertex][d][i]));
+               }
+             deallog << " v" << vertex
+                     << " f" << face
+                     << " o" << other_face
+                     << " d" << d
+                     << " l" << constrained
+                     << " g" << cell_indices[constrained]
+//                   << " w " << constrained_weight
+                     << " rhs ";
+             for (unsigned int i=0;i<rhs.size();++i)
+               deallog << ' ' << rhs[i].first;
+             deallog << std::endl;
+             for (unsigned int i=0;i<rhs.size();++i)
+               rhs[i].second /= constrained_weight;
+             constraints.add_line(cell_indices[constrained]);
+             constraints.add_entries(cell_indices[constrained], rhs);
+           }
+       }
+    }
+
+  deallog << "Closing" << std::endl;
+  deal_II_exceptions::disable_abort_on_exception();
+  constraints.close();
+  deallog << "Closed" << std::endl;
+}
+
+
+template <int dim>
+void
+run(const FiniteElement<dim>& fe)
+{
+  deallog << "Element: " << fe.get_name() << std::endl;
+
+  Triangulation<dim> triangulation;
+  GridGenerator::hyper_cube (triangulation, -1, 1);
+  triangulation.refine_global(2);
+  deallog << "Triangulation "
+         << triangulation.n_active_cells() << " cells, "
+         << triangulation.n_levels() << " levels" << std::endl;
+  DoFHandler<dim> dof_handler(triangulation);
+  dof_handler.distribute_dofs(fe);
+  setup_constraints (dof_handler);  
+}
+
+
+int main()
+{
+  const std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);
+  
+  FE_Q<2> fe(3);
+  run(fe);
+}
diff --git a/tests/lac/constraints_c1/cmp/generic b/tests/lac/constraints_c1/cmp/generic
new file mode 100644 (file)
index 0000000..227ad2e
--- /dev/null
@@ -0,0 +1,58 @@
+
+DEAL::Element: FE_Q<2>(3)
+DEAL::Triangulation 16 cells, 3 levels
+DEAL::New cell
+DEAL::New cell
+DEAL:: v2 f0 o3 d1 l5 g7 rhs  1 17 3 40 6 41 42
+DEAL::New cell
+DEAL:: v1 f2 o1 d0 l9 g11 rhs  2 3 29 40 10 43 44
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g32 rhs  3 1 29 3 6 33 7
+DEAL:: v2 f0 o3 d1 l5 g33 rhs  3 40 29 103 32 104 105
+DEAL:: v0 f2 o0 d0 l8 g22 rhs  3 2 17 3 10 23 11
+DEAL:: v1 f2 o1 d0 l9 g23 rhs  3 17 40 73 22 76 77
+DEAL::New cell
+DEAL:: v2 f0 o3 d1 l5 g19 rhs  16 50 17 73 18 74 75
+DEAL::New cell
+DEAL:: v2 f0 o3 d1 l5 g52 rhs  49 62 50 82 51 83 84
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g41 rhs  17 16 40 17 18 42 19
+DEAL:: v2 f0 o3 d1 l5 g42 rhs  17 73 40 133 41 134 135
+DEAL:: v0 f2 o0 d0 l8 g55 rhs  17 3 50 17 22 56 23
+DEAL:: v1 f2 o1 d0 l9 g56 rhs  17 50 73 82 55 85 86
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g74 rhs  50 49 73 50 51 75 52
+DEAL:: v2 f0 o3 d1 l5 g75 rhs  50 82 73 142 74 143 144
+DEAL:: v0 f2 o0 d0 l8 g67 rhs  50 17 62 50 55 68 56
+DEAL::New cell
+DEAL:: v1 f2 o1 d0 l9 g35 rhs  28 29 92 103 34 106 107
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g95 rhs  29 3 92 29 32 96 33
+DEAL:: v2 f0 o3 d1 l5 g96 rhs  29 103 92 124 95 125 126
+DEAL:: v0 f2 o0 d0 l8 g43 rhs  29 28 40 29 34 44 35
+DEAL:: v1 f2 o1 d0 l9 g44 rhs  29 40 103 133 43 136 137
+DEAL::New cell
+DEAL:: v1 f2 o1 d0 l9 g98 rhs  91 92 113 124 97 127 128
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g116 rhs  92 29 113 92 95 117 96
+DEAL:: v0 f2 o0 d0 l8 g106 rhs  92 91 103 92 97 107 98
+DEAL:: v1 f2 o1 d0 l9 g107 rhs  92 103 124 151 106 154 155
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g104 rhs  40 17 103 40 41 105 42
+DEAL:: v2 f0 o3 d1 l5 g105 rhs  40 133 103 151 104 152 153
+DEAL:: v0 f2 o0 d0 l8 g76 rhs  40 29 73 40 43 77 44
+DEAL:: v1 f2 o1 d0 l9 g77 rhs  40 73 133 142 76 145 146
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g134 rhs  73 50 133 73 74 135 75
+DEAL:: v2 f0 o3 d1 l5 g135 rhs  73 142 133 160 134 161 162
+DEAL:: v0 f2 o0 d0 l8 g85 rhs  73 40 82 73 76 86 77
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g125 rhs  103 40 124 103 104 126 105
+DEAL:: v0 f2 o0 d0 l8 g136 rhs  103 92 133 103 106 137 107
+DEAL:: v1 f2 o1 d0 l9 g137 rhs  103 133 151 160 136 163 164
+DEAL::New cell
+DEAL:: v0 f0 o2 d1 l4 g152 rhs  133 73 151 133 134 153 135
+DEAL:: v0 f2 o0 d0 l8 g145 rhs  133 103 142 133 136 146 137
+DEAL::Closing
+DEAL::ExcMessage("Cycle in constraints detected!")
+DEAL::Closed
diff --git a/tests/lac/constraints_c1_02.cc b/tests/lac/constraints_c1_02.cc
new file mode 100644 (file)
index 0000000..09f2512
--- /dev/null
@@ -0,0 +1,66 @@
+/**********************************************************************
+ * $Id: constraint_test.cc -1   $
+ *
+ * Copyright Guido Kanschat, 2010, 2012
+ *
+ **********************************************************************/
+
+// reduced test case from constraint_c1.cc, causes a hang in close()
+
+
+#include <deal.II/base/job_identifier.h>
+#include <deal.II/lac/constraint_matrix.h>
+
+#include <vector>
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+
+using namespace dealii;
+
+
+
+void
+run()
+{
+  ConstraintMatrix     constraints;
+
+  {
+  constraints.add_line(7);
+  std::vector<std::pair<unsigned int, double> > rhs;
+  rhs.push_back(std::pair<unsigned int, double>(41,1.0));
+  rhs.push_back(std::pair<unsigned int, double>(42,1.0));
+  constraints.add_entries(7, rhs);
+  }
+
+  {
+  constraints.add_line(41);
+  std::vector<std::pair<unsigned int, double> > rhs;
+  rhs.push_back(std::pair<unsigned int, double>(42,1.0));
+  constraints.add_entries(41, rhs);
+  }
+
+  {
+  constraints.add_line(42);
+  std::vector<std::pair<unsigned int, double> > rhs;
+  rhs.push_back(std::pair<unsigned int, double>(41,1.0));
+  constraints.add_entries(42, rhs);
+  }
+
+  deallog << "Closing" << std::endl;
+  deal_II_exceptions::disable_abort_on_exception();
+  constraints.close();
+
+  deallog << "Closed" << std::endl;
+
+}
+
+
+int main()
+{
+  const std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);
+  
+  run();
+}
diff --git a/tests/lac/constraints_c1_02/cmp/generic b/tests/lac/constraints_c1_02/cmp/generic
new file mode 100644 (file)
index 0000000..43dd6a4
--- /dev/null
@@ -0,0 +1,4 @@
+
+DEAL::Closing
+DEAL::ExcMessage("Cycle in constraints detected!")
+DEAL::Closed
diff --git a/tests/lac/identity_matrix_06.cc b/tests/lac/identity_matrix_06.cc
new file mode 100644 (file)
index 0000000..4478492
--- /dev/null
@@ -0,0 +1,81 @@
+//---------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2005, 2006, 2012 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//---------------------------------------------------------------------------
+
+// check assignment from IdentityMatrix to FullMatrix using the syntax
+//     FullMatrix<number> M = IdentityMatrix(4);
+// this didn't work initially because the copy constructor in FullMatrix
+// was explicit; however, in hindsight, I can't see a good reason for
+// it to be explicit.
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/identity_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+void
+check_vmult()
+{
+  FullMatrix<number> M = IdentityMatrix(4);
+  Vector<number> u(4);
+  Vector<number> v(4);
+
+  for (unsigned int i=0;i<4;++i)
+    u(i) = i+1;
+
+  M.vmult(v,u);
+  Assert (v == u, ExcInternalError());
+  for (unsigned int i=0;i<v.size();++i)
+    deallog << ' ' << v(i);
+  deallog << std::endl;
+
+  M.vmult_add(v,u);
+  v /= 2;
+  Assert (v == u, ExcInternalError());
+  for (unsigned int i=0;i<v.size();++i)
+    deallog << ' ' << v(i);
+  deallog << std::endl;
+
+  M.Tvmult(v,u);
+  Assert (v == u, ExcInternalError());
+  for (unsigned int i=0;i<v.size();++i)
+    deallog << ' ' << v(i);
+  deallog << std::endl;
+
+  M.Tvmult_add(v,u);
+  v /= 2;
+  Assert (v == u, ExcInternalError());
+  for (unsigned int i=0;i<v.size();++i)
+    deallog << ' ' << v(i);
+  deallog << std::endl;
+}
+
+
+int main()
+{
+  std::ofstream logfile("identity_matrix_06/output");
+  logfile.setf(std::ios::fixed);
+  deallog << std::setprecision(0);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  check_vmult<double>();
+  check_vmult<float>();
+}
diff --git a/tests/lac/identity_matrix_06/cmp/generic b/tests/lac/identity_matrix_06/cmp/generic
new file mode 100644 (file)
index 0000000..29bcfce
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
+DEAL:: 1. 2. 3. 4.
index f942ffd0268e33a9e092fbe3ed4dc67b87134cc7..b859b07386ba30edb35fc376aee97aaa7bb7415e 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index dce1bb24e1b01fd9b63096d4582c1384decf4b70..88574b441745e77a9c80e52108319318fc36ef1b 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 8c26693f5f7d0b0c56a9bb9a835580777883bda8..b16236eb0d4409529de13a513cbc08f81f509b07 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 9e2042debfcaf18127d3ff338d02d001a7ad5d07..e7151a8cd2801550e485ebb00f86819037511568 100644 (file)
@@ -13,7 +13,7 @@
 
 #include "../tests.h"
 #include <deal.II/fe/fe_q_hierarchical.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/base/function.h>
 
 std::ofstream logfile("get_functions_q_hierarchical/output");
index 5c97f82bb2f05e4d97f56e61012a79ef7d7b94b2..9957614feba54c42995d97d8f188c63192cf5227 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 73cf3a85da6f8f28eff3150f6a17172008b6647e..82801e4b39b9d1f19e333690eaa4e587b0bab997 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index d8788de6220fb434efc6ff669c39cb11054ba994..87d74d8da4fbb966a8ff934afca530b134a82393 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index 6af0e155aa8a72ebb7597fbc5366a2f8ef87e47a..543cf37764ee13a6769842903a2dbecb6b88c86f 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include "create_mesh.h"
 
index 054e084812563cb8ef9696430268320633bd5045..4f27266f2a8904ef26fd198205cea8d4c4b2d090 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index 6a8f53b32d8630d40180023531bbadc6d32a70b4..6b0fcdd61f7d776b4db325a391d787b742f107dd 100644 (file)
@@ -33,7 +33,7 @@ std::ofstream logfile("matrix_vector_curl/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 4ecf10ca7dcc32ad4d44dc485b42aa6a297b7f17..aeaa39bcb6cfcf60aa7f48204db7642907e32417 100644 (file)
@@ -33,7 +33,7 @@ std::ofstream logfile("matrix_vector_div/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 5c81f3effa7735bb383f1a6d569bba97d3b4ce06..da14dd41490bd963443b3655fccadb1470f9a9ee 100644 (file)
@@ -32,7 +32,7 @@ std::ofstream logfile("matrix_vector_stokes/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include "create_mesh.h"
 
index 6c58266926395066d07c77a1c5393b71e4322b6d..13b369fe3ae797d4bc0bde937576df352b8ed7e3 100644 (file)
@@ -33,7 +33,7 @@ std::ofstream logfile("matrix_vector_stokes_noflux/output");
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index 99c3b98af88fe8bcd4a386720594f2c73be26aeb..4101ad2c84f28a95f13abb18e84fcb7d57976fec 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <iostream>
index c935ea726799563352a253c4a65b15691e616b25..c88e598d33c68ab698abda7c0877dbcf16418def 100644 (file)
@@ -89,5 +89,7 @@ clean:
        -rm -f Makefile.dep *.$(OBJEXT) \
                *.g.$(OBJEXT) *.output *~ *.OK *.cc *.ucd *.log
 
+summary:
+       @printf "not implemented\n"
 
-.PHONY: report clean distclean all default report report+mail
+.PHONY: report clean distclean all default report report+mail summary
index 8e189d174724238713e9da0abdbbbb2c8f67840e..91bf1eac2d7071a3993eef6efd03220e4c68febe 100644 (file)
 
 DEAL::RECURSIVE
-DEAL::4.0 3
-DEAL::4.1 3
-DEAL::4.2 3
-DEAL::4.3 4
-DEAL::4.4 4
-DEAL::4.5 4
-DEAL::4.6 4
+DEAL::4.0 0
+DEAL::4.1 0
+DEAL::4.2 0
+DEAL::4.3 0
+DEAL::4.4 1
+DEAL::4.5 1
+DEAL::4.6 1
 DEAL::4.7 2
 DEAL::4.8 2
 DEAL::4.9 2
-DEAL::4.10 1
-DEAL::4.11 1
-DEAL::4.12 1
-DEAL::4.13 0
-DEAL::4.14 0
-DEAL::4.15 0
+DEAL::4.10 4
+DEAL::4.11 4
+DEAL::4.12 4
+DEAL::4.13 3
+DEAL::4.14 3
+DEAL::4.15 3
 DEAL::K-WAY
 DEAL::4.0 7
-DEAL::4.1 7
-DEAL::4.2 8
+DEAL::4.1 8
+DEAL::4.2 6
 DEAL::4.3 6
-DEAL::4.4 6
-DEAL::4.5 1
-DEAL::4.6 1
-DEAL::4.7 0
+DEAL::4.4 4
+DEAL::4.5 4
+DEAL::4.6 5
+DEAL::4.7 5
 DEAL::4.8 2
 DEAL::4.9 2
 DEAL::4.10 3
 DEAL::4.11 3
-DEAL::4.12 4
-DEAL::4.13 4
-DEAL::4.14 5
-DEAL::4.15 5
+DEAL::4.12 1
+DEAL::4.13 1
+DEAL::4.14 0
+DEAL::4.15 0
 DEAL::RECURSIVE
-DEAL::3.0 3
-DEAL::3.1 3
-DEAL::3.2 0
-DEAL::3.3 3
-DEAL::3.4 3
-DEAL::3.5 3
-DEAL::3.6 3
-DEAL::3.7 3
-DEAL::3.8 0
-DEAL::3.9 0
-DEAL::3.10 0
-DEAL::3.11 0
-DEAL::3.12 3
-DEAL::3.13 3
-DEAL::3.14 0
-DEAL::3.15 3
-DEAL::3.16 3
-DEAL::3.17 3
-DEAL::3.18 3
-DEAL::3.19 4
-DEAL::3.20 4
-DEAL::3.21 4
-DEAL::3.22 4
-DEAL::3.23 4
-DEAL::3.24 4
-DEAL::3.25 4
-DEAL::3.26 4
-DEAL::3.27 4
-DEAL::3.28 4
-DEAL::3.29 4
-DEAL::3.30 4
-DEAL::3.31 4
-DEAL::3.32 0
-DEAL::3.33 0
-DEAL::3.34 0
-DEAL::3.35 0
-DEAL::3.36 0
-DEAL::3.37 1
-DEAL::3.38 1
-DEAL::3.39 1
-DEAL::3.40 0
-DEAL::3.41 1
-DEAL::3.42 1
-DEAL::3.43 1
-DEAL::3.44 1
-DEAL::3.45 1
-DEAL::3.46 1
-DEAL::3.47 1
-DEAL::3.48 2
-DEAL::3.49 2
-DEAL::3.50 1
-DEAL::3.51 2
-DEAL::3.52 2
-DEAL::3.53 2
-DEAL::3.54 2
-DEAL::3.55 2
-DEAL::3.56 1
-DEAL::3.57 2
-DEAL::3.58 1
-DEAL::3.59 2
-DEAL::3.60 2
-DEAL::3.61 2
-DEAL::3.62 2
-DEAL::3.63 2
-DEAL::K-WAY
-DEAL::3.0 0
-DEAL::3.1 0
-DEAL::3.2 5
-DEAL::3.3 5
-DEAL::3.4 0
-DEAL::3.5 4
-DEAL::3.6 5
-DEAL::3.7 4
-DEAL::3.8 0
-DEAL::3.9 0
-DEAL::3.10 0
-DEAL::3.11 0
-DEAL::3.12 5
-DEAL::3.13 5
-DEAL::3.14 1
-DEAL::3.15 3
-DEAL::3.16 4
-DEAL::3.17 4
-DEAL::3.18 4
-DEAL::3.19 4
-DEAL::3.20 4
-DEAL::3.21 6
-DEAL::3.22 6
-DEAL::3.23 6
-DEAL::3.24 4
-DEAL::3.25 4
-DEAL::3.26 7
-DEAL::3.27 7
-DEAL::3.28 6
-DEAL::3.29 6
-DEAL::3.30 6
-DEAL::3.31 6
-DEAL::3.32 1
-DEAL::3.33 1
-DEAL::3.34 2
-DEAL::3.35 1
-DEAL::3.36 1
+DEAL::3.0 4
+DEAL::3.1 4
+DEAL::3.2 4
+DEAL::3.3 4
+DEAL::3.4 2
+DEAL::3.5 2
+DEAL::3.6 2
+DEAL::3.7 2
+DEAL::3.8 4
+DEAL::3.9 4
+DEAL::3.10 4
+DEAL::3.11 4
+DEAL::3.12 2
+DEAL::3.13 2
+DEAL::3.14 4
+DEAL::3.15 2
+DEAL::3.16 2
+DEAL::3.17 2
+DEAL::3.18 2
+DEAL::3.19 2
+DEAL::3.20 2
+DEAL::3.21 0
+DEAL::3.22 0
+DEAL::3.23 0
+DEAL::3.24 2
+DEAL::3.25 0
+DEAL::3.26 0
+DEAL::3.27 0
+DEAL::3.28 0
+DEAL::3.29 0
+DEAL::3.30 0
+DEAL::3.31 0
+DEAL::3.32 4
+DEAL::3.33 4
+DEAL::3.34 4
+DEAL::3.35 3
+DEAL::3.36 3
 DEAL::3.37 3
-DEAL::3.38 1
+DEAL::3.38 3
 DEAL::3.39 3
-DEAL::3.40 2
-DEAL::3.41 1
-DEAL::3.42 2
-DEAL::3.43 2
-DEAL::3.44 2
+DEAL::3.40 3
+DEAL::3.41 3
+DEAL::3.42 3
+DEAL::3.43 3
+DEAL::3.44 3
 DEAL::3.45 3
-DEAL::3.46 2
+DEAL::3.46 3
 DEAL::3.47 3
+DEAL::3.48 1
+DEAL::3.49 0
+DEAL::3.50 1
+DEAL::3.51 1
+DEAL::3.52 0
+DEAL::3.53 0
+DEAL::3.54 1
+DEAL::3.55 1
+DEAL::3.56 1
+DEAL::3.57 1
+DEAL::3.58 3
+DEAL::3.59 1
+DEAL::3.60 1
+DEAL::3.61 1
+DEAL::3.62 1
+DEAL::3.63 1
+DEAL::K-WAY
+DEAL::3.0 6
+DEAL::3.1 6
+DEAL::3.2 6
+DEAL::3.3 6
+DEAL::3.4 6
+DEAL::3.5 8
+DEAL::3.6 7
+DEAL::3.7 8
+DEAL::3.8 6
+DEAL::3.9 6
+DEAL::3.10 4
+DEAL::3.11 4
+DEAL::3.12 7
+DEAL::3.13 8
+DEAL::3.14 7
+DEAL::3.15 5
+DEAL::3.16 8
+DEAL::3.17 8
+DEAL::3.18 8
+DEAL::3.19 8
+DEAL::3.20 0
+DEAL::3.21 0
+DEAL::3.22 0
+DEAL::3.23 0
+DEAL::3.24 5
+DEAL::3.25 0
+DEAL::3.26 7
+DEAL::3.27 0
+DEAL::3.28 1
+DEAL::3.29 0
+DEAL::3.30 1
+DEAL::3.31 1
+DEAL::3.32 4
+DEAL::3.33 4
+DEAL::3.34 5
+DEAL::3.35 2
+DEAL::3.36 4
+DEAL::3.37 7
+DEAL::3.38 2
+DEAL::3.39 2
+DEAL::3.40 4
+DEAL::3.41 4
+DEAL::3.42 5
+DEAL::3.43 5
+DEAL::3.44 5
+DEAL::3.45 2
+DEAL::3.46 5
+DEAL::3.47 2
 DEAL::3.48 7
 DEAL::3.49 7
-DEAL::3.50 3
-DEAL::3.51 7
-DEAL::3.52 7
-DEAL::3.53 6
-DEAL::3.54 8
-DEAL::3.55 6
-DEAL::3.56 8
-DEAL::3.57 8
+DEAL::3.50 7
+DEAL::3.51 3
+DEAL::3.52 1
+DEAL::3.53 1
+DEAL::3.54 1
+DEAL::3.55 1
+DEAL::3.56 2
+DEAL::3.57 2
 DEAL::3.58 3
-DEAL::3.59 8
-DEAL::3.60 8
-DEAL::3.61 8
-DEAL::3.62 8
-DEAL::3.63 8
+DEAL::3.59 3
+DEAL::3.60 3
+DEAL::3.61 3
+DEAL::3.62 3
+DEAL::3.63 3
 DEAL::RECURSIVE
-DEAL::2.0 3
-DEAL::2.1 0
-DEAL::2.2 0
-DEAL::2.3 0
-DEAL::2.4 3
-DEAL::2.5 3
-DEAL::2.6 3
-DEAL::2.7 0
-DEAL::2.8 1
-DEAL::2.9 1
-DEAL::2.10 0
-DEAL::2.11 1
-DEAL::2.12 1
-DEAL::2.13 1
-DEAL::2.14 1
-DEAL::2.15 1
-DEAL::2.16 0
-DEAL::2.17 0
-DEAL::2.18 0
-DEAL::2.19 0
-DEAL::2.20 4
-DEAL::2.21 0
-DEAL::2.22 4
-DEAL::2.23 4
-DEAL::2.24 0
-DEAL::2.25 1
-DEAL::2.26 0
-DEAL::2.27 1
-DEAL::2.28 1
-DEAL::2.29 1
-DEAL::2.30 1
-DEAL::2.31 1
-DEAL::2.32 3
-DEAL::2.33 3
-DEAL::2.34 3
-DEAL::2.35 3
-DEAL::2.36 3
-DEAL::2.37 3
-DEAL::2.38 3
-DEAL::2.39 3
-DEAL::2.40 2
-DEAL::2.41 2
-DEAL::2.42 2
-DEAL::2.43 2
-DEAL::2.44 2
-DEAL::2.45 2
-DEAL::2.46 2
-DEAL::2.47 2
-DEAL::2.48 4
-DEAL::2.49 4
-DEAL::2.50 4
-DEAL::2.51 4
-DEAL::2.52 3
-DEAL::2.53 4
-DEAL::2.54 4
-DEAL::2.55 4
-DEAL::2.56 2
-DEAL::2.57 2
-DEAL::2.58 4
-DEAL::2.59 4
-DEAL::2.60 2
-DEAL::2.61 2
-DEAL::2.62 4
-DEAL::2.63 2
-DEAL::K-WAY
 DEAL::2.0 2
 DEAL::2.1 2
-DEAL::2.2 5
+DEAL::2.2 2
 DEAL::2.3 2
-DEAL::2.4 1
+DEAL::2.4 2
 DEAL::2.5 2
-DEAL::2.6 5
-DEAL::2.7 0
+DEAL::2.6 2
+DEAL::2.7 2
 DEAL::2.8 2
 DEAL::2.9 2
 DEAL::2.10 2
-DEAL::2.11 2
-DEAL::2.12 0
-DEAL::2.13 3
+DEAL::2.11 0
+DEAL::2.12 2
+DEAL::2.13 0
 DEAL::2.14 0
-DEAL::2.15 3
-DEAL::2.16 4
-DEAL::2.17 4
-DEAL::2.18 4
-DEAL::2.19 4
+DEAL::2.15 0
+DEAL::2.16 3
+DEAL::2.17 3
+DEAL::2.18 3
+DEAL::2.19 3
+DEAL::2.20 3
+DEAL::2.21 3
+DEAL::2.22 3
+DEAL::2.23 3
+DEAL::2.24 0
+DEAL::2.25 0
+DEAL::2.26 0
+DEAL::2.27 0
+DEAL::2.28 0
+DEAL::2.29 0
+DEAL::2.30 0
+DEAL::2.31 0
+DEAL::2.32 4
+DEAL::2.33 4
+DEAL::2.34 4
+DEAL::2.35 4
+DEAL::2.36 4
+DEAL::2.37 4
+DEAL::2.38 4
+DEAL::2.39 4
+DEAL::2.40 2
+DEAL::2.41 1
+DEAL::2.42 1
+DEAL::2.43 1
+DEAL::2.44 4
+DEAL::2.45 1
+DEAL::2.46 4
+DEAL::2.47 1
+DEAL::2.48 3
+DEAL::2.49 3
+DEAL::2.50 3
+DEAL::2.51 3
+DEAL::2.52 4
+DEAL::2.53 4
+DEAL::2.54 4
+DEAL::2.55 3
+DEAL::2.56 1
+DEAL::2.57 1
+DEAL::2.58 1
+DEAL::2.59 1
+DEAL::2.60 1
+DEAL::2.61 1
+DEAL::2.62 1
+DEAL::2.63 1
+DEAL::K-WAY
+DEAL::2.0 5
+DEAL::2.1 4
+DEAL::2.2 4
+DEAL::2.3 2
+DEAL::2.4 1
+DEAL::2.5 4
+DEAL::2.6 1
+DEAL::2.7 4
+DEAL::2.8 7
+DEAL::2.9 7
+DEAL::2.10 7
+DEAL::2.11 7
+DEAL::2.12 4
+DEAL::2.13 7
+DEAL::2.14 5
+DEAL::2.15 7
+DEAL::2.16 5
+DEAL::2.17 2
+DEAL::2.18 0
+DEAL::2.19 2
 DEAL::2.20 5
-DEAL::2.21 4
-DEAL::2.22 5
-DEAL::2.23 5
-DEAL::2.24 4
-DEAL::2.25 4
-DEAL::2.26 4
-DEAL::2.27 7
-DEAL::2.28 7
-DEAL::2.29 8
-DEAL::2.30 7
-DEAL::2.31 7
-DEAL::2.32 1
-DEAL::2.33 0
-DEAL::2.34 5
+DEAL::2.21 5
+DEAL::2.22 0
+DEAL::2.23 0
+DEAL::2.24 7
+DEAL::2.25 2
+DEAL::2.26 2
+DEAL::2.27 2
+DEAL::2.28 4
+DEAL::2.29 2
+DEAL::2.30 3
+DEAL::2.31 2
+DEAL::2.32 6
+DEAL::2.33 3
+DEAL::2.34 0
 DEAL::2.35 0
-DEAL::2.36 1
-DEAL::2.37 1
-DEAL::2.38 1
-DEAL::2.39 0
-DEAL::2.40 0
-DEAL::2.41 3
-DEAL::2.42 0
-DEAL::2.43 3
-DEAL::2.44 3
-DEAL::2.45 3
-DEAL::2.46 0
-DEAL::2.47 3
-DEAL::2.48 5
-DEAL::2.49 6
-DEAL::2.50 6
-DEAL::2.51 6
+DEAL::2.36 6
+DEAL::2.37 6
+DEAL::2.38 6
+DEAL::2.39 6
+DEAL::2.40 5
+DEAL::2.41 4
+DEAL::2.42 5
+DEAL::2.43 8
+DEAL::2.44 8
+DEAL::2.45 8
+DEAL::2.46 6
+DEAL::2.47 6
+DEAL::2.48 0
+DEAL::2.49 0
+DEAL::2.50 1
+DEAL::2.51 3
 DEAL::2.52 1
-DEAL::2.53 6
-DEAL::2.54 6
-DEAL::2.55 6
-DEAL::2.56 6
-DEAL::2.57 8
-DEAL::2.58 8
-DEAL::2.59 7
+DEAL::2.53 1
+DEAL::2.54 1
+DEAL::2.55 1
+DEAL::2.56 3
+DEAL::2.57 3
+DEAL::2.58 3
+DEAL::2.59 3
 DEAL::2.60 8
 DEAL::2.61 8
 DEAL::2.62 8
index 65e1126e149c8218b65cb136411019c44de09906..1d2dd4fe7368363c8a57604fba6bbb9246ac8d89 100644 (file)
 
 DEAL::1D
 DEAL::Cell association:
-DEAL::0 3.00000
+DEAL::0 4.00000
 DEAL::1 2.00000
-DEAL::2 3.00000
+DEAL::2 4.00000
 DEAL::3 2.00000
-DEAL::4 4.00000
-DEAL::5 1.00000
+DEAL::4 3.00000
+DEAL::5 0
 DEAL::6 2.00000
 DEAL::7 2.00000
-DEAL::8 3.00000
-DEAL::9 3.00000
-DEAL::10 3.00000
+DEAL::8 4.00000
+DEAL::9 4.00000
+DEAL::10 4.00000
 DEAL::11 2.00000
 DEAL::12 2.00000
 DEAL::13 2.00000
-DEAL::14 1.00000
+DEAL::14 0
 DEAL::15 2.00000
 DEAL::16 2.00000
-DEAL::17 0
+DEAL::17 1.00000
 DEAL::18 2.00000
 DEAL::19 2.00000
 DEAL::20 2.00000
-DEAL::21 1.00000
-DEAL::22 4.00000
-DEAL::23 4.00000
-DEAL::24 3.00000
-DEAL::25 3.00000
-DEAL::26 4.00000
-DEAL::27 4.00000
-DEAL::28 4.00000
-DEAL::29 4.00000
-DEAL::30 4.00000
-DEAL::31 4.00000
-DEAL::32 3.00000
+DEAL::21 0
+DEAL::22 3.00000
+DEAL::23 3.00000
+DEAL::24 4.00000
+DEAL::25 4.00000
+DEAL::26 3.00000
+DEAL::27 3.00000
+DEAL::28 3.00000
+DEAL::29 3.00000
+DEAL::30 3.00000
+DEAL::31 3.00000
+DEAL::32 4.00000
 DEAL::33 2.00000
-DEAL::34 4.00000
-DEAL::35 4.00000
-DEAL::36 3.00000
-DEAL::37 3.00000
-DEAL::38 3.00000
-DEAL::39 3.00000
-DEAL::40 3.00000
-DEAL::41 1.00000
+DEAL::34 3.00000
+DEAL::35 3.00000
+DEAL::36 4.00000
+DEAL::37 4.00000
+DEAL::38 4.00000
+DEAL::39 4.00000
+DEAL::40 4.00000
+DEAL::41 0
 DEAL::42 2.00000
 DEAL::43 2.00000
-DEAL::44 0
-DEAL::45 0
-DEAL::46 4.00000
-DEAL::47 4.00000
-DEAL::48 3.00000
-DEAL::49 3.00000
+DEAL::44 1.00000
+DEAL::45 1.00000
+DEAL::46 3.00000
+DEAL::47 3.00000
+DEAL::48 4.00000
+DEAL::49 4.00000
 DEAL::50 2.00000
 DEAL::51 2.00000
-DEAL::52 0
-DEAL::53 0
+DEAL::52 1.00000
+DEAL::53 1.00000
 DEAL::54 2.00000
 DEAL::55 2.00000
-DEAL::56 1.00000
-DEAL::57 1.00000
-DEAL::58 0
-DEAL::59 1.00000
-DEAL::60 0
-DEAL::61 0
-DEAL::62 4.00000
+DEAL::56 0
+DEAL::57 0
+DEAL::58 1.00000
+DEAL::59 0
+DEAL::60 1.00000
+DEAL::61 1.00000
+DEAL::62 3.00000
 DEAL::63 2.00000
-DEAL::64 1.00000
-DEAL::65 0
-DEAL::66 3.00000
-DEAL::67 3.00000
-DEAL::68 1.00000
-DEAL::69 4.00000
-DEAL::70 3.00000
-DEAL::71 3.00000
-DEAL::72 1.00000
-DEAL::73 1.00000
-DEAL::74 4.00000
-DEAL::75 4.00000
-DEAL::76 0
-DEAL::77 0
-DEAL::78 4.00000
-DEAL::79 4.00000
-DEAL::80 3.00000
-DEAL::81 3.00000
-DEAL::82 3.00000
-DEAL::83 3.00000
-DEAL::84 1.00000
+DEAL::64 0
+DEAL::65 1.00000
+DEAL::66 4.00000
+DEAL::67 4.00000
+DEAL::68 0
+DEAL::69 3.00000
+DEAL::70 4.00000
+DEAL::71 4.00000
+DEAL::72 0
+DEAL::73 0
+DEAL::74 3.00000
+DEAL::75 3.00000
+DEAL::76 1.00000
+DEAL::77 1.00000
+DEAL::78 3.00000
+DEAL::79 3.00000
+DEAL::80 4.00000
+DEAL::81 4.00000
+DEAL::82 4.00000
+DEAL::83 4.00000
+DEAL::84 0
 DEAL::85 2.00000
-DEAL::86 0
-DEAL::87 0
-DEAL::88 0
-DEAL::89 0
+DEAL::86 1.00000
+DEAL::87 1.00000
+DEAL::88 1.00000
+DEAL::89 1.00000
 DEAL::90 2.00000
 DEAL::91 2.00000
-DEAL::92 1.00000
-DEAL::93 1.00000
-DEAL::94 1.00000
-DEAL::95 1.00000
-DEAL::96 4.00000
-DEAL::97 4.00000
-DEAL::98 1.00000
-DEAL::99 1.00000
-DEAL::100 0
-DEAL::101 0
-DEAL::102 0
-DEAL::103 0
-DEAL::104 4.00000
-DEAL::105 4.00000
-DEAL::106 1.00000
-DEAL::107 1.00000
-DEAL::108 1.00000
-DEAL::109 0
-DEAL::110 0
-DEAL::111 0
-DEAL::112 0
-DEAL::113 1.00000
-DEAL::114 1.00000
+DEAL::92 0
+DEAL::93 0
+DEAL::94 0
+DEAL::95 0
+DEAL::96 3.00000
+DEAL::97 3.00000
+DEAL::98 0
+DEAL::99 0
+DEAL::100 1.00000
+DEAL::101 1.00000
+DEAL::102 1.00000
+DEAL::103 1.00000
+DEAL::104 3.00000
+DEAL::105 3.00000
+DEAL::106 0
+DEAL::107 0
+DEAL::108 0
+DEAL::109 1.00000
+DEAL::110 1.00000
+DEAL::111 1.00000
+DEAL::112 1.00000
+DEAL::113 0
+DEAL::114 0
 DEAL::DoF association:
-DEAL::0 3
-DEAL::1 3
-DEAL::2 3
+DEAL::0 4
+DEAL::1 4
+DEAL::2 4
 DEAL::3 2
 DEAL::4 2
 DEAL::5 2
-DEAL::6 3
-DEAL::7 3
-DEAL::8 3
+DEAL::6 4
+DEAL::7 4
+DEAL::8 4
 DEAL::9 2
 DEAL::10 2
-DEAL::11 4
-DEAL::12 4
-DEAL::13 4
-DEAL::14 1
-DEAL::15 1
-DEAL::16 1
+DEAL::11 3
+DEAL::12 3
+DEAL::13 3
+DEAL::14 0
+DEAL::15 0
+DEAL::16 0
 DEAL::17 2
 DEAL::18 2
 DEAL::19 2
 DEAL::20 2
 DEAL::21 2
-DEAL::22 3
-DEAL::23 3
-DEAL::24 3
-DEAL::25 3
-DEAL::26 4
-DEAL::27 3
+DEAL::22 4
+DEAL::23 4
+DEAL::24 4
+DEAL::25 4
+DEAL::26 3
+DEAL::27 4
 DEAL::28 2
 DEAL::29 2
 DEAL::30 2
 DEAL::31 2
 DEAL::32 2
 DEAL::33 2
-DEAL::34 1
-DEAL::35 1
+DEAL::34 0
+DEAL::35 0
 DEAL::36 2
 DEAL::37 2
 DEAL::38 2
 DEAL::39 2
 DEAL::40 2
-DEAL::41 0
-DEAL::42 0
-DEAL::43 0
+DEAL::41 1
+DEAL::42 1
+DEAL::43 1
 DEAL::44 2
 DEAL::45 2
 DEAL::46 2
@@ -168,759 +168,759 @@ DEAL::47 2
 DEAL::48 2
 DEAL::49 2
 DEAL::50 2
-DEAL::51 1
-DEAL::52 1
-DEAL::53 1
-DEAL::54 4
-DEAL::55 4
-DEAL::56 4
-DEAL::57 4
-DEAL::58 4
-DEAL::59 3
-DEAL::60 3
-DEAL::61 3
-DEAL::62 3
-DEAL::63 4
-DEAL::64 4
-DEAL::65 4
-DEAL::66 4
-DEAL::67 4
-DEAL::68 4
-DEAL::69 4
-DEAL::70 4
-DEAL::71 4
-DEAL::72 4
-DEAL::73 4
-DEAL::74 3
-DEAL::75 3
+DEAL::51 0
+DEAL::52 0
+DEAL::53 0
+DEAL::54 3
+DEAL::55 3
+DEAL::56 3
+DEAL::57 3
+DEAL::58 3
+DEAL::59 4
+DEAL::60 4
+DEAL::61 4
+DEAL::62 4
+DEAL::63 3
+DEAL::64 3
+DEAL::65 3
+DEAL::66 3
+DEAL::67 3
+DEAL::68 3
+DEAL::69 3
+DEAL::70 3
+DEAL::71 3
+DEAL::72 3
+DEAL::73 3
+DEAL::74 4
+DEAL::75 4
 DEAL::76 2
 DEAL::77 2
-DEAL::78 4
-DEAL::79 4
-DEAL::80 4
-DEAL::81 4
-DEAL::82 3
-DEAL::83 3
-DEAL::84 3
-DEAL::85 3
-DEAL::86 3
-DEAL::87 3
-DEAL::88 3
-DEAL::89 3
-DEAL::90 3
-DEAL::91 3
-DEAL::92 3
-DEAL::93 3
-DEAL::94 3
-DEAL::95 1
-DEAL::96 1
+DEAL::78 3
+DEAL::79 3
+DEAL::80 3
+DEAL::81 3
+DEAL::82 4
+DEAL::83 4
+DEAL::84 4
+DEAL::85 4
+DEAL::86 4
+DEAL::87 4
+DEAL::88 4
+DEAL::89 4
+DEAL::90 4
+DEAL::91 4
+DEAL::92 4
+DEAL::93 4
+DEAL::94 4
+DEAL::95 0
+DEAL::96 0
 DEAL::97 2
 DEAL::98 2
 DEAL::99 2
-DEAL::100 0
-DEAL::101 0
-DEAL::102 0
-DEAL::103 0
-DEAL::104 4
-DEAL::105 4
-DEAL::106 4
-DEAL::107 4
-DEAL::108 4
-DEAL::109 3
-DEAL::110 3
-DEAL::111 3
+DEAL::100 1
+DEAL::101 1
+DEAL::102 1
+DEAL::103 1
+DEAL::104 3
+DEAL::105 3
+DEAL::106 3
+DEAL::107 3
+DEAL::108 3
+DEAL::109 4
+DEAL::110 4
+DEAL::111 4
 DEAL::112 2
 DEAL::113 2
 DEAL::114 2
-DEAL::115 0
-DEAL::116 0
-DEAL::117 0
-DEAL::118 0
+DEAL::115 1
+DEAL::116 1
+DEAL::117 1
+DEAL::118 1
 DEAL::119 2
 DEAL::120 2
 DEAL::121 2
-DEAL::122 1
-DEAL::123 1
-DEAL::124 1
-DEAL::125 0
-DEAL::126 0
-DEAL::127 0
-DEAL::128 1
-DEAL::129 1
-DEAL::130 1
-DEAL::131 0
-DEAL::132 0
-DEAL::133 0
-DEAL::134 0
-DEAL::135 4
-DEAL::136 4
+DEAL::122 0
+DEAL::123 0
+DEAL::124 0
+DEAL::125 1
+DEAL::126 1
+DEAL::127 1
+DEAL::128 0
+DEAL::129 0
+DEAL::130 0
+DEAL::131 1
+DEAL::132 1
+DEAL::133 1
+DEAL::134 1
+DEAL::135 3
+DEAL::136 3
 DEAL::137 2
 DEAL::138 2
-DEAL::139 1
-DEAL::140 1
-DEAL::141 0
-DEAL::142 0
-DEAL::143 0
-DEAL::144 3
-DEAL::145 3
-DEAL::146 3
-DEAL::147 1
-DEAL::148 1
-DEAL::149 4
-DEAL::150 4
-DEAL::151 3
-DEAL::152 3
-DEAL::153 3
-DEAL::154 1
-DEAL::155 1
-DEAL::156 1
-DEAL::157 1
-DEAL::158 1
-DEAL::159 4
-DEAL::160 4
-DEAL::161 4
-DEAL::162 4
-DEAL::163 0
-DEAL::164 0
-DEAL::165 0
-DEAL::166 0
-DEAL::167 0
-DEAL::168 4
-DEAL::169 4
-DEAL::170 4
-DEAL::171 4
-DEAL::172 3
-DEAL::173 3
-DEAL::174 3
-DEAL::175 3
-DEAL::176 3
-DEAL::177 3
-DEAL::178 3
+DEAL::139 0
+DEAL::140 0
+DEAL::141 1
+DEAL::142 1
+DEAL::143 1
+DEAL::144 4
+DEAL::145 4
+DEAL::146 4
+DEAL::147 0
+DEAL::148 0
+DEAL::149 3
+DEAL::150 3
+DEAL::151 4
+DEAL::152 4
+DEAL::153 4
+DEAL::154 0
+DEAL::155 0
+DEAL::156 0
+DEAL::157 0
+DEAL::158 0
+DEAL::159 3
+DEAL::160 3
+DEAL::161 3
+DEAL::162 3
+DEAL::163 1
+DEAL::164 1
+DEAL::165 1
+DEAL::166 1
+DEAL::167 1
+DEAL::168 3
+DEAL::169 3
+DEAL::170 3
+DEAL::171 3
+DEAL::172 4
+DEAL::173 4
+DEAL::174 4
+DEAL::175 4
+DEAL::176 4
+DEAL::177 4
+DEAL::178 4
 DEAL::179 2
-DEAL::180 1
+DEAL::180 0
 DEAL::181 2
-DEAL::182 0
-DEAL::183 0
-DEAL::184 0
-DEAL::185 0
-DEAL::186 0
-DEAL::187 0
-DEAL::188 0
+DEAL::182 1
+DEAL::183 1
+DEAL::184 1
+DEAL::185 1
+DEAL::186 1
+DEAL::187 1
+DEAL::188 1
 DEAL::189 2
 DEAL::190 2
 DEAL::191 2
-DEAL::192 1
-DEAL::193 1
-DEAL::194 1
-DEAL::195 1
-DEAL::196 1
-DEAL::197 1
-DEAL::198 1
-DEAL::199 4
-DEAL::200 4
-DEAL::201 4
-DEAL::202 1
-DEAL::203 1
-DEAL::204 1
-DEAL::205 1
-DEAL::206 0
-DEAL::207 0
-DEAL::208 0
-DEAL::209 0
-DEAL::210 0
-DEAL::211 0
-DEAL::212 4
-DEAL::213 4
-DEAL::214 4
-DEAL::215 1
-DEAL::216 1
-DEAL::217 1
-DEAL::218 1
-DEAL::219 1
-DEAL::220 1
-DEAL::221 0
-DEAL::222 0
-DEAL::223 0
-DEAL::224 0
-DEAL::225 0
-DEAL::226 0
-DEAL::227 0
-DEAL::228 1
-DEAL::229 1
-DEAL::230 1
+DEAL::192 0
+DEAL::193 0
+DEAL::194 0
+DEAL::195 0
+DEAL::196 0
+DEAL::197 0
+DEAL::198 0
+DEAL::199 3
+DEAL::200 3
+DEAL::201 3
+DEAL::202 0
+DEAL::203 0
+DEAL::204 0
+DEAL::205 0
+DEAL::206 1
+DEAL::207 1
+DEAL::208 1
+DEAL::209 1
+DEAL::210 1
+DEAL::211 1
+DEAL::212 3
+DEAL::213 3
+DEAL::214 3
+DEAL::215 0
+DEAL::216 0
+DEAL::217 0
+DEAL::218 0
+DEAL::219 0
+DEAL::220 0
+DEAL::221 1
+DEAL::222 1
+DEAL::223 1
+DEAL::224 1
+DEAL::225 1
+DEAL::226 1
+DEAL::227 1
+DEAL::228 0
+DEAL::229 0
+DEAL::230 0
 DEAL::2D
 DEAL::Cell association:
-DEAL::0 4.00000
-DEAL::1 3.00000
-DEAL::2 4.00000
-DEAL::3 4.00000
-DEAL::4 4.00000
-DEAL::5 0
-DEAL::6 0
-DEAL::7 1.00000
-DEAL::8 1.00000
-DEAL::9 4.00000
-DEAL::10 4.00000
+DEAL::0 0
+DEAL::1 1.00000
+DEAL::2 0
+DEAL::3 0
+DEAL::4 0
+DEAL::5 3.00000
+DEAL::6 3.00000
+DEAL::7 4.00000
+DEAL::8 4.00000
+DEAL::9 2.00000
+DEAL::10 2.00000
 DEAL::11 2.00000
-DEAL::12 2.00000
-DEAL::13 2.00000
-DEAL::14 0
-DEAL::15 0
-DEAL::16 1.00000
-DEAL::17 1.00000
-DEAL::18 2.00000
+DEAL::12 0
+DEAL::13 0
+DEAL::14 3.00000
+DEAL::15 2.00000
+DEAL::16 4.00000
+DEAL::17 2.00000
+DEAL::18 0
 DEAL::19 2.00000
-DEAL::20 2.00000
-DEAL::21 0
-DEAL::22 1.00000
-DEAL::23 0
-DEAL::24 0
-DEAL::25 0
-DEAL::26 1.00000
-DEAL::27 1.00000
-DEAL::28 1.00000
-DEAL::29 4.00000
-DEAL::30 4.00000
-DEAL::31 1.00000
-DEAL::32 4.00000
-DEAL::33 4.00000
-DEAL::34 2.00000
-DEAL::35 4.00000
-DEAL::36 4.00000
-DEAL::37 4.00000
-DEAL::38 4.00000
-DEAL::39 0
-DEAL::40 0
-DEAL::41 1.00000
-DEAL::42 1.00000
-DEAL::43 1.00000
+DEAL::20 0
+DEAL::21 3.00000
+DEAL::22 4.00000
+DEAL::23 3.00000
+DEAL::24 3.00000
+DEAL::25 4.00000
+DEAL::26 4.00000
+DEAL::27 4.00000
+DEAL::28 4.00000
+DEAL::29 1.00000
+DEAL::30 1.00000
+DEAL::31 2.00000
+DEAL::32 1.00000
+DEAL::33 1.00000
+DEAL::34 0
+DEAL::35 0
+DEAL::36 0
+DEAL::37 0
+DEAL::38 0
+DEAL::39 2.00000
+DEAL::40 2.00000
+DEAL::41 2.00000
+DEAL::42 4.00000
+DEAL::43 4.00000
 DEAL::44 2.00000
-DEAL::45 4.00000
-DEAL::46 2.00000
-DEAL::47 2.00000
-DEAL::48 0
-DEAL::49 0
-DEAL::50 0
-DEAL::51 4.00000
-DEAL::52 4.00000
-DEAL::53 4.00000
-DEAL::54 3.00000
-DEAL::55 3.00000
-DEAL::56 4.00000
-DEAL::57 4.00000
-DEAL::58 4.00000
-DEAL::59 2.00000
-DEAL::60 2.00000
-DEAL::61 2.00000
-DEAL::62 4.00000
-DEAL::63 4.00000
-DEAL::64 4.00000
-DEAL::65 0
-DEAL::66 1.00000
+DEAL::45 2.00000
+DEAL::46 0
+DEAL::47 0
+DEAL::48 3.00000
+DEAL::49 3.00000
+DEAL::50 4.00000
+DEAL::51 1.00000
+DEAL::52 1.00000
+DEAL::53 1.00000
+DEAL::54 1.00000
+DEAL::55 1.00000
+DEAL::56 1.00000
+DEAL::57 1.00000
+DEAL::58 1.00000
+DEAL::59 0
+DEAL::60 0
+DEAL::61 0
+DEAL::62 0
+DEAL::63 0
+DEAL::64 0
+DEAL::65 2.00000
+DEAL::66 2.00000
 DEAL::67 4.00000
 DEAL::68 4.00000
 DEAL::69 4.00000
 DEAL::70 4.00000
 DEAL::71 4.00000
 DEAL::72 4.00000
-DEAL::73 2.00000
-DEAL::74 2.00000
-DEAL::75 2.00000
-DEAL::76 0
-DEAL::77 1.00000
-DEAL::78 0
-DEAL::79 1.00000
-DEAL::80 1.00000
-DEAL::81 1.00000
-DEAL::82 1.00000
-DEAL::83 1.00000
-DEAL::84 0
-DEAL::85 0
-DEAL::86 0
-DEAL::87 0
-DEAL::88 1.00000
-DEAL::89 1.00000
-DEAL::90 1.00000
-DEAL::91 1.00000
-DEAL::92 1.00000
-DEAL::93 1.00000
-DEAL::94 1.00000
-DEAL::95 1.00000
-DEAL::96 4.00000
-DEAL::97 4.00000
-DEAL::98 4.00000
-DEAL::99 4.00000
-DEAL::100 2.00000
-DEAL::101 2.00000
-DEAL::102 2.00000
-DEAL::103 2.00000
-DEAL::104 3.00000
+DEAL::73 0
+DEAL::74 0
+DEAL::75 0
+DEAL::76 4.00000
+DEAL::77 4.00000
+DEAL::78 4.00000
+DEAL::79 4.00000
+DEAL::80 4.00000
+DEAL::81 4.00000
+DEAL::82 4.00000
+DEAL::83 4.00000
+DEAL::84 3.00000
+DEAL::85 3.00000
+DEAL::86 3.00000
+DEAL::87 3.00000
+DEAL::88 4.00000
+DEAL::89 4.00000
+DEAL::90 4.00000
+DEAL::91 4.00000
+DEAL::92 2.00000
+DEAL::93 2.00000
+DEAL::94 2.00000
+DEAL::95 2.00000
+DEAL::96 2.00000
+DEAL::97 2.00000
+DEAL::98 2.00000
+DEAL::99 2.00000
+DEAL::100 0
+DEAL::101 0
+DEAL::102 0
+DEAL::103 0
+DEAL::104 0
 DEAL::105 4.00000
-DEAL::106 0
-DEAL::107 3.00000
-DEAL::108 3.00000
-DEAL::109 3.00000
-DEAL::110 2.00000
-DEAL::111 2.00000
-DEAL::112 3.00000
-DEAL::113 0
-DEAL::114 4.00000
-DEAL::115 2.00000
-DEAL::116 3.00000
-DEAL::117 3.00000
-DEAL::118 4.00000
-DEAL::119 3.00000
-DEAL::120 3.00000
-DEAL::121 3.00000
-DEAL::122 3.00000
-DEAL::123 2.00000
-DEAL::124 0
-DEAL::125 0
-DEAL::126 4.00000
-DEAL::127 4.00000
-DEAL::128 4.00000
-DEAL::129 2.00000
-DEAL::130 2.00000
-DEAL::131 2.00000
-DEAL::132 0
-DEAL::133 0
-DEAL::134 0
-DEAL::135 3.00000
-DEAL::136 3.00000
-DEAL::137 0
-DEAL::138 0
-DEAL::139 1.00000
-DEAL::140 1.00000
-DEAL::141 1.00000
-DEAL::142 1.00000
+DEAL::106 3.00000
+DEAL::107 1.00000
+DEAL::108 1.00000
+DEAL::109 1.00000
+DEAL::110 0
+DEAL::111 0
+DEAL::112 0
+DEAL::113 3.00000
+DEAL::114 2.00000
+DEAL::115 0
+DEAL::116 0
+DEAL::117 0
+DEAL::118 0
+DEAL::119 1.00000
+DEAL::120 1.00000
+DEAL::121 1.00000
+DEAL::122 1.00000
+DEAL::123 0
+DEAL::124 3.00000
+DEAL::125 3.00000
+DEAL::126 1.00000
+DEAL::127 2.00000
+DEAL::128 2.00000
+DEAL::129 0
+DEAL::130 0
+DEAL::131 0
+DEAL::132 3.00000
+DEAL::133 3.00000
+DEAL::134 3.00000
+DEAL::135 4.00000
+DEAL::136 4.00000
+DEAL::137 3.00000
+DEAL::138 3.00000
+DEAL::139 4.00000
+DEAL::140 4.00000
+DEAL::141 2.00000
+DEAL::142 2.00000
 DEAL::143 2.00000
 DEAL::144 2.00000
-DEAL::145 0
-DEAL::146 0
-DEAL::147 0
-DEAL::148 0
-DEAL::149 1.00000
-DEAL::150 1.00000
-DEAL::151 3.00000
-DEAL::152 2.00000
-DEAL::153 2.00000
-DEAL::154 2.00000
-DEAL::155 2.00000
-DEAL::156 2.00000
-DEAL::157 2.00000
-DEAL::158 1.00000
-DEAL::159 1.00000
-DEAL::160 1.00000
+DEAL::145 3.00000
+DEAL::146 3.00000
+DEAL::147 3.00000
+DEAL::148 3.00000
+DEAL::149 3.00000
+DEAL::150 3.00000
+DEAL::151 2.00000
+DEAL::152 0
+DEAL::153 0
+DEAL::154 0
+DEAL::155 0
+DEAL::156 0
+DEAL::157 0
+DEAL::158 4.00000
+DEAL::159 4.00000
+DEAL::160 4.00000
 DEAL::161 4.00000
 DEAL::162 4.00000
-DEAL::163 4.00000
-DEAL::164 4.00000
-DEAL::165 3.00000
-DEAL::166 3.00000
-DEAL::167 3.00000
-DEAL::168 0
-DEAL::169 0
-DEAL::170 0
-DEAL::171 1.00000
-DEAL::172 4.00000
-DEAL::173 3.00000
-DEAL::174 3.00000
-DEAL::175 3.00000
-DEAL::176 3.00000
-DEAL::177 3.00000
-DEAL::178 2.00000
-DEAL::179 2.00000
-DEAL::180 2.00000
-DEAL::181 0
-DEAL::182 0
-DEAL::183 0
-DEAL::184 0
-DEAL::185 0
-DEAL::186 0
-DEAL::187 0
+DEAL::163 1.00000
+DEAL::164 1.00000
+DEAL::165 1.00000
+DEAL::166 0
+DEAL::167 1.00000
+DEAL::168 3.00000
+DEAL::169 3.00000
+DEAL::170 3.00000
+DEAL::171 4.00000
+DEAL::172 1.00000
+DEAL::173 4.00000
+DEAL::174 1.00000
+DEAL::175 1.00000
+DEAL::176 1.00000
+DEAL::177 1.00000
+DEAL::178 0
+DEAL::179 0
+DEAL::180 0
+DEAL::181 3.00000
+DEAL::182 3.00000
+DEAL::183 3.00000
+DEAL::184 3.00000
+DEAL::185 3.00000
+DEAL::186 3.00000
+DEAL::187 3.00000
 DEAL::188 4.00000
 DEAL::189 4.00000
 DEAL::190 4.00000
-DEAL::191 4.00000
-DEAL::192 4.00000
-DEAL::193 4.00000
-DEAL::194 4.00000
-DEAL::195 2.00000
-DEAL::196 2.00000
-DEAL::197 2.00000
-DEAL::198 0
-DEAL::199 0
-DEAL::200 0
-DEAL::201 0
-DEAL::202 0
-DEAL::203 0
-DEAL::204 0
-DEAL::205 1.00000
-DEAL::206 1.00000
-DEAL::207 1.00000
-DEAL::208 3.00000
-DEAL::209 3.00000
-DEAL::210 3.00000
-DEAL::211 0
-DEAL::212 0
-DEAL::213 0
-DEAL::214 0
-DEAL::215 1.00000
-DEAL::216 1.00000
-DEAL::217 1.00000
-DEAL::218 1.00000
-DEAL::219 1.00000
-DEAL::220 1.00000
-DEAL::221 4.00000
-DEAL::222 4.00000
-DEAL::223 4.00000
-DEAL::224 4.00000
-DEAL::225 2.00000
-DEAL::226 2.00000
-DEAL::227 2.00000
-DEAL::228 0
-DEAL::229 0
-DEAL::230 0
-DEAL::231 0
-DEAL::232 0
-DEAL::233 1.00000
-DEAL::234 1.00000
-DEAL::235 1.00000
-DEAL::236 1.00000
-DEAL::237 1.00000
-DEAL::238 1.00000
-DEAL::239 1.00000
-DEAL::240 3.00000
-DEAL::241 3.00000
-DEAL::242 2.00000
-DEAL::243 2.00000
-DEAL::244 2.00000
-DEAL::245 2.00000
-DEAL::246 2.00000
-DEAL::247 2.00000
-DEAL::248 2.00000
-DEAL::249 2.00000
-DEAL::250 2.00000
-DEAL::251 2.00000
-DEAL::252 2.00000
-DEAL::253 2.00000
-DEAL::254 0
-DEAL::255 0
-DEAL::256 0
-DEAL::257 1.00000
-DEAL::258 1.00000
-DEAL::259 1.00000
-DEAL::260 0
-DEAL::261 0
-DEAL::262 0
-DEAL::263 0
+DEAL::191 2.00000
+DEAL::192 2.00000
+DEAL::193 2.00000
+DEAL::194 2.00000
+DEAL::195 0
+DEAL::196 0
+DEAL::197 0
+DEAL::198 3.00000
+DEAL::199 3.00000
+DEAL::200 3.00000
+DEAL::201 3.00000
+DEAL::202 3.00000
+DEAL::203 3.00000
+DEAL::204 3.00000
+DEAL::205 4.00000
+DEAL::206 4.00000
+DEAL::207 4.00000
+DEAL::208 4.00000
+DEAL::209 4.00000
+DEAL::210 4.00000
+DEAL::211 3.00000
+DEAL::212 3.00000
+DEAL::213 3.00000
+DEAL::214 3.00000
+DEAL::215 4.00000
+DEAL::216 4.00000
+DEAL::217 4.00000
+DEAL::218 2.00000
+DEAL::219 2.00000
+DEAL::220 2.00000
+DEAL::221 2.00000
+DEAL::222 2.00000
+DEAL::223 2.00000
+DEAL::224 2.00000
+DEAL::225 0
+DEAL::226 0
+DEAL::227 0
+DEAL::228 3.00000
+DEAL::229 3.00000
+DEAL::230 2.00000
+DEAL::231 3.00000
+DEAL::232 3.00000
+DEAL::233 3.00000
+DEAL::234 3.00000
+DEAL::235 3.00000
+DEAL::236 3.00000
+DEAL::237 2.00000
+DEAL::238 2.00000
+DEAL::239 2.00000
+DEAL::240 2.00000
+DEAL::241 0
+DEAL::242 0
+DEAL::243 0
+DEAL::244 0
+DEAL::245 0
+DEAL::246 0
+DEAL::247 0
+DEAL::248 0
+DEAL::249 0
+DEAL::250 0
+DEAL::251 0
+DEAL::252 0
+DEAL::253 0
+DEAL::254 3.00000
+DEAL::255 3.00000
+DEAL::256 3.00000
+DEAL::257 4.00000
+DEAL::258 4.00000
+DEAL::259 4.00000
+DEAL::260 3.00000
+DEAL::261 3.00000
+DEAL::262 3.00000
+DEAL::263 3.00000
 DEAL::264 4.00000
 DEAL::265 4.00000
 DEAL::266 4.00000
 DEAL::267 4.00000
 DEAL::268 4.00000
-DEAL::269 4.00000
-DEAL::270 4.00000
-DEAL::271 4.00000
-DEAL::272 3.00000
-DEAL::273 4.00000
-DEAL::274 1.00000
-DEAL::275 1.00000
-DEAL::276 1.00000
-DEAL::277 4.00000
-DEAL::278 4.00000
-DEAL::279 4.00000
-DEAL::280 4.00000
-DEAL::281 4.00000
-DEAL::282 4.00000
-DEAL::283 4.00000
-DEAL::284 4.00000
-DEAL::285 4.00000
-DEAL::286 4.00000
-DEAL::287 0
-DEAL::288 0
-DEAL::289 1.00000
-DEAL::290 0
-DEAL::291 0
-DEAL::292 1.00000
-DEAL::293 1.00000
-DEAL::294 1.00000
-DEAL::295 1.00000
-DEAL::296 1.00000
-DEAL::297 1.00000
-DEAL::298 1.00000
-DEAL::299 1.00000
-DEAL::300 1.00000
-DEAL::301 1.00000
-DEAL::302 1.00000
+DEAL::269 1.00000
+DEAL::270 1.00000
+DEAL::271 1.00000
+DEAL::272 1.00000
+DEAL::273 1.00000
+DEAL::274 2.00000
+DEAL::275 2.00000
+DEAL::276 2.00000
+DEAL::277 1.00000
+DEAL::278 1.00000
+DEAL::279 1.00000
+DEAL::280 0
+DEAL::281 0
+DEAL::282 0
+DEAL::283 0
+DEAL::284 0
+DEAL::285 0
+DEAL::286 0
+DEAL::287 2.00000
+DEAL::288 2.00000
+DEAL::289 2.00000
+DEAL::290 2.00000
+DEAL::291 2.00000
+DEAL::292 2.00000
+DEAL::293 3.00000
+DEAL::294 4.00000
+DEAL::295 4.00000
+DEAL::296 2.00000
+DEAL::297 2.00000
+DEAL::298 2.00000
+DEAL::299 4.00000
+DEAL::300 4.00000
+DEAL::301 4.00000
+DEAL::302 4.00000
 DEAL::303 2.00000
 DEAL::304 2.00000
 DEAL::305 2.00000
-DEAL::306 4.00000
-DEAL::307 4.00000
-DEAL::308 4.00000
+DEAL::306 2.00000
+DEAL::307 2.00000
+DEAL::308 2.00000
 DEAL::309 2.00000
 DEAL::310 2.00000
 DEAL::311 2.00000
 DEAL::312 2.00000
 DEAL::313 2.00000
 DEAL::314 2.00000
-DEAL::315 3.00000
-DEAL::316 3.00000
-DEAL::317 2.00000
-DEAL::318 2.00000
-DEAL::319 0
-DEAL::320 0
-DEAL::321 0
-DEAL::322 0
-DEAL::323 3.00000
-DEAL::324 3.00000
-DEAL::325 3.00000
-DEAL::326 3.00000
+DEAL::315 0
+DEAL::316 0
+DEAL::317 0
+DEAL::318 0
+DEAL::319 3.00000
+DEAL::320 3.00000
+DEAL::321 3.00000
+DEAL::322 3.00000
+DEAL::323 1.00000
+DEAL::324 1.00000
+DEAL::325 1.00000
+DEAL::326 1.00000
 DEAL::327 4.00000
 DEAL::328 4.00000
 DEAL::329 4.00000
 DEAL::330 4.00000
-DEAL::331 4.00000
-DEAL::332 4.00000
-DEAL::333 4.00000
-DEAL::334 4.00000
-DEAL::335 4.00000
-DEAL::336 4.00000
-DEAL::337 4.00000
-DEAL::338 4.00000
-DEAL::339 2.00000
-DEAL::340 2.00000
-DEAL::341 2.00000
-DEAL::342 2.00000
-DEAL::343 2.00000
-DEAL::344 4.00000
-DEAL::345 2.00000
-DEAL::346 4.00000
-DEAL::347 0
-DEAL::348 0
-DEAL::349 0
-DEAL::350 0
-DEAL::351 0
-DEAL::352 0
-DEAL::353 0
-DEAL::354 0
-DEAL::355 1.00000
-DEAL::356 1.00000
-DEAL::357 1.00000
-DEAL::358 1.00000
-DEAL::359 3.00000
-DEAL::360 3.00000
-DEAL::361 3.00000
-DEAL::362 3.00000
-DEAL::363 3.00000
-DEAL::364 3.00000
-DEAL::365 2.00000
-DEAL::366 3.00000
-DEAL::367 0
-DEAL::368 0
-DEAL::369 0
-DEAL::370 0
-DEAL::371 0
-DEAL::372 0
-DEAL::373 0
-DEAL::374 0
-DEAL::375 1.00000
-DEAL::376 1.00000
-DEAL::377 1.00000
-DEAL::378 1.00000
-DEAL::379 4.00000
-DEAL::380 4.00000
-DEAL::381 4.00000
+DEAL::331 1.00000
+DEAL::332 1.00000
+DEAL::333 1.00000
+DEAL::334 1.00000
+DEAL::335 2.00000
+DEAL::336 2.00000
+DEAL::337 2.00000
+DEAL::338 2.00000
+DEAL::339 0
+DEAL::340 0
+DEAL::341 0
+DEAL::342 0
+DEAL::343 0
+DEAL::344 0
+DEAL::345 0
+DEAL::346 0
+DEAL::347 3.00000
+DEAL::348 3.00000
+DEAL::349 3.00000
+DEAL::350 3.00000
+DEAL::351 3.00000
+DEAL::352 3.00000
+DEAL::353 3.00000
+DEAL::354 3.00000
+DEAL::355 4.00000
+DEAL::356 4.00000
+DEAL::357 4.00000
+DEAL::358 4.00000
+DEAL::359 4.00000
+DEAL::360 4.00000
+DEAL::361 4.00000
+DEAL::362 4.00000
+DEAL::363 0
+DEAL::364 0
+DEAL::365 0
+DEAL::366 0
+DEAL::367 3.00000
+DEAL::368 3.00000
+DEAL::369 3.00000
+DEAL::370 3.00000
+DEAL::371 3.00000
+DEAL::372 3.00000
+DEAL::373 3.00000
+DEAL::374 3.00000
+DEAL::375 4.00000
+DEAL::376 4.00000
+DEAL::377 4.00000
+DEAL::378 4.00000
+DEAL::379 2.00000
+DEAL::380 2.00000
+DEAL::381 2.00000
 DEAL::382 2.00000
-DEAL::383 2.00000
-DEAL::384 2.00000
-DEAL::385 2.00000
-DEAL::386 2.00000
-DEAL::387 1.00000
-DEAL::388 1.00000
-DEAL::389 1.00000
-DEAL::390 1.00000
-DEAL::391 1.00000
-DEAL::392 1.00000
-DEAL::393 1.00000
-DEAL::394 1.00000
-DEAL::395 1.00000
-DEAL::396 1.00000
-DEAL::397 1.00000
-DEAL::398 1.00000
-DEAL::399 1.00000
-DEAL::400 1.00000
-DEAL::401 1.00000
-DEAL::402 1.00000
+DEAL::383 0
+DEAL::384 0
+DEAL::385 0
+DEAL::386 0
+DEAL::387 3.00000
+DEAL::388 3.00000
+DEAL::389 2.00000
+DEAL::390 2.00000
+DEAL::391 2.00000
+DEAL::392 4.00000
+DEAL::393 2.00000
+DEAL::394 2.00000
+DEAL::395 2.00000
+DEAL::396 4.00000
+DEAL::397 2.00000
+DEAL::398 4.00000
+DEAL::399 2.00000
+DEAL::400 2.00000
+DEAL::401 2.00000
+DEAL::402 2.00000
 DEAL::403 2.00000
 DEAL::404 2.00000
 DEAL::405 2.00000
-DEAL::406 2.00000
+DEAL::406 0
 DEAL::407 2.00000
 DEAL::408 2.00000
 DEAL::409 2.00000
 DEAL::410 2.00000
-DEAL::411 2.00000
-DEAL::412 2.00000
-DEAL::413 2.00000
-DEAL::414 2.00000
-DEAL::415 0
-DEAL::416 0
-DEAL::417 0
-DEAL::418 0
-DEAL::419 0
-DEAL::420 0
-DEAL::421 0
-DEAL::422 0
-DEAL::423 1.00000
-DEAL::424 1.00000
-DEAL::425 1.00000
-DEAL::426 1.00000
-DEAL::427 1.00000
-DEAL::428 1.00000
-DEAL::429 1.00000
-DEAL::430 1.00000
-DEAL::431 0
-DEAL::432 0
-DEAL::433 0
-DEAL::434 0
+DEAL::411 0
+DEAL::412 0
+DEAL::413 0
+DEAL::414 0
+DEAL::415 3.00000
+DEAL::416 3.00000
+DEAL::417 3.00000
+DEAL::418 3.00000
+DEAL::419 3.00000
+DEAL::420 3.00000
+DEAL::421 3.00000
+DEAL::422 3.00000
+DEAL::423 4.00000
+DEAL::424 4.00000
+DEAL::425 4.00000
+DEAL::426 4.00000
+DEAL::427 4.00000
+DEAL::428 4.00000
+DEAL::429 4.00000
+DEAL::430 4.00000
+DEAL::431 3.00000
+DEAL::432 4.00000
+DEAL::433 3.00000
+DEAL::434 4.00000
 DEAL::435 4.00000
 DEAL::436 4.00000
 DEAL::437 4.00000
 DEAL::438 4.00000
 DEAL::439 4.00000
 DEAL::440 4.00000
-DEAL::441 4.00000
-DEAL::442 4.00000
-DEAL::443 4.00000
-DEAL::444 4.00000
-DEAL::445 4.00000
-DEAL::446 4.00000
-DEAL::447 1.00000
-DEAL::448 1.00000
-DEAL::449 1.00000
-DEAL::450 1.00000
-DEAL::451 1.00000
-DEAL::452 1.00000
-DEAL::453 4.00000
-DEAL::454 4.00000
-DEAL::455 4.00000
-DEAL::456 4.00000
-DEAL::457 4.00000
-DEAL::458 4.00000
-DEAL::459 3.00000
-DEAL::460 4.00000
-DEAL::461 3.00000
-DEAL::462 4.00000
-DEAL::463 3.00000
-DEAL::464 3.00000
-DEAL::465 3.00000
-DEAL::466 4.00000
-DEAL::467 3.00000
-DEAL::468 3.00000
-DEAL::469 4.00000
-DEAL::470 4.00000
-DEAL::471 2.00000
-DEAL::472 2.00000
-DEAL::473 2.00000
-DEAL::474 2.00000
-DEAL::475 4.00000
-DEAL::476 4.00000
-DEAL::477 4.00000
-DEAL::478 4.00000
-DEAL::479 1.00000
-DEAL::480 1.00000
-DEAL::481 1.00000
-DEAL::482 1.00000
-DEAL::483 1.00000
-DEAL::484 1.00000
-DEAL::485 1.00000
-DEAL::486 1.00000
-DEAL::487 1.00000
-DEAL::488 1.00000
-DEAL::489 1.00000
-DEAL::490 1.00000
-DEAL::491 1.00000
-DEAL::492 1.00000
-DEAL::493 1.00000
-DEAL::494 1.00000
-DEAL::495 1.00000
-DEAL::496 1.00000
-DEAL::497 1.00000
-DEAL::498 1.00000
-DEAL::499 1.00000
-DEAL::500 1.00000
-DEAL::501 1.00000
-DEAL::502 1.00000
+DEAL::441 1.00000
+DEAL::442 1.00000
+DEAL::443 1.00000
+DEAL::444 1.00000
+DEAL::445 1.00000
+DEAL::446 1.00000
+DEAL::447 2.00000
+DEAL::448 2.00000
+DEAL::449 2.00000
+DEAL::450 2.00000
+DEAL::451 2.00000
+DEAL::452 2.00000
+DEAL::453 2.00000
+DEAL::454 2.00000
+DEAL::455 1.00000
+DEAL::456 1.00000
+DEAL::457 1.00000
+DEAL::458 1.00000
+DEAL::459 1.00000
+DEAL::460 1.00000
+DEAL::461 1.00000
+DEAL::462 1.00000
+DEAL::463 1.00000
+DEAL::464 1.00000
+DEAL::465 1.00000
+DEAL::466 1.00000
+DEAL::467 1.00000
+DEAL::468 1.00000
+DEAL::469 1.00000
+DEAL::470 1.00000
+DEAL::471 0
+DEAL::472 0
+DEAL::473 0
+DEAL::474 0
+DEAL::475 1.00000
+DEAL::476 1.00000
+DEAL::477 0
+DEAL::478 0
+DEAL::479 3.00000
+DEAL::480 4.00000
+DEAL::481 3.00000
+DEAL::482 4.00000
+DEAL::483 4.00000
+DEAL::484 4.00000
+DEAL::485 4.00000
+DEAL::486 4.00000
+DEAL::487 4.00000
+DEAL::488 4.00000
+DEAL::489 4.00000
+DEAL::490 4.00000
+DEAL::491 2.00000
+DEAL::492 2.00000
+DEAL::493 2.00000
+DEAL::494 2.00000
+DEAL::495 2.00000
+DEAL::496 2.00000
+DEAL::497 2.00000
+DEAL::498 2.00000
+DEAL::499 4.00000
+DEAL::500 4.00000
+DEAL::501 4.00000
+DEAL::502 4.00000
 DEAL::503 2.00000
 DEAL::504 2.00000
 DEAL::505 2.00000
 DEAL::506 2.00000
 DEAL::507 2.00000
 DEAL::508 2.00000
-DEAL::509 2.00000
-DEAL::510 2.00000
-DEAL::511 4.00000
-DEAL::512 4.00000
-DEAL::513 4.00000
-DEAL::514 4.00000
-DEAL::515 4.00000
-DEAL::516 4.00000
-DEAL::517 4.00000
-DEAL::518 4.00000
-DEAL::519 4.00000
+DEAL::509 0
+DEAL::510 0
+DEAL::511 2.00000
+DEAL::512 2.00000
+DEAL::513 2.00000
+DEAL::514 2.00000
+DEAL::515 2.00000
+DEAL::516 2.00000
+DEAL::517 2.00000
+DEAL::518 2.00000
+DEAL::519 2.00000
 DEAL::520 2.00000
 DEAL::521 2.00000
 DEAL::522 2.00000
 DEAL::523 2.00000
-DEAL::524 2.00000
+DEAL::524 0
 DEAL::525 2.00000
-DEAL::526 2.00000
-DEAL::527 2.00000
-DEAL::528 2.00000
-DEAL::529 2.00000
-DEAL::530 2.00000
-DEAL::531 2.00000
-DEAL::532 2.00000
-DEAL::533 2.00000
-DEAL::534 2.00000
-DEAL::535 0
-DEAL::536 0
-DEAL::537 0
-DEAL::538 0
-DEAL::539 4.00000
-DEAL::540 4.00000
-DEAL::541 4.00000
-DEAL::542 4.00000
-DEAL::543 3.00000
-DEAL::544 3.00000
-DEAL::545 3.00000
-DEAL::546 3.00000
-DEAL::547 3.00000
-DEAL::548 3.00000
-DEAL::549 3.00000
-DEAL::550 3.00000
-DEAL::551 4.00000
-DEAL::552 4.00000
-DEAL::553 4.00000
-DEAL::554 4.00000
-DEAL::555 2.00000
-DEAL::556 2.00000
-DEAL::557 2.00000
-DEAL::558 2.00000
-DEAL::559 4.00000
-DEAL::560 4.00000
-DEAL::561 4.00000
-DEAL::562 4.00000
-DEAL::563 0
-DEAL::564 1.00000
-DEAL::565 0
-DEAL::566 1.00000
-DEAL::567 0
-DEAL::568 0
-DEAL::569 1.00000
-DEAL::570 1.00000
+DEAL::526 0
+DEAL::527 0
+DEAL::528 0
+DEAL::529 0
+DEAL::530 0
+DEAL::531 0
+DEAL::532 0
+DEAL::533 0
+DEAL::534 0
+DEAL::535 3.00000
+DEAL::536 3.00000
+DEAL::537 4.00000
+DEAL::538 4.00000
+DEAL::539 1.00000
+DEAL::540 1.00000
+DEAL::541 1.00000
+DEAL::542 1.00000
+DEAL::543 1.00000
+DEAL::544 1.00000
+DEAL::545 1.00000
+DEAL::546 1.00000
+DEAL::547 1.00000
+DEAL::548 1.00000
+DEAL::549 1.00000
+DEAL::550 1.00000
+DEAL::551 1.00000
+DEAL::552 1.00000
+DEAL::553 1.00000
+DEAL::554 1.00000
+DEAL::555 0
+DEAL::556 0
+DEAL::557 0
+DEAL::558 0
+DEAL::559 0
+DEAL::560 0
+DEAL::561 0
+DEAL::562 0
+DEAL::563 2.00000
+DEAL::564 2.00000
+DEAL::565 2.00000
+DEAL::566 2.00000
+DEAL::567 2.00000
+DEAL::568 2.00000
+DEAL::569 2.00000
+DEAL::570 2.00000
 DEAL::571 4.00000
 DEAL::572 4.00000
 DEAL::573 4.00000
@@ -930,432 +930,432 @@ DEAL::576 4.00000
 DEAL::577 4.00000
 DEAL::578 4.00000
 DEAL::579 2.00000
-DEAL::580 2.00000
+DEAL::580 0
 DEAL::581 2.00000
-DEAL::582 2.00000
-DEAL::583 3.00000
-DEAL::584 1.00000
-DEAL::585 0
-DEAL::586 0
-DEAL::587 0
-DEAL::588 3.00000
-DEAL::589 3.00000
-DEAL::590 3.00000
-DEAL::591 3.00000
-DEAL::592 2.00000
-DEAL::593 2.00000
-DEAL::594 2.00000
-DEAL::595 2.00000
-DEAL::596 0
-DEAL::597 4.00000
-DEAL::598 4.00000
-DEAL::599 4.00000
-DEAL::600 3.00000
-DEAL::601 3.00000
-DEAL::602 3.00000
-DEAL::603 3.00000
+DEAL::582 0
+DEAL::583 1.00000
+DEAL::584 4.00000
+DEAL::585 3.00000
+DEAL::586 3.00000
+DEAL::587 3.00000
+DEAL::588 1.00000
+DEAL::589 1.00000
+DEAL::590 1.00000
+DEAL::591 1.00000
+DEAL::592 0
+DEAL::593 0
+DEAL::594 0
+DEAL::595 0
+DEAL::596 3.00000
+DEAL::597 2.00000
+DEAL::598 2.00000
+DEAL::599 2.00000
+DEAL::600 1.00000
+DEAL::601 1.00000
+DEAL::602 1.00000
+DEAL::603 1.00000
 DEAL::604 4.00000
 DEAL::605 4.00000
 DEAL::606 4.00000
-DEAL::607 0
-DEAL::608 0
-DEAL::609 0
-DEAL::610 3.00000
-DEAL::611 3.00000
-DEAL::612 3.00000
-DEAL::613 3.00000
-DEAL::614 3.00000
-DEAL::615 3.00000
-DEAL::616 3.00000
-DEAL::617 0
-DEAL::618 0
-DEAL::619 0
-DEAL::620 4.00000
-DEAL::621 4.00000
-DEAL::622 4.00000
-DEAL::623 4.00000
-DEAL::624 2.00000
-DEAL::625 2.00000
-DEAL::626 2.00000
-DEAL::627 1.00000
-DEAL::628 1.00000
-DEAL::629 1.00000
-DEAL::630 3.00000
-DEAL::631 3.00000
-DEAL::632 3.00000
-DEAL::633 4.00000
-DEAL::634 0
-DEAL::635 0
-DEAL::636 0
-DEAL::637 3.00000
-DEAL::638 3.00000
-DEAL::639 3.00000
-DEAL::640 3.00000
-DEAL::641 3.00000
-DEAL::642 3.00000
-DEAL::643 3.00000
-DEAL::644 2.00000
-DEAL::645 2.00000
-DEAL::646 2.00000
+DEAL::607 3.00000
+DEAL::608 3.00000
+DEAL::609 3.00000
+DEAL::610 1.00000
+DEAL::611 1.00000
+DEAL::612 1.00000
+DEAL::613 1.00000
+DEAL::614 1.00000
+DEAL::615 0
+DEAL::616 0
+DEAL::617 3.00000
+DEAL::618 3.00000
+DEAL::619 3.00000
+DEAL::620 2.00000
+DEAL::621 2.00000
+DEAL::622 2.00000
+DEAL::623 2.00000
+DEAL::624 0
+DEAL::625 0
+DEAL::626 0
+DEAL::627 4.00000
+DEAL::628 4.00000
+DEAL::629 4.00000
+DEAL::630 0
+DEAL::631 0
+DEAL::632 0
+DEAL::633 0
+DEAL::634 3.00000
+DEAL::635 3.00000
+DEAL::636 3.00000
+DEAL::637 1.00000
+DEAL::638 1.00000
+DEAL::639 1.00000
+DEAL::640 1.00000
+DEAL::641 1.00000
+DEAL::642 1.00000
+DEAL::643 1.00000
+DEAL::644 0
+DEAL::645 0
+DEAL::646 0
 DEAL::647 4.00000
 DEAL::648 4.00000
 DEAL::649 4.00000
-DEAL::650 4.00000
-DEAL::651 4.00000
-DEAL::652 4.00000
-DEAL::653 4.00000
-DEAL::654 0
-DEAL::655 0
-DEAL::656 0
-DEAL::657 0
-DEAL::658 0
-DEAL::659 0
-DEAL::660 0
-DEAL::661 0
-DEAL::662 0
-DEAL::663 0
-DEAL::664 3.00000
-DEAL::665 3.00000
-DEAL::666 3.00000
-DEAL::667 3.00000
-DEAL::668 3.00000
-DEAL::669 3.00000
-DEAL::670 0
-DEAL::671 0
-DEAL::672 0
-DEAL::673 0
-DEAL::674 1.00000
-DEAL::675 1.00000
-DEAL::676 1.00000
+DEAL::650 2.00000
+DEAL::651 2.00000
+DEAL::652 2.00000
+DEAL::653 2.00000
+DEAL::654 3.00000
+DEAL::655 3.00000
+DEAL::656 3.00000
+DEAL::657 3.00000
+DEAL::658 3.00000
+DEAL::659 3.00000
+DEAL::660 3.00000
+DEAL::661 3.00000
+DEAL::662 3.00000
+DEAL::663 3.00000
+DEAL::664 1.00000
+DEAL::665 1.00000
+DEAL::666 1.00000
+DEAL::667 1.00000
+DEAL::668 1.00000
+DEAL::669 1.00000
+DEAL::670 3.00000
+DEAL::671 3.00000
+DEAL::672 3.00000
+DEAL::673 3.00000
+DEAL::674 2.00000
+DEAL::675 2.00000
+DEAL::676 2.00000
 DEAL::677 2.00000
 DEAL::678 2.00000
 DEAL::679 2.00000
-DEAL::680 1.00000
-DEAL::681 1.00000
-DEAL::682 1.00000
-DEAL::683 1.00000
-DEAL::684 3.00000
-DEAL::685 3.00000
-DEAL::686 3.00000
-DEAL::687 2.00000
-DEAL::688 2.00000
-DEAL::689 2.00000
-DEAL::690 2.00000
-DEAL::691 2.00000
-DEAL::692 2.00000
-DEAL::693 2.00000
-DEAL::694 3.00000
-DEAL::695 3.00000
-DEAL::696 3.00000
-DEAL::697 3.00000
+DEAL::680 3.00000
+DEAL::681 3.00000
+DEAL::682 3.00000
+DEAL::683 3.00000
+DEAL::684 4.00000
+DEAL::685 4.00000
+DEAL::686 4.00000
+DEAL::687 0
+DEAL::688 0
+DEAL::689 0
+DEAL::690 0
+DEAL::691 0
+DEAL::692 0
+DEAL::693 0
+DEAL::694 1.00000
+DEAL::695 1.00000
+DEAL::696 0
+DEAL::697 0
 DEAL::698 4.00000
 DEAL::699 4.00000
 DEAL::700 4.00000
 DEAL::701 4.00000
-DEAL::702 0
-DEAL::703 0
-DEAL::704 0
-DEAL::705 0
-DEAL::706 3.00000
-DEAL::707 3.00000
-DEAL::708 3.00000
-DEAL::709 3.00000
-DEAL::710 3.00000
-DEAL::711 3.00000
-DEAL::712 3.00000
-DEAL::713 3.00000
-DEAL::714 2.00000
-DEAL::715 3.00000
-DEAL::716 2.00000
-DEAL::717 2.00000
-DEAL::718 3.00000
-DEAL::719 3.00000
-DEAL::720 3.00000
-DEAL::721 3.00000
-DEAL::722 0
-DEAL::723 0
-DEAL::724 0
-DEAL::725 0
-DEAL::726 4.00000
-DEAL::727 4.00000
-DEAL::728 4.00000
-DEAL::729 4.00000
-DEAL::730 2.00000
-DEAL::731 2.00000
-DEAL::732 2.00000
-DEAL::733 2.00000
-DEAL::734 2.00000
-DEAL::735 2.00000
-DEAL::736 2.00000
-DEAL::737 2.00000
-DEAL::738 1.00000
-DEAL::739 1.00000
-DEAL::740 1.00000
-DEAL::741 1.00000
-DEAL::742 1.00000
-DEAL::743 1.00000
-DEAL::744 1.00000
-DEAL::745 1.00000
-DEAL::746 1.00000
-DEAL::747 1.00000
-DEAL::748 1.00000
-DEAL::749 1.00000
-DEAL::750 0
-DEAL::751 0
-DEAL::752 0
-DEAL::753 0
-DEAL::754 0
-DEAL::755 0
-DEAL::756 0
-DEAL::757 0
-DEAL::758 0
-DEAL::759 0
-DEAL::760 0
-DEAL::761 0
-DEAL::762 3.00000
-DEAL::763 3.00000
-DEAL::764 3.00000
-DEAL::765 3.00000
-DEAL::766 3.00000
-DEAL::767 3.00000
-DEAL::768 3.00000
-DEAL::769 3.00000
-DEAL::770 2.00000
-DEAL::771 2.00000
-DEAL::772 2.00000
-DEAL::773 2.00000
-DEAL::774 2.00000
-DEAL::775 2.00000
-DEAL::776 2.00000
-DEAL::777 2.00000
-DEAL::778 0
-DEAL::779 0
-DEAL::780 0
-DEAL::781 0
-DEAL::782 0
-DEAL::783 0
-DEAL::784 0
-DEAL::785 0
+DEAL::702 3.00000
+DEAL::703 3.00000
+DEAL::704 3.00000
+DEAL::705 3.00000
+DEAL::706 4.00000
+DEAL::707 1.00000
+DEAL::708 4.00000
+DEAL::709 1.00000
+DEAL::710 1.00000
+DEAL::711 1.00000
+DEAL::712 1.00000
+DEAL::713 1.00000
+DEAL::714 0
+DEAL::715 0
+DEAL::716 0
+DEAL::717 0
+DEAL::718 0
+DEAL::719 1.00000
+DEAL::720 0
+DEAL::721 0
+DEAL::722 3.00000
+DEAL::723 3.00000
+DEAL::724 3.00000
+DEAL::725 3.00000
+DEAL::726 2.00000
+DEAL::727 2.00000
+DEAL::728 2.00000
+DEAL::729 2.00000
+DEAL::730 0
+DEAL::731 0
+DEAL::732 0
+DEAL::733 0
+DEAL::734 0
+DEAL::735 0
+DEAL::736 0
+DEAL::737 0
+DEAL::738 4.00000
+DEAL::739 4.00000
+DEAL::740 4.00000
+DEAL::741 4.00000
+DEAL::742 4.00000
+DEAL::743 4.00000
+DEAL::744 4.00000
+DEAL::745 4.00000
+DEAL::746 4.00000
+DEAL::747 4.00000
+DEAL::748 4.00000
+DEAL::749 4.00000
+DEAL::750 3.00000
+DEAL::751 3.00000
+DEAL::752 3.00000
+DEAL::753 3.00000
+DEAL::754 3.00000
+DEAL::755 3.00000
+DEAL::756 3.00000
+DEAL::757 3.00000
+DEAL::758 3.00000
+DEAL::759 3.00000
+DEAL::760 3.00000
+DEAL::761 3.00000
+DEAL::762 1.00000
+DEAL::763 1.00000
+DEAL::764 1.00000
+DEAL::765 1.00000
+DEAL::766 1.00000
+DEAL::767 1.00000
+DEAL::768 1.00000
+DEAL::769 1.00000
+DEAL::770 0
+DEAL::771 0
+DEAL::772 0
+DEAL::773 0
+DEAL::774 0
+DEAL::775 0
+DEAL::776 0
+DEAL::777 0
+DEAL::778 3.00000
+DEAL::779 3.00000
+DEAL::780 3.00000
+DEAL::781 3.00000
+DEAL::782 3.00000
+DEAL::783 3.00000
+DEAL::784 3.00000
+DEAL::785 3.00000
 DEAL::786 4.00000
 DEAL::787 4.00000
-DEAL::788 4.00000
-DEAL::789 4.00000
-DEAL::790 4.00000
-DEAL::791 4.00000
-DEAL::792 4.00000
-DEAL::793 4.00000
-DEAL::794 4.00000
-DEAL::795 4.00000
-DEAL::796 4.00000
-DEAL::797 4.00000
-DEAL::798 2.00000
-DEAL::799 2.00000
-DEAL::800 2.00000
-DEAL::801 2.00000
-DEAL::802 0
-DEAL::803 0
-DEAL::804 0
-DEAL::805 0
-DEAL::806 0
-DEAL::807 0
-DEAL::808 0
-DEAL::809 0
-DEAL::810 3.00000
-DEAL::811 3.00000
-DEAL::812 3.00000
-DEAL::813 3.00000
-DEAL::814 3.00000
-DEAL::815 3.00000
-DEAL::816 3.00000
-DEAL::817 3.00000
-DEAL::818 3.00000
-DEAL::819 3.00000
-DEAL::820 3.00000
-DEAL::821 3.00000
-DEAL::822 3.00000
-DEAL::823 3.00000
-DEAL::824 3.00000
-DEAL::825 3.00000
-DEAL::826 0
-DEAL::827 0
-DEAL::828 0
-DEAL::829 0
-DEAL::830 1.00000
-DEAL::831 1.00000
-DEAL::832 1.00000
-DEAL::833 1.00000
-DEAL::834 1.00000
-DEAL::835 1.00000
-DEAL::836 1.00000
-DEAL::837 1.00000
-DEAL::838 1.00000
-DEAL::839 1.00000
-DEAL::840 1.00000
-DEAL::841 1.00000
+DEAL::788 1.00000
+DEAL::789 1.00000
+DEAL::790 1.00000
+DEAL::791 1.00000
+DEAL::792 1.00000
+DEAL::793 1.00000
+DEAL::794 2.00000
+DEAL::795 2.00000
+DEAL::796 2.00000
+DEAL::797 2.00000
+DEAL::798 0
+DEAL::799 0
+DEAL::800 0
+DEAL::801 0
+DEAL::802 3.00000
+DEAL::803 3.00000
+DEAL::804 3.00000
+DEAL::805 3.00000
+DEAL::806 3.00000
+DEAL::807 3.00000
+DEAL::808 3.00000
+DEAL::809 3.00000
+DEAL::810 4.00000
+DEAL::811 4.00000
+DEAL::812 4.00000
+DEAL::813 4.00000
+DEAL::814 4.00000
+DEAL::815 1.00000
+DEAL::816 1.00000
+DEAL::817 1.00000
+DEAL::818 0
+DEAL::819 1.00000
+DEAL::820 0
+DEAL::821 1.00000
+DEAL::822 0
+DEAL::823 1.00000
+DEAL::824 0
+DEAL::825 1.00000
+DEAL::826 3.00000
+DEAL::827 3.00000
+DEAL::828 3.00000
+DEAL::829 3.00000
+DEAL::830 4.00000
+DEAL::831 4.00000
+DEAL::832 4.00000
+DEAL::833 4.00000
+DEAL::834 4.00000
+DEAL::835 4.00000
+DEAL::836 4.00000
+DEAL::837 4.00000
+DEAL::838 2.00000
+DEAL::839 2.00000
+DEAL::840 2.00000
+DEAL::841 2.00000
 DEAL::842 2.00000
 DEAL::843 2.00000
 DEAL::844 2.00000
 DEAL::845 2.00000
-DEAL::846 1.00000
-DEAL::847 1.00000
-DEAL::848 1.00000
-DEAL::849 1.00000
-DEAL::850 3.00000
-DEAL::851 3.00000
-DEAL::852 3.00000
-DEAL::853 3.00000
-DEAL::854 3.00000
-DEAL::855 3.00000
-DEAL::856 3.00000
-DEAL::857 3.00000
-DEAL::858 2.00000
-DEAL::859 2.00000
-DEAL::860 2.00000
-DEAL::861 2.00000
-DEAL::862 2.00000
-DEAL::863 2.00000
-DEAL::864 2.00000
-DEAL::865 2.00000
-DEAL::866 2.00000
-DEAL::867 2.00000
-DEAL::868 2.00000
-DEAL::869 2.00000
-DEAL::870 2.00000
-DEAL::871 2.00000
-DEAL::872 2.00000
-DEAL::873 2.00000
-DEAL::874 1.00000
+DEAL::846 3.00000
+DEAL::847 3.00000
+DEAL::848 2.00000
+DEAL::849 2.00000
+DEAL::850 2.00000
+DEAL::851 4.00000
+DEAL::852 2.00000
+DEAL::853 4.00000
+DEAL::854 2.00000
+DEAL::855 2.00000
+DEAL::856 2.00000
+DEAL::857 2.00000
+DEAL::858 0
+DEAL::859 0
+DEAL::860 0
+DEAL::861 0
+DEAL::862 0
+DEAL::863 0
+DEAL::864 0
+DEAL::865 0
+DEAL::866 0
+DEAL::867 0
+DEAL::868 0
+DEAL::869 0
+DEAL::870 0
+DEAL::871 0
+DEAL::872 0
+DEAL::873 0
+DEAL::874 4.00000
 DEAL::875 4.00000
-DEAL::876 1.00000
+DEAL::876 4.00000
 DEAL::877 4.00000
-DEAL::878 3.00000
-DEAL::879 3.00000
-DEAL::880 3.00000
-DEAL::881 3.00000
-DEAL::882 0
-DEAL::883 0
-DEAL::884 0
-DEAL::885 0
-DEAL::886 3.00000
-DEAL::887 3.00000
-DEAL::888 3.00000
-DEAL::889 3.00000
-DEAL::890 2.00000
-DEAL::891 2.00000
-DEAL::892 2.00000
-DEAL::893 2.00000
-DEAL::894 0
-DEAL::895 0
-DEAL::896 0
-DEAL::897 0
+DEAL::878 1.00000
+DEAL::879 1.00000
+DEAL::880 1.00000
+DEAL::881 1.00000
+DEAL::882 3.00000
+DEAL::883 3.00000
+DEAL::884 3.00000
+DEAL::885 3.00000
+DEAL::886 1.00000
+DEAL::887 1.00000
+DEAL::888 1.00000
+DEAL::889 1.00000
+DEAL::890 0
+DEAL::891 0
+DEAL::892 0
+DEAL::893 0
+DEAL::894 3.00000
+DEAL::895 3.00000
+DEAL::896 3.00000
+DEAL::897 3.00000
 DEAL::898 4.00000
 DEAL::899 4.00000
 DEAL::900 4.00000
 DEAL::901 4.00000
-DEAL::902 2.00000
-DEAL::903 2.00000
-DEAL::904 2.00000
-DEAL::905 2.00000
-DEAL::906 0
-DEAL::907 0
-DEAL::908 0
-DEAL::909 0
-DEAL::910 1.00000
-DEAL::911 1.00000
-DEAL::912 1.00000
-DEAL::913 1.00000
-DEAL::914 3.00000
-DEAL::915 3.00000
-DEAL::916 3.00000
-DEAL::917 3.00000
-DEAL::918 1.00000
-DEAL::919 1.00000
-DEAL::920 1.00000
-DEAL::921 1.00000
-DEAL::922 1.00000
-DEAL::923 1.00000
-DEAL::924 4.00000
-DEAL::925 4.00000
-DEAL::926 2.00000
-DEAL::927 2.00000
-DEAL::928 2.00000
-DEAL::929 2.00000
-DEAL::930 0
-DEAL::931 1.00000
-DEAL::932 0
-DEAL::933 1.00000
-DEAL::934 0
-DEAL::935 0
-DEAL::936 0
-DEAL::937 0
-DEAL::938 1.00000
-DEAL::939 1.00000
-DEAL::940 1.00000
-DEAL::941 1.00000
-DEAL::942 1.00000
-DEAL::943 1.00000
-DEAL::944 1.00000
-DEAL::945 1.00000
-DEAL::946 2.00000
-DEAL::947 2.00000
-DEAL::948 2.00000
-DEAL::949 2.00000
-DEAL::950 2.00000
-DEAL::951 2.00000
-DEAL::952 2.00000
-DEAL::953 2.00000
-DEAL::954 0
-DEAL::955 0
-DEAL::956 0
-DEAL::957 0
-DEAL::958 1.00000
-DEAL::959 1.00000
-DEAL::960 1.00000
-DEAL::961 1.00000
+DEAL::902 0
+DEAL::903 0
+DEAL::904 0
+DEAL::905 0
+DEAL::906 3.00000
+DEAL::907 3.00000
+DEAL::908 3.00000
+DEAL::909 3.00000
+DEAL::910 4.00000
+DEAL::911 4.00000
+DEAL::912 4.00000
+DEAL::913 4.00000
+DEAL::914 4.00000
+DEAL::915 4.00000
+DEAL::916 0
+DEAL::917 0
+DEAL::918 4.00000
+DEAL::919 4.00000
+DEAL::920 4.00000
+DEAL::921 4.00000
+DEAL::922 2.00000
+DEAL::923 2.00000
+DEAL::924 2.00000
+DEAL::925 2.00000
+DEAL::926 0
+DEAL::927 0
+DEAL::928 0
+DEAL::929 0
+DEAL::930 3.00000
+DEAL::931 3.00000
+DEAL::932 2.00000
+DEAL::933 2.00000
+DEAL::934 3.00000
+DEAL::935 3.00000
+DEAL::936 3.00000
+DEAL::937 3.00000
+DEAL::938 3.00000
+DEAL::939 3.00000
+DEAL::940 3.00000
+DEAL::941 3.00000
+DEAL::942 2.00000
+DEAL::943 2.00000
+DEAL::944 2.00000
+DEAL::945 2.00000
+DEAL::946 0
+DEAL::947 0
+DEAL::948 0
+DEAL::949 0
+DEAL::950 0
+DEAL::951 0
+DEAL::952 0
+DEAL::953 0
+DEAL::954 3.00000
+DEAL::955 3.00000
+DEAL::956 3.00000
+DEAL::957 3.00000
+DEAL::958 4.00000
+DEAL::959 4.00000
+DEAL::960 4.00000
+DEAL::961 4.00000
 DEAL::962 4.00000
 DEAL::963 4.00000
 DEAL::964 4.00000
 DEAL::965 4.00000
 DEAL::966 4.00000
 DEAL::967 4.00000
-DEAL::968 4.00000
-DEAL::969 4.00000
-DEAL::970 1.00000
-DEAL::971 1.00000
-DEAL::972 1.00000
-DEAL::973 1.00000
-DEAL::974 4.00000
-DEAL::975 4.00000
-DEAL::976 4.00000
-DEAL::977 4.00000
-DEAL::978 4.00000
-DEAL::979 4.00000
-DEAL::980 4.00000
-DEAL::981 4.00000
-DEAL::982 1.00000
-DEAL::983 1.00000
-DEAL::984 1.00000
-DEAL::985 1.00000
-DEAL::986 1.00000
-DEAL::987 1.00000
-DEAL::988 1.00000
-DEAL::989 1.00000
-DEAL::990 1.00000
-DEAL::991 1.00000
-DEAL::992 1.00000
-DEAL::993 1.00000
-DEAL::994 1.00000
-DEAL::995 1.00000
-DEAL::996 1.00000
-DEAL::997 1.00000
+DEAL::968 1.00000
+DEAL::969 1.00000
+DEAL::970 2.00000
+DEAL::971 2.00000
+DEAL::972 2.00000
+DEAL::973 2.00000
+DEAL::974 1.00000
+DEAL::975 1.00000
+DEAL::976 1.00000
+DEAL::977 1.00000
+DEAL::978 1.00000
+DEAL::979 1.00000
+DEAL::980 1.00000
+DEAL::981 1.00000
+DEAL::982 2.00000
+DEAL::983 2.00000
+DEAL::984 2.00000
+DEAL::985 2.00000
+DEAL::986 2.00000
+DEAL::987 2.00000
+DEAL::988 2.00000
+DEAL::989 2.00000
+DEAL::990 4.00000
+DEAL::991 4.00000
+DEAL::992 4.00000
+DEAL::993 4.00000
+DEAL::994 2.00000
+DEAL::995 2.00000
+DEAL::996 2.00000
+DEAL::997 2.00000
 DEAL::998 2.00000
 DEAL::999 2.00000
 DEAL::1000 2.00000
 DEAL::1001 2.00000
-DEAL::1002 4.00000
-DEAL::1003 4.00000
-DEAL::1004 4.00000
-DEAL::1005 4.00000
+DEAL::1002 2.00000
+DEAL::1003 2.00000
+DEAL::1004 2.00000
+DEAL::1005 2.00000
 DEAL::1006 2.00000
 DEAL::1007 2.00000
 DEAL::1008 2.00000
@@ -1364,631 +1364,631 @@ DEAL::1010 2.00000
 DEAL::1011 2.00000
 DEAL::1012 2.00000
 DEAL::1013 2.00000
-DEAL::1014 3.00000
-DEAL::1015 1.00000
+DEAL::1014 1.00000
+DEAL::1015 4.00000
 DEAL::1016 4.00000
-DEAL::1017 1.00000
-DEAL::1018 3.00000
-DEAL::1019 3.00000
-DEAL::1020 3.00000
-DEAL::1021 3.00000
-DEAL::1022 3.00000
-DEAL::1023 3.00000
-DEAL::1024 3.00000
-DEAL::1025 3.00000
-DEAL::1026 3.00000
-DEAL::1027 3.00000
-DEAL::1028 3.00000
-DEAL::1029 3.00000
-DEAL::1030 3.00000
-DEAL::1031 3.00000
-DEAL::1032 0
-DEAL::1033 0
-DEAL::1034 0
-DEAL::1035 3.00000
-DEAL::1036 3.00000
-DEAL::1037 3.00000
-DEAL::1038 3.00000
-DEAL::1039 3.00000
-DEAL::1040 3.00000
-DEAL::1041 3.00000
-DEAL::1042 3.00000
-DEAL::1043 1.00000
-DEAL::1044 1.00000
-DEAL::1045 1.00000
-DEAL::1046 1.00000
+DEAL::1017 4.00000
+DEAL::1018 1.00000
+DEAL::1019 1.00000
+DEAL::1020 1.00000
+DEAL::1021 1.00000
+DEAL::1022 1.00000
+DEAL::1023 1.00000
+DEAL::1024 1.00000
+DEAL::1025 1.00000
+DEAL::1026 1.00000
+DEAL::1027 1.00000
+DEAL::1028 1.00000
+DEAL::1029 1.00000
+DEAL::1030 1.00000
+DEAL::1031 1.00000
+DEAL::1032 3.00000
+DEAL::1033 3.00000
+DEAL::1034 3.00000
+DEAL::1035 1.00000
+DEAL::1036 1.00000
+DEAL::1037 1.00000
+DEAL::1038 1.00000
+DEAL::1039 1.00000
+DEAL::1040 1.00000
+DEAL::1041 1.00000
+DEAL::1042 1.00000
+DEAL::1043 4.00000
+DEAL::1044 4.00000
+DEAL::1045 4.00000
+DEAL::1046 4.00000
 DEAL::1047 4.00000
 DEAL::1048 4.00000
 DEAL::1049 4.00000
 DEAL::1050 4.00000
-DEAL::1051 0
-DEAL::1052 0
-DEAL::1053 0
-DEAL::1054 0
-DEAL::1055 3.00000
-DEAL::1056 3.00000
-DEAL::1057 3.00000
-DEAL::1058 3.00000
-DEAL::1059 3.00000
-DEAL::1060 3.00000
-DEAL::1061 3.00000
-DEAL::1062 3.00000
-DEAL::1063 3.00000
-DEAL::1064 3.00000
-DEAL::1065 3.00000
-DEAL::1066 3.00000
-DEAL::1067 3.00000
-DEAL::1068 3.00000
-DEAL::1069 3.00000
-DEAL::1070 3.00000
-DEAL::1071 0
-DEAL::1072 0
-DEAL::1073 0
-DEAL::1074 0
-DEAL::1075 0
-DEAL::1076 0
-DEAL::1077 0
-DEAL::1078 0
-DEAL::1079 4.00000
-DEAL::1080 4.00000
-DEAL::1081 4.00000
-DEAL::1082 4.00000
+DEAL::1051 3.00000
+DEAL::1052 3.00000
+DEAL::1053 3.00000
+DEAL::1054 3.00000
+DEAL::1055 1.00000
+DEAL::1056 1.00000
+DEAL::1057 1.00000
+DEAL::1058 1.00000
+DEAL::1059 1.00000
+DEAL::1060 1.00000
+DEAL::1061 1.00000
+DEAL::1062 1.00000
+DEAL::1063 1.00000
+DEAL::1064 1.00000
+DEAL::1065 1.00000
+DEAL::1066 1.00000
+DEAL::1067 1.00000
+DEAL::1068 1.00000
+DEAL::1069 1.00000
+DEAL::1070 1.00000
+DEAL::1071 3.00000
+DEAL::1072 3.00000
+DEAL::1073 3.00000
+DEAL::1074 3.00000
+DEAL::1075 3.00000
+DEAL::1076 3.00000
+DEAL::1077 3.00000
+DEAL::1078 3.00000
+DEAL::1079 2.00000
+DEAL::1080 2.00000
+DEAL::1081 2.00000
+DEAL::1082 2.00000
 DEAL::1083 4.00000
 DEAL::1084 4.00000
 DEAL::1085 4.00000
 DEAL::1086 4.00000
-DEAL::1087 0
-DEAL::1088 0
-DEAL::1089 0
-DEAL::1090 0
-DEAL::1091 3.00000
-DEAL::1092 3.00000
-DEAL::1093 3.00000
-DEAL::1094 3.00000
-DEAL::1095 0
-DEAL::1096 0
-DEAL::1097 0
-DEAL::1098 0
-DEAL::1099 2.00000
-DEAL::1100 2.00000
-DEAL::1101 2.00000
-DEAL::1102 2.00000
-DEAL::1103 1.00000
-DEAL::1104 1.00000
-DEAL::1105 1.00000
-DEAL::1106 1.00000
-DEAL::1107 0
-DEAL::1108 0
-DEAL::1109 0
-DEAL::1110 0
-DEAL::1111 3.00000
-DEAL::1112 3.00000
-DEAL::1113 3.00000
-DEAL::1114 3.00000
-DEAL::1115 2.00000
-DEAL::1116 2.00000
-DEAL::1117 2.00000
-DEAL::1118 2.00000
+DEAL::1087 3.00000
+DEAL::1088 3.00000
+DEAL::1089 3.00000
+DEAL::1090 3.00000
+DEAL::1091 0
+DEAL::1092 1.00000
+DEAL::1093 0
+DEAL::1094 1.00000
+DEAL::1095 3.00000
+DEAL::1096 3.00000
+DEAL::1097 3.00000
+DEAL::1098 3.00000
+DEAL::1099 0
+DEAL::1100 0
+DEAL::1101 0
+DEAL::1102 0
+DEAL::1103 4.00000
+DEAL::1104 4.00000
+DEAL::1105 4.00000
+DEAL::1106 4.00000
+DEAL::1107 3.00000
+DEAL::1108 3.00000
+DEAL::1109 3.00000
+DEAL::1110 3.00000
+DEAL::1111 1.00000
+DEAL::1112 1.00000
+DEAL::1113 1.00000
+DEAL::1114 1.00000
+DEAL::1115 0
+DEAL::1116 0
+DEAL::1117 0
+DEAL::1118 0
 DEAL::1119 4.00000
 DEAL::1120 4.00000
 DEAL::1121 4.00000
 DEAL::1122 4.00000
-DEAL::1123 0
-DEAL::1124 0
-DEAL::1125 0
-DEAL::1126 0
-DEAL::1127 0
-DEAL::1128 0
-DEAL::1129 0
-DEAL::1130 0
-DEAL::1131 3.00000
-DEAL::1132 3.00000
-DEAL::1133 3.00000
-DEAL::1134 3.00000
-DEAL::1135 3.00000
-DEAL::1136 3.00000
-DEAL::1137 3.00000
-DEAL::1138 3.00000
-DEAL::1139 1.00000
-DEAL::1140 1.00000
-DEAL::1141 1.00000
-DEAL::1142 1.00000
+DEAL::1123 3.00000
+DEAL::1124 3.00000
+DEAL::1125 3.00000
+DEAL::1126 3.00000
+DEAL::1127 3.00000
+DEAL::1128 3.00000
+DEAL::1129 3.00000
+DEAL::1130 3.00000
+DEAL::1131 1.00000
+DEAL::1132 1.00000
+DEAL::1133 1.00000
+DEAL::1134 1.00000
+DEAL::1135 1.00000
+DEAL::1136 1.00000
+DEAL::1137 1.00000
+DEAL::1138 1.00000
+DEAL::1139 2.00000
+DEAL::1140 2.00000
+DEAL::1141 2.00000
+DEAL::1142 2.00000
 DEAL::1143 2.00000
 DEAL::1144 2.00000
 DEAL::1145 2.00000
 DEAL::1146 2.00000
-DEAL::1147 3.00000
-DEAL::1148 3.00000
-DEAL::1149 3.00000
-DEAL::1150 3.00000
-DEAL::1151 2.00000
-DEAL::1152 2.00000
-DEAL::1153 2.00000
-DEAL::1154 2.00000
-DEAL::1155 3.00000
-DEAL::1156 3.00000
-DEAL::1157 3.00000
-DEAL::1158 3.00000
-DEAL::1159 3.00000
-DEAL::1160 3.00000
-DEAL::1161 3.00000
-DEAL::1162 3.00000
-DEAL::1163 3.00000
-DEAL::1164 3.00000
-DEAL::1165 3.00000
+DEAL::1147 4.00000
+DEAL::1148 4.00000
+DEAL::1149 4.00000
+DEAL::1150 4.00000
+DEAL::1151 0
+DEAL::1152 0
+DEAL::1153 0
+DEAL::1154 0
+DEAL::1155 1.00000
+DEAL::1156 1.00000
+DEAL::1157 1.00000
+DEAL::1158 1.00000
+DEAL::1159 1.00000
+DEAL::1160 1.00000
+DEAL::1161 1.00000
+DEAL::1162 1.00000
+DEAL::1163 1.00000
+DEAL::1164 1.00000
+DEAL::1165 1.00000
 DEAL::1166 4.00000
 DEAL::1167 4.00000
 DEAL::1168 4.00000
 DEAL::1169 4.00000
-DEAL::1170 3.00000
-DEAL::1171 3.00000
-DEAL::1172 3.00000
-DEAL::1173 3.00000
-DEAL::1174 3.00000
-DEAL::1175 3.00000
-DEAL::1176 3.00000
-DEAL::1177 3.00000
-DEAL::1178 0
-DEAL::1179 0
-DEAL::1180 0
-DEAL::1181 0
-DEAL::1182 3.00000
-DEAL::1183 3.00000
-DEAL::1184 3.00000
-DEAL::1185 3.00000
+DEAL::1170 1.00000
+DEAL::1171 1.00000
+DEAL::1172 1.00000
+DEAL::1173 1.00000
+DEAL::1174 1.00000
+DEAL::1175 1.00000
+DEAL::1176 1.00000
+DEAL::1177 1.00000
+DEAL::1178 3.00000
+DEAL::1179 3.00000
+DEAL::1180 3.00000
+DEAL::1181 3.00000
+DEAL::1182 1.00000
+DEAL::1183 1.00000
+DEAL::1184 1.00000
+DEAL::1185 1.00000
 DEAL::DoF association:
-DEAL::0 4
-DEAL::1 4
-DEAL::2 4
-DEAL::3 4
-DEAL::4 4
-DEAL::5 4
-DEAL::6 4
-DEAL::7 4
-DEAL::8 4
-DEAL::9 4
-DEAL::10 4
-DEAL::11 3
-DEAL::12 4
-DEAL::13 3
-DEAL::14 3
-DEAL::15 3
-DEAL::16 3
-DEAL::17 3
-DEAL::18 4
-DEAL::19 4
-DEAL::20 2
-DEAL::21 4
-DEAL::22 4
-DEAL::23 4
-DEAL::24 4
-DEAL::25 4
-DEAL::26 4
-DEAL::27 4
-DEAL::28 4
-DEAL::29 4
-DEAL::30 4
-DEAL::31 4
-DEAL::32 4
-DEAL::33 4
-DEAL::34 4
-DEAL::35 4
-DEAL::36 4
-DEAL::37 0
-DEAL::38 0
-DEAL::39 0
-DEAL::40 0
-DEAL::41 0
-DEAL::42 0
-DEAL::43 0
-DEAL::44 0
-DEAL::45 0
-DEAL::46 0
-DEAL::47 0
-DEAL::48 0
-DEAL::49 0
-DEAL::50 0
-DEAL::51 0
-DEAL::52 0
-DEAL::53 0
-DEAL::54 1
-DEAL::55 1
-DEAL::56 3
-DEAL::57 3
-DEAL::58 1
-DEAL::59 1
-DEAL::60 1
-DEAL::61 1
-DEAL::62 1
-DEAL::63 1
-DEAL::64 1
-DEAL::65 1
-DEAL::66 1
-DEAL::67 1
-DEAL::68 1
-DEAL::69 1
-DEAL::70 1
-DEAL::71 1
-DEAL::72 1
-DEAL::73 1
-DEAL::74 4
-DEAL::75 4
-DEAL::76 4
-DEAL::77 4
-DEAL::78 4
-DEAL::79 4
-DEAL::80 4
+DEAL::0 0
+DEAL::1 0
+DEAL::2 0
+DEAL::3 0
+DEAL::4 0
+DEAL::5 0
+DEAL::6 0
+DEAL::7 0
+DEAL::8 0
+DEAL::9 1
+DEAL::10 1
+DEAL::11 1
+DEAL::12 1
+DEAL::13 1
+DEAL::14 1
+DEAL::15 1
+DEAL::16 1
+DEAL::17 1
+DEAL::18 0
+DEAL::19 0
+DEAL::20 0
+DEAL::21 0
+DEAL::22 0
+DEAL::23 0
+DEAL::24 0
+DEAL::25 0
+DEAL::26 0
+DEAL::27 0
+DEAL::28 0
+DEAL::29 0
+DEAL::30 0
+DEAL::31 0
+DEAL::32 0
+DEAL::33 0
+DEAL::34 0
+DEAL::35 0
+DEAL::36 0
+DEAL::37 3
+DEAL::38 3
+DEAL::39 3
+DEAL::40 3
+DEAL::41 3
+DEAL::42 3
+DEAL::43 3
+DEAL::44 3
+DEAL::45 3
+DEAL::46 3
+DEAL::47 3
+DEAL::48 3
+DEAL::49 3
+DEAL::50 3
+DEAL::51 3
+DEAL::52 3
+DEAL::53 3
+DEAL::54 4
+DEAL::55 4
+DEAL::56 4
+DEAL::57 4
+DEAL::58 4
+DEAL::59 4
+DEAL::60 4
+DEAL::61 4
+DEAL::62 4
+DEAL::63 4
+DEAL::64 4
+DEAL::65 4
+DEAL::66 4
+DEAL::67 4
+DEAL::68 4
+DEAL::69 4
+DEAL::70 4
+DEAL::71 4
+DEAL::72 2
+DEAL::73 2
+DEAL::74 2
+DEAL::75 2
+DEAL::76 2
+DEAL::77 2
+DEAL::78 2
+DEAL::79 2
+DEAL::80 2
 DEAL::81 2
-DEAL::82 4
-DEAL::83 4
-DEAL::84 4
+DEAL::82 2
+DEAL::83 2
+DEAL::84 2
 DEAL::85 2
-DEAL::86 4
-DEAL::87 4
-DEAL::88 4
+DEAL::86 2
+DEAL::87 2
+DEAL::88 2
 DEAL::89 2
 DEAL::90 2
 DEAL::91 2
 DEAL::92 2
 DEAL::93 2
 DEAL::94 2
-DEAL::95 2
-DEAL::96 2
-DEAL::97 2
-DEAL::98 2
-DEAL::99 2
-DEAL::100 2
-DEAL::101 2
-DEAL::102 2
-DEAL::103 2
-DEAL::104 2
-DEAL::105 2
-DEAL::106 2
-DEAL::107 2
-DEAL::108 2
-DEAL::109 2
-DEAL::110 0
-DEAL::111 0
-DEAL::112 0
-DEAL::113 0
-DEAL::114 0
-DEAL::115 0
-DEAL::116 0
-DEAL::117 0
-DEAL::118 0
-DEAL::119 0
-DEAL::120 0
-DEAL::121 0
-DEAL::122 0
-DEAL::123 0
-DEAL::124 0
-DEAL::125 1
-DEAL::126 1
-DEAL::127 1
-DEAL::128 1
-DEAL::129 1
-DEAL::130 1
-DEAL::131 1
-DEAL::132 1
-DEAL::133 1
-DEAL::134 1
-DEAL::135 1
-DEAL::136 2
-DEAL::137 1
-DEAL::138 1
-DEAL::139 1
-DEAL::140 1
-DEAL::141 1
+DEAL::95 0
+DEAL::96 0
+DEAL::97 0
+DEAL::98 0
+DEAL::99 0
+DEAL::100 0
+DEAL::101 0
+DEAL::102 0
+DEAL::103 0
+DEAL::104 0
+DEAL::105 0
+DEAL::106 0
+DEAL::107 0
+DEAL::108 0
+DEAL::109 0
+DEAL::110 3
+DEAL::111 3
+DEAL::112 3
+DEAL::113 3
+DEAL::114 3
+DEAL::115 3
+DEAL::116 3
+DEAL::117 2
+DEAL::118 3
+DEAL::119 3
+DEAL::120 2
+DEAL::121 3
+DEAL::122 2
+DEAL::123 2
+DEAL::124 2
+DEAL::125 4
+DEAL::126 4
+DEAL::127 2
+DEAL::128 4
+DEAL::129 4
+DEAL::130 4
+DEAL::131 4
+DEAL::132 4
+DEAL::133 2
+DEAL::134 2
+DEAL::135 2
+DEAL::136 0
+DEAL::137 2
+DEAL::138 2
+DEAL::139 2
+DEAL::140 2
+DEAL::141 2
 DEAL::142 2
-DEAL::143 2
+DEAL::143 0
 DEAL::144 2
-DEAL::145 2
-DEAL::146 2
-DEAL::147 2
-DEAL::148 2
-DEAL::149 2
-DEAL::150 2
-DEAL::151 4
-DEAL::152 4
+DEAL::145 0
+DEAL::146 0
+DEAL::147 0
+DEAL::148 0
+DEAL::149 0
+DEAL::150 0
+DEAL::151 2
+DEAL::152 2
 DEAL::153 2
-DEAL::154 4
-DEAL::155 2
+DEAL::154 2
+DEAL::155 0
 DEAL::156 2
 DEAL::157 2
 DEAL::158 2
-DEAL::159 2
-DEAL::160 2
-DEAL::161 2
-DEAL::162 2
-DEAL::163 0
-DEAL::164 0
-DEAL::165 0
-DEAL::166 0
-DEAL::167 0
-DEAL::168 0
-DEAL::169 0
-DEAL::170 1
-DEAL::171 1
-DEAL::172 1
-DEAL::173 1
-DEAL::174 1
-DEAL::175 1
-DEAL::176 1
-DEAL::177 1
-DEAL::178 1
-DEAL::179 0
-DEAL::180 0
-DEAL::181 0
-DEAL::182 0
-DEAL::183 0
-DEAL::184 0
-DEAL::185 0
-DEAL::186 0
-DEAL::187 0
-DEAL::188 0
-DEAL::189 0
-DEAL::190 0
-DEAL::191 0
-DEAL::192 0
-DEAL::193 0
-DEAL::194 0
-DEAL::195 0
-DEAL::196 1
-DEAL::197 0
-DEAL::198 1
-DEAL::199 0
-DEAL::200 1
-DEAL::201 0
-DEAL::202 0
-DEAL::203 0
-DEAL::204 1
-DEAL::205 1
-DEAL::206 1
-DEAL::207 1
-DEAL::208 1
-DEAL::209 1
-DEAL::210 1
-DEAL::211 1
-DEAL::212 0
-DEAL::213 1
-DEAL::214 1
-DEAL::215 1
-DEAL::216 1
-DEAL::217 1
-DEAL::218 1
-DEAL::219 1
-DEAL::220 4
-DEAL::221 4
-DEAL::222 4
-DEAL::223 4
-DEAL::224 4
-DEAL::225 4
-DEAL::226 4
-DEAL::227 3
-DEAL::228 3
-DEAL::229 4
-DEAL::230 4
-DEAL::231 4
-DEAL::232 4
-DEAL::233 4
-DEAL::234 1
-DEAL::235 1
-DEAL::236 1
-DEAL::237 1
-DEAL::238 1
-DEAL::239 1
-DEAL::240 4
-DEAL::241 4
-DEAL::242 4
-DEAL::243 4
-DEAL::244 4
-DEAL::245 4
-DEAL::246 4
-DEAL::247 4
-DEAL::248 4
-DEAL::249 4
-DEAL::250 4
-DEAL::251 4
-DEAL::252 4
-DEAL::253 4
-DEAL::254 4
-DEAL::255 4
-DEAL::256 4
-DEAL::257 4
-DEAL::258 2
-DEAL::259 2
-DEAL::260 2
-DEAL::261 2
-DEAL::262 2
-DEAL::263 4
-DEAL::264 2
-DEAL::265 2
-DEAL::266 2
-DEAL::267 4
-DEAL::268 4
-DEAL::269 4
-DEAL::270 4
-DEAL::271 4
-DEAL::272 4
-DEAL::273 2
-DEAL::274 4
-DEAL::275 4
-DEAL::276 2
-DEAL::277 4
-DEAL::278 4
-DEAL::279 4
-DEAL::280 4
-DEAL::281 4
-DEAL::282 4
-DEAL::283 4
-DEAL::284 4
-DEAL::285 4
-DEAL::286 4
-DEAL::287 4
-DEAL::288 4
-DEAL::289 4
-DEAL::290 4
-DEAL::291 0
-DEAL::292 0
-DEAL::293 0
-DEAL::294 0
-DEAL::295 0
-DEAL::296 0
-DEAL::297 0
-DEAL::298 0
-DEAL::299 0
-DEAL::300 0
-DEAL::301 0
-DEAL::302 0
-DEAL::303 0
-DEAL::304 0
-DEAL::305 1
-DEAL::306 1
-DEAL::307 1
-DEAL::308 1
-DEAL::309 1
-DEAL::310 1
-DEAL::311 1
-DEAL::312 1
-DEAL::313 1
-DEAL::314 1
-DEAL::315 1
-DEAL::316 1
-DEAL::317 1
-DEAL::318 1
-DEAL::319 1
+DEAL::159 0
+DEAL::160 0
+DEAL::161 0
+DEAL::162 0
+DEAL::163 3
+DEAL::164 3
+DEAL::165 3
+DEAL::166 3
+DEAL::167 3
+DEAL::168 3
+DEAL::169 3
+DEAL::170 4
+DEAL::171 4
+DEAL::172 4
+DEAL::173 4
+DEAL::174 4
+DEAL::175 4
+DEAL::176 4
+DEAL::177 4
+DEAL::178 4
+DEAL::179 3
+DEAL::180 3
+DEAL::181 3
+DEAL::182 3
+DEAL::183 3
+DEAL::184 3
+DEAL::185 3
+DEAL::186 3
+DEAL::187 3
+DEAL::188 4
+DEAL::189 3
+DEAL::190 4
+DEAL::191 3
+DEAL::192 4
+DEAL::193 3
+DEAL::194 3
+DEAL::195 3
+DEAL::196 4
+DEAL::197 4
+DEAL::198 4
+DEAL::199 4
+DEAL::200 4
+DEAL::201 4
+DEAL::202 4
+DEAL::203 4
+DEAL::204 4
+DEAL::205 4
+DEAL::206 4
+DEAL::207 4
+DEAL::208 4
+DEAL::209 4
+DEAL::210 4
+DEAL::211 4
+DEAL::212 4
+DEAL::213 4
+DEAL::214 4
+DEAL::215 4
+DEAL::216 4
+DEAL::217 4
+DEAL::218 4
+DEAL::219 4
+DEAL::220 1
+DEAL::221 1
+DEAL::222 1
+DEAL::223 1
+DEAL::224 1
+DEAL::225 1
+DEAL::226 1
+DEAL::227 1
+DEAL::228 1
+DEAL::229 1
+DEAL::230 1
+DEAL::231 1
+DEAL::232 1
+DEAL::233 1
+DEAL::234 2
+DEAL::235 2
+DEAL::236 2
+DEAL::237 2
+DEAL::238 2
+DEAL::239 2
+DEAL::240 1
+DEAL::241 1
+DEAL::242 1
+DEAL::243 1
+DEAL::244 1
+DEAL::245 1
+DEAL::246 1
+DEAL::247 1
+DEAL::248 1
+DEAL::249 1
+DEAL::250 1
+DEAL::251 0
+DEAL::252 1
+DEAL::253 1
+DEAL::254 1
+DEAL::255 1
+DEAL::256 1
+DEAL::257 1
+DEAL::258 0
+DEAL::259 0
+DEAL::260 0
+DEAL::261 0
+DEAL::262 0
+DEAL::263 0
+DEAL::264 0
+DEAL::265 0
+DEAL::266 0
+DEAL::267 0
+DEAL::268 0
+DEAL::269 0
+DEAL::270 0
+DEAL::271 0
+DEAL::272 0
+DEAL::273 0
+DEAL::274 0
+DEAL::275 0
+DEAL::276 0
+DEAL::277 0
+DEAL::278 0
+DEAL::279 0
+DEAL::280 0
+DEAL::281 0
+DEAL::282 0
+DEAL::283 0
+DEAL::284 0
+DEAL::285 0
+DEAL::286 0
+DEAL::287 0
+DEAL::288 0
+DEAL::289 0
+DEAL::290 0
+DEAL::291 2
+DEAL::292 3
+DEAL::293 2
+DEAL::294 2
+DEAL::295 2
+DEAL::296 2
+DEAL::297 3
+DEAL::298 2
+DEAL::299 2
+DEAL::300 2
+DEAL::301 2
+DEAL::302 3
+DEAL::303 2
+DEAL::304 2
+DEAL::305 2
+DEAL::306 2
+DEAL::307 2
+DEAL::308 2
+DEAL::309 2
+DEAL::310 2
+DEAL::311 2
+DEAL::312 2
+DEAL::313 2
+DEAL::314 4
+DEAL::315 4
+DEAL::316 4
+DEAL::317 4
+DEAL::318 4
+DEAL::319 4
 DEAL::320 4
-DEAL::321 1
-DEAL::322 1
-DEAL::323 1
-DEAL::324 1
-DEAL::325 1
-DEAL::326 1
-DEAL::327 1
+DEAL::321 4
+DEAL::322 4
+DEAL::323 4
+DEAL::324 4
+DEAL::325 4
+DEAL::326 4
+DEAL::327 4
 DEAL::328 2
 DEAL::329 2
 DEAL::330 2
 DEAL::331 2
 DEAL::332 2
-DEAL::333 1
+DEAL::333 2
 DEAL::334 2
 DEAL::335 2
-DEAL::336 4
+DEAL::336 2
 DEAL::337 2
-DEAL::338 4
+DEAL::338 2
 DEAL::339 2
-DEAL::340 4
-DEAL::341 4
-DEAL::342 4
-DEAL::343 4
-DEAL::344 4
-DEAL::345 2
-DEAL::346 2
-DEAL::347 2
-DEAL::348 2
-DEAL::349 2
-DEAL::350 2
-DEAL::351 2
-DEAL::352 2
-DEAL::353 2
-DEAL::354 2
-DEAL::355 2
-DEAL::356 2
-DEAL::357 0
-DEAL::358 0
-DEAL::359 0
-DEAL::360 0
-DEAL::361 0
-DEAL::362 0
-DEAL::363 0
-DEAL::364 0
-DEAL::365 0
-DEAL::366 0
-DEAL::367 1
-DEAL::368 0
-DEAL::369 0
-DEAL::370 0
-DEAL::371 4
-DEAL::372 4
-DEAL::373 4
-DEAL::374 4
-DEAL::375 4
-DEAL::376 4
-DEAL::377 4
-DEAL::378 4
-DEAL::379 4
-DEAL::380 4
-DEAL::381 4
-DEAL::382 4
-DEAL::383 4
-DEAL::384 4
-DEAL::385 4
-DEAL::386 4
-DEAL::387 4
-DEAL::388 4
-DEAL::389 3
-DEAL::390 4
-DEAL::391 3
-DEAL::392 3
-DEAL::393 3
-DEAL::394 3
-DEAL::395 3
-DEAL::396 3
-DEAL::397 3
-DEAL::398 3
-DEAL::399 3
-DEAL::400 3
-DEAL::401 4
-DEAL::402 4
-DEAL::403 4
-DEAL::404 4
-DEAL::405 4
-DEAL::406 4
-DEAL::407 4
-DEAL::408 4
-DEAL::409 4
-DEAL::410 4
-DEAL::411 4
-DEAL::412 4
-DEAL::413 4
-DEAL::414 4
-DEAL::415 4
-DEAL::416 4
-DEAL::417 2
-DEAL::418 2
-DEAL::419 2
-DEAL::420 2
-DEAL::421 2
-DEAL::422 2
-DEAL::423 2
-DEAL::424 2
-DEAL::425 2
-DEAL::426 2
-DEAL::427 2
-DEAL::428 2
-DEAL::429 2
-DEAL::430 4
-DEAL::431 4
-DEAL::432 4
-DEAL::433 4
-DEAL::434 4
-DEAL::435 4
-DEAL::436 4
-DEAL::437 4
-DEAL::438 4
-DEAL::439 4
-DEAL::440 0
-DEAL::441 0
-DEAL::442 0
-DEAL::443 0
-DEAL::444 1
-DEAL::445 1
-DEAL::446 1
-DEAL::447 1
-DEAL::448 1
-DEAL::449 1
-DEAL::450 1
-DEAL::451 1
+DEAL::340 2
+DEAL::341 2
+DEAL::342 2
+DEAL::343 2
+DEAL::344 2
+DEAL::345 0
+DEAL::346 0
+DEAL::347 0
+DEAL::348 0
+DEAL::349 0
+DEAL::350 0
+DEAL::351 0
+DEAL::352 0
+DEAL::353 0
+DEAL::354 0
+DEAL::355 0
+DEAL::356 0
+DEAL::357 3
+DEAL::358 3
+DEAL::359 3
+DEAL::360 3
+DEAL::361 3
+DEAL::362 3
+DEAL::363 3
+DEAL::364 3
+DEAL::365 3
+DEAL::366 3
+DEAL::367 4
+DEAL::368 4
+DEAL::369 4
+DEAL::370 4
+DEAL::371 1
+DEAL::372 1
+DEAL::373 1
+DEAL::374 1
+DEAL::375 1
+DEAL::376 1
+DEAL::377 1
+DEAL::378 1
+DEAL::379 1
+DEAL::380 1
+DEAL::381 1
+DEAL::382 1
+DEAL::383 1
+DEAL::384 1
+DEAL::385 1
+DEAL::386 1
+DEAL::387 1
+DEAL::388 1
+DEAL::389 1
+DEAL::390 1
+DEAL::391 1
+DEAL::392 1
+DEAL::393 1
+DEAL::394 1
+DEAL::395 1
+DEAL::396 1
+DEAL::397 1
+DEAL::398 1
+DEAL::399 1
+DEAL::400 1
+DEAL::401 1
+DEAL::402 1
+DEAL::403 1
+DEAL::404 1
+DEAL::405 1
+DEAL::406 1
+DEAL::407 1
+DEAL::408 1
+DEAL::409 1
+DEAL::410 1
+DEAL::411 1
+DEAL::412 1
+DEAL::413 1
+DEAL::414 1
+DEAL::415 1
+DEAL::416 1
+DEAL::417 0
+DEAL::418 0
+DEAL::419 0
+DEAL::420 0
+DEAL::421 0
+DEAL::422 0
+DEAL::423 0
+DEAL::424 0
+DEAL::425 0
+DEAL::426 0
+DEAL::427 0
+DEAL::428 0
+DEAL::429 0
+DEAL::430 0
+DEAL::431 0
+DEAL::432 0
+DEAL::433 0
+DEAL::434 0
+DEAL::435 0
+DEAL::436 0
+DEAL::437 0
+DEAL::438 0
+DEAL::439 0
+DEAL::440 2
+DEAL::441 2
+DEAL::442 2
+DEAL::443 2
+DEAL::444 2
+DEAL::445 2
+DEAL::446 2
+DEAL::447 2
+DEAL::448 2
+DEAL::449 2
+DEAL::450 2
+DEAL::451 2
 DEAL::452 4
 DEAL::453 4
 DEAL::454 4
@@ -1999,9 +1999,9 @@ DEAL::458 4
 DEAL::459 4
 DEAL::460 4
 DEAL::461 4
-DEAL::462 1
+DEAL::462 4
 DEAL::463 4
-DEAL::464 1
+DEAL::464 4
 DEAL::465 4
 DEAL::466 4
 DEAL::467 4
@@ -2025,424 +2025,424 @@ DEAL::484 4
 DEAL::485 4
 DEAL::486 4
 DEAL::487 4
-DEAL::488 2
-DEAL::489 2
-DEAL::490 2
-DEAL::491 2
-DEAL::492 2
-DEAL::493 2
-DEAL::494 2
-DEAL::495 2
-DEAL::496 2
+DEAL::488 0
+DEAL::489 0
+DEAL::490 0
+DEAL::491 0
+DEAL::492 0
+DEAL::493 0
+DEAL::494 0
+DEAL::495 0
+DEAL::496 0
 DEAL::497 2
-DEAL::498 2
-DEAL::499 2
-DEAL::500 2
-DEAL::501 2
-DEAL::502 2
-DEAL::503 2
-DEAL::504 2
-DEAL::505 2
-DEAL::506 2
-DEAL::507 2
-DEAL::508 0
-DEAL::509 0
-DEAL::510 1
-DEAL::511 0
-DEAL::512 0
-DEAL::513 0
-DEAL::514 0
-DEAL::515 0
-DEAL::516 1
-DEAL::517 1
-DEAL::518 1
-DEAL::519 1
-DEAL::520 1
-DEAL::521 1
-DEAL::522 0
-DEAL::523 0
-DEAL::524 1
-DEAL::525 1
-DEAL::526 1
-DEAL::527 1
-DEAL::528 1
-DEAL::529 1
-DEAL::530 1
-DEAL::531 1
-DEAL::532 1
-DEAL::533 1
-DEAL::534 1
-DEAL::535 1
-DEAL::536 1
-DEAL::537 1
-DEAL::538 1
-DEAL::539 1
-DEAL::540 1
-DEAL::541 1
-DEAL::542 1
-DEAL::543 0
-DEAL::544 0
-DEAL::545 0
-DEAL::546 0
-DEAL::547 0
-DEAL::548 0
-DEAL::549 0
-DEAL::550 0
-DEAL::551 0
-DEAL::552 0
-DEAL::553 0
-DEAL::554 0
-DEAL::555 0
-DEAL::556 0
-DEAL::557 1
-DEAL::558 1
-DEAL::559 1
-DEAL::560 1
-DEAL::561 1
-DEAL::562 1
-DEAL::563 1
-DEAL::564 1
-DEAL::565 1
-DEAL::566 1
-DEAL::567 1
-DEAL::568 1
-DEAL::569 1
-DEAL::570 1
-DEAL::571 1
-DEAL::572 1
-DEAL::573 1
-DEAL::574 1
-DEAL::575 1
-DEAL::576 1
-DEAL::577 1
-DEAL::578 1
-DEAL::579 1
-DEAL::580 1
-DEAL::581 1
-DEAL::582 1
-DEAL::583 1
-DEAL::584 1
-DEAL::585 4
-DEAL::586 4
-DEAL::587 4
-DEAL::588 4
-DEAL::589 4
-DEAL::590 4
-DEAL::591 4
-DEAL::592 4
-DEAL::593 4
-DEAL::594 4
-DEAL::595 4
-DEAL::596 4
-DEAL::597 4
-DEAL::598 4
-DEAL::599 4
-DEAL::600 4
-DEAL::601 4
-DEAL::602 4
-DEAL::603 4
-DEAL::604 2
-DEAL::605 2
-DEAL::606 2
-DEAL::607 2
-DEAL::608 2
-DEAL::609 2
-DEAL::610 2
-DEAL::611 2
-DEAL::612 2
-DEAL::613 2
-DEAL::614 2
-DEAL::615 2
-DEAL::616 2
-DEAL::617 2
-DEAL::618 2
-DEAL::619 2
-DEAL::620 3
-DEAL::621 3
-DEAL::622 3
-DEAL::623 3
-DEAL::624 3
-DEAL::625 3
-DEAL::626 3
-DEAL::627 3
-DEAL::628 3
-DEAL::629 4
-DEAL::630 4
-DEAL::631 4
-DEAL::632 4
-DEAL::633 4
-DEAL::634 4
-DEAL::635 4
-DEAL::636 4
-DEAL::637 4
-DEAL::638 0
-DEAL::639 0
-DEAL::640 0
-DEAL::641 0
-DEAL::642 0
-DEAL::643 0
-DEAL::644 0
-DEAL::645 0
-DEAL::646 0
-DEAL::647 3
-DEAL::648 3
-DEAL::649 3
-DEAL::650 3
-DEAL::651 3
-DEAL::652 3
-DEAL::653 3
-DEAL::654 3
-DEAL::655 3
-DEAL::656 3
-DEAL::657 3
-DEAL::658 3
-DEAL::659 3
-DEAL::660 3
-DEAL::661 3
-DEAL::662 3
-DEAL::663 3
-DEAL::664 3
-DEAL::665 3
-DEAL::666 3
-DEAL::667 3
-DEAL::668 3
-DEAL::669 3
-DEAL::670 3
-DEAL::671 3
-DEAL::672 2
-DEAL::673 2
-DEAL::674 2
-DEAL::675 2
-DEAL::676 2
-DEAL::677 2
-DEAL::678 2
-DEAL::679 2
-DEAL::680 2
-DEAL::681 2
-DEAL::682 2
-DEAL::683 2
-DEAL::684 2
-DEAL::685 2
-DEAL::686 2
-DEAL::687 2
-DEAL::688 2
-DEAL::689 3
-DEAL::690 3
-DEAL::691 3
-DEAL::692 3
-DEAL::693 3
-DEAL::694 3
-DEAL::695 0
-DEAL::696 0
-DEAL::697 0
-DEAL::698 0
-DEAL::699 0
-DEAL::700 0
-DEAL::701 0
-DEAL::702 0
-DEAL::703 0
-DEAL::704 4
-DEAL::705 4
-DEAL::706 4
-DEAL::707 4
-DEAL::708 4
-DEAL::709 4
-DEAL::710 4
-DEAL::711 4
-DEAL::712 4
-DEAL::713 2
-DEAL::714 2
-DEAL::715 2
-DEAL::716 2
-DEAL::717 2
-DEAL::718 2
-DEAL::719 2
-DEAL::720 2
-DEAL::721 2
-DEAL::722 3
-DEAL::723 2
-DEAL::724 3
-DEAL::725 3
-DEAL::726 3
-DEAL::727 3
-DEAL::728 3
-DEAL::729 3
-DEAL::730 4
-DEAL::731 2
-DEAL::732 4
-DEAL::733 3
-DEAL::734 3
-DEAL::735 4
-DEAL::736 4
-DEAL::737 4
-DEAL::738 4
-DEAL::739 4
-DEAL::740 3
-DEAL::741 3
-DEAL::742 3
-DEAL::743 3
-DEAL::744 3
-DEAL::745 3
-DEAL::746 3
-DEAL::747 3
-DEAL::748 3
-DEAL::749 3
-DEAL::750 3
-DEAL::751 3
-DEAL::752 3
-DEAL::753 3
-DEAL::754 3
-DEAL::755 3
-DEAL::756 3
-DEAL::757 3
-DEAL::758 3
-DEAL::759 3
-DEAL::760 3
-DEAL::761 2
-DEAL::762 2
-DEAL::763 2
-DEAL::764 2
-DEAL::765 2
-DEAL::766 2
-DEAL::767 2
-DEAL::768 2
-DEAL::769 0
-DEAL::770 0
-DEAL::771 0
-DEAL::772 0
-DEAL::773 0
-DEAL::774 0
-DEAL::775 0
-DEAL::776 0
-DEAL::777 0
-DEAL::778 0
-DEAL::779 0
-DEAL::780 0
-DEAL::781 0
-DEAL::782 0
-DEAL::783 0
-DEAL::784 0
-DEAL::785 4
+DEAL::498 0
+DEAL::499 0
+DEAL::500 0
+DEAL::501 0
+DEAL::502 0
+DEAL::503 0
+DEAL::504 0
+DEAL::505 0
+DEAL::506 0
+DEAL::507 0
+DEAL::508 4
+DEAL::509 4
+DEAL::510 4
+DEAL::511 4
+DEAL::512 4
+DEAL::513 4
+DEAL::514 4
+DEAL::515 4
+DEAL::516 4
+DEAL::517 4
+DEAL::518 4
+DEAL::519 4
+DEAL::520 4
+DEAL::521 4
+DEAL::522 4
+DEAL::523 4
+DEAL::524 4
+DEAL::525 4
+DEAL::526 4
+DEAL::527 4
+DEAL::528 4
+DEAL::529 4
+DEAL::530 4
+DEAL::531 4
+DEAL::532 4
+DEAL::533 4
+DEAL::534 4
+DEAL::535 4
+DEAL::536 4
+DEAL::537 4
+DEAL::538 4
+DEAL::539 4
+DEAL::540 4
+DEAL::541 4
+DEAL::542 4
+DEAL::543 3
+DEAL::544 3
+DEAL::545 3
+DEAL::546 3
+DEAL::547 3
+DEAL::548 3
+DEAL::549 3
+DEAL::550 3
+DEAL::551 3
+DEAL::552 3
+DEAL::553 3
+DEAL::554 3
+DEAL::555 3
+DEAL::556 3
+DEAL::557 4
+DEAL::558 4
+DEAL::559 4
+DEAL::560 4
+DEAL::561 4
+DEAL::562 4
+DEAL::563 4
+DEAL::564 4
+DEAL::565 4
+DEAL::566 4
+DEAL::567 4
+DEAL::568 4
+DEAL::569 4
+DEAL::570 4
+DEAL::571 4
+DEAL::572 2
+DEAL::573 2
+DEAL::574 2
+DEAL::575 2
+DEAL::576 2
+DEAL::577 2
+DEAL::578 2
+DEAL::579 2
+DEAL::580 2
+DEAL::581 2
+DEAL::582 2
+DEAL::583 2
+DEAL::584 2
+DEAL::585 2
+DEAL::586 2
+DEAL::587 2
+DEAL::588 2
+DEAL::589 2
+DEAL::590 2
+DEAL::591 2
+DEAL::592 2
+DEAL::593 2
+DEAL::594 2
+DEAL::595 2
+DEAL::596 2
+DEAL::597 2
+DEAL::598 2
+DEAL::599 2
+DEAL::600 2
+DEAL::601 2
+DEAL::602 2
+DEAL::603 2
+DEAL::604 0
+DEAL::605 0
+DEAL::606 0
+DEAL::607 0
+DEAL::608 0
+DEAL::609 0
+DEAL::610 0
+DEAL::611 0
+DEAL::612 0
+DEAL::613 0
+DEAL::614 0
+DEAL::615 0
+DEAL::616 0
+DEAL::617 0
+DEAL::618 0
+DEAL::619 0
+DEAL::620 1
+DEAL::621 1
+DEAL::622 0
+DEAL::623 0
+DEAL::624 0
+DEAL::625 0
+DEAL::626 0
+DEAL::627 0
+DEAL::628 0
+DEAL::629 4
+DEAL::630 4
+DEAL::631 4
+DEAL::632 4
+DEAL::633 4
+DEAL::634 4
+DEAL::635 4
+DEAL::636 4
+DEAL::637 4
+DEAL::638 3
+DEAL::639 3
+DEAL::640 3
+DEAL::641 3
+DEAL::642 3
+DEAL::643 3
+DEAL::644 3
+DEAL::645 3
+DEAL::646 3
+DEAL::647 1
+DEAL::648 1
+DEAL::649 1
+DEAL::650 1
+DEAL::651 1
+DEAL::652 1
+DEAL::653 1
+DEAL::654 1
+DEAL::655 4
+DEAL::656 1
+DEAL::657 1
+DEAL::658 4
+DEAL::659 1
+DEAL::660 1
+DEAL::661 1
+DEAL::662 1
+DEAL::663 1
+DEAL::664 1
+DEAL::665 1
+DEAL::666 1
+DEAL::667 1
+DEAL::668 1
+DEAL::669 1
+DEAL::670 1
+DEAL::671 1
+DEAL::672 0
+DEAL::673 0
+DEAL::674 0
+DEAL::675 0
+DEAL::676 0
+DEAL::677 0
+DEAL::678 0
+DEAL::679 0
+DEAL::680 0
+DEAL::681 0
+DEAL::682 0
+DEAL::683 0
+DEAL::684 0
+DEAL::685 0
+DEAL::686 0
+DEAL::687 0
+DEAL::688 0
+DEAL::689 0
+DEAL::690 0
+DEAL::691 0
+DEAL::692 0
+DEAL::693 0
+DEAL::694 0
+DEAL::695 3
+DEAL::696 3
+DEAL::697 3
+DEAL::698 3
+DEAL::699 3
+DEAL::700 3
+DEAL::701 3
+DEAL::702 3
+DEAL::703 3
+DEAL::704 2
+DEAL::705 2
+DEAL::706 2
+DEAL::707 2
+DEAL::708 2
+DEAL::709 2
+DEAL::710 2
+DEAL::711 2
+DEAL::712 2
+DEAL::713 0
+DEAL::714 0
+DEAL::715 0
+DEAL::716 0
+DEAL::717 0
+DEAL::718 0
+DEAL::719 0
+DEAL::720 0
+DEAL::721 0
+DEAL::722 0
+DEAL::723 0
+DEAL::724 0
+DEAL::725 0
+DEAL::726 0
+DEAL::727 0
+DEAL::728 0
+DEAL::729 0
+DEAL::730 0
+DEAL::731 0
+DEAL::732 0
+DEAL::733 0
+DEAL::734 0
+DEAL::735 0
+DEAL::736 0
+DEAL::737 0
+DEAL::738 0
+DEAL::739 0
+DEAL::740 1
+DEAL::741 1
+DEAL::742 1
+DEAL::743 1
+DEAL::744 1
+DEAL::745 1
+DEAL::746 1
+DEAL::747 1
+DEAL::748 1
+DEAL::749 1
+DEAL::750 1
+DEAL::751 1
+DEAL::752 1
+DEAL::753 1
+DEAL::754 1
+DEAL::755 1
+DEAL::756 1
+DEAL::757 1
+DEAL::758 1
+DEAL::759 1
+DEAL::760 1
+DEAL::761 0
+DEAL::762 0
+DEAL::763 0
+DEAL::764 0
+DEAL::765 0
+DEAL::766 0
+DEAL::767 0
+DEAL::768 0
+DEAL::769 3
+DEAL::770 3
+DEAL::771 3
+DEAL::772 3
+DEAL::773 3
+DEAL::774 3
+DEAL::775 3
+DEAL::776 3
+DEAL::777 3
+DEAL::778 3
+DEAL::779 3
+DEAL::780 3
+DEAL::781 3
+DEAL::782 3
+DEAL::783 3
+DEAL::784 3
+DEAL::785 1
 DEAL::786 4
-DEAL::787 4
-DEAL::788 4
-DEAL::789 4
-DEAL::790 4
-DEAL::791 4
-DEAL::792 4
-DEAL::793 4
-DEAL::794 4
-DEAL::795 4
-DEAL::796 4
-DEAL::797 4
-DEAL::798 4
-DEAL::799 4
-DEAL::800 4
-DEAL::801 4
-DEAL::802 4
-DEAL::803 4
-DEAL::804 4
-DEAL::805 4
-DEAL::806 4
-DEAL::807 2
-DEAL::808 2
-DEAL::809 2
-DEAL::810 2
-DEAL::811 2
-DEAL::812 2
-DEAL::813 2
-DEAL::814 2
-DEAL::815 2
-DEAL::816 2
-DEAL::817 2
-DEAL::818 2
-DEAL::819 2
-DEAL::820 2
-DEAL::821 2
-DEAL::822 2
-DEAL::823 2
-DEAL::824 2
-DEAL::825 2
-DEAL::826 2
-DEAL::827 0
-DEAL::828 0
-DEAL::829 0
-DEAL::830 0
-DEAL::831 0
-DEAL::832 0
-DEAL::833 0
-DEAL::834 0
-DEAL::835 0
-DEAL::836 0
-DEAL::837 0
-DEAL::838 0
-DEAL::839 0
-DEAL::840 0
-DEAL::841 0
-DEAL::842 0
-DEAL::843 0
-DEAL::844 0
-DEAL::845 0
-DEAL::846 0
-DEAL::847 0
-DEAL::848 3
-DEAL::849 3
-DEAL::850 3
-DEAL::851 3
-DEAL::852 3
-DEAL::853 3
-DEAL::854 3
-DEAL::855 3
-DEAL::856 3
-DEAL::857 3
-DEAL::858 3
-DEAL::859 3
-DEAL::860 3
-DEAL::861 3
-DEAL::862 3
-DEAL::863 3
-DEAL::864 0
-DEAL::865 0
-DEAL::866 0
-DEAL::867 0
-DEAL::868 0
-DEAL::869 0
-DEAL::870 0
-DEAL::871 0
-DEAL::872 0
-DEAL::873 0
-DEAL::874 0
-DEAL::875 0
-DEAL::876 0
-DEAL::877 0
-DEAL::878 0
-DEAL::879 0
-DEAL::880 1
-DEAL::881 1
-DEAL::882 1
-DEAL::883 1
-DEAL::884 1
-DEAL::885 1
-DEAL::886 1
-DEAL::887 1
-DEAL::888 1
-DEAL::889 1
-DEAL::890 1
-DEAL::891 1
-DEAL::892 1
-DEAL::893 1
-DEAL::894 1
-DEAL::895 1
-DEAL::896 1
-DEAL::897 1
-DEAL::898 1
-DEAL::899 1
-DEAL::900 1
-DEAL::901 1
-DEAL::902 1
-DEAL::903 1
-DEAL::904 1
-DEAL::905 1
+DEAL::787 1
+DEAL::788 1
+DEAL::789 1
+DEAL::790 1
+DEAL::791 1
+DEAL::792 1
+DEAL::793 2
+DEAL::794 2
+DEAL::795 2
+DEAL::796 2
+DEAL::797 2
+DEAL::798 2
+DEAL::799 2
+DEAL::800 2
+DEAL::801 2
+DEAL::802 2
+DEAL::803 2
+DEAL::804 2
+DEAL::805 2
+DEAL::806 2
+DEAL::807 0
+DEAL::808 0
+DEAL::809 0
+DEAL::810 0
+DEAL::811 0
+DEAL::812 0
+DEAL::813 0
+DEAL::814 0
+DEAL::815 0
+DEAL::816 0
+DEAL::817 0
+DEAL::818 0
+DEAL::819 0
+DEAL::820 0
+DEAL::821 0
+DEAL::822 0
+DEAL::823 0
+DEAL::824 0
+DEAL::825 0
+DEAL::826 0
+DEAL::827 3
+DEAL::828 3
+DEAL::829 3
+DEAL::830 3
+DEAL::831 3
+DEAL::832 3
+DEAL::833 3
+DEAL::834 3
+DEAL::835 3
+DEAL::836 3
+DEAL::837 3
+DEAL::838 3
+DEAL::839 3
+DEAL::840 3
+DEAL::841 3
+DEAL::842 3
+DEAL::843 3
+DEAL::844 3
+DEAL::845 3
+DEAL::846 3
+DEAL::847 3
+DEAL::848 4
+DEAL::849 4
+DEAL::850 4
+DEAL::851 4
+DEAL::852 4
+DEAL::853 4
+DEAL::854 4
+DEAL::855 4
+DEAL::856 4
+DEAL::857 4
+DEAL::858 1
+DEAL::859 4
+DEAL::860 4
+DEAL::861 4
+DEAL::862 4
+DEAL::863 4
+DEAL::864 3
+DEAL::865 3
+DEAL::866 3
+DEAL::867 3
+DEAL::868 3
+DEAL::869 3
+DEAL::870 3
+DEAL::871 3
+DEAL::872 3
+DEAL::873 3
+DEAL::874 3
+DEAL::875 3
+DEAL::876 3
+DEAL::877 3
+DEAL::878 3
+DEAL::879 3
+DEAL::880 4
+DEAL::881 4
+DEAL::882 4
+DEAL::883 4
+DEAL::884 4
+DEAL::885 4
+DEAL::886 4
+DEAL::887 4
+DEAL::888 4
+DEAL::889 4
+DEAL::890 4
+DEAL::891 4
+DEAL::892 4
+DEAL::893 2
+DEAL::894 2
+DEAL::895 2
+DEAL::896 2
+DEAL::897 2
+DEAL::898 2
+DEAL::899 2
+DEAL::900 2
+DEAL::901 2
+DEAL::902 2
+DEAL::903 2
+DEAL::904 2
+DEAL::905 2
 DEAL::906 2
 DEAL::907 2
 DEAL::908 2
@@ -2456,254 +2456,254 @@ DEAL::915 2
 DEAL::916 2
 DEAL::917 2
 DEAL::918 2
-DEAL::919 0
-DEAL::920 0
-DEAL::921 0
-DEAL::922 0
-DEAL::923 0
-DEAL::924 0
-DEAL::925 0
-DEAL::926 0
-DEAL::927 0
-DEAL::928 0
-DEAL::929 0
-DEAL::930 0
-DEAL::931 0
-DEAL::932 0
-DEAL::933 0
-DEAL::934 0
-DEAL::935 0
-DEAL::936 0
-DEAL::937 0
-DEAL::938 0
-DEAL::939 0
-DEAL::940 1
-DEAL::941 1
-DEAL::942 1
-DEAL::943 1
-DEAL::944 1
-DEAL::945 1
-DEAL::946 1
-DEAL::947 1
-DEAL::948 1
-DEAL::949 1
-DEAL::950 1
-DEAL::951 1
-DEAL::952 1
-DEAL::953 1
-DEAL::954 1
-DEAL::955 1
-DEAL::956 1
-DEAL::957 1
-DEAL::958 3
-DEAL::959 1
-DEAL::960 3
-DEAL::961 1
-DEAL::962 3
-DEAL::963 3
-DEAL::964 3
-DEAL::965 3
-DEAL::966 2
-DEAL::967 2
-DEAL::968 2
-DEAL::969 2
-DEAL::970 2
-DEAL::971 2
-DEAL::972 2
-DEAL::973 2
-DEAL::974 2
-DEAL::975 2
-DEAL::976 2
-DEAL::977 2
-DEAL::978 2
-DEAL::979 2
-DEAL::980 2
-DEAL::981 2
-DEAL::982 2
-DEAL::983 2
-DEAL::984 2
-DEAL::985 2
-DEAL::986 2
-DEAL::987 2
-DEAL::988 2
-DEAL::989 2
-DEAL::990 2
-DEAL::991 2
-DEAL::992 2
-DEAL::993 2
-DEAL::994 2
-DEAL::995 2
-DEAL::996 2
-DEAL::997 2
-DEAL::998 2
-DEAL::999 2
-DEAL::1000 2
-DEAL::1001 2
-DEAL::1002 2
-DEAL::1003 2
-DEAL::1004 2
-DEAL::1005 2
-DEAL::1006 2
-DEAL::1007 2
-DEAL::1008 2
-DEAL::1009 1
-DEAL::1010 1
-DEAL::1011 1
-DEAL::1012 1
-DEAL::1013 1
-DEAL::1014 1
-DEAL::1015 1
-DEAL::1016 1
-DEAL::1017 1
-DEAL::1018 4
+DEAL::919 3
+DEAL::920 3
+DEAL::921 3
+DEAL::922 3
+DEAL::923 3
+DEAL::924 3
+DEAL::925 3
+DEAL::926 3
+DEAL::927 3
+DEAL::928 3
+DEAL::929 3
+DEAL::930 3
+DEAL::931 3
+DEAL::932 3
+DEAL::933 3
+DEAL::934 3
+DEAL::935 3
+DEAL::936 3
+DEAL::937 3
+DEAL::938 3
+DEAL::939 3
+DEAL::940 3
+DEAL::941 3
+DEAL::942 2
+DEAL::943 3
+DEAL::944 3
+DEAL::945 3
+DEAL::946 3
+DEAL::947 3
+DEAL::948 3
+DEAL::949 3
+DEAL::950 2
+DEAL::951 2
+DEAL::952 3
+DEAL::953 3
+DEAL::954 3
+DEAL::955 2
+DEAL::956 3
+DEAL::957 2
+DEAL::958 2
+DEAL::959 2
+DEAL::960 2
+DEAL::961 2
+DEAL::962 2
+DEAL::963 2
+DEAL::964 2
+DEAL::965 2
+DEAL::966 0
+DEAL::967 0
+DEAL::968 0
+DEAL::969 0
+DEAL::970 0
+DEAL::971 0
+DEAL::972 0
+DEAL::973 0
+DEAL::974 0
+DEAL::975 0
+DEAL::976 0
+DEAL::977 0
+DEAL::978 0
+DEAL::979 0
+DEAL::980 0
+DEAL::981 0
+DEAL::982 0
+DEAL::983 0
+DEAL::984 0
+DEAL::985 0
+DEAL::986 0
+DEAL::987 0
+DEAL::988 0
+DEAL::989 0
+DEAL::990 0
+DEAL::991 0
+DEAL::992 0
+DEAL::993 0
+DEAL::994 0
+DEAL::995 0
+DEAL::996 0
+DEAL::997 0
+DEAL::998 0
+DEAL::999 0
+DEAL::1000 0
+DEAL::1001 0
+DEAL::1002 0
+DEAL::1003 0
+DEAL::1004 0
+DEAL::1005 0
+DEAL::1006 0
+DEAL::1007 0
+DEAL::1008 0
+DEAL::1009 4
+DEAL::1010 4
+DEAL::1011 4
+DEAL::1012 4
+DEAL::1013 4
+DEAL::1014 4
+DEAL::1015 4
+DEAL::1016 4
+DEAL::1017 4
+DEAL::1018 1
 DEAL::1019 4
-DEAL::1020 1
-DEAL::1021 1
-DEAL::1022 1
-DEAL::1023 1
-DEAL::1024 1
-DEAL::1025 1
-DEAL::1026 1
-DEAL::1027 1
-DEAL::1028 4
+DEAL::1020 4
+DEAL::1021 4
+DEAL::1022 4
+DEAL::1023 4
+DEAL::1024 4
+DEAL::1025 4
+DEAL::1026 4
+DEAL::1027 4
+DEAL::1028 1
 DEAL::1029 4
 DEAL::1030 4
 DEAL::1031 4
 DEAL::1032 4
-DEAL::1033 4
-DEAL::1034 4
+DEAL::1033 1
+DEAL::1034 1
 DEAL::1035 4
 DEAL::1036 4
-DEAL::1037 4
-DEAL::1038 4
-DEAL::1039 4
-DEAL::1040 4
-DEAL::1041 4
-DEAL::1042 4
-DEAL::1043 4
-DEAL::1044 4
-DEAL::1045 3
-DEAL::1046 3
-DEAL::1047 3
-DEAL::1048 3
-DEAL::1049 3
-DEAL::1050 3
-DEAL::1051 3
-DEAL::1052 3
-DEAL::1053 3
-DEAL::1054 3
-DEAL::1055 3
-DEAL::1056 3
-DEAL::1057 3
-DEAL::1058 3
-DEAL::1059 3
-DEAL::1060 3
-DEAL::1061 0
-DEAL::1062 0
-DEAL::1063 0
-DEAL::1064 0
-DEAL::1065 0
-DEAL::1066 0
-DEAL::1067 0
-DEAL::1068 0
-DEAL::1069 0
-DEAL::1070 0
-DEAL::1071 0
-DEAL::1072 0
-DEAL::1073 0
-DEAL::1074 0
-DEAL::1075 0
-DEAL::1076 0
-DEAL::1077 0
-DEAL::1078 0
-DEAL::1079 0
-DEAL::1080 0
-DEAL::1081 0
-DEAL::1082 1
-DEAL::1083 3
-DEAL::1084 1
-DEAL::1085 1
-DEAL::1086 1
-DEAL::1087 1
-DEAL::1088 4
-DEAL::1089 4
-DEAL::1090 4
-DEAL::1091 4
-DEAL::1092 4
-DEAL::1093 3
-DEAL::1094 3
-DEAL::1095 3
-DEAL::1096 3
-DEAL::1097 3
-DEAL::1098 3
-DEAL::1099 3
-DEAL::1100 3
-DEAL::1101 3
-DEAL::1102 3
-DEAL::1103 3
-DEAL::1104 3
-DEAL::1105 3
-DEAL::1106 3
-DEAL::1107 3
-DEAL::1108 3
-DEAL::1109 3
-DEAL::1110 3
-DEAL::1111 3
-DEAL::1112 3
-DEAL::1113 3
-DEAL::1114 3
-DEAL::1115 3
-DEAL::1116 3
-DEAL::1117 2
-DEAL::1118 2
-DEAL::1119 2
-DEAL::1120 2
-DEAL::1121 2
-DEAL::1122 2
-DEAL::1123 3
-DEAL::1124 3
-DEAL::1125 2
-DEAL::1126 2
-DEAL::1127 2
-DEAL::1128 2
-DEAL::1129 2
-DEAL::1130 2
-DEAL::1131 2
-DEAL::1132 2
-DEAL::1133 2
-DEAL::1134 2
-DEAL::1135 0
-DEAL::1136 0
-DEAL::1137 0
-DEAL::1138 0
-DEAL::1139 0
-DEAL::1140 0
-DEAL::1141 0
-DEAL::1142 0
-DEAL::1143 0
-DEAL::1144 0
-DEAL::1145 0
-DEAL::1146 0
-DEAL::1147 0
-DEAL::1148 0
-DEAL::1149 0
-DEAL::1150 0
-DEAL::1151 0
-DEAL::1152 0
-DEAL::1153 0
-DEAL::1154 0
-DEAL::1155 0
-DEAL::1156 0
-DEAL::1157 1
-DEAL::1158 0
-DEAL::1159 0
-DEAL::1160 0
-DEAL::1161 0
-DEAL::1162 1
-DEAL::1163 0
-DEAL::1164 0
-DEAL::1165 0
-DEAL::1166 0
+DEAL::1037 1
+DEAL::1038 1
+DEAL::1039 1
+DEAL::1040 1
+DEAL::1041 1
+DEAL::1042 1
+DEAL::1043 1
+DEAL::1044 1
+DEAL::1045 1
+DEAL::1046 1
+DEAL::1047 1
+DEAL::1048 1
+DEAL::1049 1
+DEAL::1050 1
+DEAL::1051 0
+DEAL::1052 1
+DEAL::1053 1
+DEAL::1054 0
+DEAL::1055 1
+DEAL::1056 1
+DEAL::1057 1
+DEAL::1058 1
+DEAL::1059 1
+DEAL::1060 1
+DEAL::1061 3
+DEAL::1062 3
+DEAL::1063 3
+DEAL::1064 3
+DEAL::1065 3
+DEAL::1066 3
+DEAL::1067 3
+DEAL::1068 3
+DEAL::1069 3
+DEAL::1070 3
+DEAL::1071 3
+DEAL::1072 3
+DEAL::1073 3
+DEAL::1074 3
+DEAL::1075 3
+DEAL::1076 3
+DEAL::1077 3
+DEAL::1078 3
+DEAL::1079 3
+DEAL::1080 3
+DEAL::1081 3
+DEAL::1082 4
+DEAL::1083 1
+DEAL::1084 4
+DEAL::1085 4
+DEAL::1086 4
+DEAL::1087 4
+DEAL::1088 1
+DEAL::1089 1
+DEAL::1090 1
+DEAL::1091 1
+DEAL::1092 1
+DEAL::1093 4
+DEAL::1094 4
+DEAL::1095 1
+DEAL::1096 4
+DEAL::1097 4
+DEAL::1098 1
+DEAL::1099 1
+DEAL::1100 1
+DEAL::1101 1
+DEAL::1102 1
+DEAL::1103 1
+DEAL::1104 1
+DEAL::1105 1
+DEAL::1106 1
+DEAL::1107 1
+DEAL::1108 1
+DEAL::1109 1
+DEAL::1110 1
+DEAL::1111 1
+DEAL::1112 1
+DEAL::1113 1
+DEAL::1114 1
+DEAL::1115 1
+DEAL::1116 1
+DEAL::1117 0
+DEAL::1118 0
+DEAL::1119 0
+DEAL::1120 0
+DEAL::1121 0
+DEAL::1122 0
+DEAL::1123 0
+DEAL::1124 0
+DEAL::1125 0
+DEAL::1126 0
+DEAL::1127 0
+DEAL::1128 0
+DEAL::1129 0
+DEAL::1130 0
+DEAL::1131 0
+DEAL::1132 0
+DEAL::1133 0
+DEAL::1134 0
+DEAL::1135 3
+DEAL::1136 3
+DEAL::1137 3
+DEAL::1138 3
+DEAL::1139 3
+DEAL::1140 3
+DEAL::1141 3
+DEAL::1142 3
+DEAL::1143 3
+DEAL::1144 3
+DEAL::1145 3
+DEAL::1146 3
+DEAL::1147 3
+DEAL::1148 3
+DEAL::1149 3
+DEAL::1150 3
+DEAL::1151 3
+DEAL::1152 3
+DEAL::1153 3
+DEAL::1154 3
+DEAL::1155 3
+DEAL::1156 3
+DEAL::1157 3
+DEAL::1158 3
+DEAL::1159 3
+DEAL::1160 3
+DEAL::1161 3
+DEAL::1162 3
+DEAL::1163 3
+DEAL::1164 3
+DEAL::1165 3
+DEAL::1166 3
 DEAL::1167 4
 DEAL::1168 4
 DEAL::1169 4
@@ -2723,399 +2723,399 @@ DEAL::1182 4
 DEAL::1183 4
 DEAL::1184 4
 DEAL::1185 4
-DEAL::1186 4
-DEAL::1187 4
-DEAL::1188 4
-DEAL::1189 4
-DEAL::1190 4
-DEAL::1191 4
-DEAL::1192 4
-DEAL::1193 4
-DEAL::1194 4
-DEAL::1195 4
-DEAL::1196 4
-DEAL::1197 4
-DEAL::1198 4
-DEAL::1199 4
-DEAL::1200 4
-DEAL::1201 4
-DEAL::1202 4
-DEAL::1203 4
-DEAL::1204 4
-DEAL::1205 4
-DEAL::1206 4
-DEAL::1207 2
-DEAL::1208 2
-DEAL::1209 2
-DEAL::1210 2
-DEAL::1211 2
-DEAL::1212 2
-DEAL::1213 2
-DEAL::1214 2
-DEAL::1215 2
-DEAL::1216 2
-DEAL::1217 2
-DEAL::1218 2
-DEAL::1219 2
-DEAL::1220 2
-DEAL::1221 0
-DEAL::1222 0
-DEAL::1223 0
-DEAL::1224 0
-DEAL::1225 0
-DEAL::1226 0
-DEAL::1227 0
-DEAL::1228 0
-DEAL::1229 0
-DEAL::1230 0
-DEAL::1231 0
-DEAL::1232 0
-DEAL::1233 0
-DEAL::1234 0
-DEAL::1235 0
-DEAL::1236 0
-DEAL::1237 0
-DEAL::1238 0
-DEAL::1239 0
-DEAL::1240 0
-DEAL::1241 0
-DEAL::1242 0
-DEAL::1243 0
-DEAL::1244 0
-DEAL::1245 0
-DEAL::1246 0
-DEAL::1247 0
-DEAL::1248 0
-DEAL::1249 0
-DEAL::1250 0
-DEAL::1251 0
-DEAL::1252 0
-DEAL::1253 0
-DEAL::1254 0
-DEAL::1255 0
-DEAL::1256 0
-DEAL::1257 0
-DEAL::1258 0
-DEAL::1259 0
-DEAL::1260 1
-DEAL::1261 1
-DEAL::1262 1
-DEAL::1263 1
-DEAL::1264 1
-DEAL::1265 1
-DEAL::1266 1
-DEAL::1267 1
-DEAL::1268 1
-DEAL::1269 1
-DEAL::1270 1
-DEAL::1271 1
-DEAL::1272 1
-DEAL::1273 1
-DEAL::1274 1
-DEAL::1275 1
-DEAL::1276 1
-DEAL::1277 1
-DEAL::1278 3
-DEAL::1279 3
-DEAL::1280 3
-DEAL::1281 3
-DEAL::1282 3
-DEAL::1283 3
-DEAL::1284 3
-DEAL::1285 3
-DEAL::1286 3
-DEAL::1287 3
-DEAL::1288 3
-DEAL::1289 3
-DEAL::1290 3
-DEAL::1291 3
-DEAL::1292 3
-DEAL::1293 3
-DEAL::1294 3
-DEAL::1295 3
-DEAL::1296 0
-DEAL::1297 0
-DEAL::1298 0
-DEAL::1299 0
-DEAL::1300 0
-DEAL::1301 0
-DEAL::1302 0
-DEAL::1303 0
-DEAL::1304 0
-DEAL::1305 0
-DEAL::1306 0
-DEAL::1307 0
-DEAL::1308 0
-DEAL::1309 0
-DEAL::1310 0
-DEAL::1311 0
-DEAL::1312 0
-DEAL::1313 0
-DEAL::1314 0
-DEAL::1315 0
-DEAL::1316 0
-DEAL::1317 0
-DEAL::1318 1
-DEAL::1319 1
-DEAL::1320 1
-DEAL::1321 1
-DEAL::1322 1
-DEAL::1323 1
-DEAL::1324 1
-DEAL::1325 1
-DEAL::1326 1
-DEAL::1327 1
-DEAL::1328 1
-DEAL::1329 1
-DEAL::1330 1
-DEAL::1331 1
-DEAL::1332 1
-DEAL::1333 1
-DEAL::1334 1
-DEAL::1335 1
-DEAL::1336 1
-DEAL::1337 1
-DEAL::1338 1
-DEAL::1339 1
-DEAL::1340 1
-DEAL::1341 1
-DEAL::1342 1
-DEAL::1343 1
-DEAL::1344 1
-DEAL::1345 1
-DEAL::1346 1
-DEAL::1347 1
-DEAL::1348 1
-DEAL::1349 1
-DEAL::1350 1
-DEAL::1351 4
-DEAL::1352 1
-DEAL::1353 1
-DEAL::1354 1
-DEAL::1355 1
-DEAL::1356 4
-DEAL::1357 4
-DEAL::1358 4
-DEAL::1359 4
-DEAL::1360 4
-DEAL::1361 4
-DEAL::1362 4
-DEAL::1363 4
-DEAL::1364 4
-DEAL::1365 4
-DEAL::1366 4
-DEAL::1367 4
-DEAL::1368 4
-DEAL::1369 4
-DEAL::1370 4
-DEAL::1371 4
-DEAL::1372 4
-DEAL::1373 4
-DEAL::1374 4
-DEAL::1375 4
-DEAL::1376 2
-DEAL::1377 2
-DEAL::1378 2
-DEAL::1379 2
-DEAL::1380 2
-DEAL::1381 2
-DEAL::1382 2
-DEAL::1383 2
-DEAL::1384 2
-DEAL::1385 2
-DEAL::1386 2
-DEAL::1387 2
-DEAL::1388 2
-DEAL::1389 2
-DEAL::1390 2
-DEAL::1391 2
-DEAL::1392 2
-DEAL::1393 2
-DEAL::1394 0
-DEAL::1395 0
-DEAL::1396 0
-DEAL::1397 0
-DEAL::1398 0
-DEAL::1399 0
-DEAL::1400 1
-DEAL::1401 1
-DEAL::1402 0
-DEAL::1403 0
-DEAL::1404 0
-DEAL::1405 0
-DEAL::1406 0
-DEAL::1407 0
-DEAL::1408 0
-DEAL::1409 0
-DEAL::1410 1
-DEAL::1411 0
-DEAL::1412 1
-DEAL::1413 1
-DEAL::1414 0
-DEAL::1415 1
-DEAL::1416 0
-DEAL::1417 0
-DEAL::1418 0
-DEAL::1419 0
-DEAL::1420 1
-DEAL::1421 1
-DEAL::1422 1
-DEAL::1423 1
-DEAL::1424 1
-DEAL::1425 1
-DEAL::1426 1
-DEAL::1427 1
-DEAL::1428 1
-DEAL::1429 1
-DEAL::1430 1
-DEAL::1431 1
-DEAL::1432 1
-DEAL::1433 1
-DEAL::1434 1
-DEAL::1435 1
-DEAL::1436 1
-DEAL::1437 1
-DEAL::1438 1
-DEAL::1439 1
-DEAL::1440 1
-DEAL::1441 1
-DEAL::1442 1
-DEAL::1443 1
-DEAL::1444 1
-DEAL::1445 1
-DEAL::1446 1
-DEAL::1447 1
-DEAL::1448 1
-DEAL::1449 1
-DEAL::1450 1
-DEAL::1451 1
-DEAL::1452 1
-DEAL::1453 3
-DEAL::1454 2
-DEAL::1455 2
-DEAL::1456 3
-DEAL::1457 3
-DEAL::1458 3
-DEAL::1459 2
-DEAL::1460 3
-DEAL::1461 2
-DEAL::1462 3
-DEAL::1463 3
-DEAL::1464 3
-DEAL::1465 3
-DEAL::1466 2
-DEAL::1467 2
-DEAL::1468 2
-DEAL::1469 2
-DEAL::1470 2
-DEAL::1471 2
-DEAL::1472 2
+DEAL::1186 2
+DEAL::1187 2
+DEAL::1188 2
+DEAL::1189 2
+DEAL::1190 2
+DEAL::1191 2
+DEAL::1192 2
+DEAL::1193 2
+DEAL::1194 2
+DEAL::1195 2
+DEAL::1196 2
+DEAL::1197 2
+DEAL::1198 2
+DEAL::1199 2
+DEAL::1200 2
+DEAL::1201 2
+DEAL::1202 2
+DEAL::1203 2
+DEAL::1204 2
+DEAL::1205 2
+DEAL::1206 2
+DEAL::1207 0
+DEAL::1208 0
+DEAL::1209 0
+DEAL::1210 0
+DEAL::1211 0
+DEAL::1212 0
+DEAL::1213 0
+DEAL::1214 0
+DEAL::1215 0
+DEAL::1216 0
+DEAL::1217 0
+DEAL::1218 0
+DEAL::1219 0
+DEAL::1220 0
+DEAL::1221 3
+DEAL::1222 3
+DEAL::1223 3
+DEAL::1224 3
+DEAL::1225 3
+DEAL::1226 3
+DEAL::1227 3
+DEAL::1228 3
+DEAL::1229 3
+DEAL::1230 3
+DEAL::1231 3
+DEAL::1232 3
+DEAL::1233 3
+DEAL::1234 3
+DEAL::1235 3
+DEAL::1236 3
+DEAL::1237 3
+DEAL::1238 3
+DEAL::1239 3
+DEAL::1240 3
+DEAL::1241 3
+DEAL::1242 3
+DEAL::1243 3
+DEAL::1244 3
+DEAL::1245 3
+DEAL::1246 3
+DEAL::1247 3
+DEAL::1248 3
+DEAL::1249 3
+DEAL::1250 3
+DEAL::1251 3
+DEAL::1252 3
+DEAL::1253 3
+DEAL::1254 3
+DEAL::1255 3
+DEAL::1256 3
+DEAL::1257 3
+DEAL::1258 3
+DEAL::1259 3
+DEAL::1260 4
+DEAL::1261 4
+DEAL::1262 4
+DEAL::1263 4
+DEAL::1264 4
+DEAL::1265 4
+DEAL::1266 4
+DEAL::1267 4
+DEAL::1268 4
+DEAL::1269 4
+DEAL::1270 4
+DEAL::1271 4
+DEAL::1272 4
+DEAL::1273 4
+DEAL::1274 4
+DEAL::1275 4
+DEAL::1276 4
+DEAL::1277 4
+DEAL::1278 4
+DEAL::1279 4
+DEAL::1280 4
+DEAL::1281 4
+DEAL::1282 4
+DEAL::1283 4
+DEAL::1284 4
+DEAL::1285 4
+DEAL::1286 4
+DEAL::1287 4
+DEAL::1288 4
+DEAL::1289 4
+DEAL::1290 4
+DEAL::1291 0
+DEAL::1292 4
+DEAL::1293 4
+DEAL::1294 4
+DEAL::1295 4
+DEAL::1296 3
+DEAL::1297 3
+DEAL::1298 3
+DEAL::1299 3
+DEAL::1300 3
+DEAL::1301 3
+DEAL::1302 3
+DEAL::1303 3
+DEAL::1304 3
+DEAL::1305 3
+DEAL::1306 3
+DEAL::1307 3
+DEAL::1308 3
+DEAL::1309 3
+DEAL::1310 3
+DEAL::1311 3
+DEAL::1312 3
+DEAL::1313 3
+DEAL::1314 3
+DEAL::1315 3
+DEAL::1316 3
+DEAL::1317 3
+DEAL::1318 4
+DEAL::1319 4
+DEAL::1320 4
+DEAL::1321 4
+DEAL::1322 4
+DEAL::1323 4
+DEAL::1324 4
+DEAL::1325 4
+DEAL::1326 4
+DEAL::1327 4
+DEAL::1328 4
+DEAL::1329 4
+DEAL::1330 4
+DEAL::1331 4
+DEAL::1332 4
+DEAL::1333 4
+DEAL::1334 4
+DEAL::1335 4
+DEAL::1336 2
+DEAL::1337 2
+DEAL::1338 2
+DEAL::1339 2
+DEAL::1340 2
+DEAL::1341 2
+DEAL::1342 2
+DEAL::1343 2
+DEAL::1344 2
+DEAL::1345 2
+DEAL::1346 2
+DEAL::1347 2
+DEAL::1348 2
+DEAL::1349 2
+DEAL::1350 2
+DEAL::1351 2
+DEAL::1352 2
+DEAL::1353 2
+DEAL::1354 2
+DEAL::1355 2
+DEAL::1356 2
+DEAL::1357 2
+DEAL::1358 2
+DEAL::1359 2
+DEAL::1360 2
+DEAL::1361 2
+DEAL::1362 2
+DEAL::1363 2
+DEAL::1364 2
+DEAL::1365 2
+DEAL::1366 2
+DEAL::1367 2
+DEAL::1368 2
+DEAL::1369 2
+DEAL::1370 2
+DEAL::1371 2
+DEAL::1372 2
+DEAL::1373 2
+DEAL::1374 2
+DEAL::1375 2
+DEAL::1376 0
+DEAL::1377 0
+DEAL::1378 0
+DEAL::1379 0
+DEAL::1380 0
+DEAL::1381 0
+DEAL::1382 0
+DEAL::1383 0
+DEAL::1384 0
+DEAL::1385 0
+DEAL::1386 0
+DEAL::1387 0
+DEAL::1388 0
+DEAL::1389 0
+DEAL::1390 0
+DEAL::1391 0
+DEAL::1392 0
+DEAL::1393 0
+DEAL::1394 2
+DEAL::1395 3
+DEAL::1396 3
+DEAL::1397 3
+DEAL::1398 3
+DEAL::1399 3
+DEAL::1400 3
+DEAL::1401 3
+DEAL::1402 3
+DEAL::1403 3
+DEAL::1404 2
+DEAL::1405 2
+DEAL::1406 2
+DEAL::1407 2
+DEAL::1408 2
+DEAL::1409 3
+DEAL::1410 3
+DEAL::1411 3
+DEAL::1412 3
+DEAL::1413 3
+DEAL::1414 3
+DEAL::1415 3
+DEAL::1416 3
+DEAL::1417 3
+DEAL::1418 3
+DEAL::1419 3
+DEAL::1420 3
+DEAL::1421 3
+DEAL::1422 3
+DEAL::1423 3
+DEAL::1424 3
+DEAL::1425 3
+DEAL::1426 3
+DEAL::1427 3
+DEAL::1428 3
+DEAL::1429 3
+DEAL::1430 3
+DEAL::1431 3
+DEAL::1432 3
+DEAL::1433 3
+DEAL::1434 3
+DEAL::1435 2
+DEAL::1436 2
+DEAL::1437 2
+DEAL::1438 2
+DEAL::1439 2
+DEAL::1440 2
+DEAL::1441 2
+DEAL::1442 2
+DEAL::1443 2
+DEAL::1444 2
+DEAL::1445 2
+DEAL::1446 2
+DEAL::1447 2
+DEAL::1448 2
+DEAL::1449 2
+DEAL::1450 2
+DEAL::1451 2
+DEAL::1452 2
+DEAL::1453 2
+DEAL::1454 0
+DEAL::1455 0
+DEAL::1456 2
+DEAL::1457 2
+DEAL::1458 2
+DEAL::1459 0
+DEAL::1460 2
+DEAL::1461 0
+DEAL::1462 0
+DEAL::1463 0
+DEAL::1464 0
+DEAL::1465 0
+DEAL::1466 0
+DEAL::1467 0
+DEAL::1468 0
+DEAL::1469 0
+DEAL::1470 0
+DEAL::1471 0
+DEAL::1472 0
 DEAL::1473 2
-DEAL::1474 2
+DEAL::1474 0
 DEAL::1475 2
-DEAL::1476 2
-DEAL::1477 2
-DEAL::1478 2
-DEAL::1479 2
-DEAL::1480 2
-DEAL::1481 2
-DEAL::1482 2
-DEAL::1483 2
-DEAL::1484 2
-DEAL::1485 2
-DEAL::1486 2
-DEAL::1487 2
-DEAL::1488 2
-DEAL::1489 2
-DEAL::1490 2
-DEAL::1491 2
-DEAL::1492 2
-DEAL::1493 2
-DEAL::1494 2
-DEAL::1495 2
-DEAL::1496 2
-DEAL::1497 2
-DEAL::1498 2
-DEAL::1499 2
-DEAL::1500 2
-DEAL::1501 2
-DEAL::1502 2
-DEAL::1503 2
-DEAL::1504 2
-DEAL::1505 2
-DEAL::1506 2
-DEAL::1507 2
-DEAL::1508 2
-DEAL::1509 2
-DEAL::1510 2
-DEAL::1511 2
-DEAL::1512 2
-DEAL::1513 2
-DEAL::1514 2
-DEAL::1515 2
-DEAL::1516 2
-DEAL::1517 2
-DEAL::1518 2
-DEAL::1519 2
-DEAL::1520 2
-DEAL::1521 0
-DEAL::1522 0
-DEAL::1523 0
-DEAL::1524 0
-DEAL::1525 0
-DEAL::1526 0
-DEAL::1527 0
-DEAL::1528 0
-DEAL::1529 0
-DEAL::1530 0
-DEAL::1531 0
-DEAL::1532 0
-DEAL::1533 0
-DEAL::1534 0
-DEAL::1535 0
-DEAL::1536 0
-DEAL::1537 0
-DEAL::1538 0
-DEAL::1539 0
-DEAL::1540 0
-DEAL::1541 1
-DEAL::1542 1
-DEAL::1543 1
-DEAL::1544 1
-DEAL::1545 1
-DEAL::1546 1
-DEAL::1547 1
-DEAL::1548 1
-DEAL::1549 1
-DEAL::1550 1
-DEAL::1551 1
-DEAL::1552 1
-DEAL::1553 1
-DEAL::1554 1
-DEAL::1555 1
-DEAL::1556 1
-DEAL::1557 1
-DEAL::1558 1
-DEAL::1559 1
-DEAL::1560 0
-DEAL::1561 0
-DEAL::1562 0
-DEAL::1563 0
-DEAL::1564 0
-DEAL::1565 0
-DEAL::1566 0
-DEAL::1567 0
-DEAL::1568 0
-DEAL::1569 0
-DEAL::1570 0
-DEAL::1571 0
-DEAL::1572 0
-DEAL::1573 0
-DEAL::1574 0
-DEAL::1575 0
-DEAL::1576 0
-DEAL::1577 0
-DEAL::1578 0
+DEAL::1476 0
+DEAL::1477 0
+DEAL::1478 0
+DEAL::1479 0
+DEAL::1480 0
+DEAL::1481 0
+DEAL::1482 0
+DEAL::1483 0
+DEAL::1484 0
+DEAL::1485 0
+DEAL::1486 0
+DEAL::1487 0
+DEAL::1488 0
+DEAL::1489 0
+DEAL::1490 0
+DEAL::1491 0
+DEAL::1492 0
+DEAL::1493 0
+DEAL::1494 0
+DEAL::1495 0
+DEAL::1496 0
+DEAL::1497 0
+DEAL::1498 0
+DEAL::1499 0
+DEAL::1500 0
+DEAL::1501 0
+DEAL::1502 0
+DEAL::1503 0
+DEAL::1504 0
+DEAL::1505 0
+DEAL::1506 0
+DEAL::1507 0
+DEAL::1508 0
+DEAL::1509 0
+DEAL::1510 0
+DEAL::1511 0
+DEAL::1512 0
+DEAL::1513 0
+DEAL::1514 0
+DEAL::1515 0
+DEAL::1516 0
+DEAL::1517 0
+DEAL::1518 0
+DEAL::1519 0
+DEAL::1520 0
+DEAL::1521 3
+DEAL::1522 3
+DEAL::1523 3
+DEAL::1524 3
+DEAL::1525 3
+DEAL::1526 3
+DEAL::1527 3
+DEAL::1528 3
+DEAL::1529 3
+DEAL::1530 3
+DEAL::1531 3
+DEAL::1532 3
+DEAL::1533 3
+DEAL::1534 3
+DEAL::1535 3
+DEAL::1536 3
+DEAL::1537 3
+DEAL::1538 3
+DEAL::1539 3
+DEAL::1540 3
+DEAL::1541 4
+DEAL::1542 4
+DEAL::1543 4
+DEAL::1544 4
+DEAL::1545 4
+DEAL::1546 4
+DEAL::1547 4
+DEAL::1548 4
+DEAL::1549 4
+DEAL::1550 4
+DEAL::1551 4
+DEAL::1552 4
+DEAL::1553 4
+DEAL::1554 4
+DEAL::1555 4
+DEAL::1556 4
+DEAL::1557 4
+DEAL::1558 4
+DEAL::1559 4
+DEAL::1560 3
+DEAL::1561 3
+DEAL::1562 3
+DEAL::1563 3
+DEAL::1564 3
+DEAL::1565 3
+DEAL::1566 3
+DEAL::1567 3
+DEAL::1568 3
+DEAL::1569 3
+DEAL::1570 3
+DEAL::1571 3
+DEAL::1572 3
+DEAL::1573 3
+DEAL::1574 3
+DEAL::1575 3
+DEAL::1576 3
+DEAL::1577 3
+DEAL::1578 3
 DEAL::1579 4
 DEAL::1580 4
 DEAL::1581 4
@@ -3134,260 +3134,260 @@ DEAL::1593 4
 DEAL::1594 4
 DEAL::1595 4
 DEAL::1596 4
-DEAL::1597 4
+DEAL::1597 1
 DEAL::1598 4
 DEAL::1599 4
 DEAL::1600 4
-DEAL::1601 4
+DEAL::1601 1
 DEAL::1602 4
-DEAL::1603 4
+DEAL::1603 1
 DEAL::1604 4
 DEAL::1605 4
 DEAL::1606 4
-DEAL::1607 4
-DEAL::1608 4
-DEAL::1609 4
-DEAL::1610 4
-DEAL::1611 4
-DEAL::1612 4
-DEAL::1613 4
-DEAL::1614 4
-DEAL::1615 4
-DEAL::1616 4
-DEAL::1617 3
-DEAL::1618 4
-DEAL::1619 4
-DEAL::1620 4
-DEAL::1621 4
-DEAL::1622 4
-DEAL::1623 4
-DEAL::1624 3
-DEAL::1625 3
-DEAL::1626 3
-DEAL::1627 3
-DEAL::1628 4
-DEAL::1629 4
-DEAL::1630 4
-DEAL::1631 1
-DEAL::1632 1
-DEAL::1633 1
-DEAL::1634 1
-DEAL::1635 1
-DEAL::1636 1
-DEAL::1637 1
-DEAL::1638 1
-DEAL::1639 1
-DEAL::1640 1
-DEAL::1641 1
-DEAL::1642 1
-DEAL::1643 1
-DEAL::1644 1
-DEAL::1645 1
-DEAL::1646 1
-DEAL::1647 1
-DEAL::1648 4
-DEAL::1649 4
-DEAL::1650 4
-DEAL::1651 4
-DEAL::1652 4
-DEAL::1653 4
-DEAL::1654 4
-DEAL::1655 4
-DEAL::1656 4
-DEAL::1657 4
-DEAL::1658 4
-DEAL::1659 4
-DEAL::1660 4
-DEAL::1661 4
-DEAL::1662 4
-DEAL::1663 4
-DEAL::1664 4
-DEAL::1665 4
-DEAL::1666 4
-DEAL::1667 4
-DEAL::1668 4
-DEAL::1669 4
-DEAL::1670 3
-DEAL::1671 4
-DEAL::1672 4
-DEAL::1673 4
-DEAL::1674 4
-DEAL::1675 4
-DEAL::1676 4
-DEAL::1677 4
-DEAL::1678 4
-DEAL::1679 4
-DEAL::1680 4
-DEAL::1681 4
-DEAL::1682 4
-DEAL::1683 4
-DEAL::1684 4
-DEAL::1685 4
-DEAL::1686 4
-DEAL::1687 4
-DEAL::1688 4
-DEAL::1689 4
-DEAL::1690 4
-DEAL::1691 4
-DEAL::1692 4
-DEAL::1693 4
-DEAL::1694 4
-DEAL::1695 4
-DEAL::1696 4
-DEAL::1697 4
-DEAL::1698 4
-DEAL::1699 4
-DEAL::1700 4
-DEAL::1701 4
-DEAL::1702 4
-DEAL::1703 0
-DEAL::1704 0
-DEAL::1705 1
-DEAL::1706 0
-DEAL::1707 0
-DEAL::1708 0
-DEAL::1709 0
-DEAL::1710 0
-DEAL::1711 1
-DEAL::1712 0
-DEAL::1713 0
-DEAL::1714 0
-DEAL::1715 0
-DEAL::1716 1
-DEAL::1717 1
-DEAL::1718 1
-DEAL::1719 0
-DEAL::1720 1
-DEAL::1721 0
-DEAL::1722 0
-DEAL::1723 0
-DEAL::1724 0
-DEAL::1725 1
-DEAL::1726 0
-DEAL::1727 0
-DEAL::1728 0
-DEAL::1729 0
-DEAL::1730 1
-DEAL::1731 1
-DEAL::1732 1
-DEAL::1733 1
-DEAL::1734 1
-DEAL::1735 1
-DEAL::1736 1
-DEAL::1737 1
-DEAL::1738 1
-DEAL::1739 1
-DEAL::1740 1
-DEAL::1741 1
-DEAL::1742 1
-DEAL::1743 1
-DEAL::1744 1
-DEAL::1745 1
-DEAL::1746 1
-DEAL::1747 1
-DEAL::1748 1
-DEAL::1749 1
-DEAL::1750 1
-DEAL::1751 1
-DEAL::1752 1
-DEAL::1753 1
-DEAL::1754 1
-DEAL::1755 1
-DEAL::1756 1
-DEAL::1757 1
-DEAL::1758 1
-DEAL::1759 1
-DEAL::1760 1
-DEAL::1761 1
-DEAL::1762 1
-DEAL::1763 1
-DEAL::1764 1
-DEAL::1765 1
-DEAL::1766 1
-DEAL::1767 1
-DEAL::1768 1
-DEAL::1769 1
-DEAL::1770 1
-DEAL::1771 1
-DEAL::1772 1
-DEAL::1773 1
-DEAL::1774 1
-DEAL::1775 1
-DEAL::1776 1
-DEAL::1777 1
-DEAL::1778 1
-DEAL::1779 1
-DEAL::1780 1
-DEAL::1781 1
-DEAL::1782 4
-DEAL::1783 4
-DEAL::1784 1
-DEAL::1785 1
-DEAL::1786 1
-DEAL::1787 1
-DEAL::1788 1
-DEAL::1789 4
-DEAL::1790 1
-DEAL::1791 2
-DEAL::1792 2
-DEAL::1793 2
-DEAL::1794 2
-DEAL::1795 2
-DEAL::1796 2
-DEAL::1797 2
-DEAL::1798 2
-DEAL::1799 2
-DEAL::1800 2
-DEAL::1801 2
-DEAL::1802 2
-DEAL::1803 2
-DEAL::1804 2
-DEAL::1805 2
-DEAL::1806 2
-DEAL::1807 2
-DEAL::1808 4
-DEAL::1809 4
-DEAL::1810 4
-DEAL::1811 4
-DEAL::1812 4
-DEAL::1813 4
-DEAL::1814 4
-DEAL::1815 4
-DEAL::1816 4
-DEAL::1817 4
-DEAL::1818 4
-DEAL::1819 4
-DEAL::1820 4
-DEAL::1821 4
-DEAL::1822 4
-DEAL::1823 4
-DEAL::1824 4
-DEAL::1825 2
-DEAL::1826 2
-DEAL::1827 2
-DEAL::1828 2
-DEAL::1829 2
-DEAL::1830 2
-DEAL::1831 2
-DEAL::1832 2
-DEAL::1833 2
-DEAL::1834 2
-DEAL::1835 2
-DEAL::1836 2
-DEAL::1837 2
-DEAL::1838 2
-DEAL::1839 2
-DEAL::1840 2
-DEAL::1841 2
-DEAL::1842 2
-DEAL::1843 2
-DEAL::1844 2
-DEAL::1845 2
-DEAL::1846 2
-DEAL::1847 2
-DEAL::1848 2
-DEAL::1849 2
-DEAL::1850 2
+DEAL::1607 1
+DEAL::1608 1
+DEAL::1609 1
+DEAL::1610 1
+DEAL::1611 1
+DEAL::1612 1
+DEAL::1613 1
+DEAL::1614 1
+DEAL::1615 1
+DEAL::1616 1
+DEAL::1617 1
+DEAL::1618 1
+DEAL::1619 1
+DEAL::1620 1
+DEAL::1621 1
+DEAL::1622 1
+DEAL::1623 1
+DEAL::1624 1
+DEAL::1625 1
+DEAL::1626 1
+DEAL::1627 1
+DEAL::1628 1
+DEAL::1629 1
+DEAL::1630 1
+DEAL::1631 2
+DEAL::1632 2
+DEAL::1633 2
+DEAL::1634 2
+DEAL::1635 2
+DEAL::1636 2
+DEAL::1637 2
+DEAL::1638 2
+DEAL::1639 2
+DEAL::1640 2
+DEAL::1641 2
+DEAL::1642 2
+DEAL::1643 2
+DEAL::1644 2
+DEAL::1645 2
+DEAL::1646 2
+DEAL::1647 2
+DEAL::1648 1
+DEAL::1649 1
+DEAL::1650 1
+DEAL::1651 1
+DEAL::1652 1
+DEAL::1653 1
+DEAL::1654 1
+DEAL::1655 1
+DEAL::1656 1
+DEAL::1657 1
+DEAL::1658 1
+DEAL::1659 1
+DEAL::1660 1
+DEAL::1661 1
+DEAL::1662 1
+DEAL::1663 1
+DEAL::1664 1
+DEAL::1665 1
+DEAL::1666 0
+DEAL::1667 0
+DEAL::1668 0
+DEAL::1669 0
+DEAL::1670 1
+DEAL::1671 0
+DEAL::1672 0
+DEAL::1673 0
+DEAL::1674 0
+DEAL::1675 0
+DEAL::1676 0
+DEAL::1677 0
+DEAL::1678 0
+DEAL::1679 0
+DEAL::1680 0
+DEAL::1681 0
+DEAL::1682 0
+DEAL::1683 0
+DEAL::1684 0
+DEAL::1685 1
+DEAL::1686 0
+DEAL::1687 0
+DEAL::1688 0
+DEAL::1689 0
+DEAL::1690 0
+DEAL::1691 0
+DEAL::1692 0
+DEAL::1693 0
+DEAL::1694 0
+DEAL::1695 0
+DEAL::1696 0
+DEAL::1697 0
+DEAL::1698 1
+DEAL::1699 0
+DEAL::1700 0
+DEAL::1701 0
+DEAL::1702 0
+DEAL::1703 2
+DEAL::1704 2
+DEAL::1705 2
+DEAL::1706 2
+DEAL::1707 2
+DEAL::1708 2
+DEAL::1709 2
+DEAL::1710 2
+DEAL::1711 2
+DEAL::1712 2
+DEAL::1713 2
+DEAL::1714 2
+DEAL::1715 2
+DEAL::1716 2
+DEAL::1717 2
+DEAL::1718 2
+DEAL::1719 2
+DEAL::1720 2
+DEAL::1721 2
+DEAL::1722 2
+DEAL::1723 2
+DEAL::1724 2
+DEAL::1725 2
+DEAL::1726 2
+DEAL::1727 2
+DEAL::1728 2
+DEAL::1729 2
+DEAL::1730 2
+DEAL::1731 2
+DEAL::1732 2
+DEAL::1733 2
+DEAL::1734 2
+DEAL::1735 3
+DEAL::1736 4
+DEAL::1737 3
+DEAL::1738 3
+DEAL::1739 3
+DEAL::1740 4
+DEAL::1741 3
+DEAL::1742 4
+DEAL::1743 4
+DEAL::1744 2
+DEAL::1745 4
+DEAL::1746 4
+DEAL::1747 4
+DEAL::1748 4
+DEAL::1749 4
+DEAL::1750 4
+DEAL::1751 2
+DEAL::1752 2
+DEAL::1753 2
+DEAL::1754 2
+DEAL::1755 2
+DEAL::1756 2
+DEAL::1757 2
+DEAL::1758 2
+DEAL::1759 2
+DEAL::1760 2
+DEAL::1761 2
+DEAL::1762 2
+DEAL::1763 2
+DEAL::1764 2
+DEAL::1765 2
+DEAL::1766 2
+DEAL::1767 2
+DEAL::1768 2
+DEAL::1769 2
+DEAL::1770 2
+DEAL::1771 4
+DEAL::1772 4
+DEAL::1773 4
+DEAL::1774 4
+DEAL::1775 4
+DEAL::1776 4
+DEAL::1777 4
+DEAL::1778 4
+DEAL::1779 4
+DEAL::1780 4
+DEAL::1781 4
+DEAL::1782 4
+DEAL::1783 4
+DEAL::1784 4
+DEAL::1785 4
+DEAL::1786 4
+DEAL::1787 4
+DEAL::1788 4
+DEAL::1789 4
+DEAL::1790 4
+DEAL::1791 2
+DEAL::1792 2
+DEAL::1793 2
+DEAL::1794 2
+DEAL::1795 2
+DEAL::1796 2
+DEAL::1797 2
+DEAL::1798 2
+DEAL::1799 2
+DEAL::1800 2
+DEAL::1801 2
+DEAL::1802 2
+DEAL::1803 2
+DEAL::1804 0
+DEAL::1805 2
+DEAL::1806 2
+DEAL::1807 2
+DEAL::1808 2
+DEAL::1809 2
+DEAL::1810 2
+DEAL::1811 2
+DEAL::1812 2
+DEAL::1813 2
+DEAL::1814 2
+DEAL::1815 2
+DEAL::1816 2
+DEAL::1817 2
+DEAL::1818 2
+DEAL::1819 2
+DEAL::1820 2
+DEAL::1821 2
+DEAL::1822 2
+DEAL::1823 2
+DEAL::1824 2
+DEAL::1825 2
+DEAL::1826 2
+DEAL::1827 2
+DEAL::1828 2
+DEAL::1829 2
+DEAL::1830 2
+DEAL::1831 2
+DEAL::1832 2
+DEAL::1833 2
+DEAL::1834 2
+DEAL::1835 0
+DEAL::1836 2
+DEAL::1837 2
+DEAL::1838 2
+DEAL::1839 2
+DEAL::1840 2
+DEAL::1841 2
+DEAL::1842 2
+DEAL::1843 0
+DEAL::1844 2
+DEAL::1845 2
+DEAL::1846 2
+DEAL::1847 2
+DEAL::1848 2
+DEAL::1849 2
+DEAL::1850 2
 DEAL::1851 2
 DEAL::1852 2
 DEAL::1853 2
@@ -3400,48 +3400,48 @@ DEAL::1859 2
 DEAL::1860 2
 DEAL::1861 2
 DEAL::1862 2
-DEAL::1863 2
-DEAL::1864 3
-DEAL::1865 3
-DEAL::1866 2
-DEAL::1867 3
-DEAL::1868 3
-DEAL::1869 3
-DEAL::1870 2
-DEAL::1871 2
-DEAL::1872 2
-DEAL::1873 2
-DEAL::1874 2
-DEAL::1875 2
-DEAL::1876 2
-DEAL::1877 0
-DEAL::1878 0
-DEAL::1879 0
-DEAL::1880 0
-DEAL::1881 0
-DEAL::1882 0
-DEAL::1883 0
-DEAL::1884 0
-DEAL::1885 0
-DEAL::1886 0
-DEAL::1887 0
-DEAL::1888 0
-DEAL::1889 0
-DEAL::1890 3
-DEAL::1891 3
-DEAL::1892 3
-DEAL::1893 3
-DEAL::1894 3
-DEAL::1895 3
-DEAL::1896 3
-DEAL::1897 3
-DEAL::1898 3
-DEAL::1899 3
-DEAL::1900 3
-DEAL::1901 3
-DEAL::1902 3
-DEAL::1903 3
-DEAL::1904 3
+DEAL::1863 0
+DEAL::1864 0
+DEAL::1865 0
+DEAL::1866 0
+DEAL::1867 0
+DEAL::1868 0
+DEAL::1869 0
+DEAL::1870 0
+DEAL::1871 0
+DEAL::1872 0
+DEAL::1873 0
+DEAL::1874 0
+DEAL::1875 0
+DEAL::1876 0
+DEAL::1877 3
+DEAL::1878 3
+DEAL::1879 3
+DEAL::1880 3
+DEAL::1881 3
+DEAL::1882 3
+DEAL::1883 3
+DEAL::1884 3
+DEAL::1885 3
+DEAL::1886 3
+DEAL::1887 3
+DEAL::1888 3
+DEAL::1889 3
+DEAL::1890 1
+DEAL::1891 1
+DEAL::1892 1
+DEAL::1893 1
+DEAL::1894 1
+DEAL::1895 1
+DEAL::1896 1
+DEAL::1897 1
+DEAL::1898 1
+DEAL::1899 1
+DEAL::1900 1
+DEAL::1901 1
+DEAL::1902 1
+DEAL::1903 1
+DEAL::1904 1
 DEAL::1905 4
 DEAL::1906 4
 DEAL::1907 4
@@ -3449,316 +3449,316 @@ DEAL::1908 4
 DEAL::1909 4
 DEAL::1910 4
 DEAL::1911 4
-DEAL::1912 4
+DEAL::1912 1
 DEAL::1913 4
 DEAL::1914 4
 DEAL::1915 4
 DEAL::1916 4
 DEAL::1917 4
-DEAL::1918 4
-DEAL::1919 4
-DEAL::1920 4
-DEAL::1921 4
-DEAL::1922 4
-DEAL::1923 4
-DEAL::1924 4
-DEAL::1925 4
-DEAL::1926 4
-DEAL::1927 4
-DEAL::1928 4
-DEAL::1929 4
-DEAL::1930 4
-DEAL::1931 4
-DEAL::1932 4
-DEAL::1933 4
-DEAL::1934 4
-DEAL::1935 4
-DEAL::1936 4
-DEAL::1937 4
-DEAL::1938 4
-DEAL::1939 4
-DEAL::1940 4
-DEAL::1941 4
-DEAL::1942 4
-DEAL::1943 4
-DEAL::1944 4
-DEAL::1945 4
-DEAL::1946 4
-DEAL::1947 2
-DEAL::1948 2
-DEAL::1949 2
-DEAL::1950 2
-DEAL::1951 2
-DEAL::1952 2
-DEAL::1953 2
-DEAL::1954 2
-DEAL::1955 2
-DEAL::1956 2
-DEAL::1957 2
-DEAL::1958 2
-DEAL::1959 2
-DEAL::1960 2
-DEAL::1961 2
-DEAL::1962 2
-DEAL::1963 2
-DEAL::1964 2
-DEAL::1965 4
-DEAL::1966 2
-DEAL::1967 2
-DEAL::1968 2
-DEAL::1969 4
-DEAL::1970 4
-DEAL::1971 4
-DEAL::1972 4
-DEAL::1973 4
-DEAL::1974 2
-DEAL::1975 2
-DEAL::1976 2
-DEAL::1977 2
-DEAL::1978 2
-DEAL::1979 4
-DEAL::1980 4
-DEAL::1981 4
-DEAL::1982 0
-DEAL::1983 0
-DEAL::1984 0
-DEAL::1985 0
-DEAL::1986 0
-DEAL::1987 0
-DEAL::1988 0
-DEAL::1989 0
-DEAL::1990 0
-DEAL::1991 0
-DEAL::1992 0
-DEAL::1993 0
-DEAL::1994 0
-DEAL::1995 0
-DEAL::1996 0
-DEAL::1997 0
-DEAL::1998 0
-DEAL::1999 0
-DEAL::2000 0
-DEAL::2001 0
-DEAL::2002 0
-DEAL::2003 0
-DEAL::2004 0
-DEAL::2005 0
-DEAL::2006 0
-DEAL::2007 0
-DEAL::2008 0
-DEAL::2009 0
-DEAL::2010 0
-DEAL::2011 0
-DEAL::2012 0
-DEAL::2013 0
-DEAL::2014 0
-DEAL::2015 0
-DEAL::2016 0
-DEAL::2017 0
-DEAL::2018 1
-DEAL::2019 1
-DEAL::2020 1
-DEAL::2021 1
-DEAL::2022 1
-DEAL::2023 1
-DEAL::2024 1
-DEAL::2025 1
-DEAL::2026 1
-DEAL::2027 1
-DEAL::2028 3
-DEAL::2029 1
-DEAL::2030 1
-DEAL::2031 1
-DEAL::2032 1
-DEAL::2033 1
-DEAL::2034 3
-DEAL::2035 3
-DEAL::2036 3
-DEAL::2037 3
-DEAL::2038 3
-DEAL::2039 3
-DEAL::2040 3
-DEAL::2041 3
-DEAL::2042 3
-DEAL::2043 3
-DEAL::2044 3
-DEAL::2045 3
-DEAL::2046 3
-DEAL::2047 3
-DEAL::2048 3
-DEAL::2049 3
-DEAL::2050 3
-DEAL::2051 3
-DEAL::2052 3
-DEAL::2053 3
-DEAL::2054 3
-DEAL::2055 3
-DEAL::2056 3
-DEAL::2057 3
-DEAL::2058 2
-DEAL::2059 3
-DEAL::2060 3
-DEAL::2061 3
-DEAL::2062 3
-DEAL::2063 0
-DEAL::2064 0
-DEAL::2065 0
-DEAL::2066 0
-DEAL::2067 0
-DEAL::2068 0
-DEAL::2069 0
-DEAL::2070 0
-DEAL::2071 0
-DEAL::2072 0
-DEAL::2073 0
-DEAL::2074 0
-DEAL::2075 0
-DEAL::2076 0
-DEAL::2077 0
-DEAL::2078 0
-DEAL::2079 0
-DEAL::2080 0
-DEAL::2081 0
-DEAL::2082 0
-DEAL::2083 0
-DEAL::2084 0
-DEAL::2085 0
-DEAL::2086 0
-DEAL::2087 0
-DEAL::2088 0
-DEAL::2089 0
-DEAL::2090 0
-DEAL::2091 0
-DEAL::2092 0
-DEAL::2093 1
-DEAL::2094 1
-DEAL::2095 1
-DEAL::2096 1
-DEAL::2097 1
-DEAL::2098 1
-DEAL::2099 1
-DEAL::2100 1
-DEAL::2101 1
-DEAL::2102 1
-DEAL::2103 1
-DEAL::2104 1
-DEAL::2105 1
-DEAL::2106 1
-DEAL::2107 1
-DEAL::2108 1
-DEAL::2109 1
-DEAL::2110 1
-DEAL::2111 1
-DEAL::2112 4
-DEAL::2113 4
-DEAL::2114 4
-DEAL::2115 4
-DEAL::2116 4
-DEAL::2117 4
-DEAL::2118 4
+DEAL::1918 1
+DEAL::1919 1
+DEAL::1920 1
+DEAL::1921 1
+DEAL::1922 1
+DEAL::1923 1
+DEAL::1924 1
+DEAL::1925 1
+DEAL::1926 1
+DEAL::1927 1
+DEAL::1928 1
+DEAL::1929 1
+DEAL::1930 1
+DEAL::1931 2
+DEAL::1932 2
+DEAL::1933 2
+DEAL::1934 2
+DEAL::1935 2
+DEAL::1936 2
+DEAL::1937 2
+DEAL::1938 2
+DEAL::1939 2
+DEAL::1940 2
+DEAL::1941 2
+DEAL::1942 2
+DEAL::1943 2
+DEAL::1944 2
+DEAL::1945 2
+DEAL::1946 2
+DEAL::1947 0
+DEAL::1948 0
+DEAL::1949 0
+DEAL::1950 0
+DEAL::1951 0
+DEAL::1952 0
+DEAL::1953 0
+DEAL::1954 0
+DEAL::1955 0
+DEAL::1956 0
+DEAL::1957 0
+DEAL::1958 0
+DEAL::1959 0
+DEAL::1960 0
+DEAL::1961 0
+DEAL::1962 0
+DEAL::1963 0
+DEAL::1964 0
+DEAL::1965 0
+DEAL::1966 0
+DEAL::1967 0
+DEAL::1968 0
+DEAL::1969 0
+DEAL::1970 0
+DEAL::1971 0
+DEAL::1972 0
+DEAL::1973 0
+DEAL::1974 0
+DEAL::1975 0
+DEAL::1976 0
+DEAL::1977 0
+DEAL::1978 0
+DEAL::1979 0
+DEAL::1980 0
+DEAL::1981 0
+DEAL::1982 3
+DEAL::1983 3
+DEAL::1984 3
+DEAL::1985 3
+DEAL::1986 3
+DEAL::1987 3
+DEAL::1988 3
+DEAL::1989 3
+DEAL::1990 3
+DEAL::1991 3
+DEAL::1992 3
+DEAL::1993 3
+DEAL::1994 3
+DEAL::1995 3
+DEAL::1996 3
+DEAL::1997 3
+DEAL::1998 3
+DEAL::1999 3
+DEAL::2000 3
+DEAL::2001 3
+DEAL::2002 3
+DEAL::2003 3
+DEAL::2004 3
+DEAL::2005 3
+DEAL::2006 3
+DEAL::2007 3
+DEAL::2008 3
+DEAL::2009 3
+DEAL::2010 3
+DEAL::2011 3
+DEAL::2012 3
+DEAL::2013 3
+DEAL::2014 3
+DEAL::2015 3
+DEAL::2016 3
+DEAL::2017 3
+DEAL::2018 4
+DEAL::2019 4
+DEAL::2020 4
+DEAL::2021 4
+DEAL::2022 4
+DEAL::2023 4
+DEAL::2024 4
+DEAL::2025 4
+DEAL::2026 4
+DEAL::2027 4
+DEAL::2028 4
+DEAL::2029 4
+DEAL::2030 4
+DEAL::2031 4
+DEAL::2032 4
+DEAL::2033 4
+DEAL::2034 4
+DEAL::2035 4
+DEAL::2036 4
+DEAL::2037 4
+DEAL::2038 4
+DEAL::2039 4
+DEAL::2040 4
+DEAL::2041 4
+DEAL::2042 4
+DEAL::2043 4
+DEAL::2044 4
+DEAL::2045 4
+DEAL::2046 4
+DEAL::2047 4
+DEAL::2048 0
+DEAL::2049 0
+DEAL::2050 0
+DEAL::2051 0
+DEAL::2052 0
+DEAL::2053 0
+DEAL::2054 0
+DEAL::2055 0
+DEAL::2056 0
+DEAL::2057 0
+DEAL::2058 0
+DEAL::2059 0
+DEAL::2060 0
+DEAL::2061 0
+DEAL::2062 0
+DEAL::2063 3
+DEAL::2064 3
+DEAL::2065 3
+DEAL::2066 3
+DEAL::2067 3
+DEAL::2068 3
+DEAL::2069 3
+DEAL::2070 3
+DEAL::2071 3
+DEAL::2072 3
+DEAL::2073 3
+DEAL::2074 3
+DEAL::2075 3
+DEAL::2076 3
+DEAL::2077 3
+DEAL::2078 3
+DEAL::2079 3
+DEAL::2080 3
+DEAL::2081 3
+DEAL::2082 3
+DEAL::2083 3
+DEAL::2084 3
+DEAL::2085 3
+DEAL::2086 3
+DEAL::2087 3
+DEAL::2088 3
+DEAL::2089 3
+DEAL::2090 3
+DEAL::2091 3
+DEAL::2092 3
+DEAL::2093 4
+DEAL::2094 4
+DEAL::2095 4
+DEAL::2096 4
+DEAL::2097 4
+DEAL::2098 4
+DEAL::2099 4
+DEAL::2100 4
+DEAL::2101 4
+DEAL::2102 4
+DEAL::2103 4
+DEAL::2104 4
+DEAL::2105 4
+DEAL::2106 4
+DEAL::2107 4
+DEAL::2108 4
+DEAL::2109 4
+DEAL::2110 4
+DEAL::2111 4
+DEAL::2112 2
+DEAL::2113 2
+DEAL::2114 2
+DEAL::2115 2
+DEAL::2116 2
+DEAL::2117 2
+DEAL::2118 2
 DEAL::2119 2
-DEAL::2120 4
-DEAL::2121 4
-DEAL::2122 4
-DEAL::2123 4
-DEAL::2124 4
+DEAL::2120 2
+DEAL::2121 2
+DEAL::2122 2
+DEAL::2123 2
+DEAL::2124 2
 DEAL::2125 2
 DEAL::2126 2
 DEAL::2127 2
-DEAL::2128 2
-DEAL::2129 2
-DEAL::2130 2
-DEAL::2131 2
-DEAL::2132 2
-DEAL::2133 2
-DEAL::2134 2
-DEAL::2135 2
-DEAL::2136 2
-DEAL::2137 2
-DEAL::2138 2
-DEAL::2139 2
-DEAL::2140 2
-DEAL::2141 2
-DEAL::2142 2
-DEAL::2143 2
-DEAL::2144 2
-DEAL::2145 2
-DEAL::2146 1
-DEAL::2147 1
-DEAL::2148 1
-DEAL::2149 1
-DEAL::2150 1
-DEAL::2151 1
-DEAL::2152 1
-DEAL::2153 1
-DEAL::2154 1
-DEAL::2155 1
-DEAL::2156 1
-DEAL::2157 1
-DEAL::2158 1
-DEAL::2159 1
-DEAL::2160 1
-DEAL::2161 1
-DEAL::2162 1
-DEAL::2163 1
-DEAL::2164 1
-DEAL::2165 1
-DEAL::2166 1
-DEAL::2167 1
-DEAL::2168 1
-DEAL::2169 1
-DEAL::2170 1
-DEAL::2171 1
-DEAL::2172 1
-DEAL::2173 1
-DEAL::2174 1
-DEAL::2175 1
-DEAL::2176 1
-DEAL::2177 1
-DEAL::2178 1
-DEAL::2179 1
-DEAL::2180 1
-DEAL::2181 1
-DEAL::2182 1
-DEAL::2183 1
-DEAL::2184 1
-DEAL::2185 1
-DEAL::2186 1
-DEAL::2187 1
-DEAL::2188 1
-DEAL::2189 1
-DEAL::2190 1
-DEAL::2191 1
-DEAL::2192 1
-DEAL::2193 1
-DEAL::2194 1
-DEAL::2195 1
-DEAL::2196 1
-DEAL::2197 1
-DEAL::2198 1
-DEAL::2199 1
-DEAL::2200 1
-DEAL::2201 1
-DEAL::2202 1
-DEAL::2203 1
-DEAL::2204 1
-DEAL::2205 1
+DEAL::2128 0
+DEAL::2129 0
+DEAL::2130 0
+DEAL::2131 0
+DEAL::2132 0
+DEAL::2133 0
+DEAL::2134 0
+DEAL::2135 0
+DEAL::2136 0
+DEAL::2137 0
+DEAL::2138 0
+DEAL::2139 0
+DEAL::2140 0
+DEAL::2141 0
+DEAL::2142 0
+DEAL::2143 0
+DEAL::2144 0
+DEAL::2145 0
+DEAL::2146 2
+DEAL::2147 3
+DEAL::2148 3
+DEAL::2149 3
+DEAL::2150 2
+DEAL::2151 3
+DEAL::2152 2
+DEAL::2153 2
+DEAL::2154 2
+DEAL::2155 2
+DEAL::2156 2
+DEAL::2157 2
+DEAL::2158 2
+DEAL::2159 2
+DEAL::2160 4
+DEAL::2161 2
+DEAL::2162 2
+DEAL::2163 4
+DEAL::2164 4
+DEAL::2165 4
+DEAL::2166 4
+DEAL::2167 2
+DEAL::2168 2
+DEAL::2169 2
+DEAL::2170 2
+DEAL::2171 2
+DEAL::2172 4
+DEAL::2173 4
+DEAL::2174 2
+DEAL::2175 2
+DEAL::2176 2
+DEAL::2177 2
+DEAL::2178 4
+DEAL::2179 4
+DEAL::2180 4
+DEAL::2181 4
+DEAL::2182 4
+DEAL::2183 2
+DEAL::2184 4
+DEAL::2185 2
+DEAL::2186 4
+DEAL::2187 4
+DEAL::2188 4
+DEAL::2189 2
+DEAL::2190 2
+DEAL::2191 2
+DEAL::2192 2
+DEAL::2193 2
+DEAL::2194 2
+DEAL::2195 2
+DEAL::2196 2
+DEAL::2197 2
+DEAL::2198 2
+DEAL::2199 2
+DEAL::2200 2
+DEAL::2201 2
+DEAL::2202 2
+DEAL::2203 2
+DEAL::2204 2
+DEAL::2205 2
 DEAL::2206 2
 DEAL::2207 2
-DEAL::2208 2
+DEAL::2208 0
 DEAL::2209 2
 DEAL::2210 2
 DEAL::2211 2
 DEAL::2212 2
 DEAL::2213 2
 DEAL::2214 2
-DEAL::2215 2
+DEAL::2215 0
 DEAL::2216 2
 DEAL::2217 2
-DEAL::2218 2
+DEAL::2218 0
 DEAL::2219 2
-DEAL::2220 2
-DEAL::2221 2
+DEAL::2220 0
+DEAL::2221 0
 DEAL::2222 2
 DEAL::2223 2
 DEAL::2224 2
@@ -3777,111 +3777,111 @@ DEAL::2236 2
 DEAL::2237 2
 DEAL::2238 2
 DEAL::2239 2
-DEAL::2240 2
-DEAL::2241 2
-DEAL::2242 2
-DEAL::2243 2
-DEAL::2244 2
-DEAL::2245 2
-DEAL::2246 2
-DEAL::2247 2
-DEAL::2248 2
-DEAL::2249 2
-DEAL::2250 2
-DEAL::2251 2
-DEAL::2252 2
-DEAL::2253 0
-DEAL::2254 0
-DEAL::2255 0
-DEAL::2256 0
-DEAL::2257 0
-DEAL::2258 0
-DEAL::2259 0
-DEAL::2260 0
-DEAL::2261 0
-DEAL::2262 0
-DEAL::2263 0
-DEAL::2264 0
-DEAL::2265 0
-DEAL::2266 0
-DEAL::2267 0
-DEAL::2268 0
-DEAL::2269 0
-DEAL::2270 0
-DEAL::2271 0
-DEAL::2272 0
-DEAL::2273 0
-DEAL::2274 0
-DEAL::2275 0
-DEAL::2276 0
-DEAL::2277 0
-DEAL::2278 0
-DEAL::2279 0
-DEAL::2280 0
-DEAL::2281 0
-DEAL::2282 0
-DEAL::2283 0
-DEAL::2284 0
-DEAL::2285 0
-DEAL::2286 0
-DEAL::2287 0
-DEAL::2288 1
-DEAL::2289 1
-DEAL::2290 1
-DEAL::2291 1
-DEAL::2292 1
-DEAL::2293 1
-DEAL::2294 1
-DEAL::2295 1
-DEAL::2296 1
-DEAL::2297 1
-DEAL::2298 1
-DEAL::2299 1
-DEAL::2300 1
-DEAL::2301 1
-DEAL::2302 1
-DEAL::2303 1
-DEAL::2304 1
-DEAL::2305 1
-DEAL::2306 1
-DEAL::2307 1
-DEAL::2308 1
-DEAL::2309 1
-DEAL::2310 1
-DEAL::2311 1
-DEAL::2312 1
-DEAL::2313 1
-DEAL::2314 1
-DEAL::2315 1
-DEAL::2316 1
-DEAL::2317 1
-DEAL::2318 1
-DEAL::2319 1
-DEAL::2320 1
-DEAL::2321 1
-DEAL::2322 1
-DEAL::2323 1
-DEAL::2324 0
-DEAL::2325 0
-DEAL::2326 0
-DEAL::2327 0
-DEAL::2328 0
-DEAL::2329 0
-DEAL::2330 0
-DEAL::2331 0
-DEAL::2332 0
-DEAL::2333 0
-DEAL::2334 0
-DEAL::2335 0
-DEAL::2336 0
-DEAL::2337 0
-DEAL::2338 0
-DEAL::2339 0
-DEAL::2340 0
-DEAL::2341 0
-DEAL::2342 0
-DEAL::2343 0
-DEAL::2344 0
+DEAL::2240 0
+DEAL::2241 0
+DEAL::2242 0
+DEAL::2243 0
+DEAL::2244 0
+DEAL::2245 0
+DEAL::2246 0
+DEAL::2247 0
+DEAL::2248 0
+DEAL::2249 0
+DEAL::2250 0
+DEAL::2251 0
+DEAL::2252 0
+DEAL::2253 3
+DEAL::2254 3
+DEAL::2255 3
+DEAL::2256 3
+DEAL::2257 3
+DEAL::2258 3
+DEAL::2259 3
+DEAL::2260 3
+DEAL::2261 3
+DEAL::2262 3
+DEAL::2263 3
+DEAL::2264 3
+DEAL::2265 3
+DEAL::2266 3
+DEAL::2267 3
+DEAL::2268 3
+DEAL::2269 3
+DEAL::2270 3
+DEAL::2271 3
+DEAL::2272 3
+DEAL::2273 3
+DEAL::2274 3
+DEAL::2275 3
+DEAL::2276 3
+DEAL::2277 3
+DEAL::2278 3
+DEAL::2279 3
+DEAL::2280 3
+DEAL::2281 3
+DEAL::2282 3
+DEAL::2283 3
+DEAL::2284 3
+DEAL::2285 3
+DEAL::2286 3
+DEAL::2287 3
+DEAL::2288 4
+DEAL::2289 4
+DEAL::2290 4
+DEAL::2291 4
+DEAL::2292 4
+DEAL::2293 4
+DEAL::2294 4
+DEAL::2295 4
+DEAL::2296 4
+DEAL::2297 4
+DEAL::2298 4
+DEAL::2299 4
+DEAL::2300 4
+DEAL::2301 4
+DEAL::2302 4
+DEAL::2303 4
+DEAL::2304 4
+DEAL::2305 4
+DEAL::2306 4
+DEAL::2307 4
+DEAL::2308 4
+DEAL::2309 4
+DEAL::2310 4
+DEAL::2311 4
+DEAL::2312 4
+DEAL::2313 4
+DEAL::2314 4
+DEAL::2315 4
+DEAL::2316 4
+DEAL::2317 4
+DEAL::2318 4
+DEAL::2319 4
+DEAL::2320 4
+DEAL::2321 4
+DEAL::2322 4
+DEAL::2323 4
+DEAL::2324 4
+DEAL::2325 3
+DEAL::2326 4
+DEAL::2327 3
+DEAL::2328 3
+DEAL::2329 3
+DEAL::2330 3
+DEAL::2331 3
+DEAL::2332 4
+DEAL::2333 4
+DEAL::2334 4
+DEAL::2335 4
+DEAL::2336 4
+DEAL::2337 4
+DEAL::2338 3
+DEAL::2339 4
+DEAL::2340 3
+DEAL::2341 3
+DEAL::2342 4
+DEAL::2343 4
+DEAL::2344 4
 DEAL::2345 4
 DEAL::2346 4
 DEAL::2347 4
@@ -3902,7 +3902,7 @@ DEAL::2361 4
 DEAL::2362 4
 DEAL::2363 4
 DEAL::2364 4
-DEAL::2365 4
+DEAL::2365 1
 DEAL::2366 4
 DEAL::2367 4
 DEAL::2368 4
@@ -3910,561 +3910,561 @@ DEAL::2369 4
 DEAL::2370 4
 DEAL::2371 4
 DEAL::2372 4
-DEAL::2373 4
-DEAL::2374 4
-DEAL::2375 4
-DEAL::2376 4
-DEAL::2377 4
-DEAL::2378 4
-DEAL::2379 4
-DEAL::2380 4
-DEAL::2381 4
-DEAL::2382 4
-DEAL::2383 4
-DEAL::2384 4
-DEAL::2385 4
-DEAL::2386 4
-DEAL::2387 4
-DEAL::2388 4
-DEAL::2389 4
-DEAL::2390 4
-DEAL::2391 4
-DEAL::2392 4
-DEAL::2393 4
-DEAL::2394 4
-DEAL::2395 4
-DEAL::2396 4
-DEAL::2397 4
-DEAL::2398 4
-DEAL::2399 4
-DEAL::2400 1
-DEAL::2401 1
-DEAL::2402 1
-DEAL::2403 1
-DEAL::2404 1
-DEAL::2405 1
-DEAL::2406 1
-DEAL::2407 1
-DEAL::2408 1
-DEAL::2409 1
-DEAL::2410 1
-DEAL::2411 1
-DEAL::2412 1
-DEAL::2413 1
-DEAL::2414 1
-DEAL::2415 1
-DEAL::2416 1
-DEAL::2417 1
-DEAL::2418 1
-DEAL::2419 4
-DEAL::2420 4
-DEAL::2421 1
-DEAL::2422 1
-DEAL::2423 1
-DEAL::2424 1
-DEAL::2425 1
-DEAL::2426 1
-DEAL::2427 1
-DEAL::2428 1
-DEAL::2429 4
-DEAL::2430 4
-DEAL::2431 4
-DEAL::2432 4
-DEAL::2433 4
-DEAL::2434 4
-DEAL::2435 4
-DEAL::2436 4
-DEAL::2437 4
-DEAL::2438 4
-DEAL::2439 4
-DEAL::2440 4
-DEAL::2441 4
-DEAL::2442 4
-DEAL::2443 4
-DEAL::2444 4
-DEAL::2445 4
-DEAL::2446 4
-DEAL::2447 4
-DEAL::2448 4
-DEAL::2449 4
-DEAL::2450 4
-DEAL::2451 4
-DEAL::2452 4
-DEAL::2453 4
-DEAL::2454 4
-DEAL::2455 4
-DEAL::2456 3
-DEAL::2457 4
-DEAL::2458 3
-DEAL::2459 3
-DEAL::2460 3
-DEAL::2461 3
-DEAL::2462 4
-DEAL::2463 4
-DEAL::2464 4
-DEAL::2465 4
-DEAL::2466 4
-DEAL::2467 4
-DEAL::2468 3
-DEAL::2469 4
-DEAL::2470 3
-DEAL::2471 3
-DEAL::2472 4
-DEAL::2473 4
-DEAL::2474 4
-DEAL::2475 3
-DEAL::2476 3
-DEAL::2477 3
-DEAL::2478 3
-DEAL::2479 3
-DEAL::2480 3
-DEAL::2481 3
-DEAL::2482 4
-DEAL::2483 3
-DEAL::2484 3
-DEAL::2485 4
-DEAL::2486 3
-DEAL::2487 3
-DEAL::2488 3
-DEAL::2489 4
-DEAL::2490 4
-DEAL::2491 3
-DEAL::2492 4
-DEAL::2493 3
-DEAL::2494 3
-DEAL::2495 3
-DEAL::2496 3
-DEAL::2497 3
-DEAL::2498 3
-DEAL::2499 3
-DEAL::2500 3
-DEAL::2501 3
-DEAL::2502 4
-DEAL::2503 4
-DEAL::2504 4
-DEAL::2505 4
-DEAL::2506 4
-DEAL::2507 4
-DEAL::2508 4
-DEAL::2509 2
-DEAL::2510 2
-DEAL::2511 2
-DEAL::2512 2
-DEAL::2513 2
-DEAL::2514 2
-DEAL::2515 2
-DEAL::2516 2
-DEAL::2517 2
-DEAL::2518 2
-DEAL::2519 2
-DEAL::2520 2
-DEAL::2521 2
-DEAL::2522 2
-DEAL::2523 2
-DEAL::2524 2
-DEAL::2525 2
-DEAL::2526 2
-DEAL::2527 2
-DEAL::2528 4
-DEAL::2529 4
-DEAL::2530 4
-DEAL::2531 4
-DEAL::2532 4
-DEAL::2533 4
-DEAL::2534 4
-DEAL::2535 4
-DEAL::2536 4
-DEAL::2537 4
-DEAL::2538 4
-DEAL::2539 4
-DEAL::2540 4
-DEAL::2541 4
-DEAL::2542 4
-DEAL::2543 4
-DEAL::2544 4
-DEAL::2545 4
-DEAL::2546 4
-DEAL::2547 0
-DEAL::2548 1
-DEAL::2549 1
-DEAL::2550 1
-DEAL::2551 1
-DEAL::2552 1
-DEAL::2553 1
-DEAL::2554 1
-DEAL::2555 1
-DEAL::2556 0
-DEAL::2557 1
-DEAL::2558 1
-DEAL::2559 1
-DEAL::2560 1
-DEAL::2561 1
-DEAL::2562 1
-DEAL::2563 1
-DEAL::2564 1
-DEAL::2565 1
-DEAL::2566 1
-DEAL::2567 1
-DEAL::2568 1
-DEAL::2569 1
-DEAL::2570 1
-DEAL::2571 1
-DEAL::2572 1
-DEAL::2573 1
-DEAL::2574 1
-DEAL::2575 1
-DEAL::2576 1
-DEAL::2577 1
-DEAL::2578 1
-DEAL::2579 1
-DEAL::2580 1
-DEAL::2581 1
-DEAL::2582 1
-DEAL::2583 1
-DEAL::2584 1
-DEAL::2585 1
-DEAL::2586 1
-DEAL::2587 1
-DEAL::2588 1
-DEAL::2589 1
-DEAL::2590 1
-DEAL::2591 1
-DEAL::2592 1
-DEAL::2593 1
-DEAL::2594 1
-DEAL::2595 1
-DEAL::2596 1
-DEAL::2597 1
-DEAL::2598 1
-DEAL::2599 1
-DEAL::2600 1
-DEAL::2601 1
-DEAL::2602 1
-DEAL::2603 1
-DEAL::2604 1
-DEAL::2605 1
-DEAL::2606 1
-DEAL::2607 1
-DEAL::2608 1
-DEAL::2609 1
-DEAL::2610 1
-DEAL::2611 1
-DEAL::2612 1
-DEAL::2613 1
-DEAL::2614 1
-DEAL::2615 1
-DEAL::2616 1
-DEAL::2617 1
-DEAL::2618 1
-DEAL::2619 1
-DEAL::2620 1
-DEAL::2621 1
-DEAL::2622 1
-DEAL::2623 1
-DEAL::2624 1
-DEAL::2625 1
-DEAL::2626 1
-DEAL::2627 1
-DEAL::2628 1
-DEAL::2629 1
-DEAL::2630 1
-DEAL::2631 1
-DEAL::2632 1
-DEAL::2633 1
-DEAL::2634 1
-DEAL::2635 1
-DEAL::2636 1
-DEAL::2637 1
-DEAL::2638 1
-DEAL::2639 1
-DEAL::2640 1
-DEAL::2641 1
-DEAL::2642 1
-DEAL::2643 1
-DEAL::2644 1
-DEAL::2645 1
-DEAL::2646 1
-DEAL::2647 2
-DEAL::2648 2
-DEAL::2649 2
-DEAL::2650 2
-DEAL::2651 2
-DEAL::2652 2
-DEAL::2653 2
-DEAL::2654 2
-DEAL::2655 2
-DEAL::2656 2
-DEAL::2657 2
-DEAL::2658 2
-DEAL::2659 2
-DEAL::2660 2
-DEAL::2661 2
-DEAL::2662 2
-DEAL::2663 2
-DEAL::2664 2
-DEAL::2665 2
-DEAL::2666 2
-DEAL::2667 2
-DEAL::2668 2
-DEAL::2669 2
-DEAL::2670 2
-DEAL::2671 2
-DEAL::2672 2
-DEAL::2673 2
-DEAL::2674 2
-DEAL::2675 2
-DEAL::2676 2
-DEAL::2677 2
-DEAL::2678 2
-DEAL::2679 2
-DEAL::2680 2
-DEAL::2681 2
-DEAL::2682 4
-DEAL::2683 4
-DEAL::2684 4
-DEAL::2685 4
-DEAL::2686 2
-DEAL::2687 4
-DEAL::2688 4
-DEAL::2689 4
-DEAL::2690 4
-DEAL::2691 4
-DEAL::2692 4
-DEAL::2693 4
-DEAL::2694 4
-DEAL::2695 2
-DEAL::2696 4
-DEAL::2697 4
-DEAL::2698 4
-DEAL::2699 4
-DEAL::2700 4
-DEAL::2701 4
-DEAL::2702 4
-DEAL::2703 4
-DEAL::2704 4
-DEAL::2705 4
-DEAL::2706 4
-DEAL::2707 4
-DEAL::2708 4
-DEAL::2709 4
-DEAL::2710 4
-DEAL::2711 4
-DEAL::2712 4
-DEAL::2713 4
-DEAL::2714 4
-DEAL::2715 4
-DEAL::2716 4
-DEAL::2717 4
-DEAL::2718 4
-DEAL::2719 4
-DEAL::2720 4
-DEAL::2721 2
-DEAL::2722 2
-DEAL::2723 2
-DEAL::2724 2
-DEAL::2725 2
+DEAL::2373 1
+DEAL::2374 1
+DEAL::2375 1
+DEAL::2376 1
+DEAL::2377 1
+DEAL::2378 1
+DEAL::2379 1
+DEAL::2380 1
+DEAL::2381 1
+DEAL::2382 1
+DEAL::2383 1
+DEAL::2384 1
+DEAL::2385 1
+DEAL::2386 1
+DEAL::2387 1
+DEAL::2388 1
+DEAL::2389 1
+DEAL::2390 1
+DEAL::2391 1
+DEAL::2392 1
+DEAL::2393 1
+DEAL::2394 1
+DEAL::2395 1
+DEAL::2396 1
+DEAL::2397 1
+DEAL::2398 1
+DEAL::2399 1
+DEAL::2400 2
+DEAL::2401 2
+DEAL::2402 2
+DEAL::2403 2
+DEAL::2404 2
+DEAL::2405 2
+DEAL::2406 2
+DEAL::2407 2
+DEAL::2408 2
+DEAL::2409 2
+DEAL::2410 2
+DEAL::2411 2
+DEAL::2412 2
+DEAL::2413 2
+DEAL::2414 2
+DEAL::2415 2
+DEAL::2416 2
+DEAL::2417 2
+DEAL::2418 2
+DEAL::2419 2
+DEAL::2420 2
+DEAL::2421 2
+DEAL::2422 2
+DEAL::2423 2
+DEAL::2424 2
+DEAL::2425 2
+DEAL::2426 2
+DEAL::2427 2
+DEAL::2428 2
+DEAL::2429 2
+DEAL::2430 2
+DEAL::2431 2
+DEAL::2432 2
+DEAL::2433 2
+DEAL::2434 2
+DEAL::2435 2
+DEAL::2436 2
+DEAL::2437 1
+DEAL::2438 1
+DEAL::2439 1
+DEAL::2440 1
+DEAL::2441 1
+DEAL::2442 1
+DEAL::2443 1
+DEAL::2444 1
+DEAL::2445 1
+DEAL::2446 1
+DEAL::2447 1
+DEAL::2448 1
+DEAL::2449 1
+DEAL::2450 1
+DEAL::2451 1
+DEAL::2452 1
+DEAL::2453 1
+DEAL::2454 1
+DEAL::2455 1
+DEAL::2456 1
+DEAL::2457 1
+DEAL::2458 1
+DEAL::2459 1
+DEAL::2460 1
+DEAL::2461 1
+DEAL::2462 1
+DEAL::2463 1
+DEAL::2464 1
+DEAL::2465 1
+DEAL::2466 1
+DEAL::2467 1
+DEAL::2468 1
+DEAL::2469 1
+DEAL::2470 1
+DEAL::2471 1
+DEAL::2472 1
+DEAL::2473 1
+DEAL::2474 1
+DEAL::2475 1
+DEAL::2476 1
+DEAL::2477 1
+DEAL::2478 1
+DEAL::2479 1
+DEAL::2480 1
+DEAL::2481 1
+DEAL::2482 1
+DEAL::2483 1
+DEAL::2484 1
+DEAL::2485 1
+DEAL::2486 1
+DEAL::2487 1
+DEAL::2488 1
+DEAL::2489 1
+DEAL::2490 1
+DEAL::2491 1
+DEAL::2492 1
+DEAL::2493 1
+DEAL::2494 1
+DEAL::2495 1
+DEAL::2496 1
+DEAL::2497 1
+DEAL::2498 1
+DEAL::2499 1
+DEAL::2500 1
+DEAL::2501 1
+DEAL::2502 1
+DEAL::2503 1
+DEAL::2504 1
+DEAL::2505 1
+DEAL::2506 1
+DEAL::2507 1
+DEAL::2508 1
+DEAL::2509 0
+DEAL::2510 0
+DEAL::2511 0
+DEAL::2512 0
+DEAL::2513 0
+DEAL::2514 0
+DEAL::2515 0
+DEAL::2516 0
+DEAL::2517 0
+DEAL::2518 0
+DEAL::2519 0
+DEAL::2520 0
+DEAL::2521 0
+DEAL::2522 0
+DEAL::2523 0
+DEAL::2524 0
+DEAL::2525 0
+DEAL::2526 0
+DEAL::2527 0
+DEAL::2528 1
+DEAL::2529 0
+DEAL::2530 1
+DEAL::2531 1
+DEAL::2532 1
+DEAL::2533 1
+DEAL::2534 1
+DEAL::2535 1
+DEAL::2536 1
+DEAL::2537 1
+DEAL::2538 1
+DEAL::2539 1
+DEAL::2540 0
+DEAL::2541 0
+DEAL::2542 0
+DEAL::2543 0
+DEAL::2544 0
+DEAL::2545 0
+DEAL::2546 0
+DEAL::2547 4
+DEAL::2548 4
+DEAL::2549 3
+DEAL::2550 3
+DEAL::2551 3
+DEAL::2552 3
+DEAL::2553 3
+DEAL::2554 4
+DEAL::2555 4
+DEAL::2556 4
+DEAL::2557 4
+DEAL::2558 4
+DEAL::2559 4
+DEAL::2560 3
+DEAL::2561 4
+DEAL::2562 4
+DEAL::2563 4
+DEAL::2564 4
+DEAL::2565 4
+DEAL::2566 4
+DEAL::2567 4
+DEAL::2568 4
+DEAL::2569 4
+DEAL::2570 4
+DEAL::2571 4
+DEAL::2572 4
+DEAL::2573 4
+DEAL::2574 4
+DEAL::2575 4
+DEAL::2576 4
+DEAL::2577 4
+DEAL::2578 4
+DEAL::2579 4
+DEAL::2580 4
+DEAL::2581 4
+DEAL::2582 4
+DEAL::2583 4
+DEAL::2584 4
+DEAL::2585 4
+DEAL::2586 4
+DEAL::2587 4
+DEAL::2588 4
+DEAL::2589 4
+DEAL::2590 4
+DEAL::2591 4
+DEAL::2592 4
+DEAL::2593 2
+DEAL::2594 2
+DEAL::2595 2
+DEAL::2596 2
+DEAL::2597 2
+DEAL::2598 2
+DEAL::2599 2
+DEAL::2600 2
+DEAL::2601 2
+DEAL::2602 2
+DEAL::2603 2
+DEAL::2604 2
+DEAL::2605 2
+DEAL::2606 2
+DEAL::2607 2
+DEAL::2608 2
+DEAL::2609 2
+DEAL::2610 2
+DEAL::2611 2
+DEAL::2612 2
+DEAL::2613 2
+DEAL::2614 2
+DEAL::2615 2
+DEAL::2616 2
+DEAL::2617 2
+DEAL::2618 2
+DEAL::2619 2
+DEAL::2620 2
+DEAL::2621 2
+DEAL::2622 2
+DEAL::2623 2
+DEAL::2624 2
+DEAL::2625 2
+DEAL::2626 4
+DEAL::2627 4
+DEAL::2628 4
+DEAL::2629 4
+DEAL::2630 4
+DEAL::2631 4
+DEAL::2632 4
+DEAL::2633 4
+DEAL::2634 4
+DEAL::2635 4
+DEAL::2636 4
+DEAL::2637 4
+DEAL::2638 4
+DEAL::2639 4
+DEAL::2640 4
+DEAL::2641 4
+DEAL::2642 4
+DEAL::2643 4
+DEAL::2644 4
+DEAL::2645 4
+DEAL::2646 4
+DEAL::2647 2
+DEAL::2648 2
+DEAL::2649 2
+DEAL::2650 2
+DEAL::2651 2
+DEAL::2652 2
+DEAL::2653 2
+DEAL::2654 2
+DEAL::2655 2
+DEAL::2656 2
+DEAL::2657 2
+DEAL::2658 2
+DEAL::2659 2
+DEAL::2660 2
+DEAL::2661 2
+DEAL::2662 2
+DEAL::2663 2
+DEAL::2664 2
+DEAL::2665 2
+DEAL::2666 2
+DEAL::2667 0
+DEAL::2668 2
+DEAL::2669 2
+DEAL::2670 2
+DEAL::2671 2
+DEAL::2672 2
+DEAL::2673 2
+DEAL::2674 0
+DEAL::2675 2
+DEAL::2676 0
+DEAL::2677 0
+DEAL::2678 0
+DEAL::2679 0
+DEAL::2680 0
+DEAL::2681 0
+DEAL::2682 2
+DEAL::2683 2
+DEAL::2684 2
+DEAL::2685 2
+DEAL::2686 2
+DEAL::2687 2
+DEAL::2688 2
+DEAL::2689 2
+DEAL::2690 2
+DEAL::2691 2
+DEAL::2692 2
+DEAL::2693 2
+DEAL::2694 2
+DEAL::2695 2
+DEAL::2696 2
+DEAL::2697 2
+DEAL::2698 2
+DEAL::2699 2
+DEAL::2700 2
+DEAL::2701 2
+DEAL::2702 2
+DEAL::2703 2
+DEAL::2704 2
+DEAL::2705 2
+DEAL::2706 2
+DEAL::2707 2
+DEAL::2708 2
+DEAL::2709 2
+DEAL::2710 2
+DEAL::2711 2
+DEAL::2712 2
+DEAL::2713 2
+DEAL::2714 2
+DEAL::2715 2
+DEAL::2716 2
+DEAL::2717 2
+DEAL::2718 2
+DEAL::2719 2
+DEAL::2720 2
+DEAL::2721 2
+DEAL::2722 2
+DEAL::2723 2
+DEAL::2724 2
+DEAL::2725 2
 DEAL::2726 2
-DEAL::2727 2
+DEAL::2727 0
 DEAL::2728 2
 DEAL::2729 2
 DEAL::2730 2
 DEAL::2731 2
-DEAL::2732 2
-DEAL::2733 2
-DEAL::2734 2
-DEAL::2735 2
-DEAL::2736 2
-DEAL::2737 2
+DEAL::2732 0
+DEAL::2733 0
+DEAL::2734 0
+DEAL::2735 0
+DEAL::2736 0
+DEAL::2737 0
 DEAL::2738 2
 DEAL::2739 2
-DEAL::2740 2
-DEAL::2741 2
-DEAL::2742 2
-DEAL::2743 2
-DEAL::2744 2
-DEAL::2745 2
-DEAL::2746 2
-DEAL::2747 2
-DEAL::2748 2
-DEAL::2749 2
-DEAL::2750 2
-DEAL::2751 2
-DEAL::2752 2
-DEAL::2753 2
-DEAL::2754 2
-DEAL::2755 2
-DEAL::2756 2
-DEAL::2757 2
-DEAL::2758 2
-DEAL::2759 2
-DEAL::2760 2
-DEAL::2761 2
-DEAL::2762 2
-DEAL::2763 2
-DEAL::2764 2
-DEAL::2765 2
-DEAL::2766 2
-DEAL::2767 2
-DEAL::2768 2
-DEAL::2769 2
-DEAL::2770 2
-DEAL::2771 2
-DEAL::2772 2
-DEAL::2773 2
-DEAL::2774 2
-DEAL::2775 2
-DEAL::2776 2
-DEAL::2777 2
-DEAL::2778 2
-DEAL::2779 2
-DEAL::2780 0
-DEAL::2781 0
-DEAL::2782 0
-DEAL::2783 0
-DEAL::2784 0
-DEAL::2785 0
-DEAL::2786 0
-DEAL::2787 0
-DEAL::2788 0
-DEAL::2789 0
-DEAL::2790 0
-DEAL::2791 0
-DEAL::2792 0
-DEAL::2793 0
-DEAL::2794 0
-DEAL::2795 0
-DEAL::2796 4
-DEAL::2797 4
-DEAL::2798 4
-DEAL::2799 4
-DEAL::2800 4
-DEAL::2801 4
-DEAL::2802 4
-DEAL::2803 4
-DEAL::2804 4
-DEAL::2805 4
-DEAL::2806 4
-DEAL::2807 4
-DEAL::2808 4
-DEAL::2809 4
-DEAL::2810 4
-DEAL::2811 4
-DEAL::2812 3
-DEAL::2813 3
-DEAL::2814 3
-DEAL::2815 3
-DEAL::2816 3
-DEAL::2817 3
-DEAL::2818 3
-DEAL::2819 3
-DEAL::2820 3
-DEAL::2821 3
-DEAL::2822 3
-DEAL::2823 3
-DEAL::2824 3
-DEAL::2825 3
-DEAL::2826 3
-DEAL::2827 3
-DEAL::2828 3
-DEAL::2829 3
-DEAL::2830 3
-DEAL::2831 3
-DEAL::2832 3
-DEAL::2833 3
-DEAL::2834 3
-DEAL::2835 3
-DEAL::2836 3
-DEAL::2837 3
-DEAL::2838 3
-DEAL::2839 3
-DEAL::2840 4
-DEAL::2841 4
-DEAL::2842 4
-DEAL::2843 4
-DEAL::2844 4
-DEAL::2845 4
-DEAL::2846 4
-DEAL::2847 4
-DEAL::2848 4
-DEAL::2849 4
-DEAL::2850 4
-DEAL::2851 4
-DEAL::2852 4
-DEAL::2853 4
-DEAL::2854 4
-DEAL::2855 4
-DEAL::2856 4
-DEAL::2857 4
-DEAL::2858 4
-DEAL::2859 2
-DEAL::2860 2
-DEAL::2861 2
-DEAL::2862 2
-DEAL::2863 2
-DEAL::2864 2
-DEAL::2865 2
-DEAL::2866 2
-DEAL::2867 2
-DEAL::2868 2
-DEAL::2869 2
-DEAL::2870 2
-DEAL::2871 2
-DEAL::2872 2
-DEAL::2873 2
-DEAL::2874 4
-DEAL::2875 4
-DEAL::2876 4
-DEAL::2877 4
-DEAL::2878 4
-DEAL::2879 4
-DEAL::2880 4
-DEAL::2881 4
-DEAL::2882 4
-DEAL::2883 4
-DEAL::2884 4
-DEAL::2885 4
-DEAL::2886 4
-DEAL::2887 4
-DEAL::2888 4
-DEAL::2889 4
-DEAL::2890 4
-DEAL::2891 4
-DEAL::2892 4
-DEAL::2893 4
-DEAL::2894 4
-DEAL::2895 0
-DEAL::2896 0
-DEAL::2897 0
-DEAL::2898 0
-DEAL::2899 0
-DEAL::2900 0
-DEAL::2901 1
-DEAL::2902 1
-DEAL::2903 1
-DEAL::2904 0
-DEAL::2905 0
-DEAL::2906 0
-DEAL::2907 0
-DEAL::2908 0
-DEAL::2909 1
-DEAL::2910 1
-DEAL::2911 0
-DEAL::2912 1
-DEAL::2913 0
-DEAL::2914 0
-DEAL::2915 0
-DEAL::2916 0
-DEAL::2917 1
-DEAL::2918 0
-DEAL::2919 0
-DEAL::2920 1
-DEAL::2921 0
-DEAL::2922 1
-DEAL::2923 1
-DEAL::2924 1
-DEAL::2925 1
-DEAL::2926 1
-DEAL::2927 1
+DEAL::2740 0
+DEAL::2741 0
+DEAL::2742 0
+DEAL::2743 0
+DEAL::2744 0
+DEAL::2745 0
+DEAL::2746 0
+DEAL::2747 0
+DEAL::2748 0
+DEAL::2749 0
+DEAL::2750 0
+DEAL::2751 0
+DEAL::2752 0
+DEAL::2753 0
+DEAL::2754 0
+DEAL::2755 0
+DEAL::2756 0
+DEAL::2757 0
+DEAL::2758 0
+DEAL::2759 0
+DEAL::2760 0
+DEAL::2761 0
+DEAL::2762 0
+DEAL::2763 0
+DEAL::2764 0
+DEAL::2765 0
+DEAL::2766 0
+DEAL::2767 0
+DEAL::2768 0
+DEAL::2769 0
+DEAL::2770 0
+DEAL::2771 0
+DEAL::2772 0
+DEAL::2773 0
+DEAL::2774 0
+DEAL::2775 0
+DEAL::2776 0
+DEAL::2777 0
+DEAL::2778 0
+DEAL::2779 0
+DEAL::2780 3
+DEAL::2781 4
+DEAL::2782 3
+DEAL::2783 3
+DEAL::2784 3
+DEAL::2785 4
+DEAL::2786 3
+DEAL::2787 3
+DEAL::2788 3
+DEAL::2789 3
+DEAL::2790 3
+DEAL::2791 3
+DEAL::2792 4
+DEAL::2793 4
+DEAL::2794 4
+DEAL::2795 4
+DEAL::2796 1
+DEAL::2797 1
+DEAL::2798 1
+DEAL::2799 1
+DEAL::2800 1
+DEAL::2801 1
+DEAL::2802 1
+DEAL::2803 1
+DEAL::2804 1
+DEAL::2805 1
+DEAL::2806 1
+DEAL::2807 1
+DEAL::2808 1
+DEAL::2809 1
+DEAL::2810 1
+DEAL::2811 1
+DEAL::2812 1
+DEAL::2813 1
+DEAL::2814 1
+DEAL::2815 1
+DEAL::2816 1
+DEAL::2817 1
+DEAL::2818 1
+DEAL::2819 1
+DEAL::2820 1
+DEAL::2821 1
+DEAL::2822 1
+DEAL::2823 1
+DEAL::2824 1
+DEAL::2825 1
+DEAL::2826 1
+DEAL::2827 1
+DEAL::2828 1
+DEAL::2829 1
+DEAL::2830 1
+DEAL::2831 1
+DEAL::2832 1
+DEAL::2833 1
+DEAL::2834 1
+DEAL::2835 1
+DEAL::2836 1
+DEAL::2837 1
+DEAL::2838 1
+DEAL::2839 1
+DEAL::2840 1
+DEAL::2841 1
+DEAL::2842 1
+DEAL::2843 1
+DEAL::2844 1
+DEAL::2845 1
+DEAL::2846 1
+DEAL::2847 1
+DEAL::2848 1
+DEAL::2849 1
+DEAL::2850 1
+DEAL::2851 1
+DEAL::2852 1
+DEAL::2853 1
+DEAL::2854 1
+DEAL::2855 1
+DEAL::2856 1
+DEAL::2857 1
+DEAL::2858 1
+DEAL::2859 0
+DEAL::2860 0
+DEAL::2861 0
+DEAL::2862 0
+DEAL::2863 0
+DEAL::2864 0
+DEAL::2865 0
+DEAL::2866 0
+DEAL::2867 0
+DEAL::2868 0
+DEAL::2869 0
+DEAL::2870 0
+DEAL::2871 0
+DEAL::2872 0
+DEAL::2873 0
+DEAL::2874 0
+DEAL::2875 0
+DEAL::2876 0
+DEAL::2877 0
+DEAL::2878 0
+DEAL::2879 0
+DEAL::2880 0
+DEAL::2881 0
+DEAL::2882 0
+DEAL::2883 0
+DEAL::2884 0
+DEAL::2885 0
+DEAL::2886 0
+DEAL::2887 0
+DEAL::2888 0
+DEAL::2889 0
+DEAL::2890 0
+DEAL::2891 0
+DEAL::2892 0
+DEAL::2893 0
+DEAL::2894 0
+DEAL::2895 2
+DEAL::2896 2
+DEAL::2897 2
+DEAL::2898 2
+DEAL::2899 2
+DEAL::2900 2
+DEAL::2901 2
+DEAL::2902 2
+DEAL::2903 2
+DEAL::2904 2
+DEAL::2905 2
+DEAL::2906 2
+DEAL::2907 2
+DEAL::2908 2
+DEAL::2909 2
+DEAL::2910 2
+DEAL::2911 2
+DEAL::2912 2
+DEAL::2913 2
+DEAL::2914 2
+DEAL::2915 2
+DEAL::2916 2
+DEAL::2917 2
+DEAL::2918 2
+DEAL::2919 2
+DEAL::2920 2
+DEAL::2921 2
+DEAL::2922 2
+DEAL::2923 2
+DEAL::2924 2
+DEAL::2925 2
+DEAL::2926 2
+DEAL::2927 2
 DEAL::2928 4
 DEAL::2929 4
 DEAL::2930 4
@@ -4507,150 +4507,150 @@ DEAL::2966 4
 DEAL::2967 4
 DEAL::2968 2
 DEAL::2969 2
-DEAL::2970 2
+DEAL::2970 0
 DEAL::2971 2
 DEAL::2972 2
-DEAL::2973 2
-DEAL::2974 2
-DEAL::2975 2
-DEAL::2976 2
+DEAL::2973 0
+DEAL::2974 0
+DEAL::2975 0
+DEAL::2976 0
 DEAL::2977 2
 DEAL::2978 2
 DEAL::2979 2
 DEAL::2980 2
-DEAL::2981 2
-DEAL::2982 2
-DEAL::2983 2
-DEAL::2984 3
-DEAL::2985 3
-DEAL::2986 3
-DEAL::2987 3
-DEAL::2988 3
-DEAL::2989 3
-DEAL::2990 3
-DEAL::2991 3
-DEAL::2992 1
-DEAL::2993 1
+DEAL::2981 0
+DEAL::2982 0
+DEAL::2983 0
+DEAL::2984 1
+DEAL::2985 1
+DEAL::2986 1
+DEAL::2987 1
+DEAL::2988 1
+DEAL::2989 1
+DEAL::2990 1
+DEAL::2991 1
+DEAL::2992 4
+DEAL::2993 4
 DEAL::2994 4
-DEAL::2995 1
-DEAL::2996 1
+DEAL::2995 4
+DEAL::2996 4
 DEAL::2997 4
-DEAL::2998 1
-DEAL::2999 1
-DEAL::3000 1
-DEAL::3001 0
-DEAL::3002 0
-DEAL::3003 0
-DEAL::3004 0
-DEAL::3005 0
-DEAL::3006 0
-DEAL::3007 0
-DEAL::3008 0
-DEAL::3009 0
-DEAL::3010 0
-DEAL::3011 0
-DEAL::3012 0
-DEAL::3013 0
-DEAL::3014 0
-DEAL::3015 0
-DEAL::3016 0
-DEAL::3017 0
-DEAL::3018 0
-DEAL::3019 0
-DEAL::3020 0
-DEAL::3021 3
-DEAL::3022 3
-DEAL::3023 3
-DEAL::3024 3
-DEAL::3025 3
-DEAL::3026 3
-DEAL::3027 3
-DEAL::3028 3
-DEAL::3029 3
-DEAL::3030 3
-DEAL::3031 3
-DEAL::3032 3
-DEAL::3033 3
-DEAL::3034 3
-DEAL::3035 3
-DEAL::3036 3
-DEAL::3037 3
-DEAL::3038 3
-DEAL::3039 3
-DEAL::3040 3
-DEAL::3041 3
-DEAL::3042 3
-DEAL::3043 3
-DEAL::3044 3
-DEAL::3045 3
-DEAL::3046 2
-DEAL::3047 2
-DEAL::3048 2
-DEAL::3049 2
-DEAL::3050 2
-DEAL::3051 2
-DEAL::3052 2
-DEAL::3053 2
-DEAL::3054 2
-DEAL::3055 2
-DEAL::3056 2
-DEAL::3057 2
-DEAL::3058 2
-DEAL::3059 2
-DEAL::3060 2
-DEAL::3061 2
-DEAL::3062 2
-DEAL::3063 2
-DEAL::3064 2
-DEAL::3065 2
-DEAL::3066 2
-DEAL::3067 0
-DEAL::3068 0
-DEAL::3069 0
-DEAL::3070 0
-DEAL::3071 0
-DEAL::3072 0
-DEAL::3073 0
-DEAL::3074 0
-DEAL::3075 4
-DEAL::3076 4
-DEAL::3077 4
-DEAL::3078 4
-DEAL::3079 4
-DEAL::3080 4
-DEAL::3081 4
-DEAL::3082 4
-DEAL::3083 4
-DEAL::3084 4
-DEAL::3085 4
-DEAL::3086 4
-DEAL::3087 4
-DEAL::3088 4
-DEAL::3089 4
-DEAL::3090 4
-DEAL::3091 4
-DEAL::3092 4
-DEAL::3093 4
-DEAL::3094 3
-DEAL::3095 3
-DEAL::3096 3
-DEAL::3097 3
-DEAL::3098 3
-DEAL::3099 3
-DEAL::3100 3
-DEAL::3101 3
-DEAL::3102 3
-DEAL::3103 3
-DEAL::3104 3
-DEAL::3105 3
-DEAL::3106 3
-DEAL::3107 3
-DEAL::3108 3
-DEAL::3109 3
-DEAL::3110 3
-DEAL::3111 3
-DEAL::3112 3
-DEAL::3113 3
+DEAL::2998 4
+DEAL::2999 4
+DEAL::3000 4
+DEAL::3001 3
+DEAL::3002 3
+DEAL::3003 3
+DEAL::3004 3
+DEAL::3005 3
+DEAL::3006 3
+DEAL::3007 3
+DEAL::3008 3
+DEAL::3009 3
+DEAL::3010 3
+DEAL::3011 3
+DEAL::3012 3
+DEAL::3013 3
+DEAL::3014 3
+DEAL::3015 3
+DEAL::3016 3
+DEAL::3017 3
+DEAL::3018 3
+DEAL::3019 3
+DEAL::3020 3
+DEAL::3021 1
+DEAL::3022 1
+DEAL::3023 1
+DEAL::3024 1
+DEAL::3025 1
+DEAL::3026 1
+DEAL::3027 1
+DEAL::3028 1
+DEAL::3029 1
+DEAL::3030 1
+DEAL::3031 1
+DEAL::3032 1
+DEAL::3033 1
+DEAL::3034 1
+DEAL::3035 1
+DEAL::3036 1
+DEAL::3037 1
+DEAL::3038 1
+DEAL::3039 1
+DEAL::3040 1
+DEAL::3041 1
+DEAL::3042 1
+DEAL::3043 1
+DEAL::3044 1
+DEAL::3045 1
+DEAL::3046 0
+DEAL::3047 0
+DEAL::3048 0
+DEAL::3049 0
+DEAL::3050 0
+DEAL::3051 0
+DEAL::3052 0
+DEAL::3053 0
+DEAL::3054 0
+DEAL::3055 0
+DEAL::3056 0
+DEAL::3057 0
+DEAL::3058 0
+DEAL::3059 0
+DEAL::3060 0
+DEAL::3061 0
+DEAL::3062 0
+DEAL::3063 0
+DEAL::3064 0
+DEAL::3065 0
+DEAL::3066 0
+DEAL::3067 3
+DEAL::3068 3
+DEAL::3069 3
+DEAL::3070 3
+DEAL::3071 3
+DEAL::3072 3
+DEAL::3073 3
+DEAL::3074 3
+DEAL::3075 2
+DEAL::3076 2
+DEAL::3077 2
+DEAL::3078 2
+DEAL::3079 2
+DEAL::3080 2
+DEAL::3081 2
+DEAL::3082 2
+DEAL::3083 2
+DEAL::3084 2
+DEAL::3085 2
+DEAL::3086 2
+DEAL::3087 2
+DEAL::3088 2
+DEAL::3089 2
+DEAL::3090 2
+DEAL::3091 2
+DEAL::3092 2
+DEAL::3093 2
+DEAL::3094 1
+DEAL::3095 1
+DEAL::3096 1
+DEAL::3097 1
+DEAL::3098 1
+DEAL::3099 1
+DEAL::3100 1
+DEAL::3101 1
+DEAL::3102 1
+DEAL::3103 1
+DEAL::3104 1
+DEAL::3105 1
+DEAL::3106 1
+DEAL::3107 1
+DEAL::3108 1
+DEAL::3109 1
+DEAL::3110 1
+DEAL::3111 1
+DEAL::3112 1
+DEAL::3113 1
 DEAL::3114 4
 DEAL::3115 4
 DEAL::3116 4
@@ -4659,9 +4659,9 @@ DEAL::3118 4
 DEAL::3119 4
 DEAL::3120 4
 DEAL::3121 4
-DEAL::3122 1
+DEAL::3122 4
 DEAL::3123 4
-DEAL::3124 1
+DEAL::3124 4
 DEAL::3125 4
 DEAL::3126 4
 DEAL::3127 4
@@ -4669,232 +4669,232 @@ DEAL::3128 4
 DEAL::3129 4
 DEAL::3130 4
 DEAL::3131 4
-DEAL::3132 0
-DEAL::3133 0
-DEAL::3134 0
-DEAL::3135 0
-DEAL::3136 0
-DEAL::3137 0
-DEAL::3138 0
-DEAL::3139 0
-DEAL::3140 0
-DEAL::3141 0
-DEAL::3142 0
-DEAL::3143 0
-DEAL::3144 0
-DEAL::3145 0
-DEAL::3146 0
-DEAL::3147 0
-DEAL::3148 0
-DEAL::3149 3
-DEAL::3150 3
-DEAL::3151 3
-DEAL::3152 3
-DEAL::3153 3
-DEAL::3154 3
-DEAL::3155 3
-DEAL::3156 3
-DEAL::3157 3
-DEAL::3158 3
-DEAL::3159 3
-DEAL::3160 3
-DEAL::3161 3
-DEAL::3162 3
-DEAL::3163 3
-DEAL::3164 3
-DEAL::3165 3
-DEAL::3166 3
-DEAL::3167 3
-DEAL::3168 3
-DEAL::3169 3
-DEAL::3170 3
-DEAL::3171 3
-DEAL::3172 3
-DEAL::3173 3
-DEAL::3174 3
-DEAL::3175 3
-DEAL::3176 3
-DEAL::3177 3
-DEAL::3178 3
-DEAL::3179 3
-DEAL::3180 3
-DEAL::3181 3
-DEAL::3182 3
-DEAL::3183 3
-DEAL::3184 3
-DEAL::3185 3
-DEAL::3186 3
-DEAL::3187 3
-DEAL::3188 3
-DEAL::3189 0
-DEAL::3190 0
-DEAL::3191 0
-DEAL::3192 0
-DEAL::3193 0
-DEAL::3194 0
-DEAL::3195 0
-DEAL::3196 0
-DEAL::3197 0
-DEAL::3198 0
-DEAL::3199 0
-DEAL::3200 0
-DEAL::3201 0
-DEAL::3202 0
-DEAL::3203 0
-DEAL::3204 0
-DEAL::3205 0
-DEAL::3206 0
-DEAL::3207 0
-DEAL::3208 4
-DEAL::3209 4
-DEAL::3210 4
-DEAL::3211 4
-DEAL::3212 4
-DEAL::3213 4
-DEAL::3214 4
-DEAL::3215 4
-DEAL::3216 4
-DEAL::3217 4
-DEAL::3218 4
-DEAL::3219 4
-DEAL::3220 4
-DEAL::3221 4
-DEAL::3222 4
-DEAL::3223 4
-DEAL::3224 4
-DEAL::3225 4
-DEAL::3226 2
-DEAL::3227 2
-DEAL::3228 2
-DEAL::3229 2
-DEAL::3230 2
-DEAL::3231 2
-DEAL::3232 2
-DEAL::3233 2
-DEAL::3234 2
-DEAL::3235 2
-DEAL::3236 2
-DEAL::3237 2
-DEAL::3238 2
-DEAL::3239 2
-DEAL::3240 2
-DEAL::3241 2
-DEAL::3242 2
-DEAL::3243 2
-DEAL::3244 1
-DEAL::3245 1
-DEAL::3246 1
-DEAL::3247 1
-DEAL::3248 1
-DEAL::3249 1
-DEAL::3250 1
-DEAL::3251 1
-DEAL::3252 1
-DEAL::3253 1
-DEAL::3254 1
-DEAL::3255 1
-DEAL::3256 1
-DEAL::3257 1
+DEAL::3132 3
+DEAL::3133 3
+DEAL::3134 3
+DEAL::3135 3
+DEAL::3136 3
+DEAL::3137 3
+DEAL::3138 3
+DEAL::3139 3
+DEAL::3140 3
+DEAL::3141 3
+DEAL::3142 3
+DEAL::3143 3
+DEAL::3144 3
+DEAL::3145 3
+DEAL::3146 3
+DEAL::3147 3
+DEAL::3148 3
+DEAL::3149 1
+DEAL::3150 1
+DEAL::3151 1
+DEAL::3152 1
+DEAL::3153 1
+DEAL::3154 1
+DEAL::3155 1
+DEAL::3156 1
+DEAL::3157 1
+DEAL::3158 1
+DEAL::3159 1
+DEAL::3160 1
+DEAL::3161 1
+DEAL::3162 1
+DEAL::3163 1
+DEAL::3164 1
+DEAL::3165 1
+DEAL::3166 1
+DEAL::3167 1
+DEAL::3168 1
+DEAL::3169 1
+DEAL::3170 1
+DEAL::3171 1
+DEAL::3172 1
+DEAL::3173 1
+DEAL::3174 1
+DEAL::3175 1
+DEAL::3176 1
+DEAL::3177 1
+DEAL::3178 1
+DEAL::3179 0
+DEAL::3180 0
+DEAL::3181 0
+DEAL::3182 0
+DEAL::3183 0
+DEAL::3184 0
+DEAL::3185 0
+DEAL::3186 0
+DEAL::3187 0
+DEAL::3188 0
+DEAL::3189 3
+DEAL::3190 3
+DEAL::3191 3
+DEAL::3192 3
+DEAL::3193 3
+DEAL::3194 3
+DEAL::3195 3
+DEAL::3196 3
+DEAL::3197 3
+DEAL::3198 3
+DEAL::3199 3
+DEAL::3200 3
+DEAL::3201 3
+DEAL::3202 3
+DEAL::3203 3
+DEAL::3204 3
+DEAL::3205 3
+DEAL::3206 3
+DEAL::3207 3
+DEAL::3208 2
+DEAL::3209 2
+DEAL::3210 2
+DEAL::3211 2
+DEAL::3212 2
+DEAL::3213 2
+DEAL::3214 2
+DEAL::3215 2
+DEAL::3216 2
+DEAL::3217 2
+DEAL::3218 2
+DEAL::3219 2
+DEAL::3220 2
+DEAL::3221 2
+DEAL::3222 2
+DEAL::3223 2
+DEAL::3224 2
+DEAL::3225 2
+DEAL::3226 0
+DEAL::3227 0
+DEAL::3228 0
+DEAL::3229 0
+DEAL::3230 0
+DEAL::3231 0
+DEAL::3232 0
+DEAL::3233 0
+DEAL::3234 0
+DEAL::3235 0
+DEAL::3236 0
+DEAL::3237 0
+DEAL::3238 0
+DEAL::3239 0
+DEAL::3240 0
+DEAL::3241 0
+DEAL::3242 0
+DEAL::3243 0
+DEAL::3244 4
+DEAL::3245 4
+DEAL::3246 4
+DEAL::3247 4
+DEAL::3248 4
+DEAL::3249 4
+DEAL::3250 4
+DEAL::3251 4
+DEAL::3252 4
+DEAL::3253 4
+DEAL::3254 4
+DEAL::3255 4
+DEAL::3256 4
+DEAL::3257 4
 DEAL::3258 4
-DEAL::3259 1
-DEAL::3260 1
-DEAL::3261 1
-DEAL::3262 1
-DEAL::3263 3
-DEAL::3264 3
-DEAL::3265 4
-DEAL::3266 3
-DEAL::3267 3
-DEAL::3268 3
-DEAL::3269 3
-DEAL::3270 3
-DEAL::3271 3
-DEAL::3272 3
-DEAL::3273 3
-DEAL::3274 3
-DEAL::3275 3
-DEAL::3276 4
-DEAL::3277 3
-DEAL::3278 4
-DEAL::3279 3
-DEAL::3280 3
-DEAL::3281 4
-DEAL::3282 4
-DEAL::3283 4
-DEAL::3284 0
-DEAL::3285 0
-DEAL::3286 0
-DEAL::3287 0
-DEAL::3288 0
-DEAL::3289 0
-DEAL::3290 0
-DEAL::3291 0
-DEAL::3292 0
-DEAL::3293 0
-DEAL::3294 0
-DEAL::3295 0
-DEAL::3296 0
-DEAL::3297 0
-DEAL::3298 0
-DEAL::3299 0
-DEAL::3300 0
-DEAL::3301 0
-DEAL::3302 3
-DEAL::3303 3
-DEAL::3304 3
-DEAL::3305 3
-DEAL::3306 3
-DEAL::3307 3
-DEAL::3308 3
-DEAL::3309 3
-DEAL::3310 3
-DEAL::3311 3
-DEAL::3312 3
-DEAL::3313 3
-DEAL::3314 3
-DEAL::3315 3
-DEAL::3316 3
-DEAL::3317 3
-DEAL::3318 3
-DEAL::3319 3
-DEAL::3320 3
-DEAL::3321 3
-DEAL::3322 3
-DEAL::3323 3
-DEAL::3324 3
-DEAL::3325 3
-DEAL::3326 3
-DEAL::3327 3
-DEAL::3328 3
-DEAL::3329 3
-DEAL::3330 3
-DEAL::3331 3
-DEAL::3332 3
-DEAL::3333 3
-DEAL::3334 3
-DEAL::3335 3
-DEAL::3336 3
-DEAL::3337 3
-DEAL::3338 2
-DEAL::3339 2
-DEAL::3340 2
-DEAL::3341 2
-DEAL::3342 2
-DEAL::3343 2
-DEAL::3344 2
-DEAL::3345 2
-DEAL::3346 2
-DEAL::3347 2
-DEAL::3348 2
-DEAL::3349 2
-DEAL::3350 2
-DEAL::3351 2
-DEAL::3352 2
-DEAL::3353 2
-DEAL::3354 2
-DEAL::3355 2
+DEAL::3259 4
+DEAL::3260 4
+DEAL::3261 4
+DEAL::3262 4
+DEAL::3263 0
+DEAL::3264 0
+DEAL::3265 0
+DEAL::3266 0
+DEAL::3267 0
+DEAL::3268 0
+DEAL::3269 0
+DEAL::3270 0
+DEAL::3271 0
+DEAL::3272 0
+DEAL::3273 0
+DEAL::3274 0
+DEAL::3275 0
+DEAL::3276 0
+DEAL::3277 0
+DEAL::3278 0
+DEAL::3279 0
+DEAL::3280 0
+DEAL::3281 0
+DEAL::3282 0
+DEAL::3283 0
+DEAL::3284 3
+DEAL::3285 3
+DEAL::3286 3
+DEAL::3287 3
+DEAL::3288 3
+DEAL::3289 3
+DEAL::3290 3
+DEAL::3291 3
+DEAL::3292 3
+DEAL::3293 3
+DEAL::3294 3
+DEAL::3295 3
+DEAL::3296 3
+DEAL::3297 3
+DEAL::3298 3
+DEAL::3299 3
+DEAL::3300 3
+DEAL::3301 3
+DEAL::3302 1
+DEAL::3303 1
+DEAL::3304 1
+DEAL::3305 1
+DEAL::3306 1
+DEAL::3307 1
+DEAL::3308 1
+DEAL::3309 1
+DEAL::3310 1
+DEAL::3311 1
+DEAL::3312 1
+DEAL::3313 1
+DEAL::3314 1
+DEAL::3315 1
+DEAL::3316 1
+DEAL::3317 1
+DEAL::3318 1
+DEAL::3319 1
+DEAL::3320 1
+DEAL::3321 1
+DEAL::3322 1
+DEAL::3323 1
+DEAL::3324 1
+DEAL::3325 1
+DEAL::3326 1
+DEAL::3327 1
+DEAL::3328 1
+DEAL::3329 1
+DEAL::3330 1
+DEAL::3331 1
+DEAL::3332 1
+DEAL::3333 1
+DEAL::3334 1
+DEAL::3335 1
+DEAL::3336 1
+DEAL::3337 1
+DEAL::3338 0
+DEAL::3339 0
+DEAL::3340 0
+DEAL::3341 0
+DEAL::3342 0
+DEAL::3343 0
+DEAL::3344 0
+DEAL::3345 0
+DEAL::3346 0
+DEAL::3347 0
+DEAL::3348 0
+DEAL::3349 0
+DEAL::3350 0
+DEAL::3351 0
+DEAL::3352 0
+DEAL::3353 0
+DEAL::3354 0
+DEAL::3355 0
 DEAL::3356 4
-DEAL::3357 4
+DEAL::3357 1
 DEAL::3358 4
 DEAL::3359 4
 DEAL::3360 4
@@ -4906,157 +4906,157 @@ DEAL::3365 4
 DEAL::3366 4
 DEAL::3367 4
 DEAL::3368 4
-DEAL::3369 4
+DEAL::3369 1
 DEAL::3370 4
 DEAL::3371 4
 DEAL::3372 4
 DEAL::3373 4
-DEAL::3374 4
-DEAL::3375 4
-DEAL::3376 4
-DEAL::3377 4
-DEAL::3378 4
-DEAL::3379 4
-DEAL::3380 4
-DEAL::3381 4
-DEAL::3382 4
-DEAL::3383 4
-DEAL::3384 4
-DEAL::3385 4
-DEAL::3386 4
-DEAL::3387 4
-DEAL::3388 4
-DEAL::3389 4
-DEAL::3390 4
-DEAL::3391 4
-DEAL::3392 4
-DEAL::3393 4
-DEAL::3394 4
-DEAL::3395 0
-DEAL::3396 0
-DEAL::3397 0
-DEAL::3398 0
-DEAL::3399 0
-DEAL::3400 0
-DEAL::3401 0
-DEAL::3402 0
-DEAL::3403 0
-DEAL::3404 0
-DEAL::3405 0
-DEAL::3406 0
-DEAL::3407 0
-DEAL::3408 0
-DEAL::3409 0
-DEAL::3410 0
-DEAL::3411 0
-DEAL::3412 0
-DEAL::3413 0
-DEAL::3414 0
-DEAL::3415 0
-DEAL::3416 0
-DEAL::3417 0
-DEAL::3418 0
-DEAL::3419 0
-DEAL::3420 0
-DEAL::3421 0
-DEAL::3422 0
-DEAL::3423 0
-DEAL::3424 0
-DEAL::3425 0
-DEAL::3426 0
-DEAL::3427 0
-DEAL::3428 0
-DEAL::3429 0
-DEAL::3430 0
-DEAL::3431 0
-DEAL::3432 0
-DEAL::3433 0
-DEAL::3434 0
-DEAL::3435 0
-DEAL::3436 0
-DEAL::3437 0
-DEAL::3438 0
-DEAL::3439 0
-DEAL::3440 0
-DEAL::3441 0
-DEAL::3442 0
-DEAL::3443 0
-DEAL::3444 0
-DEAL::3445 0
-DEAL::3446 0
-DEAL::3447 0
-DEAL::3448 3
-DEAL::3449 3
-DEAL::3450 3
-DEAL::3451 3
-DEAL::3452 3
-DEAL::3453 3
-DEAL::3454 3
-DEAL::3455 3
-DEAL::3456 3
-DEAL::3457 3
-DEAL::3458 3
-DEAL::3459 3
-DEAL::3460 3
-DEAL::3461 3
-DEAL::3462 3
-DEAL::3463 3
-DEAL::3464 3
-DEAL::3465 3
-DEAL::3466 3
-DEAL::3467 3
-DEAL::3468 3
-DEAL::3469 3
-DEAL::3470 3
-DEAL::3471 3
-DEAL::3472 3
-DEAL::3473 3
-DEAL::3474 3
-DEAL::3475 3
-DEAL::3476 3
-DEAL::3477 3
-DEAL::3478 3
-DEAL::3479 3
-DEAL::3480 3
-DEAL::3481 0
-DEAL::3482 0
-DEAL::3483 0
-DEAL::3484 0
-DEAL::3485 0
-DEAL::3486 0
-DEAL::3487 0
-DEAL::3488 0
-DEAL::3489 0
-DEAL::3490 0
-DEAL::3491 0
-DEAL::3492 0
-DEAL::3493 0
-DEAL::3494 0
-DEAL::3495 0
-DEAL::3496 0
-DEAL::3497 0
-DEAL::3498 0
-DEAL::3499 0
-DEAL::3500 0
-DEAL::3501 0
-DEAL::3502 1
-DEAL::3503 1
-DEAL::3504 1
-DEAL::3505 1
-DEAL::3506 1
-DEAL::3507 1
-DEAL::3508 1
-DEAL::3509 1
-DEAL::3510 1
-DEAL::3511 1
-DEAL::3512 1
-DEAL::3513 1
-DEAL::3514 1
-DEAL::3515 1
-DEAL::3516 1
-DEAL::3517 1
-DEAL::3518 1
-DEAL::3519 1
+DEAL::3374 2
+DEAL::3375 2
+DEAL::3376 2
+DEAL::3377 2
+DEAL::3378 2
+DEAL::3379 2
+DEAL::3380 2
+DEAL::3381 2
+DEAL::3382 2
+DEAL::3383 2
+DEAL::3384 2
+DEAL::3385 2
+DEAL::3386 2
+DEAL::3387 2
+DEAL::3388 2
+DEAL::3389 2
+DEAL::3390 2
+DEAL::3391 2
+DEAL::3392 2
+DEAL::3393 2
+DEAL::3394 2
+DEAL::3395 3
+DEAL::3396 3
+DEAL::3397 3
+DEAL::3398 3
+DEAL::3399 3
+DEAL::3400 3
+DEAL::3401 3
+DEAL::3402 3
+DEAL::3403 3
+DEAL::3404 3
+DEAL::3405 3
+DEAL::3406 3
+DEAL::3407 3
+DEAL::3408 3
+DEAL::3409 3
+DEAL::3410 3
+DEAL::3411 3
+DEAL::3412 3
+DEAL::3413 3
+DEAL::3414 3
+DEAL::3415 3
+DEAL::3416 3
+DEAL::3417 3
+DEAL::3418 3
+DEAL::3419 3
+DEAL::3420 3
+DEAL::3421 3
+DEAL::3422 3
+DEAL::3423 3
+DEAL::3424 3
+DEAL::3425 3
+DEAL::3426 3
+DEAL::3427 3
+DEAL::3428 3
+DEAL::3429 3
+DEAL::3430 3
+DEAL::3431 3
+DEAL::3432 3
+DEAL::3433 3
+DEAL::3434 3
+DEAL::3435 3
+DEAL::3436 3
+DEAL::3437 3
+DEAL::3438 3
+DEAL::3439 3
+DEAL::3440 3
+DEAL::3441 3
+DEAL::3442 3
+DEAL::3443 3
+DEAL::3444 3
+DEAL::3445 3
+DEAL::3446 3
+DEAL::3447 3
+DEAL::3448 1
+DEAL::3449 1
+DEAL::3450 1
+DEAL::3451 1
+DEAL::3452 1
+DEAL::3453 1
+DEAL::3454 1
+DEAL::3455 1
+DEAL::3456 1
+DEAL::3457 1
+DEAL::3458 1
+DEAL::3459 1
+DEAL::3460 1
+DEAL::3461 1
+DEAL::3462 1
+DEAL::3463 1
+DEAL::3464 1
+DEAL::3465 1
+DEAL::3466 1
+DEAL::3467 1
+DEAL::3468 1
+DEAL::3469 1
+DEAL::3470 1
+DEAL::3471 1
+DEAL::3472 1
+DEAL::3473 1
+DEAL::3474 1
+DEAL::3475 1
+DEAL::3476 1
+DEAL::3477 1
+DEAL::3478 1
+DEAL::3479 1
+DEAL::3480 1
+DEAL::3481 3
+DEAL::3482 3
+DEAL::3483 3
+DEAL::3484 3
+DEAL::3485 3
+DEAL::3486 3
+DEAL::3487 3
+DEAL::3488 3
+DEAL::3489 3
+DEAL::3490 3
+DEAL::3491 3
+DEAL::3492 3
+DEAL::3493 3
+DEAL::3494 3
+DEAL::3495 3
+DEAL::3496 3
+DEAL::3497 3
+DEAL::3498 3
+DEAL::3499 3
+DEAL::3500 3
+DEAL::3501 3
+DEAL::3502 2
+DEAL::3503 2
+DEAL::3504 2
+DEAL::3505 2
+DEAL::3506 2
+DEAL::3507 2
+DEAL::3508 2
+DEAL::3509 2
+DEAL::3510 2
+DEAL::3511 2
+DEAL::3512 2
+DEAL::3513 2
+DEAL::3514 2
+DEAL::3515 2
+DEAL::3516 2
+DEAL::3517 2
+DEAL::3518 2
+DEAL::3519 2
 DEAL::3520 2
 DEAL::3521 2
 DEAL::3522 2
@@ -5075,105 +5075,105 @@ DEAL::3534 2
 DEAL::3535 2
 DEAL::3536 2
 DEAL::3537 2
-DEAL::3538 1
-DEAL::3539 1
-DEAL::3540 1
-DEAL::3541 1
-DEAL::3542 1
-DEAL::3543 1
-DEAL::3544 1
-DEAL::3545 1
-DEAL::3546 1
-DEAL::3547 1
-DEAL::3548 1
-DEAL::3549 1
-DEAL::3550 1
-DEAL::3551 1
-DEAL::3552 1
-DEAL::3553 1
-DEAL::3554 1
-DEAL::3555 1
-DEAL::3556 1
-DEAL::3557 1
-DEAL::3558 1
-DEAL::3559 3
-DEAL::3560 3
-DEAL::3561 3
-DEAL::3562 3
-DEAL::3563 3
-DEAL::3564 3
-DEAL::3565 3
-DEAL::3566 3
-DEAL::3567 3
-DEAL::3568 3
-DEAL::3569 3
-DEAL::3570 3
-DEAL::3571 3
-DEAL::3572 3
-DEAL::3573 3
-DEAL::3574 3
-DEAL::3575 3
-DEAL::3576 3
-DEAL::3577 2
-DEAL::3578 2
-DEAL::3579 2
-DEAL::3580 2
-DEAL::3581 2
-DEAL::3582 2
-DEAL::3583 2
-DEAL::3584 2
-DEAL::3585 2
-DEAL::3586 2
-DEAL::3587 2
-DEAL::3588 2
-DEAL::3589 2
-DEAL::3590 2
-DEAL::3591 2
-DEAL::3592 2
-DEAL::3593 2
-DEAL::3594 2
-DEAL::3595 2
-DEAL::3596 2
-DEAL::3597 2
-DEAL::3598 2
-DEAL::3599 2
-DEAL::3600 2
-DEAL::3601 2
-DEAL::3602 2
-DEAL::3603 2
-DEAL::3604 2
-DEAL::3605 2
-DEAL::3606 2
-DEAL::3607 2
-DEAL::3608 2
-DEAL::3609 2
-DEAL::3610 2
-DEAL::3611 2
-DEAL::3612 2
-DEAL::3613 2
-DEAL::3614 2
-DEAL::3615 2
-DEAL::3616 3
-DEAL::3617 3
-DEAL::3618 3
-DEAL::3619 3
-DEAL::3620 3
-DEAL::3621 3
-DEAL::3622 3
-DEAL::3623 3
-DEAL::3624 3
-DEAL::3625 3
-DEAL::3626 3
-DEAL::3627 3
-DEAL::3628 3
-DEAL::3629 3
-DEAL::3630 3
-DEAL::3631 3
-DEAL::3632 3
-DEAL::3633 3
-DEAL::3634 3
-DEAL::3635 3
-DEAL::3636 1
+DEAL::3538 3
+DEAL::3539 3
+DEAL::3540 3
+DEAL::3541 3
+DEAL::3542 3
+DEAL::3543 3
+DEAL::3544 3
+DEAL::3545 3
+DEAL::3546 3
+DEAL::3547 3
+DEAL::3548 3
+DEAL::3549 3
+DEAL::3550 3
+DEAL::3551 3
+DEAL::3552 3
+DEAL::3553 3
+DEAL::3554 3
+DEAL::3555 3
+DEAL::3556 3
+DEAL::3557 3
+DEAL::3558 3
+DEAL::3559 4
+DEAL::3560 4
+DEAL::3561 4
+DEAL::3562 4
+DEAL::3563 4
+DEAL::3564 4
+DEAL::3565 4
+DEAL::3566 4
+DEAL::3567 4
+DEAL::3568 4
+DEAL::3569 2
+DEAL::3570 4
+DEAL::3571 4
+DEAL::3572 4
+DEAL::3573 4
+DEAL::3574 4
+DEAL::3575 4
+DEAL::3576 4
+DEAL::3577 0
+DEAL::3578 0
+DEAL::3579 0
+DEAL::3580 0
+DEAL::3581 0
+DEAL::3582 0
+DEAL::3583 0
+DEAL::3584 0
+DEAL::3585 0
+DEAL::3586 0
+DEAL::3587 0
+DEAL::3588 0
+DEAL::3589 0
+DEAL::3590 0
+DEAL::3591 0
+DEAL::3592 0
+DEAL::3593 0
+DEAL::3594 0
+DEAL::3595 0
+DEAL::3596 0
+DEAL::3597 0
+DEAL::3598 0
+DEAL::3599 0
+DEAL::3600 0
+DEAL::3601 0
+DEAL::3602 0
+DEAL::3603 0
+DEAL::3604 0
+DEAL::3605 0
+DEAL::3606 0
+DEAL::3607 0
+DEAL::3608 0
+DEAL::3609 0
+DEAL::3610 0
+DEAL::3611 0
+DEAL::3612 0
+DEAL::3613 0
+DEAL::3614 0
+DEAL::3615 0
+DEAL::3616 1
+DEAL::3617 0
+DEAL::3618 0
+DEAL::3619 1
+DEAL::3620 1
+DEAL::3621 1
+DEAL::3622 1
+DEAL::3623 1
+DEAL::3624 1
+DEAL::3625 1
+DEAL::3626 1
+DEAL::3627 1
+DEAL::3628 0
+DEAL::3629 0
+DEAL::3630 0
+DEAL::3631 0
+DEAL::3632 0
+DEAL::3633 0
+DEAL::3634 0
+DEAL::3635 0
+DEAL::3636 4
 DEAL::3637 4
 DEAL::3638 4
 DEAL::3639 4
@@ -5181,7 +5181,7 @@ DEAL::3640 4
 DEAL::3641 4
 DEAL::3642 4
 DEAL::3643 4
-DEAL::3644 1
+DEAL::3644 4
 DEAL::3645 4
 DEAL::3646 4
 DEAL::3647 4
@@ -5192,649 +5192,649 @@ DEAL::3651 4
 DEAL::3652 4
 DEAL::3653 4
 DEAL::3654 4
-DEAL::3655 0
-DEAL::3656 0
-DEAL::3657 0
-DEAL::3658 0
-DEAL::3659 0
-DEAL::3660 0
-DEAL::3661 0
-DEAL::3662 0
-DEAL::3663 0
-DEAL::3664 0
-DEAL::3665 0
-DEAL::3666 0
-DEAL::3667 0
-DEAL::3668 0
-DEAL::3669 0
-DEAL::3670 0
-DEAL::3671 0
-DEAL::3672 0
-DEAL::3673 0
-DEAL::3674 0
-DEAL::3675 3
-DEAL::3676 3
-DEAL::3677 3
-DEAL::3678 3
-DEAL::3679 3
-DEAL::3680 3
-DEAL::3681 3
-DEAL::3682 3
-DEAL::3683 3
-DEAL::3684 3
-DEAL::3685 3
-DEAL::3686 3
-DEAL::3687 3
-DEAL::3688 3
-DEAL::3689 3
-DEAL::3690 3
-DEAL::3691 3
-DEAL::3692 3
-DEAL::3693 3
-DEAL::3694 3
-DEAL::3695 3
-DEAL::3696 3
-DEAL::3697 3
-DEAL::3698 3
-DEAL::3699 3
-DEAL::3700 3
-DEAL::3701 3
-DEAL::3702 3
-DEAL::3703 3
-DEAL::3704 3
-DEAL::3705 3
-DEAL::3706 3
-DEAL::3707 3
-DEAL::3708 3
-DEAL::3709 3
-DEAL::3710 3
-DEAL::3711 3
-DEAL::3712 2
-DEAL::3713 2
-DEAL::3714 2
-DEAL::3715 2
-DEAL::3716 2
-DEAL::3717 2
-DEAL::3718 2
-DEAL::3719 2
-DEAL::3720 3
-DEAL::3721 3
-DEAL::3722 2
-DEAL::3723 3
-DEAL::3724 2
-DEAL::3725 2
-DEAL::3726 2
-DEAL::3727 2
-DEAL::3728 2
-DEAL::3729 2
-DEAL::3730 2
-DEAL::3731 3
-DEAL::3732 3
-DEAL::3733 3
-DEAL::3734 3
-DEAL::3735 3
-DEAL::3736 3
-DEAL::3737 3
-DEAL::3738 3
-DEAL::3739 3
-DEAL::3740 3
-DEAL::3741 3
-DEAL::3742 3
-DEAL::3743 3
-DEAL::3744 3
-DEAL::3745 3
-DEAL::3746 3
-DEAL::3747 3
-DEAL::3748 3
-DEAL::3749 0
-DEAL::3750 0
-DEAL::3751 0
-DEAL::3752 0
-DEAL::3753 0
-DEAL::3754 0
-DEAL::3755 0
-DEAL::3756 0
-DEAL::3757 0
-DEAL::3758 0
-DEAL::3759 0
-DEAL::3760 0
-DEAL::3761 0
-DEAL::3762 0
-DEAL::3763 0
-DEAL::3764 0
-DEAL::3765 0
-DEAL::3766 0
-DEAL::3767 0
-DEAL::3768 4
-DEAL::3769 4
-DEAL::3770 4
-DEAL::3771 4
-DEAL::3772 4
-DEAL::3773 4
-DEAL::3774 4
-DEAL::3775 4
-DEAL::3776 4
-DEAL::3777 4
-DEAL::3778 4
-DEAL::3779 4
-DEAL::3780 4
-DEAL::3781 4
-DEAL::3782 4
-DEAL::3783 4
-DEAL::3784 4
-DEAL::3785 4
-DEAL::3786 2
-DEAL::3787 2
-DEAL::3788 2
-DEAL::3789 2
-DEAL::3790 2
-DEAL::3791 2
-DEAL::3792 2
-DEAL::3793 2
-DEAL::3794 2
-DEAL::3795 2
-DEAL::3796 2
-DEAL::3797 2
-DEAL::3798 2
-DEAL::3799 2
-DEAL::3800 2
-DEAL::3801 2
-DEAL::3802 2
-DEAL::3803 2
-DEAL::3804 2
-DEAL::3805 2
-DEAL::3806 2
-DEAL::3807 2
-DEAL::3808 2
-DEAL::3809 2
-DEAL::3810 2
-DEAL::3811 2
-DEAL::3812 2
-DEAL::3813 2
-DEAL::3814 2
-DEAL::3815 2
-DEAL::3816 2
-DEAL::3817 2
-DEAL::3818 2
-DEAL::3819 2
-DEAL::3820 2
-DEAL::3821 2
-DEAL::3822 2
-DEAL::3823 2
-DEAL::3824 1
-DEAL::3825 1
-DEAL::3826 1
-DEAL::3827 1
-DEAL::3828 1
-DEAL::3829 1
-DEAL::3830 1
-DEAL::3831 1
-DEAL::3832 1
-DEAL::3833 1
-DEAL::3834 1
-DEAL::3835 1
-DEAL::3836 1
-DEAL::3837 1
-DEAL::3838 1
-DEAL::3839 1
-DEAL::3840 1
-DEAL::3841 1
-DEAL::3842 1
-DEAL::3843 1
-DEAL::3844 1
-DEAL::3845 1
-DEAL::3846 1
-DEAL::3847 1
-DEAL::3848 1
-DEAL::3849 1
-DEAL::3850 1
-DEAL::3851 1
-DEAL::3852 1
-DEAL::3853 1
-DEAL::3854 1
-DEAL::3855 1
-DEAL::3856 1
-DEAL::3857 1
-DEAL::3858 1
-DEAL::3859 1
-DEAL::3860 1
-DEAL::3861 1
-DEAL::3862 1
-DEAL::3863 1
-DEAL::3864 1
-DEAL::3865 1
-DEAL::3866 1
-DEAL::3867 1
-DEAL::3868 1
-DEAL::3869 1
-DEAL::3870 1
-DEAL::3871 1
-DEAL::3872 1
-DEAL::3873 1
-DEAL::3874 1
-DEAL::3875 1
-DEAL::3876 0
-DEAL::3877 0
-DEAL::3878 0
-DEAL::3879 0
-DEAL::3880 0
-DEAL::3881 0
-DEAL::3882 0
-DEAL::3883 0
-DEAL::3884 0
-DEAL::3885 0
-DEAL::3886 0
-DEAL::3887 0
-DEAL::3888 0
-DEAL::3889 0
-DEAL::3890 0
-DEAL::3891 0
-DEAL::3892 0
-DEAL::3893 0
-DEAL::3894 0
-DEAL::3895 0
-DEAL::3896 0
-DEAL::3897 0
-DEAL::3898 0
-DEAL::3899 0
-DEAL::3900 0
-DEAL::3901 0
-DEAL::3902 0
-DEAL::3903 0
-DEAL::3904 0
-DEAL::3905 0
-DEAL::3906 0
-DEAL::3907 0
-DEAL::3908 0
-DEAL::3909 0
-DEAL::3910 0
-DEAL::3911 0
-DEAL::3912 0
-DEAL::3913 0
-DEAL::3914 0
-DEAL::3915 0
-DEAL::3916 0
-DEAL::3917 0
-DEAL::3918 0
-DEAL::3919 0
-DEAL::3920 0
-DEAL::3921 0
-DEAL::3922 0
-DEAL::3923 0
-DEAL::3924 0
-DEAL::3925 0
-DEAL::3926 3
-DEAL::3927 3
-DEAL::3928 3
-DEAL::3929 3
-DEAL::3930 3
-DEAL::3931 3
-DEAL::3932 3
-DEAL::3933 3
-DEAL::3934 3
-DEAL::3935 3
-DEAL::3936 3
-DEAL::3937 3
-DEAL::3938 3
-DEAL::3939 3
-DEAL::3940 3
-DEAL::3941 3
-DEAL::3942 3
-DEAL::3943 3
-DEAL::3944 3
-DEAL::3945 3
-DEAL::3946 3
-DEAL::3947 3
-DEAL::3948 3
-DEAL::3949 3
-DEAL::3950 3
-DEAL::3951 3
-DEAL::3952 3
-DEAL::3953 3
-DEAL::3954 3
-DEAL::3955 3
-DEAL::3956 3
-DEAL::3957 3
-DEAL::3958 2
-DEAL::3959 2
-DEAL::3960 2
-DEAL::3961 2
-DEAL::3962 2
-DEAL::3963 2
-DEAL::3964 2
-DEAL::3965 2
-DEAL::3966 2
-DEAL::3967 2
-DEAL::3968 2
-DEAL::3969 2
-DEAL::3970 2
-DEAL::3971 2
-DEAL::3972 2
-DEAL::3973 2
-DEAL::3974 2
-DEAL::3975 2
-DEAL::3976 2
-DEAL::3977 2
-DEAL::3978 2
-DEAL::3979 2
-DEAL::3980 2
-DEAL::3981 2
-DEAL::3982 2
-DEAL::3983 2
-DEAL::3984 2
-DEAL::3985 2
-DEAL::3986 2
-DEAL::3987 2
-DEAL::3988 2
-DEAL::3989 2
-DEAL::3990 2
-DEAL::3991 2
-DEAL::3992 2
-DEAL::3993 2
-DEAL::3994 2
-DEAL::3995 2
-DEAL::3996 0
-DEAL::3997 0
-DEAL::3998 0
-DEAL::3999 0
-DEAL::4000 0
-DEAL::4001 0
-DEAL::4002 0
-DEAL::4003 0
-DEAL::4004 0
-DEAL::4005 0
-DEAL::4006 0
-DEAL::4007 0
-DEAL::4008 0
-DEAL::4009 0
-DEAL::4010 0
-DEAL::4011 0
-DEAL::4012 0
-DEAL::4013 0
-DEAL::4014 0
-DEAL::4015 0
-DEAL::4016 0
-DEAL::4017 0
-DEAL::4018 0
-DEAL::4019 0
-DEAL::4020 0
-DEAL::4021 0
-DEAL::4022 0
-DEAL::4023 0
-DEAL::4024 0
-DEAL::4025 0
-DEAL::4026 0
-DEAL::4027 0
-DEAL::4028 0
-DEAL::4029 0
-DEAL::4030 0
-DEAL::4031 0
-DEAL::4032 0
-DEAL::4033 0
-DEAL::4034 0
-DEAL::4035 0
-DEAL::4036 4
-DEAL::4037 4
-DEAL::4038 4
-DEAL::4039 4
-DEAL::4040 4
-DEAL::4041 4
-DEAL::4042 4
-DEAL::4043 4
-DEAL::4044 4
-DEAL::4045 4
-DEAL::4046 4
-DEAL::4047 4
-DEAL::4048 4
-DEAL::4049 4
-DEAL::4050 4
-DEAL::4051 4
-DEAL::4052 4
-DEAL::4053 4
-DEAL::4054 4
-DEAL::4055 4
-DEAL::4056 4
-DEAL::4057 4
-DEAL::4058 4
-DEAL::4059 4
-DEAL::4060 4
-DEAL::4061 4
-DEAL::4062 4
-DEAL::4063 4
-DEAL::4064 4
-DEAL::4065 4
-DEAL::4066 4
-DEAL::4067 4
-DEAL::4068 4
-DEAL::4069 4
-DEAL::4070 4
-DEAL::4071 4
-DEAL::4072 4
-DEAL::4073 4
-DEAL::4074 4
-DEAL::4075 4
-DEAL::4076 4
-DEAL::4077 4
-DEAL::4078 4
-DEAL::4079 4
-DEAL::4080 4
-DEAL::4081 4
-DEAL::4082 4
-DEAL::4083 4
-DEAL::4084 4
-DEAL::4085 4
-DEAL::4086 4
-DEAL::4087 4
-DEAL::4088 4
-DEAL::4089 4
-DEAL::4090 4
-DEAL::4091 4
-DEAL::4092 4
-DEAL::4093 4
-DEAL::4094 2
-DEAL::4095 2
-DEAL::4096 2
-DEAL::4097 2
-DEAL::4098 2
-DEAL::4099 2
-DEAL::4100 2
-DEAL::4101 2
-DEAL::4102 2
-DEAL::4103 2
-DEAL::4104 2
-DEAL::4105 2
-DEAL::4106 2
-DEAL::4107 2
-DEAL::4108 2
-DEAL::4109 2
-DEAL::4110 2
-DEAL::4111 2
-DEAL::4112 2
-DEAL::4113 2
-DEAL::4114 2
-DEAL::4115 0
-DEAL::4116 0
-DEAL::4117 0
-DEAL::4118 0
-DEAL::4119 0
-DEAL::4120 0
-DEAL::4121 0
-DEAL::4122 0
-DEAL::4123 0
-DEAL::4124 0
-DEAL::4125 0
-DEAL::4126 0
-DEAL::4127 0
-DEAL::4128 0
-DEAL::4129 0
-DEAL::4130 0
-DEAL::4131 0
-DEAL::4132 0
-DEAL::4133 0
-DEAL::4134 0
-DEAL::4135 0
-DEAL::4136 0
-DEAL::4137 0
-DEAL::4138 0
-DEAL::4139 0
-DEAL::4140 0
-DEAL::4141 0
-DEAL::4142 0
-DEAL::4143 0
-DEAL::4144 0
-DEAL::4145 0
-DEAL::4146 0
-DEAL::4147 0
-DEAL::4148 0
-DEAL::4149 0
-DEAL::4150 0
-DEAL::4151 0
-DEAL::4152 0
-DEAL::4153 0
-DEAL::4154 3
-DEAL::4155 3
-DEAL::4156 3
-DEAL::4157 3
-DEAL::4158 3
-DEAL::4159 3
-DEAL::4160 3
-DEAL::4161 3
-DEAL::4162 3
-DEAL::4163 3
-DEAL::4164 3
-DEAL::4165 3
-DEAL::4166 3
-DEAL::4167 3
-DEAL::4168 3
-DEAL::4169 3
-DEAL::4170 3
-DEAL::4171 3
-DEAL::4172 3
-DEAL::4173 3
-DEAL::4174 3
-DEAL::4175 3
-DEAL::4176 3
-DEAL::4177 3
-DEAL::4178 3
-DEAL::4179 3
-DEAL::4180 3
-DEAL::4181 3
-DEAL::4182 3
-DEAL::4183 3
-DEAL::4184 3
-DEAL::4185 3
-DEAL::4186 3
-DEAL::4187 3
-DEAL::4188 3
-DEAL::4189 3
-DEAL::4190 3
-DEAL::4191 3
-DEAL::4192 3
-DEAL::4193 3
-DEAL::4194 3
-DEAL::4195 3
-DEAL::4196 3
-DEAL::4197 3
-DEAL::4198 3
-DEAL::4199 3
-DEAL::4200 3
-DEAL::4201 3
-DEAL::4202 3
-DEAL::4203 3
-DEAL::4204 3
-DEAL::4205 3
-DEAL::4206 3
-DEAL::4207 3
-DEAL::4208 3
-DEAL::4209 3
-DEAL::4210 3
-DEAL::4211 3
-DEAL::4212 3
-DEAL::4213 3
-DEAL::4214 3
-DEAL::4215 3
-DEAL::4216 3
-DEAL::4217 3
-DEAL::4218 3
-DEAL::4219 3
-DEAL::4220 3
-DEAL::4221 3
-DEAL::4222 3
-DEAL::4223 3
-DEAL::4224 0
-DEAL::4225 0
-DEAL::4226 0
-DEAL::4227 0
-DEAL::4228 0
-DEAL::4229 0
-DEAL::4230 0
-DEAL::4231 0
-DEAL::4232 0
-DEAL::4233 0
-DEAL::4234 0
-DEAL::4235 0
-DEAL::4236 0
-DEAL::4237 0
-DEAL::4238 0
-DEAL::4239 0
-DEAL::4240 0
-DEAL::4241 0
-DEAL::4242 0
-DEAL::4243 0
-DEAL::4244 0
-DEAL::4245 1
-DEAL::4246 1
-DEAL::4247 1
-DEAL::4248 1
-DEAL::4249 1
-DEAL::4250 1
-DEAL::4251 1
-DEAL::4252 1
-DEAL::4253 1
-DEAL::4254 1
-DEAL::4255 1
-DEAL::4256 1
-DEAL::4257 1
-DEAL::4258 1
-DEAL::4259 1
-DEAL::4260 1
-DEAL::4261 1
-DEAL::4262 1
-DEAL::4263 1
-DEAL::4264 1
-DEAL::4265 1
-DEAL::4266 1
-DEAL::4267 1
-DEAL::4268 1
-DEAL::4269 1
-DEAL::4270 1
-DEAL::4271 1
-DEAL::4272 1
-DEAL::4273 1
-DEAL::4274 1
-DEAL::4275 1
-DEAL::4276 1
-DEAL::4277 1
-DEAL::4278 1
-DEAL::4279 1
-DEAL::4280 1
-DEAL::4281 1
-DEAL::4282 1
-DEAL::4283 1
-DEAL::4284 1
-DEAL::4285 1
-DEAL::4286 1
-DEAL::4287 1
-DEAL::4288 1
-DEAL::4289 1
-DEAL::4290 1
-DEAL::4291 1
-DEAL::4292 1
-DEAL::4293 1
-DEAL::4294 1
-DEAL::4295 1
-DEAL::4296 1
-DEAL::4297 1
+DEAL::3655 3
+DEAL::3656 3
+DEAL::3657 3
+DEAL::3658 3
+DEAL::3659 3
+DEAL::3660 3
+DEAL::3661 3
+DEAL::3662 3
+DEAL::3663 3
+DEAL::3664 3
+DEAL::3665 3
+DEAL::3666 3
+DEAL::3667 3
+DEAL::3668 3
+DEAL::3669 3
+DEAL::3670 3
+DEAL::3671 3
+DEAL::3672 3
+DEAL::3673 3
+DEAL::3674 3
+DEAL::3675 1
+DEAL::3676 4
+DEAL::3677 1
+DEAL::3678 4
+DEAL::3679 4
+DEAL::3680 4
+DEAL::3681 4
+DEAL::3682 4
+DEAL::3683 1
+DEAL::3684 1
+DEAL::3685 1
+DEAL::3686 1
+DEAL::3687 1
+DEAL::3688 1
+DEAL::3689 4
+DEAL::3690 1
+DEAL::3691 4
+DEAL::3692 4
+DEAL::3693 1
+DEAL::3694 1
+DEAL::3695 1
+DEAL::3696 1
+DEAL::3697 1
+DEAL::3698 1
+DEAL::3699 1
+DEAL::3700 1
+DEAL::3701 1
+DEAL::3702 1
+DEAL::3703 1
+DEAL::3704 1
+DEAL::3705 1
+DEAL::3706 1
+DEAL::3707 1
+DEAL::3708 1
+DEAL::3709 1
+DEAL::3710 1
+DEAL::3711 1
+DEAL::3712 0
+DEAL::3713 0
+DEAL::3714 0
+DEAL::3715 0
+DEAL::3716 0
+DEAL::3717 0
+DEAL::3718 0
+DEAL::3719 0
+DEAL::3720 0
+DEAL::3721 0
+DEAL::3722 0
+DEAL::3723 0
+DEAL::3724 0
+DEAL::3725 0
+DEAL::3726 0
+DEAL::3727 0
+DEAL::3728 0
+DEAL::3729 0
+DEAL::3730 0
+DEAL::3731 1
+DEAL::3732 0
+DEAL::3733 0
+DEAL::3734 0
+DEAL::3735 1
+DEAL::3736 0
+DEAL::3737 0
+DEAL::3738 0
+DEAL::3739 1
+DEAL::3740 0
+DEAL::3741 1
+DEAL::3742 0
+DEAL::3743 0
+DEAL::3744 0
+DEAL::3745 0
+DEAL::3746 0
+DEAL::3747 0
+DEAL::3748 0
+DEAL::3749 3
+DEAL::3750 3
+DEAL::3751 3
+DEAL::3752 3
+DEAL::3753 3
+DEAL::3754 3
+DEAL::3755 3
+DEAL::3756 3
+DEAL::3757 3
+DEAL::3758 3
+DEAL::3759 3
+DEAL::3760 3
+DEAL::3761 3
+DEAL::3762 3
+DEAL::3763 3
+DEAL::3764 3
+DEAL::3765 3
+DEAL::3766 3
+DEAL::3767 3
+DEAL::3768 2
+DEAL::3769 2
+DEAL::3770 2
+DEAL::3771 2
+DEAL::3772 2
+DEAL::3773 2
+DEAL::3774 2
+DEAL::3775 2
+DEAL::3776 2
+DEAL::3777 2
+DEAL::3778 2
+DEAL::3779 2
+DEAL::3780 2
+DEAL::3781 2
+DEAL::3782 2
+DEAL::3783 2
+DEAL::3784 2
+DEAL::3785 2
+DEAL::3786 0
+DEAL::3787 0
+DEAL::3788 0
+DEAL::3789 0
+DEAL::3790 0
+DEAL::3791 0
+DEAL::3792 0
+DEAL::3793 0
+DEAL::3794 0
+DEAL::3795 0
+DEAL::3796 0
+DEAL::3797 0
+DEAL::3798 0
+DEAL::3799 0
+DEAL::3800 0
+DEAL::3801 0
+DEAL::3802 0
+DEAL::3803 0
+DEAL::3804 0
+DEAL::3805 0
+DEAL::3806 0
+DEAL::3807 0
+DEAL::3808 0
+DEAL::3809 0
+DEAL::3810 0
+DEAL::3811 0
+DEAL::3812 0
+DEAL::3813 0
+DEAL::3814 0
+DEAL::3815 0
+DEAL::3816 0
+DEAL::3817 0
+DEAL::3818 0
+DEAL::3819 0
+DEAL::3820 0
+DEAL::3821 0
+DEAL::3822 0
+DEAL::3823 0
+DEAL::3824 4
+DEAL::3825 4
+DEAL::3826 4
+DEAL::3827 4
+DEAL::3828 4
+DEAL::3829 4
+DEAL::3830 4
+DEAL::3831 4
+DEAL::3832 4
+DEAL::3833 4
+DEAL::3834 4
+DEAL::3835 4
+DEAL::3836 4
+DEAL::3837 4
+DEAL::3838 4
+DEAL::3839 4
+DEAL::3840 4
+DEAL::3841 4
+DEAL::3842 4
+DEAL::3843 4
+DEAL::3844 4
+DEAL::3845 4
+DEAL::3846 4
+DEAL::3847 4
+DEAL::3848 4
+DEAL::3849 4
+DEAL::3850 4
+DEAL::3851 4
+DEAL::3852 4
+DEAL::3853 4
+DEAL::3854 4
+DEAL::3855 4
+DEAL::3856 4
+DEAL::3857 4
+DEAL::3858 4
+DEAL::3859 4
+DEAL::3860 4
+DEAL::3861 4
+DEAL::3862 4
+DEAL::3863 4
+DEAL::3864 4
+DEAL::3865 4
+DEAL::3866 4
+DEAL::3867 4
+DEAL::3868 4
+DEAL::3869 4
+DEAL::3870 4
+DEAL::3871 4
+DEAL::3872 4
+DEAL::3873 4
+DEAL::3874 4
+DEAL::3875 4
+DEAL::3876 3
+DEAL::3877 3
+DEAL::3878 3
+DEAL::3879 3
+DEAL::3880 3
+DEAL::3881 3
+DEAL::3882 3
+DEAL::3883 3
+DEAL::3884 3
+DEAL::3885 3
+DEAL::3886 3
+DEAL::3887 3
+DEAL::3888 3
+DEAL::3889 3
+DEAL::3890 3
+DEAL::3891 3
+DEAL::3892 3
+DEAL::3893 3
+DEAL::3894 3
+DEAL::3895 3
+DEAL::3896 3
+DEAL::3897 3
+DEAL::3898 3
+DEAL::3899 3
+DEAL::3900 3
+DEAL::3901 3
+DEAL::3902 3
+DEAL::3903 3
+DEAL::3904 3
+DEAL::3905 3
+DEAL::3906 3
+DEAL::3907 3
+DEAL::3908 3
+DEAL::3909 3
+DEAL::3910 3
+DEAL::3911 3
+DEAL::3912 3
+DEAL::3913 3
+DEAL::3914 3
+DEAL::3915 3
+DEAL::3916 3
+DEAL::3917 3
+DEAL::3918 3
+DEAL::3919 3
+DEAL::3920 3
+DEAL::3921 3
+DEAL::3922 3
+DEAL::3923 3
+DEAL::3924 3
+DEAL::3925 3
+DEAL::3926 1
+DEAL::3927 1
+DEAL::3928 1
+DEAL::3929 1
+DEAL::3930 1
+DEAL::3931 1
+DEAL::3932 1
+DEAL::3933 1
+DEAL::3934 1
+DEAL::3935 1
+DEAL::3936 1
+DEAL::3937 1
+DEAL::3938 1
+DEAL::3939 1
+DEAL::3940 1
+DEAL::3941 1
+DEAL::3942 1
+DEAL::3943 1
+DEAL::3944 1
+DEAL::3945 1
+DEAL::3946 1
+DEAL::3947 1
+DEAL::3948 1
+DEAL::3949 1
+DEAL::3950 1
+DEAL::3951 1
+DEAL::3952 1
+DEAL::3953 1
+DEAL::3954 1
+DEAL::3955 1
+DEAL::3956 1
+DEAL::3957 1
+DEAL::3958 0
+DEAL::3959 0
+DEAL::3960 0
+DEAL::3961 0
+DEAL::3962 0
+DEAL::3963 0
+DEAL::3964 0
+DEAL::3965 0
+DEAL::3966 0
+DEAL::3967 0
+DEAL::3968 0
+DEAL::3969 0
+DEAL::3970 0
+DEAL::3971 0
+DEAL::3972 0
+DEAL::3973 0
+DEAL::3974 0
+DEAL::3975 0
+DEAL::3976 0
+DEAL::3977 0
+DEAL::3978 0
+DEAL::3979 0
+DEAL::3980 0
+DEAL::3981 0
+DEAL::3982 0
+DEAL::3983 0
+DEAL::3984 0
+DEAL::3985 0
+DEAL::3986 0
+DEAL::3987 0
+DEAL::3988 0
+DEAL::3989 0
+DEAL::3990 0
+DEAL::3991 0
+DEAL::3992 0
+DEAL::3993 0
+DEAL::3994 0
+DEAL::3995 0
+DEAL::3996 3
+DEAL::3997 3
+DEAL::3998 3
+DEAL::3999 3
+DEAL::4000 3
+DEAL::4001 3
+DEAL::4002 3
+DEAL::4003 3
+DEAL::4004 3
+DEAL::4005 3
+DEAL::4006 3
+DEAL::4007 3
+DEAL::4008 3
+DEAL::4009 3
+DEAL::4010 3
+DEAL::4011 3
+DEAL::4012 3
+DEAL::4013 3
+DEAL::4014 3
+DEAL::4015 3
+DEAL::4016 3
+DEAL::4017 3
+DEAL::4018 3
+DEAL::4019 3
+DEAL::4020 3
+DEAL::4021 3
+DEAL::4022 3
+DEAL::4023 3
+DEAL::4024 3
+DEAL::4025 3
+DEAL::4026 3
+DEAL::4027 3
+DEAL::4028 3
+DEAL::4029 3
+DEAL::4030 3
+DEAL::4031 3
+DEAL::4032 3
+DEAL::4033 3
+DEAL::4034 3
+DEAL::4035 3
+DEAL::4036 4
+DEAL::4037 4
+DEAL::4038 1
+DEAL::4039 4
+DEAL::4040 4
+DEAL::4041 4
+DEAL::4042 1
+DEAL::4043 4
+DEAL::4044 4
+DEAL::4045 1
+DEAL::4046 4
+DEAL::4047 1
+DEAL::4048 1
+DEAL::4049 1
+DEAL::4050 1
+DEAL::4051 1
+DEAL::4052 1
+DEAL::4053 1
+DEAL::4054 1
+DEAL::4055 1
+DEAL::4056 1
+DEAL::4057 1
+DEAL::4058 1
+DEAL::4059 1
+DEAL::4060 1
+DEAL::4061 1
+DEAL::4062 1
+DEAL::4063 1
+DEAL::4064 1
+DEAL::4065 1
+DEAL::4066 1
+DEAL::4067 1
+DEAL::4068 1
+DEAL::4069 1
+DEAL::4070 1
+DEAL::4071 1
+DEAL::4072 1
+DEAL::4073 1
+DEAL::4074 2
+DEAL::4075 2
+DEAL::4076 2
+DEAL::4077 2
+DEAL::4078 2
+DEAL::4079 2
+DEAL::4080 2
+DEAL::4081 2
+DEAL::4082 2
+DEAL::4083 2
+DEAL::4084 2
+DEAL::4085 2
+DEAL::4086 2
+DEAL::4087 2
+DEAL::4088 2
+DEAL::4089 2
+DEAL::4090 2
+DEAL::4091 2
+DEAL::4092 2
+DEAL::4093 2
+DEAL::4094 0
+DEAL::4095 0
+DEAL::4096 0
+DEAL::4097 0
+DEAL::4098 0
+DEAL::4099 0
+DEAL::4100 0
+DEAL::4101 0
+DEAL::4102 0
+DEAL::4103 0
+DEAL::4104 0
+DEAL::4105 0
+DEAL::4106 0
+DEAL::4107 0
+DEAL::4108 0
+DEAL::4109 0
+DEAL::4110 0
+DEAL::4111 0
+DEAL::4112 0
+DEAL::4113 0
+DEAL::4114 0
+DEAL::4115 3
+DEAL::4116 3
+DEAL::4117 3
+DEAL::4118 3
+DEAL::4119 3
+DEAL::4120 3
+DEAL::4121 3
+DEAL::4122 3
+DEAL::4123 3
+DEAL::4124 3
+DEAL::4125 3
+DEAL::4126 3
+DEAL::4127 3
+DEAL::4128 3
+DEAL::4129 3
+DEAL::4130 3
+DEAL::4131 3
+DEAL::4132 3
+DEAL::4133 3
+DEAL::4134 3
+DEAL::4135 3
+DEAL::4136 3
+DEAL::4137 3
+DEAL::4138 3
+DEAL::4139 3
+DEAL::4140 3
+DEAL::4141 3
+DEAL::4142 3
+DEAL::4143 3
+DEAL::4144 3
+DEAL::4145 3
+DEAL::4146 3
+DEAL::4147 3
+DEAL::4148 3
+DEAL::4149 3
+DEAL::4150 3
+DEAL::4151 3
+DEAL::4152 3
+DEAL::4153 3
+DEAL::4154 4
+DEAL::4155 4
+DEAL::4156 4
+DEAL::4157 4
+DEAL::4158 4
+DEAL::4159 4
+DEAL::4160 4
+DEAL::4161 4
+DEAL::4162 4
+DEAL::4163 4
+DEAL::4164 4
+DEAL::4165 4
+DEAL::4166 4
+DEAL::4167 4
+DEAL::4168 4
+DEAL::4169 4
+DEAL::4170 4
+DEAL::4171 4
+DEAL::4172 4
+DEAL::4173 4
+DEAL::4174 4
+DEAL::4175 1
+DEAL::4176 1
+DEAL::4177 1
+DEAL::4178 4
+DEAL::4179 1
+DEAL::4180 4
+DEAL::4181 1
+DEAL::4182 4
+DEAL::4183 1
+DEAL::4184 1
+DEAL::4185 1
+DEAL::4186 1
+DEAL::4187 1
+DEAL::4188 1
+DEAL::4189 1
+DEAL::4190 1
+DEAL::4191 1
+DEAL::4192 0
+DEAL::4193 0
+DEAL::4194 0
+DEAL::4195 1
+DEAL::4196 0
+DEAL::4197 0
+DEAL::4198 0
+DEAL::4199 1
+DEAL::4200 1
+DEAL::4201 1
+DEAL::4202 1
+DEAL::4203 0
+DEAL::4204 0
+DEAL::4205 0
+DEAL::4206 0
+DEAL::4207 0
+DEAL::4208 1
+DEAL::4209 1
+DEAL::4210 0
+DEAL::4211 0
+DEAL::4212 0
+DEAL::4213 0
+DEAL::4214 0
+DEAL::4215 0
+DEAL::4216 1
+DEAL::4217 1
+DEAL::4218 0
+DEAL::4219 0
+DEAL::4220 0
+DEAL::4221 0
+DEAL::4222 1
+DEAL::4223 1
+DEAL::4224 3
+DEAL::4225 3
+DEAL::4226 3
+DEAL::4227 3
+DEAL::4228 3
+DEAL::4229 3
+DEAL::4230 3
+DEAL::4231 3
+DEAL::4232 3
+DEAL::4233 3
+DEAL::4234 3
+DEAL::4235 3
+DEAL::4236 3
+DEAL::4237 3
+DEAL::4238 3
+DEAL::4239 3
+DEAL::4240 3
+DEAL::4241 3
+DEAL::4242 3
+DEAL::4243 3
+DEAL::4244 3
+DEAL::4245 4
+DEAL::4246 4
+DEAL::4247 4
+DEAL::4248 4
+DEAL::4249 4
+DEAL::4250 4
+DEAL::4251 4
+DEAL::4252 4
+DEAL::4253 4
+DEAL::4254 4
+DEAL::4255 4
+DEAL::4256 4
+DEAL::4257 4
+DEAL::4258 4
+DEAL::4259 4
+DEAL::4260 4
+DEAL::4261 4
+DEAL::4262 4
+DEAL::4263 4
+DEAL::4264 4
+DEAL::4265 4
+DEAL::4266 4
+DEAL::4267 4
+DEAL::4268 4
+DEAL::4269 4
+DEAL::4270 4
+DEAL::4271 4
+DEAL::4272 4
+DEAL::4273 4
+DEAL::4274 4
+DEAL::4275 4
+DEAL::4276 4
+DEAL::4277 4
+DEAL::4278 4
+DEAL::4279 2
+DEAL::4280 2
+DEAL::4281 2
+DEAL::4282 2
+DEAL::4283 2
+DEAL::4284 2
+DEAL::4285 2
+DEAL::4286 2
+DEAL::4287 2
+DEAL::4288 2
+DEAL::4289 2
+DEAL::4290 2
+DEAL::4291 2
+DEAL::4292 2
+DEAL::4293 2
+DEAL::4294 2
+DEAL::4295 2
+DEAL::4296 2
+DEAL::4297 2
 DEAL::4298 2
 DEAL::4299 2
 DEAL::4300 2
@@ -5854,268 +5854,268 @@ DEAL::4313 2
 DEAL::4314 2
 DEAL::4315 2
 DEAL::4316 2
-DEAL::4317 1
-DEAL::4318 1
-DEAL::4319 1
-DEAL::4320 1
-DEAL::4321 1
-DEAL::4322 1
-DEAL::4323 1
-DEAL::4324 1
-DEAL::4325 1
-DEAL::4326 1
-DEAL::4327 1
-DEAL::4328 1
-DEAL::4329 1
-DEAL::4330 1
-DEAL::4331 1
-DEAL::4332 1
-DEAL::4333 1
-DEAL::4334 1
-DEAL::4335 1
-DEAL::4336 1
-DEAL::4337 1
-DEAL::4338 3
-DEAL::4339 3
-DEAL::4340 3
-DEAL::4341 3
-DEAL::4342 3
-DEAL::4343 3
-DEAL::4344 3
-DEAL::4345 3
-DEAL::4346 3
-DEAL::4347 3
-DEAL::4348 3
-DEAL::4349 3
-DEAL::4350 3
-DEAL::4351 3
-DEAL::4352 3
-DEAL::4353 3
-DEAL::4354 3
-DEAL::4355 3
-DEAL::4356 3
-DEAL::4357 3
-DEAL::4358 3
-DEAL::4359 3
-DEAL::4360 3
-DEAL::4361 3
-DEAL::4362 3
-DEAL::4363 3
-DEAL::4364 3
-DEAL::4365 3
-DEAL::4366 3
-DEAL::4367 3
-DEAL::4368 3
-DEAL::4369 3
-DEAL::4370 3
-DEAL::4371 3
-DEAL::4372 3
-DEAL::4373 3
-DEAL::4374 3
-DEAL::4375 3
-DEAL::4376 2
-DEAL::4377 2
-DEAL::4378 2
-DEAL::4379 2
-DEAL::4380 2
-DEAL::4381 2
-DEAL::4382 2
-DEAL::4383 2
-DEAL::4384 2
-DEAL::4385 2
-DEAL::4386 2
-DEAL::4387 2
-DEAL::4388 2
-DEAL::4389 2
-DEAL::4390 2
-DEAL::4391 2
-DEAL::4392 2
-DEAL::4393 2
-DEAL::4394 2
-DEAL::4395 2
-DEAL::4396 2
-DEAL::4397 2
-DEAL::4398 2
-DEAL::4399 2
-DEAL::4400 2
-DEAL::4401 2
-DEAL::4402 2
-DEAL::4403 2
-DEAL::4404 2
-DEAL::4405 2
-DEAL::4406 2
-DEAL::4407 2
-DEAL::4408 2
-DEAL::4409 2
-DEAL::4410 2
-DEAL::4411 2
-DEAL::4412 2
-DEAL::4413 2
-DEAL::4414 2
-DEAL::4415 2
-DEAL::4416 2
-DEAL::4417 2
-DEAL::4418 2
-DEAL::4419 2
-DEAL::4420 2
-DEAL::4421 2
-DEAL::4422 2
-DEAL::4423 2
-DEAL::4424 2
-DEAL::4425 2
-DEAL::4426 2
-DEAL::4427 2
-DEAL::4428 2
-DEAL::4429 2
-DEAL::4430 2
-DEAL::4431 2
-DEAL::4432 2
-DEAL::4433 2
-DEAL::4434 2
-DEAL::4435 2
-DEAL::4436 2
-DEAL::4437 2
-DEAL::4438 2
-DEAL::4439 2
-DEAL::4440 2
-DEAL::4441 2
-DEAL::4442 2
-DEAL::4443 2
-DEAL::4444 2
-DEAL::4445 2
-DEAL::4446 2
-DEAL::4447 2
-DEAL::4448 2
-DEAL::4449 2
-DEAL::4450 2
-DEAL::4451 2
-DEAL::4452 2
+DEAL::4317 3
+DEAL::4318 2
+DEAL::4319 2
+DEAL::4320 3
+DEAL::4321 3
+DEAL::4322 3
+DEAL::4323 3
+DEAL::4324 3
+DEAL::4325 3
+DEAL::4326 3
+DEAL::4327 3
+DEAL::4328 3
+DEAL::4329 3
+DEAL::4330 2
+DEAL::4331 2
+DEAL::4332 2
+DEAL::4333 2
+DEAL::4334 2
+DEAL::4335 2
+DEAL::4336 2
+DEAL::4337 2
+DEAL::4338 2
+DEAL::4339 2
+DEAL::4340 4
+DEAL::4341 2
+DEAL::4342 4
+DEAL::4343 2
+DEAL::4344 2
+DEAL::4345 2
+DEAL::4346 4
+DEAL::4347 4
+DEAL::4348 4
+DEAL::4349 4
+DEAL::4350 4
+DEAL::4351 2
+DEAL::4352 4
+DEAL::4353 2
+DEAL::4354 2
+DEAL::4355 4
+DEAL::4356 4
+DEAL::4357 2
+DEAL::4358 2
+DEAL::4359 2
+DEAL::4360 2
+DEAL::4361 2
+DEAL::4362 2
+DEAL::4363 2
+DEAL::4364 2
+DEAL::4365 2
+DEAL::4366 2
+DEAL::4367 2
+DEAL::4368 2
+DEAL::4369 2
+DEAL::4370 2
+DEAL::4371 2
+DEAL::4372 2
+DEAL::4373 2
+DEAL::4374 2
+DEAL::4375 2
+DEAL::4376 0
+DEAL::4377 0
+DEAL::4378 0
+DEAL::4379 0
+DEAL::4380 0
+DEAL::4381 0
+DEAL::4382 0
+DEAL::4383 0
+DEAL::4384 0
+DEAL::4385 0
+DEAL::4386 0
+DEAL::4387 0
+DEAL::4388 0
+DEAL::4389 0
+DEAL::4390 0
+DEAL::4391 0
+DEAL::4392 0
+DEAL::4393 0
+DEAL::4394 0
+DEAL::4395 0
+DEAL::4396 0
+DEAL::4397 0
+DEAL::4398 0
+DEAL::4399 0
+DEAL::4400 0
+DEAL::4401 0
+DEAL::4402 0
+DEAL::4403 0
+DEAL::4404 0
+DEAL::4405 0
+DEAL::4406 0
+DEAL::4407 0
+DEAL::4408 0
+DEAL::4409 0
+DEAL::4410 0
+DEAL::4411 0
+DEAL::4412 0
+DEAL::4413 0
+DEAL::4414 0
+DEAL::4415 0
+DEAL::4416 0
+DEAL::4417 0
+DEAL::4418 0
+DEAL::4419 0
+DEAL::4420 0
+DEAL::4421 0
+DEAL::4422 0
+DEAL::4423 0
+DEAL::4424 0
+DEAL::4425 0
+DEAL::4426 0
+DEAL::4427 0
+DEAL::4428 0
+DEAL::4429 0
+DEAL::4430 0
+DEAL::4431 0
+DEAL::4432 0
+DEAL::4433 0
+DEAL::4434 0
+DEAL::4435 0
+DEAL::4436 0
+DEAL::4437 0
+DEAL::4438 0
+DEAL::4439 0
+DEAL::4440 0
+DEAL::4441 0
+DEAL::4442 0
+DEAL::4443 0
+DEAL::4444 0
+DEAL::4445 0
+DEAL::4446 0
+DEAL::4447 0
+DEAL::4448 0
+DEAL::4449 0
+DEAL::4450 0
+DEAL::4451 0
+DEAL::4452 0
 DEAL::4453 4
-DEAL::4454 1
+DEAL::4454 4
 DEAL::4455 4
-DEAL::4456 1
-DEAL::4457 1
-DEAL::4458 1
-DEAL::4459 1
-DEAL::4460 1
+DEAL::4456 4
+DEAL::4457 4
+DEAL::4458 4
+DEAL::4459 4
+DEAL::4460 4
 DEAL::4461 4
 DEAL::4462 4
 DEAL::4463 4
 DEAL::4464 4
 DEAL::4465 4
 DEAL::4466 4
-DEAL::4467 1
+DEAL::4467 4
 DEAL::4468 4
-DEAL::4469 1
-DEAL::4470 1
+DEAL::4469 4
+DEAL::4470 4
 DEAL::4471 4
 DEAL::4472 4
 DEAL::4473 4
-DEAL::4474 3
-DEAL::4475 3
-DEAL::4476 3
-DEAL::4477 3
-DEAL::4478 3
-DEAL::4479 3
-DEAL::4480 3
-DEAL::4481 3
-DEAL::4482 3
-DEAL::4483 3
-DEAL::4484 3
-DEAL::4485 3
-DEAL::4486 3
-DEAL::4487 3
-DEAL::4488 3
-DEAL::4489 3
-DEAL::4490 3
-DEAL::4491 3
-DEAL::4492 3
-DEAL::4493 3
-DEAL::4494 3
-DEAL::4495 0
-DEAL::4496 0
-DEAL::4497 0
-DEAL::4498 0
-DEAL::4499 0
-DEAL::4500 0
-DEAL::4501 0
-DEAL::4502 0
-DEAL::4503 0
-DEAL::4504 0
-DEAL::4505 0
-DEAL::4506 0
-DEAL::4507 0
-DEAL::4508 0
-DEAL::4509 0
-DEAL::4510 0
-DEAL::4511 0
-DEAL::4512 0
-DEAL::4513 0
-DEAL::4514 0
-DEAL::4515 0
-DEAL::4516 3
-DEAL::4517 3
-DEAL::4518 3
-DEAL::4519 3
-DEAL::4520 3
-DEAL::4521 3
-DEAL::4522 3
-DEAL::4523 3
-DEAL::4524 3
-DEAL::4525 3
-DEAL::4526 3
-DEAL::4527 3
-DEAL::4528 3
-DEAL::4529 3
-DEAL::4530 3
-DEAL::4531 3
-DEAL::4532 3
-DEAL::4533 3
-DEAL::4534 3
-DEAL::4535 3
-DEAL::4536 3
-DEAL::4537 2
-DEAL::4538 2
-DEAL::4539 2
-DEAL::4540 2
-DEAL::4541 2
-DEAL::4542 2
-DEAL::4543 2
-DEAL::4544 2
-DEAL::4545 2
-DEAL::4546 2
-DEAL::4547 2
-DEAL::4548 2
-DEAL::4549 2
-DEAL::4550 2
-DEAL::4551 2
-DEAL::4552 2
-DEAL::4553 2
-DEAL::4554 2
-DEAL::4555 2
-DEAL::4556 2
-DEAL::4557 2
-DEAL::4558 0
-DEAL::4559 0
-DEAL::4560 0
-DEAL::4561 0
-DEAL::4562 0
-DEAL::4563 0
-DEAL::4564 0
-DEAL::4565 0
-DEAL::4566 0
-DEAL::4567 0
-DEAL::4568 0
-DEAL::4569 0
-DEAL::4570 0
-DEAL::4571 0
-DEAL::4572 0
-DEAL::4573 0
-DEAL::4574 0
-DEAL::4575 0
-DEAL::4576 0
-DEAL::4577 0
-DEAL::4578 0
+DEAL::4474 1
+DEAL::4475 1
+DEAL::4476 1
+DEAL::4477 1
+DEAL::4478 1
+DEAL::4479 1
+DEAL::4480 1
+DEAL::4481 1
+DEAL::4482 1
+DEAL::4483 1
+DEAL::4484 1
+DEAL::4485 1
+DEAL::4486 1
+DEAL::4487 1
+DEAL::4488 1
+DEAL::4489 1
+DEAL::4490 1
+DEAL::4491 1
+DEAL::4492 1
+DEAL::4493 1
+DEAL::4494 1
+DEAL::4495 3
+DEAL::4496 3
+DEAL::4497 3
+DEAL::4498 3
+DEAL::4499 3
+DEAL::4500 3
+DEAL::4501 3
+DEAL::4502 3
+DEAL::4503 3
+DEAL::4504 3
+DEAL::4505 3
+DEAL::4506 3
+DEAL::4507 3
+DEAL::4508 3
+DEAL::4509 3
+DEAL::4510 3
+DEAL::4511 3
+DEAL::4512 3
+DEAL::4513 3
+DEAL::4514 3
+DEAL::4515 3
+DEAL::4516 1
+DEAL::4517 1
+DEAL::4518 1
+DEAL::4519 1
+DEAL::4520 1
+DEAL::4521 1
+DEAL::4522 1
+DEAL::4523 1
+DEAL::4524 1
+DEAL::4525 1
+DEAL::4526 1
+DEAL::4527 1
+DEAL::4528 1
+DEAL::4529 1
+DEAL::4530 1
+DEAL::4531 1
+DEAL::4532 1
+DEAL::4533 1
+DEAL::4534 1
+DEAL::4535 1
+DEAL::4536 1
+DEAL::4537 0
+DEAL::4538 0
+DEAL::4539 0
+DEAL::4540 0
+DEAL::4541 0
+DEAL::4542 0
+DEAL::4543 0
+DEAL::4544 0
+DEAL::4545 0
+DEAL::4546 0
+DEAL::4547 0
+DEAL::4548 0
+DEAL::4549 0
+DEAL::4550 0
+DEAL::4551 0
+DEAL::4552 0
+DEAL::4553 0
+DEAL::4554 0
+DEAL::4555 0
+DEAL::4556 0
+DEAL::4557 0
+DEAL::4558 3
+DEAL::4559 3
+DEAL::4560 3
+DEAL::4561 3
+DEAL::4562 3
+DEAL::4563 3
+DEAL::4564 3
+DEAL::4565 3
+DEAL::4566 3
+DEAL::4567 3
+DEAL::4568 3
+DEAL::4569 3
+DEAL::4570 3
+DEAL::4571 3
+DEAL::4572 3
+DEAL::4573 3
+DEAL::4574 3
+DEAL::4575 3
+DEAL::4576 3
+DEAL::4577 3
+DEAL::4578 3
 DEAL::4579 4
 DEAL::4580 4
 DEAL::4581 4
@@ -6134,307 +6134,307 @@ DEAL::4593 4
 DEAL::4594 4
 DEAL::4595 4
 DEAL::4596 4
-DEAL::4597 2
-DEAL::4598 2
-DEAL::4599 2
-DEAL::4600 2
-DEAL::4601 2
-DEAL::4602 2
-DEAL::4603 2
-DEAL::4604 2
-DEAL::4605 2
-DEAL::4606 2
-DEAL::4607 2
-DEAL::4608 2
-DEAL::4609 2
-DEAL::4610 2
-DEAL::4611 2
-DEAL::4612 2
-DEAL::4613 2
-DEAL::4614 2
-DEAL::4615 0
-DEAL::4616 0
-DEAL::4617 0
-DEAL::4618 0
-DEAL::4619 0
-DEAL::4620 0
-DEAL::4621 0
-DEAL::4622 0
-DEAL::4623 0
-DEAL::4624 0
-DEAL::4625 0
-DEAL::4626 0
-DEAL::4627 0
-DEAL::4628 0
-DEAL::4629 0
-DEAL::4630 0
-DEAL::4631 0
-DEAL::4632 0
-DEAL::4633 0
-DEAL::4634 0
-DEAL::4635 0
-DEAL::4636 1
-DEAL::4637 1
-DEAL::4638 1
-DEAL::4639 1
-DEAL::4640 1
-DEAL::4641 1
-DEAL::4642 1
-DEAL::4643 1
-DEAL::4644 1
-DEAL::4645 1
-DEAL::4646 1
-DEAL::4647 1
-DEAL::4648 1
-DEAL::4649 1
-DEAL::4650 1
-DEAL::4651 1
-DEAL::4652 1
-DEAL::4653 1
-DEAL::4654 1
-DEAL::4655 1
-DEAL::4656 1
-DEAL::4657 3
-DEAL::4658 3
-DEAL::4659 3
-DEAL::4660 3
-DEAL::4661 3
-DEAL::4662 3
-DEAL::4663 3
-DEAL::4664 3
-DEAL::4665 3
-DEAL::4666 3
-DEAL::4667 3
-DEAL::4668 3
-DEAL::4669 3
-DEAL::4670 3
-DEAL::4671 3
-DEAL::4672 3
-DEAL::4673 3
-DEAL::4674 3
-DEAL::4675 3
-DEAL::4676 3
-DEAL::4677 3
-DEAL::4678 1
-DEAL::4679 1
-DEAL::4680 1
-DEAL::4681 1
-DEAL::4682 1
-DEAL::4683 1
-DEAL::4684 1
-DEAL::4685 1
-DEAL::4686 1
-DEAL::4687 1
-DEAL::4688 1
-DEAL::4689 1
-DEAL::4690 1
-DEAL::4691 1
-DEAL::4692 1
-DEAL::4693 1
-DEAL::4694 1
-DEAL::4695 1
-DEAL::4696 1
-DEAL::4697 1
-DEAL::4698 1
-DEAL::4699 1
-DEAL::4700 4
-DEAL::4701 4
-DEAL::4702 1
-DEAL::4703 1
-DEAL::4704 1
-DEAL::4705 1
-DEAL::4706 1
-DEAL::4707 1
-DEAL::4708 1
-DEAL::4709 1
-DEAL::4710 1
-DEAL::4711 1
-DEAL::4712 4
-DEAL::4713 4
-DEAL::4714 4
-DEAL::4715 4
-DEAL::4716 4
-DEAL::4717 4
-DEAL::4718 4
-DEAL::4719 4
-DEAL::4720 2
-DEAL::4721 2
-DEAL::4722 2
-DEAL::4723 2
-DEAL::4724 2
-DEAL::4725 2
-DEAL::4726 2
-DEAL::4727 2
-DEAL::4728 2
-DEAL::4729 2
-DEAL::4730 2
-DEAL::4731 2
-DEAL::4732 2
-DEAL::4733 2
-DEAL::4734 2
-DEAL::4735 2
-DEAL::4736 2
-DEAL::4737 2
-DEAL::4738 0
-DEAL::4739 0
-DEAL::4740 0
-DEAL::4741 0
-DEAL::4742 1
-DEAL::4743 0
-DEAL::4744 0
-DEAL::4745 0
-DEAL::4746 1
-DEAL::4747 1
-DEAL::4748 1
-DEAL::4749 1
-DEAL::4750 1
-DEAL::4751 0
-DEAL::4752 0
-DEAL::4753 0
-DEAL::4754 0
-DEAL::4755 0
-DEAL::4756 1
-DEAL::4757 1
-DEAL::4758 1
-DEAL::4759 0
-DEAL::4760 0
-DEAL::4761 0
-DEAL::4762 0
-DEAL::4763 0
-DEAL::4764 0
-DEAL::4765 0
-DEAL::4766 0
-DEAL::4767 0
-DEAL::4768 0
-DEAL::4769 0
-DEAL::4770 0
-DEAL::4771 0
-DEAL::4772 0
-DEAL::4773 0
-DEAL::4774 0
-DEAL::4775 0
-DEAL::4776 0
-DEAL::4777 0
-DEAL::4778 1
-DEAL::4779 1
-DEAL::4780 1
-DEAL::4781 1
-DEAL::4782 1
-DEAL::4783 1
-DEAL::4784 1
-DEAL::4785 1
-DEAL::4786 1
-DEAL::4787 1
-DEAL::4788 1
-DEAL::4789 1
-DEAL::4790 1
-DEAL::4791 1
-DEAL::4792 1
-DEAL::4793 1
-DEAL::4794 1
-DEAL::4795 1
-DEAL::4796 1
-DEAL::4797 1
-DEAL::4798 1
-DEAL::4799 1
-DEAL::4800 1
-DEAL::4801 1
-DEAL::4802 1
-DEAL::4803 1
-DEAL::4804 1
-DEAL::4805 1
-DEAL::4806 1
-DEAL::4807 1
-DEAL::4808 1
-DEAL::4809 1
-DEAL::4810 1
-DEAL::4811 1
-DEAL::4812 1
-DEAL::4813 1
-DEAL::4814 1
-DEAL::4815 1
-DEAL::4816 1
-DEAL::4817 1
-DEAL::4818 1
-DEAL::4819 1
-DEAL::4820 2
-DEAL::4821 2
-DEAL::4822 2
-DEAL::4823 2
-DEAL::4824 2
-DEAL::4825 2
-DEAL::4826 2
-DEAL::4827 2
-DEAL::4828 2
-DEAL::4829 2
-DEAL::4830 2
-DEAL::4831 2
-DEAL::4832 2
-DEAL::4833 2
-DEAL::4834 2
-DEAL::4835 2
-DEAL::4836 2
-DEAL::4837 2
-DEAL::4838 2
-DEAL::4839 2
-DEAL::4840 2
-DEAL::4841 2
-DEAL::4842 2
-DEAL::4843 2
-DEAL::4844 2
-DEAL::4845 2
-DEAL::4846 2
-DEAL::4847 2
-DEAL::4848 2
-DEAL::4849 2
-DEAL::4850 2
-DEAL::4851 2
-DEAL::4852 2
-DEAL::4853 2
-DEAL::4854 2
-DEAL::4855 2
-DEAL::4856 2
-DEAL::4857 2
-DEAL::4858 2
-DEAL::4859 0
-DEAL::4860 0
-DEAL::4861 0
-DEAL::4862 0
-DEAL::4863 0
-DEAL::4864 0
-DEAL::4865 0
-DEAL::4866 0
-DEAL::4867 0
-DEAL::4868 0
-DEAL::4869 0
-DEAL::4870 0
-DEAL::4871 0
-DEAL::4872 0
-DEAL::4873 0
-DEAL::4874 0
-DEAL::4875 0
-DEAL::4876 0
-DEAL::4877 1
-DEAL::4878 1
-DEAL::4879 1
-DEAL::4880 1
-DEAL::4881 1
-DEAL::4882 1
-DEAL::4883 1
-DEAL::4884 1
-DEAL::4885 1
-DEAL::4886 1
-DEAL::4887 1
-DEAL::4888 1
-DEAL::4889 1
-DEAL::4890 1
-DEAL::4891 1
-DEAL::4892 1
-DEAL::4893 1
-DEAL::4894 1
-DEAL::4895 1
-DEAL::4896 1
-DEAL::4897 1
+DEAL::4597 0
+DEAL::4598 0
+DEAL::4599 0
+DEAL::4600 0
+DEAL::4601 0
+DEAL::4602 0
+DEAL::4603 0
+DEAL::4604 0
+DEAL::4605 0
+DEAL::4606 0
+DEAL::4607 0
+DEAL::4608 0
+DEAL::4609 0
+DEAL::4610 0
+DEAL::4611 0
+DEAL::4612 0
+DEAL::4613 0
+DEAL::4614 0
+DEAL::4615 3
+DEAL::4616 3
+DEAL::4617 3
+DEAL::4618 3
+DEAL::4619 3
+DEAL::4620 3
+DEAL::4621 3
+DEAL::4622 3
+DEAL::4623 3
+DEAL::4624 3
+DEAL::4625 3
+DEAL::4626 3
+DEAL::4627 3
+DEAL::4628 3
+DEAL::4629 3
+DEAL::4630 3
+DEAL::4631 3
+DEAL::4632 3
+DEAL::4633 3
+DEAL::4634 3
+DEAL::4635 3
+DEAL::4636 4
+DEAL::4637 4
+DEAL::4638 4
+DEAL::4639 4
+DEAL::4640 4
+DEAL::4641 4
+DEAL::4642 4
+DEAL::4643 4
+DEAL::4644 4
+DEAL::4645 4
+DEAL::4646 4
+DEAL::4647 4
+DEAL::4648 4
+DEAL::4649 4
+DEAL::4650 4
+DEAL::4651 4
+DEAL::4652 4
+DEAL::4653 4
+DEAL::4654 4
+DEAL::4655 4
+DEAL::4656 4
+DEAL::4657 4
+DEAL::4658 0
+DEAL::4659 0
+DEAL::4660 4
+DEAL::4661 4
+DEAL::4662 4
+DEAL::4663 4
+DEAL::4664 4
+DEAL::4665 4
+DEAL::4666 4
+DEAL::4667 4
+DEAL::4668 4
+DEAL::4669 4
+DEAL::4670 0
+DEAL::4671 0
+DEAL::4672 0
+DEAL::4673 0
+DEAL::4674 0
+DEAL::4675 0
+DEAL::4676 0
+DEAL::4677 0
+DEAL::4678 4
+DEAL::4679 4
+DEAL::4680 4
+DEAL::4681 4
+DEAL::4682 4
+DEAL::4683 4
+DEAL::4684 4
+DEAL::4685 4
+DEAL::4686 4
+DEAL::4687 4
+DEAL::4688 4
+DEAL::4689 4
+DEAL::4690 4
+DEAL::4691 4
+DEAL::4692 4
+DEAL::4693 4
+DEAL::4694 4
+DEAL::4695 4
+DEAL::4696 4
+DEAL::4697 4
+DEAL::4698 4
+DEAL::4699 2
+DEAL::4700 2
+DEAL::4701 2
+DEAL::4702 2
+DEAL::4703 2
+DEAL::4704 2
+DEAL::4705 2
+DEAL::4706 2
+DEAL::4707 2
+DEAL::4708 2
+DEAL::4709 2
+DEAL::4710 2
+DEAL::4711 2
+DEAL::4712 2
+DEAL::4713 2
+DEAL::4714 2
+DEAL::4715 2
+DEAL::4716 2
+DEAL::4717 2
+DEAL::4718 2
+DEAL::4719 2
+DEAL::4720 0
+DEAL::4721 0
+DEAL::4722 0
+DEAL::4723 0
+DEAL::4724 0
+DEAL::4725 0
+DEAL::4726 0
+DEAL::4727 0
+DEAL::4728 0
+DEAL::4729 0
+DEAL::4730 0
+DEAL::4731 0
+DEAL::4732 0
+DEAL::4733 0
+DEAL::4734 0
+DEAL::4735 0
+DEAL::4736 0
+DEAL::4737 0
+DEAL::4738 3
+DEAL::4739 3
+DEAL::4740 2
+DEAL::4741 3
+DEAL::4742 3
+DEAL::4743 3
+DEAL::4744 2
+DEAL::4745 3
+DEAL::4746 2
+DEAL::4747 3
+DEAL::4748 3
+DEAL::4749 2
+DEAL::4750 3
+DEAL::4751 2
+DEAL::4752 2
+DEAL::4753 2
+DEAL::4754 2
+DEAL::4755 2
+DEAL::4756 2
+DEAL::4757 2
+DEAL::4758 2
+DEAL::4759 3
+DEAL::4760 3
+DEAL::4761 3
+DEAL::4762 3
+DEAL::4763 3
+DEAL::4764 3
+DEAL::4765 3
+DEAL::4766 3
+DEAL::4767 3
+DEAL::4768 3
+DEAL::4769 3
+DEAL::4770 3
+DEAL::4771 3
+DEAL::4772 3
+DEAL::4773 3
+DEAL::4774 3
+DEAL::4775 3
+DEAL::4776 3
+DEAL::4777 3
+DEAL::4778 3
+DEAL::4779 3
+DEAL::4780 3
+DEAL::4781 3
+DEAL::4782 3
+DEAL::4783 3
+DEAL::4784 3
+DEAL::4785 3
+DEAL::4786 3
+DEAL::4787 3
+DEAL::4788 3
+DEAL::4789 3
+DEAL::4790 3
+DEAL::4791 3
+DEAL::4792 3
+DEAL::4793 3
+DEAL::4794 3
+DEAL::4795 3
+DEAL::4796 3
+DEAL::4797 3
+DEAL::4798 3
+DEAL::4799 2
+DEAL::4800 2
+DEAL::4801 2
+DEAL::4802 2
+DEAL::4803 2
+DEAL::4804 2
+DEAL::4805 2
+DEAL::4806 2
+DEAL::4807 2
+DEAL::4808 2
+DEAL::4809 2
+DEAL::4810 2
+DEAL::4811 2
+DEAL::4812 2
+DEAL::4813 2
+DEAL::4814 2
+DEAL::4815 2
+DEAL::4816 2
+DEAL::4817 2
+DEAL::4818 2
+DEAL::4819 2
+DEAL::4820 0
+DEAL::4821 0
+DEAL::4822 0
+DEAL::4823 0
+DEAL::4824 0
+DEAL::4825 0
+DEAL::4826 0
+DEAL::4827 0
+DEAL::4828 0
+DEAL::4829 0
+DEAL::4830 0
+DEAL::4831 0
+DEAL::4832 0
+DEAL::4833 0
+DEAL::4834 0
+DEAL::4835 0
+DEAL::4836 0
+DEAL::4837 0
+DEAL::4838 0
+DEAL::4839 0
+DEAL::4840 0
+DEAL::4841 0
+DEAL::4842 0
+DEAL::4843 0
+DEAL::4844 0
+DEAL::4845 0
+DEAL::4846 0
+DEAL::4847 0
+DEAL::4848 0
+DEAL::4849 0
+DEAL::4850 0
+DEAL::4851 0
+DEAL::4852 0
+DEAL::4853 0
+DEAL::4854 0
+DEAL::4855 0
+DEAL::4856 0
+DEAL::4857 0
+DEAL::4858 0
+DEAL::4859 3
+DEAL::4860 3
+DEAL::4861 3
+DEAL::4862 3
+DEAL::4863 3
+DEAL::4864 3
+DEAL::4865 3
+DEAL::4866 3
+DEAL::4867 3
+DEAL::4868 3
+DEAL::4869 3
+DEAL::4870 3
+DEAL::4871 3
+DEAL::4872 3
+DEAL::4873 3
+DEAL::4874 3
+DEAL::4875 3
+DEAL::4876 3
+DEAL::4877 4
+DEAL::4878 4
+DEAL::4879 4
+DEAL::4880 4
+DEAL::4881 4
+DEAL::4882 4
+DEAL::4883 4
+DEAL::4884 4
+DEAL::4885 4
+DEAL::4886 4
+DEAL::4887 4
+DEAL::4888 4
+DEAL::4889 4
+DEAL::4890 4
+DEAL::4891 4
+DEAL::4892 4
+DEAL::4893 4
+DEAL::4894 4
+DEAL::4895 4
+DEAL::4896 4
+DEAL::4897 4
 DEAL::4898 4
 DEAL::4899 4
 DEAL::4900 4
@@ -6457,8 +6457,8 @@ DEAL::4916 4
 DEAL::4917 4
 DEAL::4918 4
 DEAL::4919 4
-DEAL::4920 4
-DEAL::4921 4
+DEAL::4920 1
+DEAL::4921 1
 DEAL::4922 4
 DEAL::4923 4
 DEAL::4924 4
@@ -6469,159 +6469,159 @@ DEAL::4928 4
 DEAL::4929 4
 DEAL::4930 4
 DEAL::4931 4
-DEAL::4932 4
-DEAL::4933 4
-DEAL::4934 4
-DEAL::4935 4
-DEAL::4936 4
-DEAL::4937 4
-DEAL::4938 4
-DEAL::4939 4
-DEAL::4940 1
-DEAL::4941 1
-DEAL::4942 1
-DEAL::4943 1
-DEAL::4944 1
-DEAL::4945 1
-DEAL::4946 1
-DEAL::4947 1
-DEAL::4948 1
-DEAL::4949 1
-DEAL::4950 1
-DEAL::4951 1
-DEAL::4952 1
-DEAL::4953 1
-DEAL::4954 1
-DEAL::4955 1
-DEAL::4956 1
-DEAL::4957 1
-DEAL::4958 1
-DEAL::4959 1
-DEAL::4960 1
-DEAL::4961 4
-DEAL::4962 4
-DEAL::4963 4
-DEAL::4964 4
-DEAL::4965 4
-DEAL::4966 4
-DEAL::4967 4
-DEAL::4968 4
-DEAL::4969 4
-DEAL::4970 4
-DEAL::4971 4
-DEAL::4972 4
-DEAL::4973 4
-DEAL::4974 4
-DEAL::4975 4
-DEAL::4976 4
-DEAL::4977 4
-DEAL::4978 4
-DEAL::4979 4
-DEAL::4980 4
-DEAL::4981 4
-DEAL::4982 4
-DEAL::4983 4
-DEAL::4984 4
-DEAL::4985 4
-DEAL::4986 4
-DEAL::4987 4
-DEAL::4988 4
-DEAL::4989 4
-DEAL::4990 4
-DEAL::4991 4
-DEAL::4992 4
-DEAL::4993 4
-DEAL::4994 4
-DEAL::4995 4
-DEAL::4996 4
-DEAL::4997 4
-DEAL::4998 4
-DEAL::4999 4
-DEAL::5000 4
-DEAL::5001 4
-DEAL::5002 4
-DEAL::5003 1
-DEAL::5004 1
-DEAL::5005 1
-DEAL::5006 1
-DEAL::5007 1
-DEAL::5008 1
-DEAL::5009 1
-DEAL::5010 1
-DEAL::5011 1
-DEAL::5012 1
-DEAL::5013 1
-DEAL::5014 1
-DEAL::5015 1
-DEAL::5016 1
-DEAL::5017 1
-DEAL::5018 1
-DEAL::5019 1
-DEAL::5020 1
-DEAL::5021 1
-DEAL::5022 1
-DEAL::5023 1
-DEAL::5024 1
-DEAL::5025 1
-DEAL::5026 1
-DEAL::5027 1
-DEAL::5028 1
-DEAL::5029 1
-DEAL::5030 1
-DEAL::5031 1
-DEAL::5032 1
-DEAL::5033 1
-DEAL::5034 1
-DEAL::5035 1
-DEAL::5036 1
-DEAL::5037 1
-DEAL::5038 1
-DEAL::5039 1
-DEAL::5040 1
-DEAL::5041 1
-DEAL::5042 1
-DEAL::5043 1
-DEAL::5044 1
-DEAL::5045 1
-DEAL::5046 1
-DEAL::5047 1
-DEAL::5048 1
-DEAL::5049 1
-DEAL::5050 1
-DEAL::5051 1
-DEAL::5052 1
-DEAL::5053 1
-DEAL::5054 1
-DEAL::5055 1
-DEAL::5056 1
-DEAL::5057 1
-DEAL::5058 1
-DEAL::5059 1
-DEAL::5060 1
-DEAL::5061 1
-DEAL::5062 1
-DEAL::5063 1
-DEAL::5064 1
-DEAL::5065 1
-DEAL::5066 1
-DEAL::5067 1
-DEAL::5068 1
-DEAL::5069 1
-DEAL::5070 1
-DEAL::5071 1
-DEAL::5072 1
-DEAL::5073 1
-DEAL::5074 1
-DEAL::5075 1
-DEAL::5076 1
-DEAL::5077 1
-DEAL::5078 1
-DEAL::5079 1
-DEAL::5080 1
-DEAL::5081 1
-DEAL::5082 1
-DEAL::5083 1
-DEAL::5084 1
+DEAL::4932 1
+DEAL::4933 1
+DEAL::4934 1
+DEAL::4935 1
+DEAL::4936 1
+DEAL::4937 1
+DEAL::4938 1
+DEAL::4939 1
+DEAL::4940 2
+DEAL::4941 2
+DEAL::4942 2
+DEAL::4943 2
+DEAL::4944 2
+DEAL::4945 2
+DEAL::4946 2
+DEAL::4947 2
+DEAL::4948 2
+DEAL::4949 2
+DEAL::4950 2
+DEAL::4951 2
+DEAL::4952 2
+DEAL::4953 2
+DEAL::4954 2
+DEAL::4955 2
+DEAL::4956 2
+DEAL::4957 2
+DEAL::4958 2
+DEAL::4959 2
+DEAL::4960 2
+DEAL::4961 1
+DEAL::4962 1
+DEAL::4963 1
+DEAL::4964 1
+DEAL::4965 1
+DEAL::4966 1
+DEAL::4967 1
+DEAL::4968 1
+DEAL::4969 1
+DEAL::4970 1
+DEAL::4971 1
+DEAL::4972 1
+DEAL::4973 1
+DEAL::4974 1
+DEAL::4975 1
+DEAL::4976 1
+DEAL::4977 1
+DEAL::4978 1
+DEAL::4979 1
+DEAL::4980 1
+DEAL::4981 1
+DEAL::4982 1
+DEAL::4983 1
+DEAL::4984 1
+DEAL::4985 1
+DEAL::4986 1
+DEAL::4987 1
+DEAL::4988 1
+DEAL::4989 1
+DEAL::4990 1
+DEAL::4991 1
+DEAL::4992 1
+DEAL::4993 1
+DEAL::4994 1
+DEAL::4995 1
+DEAL::4996 1
+DEAL::4997 1
+DEAL::4998 1
+DEAL::4999 1
+DEAL::5000 1
+DEAL::5001 1
+DEAL::5002 1
+DEAL::5003 2
+DEAL::5004 2
+DEAL::5005 2
+DEAL::5006 2
+DEAL::5007 2
+DEAL::5008 2
+DEAL::5009 2
+DEAL::5010 2
+DEAL::5011 2
+DEAL::5012 2
+DEAL::5013 2
+DEAL::5014 2
+DEAL::5015 2
+DEAL::5016 2
+DEAL::5017 2
+DEAL::5018 2
+DEAL::5019 2
+DEAL::5020 2
+DEAL::5021 2
+DEAL::5022 2
+DEAL::5023 2
+DEAL::5024 2
+DEAL::5025 2
+DEAL::5026 2
+DEAL::5027 2
+DEAL::5028 2
+DEAL::5029 2
+DEAL::5030 2
+DEAL::5031 2
+DEAL::5032 2
+DEAL::5033 2
+DEAL::5034 2
+DEAL::5035 2
+DEAL::5036 2
+DEAL::5037 2
+DEAL::5038 2
+DEAL::5039 2
+DEAL::5040 2
+DEAL::5041 2
+DEAL::5042 2
+DEAL::5043 4
+DEAL::5044 4
+DEAL::5045 4
+DEAL::5046 4
+DEAL::5047 4
+DEAL::5048 4
+DEAL::5049 4
+DEAL::5050 4
+DEAL::5051 4
+DEAL::5052 4
+DEAL::5053 4
+DEAL::5054 4
+DEAL::5055 4
+DEAL::5056 4
+DEAL::5057 4
+DEAL::5058 4
+DEAL::5059 4
+DEAL::5060 4
+DEAL::5061 4
+DEAL::5062 4
+DEAL::5063 4
+DEAL::5064 2
+DEAL::5065 2
+DEAL::5066 2
+DEAL::5067 2
+DEAL::5068 2
+DEAL::5069 2
+DEAL::5070 2
+DEAL::5071 2
+DEAL::5072 2
+DEAL::5073 2
+DEAL::5074 2
+DEAL::5075 2
+DEAL::5076 2
+DEAL::5077 2
+DEAL::5078 2
+DEAL::5079 2
+DEAL::5080 2
+DEAL::5081 2
+DEAL::5082 2
+DEAL::5083 2
+DEAL::5084 2
 DEAL::5085 2
 DEAL::5086 2
 DEAL::5087 2
@@ -6643,27 +6643,27 @@ DEAL::5102 2
 DEAL::5103 2
 DEAL::5104 2
 DEAL::5105 2
-DEAL::5106 4
-DEAL::5107 4
-DEAL::5108 4
-DEAL::5109 4
-DEAL::5110 4
-DEAL::5111 4
-DEAL::5112 4
-DEAL::5113 4
-DEAL::5114 4
-DEAL::5115 4
-DEAL::5116 4
-DEAL::5117 4
-DEAL::5118 4
-DEAL::5119 4
-DEAL::5120 4
-DEAL::5121 4
-DEAL::5122 4
-DEAL::5123 4
-DEAL::5124 4
-DEAL::5125 4
-DEAL::5126 4
+DEAL::5106 2
+DEAL::5107 2
+DEAL::5108 2
+DEAL::5109 2
+DEAL::5110 2
+DEAL::5111 2
+DEAL::5112 2
+DEAL::5113 2
+DEAL::5114 2
+DEAL::5115 2
+DEAL::5116 2
+DEAL::5117 2
+DEAL::5118 2
+DEAL::5119 2
+DEAL::5120 2
+DEAL::5121 2
+DEAL::5122 2
+DEAL::5123 2
+DEAL::5124 2
+DEAL::5125 2
+DEAL::5126 2
 DEAL::5127 2
 DEAL::5128 2
 DEAL::5129 2
@@ -6704,185 +6704,185 @@ DEAL::5163 2
 DEAL::5164 2
 DEAL::5165 2
 DEAL::5166 2
-DEAL::5167 3
-DEAL::5168 3
-DEAL::5169 3
-DEAL::5170 3
-DEAL::5171 3
-DEAL::5172 3
-DEAL::5173 3
-DEAL::5174 3
-DEAL::5175 1
-DEAL::5176 1
+DEAL::5167 1
+DEAL::5168 1
+DEAL::5169 1
+DEAL::5170 1
+DEAL::5171 1
+DEAL::5172 1
+DEAL::5173 1
+DEAL::5174 1
+DEAL::5175 4
+DEAL::5176 4
 DEAL::5177 4
-DEAL::5178 1
+DEAL::5178 4
 DEAL::5179 4
-DEAL::5180 1
-DEAL::5181 1
-DEAL::5182 1
+DEAL::5180 4
+DEAL::5181 4
+DEAL::5182 4
 DEAL::5183 4
 DEAL::5184 4
-DEAL::5185 1
+DEAL::5185 4
 DEAL::5186 4
 DEAL::5187 4
-DEAL::5188 1
-DEAL::5189 1
-DEAL::5190 1
+DEAL::5188 4
+DEAL::5189 4
+DEAL::5190 4
 DEAL::5191 4
-DEAL::5192 1
-DEAL::5193 3
-DEAL::5194 3
-DEAL::5195 3
-DEAL::5196 3
-DEAL::5197 3
-DEAL::5198 3
-DEAL::5199 3
-DEAL::5200 3
-DEAL::5201 3
-DEAL::5202 3
-DEAL::5203 3
-DEAL::5204 3
-DEAL::5205 3
-DEAL::5206 3
-DEAL::5207 3
-DEAL::5208 3
-DEAL::5209 3
-DEAL::5210 3
-DEAL::5211 3
-DEAL::5212 3
-DEAL::5213 3
-DEAL::5214 3
-DEAL::5215 3
-DEAL::5216 3
-DEAL::5217 3
-DEAL::5218 3
-DEAL::5219 3
-DEAL::5220 3
-DEAL::5221 3
-DEAL::5222 3
-DEAL::5223 3
-DEAL::5224 3
-DEAL::5225 3
-DEAL::5226 3
-DEAL::5227 3
-DEAL::5228 3
-DEAL::5229 3
-DEAL::5230 3
-DEAL::5231 3
-DEAL::5232 3
-DEAL::5233 3
-DEAL::5234 3
-DEAL::5235 3
-DEAL::5236 3
-DEAL::5237 3
-DEAL::5238 3
-DEAL::5239 3
-DEAL::5240 3
-DEAL::5241 3
-DEAL::5242 3
-DEAL::5243 3
-DEAL::5244 3
-DEAL::5245 3
-DEAL::5246 3
-DEAL::5247 3
-DEAL::5248 3
-DEAL::5249 3
-DEAL::5250 3
-DEAL::5251 3
-DEAL::5252 3
-DEAL::5253 3
-DEAL::5254 3
-DEAL::5255 3
-DEAL::5256 3
-DEAL::5257 3
-DEAL::5258 3
-DEAL::5259 3
-DEAL::5260 3
-DEAL::5261 3
-DEAL::5262 3
-DEAL::5263 3
-DEAL::5264 3
-DEAL::5265 3
-DEAL::5266 3
-DEAL::5267 3
-DEAL::5268 3
-DEAL::5269 3
-DEAL::5270 3
-DEAL::5271 3
-DEAL::5272 0
-DEAL::5273 0
-DEAL::5274 0
-DEAL::5275 0
-DEAL::5276 0
-DEAL::5277 0
-DEAL::5278 0
-DEAL::5279 0
-DEAL::5280 0
-DEAL::5281 0
-DEAL::5282 0
-DEAL::5283 0
-DEAL::5284 0
-DEAL::5285 0
-DEAL::5286 0
-DEAL::5287 0
-DEAL::5288 0
-DEAL::5289 0
-DEAL::5290 3
-DEAL::5291 3
-DEAL::5292 3
-DEAL::5293 3
-DEAL::5294 3
-DEAL::5295 3
-DEAL::5296 3
-DEAL::5297 3
-DEAL::5298 3
-DEAL::5299 3
-DEAL::5300 3
-DEAL::5301 3
-DEAL::5302 3
-DEAL::5303 3
-DEAL::5304 3
-DEAL::5305 3
-DEAL::5306 3
-DEAL::5307 3
-DEAL::5308 3
-DEAL::5309 3
-DEAL::5310 3
-DEAL::5311 3
-DEAL::5312 3
-DEAL::5313 3
-DEAL::5314 3
-DEAL::5315 3
-DEAL::5316 3
-DEAL::5317 3
-DEAL::5318 3
-DEAL::5319 3
-DEAL::5320 3
-DEAL::5321 3
-DEAL::5322 3
-DEAL::5323 3
-DEAL::5324 3
-DEAL::5325 3
-DEAL::5326 3
-DEAL::5327 3
-DEAL::5328 1
-DEAL::5329 1
-DEAL::5330 1
-DEAL::5331 1
-DEAL::5332 1
-DEAL::5333 1
-DEAL::5334 1
-DEAL::5335 1
-DEAL::5336 1
-DEAL::5337 1
-DEAL::5338 1
-DEAL::5339 1
-DEAL::5340 1
-DEAL::5341 1
-DEAL::5342 1
-DEAL::5343 1
-DEAL::5344 1
-DEAL::5345 1
+DEAL::5192 4
+DEAL::5193 1
+DEAL::5194 1
+DEAL::5195 1
+DEAL::5196 1
+DEAL::5197 1
+DEAL::5198 1
+DEAL::5199 1
+DEAL::5200 1
+DEAL::5201 1
+DEAL::5202 1
+DEAL::5203 1
+DEAL::5204 1
+DEAL::5205 1
+DEAL::5206 1
+DEAL::5207 1
+DEAL::5208 1
+DEAL::5209 1
+DEAL::5210 1
+DEAL::5211 1
+DEAL::5212 1
+DEAL::5213 1
+DEAL::5214 1
+DEAL::5215 1
+DEAL::5216 1
+DEAL::5217 1
+DEAL::5218 1
+DEAL::5219 1
+DEAL::5220 1
+DEAL::5221 1
+DEAL::5222 1
+DEAL::5223 1
+DEAL::5224 1
+DEAL::5225 1
+DEAL::5226 1
+DEAL::5227 1
+DEAL::5228 1
+DEAL::5229 1
+DEAL::5230 1
+DEAL::5231 1
+DEAL::5232 1
+DEAL::5233 1
+DEAL::5234 1
+DEAL::5235 1
+DEAL::5236 1
+DEAL::5237 1
+DEAL::5238 1
+DEAL::5239 1
+DEAL::5240 1
+DEAL::5241 1
+DEAL::5242 1
+DEAL::5243 1
+DEAL::5244 1
+DEAL::5245 1
+DEAL::5246 1
+DEAL::5247 1
+DEAL::5248 1
+DEAL::5249 1
+DEAL::5250 1
+DEAL::5251 1
+DEAL::5252 1
+DEAL::5253 1
+DEAL::5254 1
+DEAL::5255 1
+DEAL::5256 1
+DEAL::5257 1
+DEAL::5258 1
+DEAL::5259 1
+DEAL::5260 1
+DEAL::5261 1
+DEAL::5262 1
+DEAL::5263 1
+DEAL::5264 1
+DEAL::5265 1
+DEAL::5266 1
+DEAL::5267 1
+DEAL::5268 1
+DEAL::5269 1
+DEAL::5270 1
+DEAL::5271 1
+DEAL::5272 3
+DEAL::5273 3
+DEAL::5274 3
+DEAL::5275 3
+DEAL::5276 3
+DEAL::5277 3
+DEAL::5278 3
+DEAL::5279 3
+DEAL::5280 3
+DEAL::5281 3
+DEAL::5282 3
+DEAL::5283 3
+DEAL::5284 3
+DEAL::5285 3
+DEAL::5286 3
+DEAL::5287 3
+DEAL::5288 3
+DEAL::5289 3
+DEAL::5290 1
+DEAL::5291 1
+DEAL::5292 1
+DEAL::5293 1
+DEAL::5294 1
+DEAL::5295 1
+DEAL::5296 1
+DEAL::5297 1
+DEAL::5298 1
+DEAL::5299 1
+DEAL::5300 1
+DEAL::5301 1
+DEAL::5302 1
+DEAL::5303 1
+DEAL::5304 1
+DEAL::5305 1
+DEAL::5306 1
+DEAL::5307 1
+DEAL::5308 1
+DEAL::5309 1
+DEAL::5310 1
+DEAL::5311 1
+DEAL::5312 1
+DEAL::5313 1
+DEAL::5314 1
+DEAL::5315 1
+DEAL::5316 1
+DEAL::5317 1
+DEAL::5318 1
+DEAL::5319 1
+DEAL::5320 1
+DEAL::5321 1
+DEAL::5322 1
+DEAL::5323 1
+DEAL::5324 1
+DEAL::5325 1
+DEAL::5326 1
+DEAL::5327 1
+DEAL::5328 4
+DEAL::5329 4
+DEAL::5330 4
+DEAL::5331 4
+DEAL::5332 4
+DEAL::5333 4
+DEAL::5334 4
+DEAL::5335 4
+DEAL::5336 4
+DEAL::5337 4
+DEAL::5338 4
+DEAL::5339 4
+DEAL::5340 4
+DEAL::5341 4
+DEAL::5342 4
+DEAL::5343 4
+DEAL::5344 4
+DEAL::5345 4
 DEAL::5346 4
 DEAL::5347 4
 DEAL::5348 4
@@ -6902,152 +6902,152 @@ DEAL::5361 4
 DEAL::5362 4
 DEAL::5363 4
 DEAL::5364 4
-DEAL::5365 0
-DEAL::5366 0
-DEAL::5367 0
-DEAL::5368 0
-DEAL::5369 0
-DEAL::5370 0
-DEAL::5371 0
-DEAL::5372 0
-DEAL::5373 0
-DEAL::5374 0
-DEAL::5375 0
-DEAL::5376 0
-DEAL::5377 0
-DEAL::5378 0
-DEAL::5379 0
-DEAL::5380 0
-DEAL::5381 0
-DEAL::5382 0
-DEAL::5383 0
-DEAL::5384 0
-DEAL::5385 0
-DEAL::5386 3
-DEAL::5387 3
-DEAL::5388 3
-DEAL::5389 3
-DEAL::5390 3
-DEAL::5391 3
-DEAL::5392 3
-DEAL::5393 3
-DEAL::5394 3
-DEAL::5395 3
-DEAL::5396 3
-DEAL::5397 3
-DEAL::5398 3
-DEAL::5399 3
-DEAL::5400 3
-DEAL::5401 3
-DEAL::5402 3
-DEAL::5403 3
-DEAL::5404 3
-DEAL::5405 3
-DEAL::5406 3
-DEAL::5407 3
-DEAL::5408 3
-DEAL::5409 3
-DEAL::5410 3
-DEAL::5411 3
-DEAL::5412 3
-DEAL::5413 3
-DEAL::5414 3
-DEAL::5415 3
-DEAL::5416 3
-DEAL::5417 3
-DEAL::5418 3
-DEAL::5419 3
-DEAL::5420 3
-DEAL::5421 3
-DEAL::5422 3
-DEAL::5423 3
-DEAL::5424 3
-DEAL::5425 3
-DEAL::5426 3
-DEAL::5427 3
-DEAL::5428 3
-DEAL::5429 3
-DEAL::5430 3
-DEAL::5431 3
-DEAL::5432 3
-DEAL::5433 3
-DEAL::5434 3
-DEAL::5435 3
-DEAL::5436 3
-DEAL::5437 3
-DEAL::5438 3
-DEAL::5439 3
-DEAL::5440 3
-DEAL::5441 3
-DEAL::5442 3
-DEAL::5443 3
-DEAL::5444 3
-DEAL::5445 3
-DEAL::5446 3
-DEAL::5447 3
-DEAL::5448 3
-DEAL::5449 3
-DEAL::5450 3
-DEAL::5451 3
-DEAL::5452 0
-DEAL::5453 0
-DEAL::5454 0
-DEAL::5455 0
-DEAL::5456 0
-DEAL::5457 0
-DEAL::5458 0
-DEAL::5459 0
-DEAL::5460 0
-DEAL::5461 0
-DEAL::5462 0
-DEAL::5463 0
-DEAL::5464 0
-DEAL::5465 0
-DEAL::5466 0
-DEAL::5467 0
-DEAL::5468 0
-DEAL::5469 0
-DEAL::5470 0
-DEAL::5471 0
-DEAL::5472 0
-DEAL::5473 0
-DEAL::5474 0
-DEAL::5475 0
-DEAL::5476 0
-DEAL::5477 0
-DEAL::5478 0
-DEAL::5479 0
-DEAL::5480 0
-DEAL::5481 0
-DEAL::5482 0
-DEAL::5483 0
-DEAL::5484 0
-DEAL::5485 0
-DEAL::5486 0
-DEAL::5487 0
-DEAL::5488 0
-DEAL::5489 0
-DEAL::5490 4
-DEAL::5491 4
-DEAL::5492 4
-DEAL::5493 4
-DEAL::5494 4
-DEAL::5495 4
-DEAL::5496 4
-DEAL::5497 4
-DEAL::5498 4
-DEAL::5499 4
-DEAL::5500 4
-DEAL::5501 4
-DEAL::5502 4
-DEAL::5503 4
-DEAL::5504 4
-DEAL::5505 4
-DEAL::5506 4
-DEAL::5507 4
-DEAL::5508 4
-DEAL::5509 4
-DEAL::5510 4
+DEAL::5365 3
+DEAL::5366 3
+DEAL::5367 3
+DEAL::5368 3
+DEAL::5369 3
+DEAL::5370 3
+DEAL::5371 3
+DEAL::5372 3
+DEAL::5373 3
+DEAL::5374 3
+DEAL::5375 3
+DEAL::5376 3
+DEAL::5377 3
+DEAL::5378 3
+DEAL::5379 3
+DEAL::5380 3
+DEAL::5381 3
+DEAL::5382 3
+DEAL::5383 3
+DEAL::5384 3
+DEAL::5385 3
+DEAL::5386 1
+DEAL::5387 1
+DEAL::5388 1
+DEAL::5389 1
+DEAL::5390 1
+DEAL::5391 1
+DEAL::5392 1
+DEAL::5393 1
+DEAL::5394 1
+DEAL::5395 1
+DEAL::5396 1
+DEAL::5397 1
+DEAL::5398 1
+DEAL::5399 1
+DEAL::5400 1
+DEAL::5401 1
+DEAL::5402 1
+DEAL::5403 1
+DEAL::5404 1
+DEAL::5405 1
+DEAL::5406 1
+DEAL::5407 1
+DEAL::5408 1
+DEAL::5409 1
+DEAL::5410 1
+DEAL::5411 1
+DEAL::5412 1
+DEAL::5413 1
+DEAL::5414 1
+DEAL::5415 1
+DEAL::5416 1
+DEAL::5417 1
+DEAL::5418 1
+DEAL::5419 1
+DEAL::5420 1
+DEAL::5421 1
+DEAL::5422 1
+DEAL::5423 1
+DEAL::5424 1
+DEAL::5425 1
+DEAL::5426 1
+DEAL::5427 1
+DEAL::5428 1
+DEAL::5429 1
+DEAL::5430 1
+DEAL::5431 1
+DEAL::5432 1
+DEAL::5433 1
+DEAL::5434 1
+DEAL::5435 1
+DEAL::5436 1
+DEAL::5437 1
+DEAL::5438 1
+DEAL::5439 1
+DEAL::5440 1
+DEAL::5441 1
+DEAL::5442 1
+DEAL::5443 1
+DEAL::5444 1
+DEAL::5445 1
+DEAL::5446 1
+DEAL::5447 1
+DEAL::5448 1
+DEAL::5449 1
+DEAL::5450 1
+DEAL::5451 1
+DEAL::5452 3
+DEAL::5453 3
+DEAL::5454 3
+DEAL::5455 3
+DEAL::5456 3
+DEAL::5457 3
+DEAL::5458 3
+DEAL::5459 3
+DEAL::5460 3
+DEAL::5461 3
+DEAL::5462 3
+DEAL::5463 3
+DEAL::5464 3
+DEAL::5465 3
+DEAL::5466 3
+DEAL::5467 3
+DEAL::5468 3
+DEAL::5469 3
+DEAL::5470 3
+DEAL::5471 3
+DEAL::5472 3
+DEAL::5473 3
+DEAL::5474 3
+DEAL::5475 3
+DEAL::5476 3
+DEAL::5477 3
+DEAL::5478 3
+DEAL::5479 3
+DEAL::5480 3
+DEAL::5481 3
+DEAL::5482 3
+DEAL::5483 3
+DEAL::5484 3
+DEAL::5485 3
+DEAL::5486 3
+DEAL::5487 3
+DEAL::5488 3
+DEAL::5489 3
+DEAL::5490 2
+DEAL::5491 2
+DEAL::5492 2
+DEAL::5493 2
+DEAL::5494 2
+DEAL::5495 2
+DEAL::5496 2
+DEAL::5497 2
+DEAL::5498 2
+DEAL::5499 2
+DEAL::5500 2
+DEAL::5501 2
+DEAL::5502 2
+DEAL::5503 2
+DEAL::5504 2
+DEAL::5505 2
+DEAL::5506 2
+DEAL::5507 2
+DEAL::5508 2
+DEAL::5509 2
+DEAL::5510 2
 DEAL::5511 4
 DEAL::5512 4
 DEAL::5513 4
@@ -7067,174 +7067,174 @@ DEAL::5526 4
 DEAL::5527 4
 DEAL::5528 4
 DEAL::5529 4
-DEAL::5530 0
-DEAL::5531 0
-DEAL::5532 0
-DEAL::5533 0
-DEAL::5534 0
-DEAL::5535 0
-DEAL::5536 0
-DEAL::5537 0
-DEAL::5538 0
-DEAL::5539 0
-DEAL::5540 0
-DEAL::5541 0
-DEAL::5542 0
-DEAL::5543 0
-DEAL::5544 0
-DEAL::5545 0
-DEAL::5546 0
-DEAL::5547 0
-DEAL::5548 0
-DEAL::5549 0
-DEAL::5550 0
-DEAL::5551 3
-DEAL::5552 3
-DEAL::5553 3
-DEAL::5554 3
-DEAL::5555 3
-DEAL::5556 3
-DEAL::5557 3
-DEAL::5558 3
-DEAL::5559 3
-DEAL::5560 3
-DEAL::5561 3
-DEAL::5562 3
-DEAL::5563 3
-DEAL::5564 3
-DEAL::5565 3
-DEAL::5566 3
-DEAL::5567 3
-DEAL::5568 3
-DEAL::5569 3
-DEAL::5570 3
-DEAL::5571 3
-DEAL::5572 0
-DEAL::5573 0
-DEAL::5574 0
-DEAL::5575 0
-DEAL::5576 0
-DEAL::5577 0
-DEAL::5578 0
-DEAL::5579 0
-DEAL::5580 0
-DEAL::5581 0
-DEAL::5582 0
-DEAL::5583 0
-DEAL::5584 0
-DEAL::5585 0
-DEAL::5586 0
-DEAL::5587 0
-DEAL::5588 0
-DEAL::5589 0
-DEAL::5590 0
-DEAL::5591 0
-DEAL::5592 0
-DEAL::5593 2
-DEAL::5594 2
-DEAL::5595 2
-DEAL::5596 2
-DEAL::5597 2
-DEAL::5598 2
-DEAL::5599 2
-DEAL::5600 2
-DEAL::5601 2
-DEAL::5602 2
-DEAL::5603 2
-DEAL::5604 2
-DEAL::5605 2
-DEAL::5606 2
-DEAL::5607 2
-DEAL::5608 2
-DEAL::5609 2
-DEAL::5610 2
-DEAL::5611 2
-DEAL::5612 2
-DEAL::5613 2
-DEAL::5614 1
-DEAL::5615 1
-DEAL::5616 1
-DEAL::5617 1
-DEAL::5618 1
-DEAL::5619 1
-DEAL::5620 1
-DEAL::5621 1
-DEAL::5622 1
-DEAL::5623 1
-DEAL::5624 1
-DEAL::5625 1
-DEAL::5626 1
-DEAL::5627 1
-DEAL::5628 1
-DEAL::5629 1
-DEAL::5630 1
-DEAL::5631 1
-DEAL::5632 1
-DEAL::5633 1
-DEAL::5634 1
-DEAL::5635 0
-DEAL::5636 0
-DEAL::5637 0
-DEAL::5638 0
-DEAL::5639 0
-DEAL::5640 0
-DEAL::5641 0
-DEAL::5642 0
-DEAL::5643 0
-DEAL::5644 0
-DEAL::5645 0
-DEAL::5646 0
-DEAL::5647 0
-DEAL::5648 0
-DEAL::5649 0
-DEAL::5650 0
-DEAL::5651 0
-DEAL::5652 0
-DEAL::5653 0
-DEAL::5654 0
-DEAL::5655 0
-DEAL::5656 3
-DEAL::5657 3
-DEAL::5658 3
-DEAL::5659 3
-DEAL::5660 3
-DEAL::5661 3
-DEAL::5662 3
-DEAL::5663 3
-DEAL::5664 3
-DEAL::5665 3
-DEAL::5666 3
-DEAL::5667 3
-DEAL::5668 3
-DEAL::5669 3
-DEAL::5670 3
-DEAL::5671 3
-DEAL::5672 3
-DEAL::5673 3
-DEAL::5674 3
-DEAL::5675 3
-DEAL::5676 3
-DEAL::5677 2
-DEAL::5678 2
-DEAL::5679 2
-DEAL::5680 2
-DEAL::5681 2
-DEAL::5682 2
-DEAL::5683 2
-DEAL::5684 2
-DEAL::5685 2
-DEAL::5686 2
-DEAL::5687 2
-DEAL::5688 2
-DEAL::5689 2
-DEAL::5690 2
-DEAL::5691 2
-DEAL::5692 2
-DEAL::5693 2
-DEAL::5694 2
-DEAL::5695 2
-DEAL::5696 2
-DEAL::5697 2
+DEAL::5530 3
+DEAL::5531 3
+DEAL::5532 3
+DEAL::5533 3
+DEAL::5534 3
+DEAL::5535 3
+DEAL::5536 3
+DEAL::5537 3
+DEAL::5538 3
+DEAL::5539 3
+DEAL::5540 3
+DEAL::5541 3
+DEAL::5542 3
+DEAL::5543 3
+DEAL::5544 3
+DEAL::5545 3
+DEAL::5546 3
+DEAL::5547 3
+DEAL::5548 3
+DEAL::5549 3
+DEAL::5550 3
+DEAL::5551 0
+DEAL::5552 0
+DEAL::5553 0
+DEAL::5554 0
+DEAL::5555 1
+DEAL::5556 0
+DEAL::5557 0
+DEAL::5558 0
+DEAL::5559 1
+DEAL::5560 1
+DEAL::5561 1
+DEAL::5562 1
+DEAL::5563 1
+DEAL::5564 0
+DEAL::5565 0
+DEAL::5566 0
+DEAL::5567 0
+DEAL::5568 0
+DEAL::5569 1
+DEAL::5570 1
+DEAL::5571 1
+DEAL::5572 3
+DEAL::5573 3
+DEAL::5574 3
+DEAL::5575 3
+DEAL::5576 3
+DEAL::5577 3
+DEAL::5578 3
+DEAL::5579 3
+DEAL::5580 3
+DEAL::5581 3
+DEAL::5582 3
+DEAL::5583 3
+DEAL::5584 3
+DEAL::5585 3
+DEAL::5586 3
+DEAL::5587 3
+DEAL::5588 3
+DEAL::5589 3
+DEAL::5590 3
+DEAL::5591 3
+DEAL::5592 3
+DEAL::5593 0
+DEAL::5594 0
+DEAL::5595 0
+DEAL::5596 0
+DEAL::5597 0
+DEAL::5598 0
+DEAL::5599 0
+DEAL::5600 0
+DEAL::5601 0
+DEAL::5602 0
+DEAL::5603 0
+DEAL::5604 0
+DEAL::5605 0
+DEAL::5606 0
+DEAL::5607 0
+DEAL::5608 0
+DEAL::5609 0
+DEAL::5610 0
+DEAL::5611 0
+DEAL::5612 0
+DEAL::5613 0
+DEAL::5614 4
+DEAL::5615 4
+DEAL::5616 4
+DEAL::5617 4
+DEAL::5618 4
+DEAL::5619 4
+DEAL::5620 4
+DEAL::5621 4
+DEAL::5622 4
+DEAL::5623 4
+DEAL::5624 4
+DEAL::5625 4
+DEAL::5626 4
+DEAL::5627 4
+DEAL::5628 4
+DEAL::5629 4
+DEAL::5630 4
+DEAL::5631 4
+DEAL::5632 4
+DEAL::5633 4
+DEAL::5634 4
+DEAL::5635 3
+DEAL::5636 3
+DEAL::5637 3
+DEAL::5638 3
+DEAL::5639 3
+DEAL::5640 3
+DEAL::5641 3
+DEAL::5642 3
+DEAL::5643 3
+DEAL::5644 3
+DEAL::5645 3
+DEAL::5646 3
+DEAL::5647 3
+DEAL::5648 3
+DEAL::5649 3
+DEAL::5650 3
+DEAL::5651 3
+DEAL::5652 3
+DEAL::5653 3
+DEAL::5654 3
+DEAL::5655 3
+DEAL::5656 1
+DEAL::5657 1
+DEAL::5658 1
+DEAL::5659 1
+DEAL::5660 1
+DEAL::5661 1
+DEAL::5662 1
+DEAL::5663 1
+DEAL::5664 1
+DEAL::5665 1
+DEAL::5666 1
+DEAL::5667 1
+DEAL::5668 1
+DEAL::5669 1
+DEAL::5670 1
+DEAL::5671 1
+DEAL::5672 1
+DEAL::5673 1
+DEAL::5674 1
+DEAL::5675 1
+DEAL::5676 1
+DEAL::5677 0
+DEAL::5678 0
+DEAL::5679 0
+DEAL::5680 0
+DEAL::5681 0
+DEAL::5682 0
+DEAL::5683 0
+DEAL::5684 0
+DEAL::5685 0
+DEAL::5686 0
+DEAL::5687 0
+DEAL::5688 0
+DEAL::5689 0
+DEAL::5690 0
+DEAL::5691 0
+DEAL::5692 0
+DEAL::5693 0
+DEAL::5694 0
+DEAL::5695 0
+DEAL::5696 0
+DEAL::5697 0
 DEAL::5698 4
 DEAL::5699 4
 DEAL::5700 4
@@ -7256,108 +7256,108 @@ DEAL::5715 4
 DEAL::5716 4
 DEAL::5717 4
 DEAL::5718 4
-DEAL::5719 0
-DEAL::5720 0
-DEAL::5721 0
-DEAL::5722 0
-DEAL::5723 0
-DEAL::5724 0
-DEAL::5725 0
-DEAL::5726 0
-DEAL::5727 0
-DEAL::5728 0
-DEAL::5729 0
-DEAL::5730 0
-DEAL::5731 0
-DEAL::5732 0
-DEAL::5733 0
-DEAL::5734 0
-DEAL::5735 0
-DEAL::5736 0
-DEAL::5737 0
-DEAL::5738 0
-DEAL::5739 0
-DEAL::5740 0
-DEAL::5741 0
-DEAL::5742 0
-DEAL::5743 0
-DEAL::5744 0
-DEAL::5745 0
-DEAL::5746 0
-DEAL::5747 0
-DEAL::5748 0
-DEAL::5749 0
-DEAL::5750 0
-DEAL::5751 0
-DEAL::5752 0
-DEAL::5753 0
-DEAL::5754 0
-DEAL::5755 0
-DEAL::5756 0
-DEAL::5757 0
-DEAL::5758 0
-DEAL::5759 0
-DEAL::5760 0
-DEAL::5761 3
-DEAL::5762 3
-DEAL::5763 3
-DEAL::5764 3
-DEAL::5765 3
-DEAL::5766 3
-DEAL::5767 3
-DEAL::5768 3
-DEAL::5769 3
-DEAL::5770 3
-DEAL::5771 3
-DEAL::5772 3
-DEAL::5773 3
-DEAL::5774 3
-DEAL::5775 3
-DEAL::5776 3
-DEAL::5777 3
-DEAL::5778 3
-DEAL::5779 3
-DEAL::5780 3
-DEAL::5781 3
-DEAL::5782 3
-DEAL::5783 3
-DEAL::5784 3
-DEAL::5785 3
-DEAL::5786 3
-DEAL::5787 3
-DEAL::5788 3
-DEAL::5789 3
-DEAL::5790 3
-DEAL::5791 3
-DEAL::5792 3
-DEAL::5793 3
-DEAL::5794 3
-DEAL::5795 3
-DEAL::5796 3
-DEAL::5797 3
-DEAL::5798 3
-DEAL::5799 3
-DEAL::5800 1
-DEAL::5801 1
-DEAL::5802 1
-DEAL::5803 1
-DEAL::5804 1
-DEAL::5805 1
-DEAL::5806 1
-DEAL::5807 1
-DEAL::5808 1
-DEAL::5809 1
-DEAL::5810 1
-DEAL::5811 1
-DEAL::5812 1
-DEAL::5813 1
-DEAL::5814 1
-DEAL::5815 1
-DEAL::5816 1
-DEAL::5817 1
-DEAL::5818 1
-DEAL::5819 1
-DEAL::5820 1
+DEAL::5719 3
+DEAL::5720 3
+DEAL::5721 3
+DEAL::5722 3
+DEAL::5723 3
+DEAL::5724 3
+DEAL::5725 3
+DEAL::5726 3
+DEAL::5727 3
+DEAL::5728 3
+DEAL::5729 3
+DEAL::5730 3
+DEAL::5731 3
+DEAL::5732 3
+DEAL::5733 3
+DEAL::5734 3
+DEAL::5735 3
+DEAL::5736 3
+DEAL::5737 3
+DEAL::5738 3
+DEAL::5739 3
+DEAL::5740 3
+DEAL::5741 3
+DEAL::5742 3
+DEAL::5743 3
+DEAL::5744 3
+DEAL::5745 3
+DEAL::5746 3
+DEAL::5747 3
+DEAL::5748 3
+DEAL::5749 3
+DEAL::5750 3
+DEAL::5751 3
+DEAL::5752 3
+DEAL::5753 3
+DEAL::5754 3
+DEAL::5755 3
+DEAL::5756 3
+DEAL::5757 3
+DEAL::5758 3
+DEAL::5759 3
+DEAL::5760 3
+DEAL::5761 1
+DEAL::5762 1
+DEAL::5763 1
+DEAL::5764 1
+DEAL::5765 1
+DEAL::5766 1
+DEAL::5767 1
+DEAL::5768 1
+DEAL::5769 1
+DEAL::5770 1
+DEAL::5771 1
+DEAL::5772 1
+DEAL::5773 1
+DEAL::5774 1
+DEAL::5775 1
+DEAL::5776 1
+DEAL::5777 1
+DEAL::5778 1
+DEAL::5779 1
+DEAL::5780 1
+DEAL::5781 1
+DEAL::5782 1
+DEAL::5783 1
+DEAL::5784 1
+DEAL::5785 1
+DEAL::5786 1
+DEAL::5787 1
+DEAL::5788 1
+DEAL::5789 1
+DEAL::5790 1
+DEAL::5791 1
+DEAL::5792 1
+DEAL::5793 1
+DEAL::5794 1
+DEAL::5795 1
+DEAL::5796 1
+DEAL::5797 1
+DEAL::5798 1
+DEAL::5799 1
+DEAL::5800 2
+DEAL::5801 2
+DEAL::5802 2
+DEAL::5803 2
+DEAL::5804 2
+DEAL::5805 2
+DEAL::5806 2
+DEAL::5807 2
+DEAL::5808 2
+DEAL::5809 2
+DEAL::5810 2
+DEAL::5811 2
+DEAL::5812 2
+DEAL::5813 2
+DEAL::5814 2
+DEAL::5815 2
+DEAL::5816 2
+DEAL::5817 2
+DEAL::5818 2
+DEAL::5819 2
+DEAL::5820 2
 DEAL::5821 2
 DEAL::5822 2
 DEAL::5823 2
@@ -7379,104 +7379,104 @@ DEAL::5838 2
 DEAL::5839 2
 DEAL::5840 2
 DEAL::5841 2
-DEAL::5842 3
-DEAL::5843 3
-DEAL::5844 3
-DEAL::5845 3
-DEAL::5846 3
-DEAL::5847 3
-DEAL::5848 3
-DEAL::5849 3
-DEAL::5850 3
-DEAL::5851 3
-DEAL::5852 3
-DEAL::5853 3
-DEAL::5854 3
-DEAL::5855 3
-DEAL::5856 3
-DEAL::5857 3
-DEAL::5858 3
-DEAL::5859 3
-DEAL::5860 3
-DEAL::5861 3
-DEAL::5862 3
-DEAL::5863 2
-DEAL::5864 2
-DEAL::5865 2
-DEAL::5866 2
-DEAL::5867 2
-DEAL::5868 2
-DEAL::5869 2
-DEAL::5870 2
-DEAL::5871 2
-DEAL::5872 2
-DEAL::5873 2
-DEAL::5874 2
-DEAL::5875 2
-DEAL::5876 2
-DEAL::5877 2
-DEAL::5878 2
-DEAL::5879 2
-DEAL::5880 2
-DEAL::5881 2
-DEAL::5882 2
-DEAL::5883 2
-DEAL::5884 3
-DEAL::5885 3
-DEAL::5886 3
-DEAL::5887 3
-DEAL::5888 3
-DEAL::5889 3
-DEAL::5890 3
-DEAL::5891 3
-DEAL::5892 3
-DEAL::5893 3
-DEAL::5894 3
-DEAL::5895 3
-DEAL::5896 3
-DEAL::5897 3
-DEAL::5898 3
-DEAL::5899 3
-DEAL::5900 3
-DEAL::5901 3
-DEAL::5902 3
-DEAL::5903 3
-DEAL::5904 3
-DEAL::5905 3
-DEAL::5906 3
-DEAL::5907 3
-DEAL::5908 3
-DEAL::5909 3
-DEAL::5910 3
-DEAL::5911 3
-DEAL::5912 3
-DEAL::5913 3
-DEAL::5914 3
-DEAL::5915 3
-DEAL::5916 3
-DEAL::5917 3
-DEAL::5918 3
-DEAL::5919 3
-DEAL::5920 3
-DEAL::5921 3
-DEAL::5922 3
-DEAL::5923 3
-DEAL::5924 3
-DEAL::5925 3
-DEAL::5926 3
-DEAL::5927 3
-DEAL::5928 3
-DEAL::5929 3
-DEAL::5930 3
-DEAL::5931 3
-DEAL::5932 3
-DEAL::5933 3
-DEAL::5934 3
-DEAL::5935 3
-DEAL::5936 3
-DEAL::5937 3
-DEAL::5938 3
-DEAL::5939 3
+DEAL::5842 4
+DEAL::5843 4
+DEAL::5844 4
+DEAL::5845 4
+DEAL::5846 4
+DEAL::5847 4
+DEAL::5848 4
+DEAL::5849 4
+DEAL::5850 4
+DEAL::5851 4
+DEAL::5852 4
+DEAL::5853 4
+DEAL::5854 4
+DEAL::5855 4
+DEAL::5856 4
+DEAL::5857 4
+DEAL::5858 4
+DEAL::5859 4
+DEAL::5860 4
+DEAL::5861 4
+DEAL::5862 4
+DEAL::5863 0
+DEAL::5864 0
+DEAL::5865 0
+DEAL::5866 0
+DEAL::5867 0
+DEAL::5868 0
+DEAL::5869 0
+DEAL::5870 0
+DEAL::5871 0
+DEAL::5872 0
+DEAL::5873 0
+DEAL::5874 0
+DEAL::5875 0
+DEAL::5876 0
+DEAL::5877 0
+DEAL::5878 0
+DEAL::5879 0
+DEAL::5880 0
+DEAL::5881 0
+DEAL::5882 0
+DEAL::5883 0
+DEAL::5884 1
+DEAL::5885 1
+DEAL::5886 1
+DEAL::5887 1
+DEAL::5888 1
+DEAL::5889 1
+DEAL::5890 1
+DEAL::5891 1
+DEAL::5892 1
+DEAL::5893 1
+DEAL::5894 1
+DEAL::5895 1
+DEAL::5896 1
+DEAL::5897 1
+DEAL::5898 1
+DEAL::5899 1
+DEAL::5900 1
+DEAL::5901 1
+DEAL::5902 1
+DEAL::5903 1
+DEAL::5904 1
+DEAL::5905 1
+DEAL::5906 1
+DEAL::5907 1
+DEAL::5908 1
+DEAL::5909 1
+DEAL::5910 1
+DEAL::5911 1
+DEAL::5912 1
+DEAL::5913 1
+DEAL::5914 1
+DEAL::5915 1
+DEAL::5916 1
+DEAL::5917 1
+DEAL::5918 1
+DEAL::5919 1
+DEAL::5920 1
+DEAL::5921 1
+DEAL::5922 1
+DEAL::5923 1
+DEAL::5924 1
+DEAL::5925 1
+DEAL::5926 1
+DEAL::5927 1
+DEAL::5928 1
+DEAL::5929 1
+DEAL::5930 1
+DEAL::5931 1
+DEAL::5932 1
+DEAL::5933 1
+DEAL::5934 1
+DEAL::5935 1
+DEAL::5936 1
+DEAL::5937 1
+DEAL::5938 1
+DEAL::5939 1
 DEAL::5940 4
 DEAL::5941 4
 DEAL::5942 4
@@ -7498,123 +7498,123 @@ DEAL::5957 4
 DEAL::5958 4
 DEAL::5959 4
 DEAL::5960 4
-DEAL::5961 3
-DEAL::5962 3
-DEAL::5963 3
-DEAL::5964 3
-DEAL::5965 3
-DEAL::5966 3
-DEAL::5967 3
-DEAL::5968 3
-DEAL::5969 3
-DEAL::5970 3
-DEAL::5971 3
-DEAL::5972 3
-DEAL::5973 3
-DEAL::5974 3
-DEAL::5975 3
-DEAL::5976 3
-DEAL::5977 3
-DEAL::5978 3
-DEAL::5979 3
-DEAL::5980 3
-DEAL::5981 3
-DEAL::5982 3
-DEAL::5983 3
-DEAL::5984 3
-DEAL::5985 3
-DEAL::5986 3
-DEAL::5987 3
-DEAL::5988 3
-DEAL::5989 3
-DEAL::5990 3
-DEAL::5991 3
-DEAL::5992 3
-DEAL::5993 3
-DEAL::5994 3
-DEAL::5995 3
-DEAL::5996 3
-DEAL::5997 3
-DEAL::5998 3
-DEAL::5999 3
-DEAL::6000 3
-DEAL::6001 3
-DEAL::6002 3
-DEAL::6003 0
-DEAL::6004 0
-DEAL::6005 0
-DEAL::6006 0
-DEAL::6007 0
-DEAL::6008 0
-DEAL::6009 0
-DEAL::6010 0
-DEAL::6011 0
-DEAL::6012 0
-DEAL::6013 0
-DEAL::6014 0
-DEAL::6015 0
-DEAL::6016 0
-DEAL::6017 0
-DEAL::6018 0
-DEAL::6019 0
-DEAL::6020 0
-DEAL::6021 0
-DEAL::6022 0
-DEAL::6023 0
-DEAL::6024 3
-DEAL::6025 3
-DEAL::6026 3
-DEAL::6027 3
-DEAL::6028 3
-DEAL::6029 3
-DEAL::6030 3
-DEAL::6031 3
-DEAL::6032 3
-DEAL::6033 3
-DEAL::6034 3
-DEAL::6035 3
-DEAL::6036 3
-DEAL::6037 3
-DEAL::6038 3
-DEAL::6039 3
-DEAL::6040 3
-DEAL::6041 3
-DEAL::6042 3
-DEAL::6043 3
-DEAL::6044 3
+DEAL::5961 1
+DEAL::5962 1
+DEAL::5963 1
+DEAL::5964 1
+DEAL::5965 1
+DEAL::5966 1
+DEAL::5967 1
+DEAL::5968 1
+DEAL::5969 1
+DEAL::5970 1
+DEAL::5971 1
+DEAL::5972 1
+DEAL::5973 1
+DEAL::5974 1
+DEAL::5975 1
+DEAL::5976 1
+DEAL::5977 1
+DEAL::5978 1
+DEAL::5979 1
+DEAL::5980 1
+DEAL::5981 1
+DEAL::5982 1
+DEAL::5983 1
+DEAL::5984 1
+DEAL::5985 1
+DEAL::5986 1
+DEAL::5987 1
+DEAL::5988 1
+DEAL::5989 1
+DEAL::5990 1
+DEAL::5991 1
+DEAL::5992 1
+DEAL::5993 1
+DEAL::5994 1
+DEAL::5995 1
+DEAL::5996 1
+DEAL::5997 1
+DEAL::5998 1
+DEAL::5999 1
+DEAL::6000 1
+DEAL::6001 1
+DEAL::6002 1
+DEAL::6003 3
+DEAL::6004 3
+DEAL::6005 3
+DEAL::6006 3
+DEAL::6007 3
+DEAL::6008 3
+DEAL::6009 3
+DEAL::6010 3
+DEAL::6011 3
+DEAL::6012 3
+DEAL::6013 3
+DEAL::6014 3
+DEAL::6015 3
+DEAL::6016 3
+DEAL::6017 3
+DEAL::6018 3
+DEAL::6019 3
+DEAL::6020 3
+DEAL::6021 3
+DEAL::6022 3
+DEAL::6023 3
+DEAL::6024 1
+DEAL::6025 1
+DEAL::6026 1
+DEAL::6027 1
+DEAL::6028 1
+DEAL::6029 1
+DEAL::6030 1
+DEAL::6031 1
+DEAL::6032 1
+DEAL::6033 1
+DEAL::6034 1
+DEAL::6035 1
+DEAL::6036 1
+DEAL::6037 1
+DEAL::6038 1
+DEAL::6039 1
+DEAL::6040 1
+DEAL::6041 1
+DEAL::6042 1
+DEAL::6043 1
+DEAL::6044 1
 DEAL::3D
 DEAL::Cell association:
 DEAL::0 4.00000
 DEAL::1 2.00000
-DEAL::2 0
-DEAL::3 2.00000
-DEAL::4 3.00000
-DEAL::5 2.00000
-DEAL::6 3.00000
-DEAL::7 1.00000
+DEAL::2 2.00000
+DEAL::3 1.00000
+DEAL::4 1.00000
+DEAL::5 1.00000
+DEAL::6 1.00000
+DEAL::7 4.00000
 DEAL::8 2.00000
-DEAL::9 4.00000
-DEAL::10 4.00000
+DEAL::9 2.00000
+DEAL::10 2.00000
 DEAL::11 2.00000
-DEAL::12 4.00000
-DEAL::13 4.00000
-DEAL::14 2.00000
-DEAL::15 2.00000
-DEAL::16 2.00000
-DEAL::17 2.00000
-DEAL::18 2.00000
-DEAL::19 2.00000
-DEAL::20 3.00000
-DEAL::21 4.00000
-DEAL::22 4.00000
-DEAL::23 3.00000
-DEAL::24 3.00000
-DEAL::25 3.00000
-DEAL::26 1.00000
-DEAL::27 1.00000
-DEAL::28 1.00000
-DEAL::29 1.00000
-DEAL::30 1.00000
+DEAL::12 2.00000
+DEAL::13 2.00000
+DEAL::14 1.00000
+DEAL::15 1.00000
+DEAL::16 1.00000
+DEAL::17 1.00000
+DEAL::18 1.00000
+DEAL::19 1.00000
+DEAL::20 0
+DEAL::21 0
+DEAL::22 0
+DEAL::23 1.00000
+DEAL::24 1.00000
+DEAL::25 0
+DEAL::26 3.00000
+DEAL::27 3.00000
+DEAL::28 3.00000
+DEAL::29 3.00000
+DEAL::30 3.00000
 DEAL::31 2.00000
 DEAL::32 2.00000
 DEAL::33 2.00000
@@ -7622,68 +7622,68 @@ DEAL::34 2.00000
 DEAL::35 2.00000
 DEAL::36 2.00000
 DEAL::37 2.00000
-DEAL::38 4.00000
-DEAL::39 4.00000
-DEAL::40 4.00000
+DEAL::38 2.00000
+DEAL::39 0
+DEAL::40 2.00000
 DEAL::41 4.00000
-DEAL::42 4.00000
-DEAL::43 4.00000
-DEAL::44 4.00000
+DEAL::42 2.00000
+DEAL::43 0
+DEAL::44 2.00000
 DEAL::45 2.00000
 DEAL::46 2.00000
 DEAL::47 2.00000
 DEAL::48 2.00000
 DEAL::49 2.00000
-DEAL::50 4.00000
-DEAL::51 4.00000
-DEAL::52 4.00000
-DEAL::53 4.00000
-DEAL::54 3.00000
-DEAL::55 3.00000
-DEAL::56 4.00000
-DEAL::57 4.00000
-DEAL::58 3.00000
-DEAL::59 3.00000
-DEAL::60 3.00000
-DEAL::61 3.00000
-DEAL::62 3.00000
-DEAL::63 3.00000
-DEAL::64 3.00000
-DEAL::65 3.00000
-DEAL::66 3.00000
-DEAL::67 3.00000
-DEAL::68 3.00000
-DEAL::69 3.00000
-DEAL::70 4.00000
-DEAL::71 3.00000
-DEAL::72 3.00000
-DEAL::73 3.00000
-DEAL::74 4.00000
-DEAL::75 4.00000
-DEAL::76 4.00000
-DEAL::77 4.00000
-DEAL::78 4.00000
-DEAL::79 4.00000
-DEAL::80 4.00000
-DEAL::81 4.00000
+DEAL::50 0
+DEAL::51 0
+DEAL::52 0
+DEAL::53 0
+DEAL::54 0
+DEAL::55 0
+DEAL::56 0
+DEAL::57 0
+DEAL::58 0
+DEAL::59 0
+DEAL::60 1.00000
+DEAL::61 1.00000
+DEAL::62 1.00000
+DEAL::63 0
+DEAL::64 0
+DEAL::65 0
+DEAL::66 0
+DEAL::67 0
+DEAL::68 0
+DEAL::69 0
+DEAL::70 0
+DEAL::71 0
+DEAL::72 0
+DEAL::73 0
+DEAL::74 2.00000
+DEAL::75 3.00000
+DEAL::76 3.00000
+DEAL::77 2.00000
+DEAL::78 2.00000
+DEAL::79 2.00000
+DEAL::80 3.00000
+DEAL::81 3.00000
 DEAL::82 4.00000
-DEAL::83 4.00000
-DEAL::84 4.00000
-DEAL::85 4.00000
-DEAL::86 1.00000
-DEAL::87 1.00000
-DEAL::88 0
-DEAL::89 0
-DEAL::90 0
-DEAL::91 1.00000
-DEAL::92 0
-DEAL::93 0
-DEAL::94 0
-DEAL::95 1.00000
-DEAL::96 1.00000
-DEAL::97 1.00000
-DEAL::98 1.00000
-DEAL::99 1.00000
+DEAL::83 3.00000
+DEAL::84 3.00000
+DEAL::85 3.00000
+DEAL::86 3.00000
+DEAL::87 3.00000
+DEAL::88 3.00000
+DEAL::89 3.00000
+DEAL::90 3.00000
+DEAL::91 3.00000
+DEAL::92 3.00000
+DEAL::93 3.00000
+DEAL::94 3.00000
+DEAL::95 3.00000
+DEAL::96 3.00000
+DEAL::97 3.00000
+DEAL::98 3.00000
+DEAL::99 3.00000
 DEAL::100 4.00000
 DEAL::101 4.00000
 DEAL::102 4.00000
@@ -7692,77 +7692,77 @@ DEAL::104 4.00000
 DEAL::105 4.00000
 DEAL::106 4.00000
 DEAL::107 2.00000
-DEAL::108 2.00000
+DEAL::108 1.00000
 DEAL::109 2.00000
 DEAL::110 2.00000
 DEAL::111 2.00000
 DEAL::112 2.00000
 DEAL::113 2.00000
 DEAL::114 2.00000
-DEAL::115 2.00000
-DEAL::116 2.00000
-DEAL::117 2.00000
-DEAL::118 2.00000
-DEAL::119 2.00000
+DEAL::115 1.00000
+DEAL::116 1.00000
+DEAL::117 1.00000
+DEAL::118 1.00000
+DEAL::119 1.00000
 DEAL::120 2.00000
-DEAL::121 2.00000
-DEAL::122 2.00000
-DEAL::123 2.00000
-DEAL::124 3.00000
-DEAL::125 2.00000
-DEAL::126 2.00000
-DEAL::127 2.00000
-DEAL::128 2.00000
-DEAL::129 2.00000
-DEAL::130 3.00000
-DEAL::131 3.00000
-DEAL::132 2.00000
-DEAL::133 2.00000
-DEAL::134 0
-DEAL::135 2.00000
-DEAL::136 3.00000
-DEAL::137 3.00000
-DEAL::138 3.00000
-DEAL::139 3.00000
-DEAL::140 3.00000
-DEAL::141 3.00000
-DEAL::142 3.00000
-DEAL::143 0
-DEAL::144 0
-DEAL::145 0
-DEAL::146 0
-DEAL::147 0
-DEAL::148 0
-DEAL::149 0
-DEAL::150 0
-DEAL::151 0
-DEAL::152 1.00000
-DEAL::153 0
-DEAL::154 0
-DEAL::155 0
-DEAL::156 0
-DEAL::157 0
-DEAL::158 0
-DEAL::159 0
-DEAL::160 0
-DEAL::161 0
-DEAL::162 0
-DEAL::163 0
-DEAL::164 1.00000
-DEAL::165 1.00000
-DEAL::166 1.00000
-DEAL::167 1.00000
-DEAL::168 1.00000
-DEAL::169 1.00000
-DEAL::170 1.00000
-DEAL::171 2.00000
-DEAL::172 4.00000
-DEAL::173 2.00000
-DEAL::174 4.00000
-DEAL::175 2.00000
-DEAL::176 2.00000
-DEAL::177 2.00000
-DEAL::178 2.00000
+DEAL::121 1.00000
+DEAL::122 1.00000
+DEAL::123 1.00000
+DEAL::124 1.00000
+DEAL::125 1.00000
+DEAL::126 1.00000
+DEAL::127 1.00000
+DEAL::128 1.00000
+DEAL::129 1.00000
+DEAL::130 1.00000
+DEAL::131 1.00000
+DEAL::132 1.00000
+DEAL::133 1.00000
+DEAL::134 1.00000
+DEAL::135 1.00000
+DEAL::136 0
+DEAL::137 0
+DEAL::138 1.00000
+DEAL::139 1.00000
+DEAL::140 1.00000
+DEAL::141 1.00000
+DEAL::142 1.00000
+DEAL::143 4.00000
+DEAL::144 4.00000
+DEAL::145 3.00000
+DEAL::146 3.00000
+DEAL::147 4.00000
+DEAL::148 4.00000
+DEAL::149 4.00000
+DEAL::150 3.00000
+DEAL::151 3.00000
+DEAL::152 3.00000
+DEAL::153 3.00000
+DEAL::154 3.00000
+DEAL::155 3.00000
+DEAL::156 3.00000
+DEAL::157 3.00000
+DEAL::158 3.00000
+DEAL::159 3.00000
+DEAL::160 3.00000
+DEAL::161 4.00000
+DEAL::162 4.00000
+DEAL::163 4.00000
+DEAL::164 4.00000
+DEAL::165 4.00000
+DEAL::166 4.00000
+DEAL::167 4.00000
+DEAL::168 4.00000
+DEAL::169 4.00000
+DEAL::170 4.00000
+DEAL::171 1.00000
+DEAL::172 0
+DEAL::173 1.00000
+DEAL::174 0
+DEAL::175 1.00000
+DEAL::176 1.00000
+DEAL::177 1.00000
+DEAL::178 0
 DEAL::179 2.00000
 DEAL::180 2.00000
 DEAL::181 2.00000
@@ -7770,127 +7770,127 @@ DEAL::182 2.00000
 DEAL::183 2.00000
 DEAL::184 2.00000
 DEAL::185 2.00000
-DEAL::186 0
-DEAL::187 2.00000
-DEAL::188 2.00000
+DEAL::186 2.00000
+DEAL::187 1.00000
+DEAL::188 1.00000
 DEAL::189 2.00000
 DEAL::190 2.00000
-DEAL::191 2.00000
-DEAL::192 2.00000
-DEAL::193 0
-DEAL::194 0
-DEAL::195 4.00000
-DEAL::196 4.00000
-DEAL::197 4.00000
-DEAL::198 4.00000
-DEAL::199 3.00000
-DEAL::200 3.00000
-DEAL::201 4.00000
-DEAL::202 3.00000
-DEAL::203 4.00000
-DEAL::204 4.00000
-DEAL::205 4.00000
-DEAL::206 4.00000
-DEAL::207 3.00000
-DEAL::208 3.00000
-DEAL::209 3.00000
-DEAL::210 3.00000
-DEAL::211 4.00000
-DEAL::212 4.00000
+DEAL::191 1.00000
+DEAL::192 1.00000
+DEAL::193 2.00000
+DEAL::194 2.00000
+DEAL::195 0
+DEAL::196 0
+DEAL::197 0
+DEAL::198 0
+DEAL::199 1.00000
+DEAL::200 0
+DEAL::201 0
+DEAL::202 0
+DEAL::203 0
+DEAL::204 0
+DEAL::205 0
+DEAL::206 0
+DEAL::207 0
+DEAL::208 0
+DEAL::209 0
+DEAL::210 0
+DEAL::211 0
+DEAL::212 0
 DEAL::213 4.00000
-DEAL::214 4.00000
-DEAL::215 4.00000
-DEAL::216 4.00000
-DEAL::217 4.00000
-DEAL::218 4.00000
-DEAL::219 1.00000
-DEAL::220 1.00000
-DEAL::221 1.00000
-DEAL::222 1.00000
-DEAL::223 1.00000
-DEAL::224 1.00000
-DEAL::225 1.00000
-DEAL::226 1.00000
-DEAL::227 1.00000
-DEAL::228 1.00000
-DEAL::229 1.00000
-DEAL::230 1.00000
-DEAL::231 1.00000
-DEAL::232 1.00000
-DEAL::233 1.00000
-DEAL::234 1.00000
+DEAL::214 0
+DEAL::215 0
+DEAL::216 0
+DEAL::217 0
+DEAL::218 0
+DEAL::219 3.00000
+DEAL::220 3.00000
+DEAL::221 3.00000
+DEAL::222 3.00000
+DEAL::223 3.00000
+DEAL::224 3.00000
+DEAL::225 3.00000
+DEAL::226 3.00000
+DEAL::227 3.00000
+DEAL::228 3.00000
+DEAL::229 3.00000
+DEAL::230 3.00000
+DEAL::231 3.00000
+DEAL::232 3.00000
+DEAL::233 3.00000
+DEAL::234 3.00000
 DEAL::235 2.00000
-DEAL::236 0
-DEAL::237 0
-DEAL::238 0
-DEAL::239 0
-DEAL::240 0
-DEAL::241 0
-DEAL::242 0
+DEAL::236 2.00000
+DEAL::237 2.00000
+DEAL::238 2.00000
+DEAL::239 2.00000
+DEAL::240 2.00000
+DEAL::241 2.00000
+DEAL::242 2.00000
 DEAL::243 4.00000
 DEAL::244 4.00000
 DEAL::245 4.00000
 DEAL::246 4.00000
-DEAL::247 4.00000
-DEAL::248 4.00000
-DEAL::249 4.00000
+DEAL::247 3.00000
+DEAL::248 0
+DEAL::249 3.00000
 DEAL::250 4.00000
-DEAL::251 4.00000
-DEAL::252 4.00000
-DEAL::253 4.00000
-DEAL::254 4.00000
-DEAL::255 4.00000
-DEAL::256 4.00000
-DEAL::257 4.00000
-DEAL::258 4.00000
+DEAL::251 0
+DEAL::252 0
+DEAL::253 0
+DEAL::254 0
+DEAL::255 0
+DEAL::256 0
+DEAL::257 0
+DEAL::258 0
 DEAL::259 4.00000
 DEAL::260 4.00000
-DEAL::261 1.00000
+DEAL::261 4.00000
 DEAL::262 4.00000
-DEAL::263 1.00000
+DEAL::263 4.00000
 DEAL::264 4.00000
-DEAL::265 1.00000
+DEAL::265 4.00000
 DEAL::266 4.00000
-DEAL::267 4.00000
-DEAL::268 4.00000
-DEAL::269 1.00000
+DEAL::267 3.00000
+DEAL::268 0
+DEAL::269 3.00000
 DEAL::270 4.00000
-DEAL::271 0
-DEAL::272 3.00000
-DEAL::273 1.00000
-DEAL::274 1.00000
-DEAL::275 4.00000
-DEAL::276 4.00000
-DEAL::277 4.00000
-DEAL::278 4.00000
-DEAL::279 3.00000
-DEAL::280 4.00000
+DEAL::271 4.00000
+DEAL::272 0
+DEAL::273 3.00000
+DEAL::274 4.00000
+DEAL::275 0
+DEAL::276 0
+DEAL::277 0
+DEAL::278 0
+DEAL::279 0
+DEAL::280 0
 DEAL::281 4.00000
 DEAL::282 4.00000
-DEAL::283 1.00000
-DEAL::284 1.00000
-DEAL::285 1.00000
-DEAL::286 1.00000
-DEAL::287 1.00000
-DEAL::288 1.00000
-DEAL::289 1.00000
-DEAL::290 1.00000
+DEAL::283 3.00000
+DEAL::284 4.00000
+DEAL::285 3.00000
+DEAL::286 4.00000
+DEAL::287 3.00000
+DEAL::288 4.00000
+DEAL::289 3.00000
+DEAL::290 4.00000
 DEAL::291 2.00000
-DEAL::292 0
-DEAL::293 0
-DEAL::294 0
+DEAL::292 2.00000
+DEAL::293 2.00000
+DEAL::294 2.00000
 DEAL::295 2.00000
-DEAL::296 0
-DEAL::297 0
-DEAL::298 0
-DEAL::299 0
-DEAL::300 0
-DEAL::301 0
-DEAL::302 0
-DEAL::303 0
-DEAL::304 0
-DEAL::305 0
-DEAL::306 0
+DEAL::296 2.00000
+DEAL::297 2.00000
+DEAL::298 2.00000
+DEAL::299 2.00000
+DEAL::300 1.00000
+DEAL::301 2.00000
+DEAL::302 2.00000
+DEAL::303 2.00000
+DEAL::304 2.00000
+DEAL::305 2.00000
+DEAL::306 2.00000
 DEAL::307 2.00000
 DEAL::308 2.00000
 DEAL::309 2.00000
@@ -7899,195 +7899,195 @@ DEAL::311 2.00000
 DEAL::312 2.00000
 DEAL::313 2.00000
 DEAL::314 2.00000
-DEAL::315 0
+DEAL::315 2.00000
 DEAL::316 2.00000
-DEAL::317 0
-DEAL::318 0
-DEAL::319 0
+DEAL::317 2.00000
+DEAL::318 2.00000
+DEAL::319 2.00000
 DEAL::320 2.00000
-DEAL::321 0
-DEAL::322 0
-DEAL::323 3.00000
-DEAL::324 3.00000
-DEAL::325 3.00000
-DEAL::326 3.00000
-DEAL::327 3.00000
-DEAL::328 3.00000
-DEAL::329 3.00000
-DEAL::330 3.00000
-DEAL::331 0
-DEAL::332 0
-DEAL::333 0
-DEAL::334 0
-DEAL::335 0
-DEAL::336 0
-DEAL::337 0
-DEAL::338 0
-DEAL::339 0
-DEAL::340 0
-DEAL::341 0
-DEAL::342 0
-DEAL::343 0
-DEAL::344 0
-DEAL::345 0
-DEAL::346 0
-DEAL::347 0
-DEAL::348 0
-DEAL::349 0
-DEAL::350 0
-DEAL::351 0
-DEAL::352 0
-DEAL::353 0
-DEAL::354 0
-DEAL::355 0
-DEAL::356 0
-DEAL::357 0
-DEAL::358 0
-DEAL::359 0
-DEAL::360 0
-DEAL::361 0
-DEAL::362 0
-DEAL::363 0
-DEAL::364 0
-DEAL::365 0
-DEAL::366 0
-DEAL::367 0
-DEAL::368 0
-DEAL::369 0
-DEAL::370 0
-DEAL::371 0
-DEAL::372 0
-DEAL::373 0
-DEAL::374 1.00000
-DEAL::375 0
-DEAL::376 0
-DEAL::377 0
-DEAL::378 1.00000
-DEAL::379 3.00000
-DEAL::380 3.00000
-DEAL::381 1.00000
+DEAL::321 2.00000
+DEAL::322 2.00000
+DEAL::323 1.00000
+DEAL::324 1.00000
+DEAL::325 0
+DEAL::326 0
+DEAL::327 1.00000
+DEAL::328 1.00000
+DEAL::329 1.00000
+DEAL::330 1.00000
+DEAL::331 2.00000
+DEAL::332 2.00000
+DEAL::333 2.00000
+DEAL::334 2.00000
+DEAL::335 2.00000
+DEAL::336 2.00000
+DEAL::337 2.00000
+DEAL::338 3.00000
+DEAL::339 2.00000
+DEAL::340 2.00000
+DEAL::341 2.00000
+DEAL::342 2.00000
+DEAL::343 2.00000
+DEAL::344 2.00000
+DEAL::345 2.00000
+DEAL::346 2.00000
+DEAL::347 4.00000
+DEAL::348 4.00000
+DEAL::349 4.00000
+DEAL::350 4.00000
+DEAL::351 2.00000
+DEAL::352 4.00000
+DEAL::353 4.00000
+DEAL::354 4.00000
+DEAL::355 4.00000
+DEAL::356 4.00000
+DEAL::357 4.00000
+DEAL::358 4.00000
+DEAL::359 4.00000
+DEAL::360 4.00000
+DEAL::361 4.00000
+DEAL::362 4.00000
+DEAL::363 4.00000
+DEAL::364 4.00000
+DEAL::365 4.00000
+DEAL::366 4.00000
+DEAL::367 4.00000
+DEAL::368 4.00000
+DEAL::369 4.00000
+DEAL::370 4.00000
+DEAL::371 4.00000
+DEAL::372 1.00000
+DEAL::373 4.00000
+DEAL::374 4.00000
+DEAL::375 4.00000
+DEAL::376 4.00000
+DEAL::377 4.00000
+DEAL::378 4.00000
+DEAL::379 1.00000
+DEAL::380 1.00000
+DEAL::381 4.00000
 DEAL::382 4.00000
-DEAL::383 3.00000
-DEAL::384 3.00000
-DEAL::385 1.00000
+DEAL::383 1.00000
+DEAL::384 1.00000
+DEAL::385 4.00000
 DEAL::386 4.00000
-DEAL::387 1.00000
+DEAL::387 4.00000
 DEAL::388 4.00000
-DEAL::389 1.00000
+DEAL::389 4.00000
 DEAL::390 4.00000
-DEAL::391 1.00000
-DEAL::392 1.00000
-DEAL::393 1.00000
-DEAL::394 1.00000
+DEAL::391 4.00000
+DEAL::392 4.00000
+DEAL::393 4.00000
+DEAL::394 4.00000
 DEAL::395 1.00000
-DEAL::396 3.00000
-DEAL::397 1.00000
+DEAL::396 1.00000
+DEAL::397 4.00000
 DEAL::398 4.00000
 DEAL::399 1.00000
-DEAL::400 3.00000
-DEAL::401 1.00000
+DEAL::400 1.00000
+DEAL::401 4.00000
 DEAL::402 4.00000
-DEAL::403 1.00000
-DEAL::404 1.00000
-DEAL::405 1.00000
-DEAL::406 1.00000
-DEAL::407 1.00000
-DEAL::408 1.00000
-DEAL::409 1.00000
-DEAL::410 1.00000
-DEAL::411 1.00000
-DEAL::412 1.00000
-DEAL::413 1.00000
-DEAL::414 1.00000
-DEAL::415 1.00000
-DEAL::416 1.00000
-DEAL::417 1.00000
-DEAL::418 1.00000
-DEAL::419 4.00000
-DEAL::420 4.00000
-DEAL::421 4.00000
-DEAL::422 4.00000
-DEAL::423 4.00000
-DEAL::424 4.00000
-DEAL::425 4.00000
-DEAL::426 4.00000
-DEAL::427 2.00000
-DEAL::428 2.00000
-DEAL::429 2.00000
-DEAL::430 2.00000
-DEAL::431 2.00000
-DEAL::432 2.00000
-DEAL::433 2.00000
-DEAL::434 3.00000
-DEAL::435 3.00000
-DEAL::436 3.00000
-DEAL::437 3.00000
-DEAL::438 3.00000
-DEAL::439 3.00000
-DEAL::440 3.00000
-DEAL::441 1.00000
-DEAL::442 1.00000
-DEAL::443 1.00000
-DEAL::444 1.00000
-DEAL::445 1.00000
-DEAL::446 1.00000
-DEAL::447 1.00000
-DEAL::448 4.00000
-DEAL::449 4.00000
-DEAL::450 4.00000
-DEAL::451 4.00000
-DEAL::452 4.00000
-DEAL::453 4.00000
-DEAL::454 4.00000
-DEAL::455 4.00000
-DEAL::456 2.00000
-DEAL::457 2.00000
-DEAL::458 2.00000
-DEAL::459 2.00000
-DEAL::460 2.00000
-DEAL::461 2.00000
-DEAL::462 2.00000
-DEAL::463 2.00000
-DEAL::464 3.00000
-DEAL::465 3.00000
-DEAL::466 4.00000
-DEAL::467 4.00000
-DEAL::468 3.00000
-DEAL::469 3.00000
-DEAL::470 3.00000
-DEAL::471 3.00000
-DEAL::472 1.00000
-DEAL::473 1.00000
-DEAL::474 1.00000
-DEAL::475 1.00000
-DEAL::476 1.00000
-DEAL::477 1.00000
-DEAL::478 1.00000
-DEAL::479 1.00000
-DEAL::480 1.00000
-DEAL::481 1.00000
-DEAL::482 1.00000
-DEAL::483 1.00000
-DEAL::484 1.00000
-DEAL::485 1.00000
-DEAL::486 1.00000
-DEAL::487 1.00000
+DEAL::403 4.00000
+DEAL::404 4.00000
+DEAL::405 4.00000
+DEAL::406 4.00000
+DEAL::407 4.00000
+DEAL::408 4.00000
+DEAL::409 4.00000
+DEAL::410 4.00000
+DEAL::411 4.00000
+DEAL::412 4.00000
+DEAL::413 4.00000
+DEAL::414 4.00000
+DEAL::415 4.00000
+DEAL::416 4.00000
+DEAL::417 4.00000
+DEAL::418 4.00000
+DEAL::419 2.00000
+DEAL::420 2.00000
+DEAL::421 2.00000
+DEAL::422 2.00000
+DEAL::423 2.00000
+DEAL::424 2.00000
+DEAL::425 2.00000
+DEAL::426 2.00000
+DEAL::427 1.00000
+DEAL::428 1.00000
+DEAL::429 1.00000
+DEAL::430 1.00000
+DEAL::431 1.00000
+DEAL::432 1.00000
+DEAL::433 1.00000
+DEAL::434 0
+DEAL::435 0
+DEAL::436 0
+DEAL::437 1.00000
+DEAL::438 0
+DEAL::439 1.00000
+DEAL::440 0
+DEAL::441 3.00000
+DEAL::442 3.00000
+DEAL::443 3.00000
+DEAL::444 3.00000
+DEAL::445 3.00000
+DEAL::446 3.00000
+DEAL::447 3.00000
+DEAL::448 2.00000
+DEAL::449 2.00000
+DEAL::450 2.00000
+DEAL::451 2.00000
+DEAL::452 2.00000
+DEAL::453 2.00000
+DEAL::454 2.00000
+DEAL::455 2.00000
+DEAL::456 1.00000
+DEAL::457 1.00000
+DEAL::458 1.00000
+DEAL::459 1.00000
+DEAL::460 1.00000
+DEAL::461 1.00000
+DEAL::462 1.00000
+DEAL::463 1.00000
+DEAL::464 0
+DEAL::465 0
+DEAL::466 0
+DEAL::467 0
+DEAL::468 0
+DEAL::469 0
+DEAL::470 0
+DEAL::471 0
+DEAL::472 3.00000
+DEAL::473 3.00000
+DEAL::474 3.00000
+DEAL::475 3.00000
+DEAL::476 3.00000
+DEAL::477 3.00000
+DEAL::478 3.00000
+DEAL::479 3.00000
+DEAL::480 3.00000
+DEAL::481 3.00000
+DEAL::482 3.00000
+DEAL::483 3.00000
+DEAL::484 3.00000
+DEAL::485 3.00000
+DEAL::486 3.00000
+DEAL::487 3.00000
 DEAL::488 2.00000
-DEAL::489 2.00000
+DEAL::489 1.00000
 DEAL::490 2.00000
-DEAL::491 2.00000
+DEAL::491 1.00000
 DEAL::492 2.00000
-DEAL::493 2.00000
+DEAL::493 1.00000
 DEAL::494 2.00000
-DEAL::495 2.00000
-DEAL::496 4.00000
-DEAL::497 4.00000
-DEAL::498 4.00000
-DEAL::499 4.00000
-DEAL::500 4.00000
-DEAL::501 4.00000
-DEAL::502 4.00000
-DEAL::503 4.00000
+DEAL::495 1.00000
+DEAL::496 2.00000
+DEAL::497 2.00000
+DEAL::498 2.00000
+DEAL::499 2.00000
+DEAL::500 2.00000
+DEAL::501 2.00000
+DEAL::502 2.00000
+DEAL::503 2.00000
 DEAL::504 2.00000
 DEAL::505 2.00000
 DEAL::506 2.00000
@@ -8097,133 +8097,133 @@ DEAL::509 2.00000
 DEAL::510 2.00000
 DEAL::511 2.00000
 DEAL::512 2.00000
-DEAL::513 2.00000
+DEAL::513 1.00000
 DEAL::514 2.00000
-DEAL::515 2.00000
+DEAL::515 1.00000
 DEAL::516 2.00000
-DEAL::517 2.00000
+DEAL::517 1.00000
 DEAL::518 2.00000
-DEAL::519 2.00000
+DEAL::519 1.00000
 DEAL::520 2.00000
-DEAL::521 2.00000
+DEAL::521 1.00000
 DEAL::522 2.00000
-DEAL::523 2.00000
+DEAL::523 1.00000
 DEAL::524 2.00000
-DEAL::525 2.00000
+DEAL::525 1.00000
 DEAL::526 2.00000
-DEAL::527 2.00000
-DEAL::528 3.00000
-DEAL::529 3.00000
-DEAL::530 3.00000
-DEAL::531 3.00000
-DEAL::532 3.00000
-DEAL::533 3.00000
-DEAL::534 3.00000
-DEAL::535 3.00000
-DEAL::536 3.00000
-DEAL::537 3.00000
-DEAL::538 3.00000
-DEAL::539 3.00000
-DEAL::540 3.00000
-DEAL::541 3.00000
-DEAL::542 3.00000
-DEAL::543 3.00000
-DEAL::544 3.00000
-DEAL::545 3.00000
-DEAL::546 3.00000
-DEAL::547 3.00000
-DEAL::548 3.00000
-DEAL::549 3.00000
-DEAL::550 3.00000
-DEAL::551 3.00000
-DEAL::552 3.00000
-DEAL::553 3.00000
-DEAL::554 3.00000
-DEAL::555 3.00000
-DEAL::556 3.00000
-DEAL::557 3.00000
-DEAL::558 3.00000
-DEAL::559 3.00000
-DEAL::560 3.00000
-DEAL::561 3.00000
-DEAL::562 3.00000
-DEAL::563 3.00000
-DEAL::564 3.00000
-DEAL::565 3.00000
-DEAL::566 3.00000
-DEAL::567 3.00000
-DEAL::568 3.00000
-DEAL::569 3.00000
-DEAL::570 3.00000
-DEAL::571 3.00000
-DEAL::572 3.00000
-DEAL::573 3.00000
-DEAL::574 3.00000
-DEAL::575 3.00000
-DEAL::576 4.00000
-DEAL::577 4.00000
-DEAL::578 4.00000
-DEAL::579 4.00000
-DEAL::580 4.00000
-DEAL::581 4.00000
-DEAL::582 4.00000
-DEAL::583 4.00000
-DEAL::584 3.00000
-DEAL::585 3.00000
-DEAL::586 3.00000
-DEAL::587 3.00000
-DEAL::588 3.00000
-DEAL::589 3.00000
-DEAL::590 3.00000
-DEAL::591 3.00000
-DEAL::592 4.00000
-DEAL::593 4.00000
-DEAL::594 4.00000
-DEAL::595 4.00000
-DEAL::596 4.00000
-DEAL::597 4.00000
-DEAL::598 4.00000
-DEAL::599 4.00000
-DEAL::600 4.00000
-DEAL::601 4.00000
-DEAL::602 1.00000
-DEAL::603 1.00000
-DEAL::604 0
-DEAL::605 0
-DEAL::606 0
-DEAL::607 0
-DEAL::608 0
-DEAL::609 0
-DEAL::610 0
-DEAL::611 0
-DEAL::612 0
-DEAL::613 0
-DEAL::614 0
-DEAL::615 0
-DEAL::616 1.00000
-DEAL::617 1.00000
-DEAL::618 1.00000
-DEAL::619 1.00000
-DEAL::620 1.00000
-DEAL::621 1.00000
-DEAL::622 1.00000
-DEAL::623 1.00000
-DEAL::624 1.00000
-DEAL::625 1.00000
-DEAL::626 1.00000
-DEAL::627 1.00000
-DEAL::628 1.00000
-DEAL::629 1.00000
-DEAL::630 1.00000
-DEAL::631 1.00000
-DEAL::632 1.00000
-DEAL::633 1.00000
-DEAL::634 1.00000
-DEAL::635 1.00000
-DEAL::636 1.00000
-DEAL::637 1.00000
-DEAL::638 1.00000
-DEAL::639 1.00000
+DEAL::527 1.00000
+DEAL::528 1.00000
+DEAL::529 1.00000
+DEAL::530 1.00000
+DEAL::531 1.00000
+DEAL::532 1.00000
+DEAL::533 1.00000
+DEAL::534 1.00000
+DEAL::535 1.00000
+DEAL::536 0
+DEAL::537 0
+DEAL::538 0
+DEAL::539 0
+DEAL::540 0
+DEAL::541 0
+DEAL::542 0
+DEAL::543 0
+DEAL::544 1.00000
+DEAL::545 0
+DEAL::546 1.00000
+DEAL::547 0
+DEAL::548 1.00000
+DEAL::549 1.00000
+DEAL::550 1.00000
+DEAL::551 1.00000
+DEAL::552 0
+DEAL::553 0
+DEAL::554 0
+DEAL::555 0
+DEAL::556 0
+DEAL::557 0
+DEAL::558 0
+DEAL::559 0
+DEAL::560 0
+DEAL::561 0
+DEAL::562 0
+DEAL::563 0
+DEAL::564 0
+DEAL::565 0
+DEAL::566 0
+DEAL::567 0
+DEAL::568 0
+DEAL::569 0
+DEAL::570 0
+DEAL::571 0
+DEAL::572 0
+DEAL::573 0
+DEAL::574 0
+DEAL::575 0
+DEAL::576 0
+DEAL::577 0
+DEAL::578 0
+DEAL::579 0
+DEAL::580 0
+DEAL::581 0
+DEAL::582 0
+DEAL::583 0
+DEAL::584 0
+DEAL::585 0
+DEAL::586 0
+DEAL::587 0
+DEAL::588 0
+DEAL::589 0
+DEAL::590 0
+DEAL::591 0
+DEAL::592 3.00000
+DEAL::593 3.00000
+DEAL::594 3.00000
+DEAL::595 3.00000
+DEAL::596 3.00000
+DEAL::597 3.00000
+DEAL::598 3.00000
+DEAL::599 3.00000
+DEAL::600 3.00000
+DEAL::601 3.00000
+DEAL::602 3.00000
+DEAL::603 3.00000
+DEAL::604 3.00000
+DEAL::605 3.00000
+DEAL::606 3.00000
+DEAL::607 3.00000
+DEAL::608 4.00000
+DEAL::609 4.00000
+DEAL::610 3.00000
+DEAL::611 3.00000
+DEAL::612 4.00000
+DEAL::613 4.00000
+DEAL::614 3.00000
+DEAL::615 3.00000
+DEAL::616 3.00000
+DEAL::617 3.00000
+DEAL::618 3.00000
+DEAL::619 3.00000
+DEAL::620 3.00000
+DEAL::621 3.00000
+DEAL::622 3.00000
+DEAL::623 3.00000
+DEAL::624 3.00000
+DEAL::625 3.00000
+DEAL::626 3.00000
+DEAL::627 3.00000
+DEAL::628 3.00000
+DEAL::629 3.00000
+DEAL::630 3.00000
+DEAL::631 3.00000
+DEAL::632 3.00000
+DEAL::633 3.00000
+DEAL::634 3.00000
+DEAL::635 3.00000
+DEAL::636 3.00000
+DEAL::637 3.00000
+DEAL::638 3.00000
+DEAL::639 3.00000
 DEAL::640 4.00000
 DEAL::641 4.00000
 DEAL::642 4.00000
@@ -8232,102 +8232,102 @@ DEAL::644 4.00000
 DEAL::645 4.00000
 DEAL::646 4.00000
 DEAL::647 4.00000
-DEAL::648 2.00000
-DEAL::649 2.00000
-DEAL::650 2.00000
-DEAL::651 2.00000
-DEAL::652 2.00000
-DEAL::653 2.00000
-DEAL::654 2.00000
-DEAL::655 2.00000
-DEAL::656 2.00000
-DEAL::657 3.00000
-DEAL::658 2.00000
-DEAL::659 3.00000
-DEAL::660 2.00000
-DEAL::661 3.00000
-DEAL::662 2.00000
-DEAL::663 3.00000
-DEAL::664 0
-DEAL::665 3.00000
-DEAL::666 0
-DEAL::667 0
-DEAL::668 0
-DEAL::669 3.00000
-DEAL::670 0
-DEAL::671 0
-DEAL::672 3.00000
-DEAL::673 3.00000
-DEAL::674 3.00000
-DEAL::675 3.00000
-DEAL::676 3.00000
-DEAL::677 3.00000
-DEAL::678 3.00000
-DEAL::679 3.00000
-DEAL::680 0
-DEAL::681 0
-DEAL::682 0
-DEAL::683 0
-DEAL::684 0
-DEAL::685 0
-DEAL::686 0
-DEAL::687 0
-DEAL::688 0
-DEAL::689 0
-DEAL::690 0
-DEAL::691 0
-DEAL::692 0
-DEAL::693 0
-DEAL::694 0
-DEAL::695 0
-DEAL::696 0
-DEAL::697 0
-DEAL::698 0
-DEAL::699 0
-DEAL::700 0
-DEAL::701 0
-DEAL::702 0
-DEAL::703 0
-DEAL::704 1.00000
-DEAL::705 1.00000
-DEAL::706 1.00000
-DEAL::707 1.00000
-DEAL::708 1.00000
-DEAL::709 1.00000
-DEAL::710 1.00000
-DEAL::711 1.00000
-DEAL::712 2.00000
-DEAL::713 2.00000
-DEAL::714 2.00000
-DEAL::715 2.00000
-DEAL::716 2.00000
-DEAL::717 2.00000
-DEAL::718 2.00000
-DEAL::719 2.00000
-DEAL::720 3.00000
-DEAL::721 3.00000
-DEAL::722 3.00000
-DEAL::723 3.00000
-DEAL::724 3.00000
-DEAL::725 3.00000
-DEAL::726 3.00000
-DEAL::727 3.00000
-DEAL::728 1.00000
-DEAL::729 1.00000
-DEAL::730 1.00000
-DEAL::731 1.00000
-DEAL::732 1.00000
-DEAL::733 1.00000
-DEAL::734 1.00000
-DEAL::735 1.00000
+DEAL::648 1.00000
+DEAL::649 1.00000
+DEAL::650 1.00000
+DEAL::651 1.00000
+DEAL::652 1.00000
+DEAL::653 1.00000
+DEAL::654 1.00000
+DEAL::655 1.00000
+DEAL::656 1.00000
+DEAL::657 1.00000
+DEAL::658 1.00000
+DEAL::659 1.00000
+DEAL::660 1.00000
+DEAL::661 1.00000
+DEAL::662 1.00000
+DEAL::663 1.00000
+DEAL::664 1.00000
+DEAL::665 1.00000
+DEAL::666 1.00000
+DEAL::667 1.00000
+DEAL::668 1.00000
+DEAL::669 1.00000
+DEAL::670 1.00000
+DEAL::671 1.00000
+DEAL::672 0
+DEAL::673 0
+DEAL::674 0
+DEAL::675 0
+DEAL::676 1.00000
+DEAL::677 1.00000
+DEAL::678 1.00000
+DEAL::679 1.00000
+DEAL::680 4.00000
+DEAL::681 4.00000
+DEAL::682 4.00000
+DEAL::683 4.00000
+DEAL::684 4.00000
+DEAL::685 4.00000
+DEAL::686 4.00000
+DEAL::687 4.00000
+DEAL::688 3.00000
+DEAL::689 3.00000
+DEAL::690 3.00000
+DEAL::691 3.00000
+DEAL::692 3.00000
+DEAL::693 3.00000
+DEAL::694 3.00000
+DEAL::695 3.00000
+DEAL::696 4.00000
+DEAL::697 4.00000
+DEAL::698 4.00000
+DEAL::699 4.00000
+DEAL::700 4.00000
+DEAL::701 4.00000
+DEAL::702 4.00000
+DEAL::703 4.00000
+DEAL::704 4.00000
+DEAL::705 4.00000
+DEAL::706 4.00000
+DEAL::707 4.00000
+DEAL::708 4.00000
+DEAL::709 4.00000
+DEAL::710 4.00000
+DEAL::711 4.00000
+DEAL::712 1.00000
+DEAL::713 1.00000
+DEAL::714 1.00000
+DEAL::715 1.00000
+DEAL::716 1.00000
+DEAL::717 1.00000
+DEAL::718 1.00000
+DEAL::719 1.00000
+DEAL::720 0
+DEAL::721 0
+DEAL::722 0
+DEAL::723 0
+DEAL::724 0
+DEAL::725 0
+DEAL::726 0
+DEAL::727 0
+DEAL::728 3.00000
+DEAL::729 3.00000
+DEAL::730 3.00000
+DEAL::731 3.00000
+DEAL::732 3.00000
+DEAL::733 3.00000
+DEAL::734 3.00000
+DEAL::735 3.00000
 DEAL::DoF association:
 DEAL::0 4
 DEAL::1 4
 DEAL::2 4
 DEAL::3 4
-DEAL::4 1
-DEAL::5 4
-DEAL::6 1
+DEAL::4 4
+DEAL::5 0
+DEAL::6 4
 DEAL::7 4
 DEAL::8 4
 DEAL::9 4
@@ -8349,25 +8349,25 @@ DEAL::24 4
 DEAL::25 4
 DEAL::26 4
 DEAL::27 2
-DEAL::28 2
-DEAL::29 0
+DEAL::28 1
+DEAL::29 2
 DEAL::30 2
 DEAL::31 2
 DEAL::32 2
-DEAL::33 0
+DEAL::33 2
 DEAL::34 2
 DEAL::35 2
 DEAL::36 2
 DEAL::37 2
 DEAL::38 2
 DEAL::39 2
-DEAL::40 2
+DEAL::40 1
 DEAL::41 2
 DEAL::42 2
 DEAL::43 2
 DEAL::44 2
-DEAL::45 0
-DEAL::46 2
+DEAL::45 2
+DEAL::46 1
 DEAL::47 2
 DEAL::48 2
 DEAL::49 2
@@ -8376,515 +8376,515 @@ DEAL::51 2
 DEAL::52 2
 DEAL::53 2
 DEAL::54 2
-DEAL::55 0
-DEAL::56 0
+DEAL::55 2
+DEAL::56 4
 DEAL::57 2
-DEAL::58 0
-DEAL::59 0
-DEAL::60 0
-DEAL::61 0
-DEAL::62 0
-DEAL::63 0
-DEAL::64 0
-DEAL::65 0
-DEAL::66 0
-DEAL::67 0
-DEAL::68 0
-DEAL::69 0
-DEAL::70 0
-DEAL::71 0
-DEAL::72 0
-DEAL::73 0
-DEAL::74 0
-DEAL::75 0
-DEAL::76 0
-DEAL::77 0
-DEAL::78 3
-DEAL::79 3
-DEAL::80 3
-DEAL::81 2
-DEAL::82 3
-DEAL::83 2
-DEAL::84 2
-DEAL::85 2
-DEAL::86 2
-DEAL::87 2
-DEAL::88 3
-DEAL::89 3
-DEAL::90 3
-DEAL::91 2
-DEAL::92 2
-DEAL::93 2
-DEAL::94 2
-DEAL::95 2
-DEAL::96 3
-DEAL::97 3
-DEAL::98 3
-DEAL::99 3
-DEAL::100 3
-DEAL::101 3
-DEAL::102 3
-DEAL::103 3
-DEAL::104 3
-DEAL::105 3
-DEAL::106 3
-DEAL::107 3
-DEAL::108 3
-DEAL::109 3
-DEAL::110 3
-DEAL::111 3
-DEAL::112 3
-DEAL::113 3
-DEAL::114 0
+DEAL::58 2
+DEAL::59 2
+DEAL::60 2
+DEAL::61 2
+DEAL::62 2
+DEAL::63 2
+DEAL::64 2
+DEAL::65 2
+DEAL::66 2
+DEAL::67 2
+DEAL::68 2
+DEAL::69 2
+DEAL::70 2
+DEAL::71 2
+DEAL::72 2
+DEAL::73 2
+DEAL::74 2
+DEAL::75 2
+DEAL::76 2
+DEAL::77 2
+DEAL::78 1
+DEAL::79 1
+DEAL::80 1
+DEAL::81 1
+DEAL::82 1
+DEAL::83 1
+DEAL::84 1
+DEAL::85 1
+DEAL::86 1
+DEAL::87 1
+DEAL::88 1
+DEAL::89 1
+DEAL::90 1
+DEAL::91 1
+DEAL::92 1
+DEAL::93 1
+DEAL::94 1
+DEAL::95 1
+DEAL::96 1
+DEAL::97 1
+DEAL::98 1
+DEAL::99 1
+DEAL::100 1
+DEAL::101 1
+DEAL::102 1
+DEAL::103 1
+DEAL::104 1
+DEAL::105 1
+DEAL::106 1
+DEAL::107 1
+DEAL::108 1
+DEAL::109 1
+DEAL::110 1
+DEAL::111 1
+DEAL::112 1
+DEAL::113 1
+DEAL::114 4
 DEAL::115 1
-DEAL::116 0
+DEAL::116 2
 DEAL::117 1
-DEAL::118 2
-DEAL::119 3
-DEAL::120 2
-DEAL::121 2
-DEAL::122 3
-DEAL::123 1
-DEAL::124 2
-DEAL::125 1
-DEAL::126 2
-DEAL::127 2
-DEAL::128 2
-DEAL::129 2
-DEAL::130 2
-DEAL::131 2
-DEAL::132 3
-DEAL::133 3
-DEAL::134 3
-DEAL::135 3
-DEAL::136 3
-DEAL::137 3
-DEAL::138 3
-DEAL::139 3
-DEAL::140 3
-DEAL::141 3
-DEAL::142 3
-DEAL::143 3
-DEAL::144 0
-DEAL::145 1
-DEAL::146 1
-DEAL::147 1
-DEAL::148 1
-DEAL::149 1
-DEAL::150 1
-DEAL::151 1
-DEAL::152 1
-DEAL::153 1
-DEAL::154 1
-DEAL::155 1
-DEAL::156 1
-DEAL::157 1
-DEAL::158 1
-DEAL::159 1
-DEAL::160 1
-DEAL::161 1
+DEAL::118 1
+DEAL::119 1
+DEAL::120 1
+DEAL::121 1
+DEAL::122 1
+DEAL::123 4
+DEAL::124 1
+DEAL::125 4
+DEAL::126 1
+DEAL::127 1
+DEAL::128 1
+DEAL::129 1
+DEAL::130 1
+DEAL::131 1
+DEAL::132 1
+DEAL::133 1
+DEAL::134 1
+DEAL::135 1
+DEAL::136 1
+DEAL::137 1
+DEAL::138 1
+DEAL::139 1
+DEAL::140 1
+DEAL::141 1
+DEAL::142 1
+DEAL::143 1
+DEAL::144 4
+DEAL::145 4
+DEAL::146 4
+DEAL::147 4
+DEAL::148 4
+DEAL::149 4
+DEAL::150 4
+DEAL::151 4
+DEAL::152 4
+DEAL::153 4
+DEAL::154 4
+DEAL::155 4
+DEAL::156 4
+DEAL::157 4
+DEAL::158 4
+DEAL::159 4
+DEAL::160 4
+DEAL::161 4
 DEAL::162 2
 DEAL::163 2
 DEAL::164 2
-DEAL::165 4
+DEAL::165 2
 DEAL::166 2
 DEAL::167 2
-DEAL::168 4
-DEAL::169 4
+DEAL::168 2
+DEAL::169 2
 DEAL::170 2
-DEAL::171 4
+DEAL::171 2
 DEAL::172 2
 DEAL::173 2
 DEAL::174 2
 DEAL::175 2
 DEAL::176 2
-DEAL::177 4
+DEAL::177 2
 DEAL::178 2
 DEAL::179 2
 DEAL::180 2
-DEAL::181 4
+DEAL::181 2
 DEAL::182 2
-DEAL::183 4
+DEAL::183 2
 DEAL::184 2
 DEAL::185 2
 DEAL::186 2
 DEAL::187 2
 DEAL::188 2
-DEAL::189 4
-DEAL::190 4
-DEAL::191 4
-DEAL::192 4
-DEAL::193 4
+DEAL::189 2
+DEAL::190 2
+DEAL::191 2
+DEAL::192 2
+DEAL::193 2
 DEAL::194 2
-DEAL::195 4
-DEAL::196 4
+DEAL::195 2
+DEAL::196 2
 DEAL::197 2
-DEAL::198 4
-DEAL::199 4
-DEAL::200 4
-DEAL::201 4
+DEAL::198 2
+DEAL::199 2
+DEAL::200 2
+DEAL::201 2
 DEAL::202 2
-DEAL::203 4
-DEAL::204 4
-DEAL::205 4
-DEAL::206 4
-DEAL::207 4
-DEAL::208 4
-DEAL::209 4
-DEAL::210 4
-DEAL::211 4
-DEAL::212 4
-DEAL::213 4
-DEAL::214 4
-DEAL::215 4
-DEAL::216 4
-DEAL::217 4
-DEAL::218 4
-DEAL::219 4
-DEAL::220 4
-DEAL::221 4
-DEAL::222 4
-DEAL::223 4
-DEAL::224 4
+DEAL::203 2
+DEAL::204 2
+DEAL::205 2
+DEAL::206 2
+DEAL::207 2
+DEAL::208 2
+DEAL::209 2
+DEAL::210 2
+DEAL::211 2
+DEAL::212 2
+DEAL::213 2
+DEAL::214 2
+DEAL::215 2
+DEAL::216 2
+DEAL::217 2
+DEAL::218 2
+DEAL::219 2
+DEAL::220 2
+DEAL::221 2
+DEAL::222 2
+DEAL::223 2
+DEAL::224 2
 DEAL::225 2
 DEAL::226 2
-DEAL::227 4
+DEAL::227 2
 DEAL::228 2
 DEAL::229 2
 DEAL::230 2
 DEAL::231 2
 DEAL::232 2
 DEAL::233 2
-DEAL::234 4
+DEAL::234 2
 DEAL::235 2
-DEAL::236 4
+DEAL::236 2
 DEAL::237 2
-DEAL::238 4
+DEAL::238 2
 DEAL::239 2
 DEAL::240 2
 DEAL::241 2
 DEAL::242 2
-DEAL::243 2
-DEAL::244 4
+DEAL::243 1
+DEAL::244 2
 DEAL::245 2
 DEAL::246 2
 DEAL::247 2
 DEAL::248 2
-DEAL::249 4
-DEAL::250 4
+DEAL::249 2
+DEAL::250 2
 DEAL::251 2
-DEAL::252 4
+DEAL::252 2
 DEAL::253 2
-DEAL::254 4
-DEAL::255 4
-DEAL::256 0
-DEAL::257 4
+DEAL::254 2
+DEAL::255 2
+DEAL::256 2
+DEAL::257 2
 DEAL::258 2
 DEAL::259 2
-DEAL::260 4
-DEAL::261 4
-DEAL::262 4
-DEAL::263 4
-DEAL::264 4
-DEAL::265 4
-DEAL::266 4
-DEAL::267 2
-DEAL::268 3
-DEAL::269 2
-DEAL::270 3
-DEAL::271 2
-DEAL::272 3
-DEAL::273 2
-DEAL::274 3
-DEAL::275 2
-DEAL::276 2
-DEAL::277 2
-DEAL::278 2
-DEAL::279 2
-DEAL::280 3
-DEAL::281 2
-DEAL::282 2
-DEAL::283 2
-DEAL::284 2
-DEAL::285 2
-DEAL::286 3
-DEAL::287 2
-DEAL::288 2
-DEAL::289 2
-DEAL::290 2
-DEAL::291 2
-DEAL::292 2
-DEAL::293 2
+DEAL::260 2
+DEAL::261 2
+DEAL::262 2
+DEAL::263 2
+DEAL::264 2
+DEAL::265 2
+DEAL::266 2
+DEAL::267 1
+DEAL::268 1
+DEAL::269 0
+DEAL::270 0
+DEAL::271 1
+DEAL::272 1
+DEAL::273 1
+DEAL::274 1
+DEAL::275 1
+DEAL::276 1
+DEAL::277 1
+DEAL::278 0
+DEAL::279 1
+DEAL::280 1
+DEAL::281 1
+DEAL::282 1
+DEAL::283 1
+DEAL::284 1
+DEAL::285 1
+DEAL::286 0
+DEAL::287 1
+DEAL::288 1
+DEAL::289 1
+DEAL::290 1
+DEAL::291 1
+DEAL::292 1
+DEAL::293 1
 DEAL::294 2
-DEAL::295 2
-DEAL::296 2
-DEAL::297 2
-DEAL::298 2
+DEAL::295 0
+DEAL::296 1
+DEAL::297 1
+DEAL::298 1
 DEAL::299 2
-DEAL::300 2
-DEAL::301 2
-DEAL::302 2
+DEAL::300 0
+DEAL::301 1
+DEAL::302 1
 DEAL::303 2
-DEAL::304 2
-DEAL::305 2
-DEAL::306 2
+DEAL::304 1
+DEAL::305 1
+DEAL::306 1
 DEAL::307 2
 DEAL::308 2
-DEAL::309 2
+DEAL::309 1
 DEAL::310 2
-DEAL::311 2
-DEAL::312 2
-DEAL::313 2
-DEAL::314 2
-DEAL::315 2
-DEAL::316 2
-DEAL::317 4
-DEAL::318 2
-DEAL::319 3
-DEAL::320 2
-DEAL::321 3
-DEAL::322 2
-DEAL::323 3
-DEAL::324 3
-DEAL::325 2
-DEAL::326 2
-DEAL::327 2
-DEAL::328 2
-DEAL::329 2
-DEAL::330 3
-DEAL::331 2
-DEAL::332 2
-DEAL::333 2
-DEAL::334 2
-DEAL::335 2
-DEAL::336 2
-DEAL::337 2
-DEAL::338 3
-DEAL::339 2
-DEAL::340 2
-DEAL::341 2
-DEAL::342 3
-DEAL::343 2
-DEAL::344 2
-DEAL::345 2
-DEAL::346 2
-DEAL::347 2
-DEAL::348 0
-DEAL::349 2
-DEAL::350 2
-DEAL::351 2
-DEAL::352 2
-DEAL::353 2
-DEAL::354 2
-DEAL::355 2
-DEAL::356 2
-DEAL::357 2
-DEAL::358 2
-DEAL::359 2
-DEAL::360 2
-DEAL::361 2
-DEAL::362 2
-DEAL::363 0
-DEAL::364 2
-DEAL::365 2
-DEAL::366 2
-DEAL::367 2
-DEAL::368 2
-DEAL::369 2
-DEAL::370 2
-DEAL::371 3
-DEAL::372 4
-DEAL::373 4
-DEAL::374 3
-DEAL::375 2
-DEAL::376 3
-DEAL::377 4
-DEAL::378 3
-DEAL::379 4
-DEAL::380 4
-DEAL::381 2
-DEAL::382 3
-DEAL::383 3
-DEAL::384 3
-DEAL::385 3
-DEAL::386 4
-DEAL::387 3
-DEAL::388 3
-DEAL::389 3
-DEAL::390 3
-DEAL::391 4
-DEAL::392 4
-DEAL::393 3
-DEAL::394 3
-DEAL::395 4
-DEAL::396 4
-DEAL::397 0
-DEAL::398 0
-DEAL::399 4
-DEAL::400 4
-DEAL::401 4
-DEAL::402 4
-DEAL::403 3
-DEAL::404 0
-DEAL::405 4
-DEAL::406 4
-DEAL::407 4
-DEAL::408 4
-DEAL::409 4
-DEAL::410 4
-DEAL::411 4
-DEAL::412 4
-DEAL::413 4
-DEAL::414 4
-DEAL::415 4
-DEAL::416 4
-DEAL::417 4
-DEAL::418 4
-DEAL::419 4
-DEAL::420 3
-DEAL::421 3
-DEAL::422 3
-DEAL::423 4
-DEAL::424 4
-DEAL::425 4
-DEAL::426 4
-DEAL::427 4
-DEAL::428 4
-DEAL::429 3
-DEAL::430 4
-DEAL::431 3
-DEAL::432 0
-DEAL::433 3
-DEAL::434 0
-DEAL::435 3
-DEAL::436 2
-DEAL::437 3
-DEAL::438 3
-DEAL::439 2
-DEAL::440 3
-DEAL::441 2
-DEAL::442 3
-DEAL::443 3
-DEAL::444 3
-DEAL::445 2
-DEAL::446 3
-DEAL::447 0
-DEAL::448 0
-DEAL::449 0
-DEAL::450 3
-DEAL::451 0
-DEAL::452 0
-DEAL::453 3
-DEAL::454 3
-DEAL::455 3
-DEAL::456 3
-DEAL::457 3
-DEAL::458 3
-DEAL::459 3
-DEAL::460 3
-DEAL::461 3
-DEAL::462 3
-DEAL::463 0
-DEAL::464 3
-DEAL::465 3
-DEAL::466 3
-DEAL::467 3
-DEAL::468 3
-DEAL::469 3
-DEAL::470 3
-DEAL::471 0
-DEAL::472 1
-DEAL::473 1
-DEAL::474 1
-DEAL::475 1
-DEAL::476 0
-DEAL::477 1
-DEAL::478 1
-DEAL::479 1
-DEAL::480 1
-DEAL::481 1
-DEAL::482 1
-DEAL::483 1
-DEAL::484 1
-DEAL::485 0
-DEAL::486 1
-DEAL::487 1
-DEAL::488 1
-DEAL::489 1
-DEAL::490 1
-DEAL::491 1
-DEAL::492 1
-DEAL::493 1
-DEAL::494 1
-DEAL::495 1
-DEAL::496 1
-DEAL::497 1
-DEAL::498 1
-DEAL::499 1
-DEAL::500 1
-DEAL::501 1
-DEAL::502 1
-DEAL::503 1
-DEAL::504 1
-DEAL::505 1
-DEAL::506 0
-DEAL::507 1
-DEAL::508 1
-DEAL::509 1
-DEAL::510 1
-DEAL::511 1
-DEAL::512 1
-DEAL::513 1
-DEAL::514 1
-DEAL::515 1
-DEAL::516 0
-DEAL::517 0
-DEAL::518 1
-DEAL::519 1
-DEAL::520 0
-DEAL::521 1
-DEAL::522 0
-DEAL::523 0
-DEAL::524 1
-DEAL::525 0
-DEAL::526 1
-DEAL::527 1
-DEAL::528 1
-DEAL::529 1
-DEAL::530 0
-DEAL::531 1
-DEAL::532 1
-DEAL::533 1
-DEAL::534 0
-DEAL::535 1
-DEAL::536 1
-DEAL::537 0
-DEAL::538 0
-DEAL::539 1
-DEAL::540 1
-DEAL::541 1
-DEAL::542 1
-DEAL::543 1
-DEAL::544 0
-DEAL::545 1
-DEAL::546 1
-DEAL::547 1
-DEAL::548 1
-DEAL::549 1
-DEAL::550 1
-DEAL::551 1
-DEAL::552 1
-DEAL::553 1
-DEAL::554 1
-DEAL::555 0
-DEAL::556 1
-DEAL::557 1
-DEAL::558 1
-DEAL::559 1
-DEAL::560 1
-DEAL::561 1
-DEAL::562 0
-DEAL::563 1
+DEAL::311 1
+DEAL::312 1
+DEAL::313 1
+DEAL::314 1
+DEAL::315 1
+DEAL::316 1
+DEAL::317 0
+DEAL::318 1
+DEAL::319 0
+DEAL::320 1
+DEAL::321 1
+DEAL::322 1
+DEAL::323 0
+DEAL::324 0
+DEAL::325 1
+DEAL::326 0
+DEAL::327 1
+DEAL::328 1
+DEAL::329 1
+DEAL::330 1
+DEAL::331 1
+DEAL::332 1
+DEAL::333 1
+DEAL::334 1
+DEAL::335 1
+DEAL::336 1
+DEAL::337 1
+DEAL::338 1
+DEAL::339 1
+DEAL::340 1
+DEAL::341 1
+DEAL::342 1
+DEAL::343 1
+DEAL::344 1
+DEAL::345 1
+DEAL::346 1
+DEAL::347 1
+DEAL::348 2
+DEAL::349 1
+DEAL::350 1
+DEAL::351 1
+DEAL::352 1
+DEAL::353 1
+DEAL::354 1
+DEAL::355 1
+DEAL::356 1
+DEAL::357 1
+DEAL::358 1
+DEAL::359 1
+DEAL::360 1
+DEAL::361 1
+DEAL::362 1
+DEAL::363 1
+DEAL::364 1
+DEAL::365 1
+DEAL::366 1
+DEAL::367 1
+DEAL::368 1
+DEAL::369 1
+DEAL::370 1
+DEAL::371 0
+DEAL::372 0
+DEAL::373 0
+DEAL::374 1
+DEAL::375 1
+DEAL::376 0
+DEAL::377 0
+DEAL::378 0
+DEAL::379 0
+DEAL::380 0
+DEAL::381 1
+DEAL::382 1
+DEAL::383 0
+DEAL::384 1
+DEAL::385 0
+DEAL::386 0
+DEAL::387 0
+DEAL::388 0
+DEAL::389 0
+DEAL::390 0
+DEAL::391 0
+DEAL::392 0
+DEAL::393 1
+DEAL::394 0
+DEAL::395 3
+DEAL::396 0
+DEAL::397 3
+DEAL::398 4
+DEAL::399 0
+DEAL::400 0
+DEAL::401 3
+DEAL::402 0
+DEAL::403 0
+DEAL::404 4
+DEAL::405 3
+DEAL::406 0
+DEAL::407 0
+DEAL::408 0
+DEAL::409 3
+DEAL::410 0
+DEAL::411 0
+DEAL::412 0
+DEAL::413 0
+DEAL::414 0
+DEAL::415 0
+DEAL::416 0
+DEAL::417 0
+DEAL::418 0
+DEAL::419 0
+DEAL::420 0
+DEAL::421 0
+DEAL::422 0
+DEAL::423 0
+DEAL::424 0
+DEAL::425 0
+DEAL::426 0
+DEAL::427 0
+DEAL::428 0
+DEAL::429 0
+DEAL::430 0
+DEAL::431 1
+DEAL::432 2
+DEAL::433 1
+DEAL::434 1
+DEAL::435 1
+DEAL::436 1
+DEAL::437 1
+DEAL::438 1
+DEAL::439 1
+DEAL::440 1
+DEAL::441 1
+DEAL::442 1
+DEAL::443 1
+DEAL::444 1
+DEAL::445 1
+DEAL::446 1
+DEAL::447 1
+DEAL::448 4
+DEAL::449 2
+DEAL::450 1
+DEAL::451 4
+DEAL::452 4
+DEAL::453 0
+DEAL::454 1
+DEAL::455 1
+DEAL::456 1
+DEAL::457 1
+DEAL::458 1
+DEAL::459 1
+DEAL::460 1
+DEAL::461 1
+DEAL::462 1
+DEAL::463 1
+DEAL::464 0
+DEAL::465 0
+DEAL::466 0
+DEAL::467 0
+DEAL::468 0
+DEAL::469 1
+DEAL::470 0
+DEAL::471 3
+DEAL::472 3
+DEAL::473 3
+DEAL::474 3
+DEAL::475 3
+DEAL::476 3
+DEAL::477 3
+DEAL::478 3
+DEAL::479 3
+DEAL::480 3
+DEAL::481 3
+DEAL::482 3
+DEAL::483 3
+DEAL::484 3
+DEAL::485 3
+DEAL::486 3
+DEAL::487 3
+DEAL::488 3
+DEAL::489 3
+DEAL::490 3
+DEAL::491 3
+DEAL::492 3
+DEAL::493 3
+DEAL::494 3
+DEAL::495 3
+DEAL::496 3
+DEAL::497 3
+DEAL::498 3
+DEAL::499 3
+DEAL::500 3
+DEAL::501 3
+DEAL::502 4
+DEAL::503 3
+DEAL::504 3
+DEAL::505 3
+DEAL::506 3
+DEAL::507 3
+DEAL::508 3
+DEAL::509 3
+DEAL::510 3
+DEAL::511 3
+DEAL::512 3
+DEAL::513 3
+DEAL::514 3
+DEAL::515 3
+DEAL::516 3
+DEAL::517 3
+DEAL::518 3
+DEAL::519 3
+DEAL::520 3
+DEAL::521 3
+DEAL::522 3
+DEAL::523 3
+DEAL::524 3
+DEAL::525 3
+DEAL::526 3
+DEAL::527 3
+DEAL::528 3
+DEAL::529 3
+DEAL::530 3
+DEAL::531 3
+DEAL::532 3
+DEAL::533 3
+DEAL::534 4
+DEAL::535 3
+DEAL::536 3
+DEAL::537 3
+DEAL::538 3
+DEAL::539 3
+DEAL::540 3
+DEAL::541 3
+DEAL::542 3
+DEAL::543 3
+DEAL::544 3
+DEAL::545 3
+DEAL::546 3
+DEAL::547 3
+DEAL::548 3
+DEAL::549 3
+DEAL::550 3
+DEAL::551 3
+DEAL::552 3
+DEAL::553 3
+DEAL::554 3
+DEAL::555 3
+DEAL::556 3
+DEAL::557 3
+DEAL::558 3
+DEAL::559 3
+DEAL::560 3
+DEAL::561 3
+DEAL::562 3
+DEAL::563 3
 DEAL::564 2
 DEAL::565 2
 DEAL::566 2
@@ -8913,17 +8913,17 @@ DEAL::588 2
 DEAL::589 2
 DEAL::590 2
 DEAL::591 2
-DEAL::592 2
-DEAL::593 2
-DEAL::594 2
+DEAL::592 1
+DEAL::593 1
+DEAL::594 1
 DEAL::595 2
 DEAL::596 2
 DEAL::597 2
-DEAL::598 2
+DEAL::598 1
 DEAL::599 2
 DEAL::600 2
 DEAL::601 2
-DEAL::602 2
+DEAL::602 1
 DEAL::603 2
 DEAL::604 2
 DEAL::605 2
@@ -8940,7 +8940,7 @@ DEAL::615 2
 DEAL::616 2
 DEAL::617 2
 DEAL::618 2
-DEAL::619 2
+DEAL::619 1
 DEAL::620 2
 DEAL::621 2
 DEAL::622 2
@@ -8970,105 +8970,105 @@ DEAL::645 2
 DEAL::646 2
 DEAL::647 2
 DEAL::648 2
-DEAL::649 2
+DEAL::649 1
 DEAL::650 2
 DEAL::651 2
 DEAL::652 2
 DEAL::653 2
-DEAL::654 4
-DEAL::655 4
-DEAL::656 2
-DEAL::657 4
-DEAL::658 4
-DEAL::659 4
-DEAL::660 4
-DEAL::661 4
-DEAL::662 2
-DEAL::663 4
-DEAL::664 4
-DEAL::665 4
-DEAL::666 4
-DEAL::667 4
-DEAL::668 4
-DEAL::669 4
-DEAL::670 4
-DEAL::671 4
-DEAL::672 4
+DEAL::654 0
+DEAL::655 0
+DEAL::656 0
+DEAL::657 2
+DEAL::658 2
+DEAL::659 2
+DEAL::660 2
+DEAL::661 2
+DEAL::662 1
+DEAL::663 2
+DEAL::664 0
+DEAL::665 0
+DEAL::666 2
+DEAL::667 2
+DEAL::668 2
+DEAL::669 2
+DEAL::670 2
+DEAL::671 2
+DEAL::672 0
 DEAL::673 4
-DEAL::674 4
-DEAL::675 4
-DEAL::676 4
-DEAL::677 4
+DEAL::674 0
+DEAL::675 0
+DEAL::676 0
+DEAL::677 0
 DEAL::678 4
-DEAL::679 4
-DEAL::680 4
-DEAL::681 4
-DEAL::682 4
+DEAL::679 0
+DEAL::680 0
+DEAL::681 0
+DEAL::682 0
 DEAL::683 4
-DEAL::684 4
-DEAL::685 4
-DEAL::686 4
-DEAL::687 4
-DEAL::688 4
-DEAL::689 4
-DEAL::690 4
+DEAL::684 0
+DEAL::685 0
+DEAL::686 0
+DEAL::687 0
+DEAL::688 0
+DEAL::689 0
+DEAL::690 3
 DEAL::691 4
-DEAL::692 4
-DEAL::693 4
-DEAL::694 4
-DEAL::695 4
-DEAL::696 4
-DEAL::697 4
-DEAL::698 4
-DEAL::699 4
-DEAL::700 4
+DEAL::692 3
+DEAL::693 2
+DEAL::694 2
+DEAL::695 2
+DEAL::696 3
+DEAL::697 2
+DEAL::698 2
+DEAL::699 3
+DEAL::700 3
 DEAL::701 4
-DEAL::702 4
+DEAL::702 2
 DEAL::703 4
-DEAL::704 4
-DEAL::705 4
-DEAL::706 4
-DEAL::707 4
+DEAL::704 2
+DEAL::705 2
+DEAL::706 2
+DEAL::707 2
 DEAL::708 4
-DEAL::709 4
+DEAL::709 3
 DEAL::710 4
 DEAL::711 4
 DEAL::712 4
-DEAL::713 4
+DEAL::713 2
 DEAL::714 4
 DEAL::715 4
 DEAL::716 4
 DEAL::717 4
-DEAL::718 4
+DEAL::718 2
 DEAL::719 4
-DEAL::720 4
-DEAL::721 2
+DEAL::720 2
+DEAL::721 1
 DEAL::722 2
-DEAL::723 2
-DEAL::724 4
-DEAL::725 4
-DEAL::726 4
-DEAL::727 4
-DEAL::728 2
-DEAL::729 4
+DEAL::723 0
+DEAL::724 2
+DEAL::725 0
+DEAL::726 2
+DEAL::727 2
+DEAL::728 1
+DEAL::729 2
 DEAL::730 2
-DEAL::731 4
-DEAL::732 4
-DEAL::733 4
-DEAL::734 2
-DEAL::735 4
-DEAL::736 4
-DEAL::737 4
+DEAL::731 0
+DEAL::732 0
+DEAL::733 0
+DEAL::734 0
+DEAL::735 0
+DEAL::736 0
+DEAL::737 0
 DEAL::738 2
 DEAL::739 2
-DEAL::740 0
-DEAL::741 4
-DEAL::742 4
-DEAL::743 4
-DEAL::744 4
-DEAL::745 4
+DEAL::740 3
+DEAL::741 3
+DEAL::742 2
+DEAL::743 2
+DEAL::744 0
+DEAL::745 3
 DEAL::746 2
-DEAL::747 4
+DEAL::747 2
 DEAL::748 2
 DEAL::749 2
 DEAL::750 2
@@ -9110,7 +9110,7 @@ DEAL::785 2
 DEAL::786 2
 DEAL::787 2
 DEAL::788 2
-DEAL::789 2
+DEAL::789 1
 DEAL::790 2
 DEAL::791 2
 DEAL::792 2
@@ -9135,679 +9135,679 @@ DEAL::810 2
 DEAL::811 2
 DEAL::812 2
 DEAL::813 2
-DEAL::814 4
-DEAL::815 4
-DEAL::816 4
-DEAL::817 4
-DEAL::818 4
-DEAL::819 3
-DEAL::820 4
-DEAL::821 3
-DEAL::822 4
-DEAL::823 4
-DEAL::824 4
-DEAL::825 4
-DEAL::826 4
-DEAL::827 4
-DEAL::828 3
-DEAL::829 4
-DEAL::830 4
-DEAL::831 4
-DEAL::832 4
-DEAL::833 4
-DEAL::834 4
-DEAL::835 4
-DEAL::836 4
-DEAL::837 4
-DEAL::838 4
-DEAL::839 3
-DEAL::840 4
-DEAL::841 4
-DEAL::842 4
-DEAL::843 3
-DEAL::844 4
-DEAL::845 4
-DEAL::846 4
-DEAL::847 4
-DEAL::848 3
-DEAL::849 3
-DEAL::850 4
-DEAL::851 4
-DEAL::852 4
-DEAL::853 4
-DEAL::854 4
-DEAL::855 4
-DEAL::856 4
-DEAL::857 4
-DEAL::858 4
-DEAL::859 4
-DEAL::860 4
-DEAL::861 4
-DEAL::862 4
-DEAL::863 4
-DEAL::864 4
-DEAL::865 4
-DEAL::866 4
-DEAL::867 4
-DEAL::868 4
-DEAL::869 4
-DEAL::870 4
-DEAL::871 4
-DEAL::872 4
-DEAL::873 4
-DEAL::874 4
-DEAL::875 4
-DEAL::876 4
-DEAL::877 4
-DEAL::878 4
-DEAL::879 4
-DEAL::880 4
-DEAL::881 4
-DEAL::882 4
-DEAL::883 4
-DEAL::884 4
-DEAL::885 4
-DEAL::886 4
-DEAL::887 4
-DEAL::888 4
-DEAL::889 4
-DEAL::890 3
-DEAL::891 4
-DEAL::892 4
-DEAL::893 3
-DEAL::894 3
-DEAL::895 4
-DEAL::896 4
-DEAL::897 3
-DEAL::898 4
-DEAL::899 4
-DEAL::900 4
-DEAL::901 3
-DEAL::902 3
-DEAL::903 3
-DEAL::904 3
-DEAL::905 3
-DEAL::906 3
-DEAL::907 4
-DEAL::908 3
-DEAL::909 3
-DEAL::910 3
-DEAL::911 3
-DEAL::912 3
-DEAL::913 3
-DEAL::914 3
-DEAL::915 4
-DEAL::916 3
-DEAL::917 3
-DEAL::918 4
-DEAL::919 4
-DEAL::920 4
-DEAL::921 4
-DEAL::922 4
-DEAL::923 4
-DEAL::924 4
-DEAL::925 4
-DEAL::926 4
-DEAL::927 4
-DEAL::928 4
-DEAL::929 4
-DEAL::930 4
-DEAL::931 4
-DEAL::932 4
-DEAL::933 4
-DEAL::934 4
-DEAL::935 4
-DEAL::936 3
-DEAL::937 3
-DEAL::938 3
-DEAL::939 3
-DEAL::940 3
-DEAL::941 3
-DEAL::942 3
-DEAL::943 3
-DEAL::944 3
-DEAL::945 3
-DEAL::946 3
-DEAL::947 3
-DEAL::948 3
-DEAL::949 3
-DEAL::950 3
-DEAL::951 3
-DEAL::952 3
-DEAL::953 3
-DEAL::954 3
-DEAL::955 3
-DEAL::956 3
-DEAL::957 3
-DEAL::958 3
-DEAL::959 3
-DEAL::960 3
-DEAL::961 3
-DEAL::962 3
-DEAL::963 3
-DEAL::964 3
-DEAL::965 3
-DEAL::966 3
-DEAL::967 3
-DEAL::968 3
-DEAL::969 3
-DEAL::970 3
-DEAL::971 3
-DEAL::972 2
-DEAL::973 2
-DEAL::974 3
-DEAL::975 2
-DEAL::976 3
-DEAL::977 2
-DEAL::978 3
-DEAL::979 3
-DEAL::980 3
-DEAL::981 3
-DEAL::982 3
-DEAL::983 3
-DEAL::984 3
-DEAL::985 3
-DEAL::986 3
-DEAL::987 3
-DEAL::988 3
-DEAL::989 3
-DEAL::990 3
-DEAL::991 3
-DEAL::992 3
-DEAL::993 3
-DEAL::994 3
-DEAL::995 3
-DEAL::996 3
-DEAL::997 3
-DEAL::998 3
-DEAL::999 3
-DEAL::1000 2
-DEAL::1001 3
-DEAL::1002 3
-DEAL::1003 3
-DEAL::1004 3
-DEAL::1005 3
-DEAL::1006 3
-DEAL::1007 3
-DEAL::1008 3
-DEAL::1009 3
-DEAL::1010 3
-DEAL::1011 3
-DEAL::1012 3
-DEAL::1013 3
-DEAL::1014 3
-DEAL::1015 3
-DEAL::1016 3
-DEAL::1017 3
-DEAL::1018 3
-DEAL::1019 3
-DEAL::1020 3
-DEAL::1021 3
-DEAL::1022 3
-DEAL::1023 3
-DEAL::1024 3
-DEAL::1025 3
-DEAL::1026 3
-DEAL::1027 3
-DEAL::1028 3
-DEAL::1029 3
-DEAL::1030 3
-DEAL::1031 3
-DEAL::1032 3
-DEAL::1033 3
-DEAL::1034 3
-DEAL::1035 3
-DEAL::1036 3
-DEAL::1037 3
-DEAL::1038 3
-DEAL::1039 3
-DEAL::1040 3
-DEAL::1041 3
-DEAL::1042 3
-DEAL::1043 3
-DEAL::1044 3
-DEAL::1045 3
-DEAL::1046 3
-DEAL::1047 3
-DEAL::1048 3
-DEAL::1049 3
-DEAL::1050 3
-DEAL::1051 3
-DEAL::1052 3
-DEAL::1053 3
-DEAL::1054 3
-DEAL::1055 3
-DEAL::1056 3
-DEAL::1057 3
-DEAL::1058 3
-DEAL::1059 3
-DEAL::1060 3
-DEAL::1061 3
-DEAL::1062 3
-DEAL::1063 3
-DEAL::1064 3
-DEAL::1065 3
-DEAL::1066 3
-DEAL::1067 3
-DEAL::1068 3
-DEAL::1069 3
-DEAL::1070 3
-DEAL::1071 3
-DEAL::1072 3
-DEAL::1073 3
-DEAL::1074 3
-DEAL::1075 3
-DEAL::1076 3
-DEAL::1077 3
-DEAL::1078 3
-DEAL::1079 3
-DEAL::1080 3
-DEAL::1081 3
-DEAL::1082 3
-DEAL::1083 3
-DEAL::1084 3
-DEAL::1085 3
-DEAL::1086 3
-DEAL::1087 3
-DEAL::1088 3
-DEAL::1089 3
-DEAL::1090 3
-DEAL::1091 4
-DEAL::1092 3
-DEAL::1093 3
-DEAL::1094 3
-DEAL::1095 3
-DEAL::1096 4
-DEAL::1097 3
-DEAL::1098 3
-DEAL::1099 3
-DEAL::1100 4
-DEAL::1101 3
-DEAL::1102 3
-DEAL::1103 4
-DEAL::1104 4
-DEAL::1105 3
-DEAL::1106 4
-DEAL::1107 4
-DEAL::1108 4
-DEAL::1109 4
-DEAL::1110 4
-DEAL::1111 4
-DEAL::1112 4
-DEAL::1113 4
-DEAL::1114 4
-DEAL::1115 3
-DEAL::1116 3
-DEAL::1117 3
-DEAL::1118 3
-DEAL::1119 3
-DEAL::1120 3
-DEAL::1121 3
-DEAL::1122 3
-DEAL::1123 3
-DEAL::1124 3
-DEAL::1125 3
-DEAL::1126 3
-DEAL::1127 3
-DEAL::1128 3
-DEAL::1129 3
-DEAL::1130 3
-DEAL::1131 3
-DEAL::1132 3
-DEAL::1133 4
-DEAL::1134 3
-DEAL::1135 3
-DEAL::1136 3
-DEAL::1137 3
-DEAL::1138 3
-DEAL::1139 3
-DEAL::1140 3
-DEAL::1141 3
-DEAL::1142 3
-DEAL::1143 3
-DEAL::1144 3
-DEAL::1145 4
-DEAL::1146 3
-DEAL::1147 3
-DEAL::1148 4
-DEAL::1149 4
-DEAL::1150 4
-DEAL::1151 4
-DEAL::1152 4
-DEAL::1153 4
-DEAL::1154 4
-DEAL::1155 4
-DEAL::1156 4
-DEAL::1157 4
-DEAL::1158 4
-DEAL::1159 4
-DEAL::1160 4
-DEAL::1161 4
-DEAL::1162 4
-DEAL::1163 4
-DEAL::1164 4
-DEAL::1165 4
-DEAL::1166 4
-DEAL::1167 4
-DEAL::1168 4
-DEAL::1169 4
-DEAL::1170 4
-DEAL::1171 4
-DEAL::1172 4
-DEAL::1173 4
-DEAL::1174 4
-DEAL::1175 4
-DEAL::1176 4
-DEAL::1177 4
-DEAL::1178 4
-DEAL::1179 4
-DEAL::1180 4
-DEAL::1181 4
-DEAL::1182 1
-DEAL::1183 4
-DEAL::1184 1
-DEAL::1185 4
-DEAL::1186 4
-DEAL::1187 4
-DEAL::1188 4
-DEAL::1189 4
-DEAL::1190 1
-DEAL::1191 4
-DEAL::1192 1
-DEAL::1193 4
-DEAL::1194 4
-DEAL::1195 4
-DEAL::1196 4
-DEAL::1197 4
-DEAL::1198 4
-DEAL::1199 4
-DEAL::1200 0
-DEAL::1201 4
-DEAL::1202 0
-DEAL::1203 2
-DEAL::1204 4
-DEAL::1205 4
-DEAL::1206 4
-DEAL::1207 4
-DEAL::1208 4
-DEAL::1209 4
-DEAL::1210 4
-DEAL::1211 4
-DEAL::1212 0
-DEAL::1213 0
-DEAL::1214 0
-DEAL::1215 0
-DEAL::1216 4
-DEAL::1217 1
-DEAL::1218 4
-DEAL::1219 4
-DEAL::1220 4
-DEAL::1221 0
-DEAL::1222 4
-DEAL::1223 4
-DEAL::1224 0
-DEAL::1225 4
-DEAL::1226 0
-DEAL::1227 0
-DEAL::1228 4
-DEAL::1229 1
-DEAL::1230 4
-DEAL::1231 4
-DEAL::1232 4
-DEAL::1233 4
-DEAL::1234 4
-DEAL::1235 4
-DEAL::1236 1
-DEAL::1237 1
-DEAL::1238 0
-DEAL::1239 1
-DEAL::1240 1
-DEAL::1241 4
-DEAL::1242 1
-DEAL::1243 4
-DEAL::1244 0
-DEAL::1245 4
-DEAL::1246 4
-DEAL::1247 1
-DEAL::1248 4
-DEAL::1249 4
+DEAL::814 0
+DEAL::815 0
+DEAL::816 0
+DEAL::817 0
+DEAL::818 0
+DEAL::819 0
+DEAL::820 0
+DEAL::821 0
+DEAL::822 0
+DEAL::823 0
+DEAL::824 0
+DEAL::825 0
+DEAL::826 0
+DEAL::827 0
+DEAL::828 0
+DEAL::829 0
+DEAL::830 0
+DEAL::831 0
+DEAL::832 0
+DEAL::833 0
+DEAL::834 0
+DEAL::835 0
+DEAL::836 0
+DEAL::837 0
+DEAL::838 0
+DEAL::839 0
+DEAL::840 0
+DEAL::841 0
+DEAL::842 0
+DEAL::843 0
+DEAL::844 0
+DEAL::845 0
+DEAL::846 0
+DEAL::847 0
+DEAL::848 0
+DEAL::849 0
+DEAL::850 0
+DEAL::851 0
+DEAL::852 0
+DEAL::853 0
+DEAL::854 0
+DEAL::855 0
+DEAL::856 0
+DEAL::857 0
+DEAL::858 0
+DEAL::859 0
+DEAL::860 0
+DEAL::861 0
+DEAL::862 0
+DEAL::863 0
+DEAL::864 0
+DEAL::865 0
+DEAL::866 0
+DEAL::867 0
+DEAL::868 0
+DEAL::869 0
+DEAL::870 0
+DEAL::871 0
+DEAL::872 0
+DEAL::873 0
+DEAL::874 0
+DEAL::875 0
+DEAL::876 0
+DEAL::877 0
+DEAL::878 0
+DEAL::879 0
+DEAL::880 0
+DEAL::881 0
+DEAL::882 0
+DEAL::883 0
+DEAL::884 0
+DEAL::885 0
+DEAL::886 0
+DEAL::887 0
+DEAL::888 0
+DEAL::889 0
+DEAL::890 0
+DEAL::891 0
+DEAL::892 0
+DEAL::893 0
+DEAL::894 0
+DEAL::895 0
+DEAL::896 0
+DEAL::897 0
+DEAL::898 0
+DEAL::899 0
+DEAL::900 0
+DEAL::901 0
+DEAL::902 0
+DEAL::903 0
+DEAL::904 0
+DEAL::905 0
+DEAL::906 0
+DEAL::907 0
+DEAL::908 0
+DEAL::909 0
+DEAL::910 0
+DEAL::911 0
+DEAL::912 0
+DEAL::913 0
+DEAL::914 0
+DEAL::915 0
+DEAL::916 0
+DEAL::917 0
+DEAL::918 0
+DEAL::919 0
+DEAL::920 0
+DEAL::921 0
+DEAL::922 0
+DEAL::923 0
+DEAL::924 0
+DEAL::925 0
+DEAL::926 0
+DEAL::927 0
+DEAL::928 0
+DEAL::929 0
+DEAL::930 0
+DEAL::931 0
+DEAL::932 0
+DEAL::933 0
+DEAL::934 0
+DEAL::935 0
+DEAL::936 1
+DEAL::937 0
+DEAL::938 1
+DEAL::939 0
+DEAL::940 1
+DEAL::941 1
+DEAL::942 1
+DEAL::943 0
+DEAL::944 0
+DEAL::945 0
+DEAL::946 0
+DEAL::947 0
+DEAL::948 0
+DEAL::949 0
+DEAL::950 0
+DEAL::951 1
+DEAL::952 0
+DEAL::953 0
+DEAL::954 0
+DEAL::955 0
+DEAL::956 0
+DEAL::957 0
+DEAL::958 0
+DEAL::959 0
+DEAL::960 0
+DEAL::961 0
+DEAL::962 0
+DEAL::963 0
+DEAL::964 0
+DEAL::965 0
+DEAL::966 1
+DEAL::967 0
+DEAL::968 0
+DEAL::969 0
+DEAL::970 1
+DEAL::971 0
+DEAL::972 1
+DEAL::973 1
+DEAL::974 1
+DEAL::975 1
+DEAL::976 1
+DEAL::977 1
+DEAL::978 1
+DEAL::979 1
+DEAL::980 1
+DEAL::981 1
+DEAL::982 1
+DEAL::983 1
+DEAL::984 1
+DEAL::985 1
+DEAL::986 1
+DEAL::987 1
+DEAL::988 1
+DEAL::989 1
+DEAL::990 1
+DEAL::991 0
+DEAL::992 1
+DEAL::993 0
+DEAL::994 1
+DEAL::995 1
+DEAL::996 1
+DEAL::997 1
+DEAL::998 1
+DEAL::999 1
+DEAL::1000 1
+DEAL::1001 1
+DEAL::1002 0
+DEAL::1003 0
+DEAL::1004 0
+DEAL::1005 0
+DEAL::1006 0
+DEAL::1007 0
+DEAL::1008 0
+DEAL::1009 0
+DEAL::1010 0
+DEAL::1011 0
+DEAL::1012 0
+DEAL::1013 0
+DEAL::1014 0
+DEAL::1015 0
+DEAL::1016 0
+DEAL::1017 0
+DEAL::1018 0
+DEAL::1019 0
+DEAL::1020 0
+DEAL::1021 0
+DEAL::1022 0
+DEAL::1023 0
+DEAL::1024 0
+DEAL::1025 0
+DEAL::1026 0
+DEAL::1027 0
+DEAL::1028 0
+DEAL::1029 0
+DEAL::1030 0
+DEAL::1031 0
+DEAL::1032 0
+DEAL::1033 0
+DEAL::1034 0
+DEAL::1035 0
+DEAL::1036 0
+DEAL::1037 0
+DEAL::1038 0
+DEAL::1039 0
+DEAL::1040 0
+DEAL::1041 0
+DEAL::1042 0
+DEAL::1043 0
+DEAL::1044 0
+DEAL::1045 0
+DEAL::1046 0
+DEAL::1047 0
+DEAL::1048 0
+DEAL::1049 0
+DEAL::1050 0
+DEAL::1051 1
+DEAL::1052 0
+DEAL::1053 1
+DEAL::1054 0
+DEAL::1055 1
+DEAL::1056 0
+DEAL::1057 0
+DEAL::1058 0
+DEAL::1059 0
+DEAL::1060 0
+DEAL::1061 0
+DEAL::1062 0
+DEAL::1063 0
+DEAL::1064 0
+DEAL::1065 0
+DEAL::1066 0
+DEAL::1067 0
+DEAL::1068 0
+DEAL::1069 1
+DEAL::1070 0
+DEAL::1071 0
+DEAL::1072 0
+DEAL::1073 0
+DEAL::1074 0
+DEAL::1075 0
+DEAL::1076 0
+DEAL::1077 1
+DEAL::1078 0
+DEAL::1079 0
+DEAL::1080 0
+DEAL::1081 0
+DEAL::1082 0
+DEAL::1083 0
+DEAL::1084 0
+DEAL::1085 0
+DEAL::1086 0
+DEAL::1087 0
+DEAL::1088 0
+DEAL::1089 0
+DEAL::1090 0
+DEAL::1091 0
+DEAL::1092 0
+DEAL::1093 0
+DEAL::1094 0
+DEAL::1095 0
+DEAL::1096 0
+DEAL::1097 0
+DEAL::1098 0
+DEAL::1099 0
+DEAL::1100 0
+DEAL::1101 0
+DEAL::1102 0
+DEAL::1103 0
+DEAL::1104 0
+DEAL::1105 0
+DEAL::1106 0
+DEAL::1107 0
+DEAL::1108 0
+DEAL::1109 0
+DEAL::1110 0
+DEAL::1111 0
+DEAL::1112 0
+DEAL::1113 0
+DEAL::1114 0
+DEAL::1115 0
+DEAL::1116 0
+DEAL::1117 0
+DEAL::1118 0
+DEAL::1119 0
+DEAL::1120 0
+DEAL::1121 0
+DEAL::1122 0
+DEAL::1123 0
+DEAL::1124 0
+DEAL::1125 0
+DEAL::1126 0
+DEAL::1127 1
+DEAL::1128 0
+DEAL::1129 0
+DEAL::1130 0
+DEAL::1131 1
+DEAL::1132 0
+DEAL::1133 0
+DEAL::1134 0
+DEAL::1135 0
+DEAL::1136 0
+DEAL::1137 0
+DEAL::1138 0
+DEAL::1139 0
+DEAL::1140 0
+DEAL::1141 0
+DEAL::1142 1
+DEAL::1143 0
+DEAL::1144 0
+DEAL::1145 0
+DEAL::1146 0
+DEAL::1147 0
+DEAL::1148 2
+DEAL::1149 3
+DEAL::1150 2
+DEAL::1151 3
+DEAL::1152 2
+DEAL::1153 2
+DEAL::1154 2
+DEAL::1155 2
+DEAL::1156 3
+DEAL::1157 2
+DEAL::1158 2
+DEAL::1159 3
+DEAL::1160 2
+DEAL::1161 3
+DEAL::1162 2
+DEAL::1163 2
+DEAL::1164 2
+DEAL::1165 2
+DEAL::1166 3
+DEAL::1167 3
+DEAL::1168 3
+DEAL::1169 3
+DEAL::1170 3
+DEAL::1171 2
+DEAL::1172 3
+DEAL::1173 2
+DEAL::1174 3
+DEAL::1175 3
+DEAL::1176 3
+DEAL::1177 3
+DEAL::1178 3
+DEAL::1179 3
+DEAL::1180 3
+DEAL::1181 3
+DEAL::1182 3
+DEAL::1183 2
+DEAL::1184 3
+DEAL::1185 3
+DEAL::1186 3
+DEAL::1187 3
+DEAL::1188 2
+DEAL::1189 3
+DEAL::1190 3
+DEAL::1191 3
+DEAL::1192 3
+DEAL::1193 3
+DEAL::1194 3
+DEAL::1195 3
+DEAL::1196 3
+DEAL::1197 2
+DEAL::1198 3
+DEAL::1199 2
+DEAL::1200 2
+DEAL::1201 2
+DEAL::1202 2
+DEAL::1203 2
+DEAL::1204 2
+DEAL::1205 3
+DEAL::1206 2
+DEAL::1207 2
+DEAL::1208 2
+DEAL::1209 2
+DEAL::1210 2
+DEAL::1211 2
+DEAL::1212 3
+DEAL::1213 3
+DEAL::1214 2
+DEAL::1215 2
+DEAL::1216 2
+DEAL::1217 3
+DEAL::1218 2
+DEAL::1219 2
+DEAL::1220 3
+DEAL::1221 2
+DEAL::1222 2
+DEAL::1223 2
+DEAL::1224 2
+DEAL::1225 2
+DEAL::1226 2
+DEAL::1227 2
+DEAL::1228 2
+DEAL::1229 3
+DEAL::1230 2
+DEAL::1231 2
+DEAL::1232 2
+DEAL::1233 2
+DEAL::1234 2
+DEAL::1235 3
+DEAL::1236 3
+DEAL::1237 3
+DEAL::1238 3
+DEAL::1239 3
+DEAL::1240 3
+DEAL::1241 3
+DEAL::1242 3
+DEAL::1243 3
+DEAL::1244 2
+DEAL::1245 3
+DEAL::1246 3
+DEAL::1247 3
+DEAL::1248 4
+DEAL::1249 3
 DEAL::1250 4
-DEAL::1251 1
-DEAL::1252 4
-DEAL::1253 4
-DEAL::1254 4
-DEAL::1255 4
-DEAL::1256 4
-DEAL::1257 4
+DEAL::1251 3
+DEAL::1252 3
+DEAL::1253 3
+DEAL::1254 3
+DEAL::1255 3
+DEAL::1256 3
+DEAL::1257 3
 DEAL::1258 4
-DEAL::1259 4
+DEAL::1259 3
 DEAL::1260 4
 DEAL::1261 4
-DEAL::1262 4
-DEAL::1263 4
+DEAL::1262 3
+DEAL::1263 3
 DEAL::1264 4
 DEAL::1265 4
-DEAL::1266 4
+DEAL::1266 3
 DEAL::1267 4
 DEAL::1268 4
 DEAL::1269 4
-DEAL::1270 4
-DEAL::1271 1
-DEAL::1272 1
-DEAL::1273 4
-DEAL::1274 4
-DEAL::1275 1
-DEAL::1276 4
-DEAL::1277 1
-DEAL::1278 1
-DEAL::1279 1
-DEAL::1280 4
-DEAL::1281 4
-DEAL::1282 4
-DEAL::1283 4
-DEAL::1284 1
-DEAL::1285 4
+DEAL::1270 3
+DEAL::1271 3
+DEAL::1272 3
+DEAL::1273 3
+DEAL::1274 3
+DEAL::1275 3
+DEAL::1276 3
+DEAL::1277 3
+DEAL::1278 3
+DEAL::1279 3
+DEAL::1280 3
+DEAL::1281 3
+DEAL::1282 3
+DEAL::1283 3
+DEAL::1284 3
+DEAL::1285 3
 DEAL::1286 4
-DEAL::1287 4
-DEAL::1288 4
-DEAL::1289 4
-DEAL::1290 1
-DEAL::1291 1
+DEAL::1287 3
+DEAL::1288 3
+DEAL::1289 3
+DEAL::1290 3
+DEAL::1291 3
 DEAL::1292 4
 DEAL::1293 4
-DEAL::1294 1
-DEAL::1295 4
-DEAL::1296 4
-DEAL::1297 4
-DEAL::1298 0
-DEAL::1299 4
-DEAL::1300 0
-DEAL::1301 4
-DEAL::1302 1
-DEAL::1303 1
-DEAL::1304 4
-DEAL::1305 4
-DEAL::1306 4
-DEAL::1307 1
-DEAL::1308 4
-DEAL::1309 4
-DEAL::1310 1
-DEAL::1311 0
-DEAL::1312 1
-DEAL::1313 1
-DEAL::1314 1
-DEAL::1315 1
-DEAL::1316 0
-DEAL::1317 1
-DEAL::1318 1
-DEAL::1319 1
-DEAL::1320 4
-DEAL::1321 1
-DEAL::1322 1
-DEAL::1323 1
+DEAL::1294 3
+DEAL::1295 3
+DEAL::1296 3
+DEAL::1297 3
+DEAL::1298 3
+DEAL::1299 3
+DEAL::1300 3
+DEAL::1301 3
+DEAL::1302 3
+DEAL::1303 3
+DEAL::1304 3
+DEAL::1305 3
+DEAL::1306 3
+DEAL::1307 3
+DEAL::1308 3
+DEAL::1309 3
+DEAL::1310 3
+DEAL::1311 3
+DEAL::1312 3
+DEAL::1313 3
+DEAL::1314 3
+DEAL::1315 3
+DEAL::1316 3
+DEAL::1317 3
+DEAL::1318 3
+DEAL::1319 4
+DEAL::1320 3
+DEAL::1321 3
+DEAL::1322 3
+DEAL::1323 3
 DEAL::1324 2
-DEAL::1325 0
-DEAL::1326 0
-DEAL::1327 0
-DEAL::1328 0
-DEAL::1329 0
-DEAL::1330 0
-DEAL::1331 0
-DEAL::1332 0
-DEAL::1333 0
+DEAL::1325 2
+DEAL::1326 3
+DEAL::1327 3
+DEAL::1328 3
+DEAL::1329 3
+DEAL::1330 3
+DEAL::1331 2
+DEAL::1332 3
+DEAL::1333 2
 DEAL::1334 2
-DEAL::1335 0
-DEAL::1336 1
-DEAL::1337 0
-DEAL::1338 0
-DEAL::1339 0
-DEAL::1340 0
-DEAL::1341 0
-DEAL::1342 0
-DEAL::1343 0
-DEAL::1344 1
-DEAL::1345 0
-DEAL::1346 0
-DEAL::1347 1
-DEAL::1348 1
-DEAL::1349 0
-DEAL::1350 0
-DEAL::1351 0
-DEAL::1352 0
-DEAL::1353 0
-DEAL::1354 0
-DEAL::1355 0
-DEAL::1356 0
-DEAL::1357 1
-DEAL::1358 0
-DEAL::1359 0
-DEAL::1360 1
-DEAL::1361 1
-DEAL::1362 0
-DEAL::1363 1
-DEAL::1364 0
-DEAL::1365 0
-DEAL::1366 0
-DEAL::1367 0
-DEAL::1368 0
-DEAL::1369 0
-DEAL::1370 0
-DEAL::1371 0
-DEAL::1372 0
-DEAL::1373 0
-DEAL::1374 0
-DEAL::1375 0
-DEAL::1376 0
-DEAL::1377 0
-DEAL::1378 0
-DEAL::1379 0
-DEAL::1380 0
-DEAL::1381 0
-DEAL::1382 0
-DEAL::1383 0
-DEAL::1384 0
-DEAL::1385 0
-DEAL::1386 0
-DEAL::1387 0
-DEAL::1388 0
-DEAL::1389 0
-DEAL::1390 0
-DEAL::1391 0
-DEAL::1392 1
-DEAL::1393 0
-DEAL::1394 0
-DEAL::1395 0
-DEAL::1396 1
-DEAL::1397 1
-DEAL::1398 1
-DEAL::1399 0
-DEAL::1400 1
-DEAL::1401 1
-DEAL::1402 1
-DEAL::1403 1
-DEAL::1404 1
-DEAL::1405 1
-DEAL::1406 1
-DEAL::1407 0
-DEAL::1408 1
-DEAL::1409 1
-DEAL::1410 0
-DEAL::1411 1
-DEAL::1412 1
-DEAL::1413 1
-DEAL::1414 1
-DEAL::1415 0
-DEAL::1416 1
-DEAL::1417 1
-DEAL::1418 1
-DEAL::1419 1
-DEAL::1420 1
-DEAL::1421 1
-DEAL::1422 1
-DEAL::1423 1
-DEAL::1424 1
-DEAL::1425 1
-DEAL::1426 1
-DEAL::1427 1
-DEAL::1428 1
-DEAL::1429 1
-DEAL::1430 1
-DEAL::1431 1
-DEAL::1432 1
-DEAL::1433 1
-DEAL::1434 1
-DEAL::1435 1
-DEAL::1436 1
-DEAL::1437 1
-DEAL::1438 1
-DEAL::1439 1
-DEAL::1440 1
-DEAL::1441 1
-DEAL::1442 1
-DEAL::1443 1
-DEAL::1444 1
-DEAL::1445 1
-DEAL::1446 0
-DEAL::1447 0
-DEAL::1448 1
-DEAL::1449 1
-DEAL::1450 0
-DEAL::1451 0
-DEAL::1452 0
-DEAL::1453 1
-DEAL::1454 1
-DEAL::1455 0
-DEAL::1456 1
-DEAL::1457 1
-DEAL::1458 1
-DEAL::1459 1
-DEAL::1460 0
-DEAL::1461 1
-DEAL::1462 0
-DEAL::1463 1
-DEAL::1464 0
-DEAL::1465 0
-DEAL::1466 1
-DEAL::1467 1
-DEAL::1468 1
-DEAL::1469 1
+DEAL::1335 2
+DEAL::1336 3
+DEAL::1337 2
+DEAL::1338 3
+DEAL::1339 3
+DEAL::1340 3
+DEAL::1341 3
+DEAL::1342 3
+DEAL::1343 3
+DEAL::1344 3
+DEAL::1345 4
+DEAL::1346 3
+DEAL::1347 3
+DEAL::1348 3
+DEAL::1349 3
+DEAL::1350 3
+DEAL::1351 3
+DEAL::1352 3
+DEAL::1353 3
+DEAL::1354 3
+DEAL::1355 3
+DEAL::1356 3
+DEAL::1357 3
+DEAL::1358 3
+DEAL::1359 3
+DEAL::1360 3
+DEAL::1361 3
+DEAL::1362 3
+DEAL::1363 3
+DEAL::1364 2
+DEAL::1365 4
+DEAL::1366 3
+DEAL::1367 3
+DEAL::1368 4
+DEAL::1369 4
+DEAL::1370 4
+DEAL::1371 3
+DEAL::1372 2
+DEAL::1373 2
+DEAL::1374 2
+DEAL::1375 3
+DEAL::1376 2
+DEAL::1377 3
+DEAL::1378 2
+DEAL::1379 3
+DEAL::1380 4
+DEAL::1381 3
+DEAL::1382 3
+DEAL::1383 3
+DEAL::1384 3
+DEAL::1385 3
+DEAL::1386 3
+DEAL::1387 3
+DEAL::1388 4
+DEAL::1389 4
+DEAL::1390 3
+DEAL::1391 4
+DEAL::1392 3
+DEAL::1393 3
+DEAL::1394 3
+DEAL::1395 3
+DEAL::1396 3
+DEAL::1397 3
+DEAL::1398 3
+DEAL::1399 2
+DEAL::1400 3
+DEAL::1401 3
+DEAL::1402 3
+DEAL::1403 3
+DEAL::1404 3
+DEAL::1405 3
+DEAL::1406 3
+DEAL::1407 2
+DEAL::1408 3
+DEAL::1409 3
+DEAL::1410 2
+DEAL::1411 3
+DEAL::1412 3
+DEAL::1413 3
+DEAL::1414 3
+DEAL::1415 2
+DEAL::1416 3
+DEAL::1417 3
+DEAL::1418 3
+DEAL::1419 3
+DEAL::1420 3
+DEAL::1421 3
+DEAL::1422 3
+DEAL::1423 3
+DEAL::1424 3
+DEAL::1425 3
+DEAL::1426 3
+DEAL::1427 3
+DEAL::1428 3
+DEAL::1429 3
+DEAL::1430 3
+DEAL::1431 3
+DEAL::1432 3
+DEAL::1433 3
+DEAL::1434 3
+DEAL::1435 3
+DEAL::1436 3
+DEAL::1437 3
+DEAL::1438 3
+DEAL::1439 3
+DEAL::1440 3
+DEAL::1441 3
+DEAL::1442 3
+DEAL::1443 3
+DEAL::1444 3
+DEAL::1445 3
+DEAL::1446 3
+DEAL::1447 2
+DEAL::1448 3
+DEAL::1449 3
+DEAL::1450 3
+DEAL::1451 3
+DEAL::1452 2
+DEAL::1453 3
+DEAL::1454 3
+DEAL::1455 2
+DEAL::1456 3
+DEAL::1457 3
+DEAL::1458 3
+DEAL::1459 3
+DEAL::1460 2
+DEAL::1461 3
+DEAL::1462 3
+DEAL::1463 3
+DEAL::1464 3
+DEAL::1465 3
+DEAL::1466 3
+DEAL::1467 3
+DEAL::1468 3
+DEAL::1469 3
 DEAL::1470 4
-DEAL::1471 1
+DEAL::1471 4
 DEAL::1472 4
-DEAL::1473 1
+DEAL::1473 4
 DEAL::1474 4
-DEAL::1475 1
+DEAL::1475 4
 DEAL::1476 4
-DEAL::1477 1
+DEAL::1477 4
 DEAL::1478 4
-DEAL::1479 4
+DEAL::1479 0
 DEAL::1480 4
-DEAL::1481 1
+DEAL::1481 4
 DEAL::1482 4
-DEAL::1483 4
+DEAL::1483 0
 DEAL::1484 4
 DEAL::1485 4
-DEAL::1486 4
+DEAL::1486 0
 DEAL::1487 4
 DEAL::1488 4
 DEAL::1489 4
@@ -9821,7 +9821,7 @@ DEAL::1496 4
 DEAL::1497 4
 DEAL::1498 4
 DEAL::1499 4
-DEAL::1500 4
+DEAL::1500 0
 DEAL::1501 4
 DEAL::1502 4
 DEAL::1503 4
@@ -9829,18 +9829,18 @@ DEAL::1504 4
 DEAL::1505 4
 DEAL::1506 4
 DEAL::1507 4
-DEAL::1508 4
+DEAL::1508 0
 DEAL::1509 4
 DEAL::1510 4
 DEAL::1511 4
 DEAL::1512 4
 DEAL::1513 4
-DEAL::1514 1
+DEAL::1514 4
 DEAL::1515 4
-DEAL::1516 1
+DEAL::1516 4
 DEAL::1517 4
 DEAL::1518 4
-DEAL::1519 1
+DEAL::1519 4
 DEAL::1520 4
 DEAL::1521 4
 DEAL::1522 4
@@ -9862,23 +9862,23 @@ DEAL::1537 4
 DEAL::1538 4
 DEAL::1539 4
 DEAL::1540 4
-DEAL::1541 1
+DEAL::1541 4
 DEAL::1542 4
-DEAL::1543 1
+DEAL::1543 4
 DEAL::1544 4
-DEAL::1545 1
+DEAL::1545 4
 DEAL::1546 4
-DEAL::1547 1
-DEAL::1548 1
-DEAL::1549 1
+DEAL::1547 4
+DEAL::1548 4
+DEAL::1549 4
 DEAL::1550 4
-DEAL::1551 1
+DEAL::1551 4
 DEAL::1552 4
-DEAL::1553 1
+DEAL::1553 4
 DEAL::1554 4
 DEAL::1555 4
 DEAL::1556 4
-DEAL::1557 1
+DEAL::1557 4
 DEAL::1558 4
 DEAL::1559 4
 DEAL::1560 4
@@ -9892,17 +9892,17 @@ DEAL::1567 4
 DEAL::1568 4
 DEAL::1569 4
 DEAL::1570 4
-DEAL::1571 1
+DEAL::1571 4
 DEAL::1572 4
-DEAL::1573 1
-DEAL::1574 1
-DEAL::1575 1
-DEAL::1576 1
+DEAL::1573 4
+DEAL::1574 4
+DEAL::1575 4
+DEAL::1576 4
 DEAL::1577 4
-DEAL::1578 1
+DEAL::1578 4
 DEAL::1579 4
 DEAL::1580 4
-DEAL::1581 1
+DEAL::1581 4
 DEAL::1582 4
 DEAL::1583 2
 DEAL::1584 2
@@ -9913,51 +9913,51 @@ DEAL::1588 2
 DEAL::1589 2
 DEAL::1590 2
 DEAL::1591 2
-DEAL::1592 2
+DEAL::1592 1
 DEAL::1593 2
 DEAL::1594 2
 DEAL::1595 2
-DEAL::1596 2
+DEAL::1596 1
 DEAL::1597 2
 DEAL::1598 2
 DEAL::1599 2
 DEAL::1600 2
-DEAL::1601 2
-DEAL::1602 2
+DEAL::1601 1
+DEAL::1602 1
 DEAL::1603 2
-DEAL::1604 2
-DEAL::1605 2
-DEAL::1606 2
+DEAL::1604 1
+DEAL::1605 1
+DEAL::1606 1
 DEAL::1607 2
-DEAL::1608 2
+DEAL::1608 1
 DEAL::1609 2
-DEAL::1610 2
-DEAL::1611 2
-DEAL::1612 2
-DEAL::1613 2
+DEAL::1610 1
+DEAL::1611 1
+DEAL::1612 1
+DEAL::1613 1
 DEAL::1614 2
-DEAL::1615 2
-DEAL::1616 2
-DEAL::1617 2
+DEAL::1615 1
+DEAL::1616 1
+DEAL::1617 1
 DEAL::1618 2
 DEAL::1619 2
 DEAL::1620 2
 DEAL::1621 2
 DEAL::1622 2
 DEAL::1623 2
-DEAL::1624 0
+DEAL::1624 2
 DEAL::1625 2
 DEAL::1626 2
 DEAL::1627 2
 DEAL::1628 2
 DEAL::1629 2
-DEAL::1630 0
-DEAL::1631 0
-DEAL::1632 2
-DEAL::1633 0
+DEAL::1630 2
+DEAL::1631 2
+DEAL::1632 1
+DEAL::1633 2
 DEAL::1634 2
-DEAL::1635 2
-DEAL::1636 0
+DEAL::1635 1
+DEAL::1636 2
 DEAL::1637 2
 DEAL::1638 2
 DEAL::1639 2
@@ -9980,11 +9980,11 @@ DEAL::1655 2
 DEAL::1656 2
 DEAL::1657 2
 DEAL::1658 2
-DEAL::1659 2
+DEAL::1659 1
 DEAL::1660 2
 DEAL::1661 2
 DEAL::1662 2
-DEAL::1663 2
+DEAL::1663 1
 DEAL::1664 2
 DEAL::1665 2
 DEAL::1666 2
@@ -9995,7 +9995,7 @@ DEAL::1670 2
 DEAL::1671 2
 DEAL::1672 2
 DEAL::1673 2
-DEAL::1674 0
+DEAL::1674 2
 DEAL::1675 2
 DEAL::1676 2
 DEAL::1677 2
@@ -10003,728 +10003,728 @@ DEAL::1678 2
 DEAL::1679 2
 DEAL::1680 2
 DEAL::1681 2
-DEAL::1682 0
+DEAL::1682 2
 DEAL::1683 2
-DEAL::1684 0
+DEAL::1684 2
 DEAL::1685 2
 DEAL::1686 2
-DEAL::1687 2
-DEAL::1688 2
-DEAL::1689 2
-DEAL::1690 2
-DEAL::1691 2
-DEAL::1692 2
-DEAL::1693 2
-DEAL::1694 2
-DEAL::1695 2
-DEAL::1696 2
-DEAL::1697 2
-DEAL::1698 2
-DEAL::1699 2
-DEAL::1700 2
-DEAL::1701 2
-DEAL::1702 2
-DEAL::1703 2
-DEAL::1704 2
-DEAL::1705 0
+DEAL::1687 1
+DEAL::1688 1
+DEAL::1689 1
+DEAL::1690 1
+DEAL::1691 1
+DEAL::1692 1
+DEAL::1693 1
+DEAL::1694 1
+DEAL::1695 1
+DEAL::1696 1
+DEAL::1697 1
+DEAL::1698 1
+DEAL::1699 1
+DEAL::1700 1
+DEAL::1701 1
+DEAL::1702 1
+DEAL::1703 1
+DEAL::1704 1
+DEAL::1705 2
 DEAL::1706 2
-DEAL::1707 2
-DEAL::1708 0
-DEAL::1709 0
-DEAL::1710 2
-DEAL::1711 2
-DEAL::1712 2
+DEAL::1707 1
+DEAL::1708 2
+DEAL::1709 1
+DEAL::1710 1
+DEAL::1711 1
+DEAL::1712 1
 DEAL::1713 2
-DEAL::1714 2
-DEAL::1715 0
-DEAL::1716 2
-DEAL::1717 0
-DEAL::1718 2
-DEAL::1719 2
-DEAL::1720 0
-DEAL::1721 2
-DEAL::1722 2
-DEAL::1723 2
-DEAL::1724 2
-DEAL::1725 2
-DEAL::1726 2
-DEAL::1727 2
+DEAL::1714 1
+DEAL::1715 1
+DEAL::1716 1
+DEAL::1717 2
+DEAL::1718 1
+DEAL::1719 1
+DEAL::1720 1
+DEAL::1721 1
+DEAL::1722 1
+DEAL::1723 1
+DEAL::1724 1
+DEAL::1725 1
+DEAL::1726 1
+DEAL::1727 1
 DEAL::1728 2
-DEAL::1729 2
+DEAL::1729 1
 DEAL::1730 2
-DEAL::1731 2
-DEAL::1732 2
-DEAL::1733 2
-DEAL::1734 2
-DEAL::1735 2
-DEAL::1736 2
-DEAL::1737 2
-DEAL::1738 2
-DEAL::1739 2
-DEAL::1740 2
-DEAL::1741 2
-DEAL::1742 2
-DEAL::1743 2
-DEAL::1744 2
-DEAL::1745 2
-DEAL::1746 2
-DEAL::1747 2
-DEAL::1748 0
-DEAL::1749 2
-DEAL::1750 2
-DEAL::1751 2
-DEAL::1752 2
-DEAL::1753 0
-DEAL::1754 2
-DEAL::1755 2
-DEAL::1756 2
-DEAL::1757 0
-DEAL::1758 0
-DEAL::1759 2
-DEAL::1760 2
-DEAL::1761 2
-DEAL::1762 2
-DEAL::1763 2
-DEAL::1764 2
-DEAL::1765 2
-DEAL::1766 2
-DEAL::1767 2
-DEAL::1768 2
-DEAL::1769 2
-DEAL::1770 2
-DEAL::1771 2
-DEAL::1772 2
-DEAL::1773 2
-DEAL::1774 2
-DEAL::1775 2
-DEAL::1776 2
-DEAL::1777 2
-DEAL::1778 2
-DEAL::1779 2
-DEAL::1780 2
-DEAL::1781 2
-DEAL::1782 2
-DEAL::1783 3
-DEAL::1784 3
-DEAL::1785 3
-DEAL::1786 3
-DEAL::1787 3
-DEAL::1788 3
-DEAL::1789 2
-DEAL::1790 3
-DEAL::1791 3
-DEAL::1792 3
-DEAL::1793 3
-DEAL::1794 3
-DEAL::1795 3
-DEAL::1796 3
-DEAL::1797 3
-DEAL::1798 3
-DEAL::1799 2
-DEAL::1800 2
-DEAL::1801 2
-DEAL::1802 2
-DEAL::1803 2
-DEAL::1804 2
-DEAL::1805 2
-DEAL::1806 2
-DEAL::1807 2
-DEAL::1808 2
-DEAL::1809 2
-DEAL::1810 2
-DEAL::1811 3
-DEAL::1812 2
-DEAL::1813 3
-DEAL::1814 2
-DEAL::1815 3
-DEAL::1816 2
-DEAL::1817 2
-DEAL::1818 2
-DEAL::1819 3
-DEAL::1820 2
-DEAL::1821 2
-DEAL::1822 2
-DEAL::1823 2
-DEAL::1824 2
-DEAL::1825 2
-DEAL::1826 2
-DEAL::1827 2
-DEAL::1828 2
-DEAL::1829 2
-DEAL::1830 2
-DEAL::1831 2
-DEAL::1832 2
-DEAL::1833 2
-DEAL::1834 2
-DEAL::1835 2
-DEAL::1836 3
-DEAL::1837 3
-DEAL::1838 2
-DEAL::1839 2
-DEAL::1840 2
-DEAL::1841 0
-DEAL::1842 0
-DEAL::1843 0
-DEAL::1844 2
-DEAL::1845 0
-DEAL::1846 0
-DEAL::1847 2
-DEAL::1848 2
-DEAL::1849 3
-DEAL::1850 2
-DEAL::1851 2
-DEAL::1852 2
-DEAL::1853 3
-DEAL::1854 3
-DEAL::1855 3
-DEAL::1856 2
-DEAL::1857 3
-DEAL::1858 3
-DEAL::1859 3
-DEAL::1860 3
-DEAL::1861 2
-DEAL::1862 3
-DEAL::1863 0
-DEAL::1864 3
-DEAL::1865 3
-DEAL::1866 3
-DEAL::1867 0
-DEAL::1868 0
-DEAL::1869 3
-DEAL::1870 3
-DEAL::1871 3
-DEAL::1872 0
-DEAL::1873 2
-DEAL::1874 3
-DEAL::1875 0
-DEAL::1876 2
+DEAL::1731 1
+DEAL::1732 1
+DEAL::1733 1
+DEAL::1734 1
+DEAL::1735 1
+DEAL::1736 1
+DEAL::1737 1
+DEAL::1738 1
+DEAL::1739 1
+DEAL::1740 1
+DEAL::1741 1
+DEAL::1742 1
+DEAL::1743 1
+DEAL::1744 1
+DEAL::1745 1
+DEAL::1746 1
+DEAL::1747 1
+DEAL::1748 2
+DEAL::1749 2
+DEAL::1750 2
+DEAL::1751 2
+DEAL::1752 1
+DEAL::1753 2
+DEAL::1754 2
+DEAL::1755 2
+DEAL::1756 1
+DEAL::1757 2
+DEAL::1758 2
+DEAL::1759 1
+DEAL::1760 1
+DEAL::1761 1
+DEAL::1762 1
+DEAL::1763 1
+DEAL::1764 1
+DEAL::1765 1
+DEAL::1766 1
+DEAL::1767 1
+DEAL::1768 1
+DEAL::1769 1
+DEAL::1770 1
+DEAL::1771 1
+DEAL::1772 1
+DEAL::1773 1
+DEAL::1774 1
+DEAL::1775 1
+DEAL::1776 1
+DEAL::1777 1
+DEAL::1778 1
+DEAL::1779 1
+DEAL::1780 1
+DEAL::1781 1
+DEAL::1782 1
+DEAL::1783 0
+DEAL::1784 1
+DEAL::1785 1
+DEAL::1786 1
+DEAL::1787 1
+DEAL::1788 1
+DEAL::1789 1
+DEAL::1790 1
+DEAL::1791 0
+DEAL::1792 0
+DEAL::1793 0
+DEAL::1794 1
+DEAL::1795 1
+DEAL::1796 1
+DEAL::1797 1
+DEAL::1798 1
+DEAL::1799 1
+DEAL::1800 1
+DEAL::1801 1
+DEAL::1802 1
+DEAL::1803 1
+DEAL::1804 1
+DEAL::1805 1
+DEAL::1806 1
+DEAL::1807 1
+DEAL::1808 1
+DEAL::1809 1
+DEAL::1810 1
+DEAL::1811 1
+DEAL::1812 1
+DEAL::1813 1
+DEAL::1814 1
+DEAL::1815 1
+DEAL::1816 1
+DEAL::1817 1
+DEAL::1818 1
+DEAL::1819 1
+DEAL::1820 1
+DEAL::1821 1
+DEAL::1822 1
+DEAL::1823 1
+DEAL::1824 1
+DEAL::1825 1
+DEAL::1826 1
+DEAL::1827 1
+DEAL::1828 1
+DEAL::1829 1
+DEAL::1830 1
+DEAL::1831 1
+DEAL::1832 1
+DEAL::1833 1
+DEAL::1834 1
+DEAL::1835 1
+DEAL::1836 1
+DEAL::1837 1
+DEAL::1838 1
+DEAL::1839 1
+DEAL::1840 1
+DEAL::1841 1
+DEAL::1842 1
+DEAL::1843 1
+DEAL::1844 1
+DEAL::1845 1
+DEAL::1846 2
+DEAL::1847 1
+DEAL::1848 1
+DEAL::1849 1
+DEAL::1850 1
+DEAL::1851 1
+DEAL::1852 1
+DEAL::1853 1
+DEAL::1854 1
+DEAL::1855 1
+DEAL::1856 1
+DEAL::1857 1
+DEAL::1858 1
+DEAL::1859 1
+DEAL::1860 1
+DEAL::1861 1
+DEAL::1862 1
+DEAL::1863 4
+DEAL::1864 1
+DEAL::1865 1
+DEAL::1866 1
+DEAL::1867 4
+DEAL::1868 1
+DEAL::1869 1
+DEAL::1870 1
+DEAL::1871 1
+DEAL::1872 1
+DEAL::1873 1
+DEAL::1874 1
+DEAL::1875 2
+DEAL::1876 1
 DEAL::1877 2
-DEAL::1878 2
-DEAL::1879 2
-DEAL::1880 0
-DEAL::1881 2
-DEAL::1882 0
-DEAL::1883 2
-DEAL::1884 0
-DEAL::1885 2
-DEAL::1886 2
-DEAL::1887 2
-DEAL::1888 3
-DEAL::1889 2
-DEAL::1890 3
-DEAL::1891 2
-DEAL::1892 2
-DEAL::1893 2
-DEAL::1894 2
-DEAL::1895 0
-DEAL::1896 0
-DEAL::1897 0
-DEAL::1898 0
-DEAL::1899 0
-DEAL::1900 0
-DEAL::1901 0
-DEAL::1902 0
-DEAL::1903 0
-DEAL::1904 0
-DEAL::1905 2
-DEAL::1906 0
-DEAL::1907 0
-DEAL::1908 0
-DEAL::1909 0
-DEAL::1910 3
-DEAL::1911 2
-DEAL::1912 3
-DEAL::1913 2
-DEAL::1914 0
-DEAL::1915 2
-DEAL::1916 2
-DEAL::1917 3
-DEAL::1918 3
-DEAL::1919 3
-DEAL::1920 3
-DEAL::1921 3
-DEAL::1922 3
-DEAL::1923 3
-DEAL::1924 3
-DEAL::1925 3
-DEAL::1926 3
-DEAL::1927 3
-DEAL::1928 3
-DEAL::1929 3
-DEAL::1930 3
-DEAL::1931 3
-DEAL::1932 3
-DEAL::1933 3
-DEAL::1934 3
-DEAL::1935 3
-DEAL::1936 3
-DEAL::1937 3
-DEAL::1938 3
-DEAL::1939 3
-DEAL::1940 3
-DEAL::1941 3
-DEAL::1942 3
-DEAL::1943 3
-DEAL::1944 3
-DEAL::1945 3
-DEAL::1946 3
-DEAL::1947 3
-DEAL::1948 3
-DEAL::1949 3
-DEAL::1950 3
-DEAL::1951 3
-DEAL::1952 3
-DEAL::1953 3
-DEAL::1954 3
-DEAL::1955 3
-DEAL::1956 3
-DEAL::1957 3
-DEAL::1958 3
-DEAL::1959 3
-DEAL::1960 3
-DEAL::1961 3
-DEAL::1962 3
-DEAL::1963 3
-DEAL::1964 3
-DEAL::1965 3
-DEAL::1966 3
-DEAL::1967 3
-DEAL::1968 3
-DEAL::1969 3
-DEAL::1970 3
-DEAL::1971 3
-DEAL::1972 3
-DEAL::1973 3
-DEAL::1974 3
-DEAL::1975 3
+DEAL::1878 1
+DEAL::1879 1
+DEAL::1880 2
+DEAL::1881 1
+DEAL::1882 2
+DEAL::1883 1
+DEAL::1884 1
+DEAL::1885 1
+DEAL::1886 1
+DEAL::1887 1
+DEAL::1888 1
+DEAL::1889 1
+DEAL::1890 1
+DEAL::1891 1
+DEAL::1892 1
+DEAL::1893 1
+DEAL::1894 1
+DEAL::1895 1
+DEAL::1896 1
+DEAL::1897 2
+DEAL::1898 1
+DEAL::1899 1
+DEAL::1900 1
+DEAL::1901 4
+DEAL::1902 1
+DEAL::1903 4
+DEAL::1904 1
+DEAL::1905 1
+DEAL::1906 1
+DEAL::1907 1
+DEAL::1908 1
+DEAL::1909 1
+DEAL::1910 1
+DEAL::1911 1
+DEAL::1912 1
+DEAL::1913 1
+DEAL::1914 4
+DEAL::1915 1
+DEAL::1916 1
+DEAL::1917 1
+DEAL::1918 1
+DEAL::1919 0
+DEAL::1920 1
+DEAL::1921 1
+DEAL::1922 1
+DEAL::1923 0
+DEAL::1924 0
+DEAL::1925 0
+DEAL::1926 0
+DEAL::1927 1
+DEAL::1928 0
+DEAL::1929 1
+DEAL::1930 0
+DEAL::1931 0
+DEAL::1932 1
+DEAL::1933 0
+DEAL::1934 1
+DEAL::1935 1
+DEAL::1936 0
+DEAL::1937 0
+DEAL::1938 0
+DEAL::1939 0
+DEAL::1940 0
+DEAL::1941 1
+DEAL::1942 0
+DEAL::1943 1
+DEAL::1944 1
+DEAL::1945 1
+DEAL::1946 1
+DEAL::1947 1
+DEAL::1948 1
+DEAL::1949 1
+DEAL::1950 1
+DEAL::1951 1
+DEAL::1952 1
+DEAL::1953 1
+DEAL::1954 1
+DEAL::1955 1
+DEAL::1956 1
+DEAL::1957 1
+DEAL::1958 1
+DEAL::1959 1
+DEAL::1960 1
+DEAL::1961 1
+DEAL::1962 1
+DEAL::1963 1
+DEAL::1964 1
+DEAL::1965 1
+DEAL::1966 1
+DEAL::1967 1
+DEAL::1968 1
+DEAL::1969 1
+DEAL::1970 1
+DEAL::1971 1
+DEAL::1972 1
+DEAL::1973 1
+DEAL::1974 1
+DEAL::1975 1
 DEAL::1976 1
-DEAL::1977 3
-DEAL::1978 3
-DEAL::1979 3
-DEAL::1980 3
-DEAL::1981 3
-DEAL::1982 3
-DEAL::1983 3
-DEAL::1984 3
-DEAL::1985 3
-DEAL::1986 3
-DEAL::1987 3
-DEAL::1988 3
-DEAL::1989 3
-DEAL::1990 3
-DEAL::1991 3
-DEAL::1992 3
-DEAL::1993 0
-DEAL::1994 0
-DEAL::1995 0
-DEAL::1996 0
-DEAL::1997 0
-DEAL::1998 0
-DEAL::1999 0
-DEAL::2000 0
-DEAL::2001 0
-DEAL::2002 0
-DEAL::2003 0
-DEAL::2004 0
-DEAL::2005 0
-DEAL::2006 0
-DEAL::2007 0
-DEAL::2008 0
-DEAL::2009 0
-DEAL::2010 0
-DEAL::2011 0
-DEAL::2012 0
-DEAL::2013 0
-DEAL::2014 0
-DEAL::2015 0
-DEAL::2016 0
-DEAL::2017 0
-DEAL::2018 0
-DEAL::2019 0
-DEAL::2020 0
-DEAL::2021 0
-DEAL::2022 0
-DEAL::2023 0
-DEAL::2024 0
-DEAL::2025 0
-DEAL::2026 0
-DEAL::2027 0
-DEAL::2028 0
-DEAL::2029 0
-DEAL::2030 0
-DEAL::2031 0
-DEAL::2032 0
-DEAL::2033 0
-DEAL::2034 0
-DEAL::2035 0
-DEAL::2036 0
-DEAL::2037 0
-DEAL::2038 0
-DEAL::2039 0
-DEAL::2040 1
-DEAL::2041 0
-DEAL::2042 0
-DEAL::2043 0
-DEAL::2044 0
-DEAL::2045 0
-DEAL::2046 0
-DEAL::2047 0
-DEAL::2048 0
-DEAL::2049 0
-DEAL::2050 0
-DEAL::2051 0
-DEAL::2052 0
-DEAL::2053 0
-DEAL::2054 0
-DEAL::2055 0
-DEAL::2056 0
-DEAL::2057 0
-DEAL::2058 0
-DEAL::2059 0
-DEAL::2060 0
-DEAL::2061 0
-DEAL::2062 0
-DEAL::2063 0
-DEAL::2064 0
-DEAL::2065 0
-DEAL::2066 0
-DEAL::2067 0
-DEAL::2068 0
-DEAL::2069 0
-DEAL::2070 0
-DEAL::2071 0
-DEAL::2072 0
-DEAL::2073 0
-DEAL::2074 0
-DEAL::2075 0
-DEAL::2076 0
-DEAL::2077 0
-DEAL::2078 0
-DEAL::2079 1
-DEAL::2080 0
-DEAL::2081 0
-DEAL::2082 0
-DEAL::2083 0
-DEAL::2084 0
-DEAL::2085 0
-DEAL::2086 0
-DEAL::2087 0
-DEAL::2088 0
-DEAL::2089 0
-DEAL::2090 0
-DEAL::2091 0
-DEAL::2092 0
-DEAL::2093 0
-DEAL::2094 1
-DEAL::2095 0
-DEAL::2096 0
-DEAL::2097 0
-DEAL::2098 0
-DEAL::2099 1
-DEAL::2100 0
-DEAL::2101 0
-DEAL::2102 0
-DEAL::2103 0
-DEAL::2104 0
-DEAL::2105 0
-DEAL::2106 0
-DEAL::2107 0
-DEAL::2108 0
-DEAL::2109 0
-DEAL::2110 0
-DEAL::2111 0
-DEAL::2112 1
-DEAL::2113 1
-DEAL::2114 1
-DEAL::2115 0
-DEAL::2116 1
-DEAL::2117 1
-DEAL::2118 1
-DEAL::2119 1
-DEAL::2120 0
-DEAL::2121 0
-DEAL::2122 1
-DEAL::2123 1
-DEAL::2124 1
-DEAL::2125 0
-DEAL::2126 1
-DEAL::2127 1
-DEAL::2128 1
-DEAL::2129 1
-DEAL::2130 1
-DEAL::2131 0
-DEAL::2132 0
-DEAL::2133 0
-DEAL::2134 0
-DEAL::2135 0
-DEAL::2136 0
-DEAL::2137 0
-DEAL::2138 0
-DEAL::2139 0
-DEAL::2140 0
-DEAL::2141 0
-DEAL::2142 0
-DEAL::2143 0
-DEAL::2144 0
-DEAL::2145 0
-DEAL::2146 0
-DEAL::2147 0
-DEAL::2148 0
-DEAL::2149 0
-DEAL::2150 0
-DEAL::2151 0
-DEAL::2152 0
-DEAL::2153 0
-DEAL::2154 0
-DEAL::2155 0
-DEAL::2156 0
-DEAL::2157 0
-DEAL::2158 0
-DEAL::2159 0
-DEAL::2160 0
-DEAL::2161 0
-DEAL::2162 0
-DEAL::2163 0
-DEAL::2164 0
-DEAL::2165 0
-DEAL::2166 0
-DEAL::2167 0
-DEAL::2168 0
-DEAL::2169 0
-DEAL::2170 0
-DEAL::2171 0
-DEAL::2172 0
-DEAL::2173 0
-DEAL::2174 0
-DEAL::2175 0
-DEAL::2176 0
-DEAL::2177 0
-DEAL::2178 0
-DEAL::2179 0
-DEAL::2180 0
-DEAL::2181 0
-DEAL::2182 0
-DEAL::2183 0
-DEAL::2184 0
-DEAL::2185 0
-DEAL::2186 0
-DEAL::2187 0
-DEAL::2188 0
-DEAL::2189 0
-DEAL::2190 0
-DEAL::2191 0
-DEAL::2192 1
-DEAL::2193 0
-DEAL::2194 0
-DEAL::2195 0
-DEAL::2196 1
-DEAL::2197 0
-DEAL::2198 0
-DEAL::2199 0
-DEAL::2200 0
-DEAL::2201 0
-DEAL::2202 0
-DEAL::2203 0
-DEAL::2204 0
-DEAL::2205 0
-DEAL::2206 0
-DEAL::2207 0
-DEAL::2208 0
-DEAL::2209 0
-DEAL::2210 1
-DEAL::2211 0
-DEAL::2212 0
-DEAL::2213 0
-DEAL::2214 1
-DEAL::2215 0
-DEAL::2216 0
-DEAL::2217 0
-DEAL::2218 0
-DEAL::2219 0
-DEAL::2220 0
-DEAL::2221 0
-DEAL::2222 0
-DEAL::2223 0
-DEAL::2224 0
-DEAL::2225 0
-DEAL::2226 0
-DEAL::2227 0
-DEAL::2228 1
-DEAL::2229 0
-DEAL::2230 0
-DEAL::2231 0
-DEAL::2232 1
-DEAL::2233 0
-DEAL::2234 0
-DEAL::2235 0
-DEAL::2236 0
-DEAL::2237 1
-DEAL::2238 0
-DEAL::2239 1
-DEAL::2240 0
-DEAL::2241 0
-DEAL::2242 0
-DEAL::2243 0
-DEAL::2244 1
-DEAL::2245 0
-DEAL::2246 0
-DEAL::2247 0
-DEAL::2248 1
-DEAL::2249 1
-DEAL::2250 1
-DEAL::2251 1
-DEAL::2252 1
-DEAL::2253 1
-DEAL::2254 1
-DEAL::2255 1
-DEAL::2256 0
-DEAL::2257 1
-DEAL::2258 1
-DEAL::2259 1
-DEAL::2260 1
-DEAL::2261 1
-DEAL::2262 1
-DEAL::2263 1
-DEAL::2264 1
-DEAL::2265 1
-DEAL::2266 1
-DEAL::2267 1
-DEAL::2268 1
-DEAL::2269 1
-DEAL::2270 1
-DEAL::2271 1
-DEAL::2272 1
-DEAL::2273 1
-DEAL::2274 1
-DEAL::2275 1
-DEAL::2276 1
-DEAL::2277 1
-DEAL::2278 1
-DEAL::2279 1
-DEAL::2280 1
-DEAL::2281 1
-DEAL::2282 1
-DEAL::2283 1
-DEAL::2284 1
-DEAL::2285 1
-DEAL::2286 1
-DEAL::2287 1
-DEAL::2288 1
-DEAL::2289 1
-DEAL::2290 1
-DEAL::2291 1
-DEAL::2292 1
-DEAL::2293 1
-DEAL::2294 1
-DEAL::2295 1
-DEAL::2296 1
-DEAL::2297 1
-DEAL::2298 1
-DEAL::2299 1
-DEAL::2300 1
-DEAL::2301 1
-DEAL::2302 1
-DEAL::2303 1
-DEAL::2304 1
-DEAL::2305 1
-DEAL::2306 0
-DEAL::2307 1
-DEAL::2308 1
-DEAL::2309 1
-DEAL::2310 1
-DEAL::2311 1
-DEAL::2312 1
-DEAL::2313 1
-DEAL::2314 1
-DEAL::2315 1
-DEAL::2316 1
-DEAL::2317 1
-DEAL::2318 1
-DEAL::2319 1
-DEAL::2320 1
-DEAL::2321 1
-DEAL::2322 1
-DEAL::2323 1
-DEAL::2324 1
-DEAL::2325 1
-DEAL::2326 1
-DEAL::2327 1
-DEAL::2328 1
-DEAL::2329 1
-DEAL::2330 1
-DEAL::2331 1
-DEAL::2332 1
-DEAL::2333 1
-DEAL::2334 4
-DEAL::2335 4
-DEAL::2336 2
-DEAL::2337 2
-DEAL::2338 4
-DEAL::2339 2
-DEAL::2340 2
-DEAL::2341 2
-DEAL::2342 2
-DEAL::2343 2
-DEAL::2344 4
-DEAL::2345 4
-DEAL::2346 4
-DEAL::2347 2
-DEAL::2348 2
-DEAL::2349 2
-DEAL::2350 2
-DEAL::2351 2
-DEAL::2352 4
-DEAL::2353 4
-DEAL::2354 4
-DEAL::2355 4
-DEAL::2356 4
-DEAL::2357 4
-DEAL::2358 4
-DEAL::2359 4
-DEAL::2360 2
-DEAL::2361 2
-DEAL::2362 4
-DEAL::2363 4
-DEAL::2364 4
-DEAL::2365 4
-DEAL::2366 4
-DEAL::2367 4
-DEAL::2368 4
-DEAL::2369 4
-DEAL::2370 4
-DEAL::2371 2
-DEAL::2372 4
-DEAL::2373 2
-DEAL::2374 2
-DEAL::2375 2
-DEAL::2376 4
-DEAL::2377 4
-DEAL::2378 4
-DEAL::2379 4
-DEAL::2380 4
-DEAL::2381 4
+DEAL::1977 1
+DEAL::1978 1
+DEAL::1979 1
+DEAL::1980 1
+DEAL::1981 1
+DEAL::1982 1
+DEAL::1983 1
+DEAL::1984 1
+DEAL::1985 1
+DEAL::1986 1
+DEAL::1987 1
+DEAL::1988 1
+DEAL::1989 1
+DEAL::1990 1
+DEAL::1991 1
+DEAL::1992 1
+DEAL::1993 2
+DEAL::1994 2
+DEAL::1995 4
+DEAL::1996 4
+DEAL::1997 4
+DEAL::1998 4
+DEAL::1999 2
+DEAL::2000 4
+DEAL::2001 2
+DEAL::2002 2
+DEAL::2003 2
+DEAL::2004 3
+DEAL::2005 2
+DEAL::2006 4
+DEAL::2007 4
+DEAL::2008 4
+DEAL::2009 4
+DEAL::2010 4
+DEAL::2011 4
+DEAL::2012 4
+DEAL::2013 2
+DEAL::2014 4
+DEAL::2015 2
+DEAL::2016 4
+DEAL::2017 4
+DEAL::2018 4
+DEAL::2019 4
+DEAL::2020 4
+DEAL::2021 3
+DEAL::2022 4
+DEAL::2023 4
+DEAL::2024 4
+DEAL::2025 3
+DEAL::2026 4
+DEAL::2027 4
+DEAL::2028 4
+DEAL::2029 4
+DEAL::2030 3
+DEAL::2031 3
+DEAL::2032 3
+DEAL::2033 3
+DEAL::2034 3
+DEAL::2035 3
+DEAL::2036 3
+DEAL::2037 4
+DEAL::2038 4
+DEAL::2039 3
+DEAL::2040 4
+DEAL::2041 3
+DEAL::2042 3
+DEAL::2043 3
+DEAL::2044 3
+DEAL::2045 4
+DEAL::2046 4
+DEAL::2047 4
+DEAL::2048 4
+DEAL::2049 4
+DEAL::2050 4
+DEAL::2051 4
+DEAL::2052 2
+DEAL::2053 4
+DEAL::2054 4
+DEAL::2055 4
+DEAL::2056 4
+DEAL::2057 4
+DEAL::2058 4
+DEAL::2059 4
+DEAL::2060 4
+DEAL::2061 4
+DEAL::2062 3
+DEAL::2063 4
+DEAL::2064 4
+DEAL::2065 4
+DEAL::2066 4
+DEAL::2067 4
+DEAL::2068 3
+DEAL::2069 3
+DEAL::2070 4
+DEAL::2071 3
+DEAL::2072 4
+DEAL::2073 4
+DEAL::2074 4
+DEAL::2075 4
+DEAL::2076 4
+DEAL::2077 4
+DEAL::2078 4
+DEAL::2079 4
+DEAL::2080 4
+DEAL::2081 4
+DEAL::2082 4
+DEAL::2083 4
+DEAL::2084 3
+DEAL::2085 3
+DEAL::2086 3
+DEAL::2087 3
+DEAL::2088 3
+DEAL::2089 3
+DEAL::2090 2
+DEAL::2091 3
+DEAL::2092 3
+DEAL::2093 2
+DEAL::2094 3
+DEAL::2095 3
+DEAL::2096 3
+DEAL::2097 3
+DEAL::2098 2
+DEAL::2099 3
+DEAL::2100 3
+DEAL::2101 3
+DEAL::2102 3
+DEAL::2103 4
+DEAL::2104 3
+DEAL::2105 3
+DEAL::2106 3
+DEAL::2107 3
+DEAL::2108 3
+DEAL::2109 3
+DEAL::2110 3
+DEAL::2111 3
+DEAL::2112 3
+DEAL::2113 3
+DEAL::2114 3
+DEAL::2115 3
+DEAL::2116 3
+DEAL::2117 3
+DEAL::2118 3
+DEAL::2119 3
+DEAL::2120 3
+DEAL::2121 3
+DEAL::2122 3
+DEAL::2123 3
+DEAL::2124 3
+DEAL::2125 3
+DEAL::2126 3
+DEAL::2127 3
+DEAL::2128 3
+DEAL::2129 3
+DEAL::2130 3
+DEAL::2131 4
+DEAL::2132 3
+DEAL::2133 3
+DEAL::2134 3
+DEAL::2135 3
+DEAL::2136 3
+DEAL::2137 3
+DEAL::2138 3
+DEAL::2139 3
+DEAL::2140 3
+DEAL::2141 3
+DEAL::2142 4
+DEAL::2143 2
+DEAL::2144 4
+DEAL::2145 4
+DEAL::2146 4
+DEAL::2147 4
+DEAL::2148 4
+DEAL::2149 3
+DEAL::2150 3
+DEAL::2151 2
+DEAL::2152 3
+DEAL::2153 3
+DEAL::2154 3
+DEAL::2155 3
+DEAL::2156 2
+DEAL::2157 3
+DEAL::2158 4
+DEAL::2159 3
+DEAL::2160 3
+DEAL::2161 4
+DEAL::2162 3
+DEAL::2163 4
+DEAL::2164 4
+DEAL::2165 3
+DEAL::2166 3
+DEAL::2167 3
+DEAL::2168 3
+DEAL::2169 3
+DEAL::2170 3
+DEAL::2171 3
+DEAL::2172 4
+DEAL::2173 3
+DEAL::2174 4
+DEAL::2175 3
+DEAL::2176 4
+DEAL::2177 3
+DEAL::2178 3
+DEAL::2179 3
+DEAL::2180 3
+DEAL::2181 3
+DEAL::2182 4
+DEAL::2183 3
+DEAL::2184 4
+DEAL::2185 3
+DEAL::2186 3
+DEAL::2187 3
+DEAL::2188 3
+DEAL::2189 3
+DEAL::2190 3
+DEAL::2191 3
+DEAL::2192 4
+DEAL::2193 4
+DEAL::2194 4
+DEAL::2195 3
+DEAL::2196 4
+DEAL::2197 3
+DEAL::2198 4
+DEAL::2199 3
+DEAL::2200 3
+DEAL::2201 3
+DEAL::2202 3
+DEAL::2203 3
+DEAL::2204 3
+DEAL::2205 3
+DEAL::2206 3
+DEAL::2207 3
+DEAL::2208 3
+DEAL::2209 3
+DEAL::2210 4
+DEAL::2211 4
+DEAL::2212 4
+DEAL::2213 3
+DEAL::2214 4
+DEAL::2215 3
+DEAL::2216 3
+DEAL::2217 3
+DEAL::2218 4
+DEAL::2219 4
+DEAL::2220 4
+DEAL::2221 4
+DEAL::2222 4
+DEAL::2223 4
+DEAL::2224 4
+DEAL::2225 4
+DEAL::2226 4
+DEAL::2227 4
+DEAL::2228 4
+DEAL::2229 4
+DEAL::2230 4
+DEAL::2231 4
+DEAL::2232 4
+DEAL::2233 4
+DEAL::2234 4
+DEAL::2235 4
+DEAL::2236 4
+DEAL::2237 4
+DEAL::2238 4
+DEAL::2239 4
+DEAL::2240 4
+DEAL::2241 4
+DEAL::2242 4
+DEAL::2243 4
+DEAL::2244 4
+DEAL::2245 4
+DEAL::2246 4
+DEAL::2247 4
+DEAL::2248 4
+DEAL::2249 4
+DEAL::2250 4
+DEAL::2251 4
+DEAL::2252 4
+DEAL::2253 3
+DEAL::2254 3
+DEAL::2255 4
+DEAL::2256 4
+DEAL::2257 4
+DEAL::2258 4
+DEAL::2259 4
+DEAL::2260 4
+DEAL::2261 4
+DEAL::2262 4
+DEAL::2263 3
+DEAL::2264 4
+DEAL::2265 4
+DEAL::2266 4
+DEAL::2267 4
+DEAL::2268 4
+DEAL::2269 4
+DEAL::2270 4
+DEAL::2271 4
+DEAL::2272 4
+DEAL::2273 4
+DEAL::2274 4
+DEAL::2275 4
+DEAL::2276 4
+DEAL::2277 4
+DEAL::2278 4
+DEAL::2279 4
+DEAL::2280 4
+DEAL::2281 4
+DEAL::2282 4
+DEAL::2283 4
+DEAL::2284 4
+DEAL::2285 4
+DEAL::2286 4
+DEAL::2287 4
+DEAL::2288 4
+DEAL::2289 4
+DEAL::2290 3
+DEAL::2291 4
+DEAL::2292 4
+DEAL::2293 4
+DEAL::2294 4
+DEAL::2295 4
+DEAL::2296 4
+DEAL::2297 4
+DEAL::2298 4
+DEAL::2299 4
+DEAL::2300 4
+DEAL::2301 4
+DEAL::2302 4
+DEAL::2303 4
+DEAL::2304 4
+DEAL::2305 4
+DEAL::2306 4
+DEAL::2307 4
+DEAL::2308 4
+DEAL::2309 4
+DEAL::2310 4
+DEAL::2311 4
+DEAL::2312 4
+DEAL::2313 4
+DEAL::2314 4
+DEAL::2315 4
+DEAL::2316 4
+DEAL::2317 4
+DEAL::2318 4
+DEAL::2319 4
+DEAL::2320 4
+DEAL::2321 4
+DEAL::2322 4
+DEAL::2323 4
+DEAL::2324 4
+DEAL::2325 4
+DEAL::2326 4
+DEAL::2327 4
+DEAL::2328 4
+DEAL::2329 4
+DEAL::2330 4
+DEAL::2331 4
+DEAL::2332 4
+DEAL::2333 4
+DEAL::2334 0
+DEAL::2335 0
+DEAL::2336 1
+DEAL::2337 0
+DEAL::2338 0
+DEAL::2339 1
+DEAL::2340 1
+DEAL::2341 1
+DEAL::2342 1
+DEAL::2343 1
+DEAL::2344 0
+DEAL::2345 0
+DEAL::2346 0
+DEAL::2347 1
+DEAL::2348 1
+DEAL::2349 1
+DEAL::2350 1
+DEAL::2351 1
+DEAL::2352 0
+DEAL::2353 0
+DEAL::2354 0
+DEAL::2355 0
+DEAL::2356 0
+DEAL::2357 0
+DEAL::2358 0
+DEAL::2359 0
+DEAL::2360 1
+DEAL::2361 0
+DEAL::2362 0
+DEAL::2363 0
+DEAL::2364 0
+DEAL::2365 0
+DEAL::2366 0
+DEAL::2367 0
+DEAL::2368 0
+DEAL::2369 0
+DEAL::2370 0
+DEAL::2371 0
+DEAL::2372 0
+DEAL::2373 1
+DEAL::2374 1
+DEAL::2375 1
+DEAL::2376 0
+DEAL::2377 0
+DEAL::2378 0
+DEAL::2379 0
+DEAL::2380 0
+DEAL::2381 0
 DEAL::2382 2
-DEAL::2383 2
-DEAL::2384 2
-DEAL::2385 2
-DEAL::2386 2
-DEAL::2387 2
-DEAL::2388 2
-DEAL::2389 2
-DEAL::2390 2
-DEAL::2391 2
-DEAL::2392 2
-DEAL::2393 2
-DEAL::2394 3
-DEAL::2395 2
-DEAL::2396 3
-DEAL::2397 2
-DEAL::2398 2
-DEAL::2399 2
-DEAL::2400 2
-DEAL::2401 2
-DEAL::2402 4
-DEAL::2403 2
+DEAL::2383 1
+DEAL::2384 1
+DEAL::2385 1
+DEAL::2386 1
+DEAL::2387 0
+DEAL::2388 1
+DEAL::2389 1
+DEAL::2390 1
+DEAL::2391 1
+DEAL::2392 1
+DEAL::2393 1
+DEAL::2394 1
+DEAL::2395 1
+DEAL::2396 1
+DEAL::2397 1
+DEAL::2398 1
+DEAL::2399 1
+DEAL::2400 0
+DEAL::2401 1
+DEAL::2402 0
+DEAL::2403 0
 DEAL::2404 2
 DEAL::2405 2
 DEAL::2406 2
@@ -10738,15 +10738,15 @@ DEAL::2413 2
 DEAL::2414 2
 DEAL::2415 2
 DEAL::2416 2
-DEAL::2417 2
+DEAL::2417 1
 DEAL::2418 2
 DEAL::2419 2
-DEAL::2420 2
+DEAL::2420 1
 DEAL::2421 2
 DEAL::2422 2
 DEAL::2423 2
 DEAL::2424 2
-DEAL::2425 0
+DEAL::2425 2
 DEAL::2426 2
 DEAL::2427 2
 DEAL::2428 2
@@ -10759,17 +10759,17 @@ DEAL::2434 2
 DEAL::2435 2
 DEAL::2436 2
 DEAL::2437 2
-DEAL::2438 0
+DEAL::2438 2
 DEAL::2439 2
 DEAL::2440 2
 DEAL::2441 2
 DEAL::2442 2
 DEAL::2443 2
-DEAL::2444 0
+DEAL::2444 2
 DEAL::2445 2
 DEAL::2446 2
-DEAL::2447 0
-DEAL::2448 0
+DEAL::2447 2
+DEAL::2448 2
 DEAL::2449 2
 DEAL::2450 2
 DEAL::2451 2
@@ -10777,494 +10777,494 @@ DEAL::2452 2
 DEAL::2453 2
 DEAL::2454 2
 DEAL::2455 2
-DEAL::2456 0
-DEAL::2457 2
-DEAL::2458 0
-DEAL::2459 0
+DEAL::2456 2
+DEAL::2457 1
+DEAL::2458 2
+DEAL::2459 2
 DEAL::2460 2
 DEAL::2461 2
-DEAL::2462 0
+DEAL::2462 2
 DEAL::2463 2
 DEAL::2464 2
-DEAL::2465 0
-DEAL::2466 0
-DEAL::2467 0
+DEAL::2465 2
+DEAL::2466 2
+DEAL::2467 2
 DEAL::2468 2
 DEAL::2469 2
-DEAL::2470 0
+DEAL::2470 2
 DEAL::2471 2
 DEAL::2472 2
 DEAL::2473 2
-DEAL::2474 0
-DEAL::2475 0
+DEAL::2474 2
+DEAL::2475 2
 DEAL::2476 2
-DEAL::2477 0
-DEAL::2478 0
-DEAL::2479 0
-DEAL::2480 0
-DEAL::2481 0
-DEAL::2482 0
-DEAL::2483 0
-DEAL::2484 2
-DEAL::2485 2
+DEAL::2477 2
+DEAL::2478 2
+DEAL::2479 2
+DEAL::2480 2
+DEAL::2481 2
+DEAL::2482 2
+DEAL::2483 2
+DEAL::2484 1
+DEAL::2485 1
 DEAL::2486 2
-DEAL::2487 2
+DEAL::2487 1
 DEAL::2488 2
-DEAL::2489 2
-DEAL::2490 2
-DEAL::2491 0
+DEAL::2489 1
+DEAL::2490 1
+DEAL::2491 2
 DEAL::2492 2
-DEAL::2493 2
-DEAL::2494 2
-DEAL::2495 0
+DEAL::2493 1
+DEAL::2494 1
+DEAL::2495 2
 DEAL::2496 2
 DEAL::2497 2
 DEAL::2498 2
 DEAL::2499 2
 DEAL::2500 2
 DEAL::2501 2
-DEAL::2502 0
-DEAL::2503 0
-DEAL::2504 0
-DEAL::2505 0
-DEAL::2506 2
-DEAL::2507 2
-DEAL::2508 0
-DEAL::2509 2
-DEAL::2510 0
-DEAL::2511 0
-DEAL::2512 2
-DEAL::2513 2
-DEAL::2514 0
-DEAL::2515 0
-DEAL::2516 0
-DEAL::2517 0
-DEAL::2518 0
-DEAL::2519 0
-DEAL::2520 0
-DEAL::2521 4
-DEAL::2522 4
-DEAL::2523 3
-DEAL::2524 3
-DEAL::2525 4
-DEAL::2526 4
-DEAL::2527 4
-DEAL::2528 3
-DEAL::2529 4
-DEAL::2530 3
-DEAL::2531 4
-DEAL::2532 4
-DEAL::2533 4
-DEAL::2534 4
-DEAL::2535 4
-DEAL::2536 4
-DEAL::2537 4
-DEAL::2538 4
-DEAL::2539 4
-DEAL::2540 4
-DEAL::2541 3
-DEAL::2542 3
-DEAL::2543 4
-DEAL::2544 4
-DEAL::2545 4
-DEAL::2546 3
-DEAL::2547 3
-DEAL::2548 3
-DEAL::2549 4
-DEAL::2550 4
-DEAL::2551 4
-DEAL::2552 4
-DEAL::2553 4
-DEAL::2554 4
-DEAL::2555 4
-DEAL::2556 4
-DEAL::2557 4
-DEAL::2558 4
-DEAL::2559 4
-DEAL::2560 4
-DEAL::2561 3
-DEAL::2562 4
-DEAL::2563 4
-DEAL::2564 4
-DEAL::2565 4
-DEAL::2566 4
-DEAL::2567 4
-DEAL::2568 4
-DEAL::2569 4
-DEAL::2570 4
-DEAL::2571 3
-DEAL::2572 4
-DEAL::2573 4
-DEAL::2574 4
-DEAL::2575 4
-DEAL::2576 4
-DEAL::2577 4
-DEAL::2578 3
-DEAL::2579 3
-DEAL::2580 4
-DEAL::2581 3
-DEAL::2582 3
-DEAL::2583 3
-DEAL::2584 3
-DEAL::2585 3
-DEAL::2586 3
-DEAL::2587 3
-DEAL::2588 3
-DEAL::2589 3
-DEAL::2590 3
-DEAL::2591 3
-DEAL::2592 4
-DEAL::2593 4
-DEAL::2594 4
-DEAL::2595 4
-DEAL::2596 3
-DEAL::2597 3
-DEAL::2598 3
-DEAL::2599 3
-DEAL::2600 3
-DEAL::2601 4
-DEAL::2602 4
-DEAL::2603 4
-DEAL::2604 4
-DEAL::2605 4
-DEAL::2606 4
-DEAL::2607 4
-DEAL::2608 3
-DEAL::2609 3
-DEAL::2610 3
-DEAL::2611 4
-DEAL::2612 4
-DEAL::2613 4
-DEAL::2614 4
-DEAL::2615 4
-DEAL::2616 4
-DEAL::2617 4
-DEAL::2618 4
-DEAL::2619 4
-DEAL::2620 4
-DEAL::2621 3
-DEAL::2622 3
-DEAL::2623 4
-DEAL::2624 4
-DEAL::2625 4
-DEAL::2626 4
-DEAL::2627 3
-DEAL::2628 4
-DEAL::2629 4
-DEAL::2630 4
-DEAL::2631 4
-DEAL::2632 4
-DEAL::2633 4
-DEAL::2634 4
-DEAL::2635 4
-DEAL::2636 4
-DEAL::2637 4
-DEAL::2638 4
-DEAL::2639 4
-DEAL::2640 4
-DEAL::2641 4
-DEAL::2642 4
-DEAL::2643 4
-DEAL::2644 3
-DEAL::2645 4
-DEAL::2646 4
-DEAL::2647 3
-DEAL::2648 4
-DEAL::2649 3
-DEAL::2650 3
-DEAL::2651 3
-DEAL::2652 3
-DEAL::2653 3
-DEAL::2654 3
-DEAL::2655 3
-DEAL::2656 3
-DEAL::2657 3
-DEAL::2658 3
-DEAL::2659 3
-DEAL::2660 3
-DEAL::2661 3
-DEAL::2662 3
-DEAL::2663 3
-DEAL::2664 3
-DEAL::2665 3
-DEAL::2666 3
-DEAL::2667 3
-DEAL::2668 3
-DEAL::2669 4
-DEAL::2670 4
-DEAL::2671 4
-DEAL::2672 4
-DEAL::2673 4
-DEAL::2674 4
-DEAL::2675 4
-DEAL::2676 4
+DEAL::2502 2
+DEAL::2503 2
+DEAL::2504 2
+DEAL::2505 2
+DEAL::2506 1
+DEAL::2507 1
+DEAL::2508 2
+DEAL::2509 1
+DEAL::2510 1
+DEAL::2511 2
+DEAL::2512 1
+DEAL::2513 1
+DEAL::2514 2
+DEAL::2515 2
+DEAL::2516 2
+DEAL::2517 2
+DEAL::2518 2
+DEAL::2519 2
+DEAL::2520 2
+DEAL::2521 0
+DEAL::2522 0
+DEAL::2523 0
+DEAL::2524 0
+DEAL::2525 0
+DEAL::2526 0
+DEAL::2527 0
+DEAL::2528 0
+DEAL::2529 0
+DEAL::2530 1
+DEAL::2531 0
+DEAL::2532 0
+DEAL::2533 0
+DEAL::2534 0
+DEAL::2535 0
+DEAL::2536 0
+DEAL::2537 0
+DEAL::2538 0
+DEAL::2539 0
+DEAL::2540 0
+DEAL::2541 0
+DEAL::2542 0
+DEAL::2543 0
+DEAL::2544 0
+DEAL::2545 0
+DEAL::2546 0
+DEAL::2547 0
+DEAL::2548 0
+DEAL::2549 0
+DEAL::2550 0
+DEAL::2551 0
+DEAL::2552 0
+DEAL::2553 0
+DEAL::2554 0
+DEAL::2555 0
+DEAL::2556 0
+DEAL::2557 0
+DEAL::2558 0
+DEAL::2559 0
+DEAL::2560 0
+DEAL::2561 0
+DEAL::2562 0
+DEAL::2563 0
+DEAL::2564 0
+DEAL::2565 0
+DEAL::2566 0
+DEAL::2567 0
+DEAL::2568 0
+DEAL::2569 0
+DEAL::2570 0
+DEAL::2571 0
+DEAL::2572 0
+DEAL::2573 0
+DEAL::2574 0
+DEAL::2575 0
+DEAL::2576 0
+DEAL::2577 0
+DEAL::2578 1
+DEAL::2579 0
+DEAL::2580 0
+DEAL::2581 0
+DEAL::2582 1
+DEAL::2583 1
+DEAL::2584 1
+DEAL::2585 1
+DEAL::2586 0
+DEAL::2587 0
+DEAL::2588 0
+DEAL::2589 0
+DEAL::2590 0
+DEAL::2591 0
+DEAL::2592 0
+DEAL::2593 0
+DEAL::2594 0
+DEAL::2595 0
+DEAL::2596 0
+DEAL::2597 0
+DEAL::2598 0
+DEAL::2599 0
+DEAL::2600 0
+DEAL::2601 0
+DEAL::2602 0
+DEAL::2603 0
+DEAL::2604 0
+DEAL::2605 0
+DEAL::2606 0
+DEAL::2607 0
+DEAL::2608 0
+DEAL::2609 0
+DEAL::2610 0
+DEAL::2611 0
+DEAL::2612 0
+DEAL::2613 0
+DEAL::2614 0
+DEAL::2615 0
+DEAL::2616 0
+DEAL::2617 0
+DEAL::2618 0
+DEAL::2619 0
+DEAL::2620 0
+DEAL::2621 0
+DEAL::2622 0
+DEAL::2623 0
+DEAL::2624 0
+DEAL::2625 0
+DEAL::2626 0
+DEAL::2627 0
+DEAL::2628 0
+DEAL::2629 0
+DEAL::2630 0
+DEAL::2631 0
+DEAL::2632 0
+DEAL::2633 0
+DEAL::2634 0
+DEAL::2635 0
+DEAL::2636 0
+DEAL::2637 0
+DEAL::2638 0
+DEAL::2639 0
+DEAL::2640 0
+DEAL::2641 0
+DEAL::2642 0
+DEAL::2643 0
+DEAL::2644 0
+DEAL::2645 0
+DEAL::2646 0
+DEAL::2647 0
+DEAL::2648 0
+DEAL::2649 0
+DEAL::2650 0
+DEAL::2651 0
+DEAL::2652 0
+DEAL::2653 0
+DEAL::2654 0
+DEAL::2655 0
+DEAL::2656 0
+DEAL::2657 0
+DEAL::2658 0
+DEAL::2659 0
+DEAL::2660 0
+DEAL::2661 0
+DEAL::2662 0
+DEAL::2663 0
+DEAL::2664 0
+DEAL::2665 0
+DEAL::2666 0
+DEAL::2667 0
+DEAL::2668 0
+DEAL::2669 0
+DEAL::2670 0
+DEAL::2671 0
+DEAL::2672 0
+DEAL::2673 0
+DEAL::2674 0
+DEAL::2675 0
+DEAL::2676 0
 DEAL::2677 4
-DEAL::2678 4
-DEAL::2679 4
-DEAL::2680 4
-DEAL::2681 4
-DEAL::2682 4
-DEAL::2683 4
-DEAL::2684 4
-DEAL::2685 4
-DEAL::2686 4
+DEAL::2678 0
+DEAL::2679 0
+DEAL::2680 0
+DEAL::2681 0
+DEAL::2682 0
+DEAL::2683 0
+DEAL::2684 0
+DEAL::2685 0
+DEAL::2686 0
 DEAL::2687 4
-DEAL::2688 4
+DEAL::2688 0
 DEAL::2689 4
 DEAL::2690 4
-DEAL::2691 4
+DEAL::2691 0
 DEAL::2692 4
 DEAL::2693 4
 DEAL::2694 4
 DEAL::2695 4
 DEAL::2696 4
-DEAL::2697 4
+DEAL::2697 0
 DEAL::2698 4
-DEAL::2699 4
-DEAL::2700 4
+DEAL::2699 0
+DEAL::2700 0
 DEAL::2701 4
-DEAL::2702 4
-DEAL::2703 4
-DEAL::2704 4
-DEAL::2705 4
-DEAL::2706 4
-DEAL::2707 4
-DEAL::2708 4
-DEAL::2709 4
-DEAL::2710 4
-DEAL::2711 4
-DEAL::2712 4
-DEAL::2713 4
-DEAL::2714 4
-DEAL::2715 4
-DEAL::2716 4
-DEAL::2717 4
-DEAL::2718 1
-DEAL::2719 1
-DEAL::2720 1
-DEAL::2721 1
-DEAL::2722 1
-DEAL::2723 1
-DEAL::2724 1
-DEAL::2725 1
-DEAL::2726 1
-DEAL::2727 1
-DEAL::2728 1
-DEAL::2729 1
-DEAL::2730 1
-DEAL::2731 1
-DEAL::2732 1
-DEAL::2733 1
-DEAL::2734 1
-DEAL::2735 1
-DEAL::2736 1
-DEAL::2737 1
-DEAL::2738 1
-DEAL::2739 1
-DEAL::2740 1
-DEAL::2741 1
-DEAL::2742 1
-DEAL::2743 1
-DEAL::2744 1
-DEAL::2745 1
-DEAL::2746 1
-DEAL::2747 1
-DEAL::2748 1
-DEAL::2749 1
-DEAL::2750 1
-DEAL::2751 1
-DEAL::2752 1
-DEAL::2753 1
-DEAL::2754 1
-DEAL::2755 1
-DEAL::2756 1
-DEAL::2757 1
-DEAL::2758 1
-DEAL::2759 1
-DEAL::2760 1
-DEAL::2761 1
-DEAL::2762 1
-DEAL::2763 1
-DEAL::2764 1
-DEAL::2765 1
-DEAL::2766 1
-DEAL::2767 1
-DEAL::2768 1
-DEAL::2769 1
-DEAL::2770 1
-DEAL::2771 1
-DEAL::2772 1
-DEAL::2773 1
-DEAL::2774 1
-DEAL::2775 1
-DEAL::2776 1
-DEAL::2777 1
-DEAL::2778 1
-DEAL::2779 1
-DEAL::2780 1
-DEAL::2781 1
-DEAL::2782 1
-DEAL::2783 1
-DEAL::2784 1
-DEAL::2785 1
-DEAL::2786 1
-DEAL::2787 1
-DEAL::2788 1
-DEAL::2789 1
-DEAL::2790 1
-DEAL::2791 1
-DEAL::2792 1
-DEAL::2793 1
-DEAL::2794 1
-DEAL::2795 1
-DEAL::2796 1
-DEAL::2797 1
-DEAL::2798 1
-DEAL::2799 1
-DEAL::2800 1
-DEAL::2801 1
-DEAL::2802 1
-DEAL::2803 1
-DEAL::2804 1
-DEAL::2805 1
-DEAL::2806 1
-DEAL::2807 1
-DEAL::2808 1
-DEAL::2809 1
-DEAL::2810 1
-DEAL::2811 1
-DEAL::2812 1
-DEAL::2813 1
-DEAL::2814 1
-DEAL::2815 1
-DEAL::2816 1
-DEAL::2817 1
+DEAL::2702 0
+DEAL::2703 0
+DEAL::2704 0
+DEAL::2705 0
+DEAL::2706 0
+DEAL::2707 0
+DEAL::2708 0
+DEAL::2709 0
+DEAL::2710 0
+DEAL::2711 0
+DEAL::2712 0
+DEAL::2713 0
+DEAL::2714 0
+DEAL::2715 0
+DEAL::2716 0
+DEAL::2717 0
+DEAL::2718 3
+DEAL::2719 3
+DEAL::2720 3
+DEAL::2721 3
+DEAL::2722 3
+DEAL::2723 3
+DEAL::2724 3
+DEAL::2725 3
+DEAL::2726 3
+DEAL::2727 3
+DEAL::2728 3
+DEAL::2729 3
+DEAL::2730 3
+DEAL::2731 3
+DEAL::2732 3
+DEAL::2733 3
+DEAL::2734 3
+DEAL::2735 3
+DEAL::2736 3
+DEAL::2737 3
+DEAL::2738 3
+DEAL::2739 3
+DEAL::2740 3
+DEAL::2741 3
+DEAL::2742 3
+DEAL::2743 3
+DEAL::2744 3
+DEAL::2745 3
+DEAL::2746 3
+DEAL::2747 3
+DEAL::2748 3
+DEAL::2749 3
+DEAL::2750 3
+DEAL::2751 3
+DEAL::2752 3
+DEAL::2753 3
+DEAL::2754 3
+DEAL::2755 3
+DEAL::2756 3
+DEAL::2757 3
+DEAL::2758 3
+DEAL::2759 3
+DEAL::2760 3
+DEAL::2761 3
+DEAL::2762 3
+DEAL::2763 3
+DEAL::2764 3
+DEAL::2765 3
+DEAL::2766 3
+DEAL::2767 3
+DEAL::2768 3
+DEAL::2769 3
+DEAL::2770 3
+DEAL::2771 3
+DEAL::2772 3
+DEAL::2773 3
+DEAL::2774 3
+DEAL::2775 3
+DEAL::2776 3
+DEAL::2777 3
+DEAL::2778 3
+DEAL::2779 3
+DEAL::2780 3
+DEAL::2781 3
+DEAL::2782 3
+DEAL::2783 3
+DEAL::2784 3
+DEAL::2785 3
+DEAL::2786 3
+DEAL::2787 3
+DEAL::2788 3
+DEAL::2789 3
+DEAL::2790 3
+DEAL::2791 3
+DEAL::2792 3
+DEAL::2793 3
+DEAL::2794 3
+DEAL::2795 3
+DEAL::2796 3
+DEAL::2797 3
+DEAL::2798 3
+DEAL::2799 3
+DEAL::2800 3
+DEAL::2801 3
+DEAL::2802 3
+DEAL::2803 3
+DEAL::2804 3
+DEAL::2805 3
+DEAL::2806 3
+DEAL::2807 3
+DEAL::2808 3
+DEAL::2809 3
+DEAL::2810 3
+DEAL::2811 3
+DEAL::2812 3
+DEAL::2813 3
+DEAL::2814 3
+DEAL::2815 3
+DEAL::2816 4
+DEAL::2817 3
 DEAL::2818 4
-DEAL::2819 1
-DEAL::2820 1
-DEAL::2821 1
-DEAL::2822 1
-DEAL::2823 1
-DEAL::2824 1
-DEAL::2825 1
-DEAL::2826 1
-DEAL::2827 1
-DEAL::2828 1
-DEAL::2829 1
-DEAL::2830 1
-DEAL::2831 1
-DEAL::2832 1
-DEAL::2833 1
-DEAL::2834 1
-DEAL::2835 1
-DEAL::2836 1
-DEAL::2837 1
-DEAL::2838 1
-DEAL::2839 1
-DEAL::2840 1
-DEAL::2841 1
-DEAL::2842 1
-DEAL::2843 1
-DEAL::2844 1
-DEAL::2845 1
-DEAL::2846 1
-DEAL::2847 1
-DEAL::2848 1
-DEAL::2849 1
-DEAL::2850 1
-DEAL::2851 1
-DEAL::2852 1
-DEAL::2853 1
-DEAL::2854 1
-DEAL::2855 1
-DEAL::2856 1
-DEAL::2857 1
-DEAL::2858 1
-DEAL::2859 1
-DEAL::2860 1
-DEAL::2861 1
-DEAL::2862 1
-DEAL::2863 1
-DEAL::2864 1
-DEAL::2865 1
-DEAL::2866 1
-DEAL::2867 1
-DEAL::2868 1
-DEAL::2869 1
-DEAL::2870 1
-DEAL::2871 1
-DEAL::2872 1
-DEAL::2873 1
-DEAL::2874 1
-DEAL::2875 1
+DEAL::2819 3
+DEAL::2820 4
+DEAL::2821 3
+DEAL::2822 4
+DEAL::2823 3
+DEAL::2824 3
+DEAL::2825 3
+DEAL::2826 3
+DEAL::2827 3
+DEAL::2828 3
+DEAL::2829 3
+DEAL::2830 3
+DEAL::2831 3
+DEAL::2832 3
+DEAL::2833 3
+DEAL::2834 3
+DEAL::2835 3
+DEAL::2836 3
+DEAL::2837 3
+DEAL::2838 3
+DEAL::2839 3
+DEAL::2840 4
+DEAL::2841 3
+DEAL::2842 4
+DEAL::2843 3
+DEAL::2844 4
+DEAL::2845 3
+DEAL::2846 4
+DEAL::2847 3
+DEAL::2848 3
+DEAL::2849 3
+DEAL::2850 3
+DEAL::2851 3
+DEAL::2852 3
+DEAL::2853 3
+DEAL::2854 3
+DEAL::2855 3
+DEAL::2856 4
+DEAL::2857 3
+DEAL::2858 3
+DEAL::2859 3
+DEAL::2860 3
+DEAL::2861 3
+DEAL::2862 3
+DEAL::2863 3
+DEAL::2864 3
+DEAL::2865 3
+DEAL::2866 3
+DEAL::2867 3
+DEAL::2868 3
+DEAL::2869 4
+DEAL::2870 3
+DEAL::2871 4
+DEAL::2872 3
+DEAL::2873 3
+DEAL::2874 3
+DEAL::2875 3
 DEAL::2876 2
-DEAL::2877 0
+DEAL::2877 2
 DEAL::2878 2
-DEAL::2879 0
-DEAL::2880 0
+DEAL::2879 2
+DEAL::2880 2
 DEAL::2881 2
-DEAL::2882 0
+DEAL::2882 2
 DEAL::2883 2
 DEAL::2884 2
 DEAL::2885 2
 DEAL::2886 2
 DEAL::2887 2
-DEAL::2888 0
-DEAL::2889 0
-DEAL::2890 0
-DEAL::2891 0
-DEAL::2892 0
-DEAL::2893 0
-DEAL::2894 0
-DEAL::2895 0
-DEAL::2896 0
-DEAL::2897 0
-DEAL::2898 0
-DEAL::2899 0
-DEAL::2900 0
-DEAL::2901 0
-DEAL::2902 0
-DEAL::2903 0
-DEAL::2904 0
-DEAL::2905 0
-DEAL::2906 0
-DEAL::2907 0
-DEAL::2908 0
-DEAL::2909 0
-DEAL::2910 0
-DEAL::2911 0
-DEAL::2912 0
-DEAL::2913 0
-DEAL::2914 0
-DEAL::2915 0
-DEAL::2916 0
-DEAL::2917 0
-DEAL::2918 0
-DEAL::2919 0
-DEAL::2920 0
-DEAL::2921 0
-DEAL::2922 0
-DEAL::2923 0
+DEAL::2888 2
+DEAL::2889 2
+DEAL::2890 2
+DEAL::2891 2
+DEAL::2892 2
+DEAL::2893 2
+DEAL::2894 2
+DEAL::2895 2
+DEAL::2896 2
+DEAL::2897 2
+DEAL::2898 2
+DEAL::2899 2
+DEAL::2900 2
+DEAL::2901 2
+DEAL::2902 2
+DEAL::2903 2
+DEAL::2904 2
+DEAL::2905 2
+DEAL::2906 2
+DEAL::2907 2
+DEAL::2908 2
+DEAL::2909 2
+DEAL::2910 2
+DEAL::2911 2
+DEAL::2912 2
+DEAL::2913 2
+DEAL::2914 2
+DEAL::2915 2
+DEAL::2916 2
+DEAL::2917 2
+DEAL::2918 2
+DEAL::2919 2
+DEAL::2920 2
+DEAL::2921 2
+DEAL::2922 2
+DEAL::2923 2
 DEAL::2924 4
 DEAL::2925 4
 DEAL::2926 4
 DEAL::2927 4
-DEAL::2928 4
-DEAL::2929 4
+DEAL::2928 0
+DEAL::2929 3
 DEAL::2930 4
 DEAL::2931 4
 DEAL::2932 4
 DEAL::2933 4
-DEAL::2934 4
+DEAL::2934 3
 DEAL::2935 4
 DEAL::2936 4
-DEAL::2937 4
+DEAL::2937 0
 DEAL::2938 4
 DEAL::2939 4
 DEAL::2940 4
 DEAL::2941 4
 DEAL::2942 4
-DEAL::2943 4
+DEAL::2943 0
 DEAL::2944 4
 DEAL::2945 4
 DEAL::2946 4
@@ -11273,140 +11273,140 @@ DEAL::2948 4
 DEAL::2949 4
 DEAL::2950 4
 DEAL::2951 4
-DEAL::2952 4
-DEAL::2953 1
+DEAL::2952 3
+DEAL::2953 4
 DEAL::2954 4
 DEAL::2955 4
 DEAL::2956 4
 DEAL::2957 4
-DEAL::2958 4
+DEAL::2958 3
 DEAL::2959 4
-DEAL::2960 4
+DEAL::2960 0
 DEAL::2961 4
 DEAL::2962 4
-DEAL::2963 4
+DEAL::2963 0
 DEAL::2964 4
 DEAL::2965 4
-DEAL::2966 4
+DEAL::2966 0
 DEAL::2967 4
 DEAL::2968 4
 DEAL::2969 4
 DEAL::2970 4
 DEAL::2971 4
-DEAL::2972 4
-DEAL::2973 1
-DEAL::2974 4
-DEAL::2975 4
-DEAL::2976 4
-DEAL::2977 4
-DEAL::2978 4
-DEAL::2979 4
-DEAL::2980 4
+DEAL::2972 0
+DEAL::2973 3
+DEAL::2974 3
+DEAL::2975 3
+DEAL::2976 3
+DEAL::2977 3
+DEAL::2978 3
+DEAL::2979 0
+DEAL::2980 0
 DEAL::2981 4
 DEAL::2982 4
-DEAL::2983 4
-DEAL::2984 4
-DEAL::2985 4
-DEAL::2986 4
+DEAL::2983 0
+DEAL::2984 0
+DEAL::2985 0
+DEAL::2986 0
 DEAL::2987 4
 DEAL::2988 4
-DEAL::2989 4
-DEAL::2990 4
+DEAL::2989 3
+DEAL::2990 3
 DEAL::2991 4
-DEAL::2992 1
-DEAL::2993 4
-DEAL::2994 4
-DEAL::2995 4
+DEAL::2992 4
+DEAL::2993 3
+DEAL::2994 3
+DEAL::2995 0
 DEAL::2996 4
 DEAL::2997 4
-DEAL::2998 4
+DEAL::2998 0
 DEAL::2999 4
 DEAL::3000 4
 DEAL::3001 4
-DEAL::3002 4
-DEAL::3003 4
-DEAL::3004 4
-DEAL::3005 4
-DEAL::3006 4
-DEAL::3007 4
-DEAL::3008 4
-DEAL::3009 4
-DEAL::3010 4
-DEAL::3011 4
-DEAL::3012 4
-DEAL::3013 4
-DEAL::3014 4
-DEAL::3015 4
-DEAL::3016 4
-DEAL::3017 4
-DEAL::3018 4
-DEAL::3019 4
-DEAL::3020 4
-DEAL::3021 4
-DEAL::3022 4
-DEAL::3023 4
-DEAL::3024 4
-DEAL::3025 4
-DEAL::3026 4
-DEAL::3027 4
-DEAL::3028 4
-DEAL::3029 4
-DEAL::3030 4
-DEAL::3031 4
-DEAL::3032 4
-DEAL::3033 4
-DEAL::3034 4
-DEAL::3035 4
-DEAL::3036 4
-DEAL::3037 4
-DEAL::3038 4
-DEAL::3039 4
-DEAL::3040 4
-DEAL::3041 4
-DEAL::3042 4
-DEAL::3043 4
-DEAL::3044 4
-DEAL::3045 4
-DEAL::3046 4
-DEAL::3047 4
-DEAL::3048 4
-DEAL::3049 4
-DEAL::3050 4
-DEAL::3051 4
-DEAL::3052 4
-DEAL::3053 4
-DEAL::3054 4
-DEAL::3055 4
-DEAL::3056 4
-DEAL::3057 4
-DEAL::3058 4
-DEAL::3059 4
-DEAL::3060 4
-DEAL::3061 4
-DEAL::3062 4
-DEAL::3063 4
-DEAL::3064 4
-DEAL::3065 4
-DEAL::3066 4
-DEAL::3067 4
-DEAL::3068 4
-DEAL::3069 4
-DEAL::3070 4
-DEAL::3071 4
-DEAL::3072 4
-DEAL::3073 4
-DEAL::3074 4
-DEAL::3075 4
-DEAL::3076 4
+DEAL::3002 0
+DEAL::3003 0
+DEAL::3004 0
+DEAL::3005 0
+DEAL::3006 0
+DEAL::3007 0
+DEAL::3008 0
+DEAL::3009 0
+DEAL::3010 0
+DEAL::3011 0
+DEAL::3012 0
+DEAL::3013 0
+DEAL::3014 0
+DEAL::3015 0
+DEAL::3016 0
+DEAL::3017 0
+DEAL::3018 0
+DEAL::3019 0
+DEAL::3020 0
+DEAL::3021 0
+DEAL::3022 0
+DEAL::3023 0
+DEAL::3024 0
+DEAL::3025 0
+DEAL::3026 0
+DEAL::3027 0
+DEAL::3028 0
+DEAL::3029 0
+DEAL::3030 0
+DEAL::3031 0
+DEAL::3032 0
+DEAL::3033 0
+DEAL::3034 0
+DEAL::3035 0
+DEAL::3036 0
+DEAL::3037 0
+DEAL::3038 0
+DEAL::3039 0
+DEAL::3040 0
+DEAL::3041 0
+DEAL::3042 0
+DEAL::3043 0
+DEAL::3044 0
+DEAL::3045 0
+DEAL::3046 0
+DEAL::3047 0
+DEAL::3048 0
+DEAL::3049 0
+DEAL::3050 0
+DEAL::3051 0
+DEAL::3052 0
+DEAL::3053 0
+DEAL::3054 0
+DEAL::3055 0
+DEAL::3056 0
+DEAL::3057 0
+DEAL::3058 0
+DEAL::3059 0
+DEAL::3060 0
+DEAL::3061 0
+DEAL::3062 0
+DEAL::3063 0
+DEAL::3064 0
+DEAL::3065 0
+DEAL::3066 0
+DEAL::3067 0
+DEAL::3068 0
+DEAL::3069 0
+DEAL::3070 0
+DEAL::3071 0
+DEAL::3072 0
+DEAL::3073 0
+DEAL::3074 0
+DEAL::3075 0
+DEAL::3076 0
 DEAL::3077 4
 DEAL::3078 4
 DEAL::3079 4
 DEAL::3080 4
 DEAL::3081 4
-DEAL::3082 1
+DEAL::3082 4
 DEAL::3083 4
 DEAL::3084 4
-DEAL::3085 1
+DEAL::3085 4
 DEAL::3086 4
 DEAL::3087 4
 DEAL::3088 4
@@ -11422,18 +11422,18 @@ DEAL::3097 4
 DEAL::3098 4
 DEAL::3099 4
 DEAL::3100 4
-DEAL::3101 1
+DEAL::3101 4
 DEAL::3102 4
 DEAL::3103 4
-DEAL::3104 1
+DEAL::3104 4
 DEAL::3105 4
-DEAL::3106 1
+DEAL::3106 4
 DEAL::3107 4
-DEAL::3108 1
-DEAL::3109 1
-DEAL::3110 1
-DEAL::3111 1
-DEAL::3112 1
+DEAL::3108 4
+DEAL::3109 4
+DEAL::3110 4
+DEAL::3111 4
+DEAL::3112 4
 DEAL::3113 4
 DEAL::3114 4
 DEAL::3115 4
@@ -11446,298 +11446,298 @@ DEAL::3121 4
 DEAL::3122 4
 DEAL::3123 4
 DEAL::3124 4
-DEAL::3125 1
-DEAL::3126 1
-DEAL::3127 1
+DEAL::3125 3
+DEAL::3126 3
+DEAL::3127 4
 DEAL::3128 4
-DEAL::3129 1
-DEAL::3130 1
-DEAL::3131 1
-DEAL::3132 1
+DEAL::3129 4
+DEAL::3130 3
+DEAL::3131 4
+DEAL::3132 4
 DEAL::3133 4
 DEAL::3134 4
 DEAL::3135 4
 DEAL::3136 4
 DEAL::3137 4
 DEAL::3138 4
-DEAL::3139 1
-DEAL::3140 1
-DEAL::3141 1
+DEAL::3139 3
+DEAL::3140 3
+DEAL::3141 4
 DEAL::3142 4
-DEAL::3143 1
-DEAL::3144 1
-DEAL::3145 1
-DEAL::3146 1
+DEAL::3143 4
+DEAL::3144 3
+DEAL::3145 4
+DEAL::3146 4
 DEAL::3147 4
 DEAL::3148 4
 DEAL::3149 4
 DEAL::3150 4
 DEAL::3151 4
-DEAL::3152 0
-DEAL::3153 3
-DEAL::3154 1
+DEAL::3152 4
+DEAL::3153 0
+DEAL::3154 3
 DEAL::3155 4
-DEAL::3156 4
-DEAL::3157 1
-DEAL::3158 0
-DEAL::3159 4
+DEAL::3156 0
+DEAL::3157 3
+DEAL::3158 4
+DEAL::3159 3
 DEAL::3160 4
-DEAL::3161 4
-DEAL::3162 4
-DEAL::3163 4
-DEAL::3164 4
-DEAL::3165 4
-DEAL::3166 4
-DEAL::3167 4
+DEAL::3161 0
+DEAL::3162 0
+DEAL::3163 0
+DEAL::3164 0
+DEAL::3165 0
+DEAL::3166 0
+DEAL::3167 0
 DEAL::3168 4
 DEAL::3169 4
-DEAL::3170 1
-DEAL::3171 1
+DEAL::3170 3
+DEAL::3171 4
 DEAL::3172 4
-DEAL::3173 1
-DEAL::3174 1
-DEAL::3175 1
+DEAL::3173 3
+DEAL::3174 3
+DEAL::3175 3
 DEAL::3176 4
-DEAL::3177 1
+DEAL::3177 4
 DEAL::3178 4
-DEAL::3179 1
-DEAL::3180 1
+DEAL::3179 4
+DEAL::3180 4
 DEAL::3181 4
-DEAL::3182 0
-DEAL::3183 0
-DEAL::3184 0
-DEAL::3185 1
-DEAL::3186 0
-DEAL::3187 0
-DEAL::3188 0
-DEAL::3189 0
-DEAL::3190 0
-DEAL::3191 1
-DEAL::3192 3
-DEAL::3193 1
-DEAL::3194 3
-DEAL::3195 3
-DEAL::3196 3
-DEAL::3197 3
-DEAL::3198 3
-DEAL::3199 1
-DEAL::3200 1
-DEAL::3201 1
-DEAL::3202 1
-DEAL::3203 0
-DEAL::3204 1
-DEAL::3205 1
-DEAL::3206 1
-DEAL::3207 1
-DEAL::3208 1
-DEAL::3209 1
-DEAL::3210 4
-DEAL::3211 4
+DEAL::3182 4
+DEAL::3183 1
+DEAL::3184 4
+DEAL::3185 4
+DEAL::3186 4
+DEAL::3187 4
+DEAL::3188 4
+DEAL::3189 4
+DEAL::3190 4
+DEAL::3191 4
+DEAL::3192 0
+DEAL::3193 4
+DEAL::3194 0
+DEAL::3195 0
+DEAL::3196 0
+DEAL::3197 0
+DEAL::3198 0
+DEAL::3199 3
+DEAL::3200 4
+DEAL::3201 4
+DEAL::3202 3
+DEAL::3203 4
+DEAL::3204 3
+DEAL::3205 4
+DEAL::3206 4
+DEAL::3207 4
+DEAL::3208 4
+DEAL::3209 4
+DEAL::3210 0
+DEAL::3211 0
 DEAL::3212 4
-DEAL::3213 4
-DEAL::3214 4
-DEAL::3215 4
-DEAL::3216 4
-DEAL::3217 3
-DEAL::3218 4
+DEAL::3213 0
+DEAL::3214 0
+DEAL::3215 0
+DEAL::3216 0
+DEAL::3217 0
+DEAL::3218 0
 DEAL::3219 4
-DEAL::3220 4
-DEAL::3221 4
-DEAL::3222 4
-DEAL::3223 4
-DEAL::3224 4
-DEAL::3225 4
-DEAL::3226 4
-DEAL::3227 4
-DEAL::3228 4
+DEAL::3220 0
+DEAL::3221 0
+DEAL::3222 0
+DEAL::3223 0
+DEAL::3224 0
+DEAL::3225 0
+DEAL::3226 0
+DEAL::3227 0
+DEAL::3228 0
 DEAL::3229 4
-DEAL::3230 4
+DEAL::3230 0
 DEAL::3231 4
-DEAL::3232 4
-DEAL::3233 4
-DEAL::3234 4
-DEAL::3235 3
-DEAL::3236 3
-DEAL::3237 3
+DEAL::3232 0
+DEAL::3233 0
+DEAL::3234 0
+DEAL::3235 0
+DEAL::3236 1
+DEAL::3237 1
 DEAL::3238 4
-DEAL::3239 3
+DEAL::3239 0
 DEAL::3240 4
-DEAL::3241 3
-DEAL::3242 3
+DEAL::3241 1
+DEAL::3242 0
 DEAL::3243 4
-DEAL::3244 4
+DEAL::3244 0
 DEAL::3245 4
-DEAL::3246 4
-DEAL::3247 4
-DEAL::3248 4
-DEAL::3249 4
-DEAL::3250 4
+DEAL::3246 0
+DEAL::3247 0
+DEAL::3248 0
+DEAL::3249 0
+DEAL::3250 0
 DEAL::3251 4
 DEAL::3252 4
-DEAL::3253 1
+DEAL::3253 4
 DEAL::3254 4
 DEAL::3255 4
 DEAL::3256 4
 DEAL::3257 4
 DEAL::3258 4
-DEAL::3259 1
-DEAL::3260 1
-DEAL::3261 1
-DEAL::3262 1
-DEAL::3263 1
-DEAL::3264 1
-DEAL::3265 1
-DEAL::3266 1
-DEAL::3267 1
-DEAL::3268 1
-DEAL::3269 1
-DEAL::3270 1
-DEAL::3271 1
-DEAL::3272 1
-DEAL::3273 1
-DEAL::3274 1
-DEAL::3275 1
-DEAL::3276 1
-DEAL::3277 1
-DEAL::3278 1
-DEAL::3279 1
-DEAL::3280 1
-DEAL::3281 1
-DEAL::3282 1
-DEAL::3283 1
-DEAL::3284 1
-DEAL::3285 1
-DEAL::3286 1
-DEAL::3287 1
-DEAL::3288 1
-DEAL::3289 1
-DEAL::3290 1
-DEAL::3291 1
-DEAL::3292 1
-DEAL::3293 1
-DEAL::3294 1
-DEAL::3295 1
-DEAL::3296 1
-DEAL::3297 0
-DEAL::3298 0
+DEAL::3259 3
+DEAL::3260 3
+DEAL::3261 3
+DEAL::3262 4
+DEAL::3263 4
+DEAL::3264 3
+DEAL::3265 3
+DEAL::3266 3
+DEAL::3267 4
+DEAL::3268 4
+DEAL::3269 4
+DEAL::3270 4
+DEAL::3271 3
+DEAL::3272 3
+DEAL::3273 3
+DEAL::3274 3
+DEAL::3275 4
+DEAL::3276 3
+DEAL::3277 4
+DEAL::3278 3
+DEAL::3279 3
+DEAL::3280 3
+DEAL::3281 4
+DEAL::3282 4
+DEAL::3283 4
+DEAL::3284 4
+DEAL::3285 3
+DEAL::3286 3
+DEAL::3287 3
+DEAL::3288 3
+DEAL::3289 4
+DEAL::3290 4
+DEAL::3291 3
+DEAL::3292 3
+DEAL::3293 3
+DEAL::3294 3
+DEAL::3295 4
+DEAL::3296 4
+DEAL::3297 2
+DEAL::3298 2
 DEAL::3299 2
-DEAL::3300 0
-DEAL::3301 0
+DEAL::3300 2
+DEAL::3301 2
 DEAL::3302 2
-DEAL::3303 0
+DEAL::3303 2
 DEAL::3304 2
 DEAL::3305 2
 DEAL::3306 2
 DEAL::3307 2
 DEAL::3308 2
-DEAL::3309 0
-DEAL::3310 0
-DEAL::3311 0
-DEAL::3312 0
-DEAL::3313 0
-DEAL::3314 0
-DEAL::3315 0
-DEAL::3316 0
-DEAL::3317 0
-DEAL::3318 0
-DEAL::3319 0
-DEAL::3320 0
-DEAL::3321 0
-DEAL::3322 0
-DEAL::3323 0
-DEAL::3324 0
-DEAL::3325 0
-DEAL::3326 0
-DEAL::3327 0
-DEAL::3328 0
-DEAL::3329 0
-DEAL::3330 0
-DEAL::3331 0
-DEAL::3332 0
-DEAL::3333 0
-DEAL::3334 0
-DEAL::3335 0
-DEAL::3336 0
+DEAL::3309 2
+DEAL::3310 2
+DEAL::3311 2
+DEAL::3312 2
+DEAL::3313 2
+DEAL::3314 2
+DEAL::3315 2
+DEAL::3316 2
+DEAL::3317 2
+DEAL::3318 2
+DEAL::3319 2
+DEAL::3320 2
+DEAL::3321 2
+DEAL::3322 2
+DEAL::3323 2
+DEAL::3324 2
+DEAL::3325 2
+DEAL::3326 2
+DEAL::3327 2
+DEAL::3328 2
+DEAL::3329 2
+DEAL::3330 2
+DEAL::3331 2
+DEAL::3332 2
+DEAL::3333 2
+DEAL::3334 2
+DEAL::3335 2
+DEAL::3336 2
 DEAL::3337 2
-DEAL::3338 0
+DEAL::3338 2
 DEAL::3339 2
-DEAL::3340 0
-DEAL::3341 0
+DEAL::3340 2
+DEAL::3341 2
 DEAL::3342 2
 DEAL::3343 2
-DEAL::3344 0
+DEAL::3344 2
 DEAL::3345 2
 DEAL::3346 2
-DEAL::3347 0
-DEAL::3348 0
-DEAL::3349 0
-DEAL::3350 0
-DEAL::3351 0
-DEAL::3352 0
-DEAL::3353 0
-DEAL::3354 0
-DEAL::3355 0
-DEAL::3356 0
-DEAL::3357 0
-DEAL::3358 0
-DEAL::3359 0
-DEAL::3360 0
-DEAL::3361 0
-DEAL::3362 0
-DEAL::3363 0
-DEAL::3364 0
-DEAL::3365 0
-DEAL::3366 0
-DEAL::3367 0
-DEAL::3368 0
-DEAL::3369 0
-DEAL::3370 0
-DEAL::3371 0
-DEAL::3372 0
-DEAL::3373 0
-DEAL::3374 0
-DEAL::3375 0
-DEAL::3376 0
-DEAL::3377 0
-DEAL::3378 0
-DEAL::3379 0
-DEAL::3380 0
-DEAL::3381 0
-DEAL::3382 0
-DEAL::3383 0
-DEAL::3384 0
-DEAL::3385 0
-DEAL::3386 0
-DEAL::3387 0
-DEAL::3388 0
-DEAL::3389 0
-DEAL::3390 0
-DEAL::3391 0
-DEAL::3392 0
-DEAL::3393 0
-DEAL::3394 0
-DEAL::3395 0
-DEAL::3396 0
-DEAL::3397 0
-DEAL::3398 0
-DEAL::3399 0
-DEAL::3400 0
-DEAL::3401 0
-DEAL::3402 0
-DEAL::3403 0
-DEAL::3404 0
-DEAL::3405 0
-DEAL::3406 0
-DEAL::3407 0
-DEAL::3408 0
-DEAL::3409 0
-DEAL::3410 0
-DEAL::3411 0
-DEAL::3412 2
-DEAL::3413 2
-DEAL::3414 2
-DEAL::3415 2
-DEAL::3416 2
+DEAL::3347 2
+DEAL::3348 2
+DEAL::3349 2
+DEAL::3350 2
+DEAL::3351 2
+DEAL::3352 2
+DEAL::3353 2
+DEAL::3354 2
+DEAL::3355 2
+DEAL::3356 2
+DEAL::3357 2
+DEAL::3358 2
+DEAL::3359 2
+DEAL::3360 2
+DEAL::3361 2
+DEAL::3362 2
+DEAL::3363 2
+DEAL::3364 2
+DEAL::3365 2
+DEAL::3366 2
+DEAL::3367 2
+DEAL::3368 2
+DEAL::3369 2
+DEAL::3370 2
+DEAL::3371 2
+DEAL::3372 2
+DEAL::3373 2
+DEAL::3374 2
+DEAL::3375 2
+DEAL::3376 2
+DEAL::3377 1
+DEAL::3378 2
+DEAL::3379 2
+DEAL::3380 2
+DEAL::3381 2
+DEAL::3382 2
+DEAL::3383 2
+DEAL::3384 1
+DEAL::3385 2
+DEAL::3386 2
+DEAL::3387 2
+DEAL::3388 2
+DEAL::3389 2
+DEAL::3390 2
+DEAL::3391 2
+DEAL::3392 2
+DEAL::3393 2
+DEAL::3394 2
+DEAL::3395 2
+DEAL::3396 2
+DEAL::3397 2
+DEAL::3398 2
+DEAL::3399 2
+DEAL::3400 2
+DEAL::3401 2
+DEAL::3402 2
+DEAL::3403 2
+DEAL::3404 2
+DEAL::3405 2
+DEAL::3406 2
+DEAL::3407 2
+DEAL::3408 2
+DEAL::3409 2
+DEAL::3410 2
+DEAL::3411 2
+DEAL::3412 2
+DEAL::3413 2
+DEAL::3414 2
+DEAL::3415 2
+DEAL::3416 2
 DEAL::3417 2
 DEAL::3418 2
 DEAL::3419 2
@@ -11775,7 +11775,7 @@ DEAL::3450 2
 DEAL::3451 2
 DEAL::3452 2
 DEAL::3453 2
-DEAL::3454 0
+DEAL::3454 2
 DEAL::3455 2
 DEAL::3456 2
 DEAL::3457 2
@@ -11830,24 +11830,24 @@ DEAL::3505 2
 DEAL::3506 2
 DEAL::3507 2
 DEAL::3508 2
-DEAL::3509 0
-DEAL::3510 0
-DEAL::3511 0
-DEAL::3512 0
+DEAL::3509 2
+DEAL::3510 2
+DEAL::3511 2
+DEAL::3512 2
 DEAL::3513 2
-DEAL::3514 0
-DEAL::3515 0
+DEAL::3514 2
+DEAL::3515 2
 DEAL::3516 2
-DEAL::3517 0
-DEAL::3518 0
-DEAL::3519 0
+DEAL::3517 2
+DEAL::3518 2
+DEAL::3519 2
 DEAL::3520 2
-DEAL::3521 0
-DEAL::3522 0
-DEAL::3523 0
-DEAL::3524 0
+DEAL::3521 2
+DEAL::3522 2
+DEAL::3523 2
+DEAL::3524 2
 DEAL::3525 2
-DEAL::3526 0
+DEAL::3526 2
 DEAL::3527 2
 DEAL::3528 2
 DEAL::3529 2
@@ -11855,639 +11855,639 @@ DEAL::3530 2
 DEAL::3531 2
 DEAL::3532 2
 DEAL::3533 2
-DEAL::3534 0
+DEAL::3534 2
 DEAL::3535 2
 DEAL::3536 2
-DEAL::3537 0
-DEAL::3538 0
-DEAL::3539 0
-DEAL::3540 0
-DEAL::3541 0
-DEAL::3542 0
-DEAL::3543 0
-DEAL::3544 0
-DEAL::3545 0
-DEAL::3546 0
-DEAL::3547 0
-DEAL::3548 0
-DEAL::3549 0
-DEAL::3550 0
-DEAL::3551 0
-DEAL::3552 0
-DEAL::3553 0
-DEAL::3554 0
-DEAL::3555 0
-DEAL::3556 0
-DEAL::3557 0
-DEAL::3558 0
-DEAL::3559 0
-DEAL::3560 0
+DEAL::3537 4
+DEAL::3538 4
+DEAL::3539 2
+DEAL::3540 2
+DEAL::3541 2
+DEAL::3542 2
+DEAL::3543 4
+DEAL::3544 2
+DEAL::3545 2
+DEAL::3546 2
+DEAL::3547 2
+DEAL::3548 2
+DEAL::3549 2
+DEAL::3550 2
+DEAL::3551 4
+DEAL::3552 4
+DEAL::3553 2
+DEAL::3554 2
+DEAL::3555 2
+DEAL::3556 2
+DEAL::3557 2
+DEAL::3558 2
+DEAL::3559 2
+DEAL::3560 2
 DEAL::3561 2
-DEAL::3562 0
-DEAL::3563 0
-DEAL::3564 0
-DEAL::3565 0
-DEAL::3566 0
-DEAL::3567 0
-DEAL::3568 0
-DEAL::3569 0
-DEAL::3570 0
-DEAL::3571 0
-DEAL::3572 0
-DEAL::3573 0
+DEAL::3562 2
+DEAL::3563 2
+DEAL::3564 2
+DEAL::3565 2
+DEAL::3566 2
+DEAL::3567 2
+DEAL::3568 2
+DEAL::3569 2
+DEAL::3570 2
+DEAL::3571 2
+DEAL::3572 2
+DEAL::3573 2
 DEAL::3574 2
 DEAL::3575 2
-DEAL::3576 0
+DEAL::3576 2
 DEAL::3577 2
-DEAL::3578 0
+DEAL::3578 2
 DEAL::3579 2
 DEAL::3580 2
 DEAL::3581 2
 DEAL::3582 2
 DEAL::3583 2
-DEAL::3584 0
-DEAL::3585 0
-DEAL::3586 0
-DEAL::3587 0
-DEAL::3588 0
-DEAL::3589 0
-DEAL::3590 0
-DEAL::3591 0
-DEAL::3592 0
-DEAL::3593 0
-DEAL::3594 0
-DEAL::3595 0
-DEAL::3596 0
-DEAL::3597 0
-DEAL::3598 0
-DEAL::3599 0
-DEAL::3600 0
-DEAL::3601 0
-DEAL::3602 3
-DEAL::3603 3
-DEAL::3604 3
-DEAL::3605 3
-DEAL::3606 3
-DEAL::3607 3
-DEAL::3608 3
-DEAL::3609 3
-DEAL::3610 3
-DEAL::3611 3
-DEAL::3612 3
-DEAL::3613 3
-DEAL::3614 3
-DEAL::3615 3
-DEAL::3616 3
-DEAL::3617 3
-DEAL::3618 3
-DEAL::3619 3
-DEAL::3620 3
-DEAL::3621 3
-DEAL::3622 3
-DEAL::3623 3
-DEAL::3624 3
-DEAL::3625 3
-DEAL::3626 3
-DEAL::3627 3
-DEAL::3628 3
-DEAL::3629 3
-DEAL::3630 3
-DEAL::3631 3
-DEAL::3632 3
-DEAL::3633 3
-DEAL::3634 3
-DEAL::3635 3
-DEAL::3636 3
-DEAL::3637 3
-DEAL::3638 3
-DEAL::3639 3
-DEAL::3640 3
-DEAL::3641 3
-DEAL::3642 3
-DEAL::3643 3
-DEAL::3644 3
-DEAL::3645 3
-DEAL::3646 3
-DEAL::3647 3
-DEAL::3648 3
-DEAL::3649 3
-DEAL::3650 3
-DEAL::3651 3
-DEAL::3652 3
-DEAL::3653 3
-DEAL::3654 3
-DEAL::3655 3
-DEAL::3656 3
-DEAL::3657 3
-DEAL::3658 3
-DEAL::3659 3
-DEAL::3660 3
-DEAL::3661 3
-DEAL::3662 3
-DEAL::3663 3
-DEAL::3664 3
-DEAL::3665 3
-DEAL::3666 3
-DEAL::3667 3
-DEAL::3668 0
-DEAL::3669 0
-DEAL::3670 0
-DEAL::3671 0
-DEAL::3672 0
-DEAL::3673 0
-DEAL::3674 0
-DEAL::3675 0
-DEAL::3676 0
-DEAL::3677 0
-DEAL::3678 0
-DEAL::3679 0
-DEAL::3680 0
-DEAL::3681 0
-DEAL::3682 0
-DEAL::3683 0
-DEAL::3684 0
-DEAL::3685 0
-DEAL::3686 0
-DEAL::3687 0
-DEAL::3688 0
-DEAL::3689 0
-DEAL::3690 0
-DEAL::3691 0
-DEAL::3692 0
-DEAL::3693 0
-DEAL::3694 0
-DEAL::3695 0
-DEAL::3696 0
-DEAL::3697 0
-DEAL::3698 0
-DEAL::3699 0
-DEAL::3700 0
-DEAL::3701 0
-DEAL::3702 0
-DEAL::3703 0
-DEAL::3704 0
-DEAL::3705 0
-DEAL::3706 0
-DEAL::3707 0
-DEAL::3708 0
-DEAL::3709 0
-DEAL::3710 0
-DEAL::3711 0
-DEAL::3712 0
-DEAL::3713 0
-DEAL::3714 0
-DEAL::3715 0
-DEAL::3716 0
-DEAL::3717 0
-DEAL::3718 0
-DEAL::3719 0
-DEAL::3720 0
-DEAL::3721 0
-DEAL::3722 0
-DEAL::3723 0
-DEAL::3724 0
-DEAL::3725 0
-DEAL::3726 0
-DEAL::3727 0
-DEAL::3728 0
-DEAL::3729 0
-DEAL::3730 0
-DEAL::3731 0
-DEAL::3732 0
-DEAL::3733 0
-DEAL::3734 0
-DEAL::3735 0
-DEAL::3736 0
-DEAL::3737 0
-DEAL::3738 0
-DEAL::3739 0
-DEAL::3740 0
-DEAL::3741 0
-DEAL::3742 0
-DEAL::3743 0
-DEAL::3744 0
-DEAL::3745 0
-DEAL::3746 0
-DEAL::3747 0
-DEAL::3748 0
-DEAL::3749 0
-DEAL::3750 0
-DEAL::3751 0
-DEAL::3752 0
-DEAL::3753 0
-DEAL::3754 0
-DEAL::3755 0
-DEAL::3756 0
-DEAL::3757 0
-DEAL::3758 0
-DEAL::3759 0
-DEAL::3760 0
-DEAL::3761 0
-DEAL::3762 0
-DEAL::3763 0
-DEAL::3764 0
-DEAL::3765 0
-DEAL::3766 0
-DEAL::3767 0
-DEAL::3768 0
-DEAL::3769 0
-DEAL::3770 0
-DEAL::3771 0
-DEAL::3772 0
-DEAL::3773 0
-DEAL::3774 0
-DEAL::3775 0
-DEAL::3776 0
-DEAL::3777 0
-DEAL::3778 0
-DEAL::3779 0
-DEAL::3780 0
-DEAL::3781 0
-DEAL::3782 0
-DEAL::3783 0
-DEAL::3784 0
-DEAL::3785 0
-DEAL::3786 0
-DEAL::3787 0
-DEAL::3788 0
-DEAL::3789 0
-DEAL::3790 0
-DEAL::3791 0
-DEAL::3792 0
-DEAL::3793 0
-DEAL::3794 0
-DEAL::3795 0
-DEAL::3796 0
-DEAL::3797 0
-DEAL::3798 0
-DEAL::3799 0
-DEAL::3800 0
-DEAL::3801 0
-DEAL::3802 0
-DEAL::3803 0
-DEAL::3804 0
-DEAL::3805 0
-DEAL::3806 0
-DEAL::3807 0
-DEAL::3808 0
-DEAL::3809 0
-DEAL::3810 0
-DEAL::3811 0
-DEAL::3812 0
-DEAL::3813 0
-DEAL::3814 0
-DEAL::3815 0
-DEAL::3816 0
-DEAL::3817 0
-DEAL::3818 0
-DEAL::3819 0
-DEAL::3820 0
-DEAL::3821 0
-DEAL::3822 0
-DEAL::3823 0
-DEAL::3824 0
-DEAL::3825 0
-DEAL::3826 0
-DEAL::3827 0
-DEAL::3828 0
-DEAL::3829 0
-DEAL::3830 0
-DEAL::3831 0
-DEAL::3832 0
-DEAL::3833 0
-DEAL::3834 0
-DEAL::3835 0
-DEAL::3836 0
-DEAL::3837 0
-DEAL::3838 0
-DEAL::3839 0
-DEAL::3840 0
-DEAL::3841 0
-DEAL::3842 0
-DEAL::3843 1
-DEAL::3844 0
-DEAL::3845 0
-DEAL::3846 0
-DEAL::3847 0
-DEAL::3848 0
-DEAL::3849 0
-DEAL::3850 0
-DEAL::3851 0
-DEAL::3852 0
-DEAL::3853 0
-DEAL::3854 0
-DEAL::3855 0
-DEAL::3856 0
-DEAL::3857 0
-DEAL::3858 0
-DEAL::3859 0
-DEAL::3860 0
-DEAL::3861 0
-DEAL::3862 0
-DEAL::3863 0
-DEAL::3864 0
-DEAL::3865 0
-DEAL::3866 0
-DEAL::3867 0
-DEAL::3868 0
-DEAL::3869 0
-DEAL::3870 0
-DEAL::3871 0
-DEAL::3872 0
-DEAL::3873 0
-DEAL::3874 1
-DEAL::3875 0
-DEAL::3876 0
-DEAL::3877 0
-DEAL::3878 0
-DEAL::3879 0
-DEAL::3880 0
-DEAL::3881 0
-DEAL::3882 0
-DEAL::3883 0
-DEAL::3884 0
-DEAL::3885 0
-DEAL::3886 0
-DEAL::3887 0
-DEAL::3888 0
-DEAL::3889 0
-DEAL::3890 0
-DEAL::3891 0
-DEAL::3892 0
-DEAL::3893 0
-DEAL::3894 0
-DEAL::3895 0
-DEAL::3896 0
-DEAL::3897 0
-DEAL::3898 0
-DEAL::3899 0
-DEAL::3900 0
-DEAL::3901 0
-DEAL::3902 0
-DEAL::3903 0
-DEAL::3904 0
-DEAL::3905 0
-DEAL::3906 0
-DEAL::3907 0
-DEAL::3908 0
-DEAL::3909 0
-DEAL::3910 0
-DEAL::3911 0
-DEAL::3912 0
-DEAL::3913 0
-DEAL::3914 0
-DEAL::3915 0
-DEAL::3916 0
-DEAL::3917 0
-DEAL::3918 0
-DEAL::3919 0
-DEAL::3920 0
-DEAL::3921 0
-DEAL::3922 0
-DEAL::3923 0
-DEAL::3924 0
-DEAL::3925 0
-DEAL::3926 0
-DEAL::3927 0
-DEAL::3928 0
-DEAL::3929 0
-DEAL::3930 0
-DEAL::3931 0
-DEAL::3932 0
-DEAL::3933 0
-DEAL::3934 0
-DEAL::3935 0
-DEAL::3936 0
-DEAL::3937 0
-DEAL::3938 0
-DEAL::3939 0
-DEAL::3940 0
-DEAL::3941 0
-DEAL::3942 0
-DEAL::3943 0
-DEAL::3944 0
-DEAL::3945 0
-DEAL::3946 0
-DEAL::3947 0
-DEAL::3948 0
-DEAL::3949 0
-DEAL::3950 0
-DEAL::3951 0
-DEAL::3952 0
-DEAL::3953 0
-DEAL::3954 0
-DEAL::3955 0
-DEAL::3956 0
-DEAL::3957 0
-DEAL::3958 0
-DEAL::3959 0
-DEAL::3960 0
-DEAL::3961 0
-DEAL::3962 0
-DEAL::3963 0
-DEAL::3964 0
-DEAL::3965 0
-DEAL::3966 0
-DEAL::3967 0
-DEAL::3968 1
-DEAL::3969 0
-DEAL::3970 0
-DEAL::3971 1
-DEAL::3972 1
-DEAL::3973 0
-DEAL::3974 0
-DEAL::3975 0
-DEAL::3976 0
-DEAL::3977 0
-DEAL::3978 0
-DEAL::3979 0
-DEAL::3980 0
-DEAL::3981 0
-DEAL::3982 0
-DEAL::3983 0
-DEAL::3984 0
-DEAL::3985 0
-DEAL::3986 0
-DEAL::3987 1
-DEAL::3988 0
-DEAL::3989 1
-DEAL::3990 0
-DEAL::3991 0
-DEAL::3992 0
-DEAL::3993 0
-DEAL::3994 0
-DEAL::3995 0
-DEAL::3996 0
-DEAL::3997 0
-DEAL::3998 0
-DEAL::3999 0
-DEAL::4000 0
-DEAL::4001 0
-DEAL::4002 1
-DEAL::4003 0
-DEAL::4004 0
-DEAL::4005 1
-DEAL::4006 1
-DEAL::4007 0
-DEAL::4008 0
-DEAL::4009 0
-DEAL::4010 0
-DEAL::4011 0
-DEAL::4012 0
-DEAL::4013 0
-DEAL::4014 0
-DEAL::4015 0
-DEAL::4016 0
-DEAL::4017 0
-DEAL::4018 0
-DEAL::4019 1
-DEAL::4020 0
-DEAL::4021 1
-DEAL::4022 0
-DEAL::4023 0
-DEAL::4024 0
-DEAL::4025 0
-DEAL::4026 0
-DEAL::4027 0
-DEAL::4028 0
-DEAL::4029 1
-DEAL::4030 0
-DEAL::4031 0
-DEAL::4032 0
-DEAL::4033 0
-DEAL::4034 0
-DEAL::4035 1
-DEAL::4036 0
-DEAL::4037 1
-DEAL::4038 0
-DEAL::4039 3
-DEAL::4040 0
-DEAL::4041 0
-DEAL::4042 0
-DEAL::4043 0
-DEAL::4044 1
-DEAL::4045 0
-DEAL::4046 0
-DEAL::4047 1
-DEAL::4048 1
-DEAL::4049 1
-DEAL::4050 1
-DEAL::4051 0
-DEAL::4052 0
-DEAL::4053 0
-DEAL::4054 1
-DEAL::4055 0
-DEAL::4056 0
-DEAL::4057 0
-DEAL::4058 0
-DEAL::4059 1
+DEAL::3584 4
+DEAL::3585 2
+DEAL::3586 2
+DEAL::3587 2
+DEAL::3588 2
+DEAL::3589 2
+DEAL::3590 2
+DEAL::3591 2
+DEAL::3592 2
+DEAL::3593 2
+DEAL::3594 2
+DEAL::3595 2
+DEAL::3596 4
+DEAL::3597 4
+DEAL::3598 2
+DEAL::3599 2
+DEAL::3600 2
+DEAL::3601 2
+DEAL::3602 1
+DEAL::3603 1
+DEAL::3604 1
+DEAL::3605 1
+DEAL::3606 0
+DEAL::3607 1
+DEAL::3608 1
+DEAL::3609 0
+DEAL::3610 1
+DEAL::3611 1
+DEAL::3612 1
+DEAL::3613 1
+DEAL::3614 1
+DEAL::3615 1
+DEAL::3616 1
+DEAL::3617 1
+DEAL::3618 1
+DEAL::3619 1
+DEAL::3620 1
+DEAL::3621 1
+DEAL::3622 1
+DEAL::3623 1
+DEAL::3624 1
+DEAL::3625 1
+DEAL::3626 1
+DEAL::3627 1
+DEAL::3628 1
+DEAL::3629 0
+DEAL::3630 0
+DEAL::3631 0
+DEAL::3632 0
+DEAL::3633 0
+DEAL::3634 0
+DEAL::3635 1
+DEAL::3636 0
+DEAL::3637 1
+DEAL::3638 1
+DEAL::3639 1
+DEAL::3640 1
+DEAL::3641 1
+DEAL::3642 1
+DEAL::3643 1
+DEAL::3644 1
+DEAL::3645 1
+DEAL::3646 1
+DEAL::3647 1
+DEAL::3648 1
+DEAL::3649 1
+DEAL::3650 1
+DEAL::3651 1
+DEAL::3652 1
+DEAL::3653 1
+DEAL::3654 1
+DEAL::3655 1
+DEAL::3656 1
+DEAL::3657 1
+DEAL::3658 1
+DEAL::3659 1
+DEAL::3660 1
+DEAL::3661 1
+DEAL::3662 1
+DEAL::3663 1
+DEAL::3664 1
+DEAL::3665 1
+DEAL::3666 1
+DEAL::3667 1
+DEAL::3668 2
+DEAL::3669 3
+DEAL::3670 2
+DEAL::3671 2
+DEAL::3672 2
+DEAL::3673 2
+DEAL::3674 2
+DEAL::3675 2
+DEAL::3676 2
+DEAL::3677 2
+DEAL::3678 2
+DEAL::3679 2
+DEAL::3680 3
+DEAL::3681 2
+DEAL::3682 2
+DEAL::3683 2
+DEAL::3684 2
+DEAL::3685 3
+DEAL::3686 2
+DEAL::3687 2
+DEAL::3688 2
+DEAL::3689 2
+DEAL::3690 3
+DEAL::3691 2
+DEAL::3692 2
+DEAL::3693 2
+DEAL::3694 2
+DEAL::3695 2
+DEAL::3696 2
+DEAL::3697 2
+DEAL::3698 2
+DEAL::3699 2
+DEAL::3700 2
+DEAL::3701 2
+DEAL::3702 2
+DEAL::3703 2
+DEAL::3704 2
+DEAL::3705 2
+DEAL::3706 2
+DEAL::3707 2
+DEAL::3708 2
+DEAL::3709 2
+DEAL::3710 2
+DEAL::3711 2
+DEAL::3712 2
+DEAL::3713 2
+DEAL::3714 2
+DEAL::3715 2
+DEAL::3716 4
+DEAL::3717 3
+DEAL::3718 2
+DEAL::3719 3
+DEAL::3720 2
+DEAL::3721 2
+DEAL::3722 2
+DEAL::3723 2
+DEAL::3724 2
+DEAL::3725 2
+DEAL::3726 2
+DEAL::3727 2
+DEAL::3728 2
+DEAL::3729 2
+DEAL::3730 2
+DEAL::3731 2
+DEAL::3732 2
+DEAL::3733 2
+DEAL::3734 2
+DEAL::3735 2
+DEAL::3736 2
+DEAL::3737 2
+DEAL::3738 4
+DEAL::3739 2
+DEAL::3740 2
+DEAL::3741 2
+DEAL::3742 4
+DEAL::3743 4
+DEAL::3744 2
+DEAL::3745 2
+DEAL::3746 2
+DEAL::3747 2
+DEAL::3748 4
+DEAL::3749 4
+DEAL::3750 2
+DEAL::3751 2
+DEAL::3752 4
+DEAL::3753 2
+DEAL::3754 4
+DEAL::3755 2
+DEAL::3756 2
+DEAL::3757 2
+DEAL::3758 2
+DEAL::3759 2
+DEAL::3760 4
+DEAL::3761 4
+DEAL::3762 2
+DEAL::3763 4
+DEAL::3764 2
+DEAL::3765 4
+DEAL::3766 2
+DEAL::3767 2
+DEAL::3768 2
+DEAL::3769 2
+DEAL::3770 2
+DEAL::3771 2
+DEAL::3772 2
+DEAL::3773 2
+DEAL::3774 2
+DEAL::3775 2
+DEAL::3776 2
+DEAL::3777 2
+DEAL::3778 2
+DEAL::3779 2
+DEAL::3780 2
+DEAL::3781 2
+DEAL::3782 2
+DEAL::3783 2
+DEAL::3784 2
+DEAL::3785 2
+DEAL::3786 2
+DEAL::3787 2
+DEAL::3788 2
+DEAL::3789 4
+DEAL::3790 2
+DEAL::3791 2
+DEAL::3792 2
+DEAL::3793 2
+DEAL::3794 2
+DEAL::3795 2
+DEAL::3796 4
+DEAL::3797 2
+DEAL::3798 2
+DEAL::3799 2
+DEAL::3800 4
+DEAL::3801 2
+DEAL::3802 2
+DEAL::3803 2
+DEAL::3804 4
+DEAL::3805 2
+DEAL::3806 2
+DEAL::3807 2
+DEAL::3808 4
+DEAL::3809 4
+DEAL::3810 4
+DEAL::3811 2
+DEAL::3812 2
+DEAL::3813 2
+DEAL::3814 2
+DEAL::3815 4
+DEAL::3816 4
+DEAL::3817 4
+DEAL::3818 4
+DEAL::3819 4
+DEAL::3820 4
+DEAL::3821 4
+DEAL::3822 4
+DEAL::3823 4
+DEAL::3824 4
+DEAL::3825 4
+DEAL::3826 4
+DEAL::3827 4
+DEAL::3828 4
+DEAL::3829 4
+DEAL::3830 4
+DEAL::3831 4
+DEAL::3832 4
+DEAL::3833 4
+DEAL::3834 4
+DEAL::3835 4
+DEAL::3836 4
+DEAL::3837 4
+DEAL::3838 4
+DEAL::3839 4
+DEAL::3840 4
+DEAL::3841 4
+DEAL::3842 4
+DEAL::3843 4
+DEAL::3844 4
+DEAL::3845 4
+DEAL::3846 4
+DEAL::3847 4
+DEAL::3848 4
+DEAL::3849 2
+DEAL::3850 2
+DEAL::3851 4
+DEAL::3852 4
+DEAL::3853 4
+DEAL::3854 2
+DEAL::3855 2
+DEAL::3856 4
+DEAL::3857 4
+DEAL::3858 4
+DEAL::3859 4
+DEAL::3860 4
+DEAL::3861 4
+DEAL::3862 4
+DEAL::3863 4
+DEAL::3864 4
+DEAL::3865 4
+DEAL::3866 4
+DEAL::3867 4
+DEAL::3868 4
+DEAL::3869 4
+DEAL::3870 4
+DEAL::3871 4
+DEAL::3872 4
+DEAL::3873 4
+DEAL::3874 4
+DEAL::3875 4
+DEAL::3876 4
+DEAL::3877 4
+DEAL::3878 4
+DEAL::3879 4
+DEAL::3880 4
+DEAL::3881 4
+DEAL::3882 4
+DEAL::3883 4
+DEAL::3884 4
+DEAL::3885 4
+DEAL::3886 4
+DEAL::3887 4
+DEAL::3888 4
+DEAL::3889 4
+DEAL::3890 4
+DEAL::3891 4
+DEAL::3892 4
+DEAL::3893 4
+DEAL::3894 4
+DEAL::3895 4
+DEAL::3896 4
+DEAL::3897 4
+DEAL::3898 4
+DEAL::3899 4
+DEAL::3900 4
+DEAL::3901 4
+DEAL::3902 4
+DEAL::3903 4
+DEAL::3904 4
+DEAL::3905 4
+DEAL::3906 4
+DEAL::3907 4
+DEAL::3908 4
+DEAL::3909 4
+DEAL::3910 4
+DEAL::3911 4
+DEAL::3912 4
+DEAL::3913 4
+DEAL::3914 4
+DEAL::3915 4
+DEAL::3916 4
+DEAL::3917 4
+DEAL::3918 4
+DEAL::3919 4
+DEAL::3920 4
+DEAL::3921 4
+DEAL::3922 4
+DEAL::3923 4
+DEAL::3924 4
+DEAL::3925 4
+DEAL::3926 4
+DEAL::3927 4
+DEAL::3928 4
+DEAL::3929 4
+DEAL::3930 4
+DEAL::3931 4
+DEAL::3932 4
+DEAL::3933 4
+DEAL::3934 4
+DEAL::3935 4
+DEAL::3936 4
+DEAL::3937 4
+DEAL::3938 4
+DEAL::3939 4
+DEAL::3940 4
+DEAL::3941 4
+DEAL::3942 4
+DEAL::3943 4
+DEAL::3944 4
+DEAL::3945 4
+DEAL::3946 4
+DEAL::3947 4
+DEAL::3948 4
+DEAL::3949 4
+DEAL::3950 4
+DEAL::3951 4
+DEAL::3952 4
+DEAL::3953 4
+DEAL::3954 4
+DEAL::3955 4
+DEAL::3956 4
+DEAL::3957 4
+DEAL::3958 4
+DEAL::3959 4
+DEAL::3960 4
+DEAL::3961 4
+DEAL::3962 4
+DEAL::3963 4
+DEAL::3964 4
+DEAL::3965 4
+DEAL::3966 4
+DEAL::3967 4
+DEAL::3968 4
+DEAL::3969 4
+DEAL::3970 4
+DEAL::3971 4
+DEAL::3972 4
+DEAL::3973 4
+DEAL::3974 4
+DEAL::3975 4
+DEAL::3976 4
+DEAL::3977 4
+DEAL::3978 4
+DEAL::3979 4
+DEAL::3980 4
+DEAL::3981 4
+DEAL::3982 4
+DEAL::3983 4
+DEAL::3984 4
+DEAL::3985 4
+DEAL::3986 4
+DEAL::3987 4
+DEAL::3988 4
+DEAL::3989 4
+DEAL::3990 4
+DEAL::3991 4
+DEAL::3992 4
+DEAL::3993 4
+DEAL::3994 4
+DEAL::3995 4
+DEAL::3996 4
+DEAL::3997 4
+DEAL::3998 4
+DEAL::3999 4
+DEAL::4000 4
+DEAL::4001 4
+DEAL::4002 4
+DEAL::4003 4
+DEAL::4004 4
+DEAL::4005 4
+DEAL::4006 4
+DEAL::4007 4
+DEAL::4008 4
+DEAL::4009 4
+DEAL::4010 4
+DEAL::4011 4
+DEAL::4012 4
+DEAL::4013 4
+DEAL::4014 4
+DEAL::4015 4
+DEAL::4016 4
+DEAL::4017 4
+DEAL::4018 4
+DEAL::4019 4
+DEAL::4020 4
+DEAL::4021 4
+DEAL::4022 4
+DEAL::4023 4
+DEAL::4024 4
+DEAL::4025 4
+DEAL::4026 4
+DEAL::4027 4
+DEAL::4028 4
+DEAL::4029 4
+DEAL::4030 4
+DEAL::4031 4
+DEAL::4032 4
+DEAL::4033 4
+DEAL::4034 4
+DEAL::4035 4
+DEAL::4036 1
+DEAL::4037 4
+DEAL::4038 1
+DEAL::4039 1
+DEAL::4040 1
+DEAL::4041 1
+DEAL::4042 1
+DEAL::4043 4
+DEAL::4044 4
+DEAL::4045 4
+DEAL::4046 4
+DEAL::4047 4
+DEAL::4048 4
+DEAL::4049 4
+DEAL::4050 4
+DEAL::4051 4
+DEAL::4052 4
+DEAL::4053 4
+DEAL::4054 4
+DEAL::4055 4
+DEAL::4056 4
+DEAL::4057 4
+DEAL::4058 4
+DEAL::4059 4
 DEAL::4060 1
-DEAL::4061 1
-DEAL::4062 0
-DEAL::4063 3
-DEAL::4064 0
-DEAL::4065 0
-DEAL::4066 0
-DEAL::4067 0
-DEAL::4068 1
-DEAL::4069 0
-DEAL::4070 0
-DEAL::4071 1
-DEAL::4072 1
-DEAL::4073 1
-DEAL::4074 1
-DEAL::4075 3
-DEAL::4076 3
-DEAL::4077 3
+DEAL::4061 4
+DEAL::4062 4
+DEAL::4063 1
+DEAL::4064 4
+DEAL::4065 4
+DEAL::4066 4
+DEAL::4067 4
+DEAL::4068 4
+DEAL::4069 4
+DEAL::4070 4
+DEAL::4071 4
+DEAL::4072 4
+DEAL::4073 4
+DEAL::4074 4
+DEAL::4075 1
+DEAL::4076 1
+DEAL::4077 1
 DEAL::4078 4
-DEAL::4079 3
-DEAL::4080 3
-DEAL::4081 3
-DEAL::4082 3
+DEAL::4079 1
+DEAL::4080 1
+DEAL::4081 1
+DEAL::4082 1
 DEAL::4083 4
-DEAL::4084 3
+DEAL::4084 1
 DEAL::4085 4
-DEAL::4086 3
-DEAL::4087 3
-DEAL::4088 3
-DEAL::4089 3
+DEAL::4086 1
+DEAL::4087 1
+DEAL::4088 1
+DEAL::4089 1
 DEAL::4090 4
-DEAL::4091 3
-DEAL::4092 3
-DEAL::4093 1
+DEAL::4091 1
+DEAL::4092 1
+DEAL::4093 4
 DEAL::4094 4
-DEAL::4095 1
+DEAL::4095 4
 DEAL::4096 4
-DEAL::4097 1
-DEAL::4098 1
-DEAL::4099 1
-DEAL::4100 1
-DEAL::4101 1
+DEAL::4097 4
+DEAL::4098 4
+DEAL::4099 4
+DEAL::4100 4
+DEAL::4101 4
 DEAL::4102 4
-DEAL::4103 1
+DEAL::4103 4
 DEAL::4104 4
 DEAL::4105 4
 DEAL::4106 4
 DEAL::4107 4
 DEAL::4108 4
-DEAL::4109 3
-DEAL::4110 3
-DEAL::4111 1
+DEAL::4109 1
+DEAL::4110 1
+DEAL::4111 4
 DEAL::4112 4
-DEAL::4113 3
-DEAL::4114 3
+DEAL::4113 1
+DEAL::4114 1
 DEAL::4115 1
-DEAL::4116 3
+DEAL::4116 1
 DEAL::4117 4
-DEAL::4118 3
+DEAL::4118 1
 DEAL::4119 4
-DEAL::4120 3
-DEAL::4121 3
+DEAL::4120 1
+DEAL::4121 1
 DEAL::4122 4
-DEAL::4123 3
-DEAL::4124 3
-DEAL::4125 1
+DEAL::4123 1
+DEAL::4124 1
+DEAL::4125 4
 DEAL::4126 4
-DEAL::4127 1
-DEAL::4128 1
-DEAL::4129 1
-DEAL::4130 1
-DEAL::4131 1
-DEAL::4132 1
+DEAL::4127 4
+DEAL::4128 4
+DEAL::4129 4
+DEAL::4130 4
+DEAL::4131 4
+DEAL::4132 4
 DEAL::4133 4
 DEAL::4134 4
 DEAL::4135 4
 DEAL::4136 4
 DEAL::4137 4
-DEAL::4138 1
+DEAL::4138 4
 DEAL::4139 4
 DEAL::4140 4
 DEAL::4141 4
-DEAL::4142 1
-DEAL::4143 1
-DEAL::4144 1
-DEAL::4145 1
-DEAL::4146 1
-DEAL::4147 1
-DEAL::4148 1
-DEAL::4149 1
+DEAL::4142 4
+DEAL::4143 4
+DEAL::4144 4
+DEAL::4145 4
+DEAL::4146 4
+DEAL::4147 4
+DEAL::4148 4
+DEAL::4149 4
 DEAL::4150 4
-DEAL::4151 1
+DEAL::4151 4
 DEAL::4152 4
 DEAL::4153 4
 DEAL::4154 4
 DEAL::4155 4
 DEAL::4156 4
 DEAL::4157 4
-DEAL::4158 1
-DEAL::4159 1
-DEAL::4160 1
+DEAL::4158 4
+DEAL::4159 4
+DEAL::4160 4
 DEAL::4161 4
-DEAL::4162 1
-DEAL::4163 1
-DEAL::4164 1
+DEAL::4162 4
+DEAL::4163 4
+DEAL::4164 4
 DEAL::4165 4
-DEAL::4166 1
+DEAL::4166 4
 DEAL::4167 4
 DEAL::4168 4
 DEAL::4169 4
@@ -12498,1219 +12498,1219 @@ DEAL::4173 4
 DEAL::4174 4
 DEAL::4175 4
 DEAL::4176 4
-DEAL::4177 1
-DEAL::4178 1
-DEAL::4179 1
-DEAL::4180 1
-DEAL::4181 1
-DEAL::4182 1
-DEAL::4183 1
-DEAL::4184 1
-DEAL::4185 1
-DEAL::4186 1
-DEAL::4187 1
-DEAL::4188 1
-DEAL::4189 1
-DEAL::4190 1
-DEAL::4191 1
-DEAL::4192 1
-DEAL::4193 1
-DEAL::4194 1
-DEAL::4195 1
-DEAL::4196 1
-DEAL::4197 1
-DEAL::4198 1
-DEAL::4199 1
-DEAL::4200 1
-DEAL::4201 1
-DEAL::4202 1
-DEAL::4203 1
-DEAL::4204 1
-DEAL::4205 1
-DEAL::4206 1
-DEAL::4207 1
-DEAL::4208 1
-DEAL::4209 1
-DEAL::4210 1
-DEAL::4211 1
-DEAL::4212 1
+DEAL::4177 4
+DEAL::4178 4
+DEAL::4179 4
+DEAL::4180 4
+DEAL::4181 4
+DEAL::4182 4
+DEAL::4183 4
+DEAL::4184 4
+DEAL::4185 4
+DEAL::4186 4
+DEAL::4187 4
+DEAL::4188 4
+DEAL::4189 4
+DEAL::4190 4
+DEAL::4191 4
+DEAL::4192 4
+DEAL::4193 4
+DEAL::4194 4
+DEAL::4195 4
+DEAL::4196 4
+DEAL::4197 4
+DEAL::4198 4
+DEAL::4199 4
+DEAL::4200 4
+DEAL::4201 4
+DEAL::4202 4
+DEAL::4203 4
+DEAL::4204 4
+DEAL::4205 4
+DEAL::4206 4
+DEAL::4207 4
+DEAL::4208 4
+DEAL::4209 4
+DEAL::4210 4
+DEAL::4211 4
+DEAL::4212 4
 DEAL::4213 1
-DEAL::4214 3
-DEAL::4215 1
+DEAL::4214 1
+DEAL::4215 4
 DEAL::4216 4
 DEAL::4217 1
 DEAL::4218 1
 DEAL::4219 1
 DEAL::4220 1
 DEAL::4221 1
-DEAL::4222 3
+DEAL::4222 1
 DEAL::4223 1
 DEAL::4224 4
 DEAL::4225 1
-DEAL::4226 3
+DEAL::4226 1
 DEAL::4227 1
 DEAL::4228 1
 DEAL::4229 1
 DEAL::4230 1
-DEAL::4231 3
+DEAL::4231 1
 DEAL::4232 4
-DEAL::4233 3
-DEAL::4234 3
-DEAL::4235 3
-DEAL::4236 3
-DEAL::4237 3
-DEAL::4238 3
-DEAL::4239 3
+DEAL::4233 1
+DEAL::4234 1
+DEAL::4235 1
+DEAL::4236 1
+DEAL::4237 1
+DEAL::4238 1
+DEAL::4239 1
 DEAL::4240 4
-DEAL::4241 3
-DEAL::4242 3
-DEAL::4243 1
-DEAL::4244 1
-DEAL::4245 1
-DEAL::4246 1
-DEAL::4247 1
-DEAL::4248 1
+DEAL::4241 1
+DEAL::4242 1
+DEAL::4243 4
+DEAL::4244 4
+DEAL::4245 4
+DEAL::4246 4
+DEAL::4247 4
+DEAL::4248 4
 DEAL::4249 4
-DEAL::4250 1
-DEAL::4251 1
-DEAL::4252 1
-DEAL::4253 1
-DEAL::4254 1
+DEAL::4250 4
+DEAL::4251 4
+DEAL::4252 4
+DEAL::4253 4
+DEAL::4254 4
 DEAL::4255 4
 DEAL::4256 4
-DEAL::4257 1
-DEAL::4258 1
+DEAL::4257 4
+DEAL::4258 4
 DEAL::4259 4
 DEAL::4260 4
 DEAL::4261 4
 DEAL::4262 4
-DEAL::4263 3
-DEAL::4264 1
+DEAL::4263 1
+DEAL::4264 4
 DEAL::4265 4
 DEAL::4266 1
 DEAL::4267 1
 DEAL::4268 1
 DEAL::4269 1
 DEAL::4270 1
-DEAL::4271 3
-DEAL::4272 1
+DEAL::4271 1
+DEAL::4272 4
 DEAL::4273 1
 DEAL::4274 1
-DEAL::4275 3
+DEAL::4275 1
 DEAL::4276 1
-DEAL::4277 1
+DEAL::4277 4
 DEAL::4278 1
 DEAL::4279 1
-DEAL::4280 3
-DEAL::4281 3
-DEAL::4282 3
+DEAL::4280 1
+DEAL::4281 1
+DEAL::4282 1
 DEAL::4283 4
-DEAL::4284 3
+DEAL::4284 1
 DEAL::4285 4
-DEAL::4286 3
-DEAL::4287 3
-DEAL::4288 3
-DEAL::4289 3
-DEAL::4290 3
-DEAL::4291 1
-DEAL::4292 1
-DEAL::4293 1
-DEAL::4294 1
-DEAL::4295 1
-DEAL::4296 1
-DEAL::4297 1
+DEAL::4286 1
+DEAL::4287 1
+DEAL::4288 1
+DEAL::4289 1
+DEAL::4290 1
+DEAL::4291 4
+DEAL::4292 4
+DEAL::4293 4
+DEAL::4294 4
+DEAL::4295 4
+DEAL::4296 4
+DEAL::4297 4
 DEAL::4298 4
-DEAL::4299 1
-DEAL::4300 1
-DEAL::4301 1
+DEAL::4299 4
+DEAL::4300 4
+DEAL::4301 4
 DEAL::4302 4
 DEAL::4303 4
-DEAL::4304 1
-DEAL::4305 1
+DEAL::4304 4
+DEAL::4305 4
 DEAL::4306 4
 DEAL::4307 4
 DEAL::4308 4
 DEAL::4309 4
-DEAL::4310 1
-DEAL::4311 1
-DEAL::4312 1
-DEAL::4313 1
-DEAL::4314 1
-DEAL::4315 1
-DEAL::4316 1
-DEAL::4317 1
-DEAL::4318 1
-DEAL::4319 1
-DEAL::4320 1
-DEAL::4321 1
-DEAL::4322 1
-DEAL::4323 1
-DEAL::4324 1
-DEAL::4325 1
-DEAL::4326 1
-DEAL::4327 1
-DEAL::4328 1
-DEAL::4329 1
-DEAL::4330 1
-DEAL::4331 1
-DEAL::4332 1
-DEAL::4333 1
-DEAL::4334 1
-DEAL::4335 1
-DEAL::4336 1
-DEAL::4337 1
-DEAL::4338 1
-DEAL::4339 1
-DEAL::4340 1
-DEAL::4341 1
-DEAL::4342 1
-DEAL::4343 1
-DEAL::4344 1
-DEAL::4345 1
-DEAL::4346 1
-DEAL::4347 1
-DEAL::4348 1
-DEAL::4349 1
-DEAL::4350 1
-DEAL::4351 1
-DEAL::4352 1
-DEAL::4353 1
-DEAL::4354 1
-DEAL::4355 1
-DEAL::4356 1
-DEAL::4357 1
-DEAL::4358 1
-DEAL::4359 1
-DEAL::4360 1
-DEAL::4361 1
-DEAL::4362 1
-DEAL::4363 1
-DEAL::4364 1
-DEAL::4365 1
-DEAL::4366 1
-DEAL::4367 1
-DEAL::4368 1
-DEAL::4369 1
-DEAL::4370 1
-DEAL::4371 1
-DEAL::4372 1
-DEAL::4373 1
-DEAL::4374 1
-DEAL::4375 1
-DEAL::4376 1
-DEAL::4377 1
-DEAL::4378 1
-DEAL::4379 1
-DEAL::4380 1
-DEAL::4381 1
-DEAL::4382 1
-DEAL::4383 1
-DEAL::4384 1
-DEAL::4385 1
-DEAL::4386 1
-DEAL::4387 1
-DEAL::4388 1
-DEAL::4389 1
-DEAL::4390 1
-DEAL::4391 1
-DEAL::4392 1
-DEAL::4393 1
-DEAL::4394 1
-DEAL::4395 1
-DEAL::4396 1
-DEAL::4397 1
-DEAL::4398 1
-DEAL::4399 1
-DEAL::4400 1
-DEAL::4401 1
-DEAL::4402 1
-DEAL::4403 1
-DEAL::4404 1
-DEAL::4405 1
-DEAL::4406 1
-DEAL::4407 1
-DEAL::4408 1
-DEAL::4409 1
-DEAL::4410 1
-DEAL::4411 1
-DEAL::4412 1
-DEAL::4413 1
-DEAL::4414 1
-DEAL::4415 1
-DEAL::4416 1
-DEAL::4417 1
-DEAL::4418 1
-DEAL::4419 1
-DEAL::4420 1
-DEAL::4421 1
-DEAL::4422 1
-DEAL::4423 1
-DEAL::4424 1
-DEAL::4425 1
-DEAL::4426 1
-DEAL::4427 1
-DEAL::4428 1
-DEAL::4429 1
-DEAL::4430 1
-DEAL::4431 1
-DEAL::4432 1
-DEAL::4433 1
-DEAL::4434 1
-DEAL::4435 1
-DEAL::4436 1
-DEAL::4437 1
-DEAL::4438 1
-DEAL::4439 1
-DEAL::4440 1
-DEAL::4441 1
-DEAL::4442 1
-DEAL::4443 1
-DEAL::4444 1
-DEAL::4445 1
-DEAL::4446 1
-DEAL::4447 1
-DEAL::4448 1
-DEAL::4449 1
-DEAL::4450 1
-DEAL::4451 1
-DEAL::4452 4
-DEAL::4453 4
-DEAL::4454 4
-DEAL::4455 4
-DEAL::4456 4
-DEAL::4457 4
-DEAL::4458 4
-DEAL::4459 4
-DEAL::4460 4
-DEAL::4461 4
-DEAL::4462 4
-DEAL::4463 4
-DEAL::4464 4
-DEAL::4465 4
-DEAL::4466 4
-DEAL::4467 4
-DEAL::4468 4
-DEAL::4469 4
-DEAL::4470 4
-DEAL::4471 4
-DEAL::4472 4
-DEAL::4473 4
-DEAL::4474 4
-DEAL::4475 4
-DEAL::4476 4
-DEAL::4477 4
-DEAL::4478 4
-DEAL::4479 4
-DEAL::4480 4
-DEAL::4481 4
-DEAL::4482 4
-DEAL::4483 4
-DEAL::4484 4
-DEAL::4485 4
-DEAL::4486 4
-DEAL::4487 4
-DEAL::4488 4
-DEAL::4489 4
-DEAL::4490 4
-DEAL::4491 4
-DEAL::4492 4
-DEAL::4493 4
-DEAL::4494 4
-DEAL::4495 4
-DEAL::4496 4
-DEAL::4497 4
-DEAL::4498 4
-DEAL::4499 4
-DEAL::4500 4
-DEAL::4501 4
-DEAL::4502 4
-DEAL::4503 4
-DEAL::4504 4
-DEAL::4505 4
-DEAL::4506 4
-DEAL::4507 4
-DEAL::4508 4
-DEAL::4509 4
-DEAL::4510 4
-DEAL::4511 4
-DEAL::4512 4
-DEAL::4513 4
-DEAL::4514 4
-DEAL::4515 4
-DEAL::4516 4
-DEAL::4517 4
-DEAL::4518 4
-DEAL::4519 4
-DEAL::4520 4
-DEAL::4521 4
-DEAL::4522 4
-DEAL::4523 4
-DEAL::4524 4
-DEAL::4525 4
-DEAL::4526 4
-DEAL::4527 4
-DEAL::4528 4
-DEAL::4529 4
-DEAL::4530 4
-DEAL::4531 4
-DEAL::4532 4
-DEAL::4533 4
-DEAL::4534 4
-DEAL::4535 4
-DEAL::4536 4
-DEAL::4537 4
-DEAL::4538 4
-DEAL::4539 4
-DEAL::4540 4
-DEAL::4541 4
-DEAL::4542 4
-DEAL::4543 4
-DEAL::4544 4
-DEAL::4545 4
-DEAL::4546 4
-DEAL::4547 4
-DEAL::4548 4
-DEAL::4549 4
-DEAL::4550 4
-DEAL::4551 4
-DEAL::4552 4
-DEAL::4553 4
-DEAL::4554 4
-DEAL::4555 4
-DEAL::4556 4
-DEAL::4557 4
-DEAL::4558 4
-DEAL::4559 4
-DEAL::4560 4
-DEAL::4561 4
-DEAL::4562 4
-DEAL::4563 4
-DEAL::4564 4
-DEAL::4565 4
-DEAL::4566 4
-DEAL::4567 4
-DEAL::4568 4
-DEAL::4569 2
-DEAL::4570 2
-DEAL::4571 2
-DEAL::4572 2
-DEAL::4573 2
-DEAL::4574 2
-DEAL::4575 2
-DEAL::4576 2
-DEAL::4577 2
-DEAL::4578 2
-DEAL::4579 2
-DEAL::4580 2
-DEAL::4581 2
-DEAL::4582 2
-DEAL::4583 2
-DEAL::4584 2
-DEAL::4585 2
-DEAL::4586 2
-DEAL::4587 2
-DEAL::4588 2
-DEAL::4589 2
-DEAL::4590 2
-DEAL::4591 2
-DEAL::4592 2
-DEAL::4593 2
-DEAL::4594 2
-DEAL::4595 2
-DEAL::4596 2
-DEAL::4597 2
-DEAL::4598 2
-DEAL::4599 2
-DEAL::4600 2
-DEAL::4601 2
-DEAL::4602 2
-DEAL::4603 2
-DEAL::4604 2
-DEAL::4605 2
-DEAL::4606 2
-DEAL::4607 2
-DEAL::4608 2
-DEAL::4609 2
-DEAL::4610 2
-DEAL::4611 2
-DEAL::4612 2
-DEAL::4613 2
-DEAL::4614 2
-DEAL::4615 2
-DEAL::4616 2
-DEAL::4617 2
-DEAL::4618 2
-DEAL::4619 2
-DEAL::4620 2
-DEAL::4621 2
-DEAL::4622 2
-DEAL::4623 2
-DEAL::4624 2
-DEAL::4625 2
-DEAL::4626 2
-DEAL::4627 2
-DEAL::4628 2
-DEAL::4629 2
-DEAL::4630 2
-DEAL::4631 2
-DEAL::4632 2
-DEAL::4633 2
-DEAL::4634 2
-DEAL::4635 2
-DEAL::4636 2
-DEAL::4637 2
-DEAL::4638 2
-DEAL::4639 2
-DEAL::4640 2
-DEAL::4641 2
-DEAL::4642 2
-DEAL::4643 2
-DEAL::4644 2
-DEAL::4645 2
-DEAL::4646 2
-DEAL::4647 2
-DEAL::4648 2
-DEAL::4649 2
-DEAL::4650 2
-DEAL::4651 2
-DEAL::4652 2
-DEAL::4653 2
-DEAL::4654 2
-DEAL::4655 2
-DEAL::4656 2
-DEAL::4657 2
-DEAL::4658 2
-DEAL::4659 2
-DEAL::4660 2
-DEAL::4661 2
-DEAL::4662 2
-DEAL::4663 2
-DEAL::4664 2
-DEAL::4665 2
-DEAL::4666 2
-DEAL::4667 2
-DEAL::4668 2
-DEAL::4669 2
-DEAL::4670 2
-DEAL::4671 2
-DEAL::4672 2
-DEAL::4673 2
-DEAL::4674 2
-DEAL::4675 2
-DEAL::4676 2
-DEAL::4677 2
-DEAL::4678 2
-DEAL::4679 3
-DEAL::4680 3
-DEAL::4681 3
-DEAL::4682 3
-DEAL::4683 3
-DEAL::4684 3
-DEAL::4685 3
-DEAL::4686 3
-DEAL::4687 3
-DEAL::4688 3
-DEAL::4689 3
-DEAL::4690 3
-DEAL::4691 3
-DEAL::4692 3
-DEAL::4693 3
-DEAL::4694 3
-DEAL::4695 3
-DEAL::4696 3
-DEAL::4697 3
-DEAL::4698 3
-DEAL::4699 3
-DEAL::4700 3
-DEAL::4701 3
-DEAL::4702 3
-DEAL::4703 3
-DEAL::4704 3
-DEAL::4705 3
-DEAL::4706 3
-DEAL::4707 3
-DEAL::4708 3
-DEAL::4709 3
-DEAL::4710 3
-DEAL::4711 3
-DEAL::4712 3
-DEAL::4713 3
-DEAL::4714 3
-DEAL::4715 3
-DEAL::4716 3
-DEAL::4717 3
-DEAL::4718 3
-DEAL::4719 3
-DEAL::4720 3
-DEAL::4721 3
-DEAL::4722 3
-DEAL::4723 3
-DEAL::4724 3
-DEAL::4725 3
-DEAL::4726 3
-DEAL::4727 3
-DEAL::4728 3
-DEAL::4729 3
-DEAL::4730 3
-DEAL::4731 3
-DEAL::4732 3
-DEAL::4733 3
-DEAL::4734 3
-DEAL::4735 3
-DEAL::4736 3
-DEAL::4737 3
-DEAL::4738 3
-DEAL::4739 3
-DEAL::4740 3
-DEAL::4741 3
-DEAL::4742 3
-DEAL::4743 3
-DEAL::4744 3
-DEAL::4745 3
-DEAL::4746 3
-DEAL::4747 3
-DEAL::4748 3
-DEAL::4749 3
-DEAL::4750 3
-DEAL::4751 3
-DEAL::4752 3
-DEAL::4753 3
-DEAL::4754 3
-DEAL::4755 3
-DEAL::4756 3
-DEAL::4757 3
-DEAL::4758 3
-DEAL::4759 3
-DEAL::4760 3
-DEAL::4761 3
-DEAL::4762 3
-DEAL::4763 3
-DEAL::4764 3
-DEAL::4765 3
-DEAL::4766 3
-DEAL::4767 3
-DEAL::4768 3
-DEAL::4769 3
-DEAL::4770 3
-DEAL::4771 3
-DEAL::4772 3
-DEAL::4773 3
-DEAL::4774 3
-DEAL::4775 3
-DEAL::4776 3
-DEAL::4777 3
-DEAL::4778 3
-DEAL::4779 3
-DEAL::4780 3
-DEAL::4781 3
-DEAL::4782 3
-DEAL::4783 3
-DEAL::4784 3
-DEAL::4785 3
-DEAL::4786 3
-DEAL::4787 3
-DEAL::4788 3
-DEAL::4789 1
-DEAL::4790 1
-DEAL::4791 1
-DEAL::4792 1
-DEAL::4793 1
-DEAL::4794 1
-DEAL::4795 1
-DEAL::4796 1
-DEAL::4797 1
-DEAL::4798 1
-DEAL::4799 1
-DEAL::4800 1
-DEAL::4801 1
-DEAL::4802 1
-DEAL::4803 1
-DEAL::4804 1
-DEAL::4805 1
-DEAL::4806 1
-DEAL::4807 1
-DEAL::4808 1
-DEAL::4809 1
-DEAL::4810 1
-DEAL::4811 1
-DEAL::4812 1
-DEAL::4813 1
-DEAL::4814 1
-DEAL::4815 1
-DEAL::4816 1
-DEAL::4817 1
-DEAL::4818 1
-DEAL::4819 1
-DEAL::4820 1
-DEAL::4821 1
-DEAL::4822 1
-DEAL::4823 1
-DEAL::4824 1
-DEAL::4825 1
-DEAL::4826 1
-DEAL::4827 1
-DEAL::4828 1
-DEAL::4829 1
-DEAL::4830 1
-DEAL::4831 1
-DEAL::4832 1
-DEAL::4833 1
-DEAL::4834 1
-DEAL::4835 1
-DEAL::4836 1
-DEAL::4837 1
-DEAL::4838 1
-DEAL::4839 1
-DEAL::4840 1
-DEAL::4841 1
-DEAL::4842 1
-DEAL::4843 1
-DEAL::4844 1
-DEAL::4845 1
-DEAL::4846 1
-DEAL::4847 1
-DEAL::4848 1
-DEAL::4849 1
-DEAL::4850 1
-DEAL::4851 1
-DEAL::4852 1
-DEAL::4853 1
-DEAL::4854 1
-DEAL::4855 1
-DEAL::4856 1
-DEAL::4857 1
-DEAL::4858 1
-DEAL::4859 1
-DEAL::4860 1
-DEAL::4861 1
-DEAL::4862 1
-DEAL::4863 1
-DEAL::4864 1
-DEAL::4865 1
-DEAL::4866 1
-DEAL::4867 1
-DEAL::4868 1
-DEAL::4869 1
-DEAL::4870 1
-DEAL::4871 1
-DEAL::4872 1
-DEAL::4873 1
-DEAL::4874 1
-DEAL::4875 1
-DEAL::4876 1
-DEAL::4877 1
-DEAL::4878 1
-DEAL::4879 1
-DEAL::4880 1
-DEAL::4881 1
-DEAL::4882 1
-DEAL::4883 1
-DEAL::4884 1
-DEAL::4885 1
-DEAL::4886 1
-DEAL::4887 1
-DEAL::4888 1
-DEAL::4889 1
-DEAL::4890 1
-DEAL::4891 1
-DEAL::4892 1
-DEAL::4893 1
-DEAL::4894 1
-DEAL::4895 1
-DEAL::4896 1
-DEAL::4897 1
-DEAL::4898 1
-DEAL::4899 4
-DEAL::4900 4
-DEAL::4901 4
-DEAL::4902 4
-DEAL::4903 4
-DEAL::4904 4
-DEAL::4905 4
-DEAL::4906 4
-DEAL::4907 4
-DEAL::4908 4
-DEAL::4909 4
-DEAL::4910 4
-DEAL::4911 4
-DEAL::4912 4
-DEAL::4913 4
-DEAL::4914 4
-DEAL::4915 4
-DEAL::4916 4
-DEAL::4917 4
-DEAL::4918 4
-DEAL::4919 4
-DEAL::4920 4
-DEAL::4921 4
-DEAL::4922 4
-DEAL::4923 4
-DEAL::4924 4
-DEAL::4925 4
-DEAL::4926 4
-DEAL::4927 4
-DEAL::4928 4
-DEAL::4929 4
-DEAL::4930 4
-DEAL::4931 4
-DEAL::4932 4
-DEAL::4933 4
-DEAL::4934 4
-DEAL::4935 4
-DEAL::4936 4
-DEAL::4937 4
-DEAL::4938 4
-DEAL::4939 4
-DEAL::4940 4
-DEAL::4941 4
-DEAL::4942 4
-DEAL::4943 4
-DEAL::4944 4
-DEAL::4945 4
-DEAL::4946 4
-DEAL::4947 4
-DEAL::4948 4
-DEAL::4949 4
-DEAL::4950 4
-DEAL::4951 4
-DEAL::4952 4
-DEAL::4953 4
-DEAL::4954 4
-DEAL::4955 4
-DEAL::4956 4
-DEAL::4957 4
-DEAL::4958 4
-DEAL::4959 4
-DEAL::4960 4
-DEAL::4961 4
-DEAL::4962 4
-DEAL::4963 4
-DEAL::4964 4
-DEAL::4965 4
-DEAL::4966 4
-DEAL::4967 4
-DEAL::4968 4
-DEAL::4969 4
-DEAL::4970 4
-DEAL::4971 4
-DEAL::4972 4
-DEAL::4973 4
-DEAL::4974 4
-DEAL::4975 4
-DEAL::4976 4
-DEAL::4977 4
-DEAL::4978 4
-DEAL::4979 4
-DEAL::4980 4
-DEAL::4981 4
-DEAL::4982 4
-DEAL::4983 4
-DEAL::4984 4
-DEAL::4985 4
-DEAL::4986 4
-DEAL::4987 4
-DEAL::4988 4
-DEAL::4989 4
-DEAL::4990 0
-DEAL::4991 4
-DEAL::4992 4
-DEAL::4993 4
-DEAL::4994 4
-DEAL::4995 2
+DEAL::4310 4
+DEAL::4311 4
+DEAL::4312 4
+DEAL::4313 4
+DEAL::4314 4
+DEAL::4315 4
+DEAL::4316 4
+DEAL::4317 4
+DEAL::4318 4
+DEAL::4319 4
+DEAL::4320 4
+DEAL::4321 4
+DEAL::4322 4
+DEAL::4323 4
+DEAL::4324 4
+DEAL::4325 4
+DEAL::4326 4
+DEAL::4327 4
+DEAL::4328 4
+DEAL::4329 4
+DEAL::4330 4
+DEAL::4331 4
+DEAL::4332 4
+DEAL::4333 4
+DEAL::4334 4
+DEAL::4335 4
+DEAL::4336 4
+DEAL::4337 4
+DEAL::4338 4
+DEAL::4339 4
+DEAL::4340 4
+DEAL::4341 4
+DEAL::4342 4
+DEAL::4343 4
+DEAL::4344 4
+DEAL::4345 4
+DEAL::4346 4
+DEAL::4347 4
+DEAL::4348 4
+DEAL::4349 4
+DEAL::4350 4
+DEAL::4351 4
+DEAL::4352 4
+DEAL::4353 4
+DEAL::4354 4
+DEAL::4355 4
+DEAL::4356 4
+DEAL::4357 4
+DEAL::4358 4
+DEAL::4359 4
+DEAL::4360 4
+DEAL::4361 4
+DEAL::4362 4
+DEAL::4363 4
+DEAL::4364 4
+DEAL::4365 4
+DEAL::4366 4
+DEAL::4367 4
+DEAL::4368 4
+DEAL::4369 4
+DEAL::4370 4
+DEAL::4371 4
+DEAL::4372 4
+DEAL::4373 4
+DEAL::4374 4
+DEAL::4375 4
+DEAL::4376 4
+DEAL::4377 4
+DEAL::4378 4
+DEAL::4379 4
+DEAL::4380 4
+DEAL::4381 4
+DEAL::4382 4
+DEAL::4383 4
+DEAL::4384 4
+DEAL::4385 4
+DEAL::4386 4
+DEAL::4387 4
+DEAL::4388 4
+DEAL::4389 4
+DEAL::4390 4
+DEAL::4391 4
+DEAL::4392 4
+DEAL::4393 4
+DEAL::4394 4
+DEAL::4395 4
+DEAL::4396 4
+DEAL::4397 4
+DEAL::4398 4
+DEAL::4399 4
+DEAL::4400 4
+DEAL::4401 4
+DEAL::4402 4
+DEAL::4403 4
+DEAL::4404 4
+DEAL::4405 4
+DEAL::4406 4
+DEAL::4407 4
+DEAL::4408 4
+DEAL::4409 4
+DEAL::4410 4
+DEAL::4411 4
+DEAL::4412 4
+DEAL::4413 4
+DEAL::4414 4
+DEAL::4415 4
+DEAL::4416 4
+DEAL::4417 4
+DEAL::4418 4
+DEAL::4419 4
+DEAL::4420 4
+DEAL::4421 4
+DEAL::4422 4
+DEAL::4423 4
+DEAL::4424 4
+DEAL::4425 4
+DEAL::4426 4
+DEAL::4427 4
+DEAL::4428 4
+DEAL::4429 4
+DEAL::4430 4
+DEAL::4431 4
+DEAL::4432 4
+DEAL::4433 4
+DEAL::4434 4
+DEAL::4435 4
+DEAL::4436 4
+DEAL::4437 4
+DEAL::4438 4
+DEAL::4439 4
+DEAL::4440 4
+DEAL::4441 4
+DEAL::4442 4
+DEAL::4443 4
+DEAL::4444 4
+DEAL::4445 4
+DEAL::4446 4
+DEAL::4447 4
+DEAL::4448 4
+DEAL::4449 4
+DEAL::4450 4
+DEAL::4451 4
+DEAL::4452 2
+DEAL::4453 2
+DEAL::4454 2
+DEAL::4455 2
+DEAL::4456 2
+DEAL::4457 2
+DEAL::4458 2
+DEAL::4459 2
+DEAL::4460 2
+DEAL::4461 2
+DEAL::4462 2
+DEAL::4463 2
+DEAL::4464 2
+DEAL::4465 2
+DEAL::4466 2
+DEAL::4467 2
+DEAL::4468 2
+DEAL::4469 2
+DEAL::4470 2
+DEAL::4471 2
+DEAL::4472 2
+DEAL::4473 2
+DEAL::4474 2
+DEAL::4475 2
+DEAL::4476 2
+DEAL::4477 2
+DEAL::4478 2
+DEAL::4479 2
+DEAL::4480 2
+DEAL::4481 2
+DEAL::4482 2
+DEAL::4483 2
+DEAL::4484 2
+DEAL::4485 2
+DEAL::4486 2
+DEAL::4487 2
+DEAL::4488 2
+DEAL::4489 2
+DEAL::4490 2
+DEAL::4491 2
+DEAL::4492 2
+DEAL::4493 2
+DEAL::4494 2
+DEAL::4495 2
+DEAL::4496 2
+DEAL::4497 2
+DEAL::4498 2
+DEAL::4499 2
+DEAL::4500 2
+DEAL::4501 2
+DEAL::4502 2
+DEAL::4503 2
+DEAL::4504 2
+DEAL::4505 2
+DEAL::4506 2
+DEAL::4507 2
+DEAL::4508 2
+DEAL::4509 2
+DEAL::4510 2
+DEAL::4511 2
+DEAL::4512 2
+DEAL::4513 2
+DEAL::4514 2
+DEAL::4515 2
+DEAL::4516 2
+DEAL::4517 2
+DEAL::4518 2
+DEAL::4519 2
+DEAL::4520 2
+DEAL::4521 2
+DEAL::4522 2
+DEAL::4523 2
+DEAL::4524 2
+DEAL::4525 2
+DEAL::4526 2
+DEAL::4527 2
+DEAL::4528 2
+DEAL::4529 2
+DEAL::4530 2
+DEAL::4531 2
+DEAL::4532 2
+DEAL::4533 2
+DEAL::4534 2
+DEAL::4535 2
+DEAL::4536 2
+DEAL::4537 2
+DEAL::4538 2
+DEAL::4539 2
+DEAL::4540 2
+DEAL::4541 2
+DEAL::4542 2
+DEAL::4543 2
+DEAL::4544 2
+DEAL::4545 2
+DEAL::4546 2
+DEAL::4547 2
+DEAL::4548 2
+DEAL::4549 2
+DEAL::4550 2
+DEAL::4551 2
+DEAL::4552 2
+DEAL::4553 2
+DEAL::4554 2
+DEAL::4555 2
+DEAL::4556 2
+DEAL::4557 2
+DEAL::4558 2
+DEAL::4559 2
+DEAL::4560 2
+DEAL::4561 2
+DEAL::4562 2
+DEAL::4563 2
+DEAL::4564 2
+DEAL::4565 2
+DEAL::4566 2
+DEAL::4567 2
+DEAL::4568 2
+DEAL::4569 1
+DEAL::4570 1
+DEAL::4571 1
+DEAL::4572 1
+DEAL::4573 1
+DEAL::4574 1
+DEAL::4575 1
+DEAL::4576 1
+DEAL::4577 1
+DEAL::4578 1
+DEAL::4579 1
+DEAL::4580 1
+DEAL::4581 1
+DEAL::4582 1
+DEAL::4583 1
+DEAL::4584 1
+DEAL::4585 1
+DEAL::4586 1
+DEAL::4587 1
+DEAL::4588 1
+DEAL::4589 1
+DEAL::4590 1
+DEAL::4591 1
+DEAL::4592 1
+DEAL::4593 1
+DEAL::4594 1
+DEAL::4595 1
+DEAL::4596 1
+DEAL::4597 1
+DEAL::4598 1
+DEAL::4599 1
+DEAL::4600 1
+DEAL::4601 1
+DEAL::4602 1
+DEAL::4603 1
+DEAL::4604 1
+DEAL::4605 1
+DEAL::4606 1
+DEAL::4607 1
+DEAL::4608 1
+DEAL::4609 1
+DEAL::4610 1
+DEAL::4611 1
+DEAL::4612 1
+DEAL::4613 1
+DEAL::4614 1
+DEAL::4615 1
+DEAL::4616 1
+DEAL::4617 1
+DEAL::4618 1
+DEAL::4619 1
+DEAL::4620 1
+DEAL::4621 1
+DEAL::4622 1
+DEAL::4623 1
+DEAL::4624 1
+DEAL::4625 1
+DEAL::4626 1
+DEAL::4627 1
+DEAL::4628 1
+DEAL::4629 1
+DEAL::4630 1
+DEAL::4631 1
+DEAL::4632 1
+DEAL::4633 1
+DEAL::4634 1
+DEAL::4635 1
+DEAL::4636 1
+DEAL::4637 1
+DEAL::4638 1
+DEAL::4639 1
+DEAL::4640 1
+DEAL::4641 1
+DEAL::4642 1
+DEAL::4643 1
+DEAL::4644 1
+DEAL::4645 1
+DEAL::4646 1
+DEAL::4647 1
+DEAL::4648 1
+DEAL::4649 1
+DEAL::4650 1
+DEAL::4651 1
+DEAL::4652 1
+DEAL::4653 1
+DEAL::4654 1
+DEAL::4655 1
+DEAL::4656 1
+DEAL::4657 1
+DEAL::4658 1
+DEAL::4659 1
+DEAL::4660 1
+DEAL::4661 1
+DEAL::4662 1
+DEAL::4663 1
+DEAL::4664 1
+DEAL::4665 1
+DEAL::4666 1
+DEAL::4667 1
+DEAL::4668 1
+DEAL::4669 1
+DEAL::4670 1
+DEAL::4671 1
+DEAL::4672 1
+DEAL::4673 1
+DEAL::4674 1
+DEAL::4675 1
+DEAL::4676 1
+DEAL::4677 1
+DEAL::4678 1
+DEAL::4679 0
+DEAL::4680 0
+DEAL::4681 0
+DEAL::4682 1
+DEAL::4683 0
+DEAL::4684 1
+DEAL::4685 0
+DEAL::4686 0
+DEAL::4687 0
+DEAL::4688 0
+DEAL::4689 0
+DEAL::4690 0
+DEAL::4691 0
+DEAL::4692 0
+DEAL::4693 1
+DEAL::4694 1
+DEAL::4695 0
+DEAL::4696 0
+DEAL::4697 0
+DEAL::4698 0
+DEAL::4699 0
+DEAL::4700 0
+DEAL::4701 0
+DEAL::4702 0
+DEAL::4703 0
+DEAL::4704 0
+DEAL::4705 0
+DEAL::4706 1
+DEAL::4707 0
+DEAL::4708 0
+DEAL::4709 0
+DEAL::4710 0
+DEAL::4711 0
+DEAL::4712 0
+DEAL::4713 1
+DEAL::4714 0
+DEAL::4715 0
+DEAL::4716 0
+DEAL::4717 0
+DEAL::4718 0
+DEAL::4719 0
+DEAL::4720 0
+DEAL::4721 0
+DEAL::4722 0
+DEAL::4723 0
+DEAL::4724 0
+DEAL::4725 0
+DEAL::4726 0
+DEAL::4727 0
+DEAL::4728 0
+DEAL::4729 0
+DEAL::4730 0
+DEAL::4731 0
+DEAL::4732 0
+DEAL::4733 0
+DEAL::4734 0
+DEAL::4735 0
+DEAL::4736 0
+DEAL::4737 0
+DEAL::4738 0
+DEAL::4739 1
+DEAL::4740 1
+DEAL::4741 0
+DEAL::4742 1
+DEAL::4743 0
+DEAL::4744 1
+DEAL::4745 1
+DEAL::4746 1
+DEAL::4747 1
+DEAL::4748 1
+DEAL::4749 0
+DEAL::4750 1
+DEAL::4751 1
+DEAL::4752 1
+DEAL::4753 1
+DEAL::4754 1
+DEAL::4755 1
+DEAL::4756 0
+DEAL::4757 0
+DEAL::4758 0
+DEAL::4759 1
+DEAL::4760 0
+DEAL::4761 0
+DEAL::4762 0
+DEAL::4763 0
+DEAL::4764 0
+DEAL::4765 0
+DEAL::4766 1
+DEAL::4767 0
+DEAL::4768 0
+DEAL::4769 0
+DEAL::4770 0
+DEAL::4771 0
+DEAL::4772 1
+DEAL::4773 0
+DEAL::4774 1
+DEAL::4775 1
+DEAL::4776 0
+DEAL::4777 1
+DEAL::4778 1
+DEAL::4779 1
+DEAL::4780 1
+DEAL::4781 1
+DEAL::4782 0
+DEAL::4783 0
+DEAL::4784 0
+DEAL::4785 0
+DEAL::4786 0
+DEAL::4787 0
+DEAL::4788 0
+DEAL::4789 3
+DEAL::4790 3
+DEAL::4791 3
+DEAL::4792 3
+DEAL::4793 3
+DEAL::4794 3
+DEAL::4795 3
+DEAL::4796 3
+DEAL::4797 3
+DEAL::4798 3
+DEAL::4799 3
+DEAL::4800 3
+DEAL::4801 3
+DEAL::4802 3
+DEAL::4803 3
+DEAL::4804 3
+DEAL::4805 3
+DEAL::4806 3
+DEAL::4807 3
+DEAL::4808 3
+DEAL::4809 3
+DEAL::4810 3
+DEAL::4811 3
+DEAL::4812 3
+DEAL::4813 3
+DEAL::4814 3
+DEAL::4815 3
+DEAL::4816 3
+DEAL::4817 3
+DEAL::4818 3
+DEAL::4819 3
+DEAL::4820 3
+DEAL::4821 3
+DEAL::4822 3
+DEAL::4823 3
+DEAL::4824 3
+DEAL::4825 3
+DEAL::4826 3
+DEAL::4827 3
+DEAL::4828 3
+DEAL::4829 3
+DEAL::4830 3
+DEAL::4831 3
+DEAL::4832 3
+DEAL::4833 3
+DEAL::4834 3
+DEAL::4835 3
+DEAL::4836 3
+DEAL::4837 3
+DEAL::4838 3
+DEAL::4839 3
+DEAL::4840 3
+DEAL::4841 3
+DEAL::4842 3
+DEAL::4843 3
+DEAL::4844 3
+DEAL::4845 3
+DEAL::4846 3
+DEAL::4847 3
+DEAL::4848 3
+DEAL::4849 3
+DEAL::4850 3
+DEAL::4851 3
+DEAL::4852 3
+DEAL::4853 3
+DEAL::4854 3
+DEAL::4855 3
+DEAL::4856 3
+DEAL::4857 3
+DEAL::4858 3
+DEAL::4859 3
+DEAL::4860 3
+DEAL::4861 3
+DEAL::4862 3
+DEAL::4863 3
+DEAL::4864 3
+DEAL::4865 3
+DEAL::4866 3
+DEAL::4867 3
+DEAL::4868 3
+DEAL::4869 3
+DEAL::4870 3
+DEAL::4871 3
+DEAL::4872 3
+DEAL::4873 3
+DEAL::4874 3
+DEAL::4875 3
+DEAL::4876 3
+DEAL::4877 3
+DEAL::4878 3
+DEAL::4879 3
+DEAL::4880 3
+DEAL::4881 3
+DEAL::4882 3
+DEAL::4883 3
+DEAL::4884 3
+DEAL::4885 3
+DEAL::4886 3
+DEAL::4887 3
+DEAL::4888 3
+DEAL::4889 3
+DEAL::4890 3
+DEAL::4891 3
+DEAL::4892 3
+DEAL::4893 3
+DEAL::4894 3
+DEAL::4895 3
+DEAL::4896 3
+DEAL::4897 3
+DEAL::4898 3
+DEAL::4899 2
+DEAL::4900 2
+DEAL::4901 2
+DEAL::4902 2
+DEAL::4903 2
+DEAL::4904 2
+DEAL::4905 2
+DEAL::4906 2
+DEAL::4907 2
+DEAL::4908 2
+DEAL::4909 2
+DEAL::4910 2
+DEAL::4911 2
+DEAL::4912 2
+DEAL::4913 2
+DEAL::4914 2
+DEAL::4915 2
+DEAL::4916 2
+DEAL::4917 2
+DEAL::4918 2
+DEAL::4919 2
+DEAL::4920 2
+DEAL::4921 2
+DEAL::4922 2
+DEAL::4923 2
+DEAL::4924 2
+DEAL::4925 2
+DEAL::4926 2
+DEAL::4927 2
+DEAL::4928 2
+DEAL::4929 2
+DEAL::4930 2
+DEAL::4931 2
+DEAL::4932 2
+DEAL::4933 2
+DEAL::4934 2
+DEAL::4935 2
+DEAL::4936 2
+DEAL::4937 2
+DEAL::4938 2
+DEAL::4939 2
+DEAL::4940 2
+DEAL::4941 2
+DEAL::4942 2
+DEAL::4943 2
+DEAL::4944 2
+DEAL::4945 2
+DEAL::4946 2
+DEAL::4947 2
+DEAL::4948 2
+DEAL::4949 2
+DEAL::4950 2
+DEAL::4951 2
+DEAL::4952 2
+DEAL::4953 2
+DEAL::4954 2
+DEAL::4955 2
+DEAL::4956 2
+DEAL::4957 2
+DEAL::4958 2
+DEAL::4959 2
+DEAL::4960 2
+DEAL::4961 2
+DEAL::4962 2
+DEAL::4963 2
+DEAL::4964 2
+DEAL::4965 2
+DEAL::4966 2
+DEAL::4967 2
+DEAL::4968 2
+DEAL::4969 2
+DEAL::4970 2
+DEAL::4971 2
+DEAL::4972 2
+DEAL::4973 2
+DEAL::4974 2
+DEAL::4975 2
+DEAL::4976 2
+DEAL::4977 2
+DEAL::4978 2
+DEAL::4979 2
+DEAL::4980 2
+DEAL::4981 2
+DEAL::4982 2
+DEAL::4983 2
+DEAL::4984 2
+DEAL::4985 2
+DEAL::4986 2
+DEAL::4987 2
+DEAL::4988 2
+DEAL::4989 2
+DEAL::4990 3
+DEAL::4991 2
+DEAL::4992 2
+DEAL::4993 2
+DEAL::4994 2
+DEAL::4995 1
 DEAL::4996 2
-DEAL::4997 2
+DEAL::4997 1
 DEAL::4998 2
-DEAL::4999 2
+DEAL::4999 1
 DEAL::5000 2
-DEAL::5001 2
+DEAL::5001 1
 DEAL::5002 2
-DEAL::5003 2
-DEAL::5004 2
-DEAL::5005 2
+DEAL::5003 1
+DEAL::5004 1
+DEAL::5005 1
 DEAL::5006 2
-DEAL::5007 2
-DEAL::5008 2
-DEAL::5009 2
+DEAL::5007 1
+DEAL::5008 1
+DEAL::5009 1
 DEAL::5010 2
-DEAL::5011 2
+DEAL::5011 1
 DEAL::5012 2
-DEAL::5013 2
+DEAL::5013 1
 DEAL::5014 2
-DEAL::5015 2
-DEAL::5016 2
-DEAL::5017 2
-DEAL::5018 2
-DEAL::5019 2
-DEAL::5020 2
-DEAL::5021 2
-DEAL::5022 2
-DEAL::5023 2
-DEAL::5024 2
-DEAL::5025 2
-DEAL::5026 2
-DEAL::5027 2
-DEAL::5028 2
-DEAL::5029 2
-DEAL::5030 2
-DEAL::5031 2
-DEAL::5032 2
-DEAL::5033 2
-DEAL::5034 2
-DEAL::5035 2
-DEAL::5036 2
-DEAL::5037 2
-DEAL::5038 2
+DEAL::5015 1
+DEAL::5016 1
+DEAL::5017 1
+DEAL::5018 1
+DEAL::5019 1
+DEAL::5020 1
+DEAL::5021 1
+DEAL::5022 1
+DEAL::5023 1
+DEAL::5024 1
+DEAL::5025 1
+DEAL::5026 1
+DEAL::5027 1
+DEAL::5028 1
+DEAL::5029 1
+DEAL::5030 1
+DEAL::5031 1
+DEAL::5032 1
+DEAL::5033 1
+DEAL::5034 1
+DEAL::5035 1
+DEAL::5036 1
+DEAL::5037 1
+DEAL::5038 1
 DEAL::5039 2
-DEAL::5040 2
+DEAL::5040 1
 DEAL::5041 2
-DEAL::5042 2
-DEAL::5043 2
+DEAL::5042 1
+DEAL::5043 1
 DEAL::5044 2
-DEAL::5045 2
-DEAL::5046 2
-DEAL::5047 2
-DEAL::5048 2
-DEAL::5049 2
-DEAL::5050 2
-DEAL::5051 2
-DEAL::5052 2
-DEAL::5053 2
-DEAL::5054 2
-DEAL::5055 2
-DEAL::5056 2
-DEAL::5057 2
-DEAL::5058 2
-DEAL::5059 2
-DEAL::5060 2
-DEAL::5061 2
-DEAL::5062 2
-DEAL::5063 2
-DEAL::5064 2
-DEAL::5065 2
-DEAL::5066 2
-DEAL::5067 2
-DEAL::5068 2
-DEAL::5069 2
-DEAL::5070 2
-DEAL::5071 2
-DEAL::5072 2
-DEAL::5073 2
-DEAL::5074 2
-DEAL::5075 2
-DEAL::5076 2
-DEAL::5077 2
-DEAL::5078 2
-DEAL::5079 2
-DEAL::5080 2
-DEAL::5081 2
-DEAL::5082 2
-DEAL::5083 2
-DEAL::5084 2
-DEAL::5085 2
-DEAL::5086 2
-DEAL::5087 2
-DEAL::5088 2
-DEAL::5089 2
-DEAL::5090 2
-DEAL::5091 2
-DEAL::5092 2
-DEAL::5093 2
-DEAL::5094 2
-DEAL::5095 3
-DEAL::5096 4
-DEAL::5097 4
-DEAL::5098 3
-DEAL::5099 3
-DEAL::5100 3
-DEAL::5101 3
-DEAL::5102 3
-DEAL::5103 3
-DEAL::5104 3
-DEAL::5105 3
-DEAL::5106 3
-DEAL::5107 3
-DEAL::5108 3
-DEAL::5109 3
-DEAL::5110 3
-DEAL::5111 3
-DEAL::5112 3
-DEAL::5113 4
-DEAL::5114 3
-DEAL::5115 3
-DEAL::5116 3
-DEAL::5117 3
-DEAL::5118 3
-DEAL::5119 3
-DEAL::5120 3
-DEAL::5121 3
-DEAL::5122 3
-DEAL::5123 3
-DEAL::5124 3
-DEAL::5125 3
-DEAL::5126 4
-DEAL::5127 3
-DEAL::5128 3
-DEAL::5129 4
-DEAL::5130 3
-DEAL::5131 3
-DEAL::5132 3
-DEAL::5133 3
-DEAL::5134 3
-DEAL::5135 3
-DEAL::5136 3
-DEAL::5137 3
-DEAL::5138 4
-DEAL::5139 3
-DEAL::5140 4
-DEAL::5141 4
-DEAL::5142 4
-DEAL::5143 4
-DEAL::5144 3
-DEAL::5145 4
-DEAL::5146 4
-DEAL::5147 4
-DEAL::5148 4
-DEAL::5149 4
-DEAL::5150 4
-DEAL::5151 4
-DEAL::5152 4
-DEAL::5153 4
-DEAL::5154 4
-DEAL::5155 4
-DEAL::5156 3
-DEAL::5157 4
-DEAL::5158 3
-DEAL::5159 3
-DEAL::5160 4
-DEAL::5161 4
-DEAL::5162 4
-DEAL::5163 4
-DEAL::5164 3
-DEAL::5165 4
-DEAL::5166 3
-DEAL::5167 3
-DEAL::5168 3
-DEAL::5169 3
-DEAL::5170 3
-DEAL::5171 3
-DEAL::5172 3
-DEAL::5173 3
-DEAL::5174 3
-DEAL::5175 3
-DEAL::5176 3
-DEAL::5177 3
-DEAL::5178 3
-DEAL::5179 3
-DEAL::5180 3
-DEAL::5181 3
-DEAL::5182 3
-DEAL::5183 3
-DEAL::5184 3
-DEAL::5185 3
-DEAL::5186 3
-DEAL::5187 3
-DEAL::5188 3
-DEAL::5189 3
-DEAL::5190 3
-DEAL::5191 3
-DEAL::5192 3
-DEAL::5193 3
-DEAL::5194 1
-DEAL::5195 1
-DEAL::5196 1
-DEAL::5197 1
-DEAL::5198 1
-DEAL::5199 1
-DEAL::5200 1
-DEAL::5201 1
-DEAL::5202 1
-DEAL::5203 1
-DEAL::5204 1
-DEAL::5205 1
-DEAL::5206 1
-DEAL::5207 1
-DEAL::5208 1
-DEAL::5209 1
-DEAL::5210 1
-DEAL::5211 1
-DEAL::5212 1
-DEAL::5213 1
-DEAL::5214 1
-DEAL::5215 1
-DEAL::5216 1
-DEAL::5217 1
-DEAL::5218 1
-DEAL::5219 1
-DEAL::5220 1
-DEAL::5221 1
-DEAL::5222 1
-DEAL::5223 1
-DEAL::5224 1
-DEAL::5225 1
-DEAL::5226 1
-DEAL::5227 1
-DEAL::5228 1
-DEAL::5229 1
-DEAL::5230 1
-DEAL::5231 1
-DEAL::5232 1
-DEAL::5233 1
-DEAL::5234 1
-DEAL::5235 1
-DEAL::5236 1
-DEAL::5237 1
-DEAL::5238 1
-DEAL::5239 1
-DEAL::5240 1
-DEAL::5241 1
-DEAL::5242 1
-DEAL::5243 1
-DEAL::5244 1
-DEAL::5245 1
-DEAL::5246 1
-DEAL::5247 1
-DEAL::5248 1
-DEAL::5249 1
-DEAL::5250 1
-DEAL::5251 1
-DEAL::5252 1
-DEAL::5253 1
-DEAL::5254 1
-DEAL::5255 1
-DEAL::5256 1
-DEAL::5257 1
-DEAL::5258 1
-DEAL::5259 1
-DEAL::5260 1
-DEAL::5261 1
-DEAL::5262 1
-DEAL::5263 1
-DEAL::5264 1
-DEAL::5265 1
-DEAL::5266 1
-DEAL::5267 1
-DEAL::5268 1
-DEAL::5269 1
-DEAL::5270 1
-DEAL::5271 1
-DEAL::5272 1
-DEAL::5273 1
-DEAL::5274 1
-DEAL::5275 1
-DEAL::5276 1
-DEAL::5277 1
-DEAL::5278 1
-DEAL::5279 1
-DEAL::5280 1
-DEAL::5281 1
-DEAL::5282 1
-DEAL::5283 1
-DEAL::5284 1
-DEAL::5285 1
-DEAL::5286 1
-DEAL::5287 1
-DEAL::5288 1
-DEAL::5289 1
-DEAL::5290 1
-DEAL::5291 1
-DEAL::5292 1
-DEAL::5293 1
-DEAL::5294 1
-DEAL::5295 1
-DEAL::5296 1
-DEAL::5297 1
-DEAL::5298 1
-DEAL::5299 1
-DEAL::5300 1
-DEAL::5301 1
-DEAL::5302 1
-DEAL::5303 1
-DEAL::5304 1
-DEAL::5305 1
-DEAL::5306 1
-DEAL::5307 1
-DEAL::5308 1
-DEAL::5309 1
-DEAL::5310 1
-DEAL::5311 1
-DEAL::5312 1
-DEAL::5313 1
-DEAL::5314 1
-DEAL::5315 1
-DEAL::5316 1
-DEAL::5317 1
-DEAL::5318 1
-DEAL::5319 1
-DEAL::5320 1
-DEAL::5321 1
-DEAL::5322 1
-DEAL::5323 1
-DEAL::5324 1
-DEAL::5325 1
-DEAL::5326 1
-DEAL::5327 1
-DEAL::5328 1
-DEAL::5329 1
-DEAL::5330 1
-DEAL::5331 1
-DEAL::5332 1
-DEAL::5333 1
-DEAL::5334 1
-DEAL::5335 1
-DEAL::5336 1
-DEAL::5337 1
-DEAL::5338 1
-DEAL::5339 1
-DEAL::5340 1
-DEAL::5341 1
-DEAL::5342 1
-DEAL::5343 1
-DEAL::5344 1
-DEAL::5345 1
-DEAL::5346 1
-DEAL::5347 1
-DEAL::5348 1
-DEAL::5349 1
-DEAL::5350 1
-DEAL::5351 1
-DEAL::5352 1
-DEAL::5353 1
-DEAL::5354 1
-DEAL::5355 1
-DEAL::5356 1
-DEAL::5357 1
-DEAL::5358 1
-DEAL::5359 1
-DEAL::5360 1
-DEAL::5361 1
-DEAL::5362 1
-DEAL::5363 1
-DEAL::5364 1
-DEAL::5365 1
-DEAL::5366 1
-DEAL::5367 1
-DEAL::5368 1
-DEAL::5369 1
-DEAL::5370 1
-DEAL::5371 1
-DEAL::5372 1
-DEAL::5373 1
-DEAL::5374 1
-DEAL::5375 1
-DEAL::5376 1
-DEAL::5377 1
-DEAL::5378 1
-DEAL::5379 1
-DEAL::5380 1
-DEAL::5381 1
-DEAL::5382 1
-DEAL::5383 1
-DEAL::5384 1
-DEAL::5385 1
-DEAL::5386 1
-DEAL::5387 1
-DEAL::5388 1
-DEAL::5389 1
+DEAL::5045 1
+DEAL::5046 1
+DEAL::5047 1
+DEAL::5048 1
+DEAL::5049 1
+DEAL::5050 1
+DEAL::5051 1
+DEAL::5052 1
+DEAL::5053 1
+DEAL::5054 1
+DEAL::5055 1
+DEAL::5056 1
+DEAL::5057 1
+DEAL::5058 1
+DEAL::5059 1
+DEAL::5060 1
+DEAL::5061 1
+DEAL::5062 1
+DEAL::5063 1
+DEAL::5064 1
+DEAL::5065 1
+DEAL::5066 1
+DEAL::5067 1
+DEAL::5068 1
+DEAL::5069 1
+DEAL::5070 1
+DEAL::5071 1
+DEAL::5072 1
+DEAL::5073 1
+DEAL::5074 1
+DEAL::5075 1
+DEAL::5076 1
+DEAL::5077 1
+DEAL::5078 1
+DEAL::5079 1
+DEAL::5080 1
+DEAL::5081 1
+DEAL::5082 1
+DEAL::5083 1
+DEAL::5084 1
+DEAL::5085 1
+DEAL::5086 1
+DEAL::5087 1
+DEAL::5088 1
+DEAL::5089 1
+DEAL::5090 1
+DEAL::5091 1
+DEAL::5092 1
+DEAL::5093 1
+DEAL::5094 1
+DEAL::5095 0
+DEAL::5096 0
+DEAL::5097 0
+DEAL::5098 0
+DEAL::5099 0
+DEAL::5100 0
+DEAL::5101 0
+DEAL::5102 0
+DEAL::5103 0
+DEAL::5104 0
+DEAL::5105 0
+DEAL::5106 0
+DEAL::5107 0
+DEAL::5108 0
+DEAL::5109 0
+DEAL::5110 0
+DEAL::5111 0
+DEAL::5112 0
+DEAL::5113 0
+DEAL::5114 0
+DEAL::5115 0
+DEAL::5116 0
+DEAL::5117 0
+DEAL::5118 0
+DEAL::5119 0
+DEAL::5120 0
+DEAL::5121 0
+DEAL::5122 0
+DEAL::5123 0
+DEAL::5124 0
+DEAL::5125 0
+DEAL::5126 0
+DEAL::5127 0
+DEAL::5128 0
+DEAL::5129 0
+DEAL::5130 0
+DEAL::5131 0
+DEAL::5132 0
+DEAL::5133 0
+DEAL::5134 0
+DEAL::5135 0
+DEAL::5136 0
+DEAL::5137 0
+DEAL::5138 0
+DEAL::5139 0
+DEAL::5140 0
+DEAL::5141 0
+DEAL::5142 0
+DEAL::5143 0
+DEAL::5144 0
+DEAL::5145 0
+DEAL::5146 0
+DEAL::5147 0
+DEAL::5148 0
+DEAL::5149 0
+DEAL::5150 0
+DEAL::5151 0
+DEAL::5152 0
+DEAL::5153 0
+DEAL::5154 0
+DEAL::5155 0
+DEAL::5156 0
+DEAL::5157 0
+DEAL::5158 0
+DEAL::5159 0
+DEAL::5160 0
+DEAL::5161 0
+DEAL::5162 0
+DEAL::5163 0
+DEAL::5164 0
+DEAL::5165 0
+DEAL::5166 0
+DEAL::5167 0
+DEAL::5168 0
+DEAL::5169 0
+DEAL::5170 0
+DEAL::5171 0
+DEAL::5172 0
+DEAL::5173 0
+DEAL::5174 0
+DEAL::5175 0
+DEAL::5176 0
+DEAL::5177 0
+DEAL::5178 0
+DEAL::5179 0
+DEAL::5180 0
+DEAL::5181 0
+DEAL::5182 0
+DEAL::5183 0
+DEAL::5184 0
+DEAL::5185 0
+DEAL::5186 0
+DEAL::5187 0
+DEAL::5188 0
+DEAL::5189 0
+DEAL::5190 0
+DEAL::5191 0
+DEAL::5192 0
+DEAL::5193 0
+DEAL::5194 3
+DEAL::5195 3
+DEAL::5196 3
+DEAL::5197 3
+DEAL::5198 3
+DEAL::5199 3
+DEAL::5200 3
+DEAL::5201 3
+DEAL::5202 3
+DEAL::5203 3
+DEAL::5204 3
+DEAL::5205 3
+DEAL::5206 3
+DEAL::5207 3
+DEAL::5208 3
+DEAL::5209 3
+DEAL::5210 3
+DEAL::5211 3
+DEAL::5212 3
+DEAL::5213 3
+DEAL::5214 3
+DEAL::5215 3
+DEAL::5216 3
+DEAL::5217 3
+DEAL::5218 3
+DEAL::5219 3
+DEAL::5220 3
+DEAL::5221 3
+DEAL::5222 3
+DEAL::5223 3
+DEAL::5224 3
+DEAL::5225 3
+DEAL::5226 3
+DEAL::5227 3
+DEAL::5228 3
+DEAL::5229 3
+DEAL::5230 3
+DEAL::5231 3
+DEAL::5232 3
+DEAL::5233 3
+DEAL::5234 3
+DEAL::5235 3
+DEAL::5236 3
+DEAL::5237 3
+DEAL::5238 3
+DEAL::5239 3
+DEAL::5240 3
+DEAL::5241 3
+DEAL::5242 3
+DEAL::5243 3
+DEAL::5244 3
+DEAL::5245 3
+DEAL::5246 3
+DEAL::5247 3
+DEAL::5248 3
+DEAL::5249 3
+DEAL::5250 3
+DEAL::5251 3
+DEAL::5252 3
+DEAL::5253 3
+DEAL::5254 3
+DEAL::5255 3
+DEAL::5256 3
+DEAL::5257 3
+DEAL::5258 3
+DEAL::5259 3
+DEAL::5260 3
+DEAL::5261 3
+DEAL::5262 3
+DEAL::5263 3
+DEAL::5264 3
+DEAL::5265 3
+DEAL::5266 3
+DEAL::5267 3
+DEAL::5268 3
+DEAL::5269 3
+DEAL::5270 3
+DEAL::5271 3
+DEAL::5272 3
+DEAL::5273 3
+DEAL::5274 3
+DEAL::5275 3
+DEAL::5276 3
+DEAL::5277 3
+DEAL::5278 3
+DEAL::5279 3
+DEAL::5280 3
+DEAL::5281 3
+DEAL::5282 3
+DEAL::5283 3
+DEAL::5284 3
+DEAL::5285 3
+DEAL::5286 3
+DEAL::5287 3
+DEAL::5288 3
+DEAL::5289 3
+DEAL::5290 3
+DEAL::5291 3
+DEAL::5292 3
+DEAL::5293 3
+DEAL::5294 3
+DEAL::5295 3
+DEAL::5296 3
+DEAL::5297 3
+DEAL::5298 3
+DEAL::5299 3
+DEAL::5300 3
+DEAL::5301 3
+DEAL::5302 3
+DEAL::5303 3
+DEAL::5304 3
+DEAL::5305 3
+DEAL::5306 3
+DEAL::5307 3
+DEAL::5308 3
+DEAL::5309 3
+DEAL::5310 3
+DEAL::5311 3
+DEAL::5312 3
+DEAL::5313 3
+DEAL::5314 3
+DEAL::5315 3
+DEAL::5316 3
+DEAL::5317 3
+DEAL::5318 3
+DEAL::5319 3
+DEAL::5320 3
+DEAL::5321 3
+DEAL::5322 3
+DEAL::5323 3
+DEAL::5324 3
+DEAL::5325 3
+DEAL::5326 3
+DEAL::5327 3
+DEAL::5328 3
+DEAL::5329 3
+DEAL::5330 3
+DEAL::5331 3
+DEAL::5332 3
+DEAL::5333 3
+DEAL::5334 3
+DEAL::5335 3
+DEAL::5336 3
+DEAL::5337 3
+DEAL::5338 3
+DEAL::5339 3
+DEAL::5340 3
+DEAL::5341 3
+DEAL::5342 3
+DEAL::5343 3
+DEAL::5344 3
+DEAL::5345 3
+DEAL::5346 3
+DEAL::5347 3
+DEAL::5348 3
+DEAL::5349 3
+DEAL::5350 3
+DEAL::5351 3
+DEAL::5352 3
+DEAL::5353 3
+DEAL::5354 3
+DEAL::5355 3
+DEAL::5356 3
+DEAL::5357 3
+DEAL::5358 3
+DEAL::5359 3
+DEAL::5360 3
+DEAL::5361 3
+DEAL::5362 3
+DEAL::5363 3
+DEAL::5364 3
+DEAL::5365 3
+DEAL::5366 3
+DEAL::5367 3
+DEAL::5368 3
+DEAL::5369 3
+DEAL::5370 3
+DEAL::5371 3
+DEAL::5372 3
+DEAL::5373 3
+DEAL::5374 3
+DEAL::5375 3
+DEAL::5376 3
+DEAL::5377 3
+DEAL::5378 3
+DEAL::5379 3
+DEAL::5380 3
+DEAL::5381 3
+DEAL::5382 3
+DEAL::5383 3
+DEAL::5384 3
+DEAL::5385 3
+DEAL::5386 3
+DEAL::5387 3
+DEAL::5388 3
+DEAL::5389 3
 DEAL::5390 2
 DEAL::5391 2
 DEAL::5392 2
@@ -13719,7 +13719,7 @@ DEAL::5394 2
 DEAL::5395 2
 DEAL::5396 2
 DEAL::5397 2
-DEAL::5398 2
+DEAL::5398 1
 DEAL::5399 2
 DEAL::5400 2
 DEAL::5401 2
@@ -13727,61 +13727,61 @@ DEAL::5402 2
 DEAL::5403 2
 DEAL::5404 2
 DEAL::5405 2
-DEAL::5406 2
+DEAL::5406 1
 DEAL::5407 2
-DEAL::5408 2
+DEAL::5408 1
 DEAL::5409 2
-DEAL::5410 2
+DEAL::5410 1
 DEAL::5411 2
 DEAL::5412 2
 DEAL::5413 2
 DEAL::5414 2
 DEAL::5415 2
-DEAL::5416 2
-DEAL::5417 2
-DEAL::5418 2
-DEAL::5419 2
-DEAL::5420 2
-DEAL::5421 2
-DEAL::5422 2
-DEAL::5423 2
-DEAL::5424 2
-DEAL::5425 2
-DEAL::5426 2
-DEAL::5427 2
-DEAL::5428 2
-DEAL::5429 2
-DEAL::5430 2
-DEAL::5431 2
-DEAL::5432 2
+DEAL::5416 1
+DEAL::5417 1
+DEAL::5418 1
+DEAL::5419 1
+DEAL::5420 1
+DEAL::5421 1
+DEAL::5422 1
+DEAL::5423 1
+DEAL::5424 1
+DEAL::5425 1
+DEAL::5426 1
+DEAL::5427 1
+DEAL::5428 1
+DEAL::5429 1
+DEAL::5430 1
+DEAL::5431 1
+DEAL::5432 1
 DEAL::5433 2
 DEAL::5434 2
 DEAL::5435 2
 DEAL::5436 2
-DEAL::5437 2
+DEAL::5437 1
 DEAL::5438 2
 DEAL::5439 2
-DEAL::5440 2
+DEAL::5440 1
 DEAL::5441 2
 DEAL::5442 2
-DEAL::5443 2
+DEAL::5443 1
 DEAL::5444 2
 DEAL::5445 2
 DEAL::5446 2
 DEAL::5447 2
 DEAL::5448 2
 DEAL::5449 2
-DEAL::5450 2
-DEAL::5451 2
-DEAL::5452 2
-DEAL::5453 2
-DEAL::5454 2
-DEAL::5455 2
-DEAL::5456 2
-DEAL::5457 2
-DEAL::5458 2
-DEAL::5459 2
-DEAL::5460 2
+DEAL::5450 1
+DEAL::5451 1
+DEAL::5452 1
+DEAL::5453 1
+DEAL::5454 1
+DEAL::5455 1
+DEAL::5456 1
+DEAL::5457 1
+DEAL::5458 1
+DEAL::5459 1
+DEAL::5460 1
 DEAL::5461 2
 DEAL::5462 2
 DEAL::5463 2
@@ -13792,135 +13792,135 @@ DEAL::5467 2
 DEAL::5468 2
 DEAL::5469 2
 DEAL::5470 2
-DEAL::5471 2
+DEAL::5471 1
 DEAL::5472 2
 DEAL::5473 2
 DEAL::5474 2
 DEAL::5475 2
 DEAL::5476 2
 DEAL::5477 2
-DEAL::5478 2
+DEAL::5478 1
 DEAL::5479 2
-DEAL::5480 2
-DEAL::5481 2
-DEAL::5482 2
-DEAL::5483 2
-DEAL::5484 2
-DEAL::5485 2
-DEAL::5486 2
+DEAL::5480 1
+DEAL::5481 1
+DEAL::5482 1
+DEAL::5483 1
+DEAL::5484 1
+DEAL::5485 1
+DEAL::5486 1
 DEAL::5487 2
 DEAL::5488 2
 DEAL::5489 2
 DEAL::5490 2
 DEAL::5491 2
-DEAL::5492 2
+DEAL::5492 1
 DEAL::5493 2
 DEAL::5494 2
 DEAL::5495 2
 DEAL::5496 2
 DEAL::5497 2
 DEAL::5498 2
-DEAL::5499 2
-DEAL::5500 2
-DEAL::5501 2
-DEAL::5502 2
-DEAL::5503 2
-DEAL::5504 4
-DEAL::5505 4
-DEAL::5506 4
-DEAL::5507 4
-DEAL::5508 4
-DEAL::5509 4
-DEAL::5510 4
-DEAL::5511 4
-DEAL::5512 4
-DEAL::5513 4
-DEAL::5514 4
-DEAL::5515 4
-DEAL::5516 4
-DEAL::5517 4
-DEAL::5518 4
-DEAL::5519 4
-DEAL::5520 4
-DEAL::5521 4
-DEAL::5522 4
-DEAL::5523 4
-DEAL::5524 4
-DEAL::5525 4
-DEAL::5526 4
-DEAL::5527 4
-DEAL::5528 4
-DEAL::5529 4
-DEAL::5530 4
-DEAL::5531 4
-DEAL::5532 4
-DEAL::5533 4
-DEAL::5534 4
-DEAL::5535 4
-DEAL::5536 4
-DEAL::5537 4
-DEAL::5538 4
-DEAL::5539 4
-DEAL::5540 0
-DEAL::5541 4
-DEAL::5542 4
-DEAL::5543 4
-DEAL::5544 4
-DEAL::5545 4
-DEAL::5546 4
-DEAL::5547 4
-DEAL::5548 4
-DEAL::5549 4
-DEAL::5550 4
-DEAL::5551 4
-DEAL::5552 4
-DEAL::5553 4
-DEAL::5554 4
-DEAL::5555 4
-DEAL::5556 4
-DEAL::5557 4
-DEAL::5558 4
-DEAL::5559 4
-DEAL::5560 4
-DEAL::5561 4
-DEAL::5562 4
-DEAL::5563 4
-DEAL::5564 4
-DEAL::5565 4
-DEAL::5566 4
-DEAL::5567 4
-DEAL::5568 4
-DEAL::5569 4
-DEAL::5570 4
-DEAL::5571 4
-DEAL::5572 4
-DEAL::5573 4
-DEAL::5574 4
-DEAL::5575 4
-DEAL::5576 4
-DEAL::5577 4
-DEAL::5578 4
-DEAL::5579 4
-DEAL::5580 4
-DEAL::5581 4
-DEAL::5582 4
-DEAL::5583 4
-DEAL::5584 4
-DEAL::5585 0
-DEAL::5586 4
-DEAL::5587 4
-DEAL::5588 4
-DEAL::5589 4
-DEAL::5590 0
-DEAL::5591 4
-DEAL::5592 4
-DEAL::5593 4
-DEAL::5594 0
-DEAL::5595 0
-DEAL::5596 4
-DEAL::5597 4
-DEAL::5598 4
-DEAL::5599 4
+DEAL::5499 1
+DEAL::5500 1
+DEAL::5501 1
+DEAL::5502 1
+DEAL::5503 1
+DEAL::5504 2
+DEAL::5505 2
+DEAL::5506 2
+DEAL::5507 2
+DEAL::5508 2
+DEAL::5509 2
+DEAL::5510 2
+DEAL::5511 2
+DEAL::5512 2
+DEAL::5513 2
+DEAL::5514 2
+DEAL::5515 2
+DEAL::5516 2
+DEAL::5517 2
+DEAL::5518 2
+DEAL::5519 2
+DEAL::5520 2
+DEAL::5521 2
+DEAL::5522 2
+DEAL::5523 2
+DEAL::5524 2
+DEAL::5525 2
+DEAL::5526 2
+DEAL::5527 2
+DEAL::5528 2
+DEAL::5529 2
+DEAL::5530 2
+DEAL::5531 2
+DEAL::5532 2
+DEAL::5533 2
+DEAL::5534 2
+DEAL::5535 2
+DEAL::5536 2
+DEAL::5537 2
+DEAL::5538 2
+DEAL::5539 3
+DEAL::5540 3
+DEAL::5541 2
+DEAL::5542 2
+DEAL::5543 2
+DEAL::5544 3
+DEAL::5545 3
+DEAL::5546 2
+DEAL::5547 2
+DEAL::5548 2
+DEAL::5549 2
+DEAL::5550 2
+DEAL::5551 3
+DEAL::5552 2
+DEAL::5553 2
+DEAL::5554 2
+DEAL::5555 2
+DEAL::5556 2
+DEAL::5557 2
+DEAL::5558 3
+DEAL::5559 2
+DEAL::5560 2
+DEAL::5561 2
+DEAL::5562 2
+DEAL::5563 2
+DEAL::5564 2
+DEAL::5565 2
+DEAL::5566 2
+DEAL::5567 2
+DEAL::5568 2
+DEAL::5569 2
+DEAL::5570 2
+DEAL::5571 2
+DEAL::5572 2
+DEAL::5573 2
+DEAL::5574 2
+DEAL::5575 2
+DEAL::5576 2
+DEAL::5577 2
+DEAL::5578 2
+DEAL::5579 2
+DEAL::5580 2
+DEAL::5581 2
+DEAL::5582 2
+DEAL::5583 2
+DEAL::5584 2
+DEAL::5585 3
+DEAL::5586 2
+DEAL::5587 2
+DEAL::5588 2
+DEAL::5589 2
+DEAL::5590 3
+DEAL::5591 2
+DEAL::5592 2
+DEAL::5593 2
+DEAL::5594 3
+DEAL::5595 3
+DEAL::5596 2
+DEAL::5597 2
+DEAL::5598 2
+DEAL::5599 2
 DEAL::5600 2
 DEAL::5601 2
 DEAL::5602 2
@@ -13979,7 +13979,7 @@ DEAL::5654 2
 DEAL::5655 2
 DEAL::5656 2
 DEAL::5657 2
-DEAL::5658 2
+DEAL::5658 1
 DEAL::5659 2
 DEAL::5660 2
 DEAL::5661 2
@@ -13995,1544 +13995,1544 @@ DEAL::5670 2
 DEAL::5671 2
 DEAL::5672 2
 DEAL::5673 2
-DEAL::5674 2
+DEAL::5674 1
 DEAL::5675 2
 DEAL::5676 2
 DEAL::5677 2
 DEAL::5678 2
-DEAL::5679 2
+DEAL::5679 1
 DEAL::5680 2
 DEAL::5681 2
 DEAL::5682 2
-DEAL::5683 2
+DEAL::5683 1
 DEAL::5684 2
 DEAL::5685 2
 DEAL::5686 2
 DEAL::5687 2
 DEAL::5688 2
-DEAL::5689 2
+DEAL::5689 1
 DEAL::5690 2
-DEAL::5691 2
+DEAL::5691 1
 DEAL::5692 2
 DEAL::5693 2
 DEAL::5694 2
 DEAL::5695 2
-DEAL::5696 2
-DEAL::5697 2
-DEAL::5698 2
-DEAL::5699 2
-DEAL::5700 2
-DEAL::5701 2
-DEAL::5702 2
-DEAL::5703 2
+DEAL::5696 1
+DEAL::5697 1
+DEAL::5698 1
+DEAL::5699 1
+DEAL::5700 1
+DEAL::5701 1
+DEAL::5702 1
+DEAL::5703 1
 DEAL::5704 2
-DEAL::5705 2
+DEAL::5705 1
 DEAL::5706 2
 DEAL::5707 2
 DEAL::5708 2
 DEAL::5709 2
-DEAL::5710 2
+DEAL::5710 1
 DEAL::5711 2
-DEAL::5712 2
+DEAL::5712 1
 DEAL::5713 2
 DEAL::5714 2
 DEAL::5715 2
-DEAL::5716 2
-DEAL::5717 2
-DEAL::5718 2
-DEAL::5719 2
-DEAL::5720 2
+DEAL::5716 1
+DEAL::5717 1
+DEAL::5718 1
+DEAL::5719 1
+DEAL::5720 1
 DEAL::5721 2
 DEAL::5722 2
 DEAL::5723 2
-DEAL::5724 2
+DEAL::5724 1
 DEAL::5725 2
 DEAL::5726 2
 DEAL::5727 2
-DEAL::5728 2
+DEAL::5728 1
 DEAL::5729 2
-DEAL::5730 2
+DEAL::5730 1
 DEAL::5731 2
-DEAL::5732 2
+DEAL::5732 1
 DEAL::5733 2
 DEAL::5734 2
 DEAL::5735 2
 DEAL::5736 2
-DEAL::5737 2
-DEAL::5738 2
-DEAL::5739 2
-DEAL::5740 2
-DEAL::5741 2
-DEAL::5742 2
+DEAL::5737 1
+DEAL::5738 1
+DEAL::5739 1
+DEAL::5740 1
+DEAL::5741 1
+DEAL::5742 1
 DEAL::5743 2
 DEAL::5744 2
 DEAL::5745 2
 DEAL::5746 2
 DEAL::5747 2
-DEAL::5748 2
+DEAL::5748 1
 DEAL::5749 2
-DEAL::5750 2
+DEAL::5750 1
 DEAL::5751 2
 DEAL::5752 2
 DEAL::5753 2
-DEAL::5754 2
-DEAL::5755 2
-DEAL::5756 2
-DEAL::5757 2
+DEAL::5754 1
+DEAL::5755 1
+DEAL::5756 1
+DEAL::5757 1
 DEAL::5758 2
-DEAL::5759 2
+DEAL::5759 1
 DEAL::5760 2
-DEAL::5761 2
+DEAL::5761 1
 DEAL::5762 2
 DEAL::5763 2
 DEAL::5764 2
 DEAL::5765 2
-DEAL::5766 2
+DEAL::5766 1
 DEAL::5767 2
 DEAL::5768 2
 DEAL::5769 2
 DEAL::5770 2
-DEAL::5771 2
+DEAL::5771 1
 DEAL::5772 2
 DEAL::5773 2
 DEAL::5774 2
 DEAL::5775 2
-DEAL::5776 2
-DEAL::5777 2
-DEAL::5778 2
-DEAL::5779 2
-DEAL::5780 2
-DEAL::5781 2
-DEAL::5782 2
-DEAL::5783 2
-DEAL::5784 2
-DEAL::5785 2
-DEAL::5786 2
-DEAL::5787 2
-DEAL::5788 2
+DEAL::5776 1
+DEAL::5777 1
+DEAL::5778 1
+DEAL::5779 1
+DEAL::5780 1
+DEAL::5781 1
+DEAL::5782 1
+DEAL::5783 1
+DEAL::5784 1
+DEAL::5785 1
+DEAL::5786 1
+DEAL::5787 1
+DEAL::5788 1
 DEAL::5789 2
-DEAL::5790 2
+DEAL::5790 1
 DEAL::5791 2
 DEAL::5792 2
 DEAL::5793 2
 DEAL::5794 2
-DEAL::5795 2
+DEAL::5795 1
 DEAL::5796 2
 DEAL::5797 2
 DEAL::5798 2
 DEAL::5799 2
-DEAL::5800 2
+DEAL::5800 1
 DEAL::5801 2
 DEAL::5802 2
 DEAL::5803 2
 DEAL::5804 2
-DEAL::5805 2
-DEAL::5806 2
-DEAL::5807 2
-DEAL::5808 2
-DEAL::5809 2
-DEAL::5810 2
-DEAL::5811 2
-DEAL::5812 2
-DEAL::5813 2
-DEAL::5814 2
-DEAL::5815 2
+DEAL::5805 1
+DEAL::5806 1
+DEAL::5807 1
+DEAL::5808 1
+DEAL::5809 1
+DEAL::5810 1
+DEAL::5811 1
+DEAL::5812 1
+DEAL::5813 1
+DEAL::5814 1
+DEAL::5815 1
 DEAL::5816 2
-DEAL::5817 2
+DEAL::5817 1
 DEAL::5818 2
-DEAL::5819 2
+DEAL::5819 1
 DEAL::5820 2
 DEAL::5821 2
-DEAL::5822 2
+DEAL::5822 1
 DEAL::5823 2
 DEAL::5824 2
 DEAL::5825 2
 DEAL::5826 2
 DEAL::5827 2
-DEAL::5828 2
-DEAL::5829 2
-DEAL::5830 2
-DEAL::5831 2
-DEAL::5832 2
-DEAL::5833 2
-DEAL::5834 2
-DEAL::5835 2
-DEAL::5836 2
+DEAL::5828 1
+DEAL::5829 1
+DEAL::5830 1
+DEAL::5831 1
+DEAL::5832 1
+DEAL::5833 1
+DEAL::5834 1
+DEAL::5835 1
+DEAL::5836 1
 DEAL::5837 2
-DEAL::5838 2
+DEAL::5838 1
 DEAL::5839 2
 DEAL::5840 2
-DEAL::5841 2
+DEAL::5841 1
 DEAL::5842 2
 DEAL::5843 2
 DEAL::5844 2
 DEAL::5845 2
 DEAL::5846 2
-DEAL::5847 2
-DEAL::5848 2
-DEAL::5849 2
-DEAL::5850 2
-DEAL::5851 2
-DEAL::5852 2
-DEAL::5853 2
-DEAL::5854 3
-DEAL::5855 3
-DEAL::5856 3
-DEAL::5857 3
-DEAL::5858 3
-DEAL::5859 3
-DEAL::5860 3
-DEAL::5861 3
-DEAL::5862 3
-DEAL::5863 3
-DEAL::5864 3
-DEAL::5865 3
-DEAL::5866 3
-DEAL::5867 3
-DEAL::5868 3
-DEAL::5869 3
-DEAL::5870 3
-DEAL::5871 3
-DEAL::5872 3
-DEAL::5873 3
-DEAL::5874 3
-DEAL::5875 3
-DEAL::5876 3
-DEAL::5877 3
-DEAL::5878 3
-DEAL::5879 3
-DEAL::5880 3
-DEAL::5881 3
-DEAL::5882 3
-DEAL::5883 3
-DEAL::5884 3
-DEAL::5885 3
-DEAL::5886 3
-DEAL::5887 3
-DEAL::5888 3
-DEAL::5889 3
-DEAL::5890 3
-DEAL::5891 3
-DEAL::5892 3
-DEAL::5893 3
-DEAL::5894 3
-DEAL::5895 3
-DEAL::5896 3
-DEAL::5897 3
-DEAL::5898 3
-DEAL::5899 3
-DEAL::5900 3
-DEAL::5901 3
-DEAL::5902 3
-DEAL::5903 3
-DEAL::5904 3
-DEAL::5905 3
-DEAL::5906 3
-DEAL::5907 3
-DEAL::5908 3
-DEAL::5909 3
-DEAL::5910 3
-DEAL::5911 3
-DEAL::5912 3
-DEAL::5913 3
-DEAL::5914 3
-DEAL::5915 3
-DEAL::5916 3
-DEAL::5917 3
-DEAL::5918 3
-DEAL::5919 3
-DEAL::5920 3
-DEAL::5921 3
-DEAL::5922 3
-DEAL::5923 3
-DEAL::5924 3
-DEAL::5925 3
-DEAL::5926 3
-DEAL::5927 3
-DEAL::5928 3
-DEAL::5929 3
-DEAL::5930 3
-DEAL::5931 3
-DEAL::5932 3
-DEAL::5933 3
-DEAL::5934 3
-DEAL::5935 3
-DEAL::5936 3
-DEAL::5937 3
-DEAL::5938 3
-DEAL::5939 3
-DEAL::5940 3
-DEAL::5941 3
-DEAL::5942 3
-DEAL::5943 3
-DEAL::5944 3
-DEAL::5945 3
-DEAL::5946 3
-DEAL::5947 3
-DEAL::5948 3
-DEAL::5949 3
-DEAL::5950 3
-DEAL::5951 3
-DEAL::5952 3
-DEAL::5953 3
-DEAL::5954 3
-DEAL::5955 3
-DEAL::5956 3
-DEAL::5957 3
-DEAL::5958 3
-DEAL::5959 3
-DEAL::5960 3
-DEAL::5961 3
-DEAL::5962 3
-DEAL::5963 3
-DEAL::5964 3
-DEAL::5965 3
-DEAL::5966 3
-DEAL::5967 3
-DEAL::5968 3
-DEAL::5969 3
-DEAL::5970 3
-DEAL::5971 3
-DEAL::5972 3
-DEAL::5973 3
-DEAL::5974 3
-DEAL::5975 3
-DEAL::5976 3
-DEAL::5977 3
-DEAL::5978 3
-DEAL::5979 3
-DEAL::5980 3
-DEAL::5981 3
-DEAL::5982 3
-DEAL::5983 3
-DEAL::5984 3
-DEAL::5985 3
-DEAL::5986 3
-DEAL::5987 3
-DEAL::5988 3
-DEAL::5989 3
-DEAL::5990 3
-DEAL::5991 3
-DEAL::5992 3
-DEAL::5993 3
-DEAL::5994 3
-DEAL::5995 3
-DEAL::5996 3
-DEAL::5997 3
-DEAL::5998 3
-DEAL::5999 3
-DEAL::6000 3
-DEAL::6001 3
-DEAL::6002 3
-DEAL::6003 3
-DEAL::6004 3
-DEAL::6005 3
-DEAL::6006 3
-DEAL::6007 3
-DEAL::6008 3
-DEAL::6009 3
-DEAL::6010 3
-DEAL::6011 3
-DEAL::6012 3
-DEAL::6013 3
-DEAL::6014 3
-DEAL::6015 3
-DEAL::6016 3
-DEAL::6017 3
-DEAL::6018 3
-DEAL::6019 3
-DEAL::6020 3
-DEAL::6021 3
-DEAL::6022 3
-DEAL::6023 3
-DEAL::6024 3
-DEAL::6025 3
-DEAL::6026 3
-DEAL::6027 3
-DEAL::6028 3
-DEAL::6029 3
-DEAL::6030 3
-DEAL::6031 3
-DEAL::6032 3
-DEAL::6033 3
-DEAL::6034 3
-DEAL::6035 3
-DEAL::6036 3
-DEAL::6037 3
-DEAL::6038 3
-DEAL::6039 3
-DEAL::6040 3
-DEAL::6041 3
-DEAL::6042 3
-DEAL::6043 3
-DEAL::6044 3
-DEAL::6045 3
-DEAL::6046 3
-DEAL::6047 3
-DEAL::6048 3
-DEAL::6049 3
-DEAL::6050 3
-DEAL::6051 3
-DEAL::6052 3
-DEAL::6053 3
-DEAL::6054 3
-DEAL::6055 3
-DEAL::6056 3
-DEAL::6057 3
-DEAL::6058 3
-DEAL::6059 3
-DEAL::6060 3
-DEAL::6061 3
-DEAL::6062 3
-DEAL::6063 3
-DEAL::6064 3
-DEAL::6065 3
-DEAL::6066 3
-DEAL::6067 3
-DEAL::6068 3
-DEAL::6069 3
-DEAL::6070 3
-DEAL::6071 3
-DEAL::6072 3
-DEAL::6073 3
-DEAL::6074 3
-DEAL::6075 3
-DEAL::6076 3
-DEAL::6077 3
-DEAL::6078 3
-DEAL::6079 3
-DEAL::6080 3
-DEAL::6081 3
-DEAL::6082 3
-DEAL::6083 3
-DEAL::6084 3
-DEAL::6085 3
-DEAL::6086 3
-DEAL::6087 3
-DEAL::6088 3
-DEAL::6089 3
-DEAL::6090 3
-DEAL::6091 3
-DEAL::6092 3
-DEAL::6093 3
-DEAL::6094 3
-DEAL::6095 3
-DEAL::6096 3
-DEAL::6097 3
-DEAL::6098 3
-DEAL::6099 3
-DEAL::6100 3
-DEAL::6101 3
-DEAL::6102 3
-DEAL::6103 3
-DEAL::6104 3
-DEAL::6105 3
-DEAL::6106 3
-DEAL::6107 3
-DEAL::6108 3
-DEAL::6109 3
-DEAL::6110 3
-DEAL::6111 3
-DEAL::6112 3
-DEAL::6113 3
-DEAL::6114 3
-DEAL::6115 3
-DEAL::6116 3
-DEAL::6117 3
-DEAL::6118 3
-DEAL::6119 3
-DEAL::6120 3
-DEAL::6121 3
-DEAL::6122 3
-DEAL::6123 3
-DEAL::6124 3
-DEAL::6125 3
-DEAL::6126 3
-DEAL::6127 3
-DEAL::6128 3
-DEAL::6129 3
-DEAL::6130 3
-DEAL::6131 3
-DEAL::6132 3
-DEAL::6133 3
-DEAL::6134 3
-DEAL::6135 3
-DEAL::6136 3
-DEAL::6137 3
-DEAL::6138 3
-DEAL::6139 3
-DEAL::6140 3
-DEAL::6141 3
-DEAL::6142 3
-DEAL::6143 3
-DEAL::6144 3
-DEAL::6145 3
-DEAL::6146 3
-DEAL::6147 3
-DEAL::6148 3
-DEAL::6149 3
-DEAL::6150 3
-DEAL::6151 3
-DEAL::6152 3
-DEAL::6153 3
-DEAL::6154 3
-DEAL::6155 3
-DEAL::6156 3
-DEAL::6157 3
-DEAL::6158 3
-DEAL::6159 3
-DEAL::6160 3
-DEAL::6161 3
-DEAL::6162 3
-DEAL::6163 3
-DEAL::6164 3
-DEAL::6165 3
-DEAL::6166 3
-DEAL::6167 3
-DEAL::6168 3
-DEAL::6169 3
-DEAL::6170 3
-DEAL::6171 3
-DEAL::6172 3
-DEAL::6173 3
-DEAL::6174 3
-DEAL::6175 3
-DEAL::6176 3
-DEAL::6177 3
-DEAL::6178 3
-DEAL::6179 3
-DEAL::6180 3
-DEAL::6181 3
-DEAL::6182 3
-DEAL::6183 3
-DEAL::6184 3
-DEAL::6185 3
-DEAL::6186 3
-DEAL::6187 3
-DEAL::6188 3
-DEAL::6189 3
-DEAL::6190 3
-DEAL::6191 3
-DEAL::6192 3
-DEAL::6193 3
-DEAL::6194 3
-DEAL::6195 3
-DEAL::6196 3
-DEAL::6197 3
-DEAL::6198 3
-DEAL::6199 3
-DEAL::6200 3
-DEAL::6201 3
-DEAL::6202 3
-DEAL::6203 3
-DEAL::6204 3
-DEAL::6205 3
-DEAL::6206 3
-DEAL::6207 3
-DEAL::6208 3
-DEAL::6209 3
-DEAL::6210 3
-DEAL::6211 3
-DEAL::6212 3
-DEAL::6213 3
-DEAL::6214 3
-DEAL::6215 3
-DEAL::6216 3
-DEAL::6217 3
-DEAL::6218 3
-DEAL::6219 3
-DEAL::6220 3
-DEAL::6221 3
-DEAL::6222 3
-DEAL::6223 3
-DEAL::6224 3
-DEAL::6225 3
-DEAL::6226 3
-DEAL::6227 3
-DEAL::6228 3
-DEAL::6229 3
-DEAL::6230 3
-DEAL::6231 3
-DEAL::6232 3
-DEAL::6233 3
-DEAL::6234 3
-DEAL::6235 3
-DEAL::6236 3
-DEAL::6237 3
-DEAL::6238 3
-DEAL::6239 3
-DEAL::6240 3
-DEAL::6241 3
-DEAL::6242 3
-DEAL::6243 3
-DEAL::6244 3
-DEAL::6245 3
-DEAL::6246 3
-DEAL::6247 3
-DEAL::6248 3
-DEAL::6249 3
-DEAL::6250 3
-DEAL::6251 3
-DEAL::6252 3
-DEAL::6253 3
-DEAL::6254 3
-DEAL::6255 3
-DEAL::6256 3
-DEAL::6257 3
-DEAL::6258 3
-DEAL::6259 3
-DEAL::6260 3
-DEAL::6261 3
-DEAL::6262 3
-DEAL::6263 3
-DEAL::6264 3
-DEAL::6265 3
-DEAL::6266 3
-DEAL::6267 3
-DEAL::6268 3
-DEAL::6269 3
-DEAL::6270 3
-DEAL::6271 3
-DEAL::6272 3
-DEAL::6273 3
-DEAL::6274 3
-DEAL::6275 3
-DEAL::6276 3
-DEAL::6277 3
-DEAL::6278 3
-DEAL::6279 3
-DEAL::6280 3
-DEAL::6281 3
-DEAL::6282 3
-DEAL::6283 3
-DEAL::6284 3
-DEAL::6285 3
-DEAL::6286 3
-DEAL::6287 3
-DEAL::6288 3
-DEAL::6289 3
-DEAL::6290 3
-DEAL::6291 3
-DEAL::6292 3
-DEAL::6293 3
-DEAL::6294 3
-DEAL::6295 3
-DEAL::6296 3
-DEAL::6297 3
-DEAL::6298 3
-DEAL::6299 3
-DEAL::6300 3
-DEAL::6301 3
-DEAL::6302 3
-DEAL::6303 3
-DEAL::6304 3
-DEAL::6305 3
-DEAL::6306 3
-DEAL::6307 3
-DEAL::6308 3
-DEAL::6309 3
-DEAL::6310 3
-DEAL::6311 3
-DEAL::6312 3
-DEAL::6313 3
-DEAL::6314 3
-DEAL::6315 3
-DEAL::6316 3
-DEAL::6317 3
-DEAL::6318 3
-DEAL::6319 3
-DEAL::6320 3
-DEAL::6321 3
-DEAL::6322 3
-DEAL::6323 3
-DEAL::6324 3
-DEAL::6325 3
-DEAL::6326 3
-DEAL::6327 3
-DEAL::6328 3
-DEAL::6329 3
-DEAL::6330 3
-DEAL::6331 3
-DEAL::6332 3
-DEAL::6333 3
-DEAL::6334 3
-DEAL::6335 3
-DEAL::6336 3
-DEAL::6337 3
-DEAL::6338 3
-DEAL::6339 3
-DEAL::6340 3
-DEAL::6341 3
-DEAL::6342 3
-DEAL::6343 3
-DEAL::6344 3
-DEAL::6345 3
-DEAL::6346 3
-DEAL::6347 3
-DEAL::6348 3
-DEAL::6349 3
-DEAL::6350 3
-DEAL::6351 3
-DEAL::6352 3
-DEAL::6353 3
-DEAL::6354 3
-DEAL::6355 3
-DEAL::6356 3
-DEAL::6357 3
-DEAL::6358 3
-DEAL::6359 3
-DEAL::6360 3
-DEAL::6361 3
-DEAL::6362 3
-DEAL::6363 3
-DEAL::6364 3
-DEAL::6365 3
-DEAL::6366 3
-DEAL::6367 3
-DEAL::6368 3
-DEAL::6369 3
-DEAL::6370 3
-DEAL::6371 3
-DEAL::6372 3
-DEAL::6373 3
-DEAL::6374 3
-DEAL::6375 3
-DEAL::6376 3
-DEAL::6377 3
-DEAL::6378 3
-DEAL::6379 3
-DEAL::6380 3
-DEAL::6381 3
-DEAL::6382 3
-DEAL::6383 3
-DEAL::6384 3
-DEAL::6385 3
-DEAL::6386 3
-DEAL::6387 3
-DEAL::6388 3
-DEAL::6389 3
-DEAL::6390 3
-DEAL::6391 3
-DEAL::6392 3
-DEAL::6393 4
-DEAL::6394 3
-DEAL::6395 4
-DEAL::6396 3
-DEAL::6397 4
-DEAL::6398 3
-DEAL::6399 3
-DEAL::6400 4
-DEAL::6401 3
-DEAL::6402 3
-DEAL::6403 3
-DEAL::6404 4
-DEAL::6405 3
-DEAL::6406 4
-DEAL::6407 3
-DEAL::6408 4
-DEAL::6409 4
-DEAL::6410 3
-DEAL::6411 3
-DEAL::6412 3
-DEAL::6413 3
-DEAL::6414 3
-DEAL::6415 3
-DEAL::6416 3
-DEAL::6417 3
-DEAL::6418 3
-DEAL::6419 3
-DEAL::6420 3
-DEAL::6421 3
-DEAL::6422 3
-DEAL::6423 3
-DEAL::6424 3
-DEAL::6425 3
-DEAL::6426 3
-DEAL::6427 3
-DEAL::6428 3
-DEAL::6429 3
-DEAL::6430 3
-DEAL::6431 3
-DEAL::6432 3
-DEAL::6433 3
-DEAL::6434 3
-DEAL::6435 3
-DEAL::6436 3
-DEAL::6437 4
-DEAL::6438 4
-DEAL::6439 3
-DEAL::6440 3
-DEAL::6441 3
-DEAL::6442 3
-DEAL::6443 3
-DEAL::6444 3
-DEAL::6445 3
-DEAL::6446 3
-DEAL::6447 4
-DEAL::6448 3
-DEAL::6449 3
-DEAL::6450 4
-DEAL::6451 4
-DEAL::6452 4
-DEAL::6453 4
-DEAL::6454 4
-DEAL::6455 4
-DEAL::6456 4
-DEAL::6457 4
-DEAL::6458 4
-DEAL::6459 4
-DEAL::6460 4
-DEAL::6461 4
-DEAL::6462 4
-DEAL::6463 4
-DEAL::6464 4
-DEAL::6465 4
-DEAL::6466 4
-DEAL::6467 4
-DEAL::6468 4
-DEAL::6469 4
-DEAL::6470 4
-DEAL::6471 4
-DEAL::6472 4
-DEAL::6473 4
-DEAL::6474 4
-DEAL::6475 4
-DEAL::6476 4
-DEAL::6477 4
-DEAL::6478 4
-DEAL::6479 4
-DEAL::6480 4
-DEAL::6481 4
-DEAL::6482 4
-DEAL::6483 4
-DEAL::6484 4
-DEAL::6485 4
-DEAL::6486 4
-DEAL::6487 4
-DEAL::6488 4
-DEAL::6489 4
-DEAL::6490 4
-DEAL::6491 4
-DEAL::6492 4
-DEAL::6493 4
-DEAL::6494 4
-DEAL::6495 4
-DEAL::6496 4
-DEAL::6497 4
-DEAL::6498 4
-DEAL::6499 4
-DEAL::6500 4
-DEAL::6501 4
-DEAL::6502 4
-DEAL::6503 4
-DEAL::6504 4
-DEAL::6505 4
-DEAL::6506 4
-DEAL::6507 4
-DEAL::6508 4
-DEAL::6509 4
-DEAL::6510 4
-DEAL::6511 4
-DEAL::6512 4
-DEAL::6513 4
-DEAL::6514 4
-DEAL::6515 4
-DEAL::6516 4
-DEAL::6517 4
-DEAL::6518 4
-DEAL::6519 4
-DEAL::6520 4
-DEAL::6521 4
-DEAL::6522 4
-DEAL::6523 4
-DEAL::6524 4
-DEAL::6525 4
-DEAL::6526 4
-DEAL::6527 4
-DEAL::6528 4
-DEAL::6529 4
-DEAL::6530 4
-DEAL::6531 4
-DEAL::6532 4
-DEAL::6533 4
-DEAL::6534 4
-DEAL::6535 4
-DEAL::6536 4
-DEAL::6537 4
-DEAL::6538 4
-DEAL::6539 4
-DEAL::6540 4
-DEAL::6541 4
-DEAL::6542 4
-DEAL::6543 4
-DEAL::6544 4
-DEAL::6545 4
-DEAL::6546 3
-DEAL::6547 3
-DEAL::6548 3
-DEAL::6549 3
-DEAL::6550 3
-DEAL::6551 3
-DEAL::6552 3
-DEAL::6553 3
-DEAL::6554 3
-DEAL::6555 3
-DEAL::6556 3
-DEAL::6557 3
-DEAL::6558 3
-DEAL::6559 3
-DEAL::6560 3
-DEAL::6561 3
-DEAL::6562 3
-DEAL::6563 3
-DEAL::6564 3
-DEAL::6565 3
-DEAL::6566 3
-DEAL::6567 3
-DEAL::6568 3
-DEAL::6569 3
-DEAL::6570 3
-DEAL::6571 3
-DEAL::6572 3
-DEAL::6573 3
-DEAL::6574 3
-DEAL::6575 3
-DEAL::6576 3
-DEAL::6577 3
-DEAL::6578 3
-DEAL::6579 3
-DEAL::6580 3
-DEAL::6581 3
-DEAL::6582 3
-DEAL::6583 3
-DEAL::6584 3
-DEAL::6585 3
-DEAL::6586 3
-DEAL::6587 3
-DEAL::6588 3
-DEAL::6589 3
-DEAL::6590 3
-DEAL::6591 3
-DEAL::6592 3
-DEAL::6593 3
-DEAL::6594 3
-DEAL::6595 3
-DEAL::6596 3
-DEAL::6597 3
-DEAL::6598 3
-DEAL::6599 3
-DEAL::6600 3
-DEAL::6601 3
-DEAL::6602 3
-DEAL::6603 3
-DEAL::6604 3
-DEAL::6605 3
-DEAL::6606 3
-DEAL::6607 3
-DEAL::6608 3
-DEAL::6609 3
-DEAL::6610 4
-DEAL::6611 4
-DEAL::6612 4
-DEAL::6613 4
-DEAL::6614 4
-DEAL::6615 4
-DEAL::6616 4
-DEAL::6617 4
-DEAL::6618 4
-DEAL::6619 4
-DEAL::6620 4
-DEAL::6621 4
-DEAL::6622 4
-DEAL::6623 4
-DEAL::6624 4
-DEAL::6625 4
-DEAL::6626 4
-DEAL::6627 4
-DEAL::6628 4
-DEAL::6629 4
-DEAL::6630 4
-DEAL::6631 4
-DEAL::6632 4
-DEAL::6633 4
-DEAL::6634 4
-DEAL::6635 4
-DEAL::6636 4
-DEAL::6637 4
-DEAL::6638 4
-DEAL::6639 4
-DEAL::6640 4
-DEAL::6641 4
-DEAL::6642 4
-DEAL::6643 4
-DEAL::6644 4
-DEAL::6645 4
-DEAL::6646 4
-DEAL::6647 4
-DEAL::6648 4
-DEAL::6649 4
-DEAL::6650 4
-DEAL::6651 4
-DEAL::6652 4
-DEAL::6653 4
-DEAL::6654 4
-DEAL::6655 4
-DEAL::6656 4
-DEAL::6657 4
-DEAL::6658 4
-DEAL::6659 4
-DEAL::6660 4
-DEAL::6661 4
-DEAL::6662 4
-DEAL::6663 4
-DEAL::6664 4
-DEAL::6665 4
-DEAL::6666 4
-DEAL::6667 4
-DEAL::6668 4
-DEAL::6669 4
-DEAL::6670 4
-DEAL::6671 4
-DEAL::6672 4
-DEAL::6673 4
-DEAL::6674 4
-DEAL::6675 4
-DEAL::6676 4
-DEAL::6677 4
-DEAL::6678 4
-DEAL::6679 4
-DEAL::6680 4
-DEAL::6681 4
-DEAL::6682 4
-DEAL::6683 4
-DEAL::6684 4
-DEAL::6685 4
-DEAL::6686 4
-DEAL::6687 4
-DEAL::6688 4
-DEAL::6689 4
-DEAL::6690 4
-DEAL::6691 4
-DEAL::6692 4
-DEAL::6693 4
-DEAL::6694 4
-DEAL::6695 4
-DEAL::6696 4
-DEAL::6697 4
-DEAL::6698 4
-DEAL::6699 4
-DEAL::6700 4
-DEAL::6701 4
-DEAL::6702 4
-DEAL::6703 4
-DEAL::6704 4
-DEAL::6705 4
-DEAL::6706 4
-DEAL::6707 4
-DEAL::6708 4
-DEAL::6709 4
-DEAL::6710 4
-DEAL::6711 4
-DEAL::6712 4
-DEAL::6713 4
-DEAL::6714 4
-DEAL::6715 4
-DEAL::6716 4
-DEAL::6717 4
-DEAL::6718 4
-DEAL::6719 4
-DEAL::6720 4
-DEAL::6721 4
-DEAL::6722 4
-DEAL::6723 4
-DEAL::6724 4
-DEAL::6725 4
-DEAL::6726 4
-DEAL::6727 4
-DEAL::6728 1
-DEAL::6729 1
-DEAL::6730 0
-DEAL::6731 4
-DEAL::6732 4
-DEAL::6733 1
-DEAL::6734 4
-DEAL::6735 0
-DEAL::6736 0
-DEAL::6737 1
-DEAL::6738 1
-DEAL::6739 4
-DEAL::6740 4
-DEAL::6741 1
-DEAL::6742 4
-DEAL::6743 4
-DEAL::6744 4
-DEAL::6745 1
-DEAL::6746 0
-DEAL::6747 4
-DEAL::6748 4
-DEAL::6749 0
-DEAL::6750 0
-DEAL::6751 4
-DEAL::6752 4
-DEAL::6753 1
-DEAL::6754 4
-DEAL::6755 0
-DEAL::6756 4
-DEAL::6757 1
-DEAL::6758 1
-DEAL::6759 0
-DEAL::6760 1
-DEAL::6761 1
-DEAL::6762 1
-DEAL::6763 0
-DEAL::6764 1
-DEAL::6765 1
-DEAL::6766 1
-DEAL::6767 1
-DEAL::6768 1
-DEAL::6769 1
-DEAL::6770 1
-DEAL::6771 1
-DEAL::6772 0
-DEAL::6773 1
-DEAL::6774 0
-DEAL::6775 1
-DEAL::6776 1
-DEAL::6777 0
-DEAL::6778 0
-DEAL::6779 1
-DEAL::6780 1
-DEAL::6781 1
-DEAL::6782 1
-DEAL::6783 0
-DEAL::6784 1
-DEAL::6785 0
-DEAL::6786 0
-DEAL::6787 0
-DEAL::6788 0
-DEAL::6789 0
-DEAL::6790 0
-DEAL::6791 0
-DEAL::6792 0
-DEAL::6793 0
-DEAL::6794 0
-DEAL::6795 0
-DEAL::6796 0
-DEAL::6797 0
-DEAL::6798 0
-DEAL::6799 0
-DEAL::6800 0
-DEAL::6801 0
-DEAL::6802 0
-DEAL::6803 0
-DEAL::6804 0
-DEAL::6805 0
-DEAL::6806 0
-DEAL::6807 0
-DEAL::6808 0
-DEAL::6809 0
-DEAL::6810 0
-DEAL::6811 0
-DEAL::6812 0
-DEAL::6813 0
-DEAL::6814 0
-DEAL::6815 0
-DEAL::6816 0
-DEAL::6817 0
-DEAL::6818 0
-DEAL::6819 0
-DEAL::6820 0
-DEAL::6821 0
-DEAL::6822 0
-DEAL::6823 0
-DEAL::6824 0
-DEAL::6825 0
-DEAL::6826 0
-DEAL::6827 0
-DEAL::6828 0
-DEAL::6829 0
-DEAL::6830 0
-DEAL::6831 0
-DEAL::6832 0
-DEAL::6833 0
-DEAL::6834 0
-DEAL::6835 0
-DEAL::6836 0
-DEAL::6837 0
-DEAL::6838 0
-DEAL::6839 0
-DEAL::6840 0
-DEAL::6841 0
-DEAL::6842 0
-DEAL::6843 0
-DEAL::6844 0
-DEAL::6845 0
-DEAL::6846 0
-DEAL::6847 0
-DEAL::6848 0
-DEAL::6849 0
-DEAL::6850 0
-DEAL::6851 0
-DEAL::6852 0
-DEAL::6853 0
-DEAL::6854 0
-DEAL::6855 0
-DEAL::6856 0
-DEAL::6857 0
-DEAL::6858 0
-DEAL::6859 0
-DEAL::6860 0
-DEAL::6861 0
-DEAL::6862 0
-DEAL::6863 0
-DEAL::6864 0
-DEAL::6865 0
-DEAL::6866 0
-DEAL::6867 0
-DEAL::6868 0
-DEAL::6869 0
-DEAL::6870 0
-DEAL::6871 0
-DEAL::6872 0
-DEAL::6873 0
-DEAL::6874 0
-DEAL::6875 0
-DEAL::6876 0
-DEAL::6877 0
-DEAL::6878 0
-DEAL::6879 0
-DEAL::6880 0
-DEAL::6881 0
-DEAL::6882 0
-DEAL::6883 0
-DEAL::6884 0
-DEAL::6885 0
-DEAL::6886 0
-DEAL::6887 0
-DEAL::6888 0
-DEAL::6889 0
-DEAL::6890 0
-DEAL::6891 0
-DEAL::6892 0
-DEAL::6893 0
-DEAL::6894 0
-DEAL::6895 0
-DEAL::6896 0
-DEAL::6897 0
-DEAL::6898 0
-DEAL::6899 0
-DEAL::6900 0
-DEAL::6901 0
-DEAL::6902 0
-DEAL::6903 0
-DEAL::6904 0
-DEAL::6905 0
-DEAL::6906 0
-DEAL::6907 0
-DEAL::6908 0
-DEAL::6909 0
-DEAL::6910 0
-DEAL::6911 0
-DEAL::6912 0
-DEAL::6913 0
-DEAL::6914 0
-DEAL::6915 0
-DEAL::6916 0
-DEAL::6917 0
-DEAL::6918 0
-DEAL::6919 0
-DEAL::6920 0
-DEAL::6921 0
-DEAL::6922 0
-DEAL::6923 0
-DEAL::6924 0
-DEAL::6925 0
-DEAL::6926 0
-DEAL::6927 0
-DEAL::6928 0
-DEAL::6929 0
-DEAL::6930 0
-DEAL::6931 0
-DEAL::6932 0
-DEAL::6933 0
-DEAL::6934 0
-DEAL::6935 0
-DEAL::6936 0
-DEAL::6937 0
-DEAL::6938 0
-DEAL::6939 0
-DEAL::6940 1
-DEAL::6941 1
-DEAL::6942 1
-DEAL::6943 1
-DEAL::6944 1
-DEAL::6945 1
-DEAL::6946 1
-DEAL::6947 1
-DEAL::6948 1
-DEAL::6949 1
-DEAL::6950 1
-DEAL::6951 1
-DEAL::6952 1
-DEAL::6953 1
-DEAL::6954 1
-DEAL::6955 1
-DEAL::6956 1
-DEAL::6957 1
-DEAL::6958 1
-DEAL::6959 1
-DEAL::6960 1
-DEAL::6961 1
-DEAL::6962 1
-DEAL::6963 1
-DEAL::6964 1
-DEAL::6965 1
-DEAL::6966 1
-DEAL::6967 1
-DEAL::6968 1
-DEAL::6969 1
-DEAL::6970 1
-DEAL::6971 1
-DEAL::6972 1
-DEAL::6973 1
-DEAL::6974 1
-DEAL::6975 1
-DEAL::6976 1
-DEAL::6977 1
-DEAL::6978 1
-DEAL::6979 1
-DEAL::6980 1
-DEAL::6981 1
-DEAL::6982 1
-DEAL::6983 1
-DEAL::6984 1
-DEAL::6985 1
-DEAL::6986 1
-DEAL::6987 1
-DEAL::6988 1
-DEAL::6989 1
-DEAL::6990 1
-DEAL::6991 1
-DEAL::6992 1
-DEAL::6993 1
-DEAL::6994 1
-DEAL::6995 1
-DEAL::6996 1
-DEAL::6997 1
-DEAL::6998 1
-DEAL::6999 1
-DEAL::7000 1
-DEAL::7001 1
-DEAL::7002 1
-DEAL::7003 1
-DEAL::7004 1
-DEAL::7005 1
-DEAL::7006 1
-DEAL::7007 1
-DEAL::7008 1
-DEAL::7009 1
-DEAL::7010 1
-DEAL::7011 1
-DEAL::7012 1
-DEAL::7013 1
-DEAL::7014 1
-DEAL::7015 1
-DEAL::7016 1
-DEAL::7017 1
-DEAL::7018 1
-DEAL::7019 1
-DEAL::7020 1
-DEAL::7021 1
-DEAL::7022 1
-DEAL::7023 1
-DEAL::7024 1
-DEAL::7025 1
-DEAL::7026 1
-DEAL::7027 1
-DEAL::7028 1
-DEAL::7029 1
-DEAL::7030 1
-DEAL::7031 1
-DEAL::7032 1
-DEAL::7033 1
-DEAL::7034 1
-DEAL::7035 1
-DEAL::7036 1
-DEAL::7037 1
-DEAL::7038 1
-DEAL::7039 1
-DEAL::7040 1
-DEAL::7041 1
-DEAL::7042 1
-DEAL::7043 1
-DEAL::7044 1
-DEAL::7045 1
-DEAL::7046 1
-DEAL::7047 1
-DEAL::7048 1
-DEAL::7049 1
-DEAL::7050 1
-DEAL::7051 1
-DEAL::7052 1
-DEAL::7053 1
-DEAL::7054 1
-DEAL::7055 1
-DEAL::7056 1
-DEAL::7057 1
-DEAL::7058 1
-DEAL::7059 1
-DEAL::7060 1
-DEAL::7061 1
-DEAL::7062 1
-DEAL::7063 1
-DEAL::7064 1
-DEAL::7065 1
-DEAL::7066 1
-DEAL::7067 1
-DEAL::7068 1
-DEAL::7069 1
-DEAL::7070 1
-DEAL::7071 1
-DEAL::7072 1
-DEAL::7073 1
-DEAL::7074 1
-DEAL::7075 1
-DEAL::7076 1
-DEAL::7077 1
-DEAL::7078 1
-DEAL::7079 1
-DEAL::7080 1
-DEAL::7081 1
-DEAL::7082 1
-DEAL::7083 1
-DEAL::7084 1
-DEAL::7085 1
-DEAL::7086 1
-DEAL::7087 1
-DEAL::7088 1
-DEAL::7089 1
-DEAL::7090 1
-DEAL::7091 1
-DEAL::7092 1
-DEAL::7093 1
-DEAL::7094 1
-DEAL::7095 1
-DEAL::7096 1
-DEAL::7097 1
-DEAL::7098 1
-DEAL::7099 1
-DEAL::7100 1
-DEAL::7101 1
-DEAL::7102 1
-DEAL::7103 1
-DEAL::7104 1
-DEAL::7105 1
-DEAL::7106 1
-DEAL::7107 1
-DEAL::7108 1
-DEAL::7109 1
-DEAL::7110 1
-DEAL::7111 1
-DEAL::7112 1
-DEAL::7113 1
-DEAL::7114 1
-DEAL::7115 1
-DEAL::7116 1
-DEAL::7117 1
-DEAL::7118 1
-DEAL::7119 1
-DEAL::7120 1
-DEAL::7121 1
-DEAL::7122 1
-DEAL::7123 1
-DEAL::7124 1
-DEAL::7125 1
-DEAL::7126 1
-DEAL::7127 1
-DEAL::7128 1
-DEAL::7129 1
-DEAL::7130 1
-DEAL::7131 1
-DEAL::7132 1
-DEAL::7133 1
-DEAL::7134 1
-DEAL::7135 1
-DEAL::7136 1
-DEAL::7137 1
-DEAL::7138 1
-DEAL::7139 1
-DEAL::7140 1
-DEAL::7141 1
-DEAL::7142 1
-DEAL::7143 1
-DEAL::7144 1
-DEAL::7145 1
-DEAL::7146 1
-DEAL::7147 1
-DEAL::7148 1
-DEAL::7149 1
-DEAL::7150 1
-DEAL::7151 1
-DEAL::7152 1
-DEAL::7153 1
-DEAL::7154 1
-DEAL::7155 1
-DEAL::7156 1
-DEAL::7157 1
-DEAL::7158 1
-DEAL::7159 1
-DEAL::7160 1
-DEAL::7161 1
-DEAL::7162 1
-DEAL::7163 1
-DEAL::7164 1
-DEAL::7165 1
-DEAL::7166 1
-DEAL::7167 1
-DEAL::7168 1
-DEAL::7169 1
-DEAL::7170 1
-DEAL::7171 1
-DEAL::7172 1
-DEAL::7173 1
-DEAL::7174 1
-DEAL::7175 1
-DEAL::7176 1
-DEAL::7177 1
-DEAL::7178 1
-DEAL::7179 1
-DEAL::7180 1
-DEAL::7181 1
-DEAL::7182 1
-DEAL::7183 1
-DEAL::7184 1
-DEAL::7185 1
-DEAL::7186 1
-DEAL::7187 1
-DEAL::7188 1
-DEAL::7189 1
-DEAL::7190 1
-DEAL::7191 1
-DEAL::7192 1
-DEAL::7193 1
-DEAL::7194 1
-DEAL::7195 1
-DEAL::7196 1
-DEAL::7197 1
-DEAL::7198 1
-DEAL::7199 1
-DEAL::7200 1
-DEAL::7201 1
-DEAL::7202 1
-DEAL::7203 1
-DEAL::7204 1
-DEAL::7205 1
-DEAL::7206 1
-DEAL::7207 1
-DEAL::7208 1
-DEAL::7209 1
-DEAL::7210 1
-DEAL::7211 1
+DEAL::5847 1
+DEAL::5848 1
+DEAL::5849 1
+DEAL::5850 1
+DEAL::5851 1
+DEAL::5852 1
+DEAL::5853 1
+DEAL::5854 1
+DEAL::5855 1
+DEAL::5856 1
+DEAL::5857 1
+DEAL::5858 1
+DEAL::5859 1
+DEAL::5860 1
+DEAL::5861 1
+DEAL::5862 1
+DEAL::5863 1
+DEAL::5864 1
+DEAL::5865 1
+DEAL::5866 1
+DEAL::5867 1
+DEAL::5868 1
+DEAL::5869 1
+DEAL::5870 1
+DEAL::5871 1
+DEAL::5872 1
+DEAL::5873 1
+DEAL::5874 1
+DEAL::5875 1
+DEAL::5876 1
+DEAL::5877 1
+DEAL::5878 1
+DEAL::5879 1
+DEAL::5880 1
+DEAL::5881 1
+DEAL::5882 1
+DEAL::5883 1
+DEAL::5884 1
+DEAL::5885 1
+DEAL::5886 1
+DEAL::5887 1
+DEAL::5888 1
+DEAL::5889 1
+DEAL::5890 1
+DEAL::5891 1
+DEAL::5892 1
+DEAL::5893 1
+DEAL::5894 1
+DEAL::5895 1
+DEAL::5896 1
+DEAL::5897 1
+DEAL::5898 1
+DEAL::5899 1
+DEAL::5900 1
+DEAL::5901 1
+DEAL::5902 1
+DEAL::5903 1
+DEAL::5904 1
+DEAL::5905 1
+DEAL::5906 1
+DEAL::5907 1
+DEAL::5908 1
+DEAL::5909 1
+DEAL::5910 1
+DEAL::5911 1
+DEAL::5912 1
+DEAL::5913 1
+DEAL::5914 0
+DEAL::5915 1
+DEAL::5916 1
+DEAL::5917 1
+DEAL::5918 1
+DEAL::5919 1
+DEAL::5920 1
+DEAL::5921 1
+DEAL::5922 1
+DEAL::5923 1
+DEAL::5924 1
+DEAL::5925 1
+DEAL::5926 1
+DEAL::5927 1
+DEAL::5928 1
+DEAL::5929 1
+DEAL::5930 1
+DEAL::5931 1
+DEAL::5932 1
+DEAL::5933 1
+DEAL::5934 1
+DEAL::5935 1
+DEAL::5936 1
+DEAL::5937 1
+DEAL::5938 1
+DEAL::5939 1
+DEAL::5940 1
+DEAL::5941 1
+DEAL::5942 1
+DEAL::5943 1
+DEAL::5944 1
+DEAL::5945 1
+DEAL::5946 1
+DEAL::5947 1
+DEAL::5948 1
+DEAL::5949 1
+DEAL::5950 1
+DEAL::5951 1
+DEAL::5952 1
+DEAL::5953 1
+DEAL::5954 1
+DEAL::5955 1
+DEAL::5956 1
+DEAL::5957 1
+DEAL::5958 1
+DEAL::5959 1
+DEAL::5960 1
+DEAL::5961 1
+DEAL::5962 1
+DEAL::5963 1
+DEAL::5964 1
+DEAL::5965 1
+DEAL::5966 0
+DEAL::5967 1
+DEAL::5968 1
+DEAL::5969 1
+DEAL::5970 1
+DEAL::5971 0
+DEAL::5972 0
+DEAL::5973 0
+DEAL::5974 0
+DEAL::5975 0
+DEAL::5976 0
+DEAL::5977 0
+DEAL::5978 0
+DEAL::5979 0
+DEAL::5980 0
+DEAL::5981 0
+DEAL::5982 0
+DEAL::5983 0
+DEAL::5984 0
+DEAL::5985 0
+DEAL::5986 0
+DEAL::5987 0
+DEAL::5988 0
+DEAL::5989 0
+DEAL::5990 0
+DEAL::5991 0
+DEAL::5992 0
+DEAL::5993 0
+DEAL::5994 0
+DEAL::5995 0
+DEAL::5996 0
+DEAL::5997 0
+DEAL::5998 0
+DEAL::5999 0
+DEAL::6000 0
+DEAL::6001 0
+DEAL::6002 0
+DEAL::6003 0
+DEAL::6004 0
+DEAL::6005 0
+DEAL::6006 0
+DEAL::6007 0
+DEAL::6008 0
+DEAL::6009 0
+DEAL::6010 0
+DEAL::6011 0
+DEAL::6012 0
+DEAL::6013 0
+DEAL::6014 0
+DEAL::6015 0
+DEAL::6016 0
+DEAL::6017 0
+DEAL::6018 0
+DEAL::6019 0
+DEAL::6020 0
+DEAL::6021 0
+DEAL::6022 0
+DEAL::6023 0
+DEAL::6024 0
+DEAL::6025 0
+DEAL::6026 0
+DEAL::6027 0
+DEAL::6028 1
+DEAL::6029 0
+DEAL::6030 1
+DEAL::6031 0
+DEAL::6032 1
+DEAL::6033 1
+DEAL::6034 0
+DEAL::6035 0
+DEAL::6036 0
+DEAL::6037 0
+DEAL::6038 0
+DEAL::6039 0
+DEAL::6040 0
+DEAL::6041 1
+DEAL::6042 0
+DEAL::6043 0
+DEAL::6044 0
+DEAL::6045 0
+DEAL::6046 0
+DEAL::6047 0
+DEAL::6048 0
+DEAL::6049 0
+DEAL::6050 0
+DEAL::6051 0
+DEAL::6052 0
+DEAL::6053 0
+DEAL::6054 1
+DEAL::6055 0
+DEAL::6056 0
+DEAL::6057 0
+DEAL::6058 1
+DEAL::6059 0
+DEAL::6060 0
+DEAL::6061 0
+DEAL::6062 0
+DEAL::6063 0
+DEAL::6064 1
+DEAL::6065 1
+DEAL::6066 1
+DEAL::6067 1
+DEAL::6068 1
+DEAL::6069 1
+DEAL::6070 1
+DEAL::6071 1
+DEAL::6072 1
+DEAL::6073 0
+DEAL::6074 1
+DEAL::6075 0
+DEAL::6076 1
+DEAL::6077 0
+DEAL::6078 1
+DEAL::6079 1
+DEAL::6080 1
+DEAL::6081 1
+DEAL::6082 0
+DEAL::6083 0
+DEAL::6084 0
+DEAL::6085 0
+DEAL::6086 1
+DEAL::6087 0
+DEAL::6088 0
+DEAL::6089 0
+DEAL::6090 0
+DEAL::6091 0
+DEAL::6092 0
+DEAL::6093 0
+DEAL::6094 1
+DEAL::6095 1
+DEAL::6096 1
+DEAL::6097 1
+DEAL::6098 1
+DEAL::6099 1
+DEAL::6100 0
+DEAL::6101 0
+DEAL::6102 0
+DEAL::6103 0
+DEAL::6104 0
+DEAL::6105 0
+DEAL::6106 1
+DEAL::6107 1
+DEAL::6108 1
+DEAL::6109 1
+DEAL::6110 1
+DEAL::6111 1
+DEAL::6112 1
+DEAL::6113 1
+DEAL::6114 1
+DEAL::6115 1
+DEAL::6116 1
+DEAL::6117 1
+DEAL::6118 1
+DEAL::6119 1
+DEAL::6120 1
+DEAL::6121 1
+DEAL::6122 1
+DEAL::6123 0
+DEAL::6124 1
+DEAL::6125 1
+DEAL::6126 1
+DEAL::6127 0
+DEAL::6128 1
+DEAL::6129 0
+DEAL::6130 1
+DEAL::6131 1
+DEAL::6132 1
+DEAL::6133 1
+DEAL::6134 1
+DEAL::6135 1
+DEAL::6136 1
+DEAL::6137 1
+DEAL::6138 1
+DEAL::6139 1
+DEAL::6140 1
+DEAL::6141 0
+DEAL::6142 1
+DEAL::6143 1
+DEAL::6144 0
+DEAL::6145 0
+DEAL::6146 0
+DEAL::6147 0
+DEAL::6148 0
+DEAL::6149 0
+DEAL::6150 0
+DEAL::6151 0
+DEAL::6152 0
+DEAL::6153 0
+DEAL::6154 0
+DEAL::6155 0
+DEAL::6156 0
+DEAL::6157 0
+DEAL::6158 0
+DEAL::6159 0
+DEAL::6160 0
+DEAL::6161 0
+DEAL::6162 0
+DEAL::6163 0
+DEAL::6164 0
+DEAL::6165 0
+DEAL::6166 0
+DEAL::6167 0
+DEAL::6168 0
+DEAL::6169 0
+DEAL::6170 0
+DEAL::6171 0
+DEAL::6172 0
+DEAL::6173 0
+DEAL::6174 0
+DEAL::6175 0
+DEAL::6176 0
+DEAL::6177 0
+DEAL::6178 0
+DEAL::6179 0
+DEAL::6180 0
+DEAL::6181 0
+DEAL::6182 0
+DEAL::6183 0
+DEAL::6184 0
+DEAL::6185 0
+DEAL::6186 0
+DEAL::6187 0
+DEAL::6188 0
+DEAL::6189 0
+DEAL::6190 0
+DEAL::6191 0
+DEAL::6192 0
+DEAL::6193 0
+DEAL::6194 0
+DEAL::6195 0
+DEAL::6196 0
+DEAL::6197 0
+DEAL::6198 0
+DEAL::6199 0
+DEAL::6200 0
+DEAL::6201 0
+DEAL::6202 0
+DEAL::6203 0
+DEAL::6204 0
+DEAL::6205 0
+DEAL::6206 0
+DEAL::6207 0
+DEAL::6208 0
+DEAL::6209 0
+DEAL::6210 0
+DEAL::6211 0
+DEAL::6212 0
+DEAL::6213 0
+DEAL::6214 0
+DEAL::6215 0
+DEAL::6216 0
+DEAL::6217 0
+DEAL::6218 0
+DEAL::6219 0
+DEAL::6220 0
+DEAL::6221 0
+DEAL::6222 0
+DEAL::6223 0
+DEAL::6224 0
+DEAL::6225 0
+DEAL::6226 0
+DEAL::6227 0
+DEAL::6228 0
+DEAL::6229 0
+DEAL::6230 0
+DEAL::6231 0
+DEAL::6232 0
+DEAL::6233 0
+DEAL::6234 0
+DEAL::6235 0
+DEAL::6236 0
+DEAL::6237 0
+DEAL::6238 0
+DEAL::6239 0
+DEAL::6240 0
+DEAL::6241 0
+DEAL::6242 0
+DEAL::6243 0
+DEAL::6244 0
+DEAL::6245 0
+DEAL::6246 0
+DEAL::6247 0
+DEAL::6248 0
+DEAL::6249 0
+DEAL::6250 0
+DEAL::6251 0
+DEAL::6252 0
+DEAL::6253 0
+DEAL::6254 0
+DEAL::6255 0
+DEAL::6256 0
+DEAL::6257 0
+DEAL::6258 0
+DEAL::6259 0
+DEAL::6260 0
+DEAL::6261 0
+DEAL::6262 0
+DEAL::6263 0
+DEAL::6264 0
+DEAL::6265 0
+DEAL::6266 0
+DEAL::6267 0
+DEAL::6268 0
+DEAL::6269 0
+DEAL::6270 0
+DEAL::6271 0
+DEAL::6272 0
+DEAL::6273 0
+DEAL::6274 0
+DEAL::6275 0
+DEAL::6276 0
+DEAL::6277 0
+DEAL::6278 0
+DEAL::6279 0
+DEAL::6280 0
+DEAL::6281 0
+DEAL::6282 0
+DEAL::6283 0
+DEAL::6284 0
+DEAL::6285 0
+DEAL::6286 0
+DEAL::6287 0
+DEAL::6288 0
+DEAL::6289 0
+DEAL::6290 0
+DEAL::6291 0
+DEAL::6292 0
+DEAL::6293 0
+DEAL::6294 0
+DEAL::6295 0
+DEAL::6296 0
+DEAL::6297 0
+DEAL::6298 0
+DEAL::6299 0
+DEAL::6300 0
+DEAL::6301 0
+DEAL::6302 0
+DEAL::6303 0
+DEAL::6304 0
+DEAL::6305 0
+DEAL::6306 0
+DEAL::6307 0
+DEAL::6308 0
+DEAL::6309 0
+DEAL::6310 0
+DEAL::6311 0
+DEAL::6312 0
+DEAL::6313 0
+DEAL::6314 0
+DEAL::6315 0
+DEAL::6316 0
+DEAL::6317 0
+DEAL::6318 0
+DEAL::6319 0
+DEAL::6320 0
+DEAL::6321 0
+DEAL::6322 0
+DEAL::6323 0
+DEAL::6324 0
+DEAL::6325 0
+DEAL::6326 0
+DEAL::6327 0
+DEAL::6328 0
+DEAL::6329 0
+DEAL::6330 0
+DEAL::6331 0
+DEAL::6332 0
+DEAL::6333 0
+DEAL::6334 0
+DEAL::6335 0
+DEAL::6336 0
+DEAL::6337 0
+DEAL::6338 0
+DEAL::6339 0
+DEAL::6340 0
+DEAL::6341 0
+DEAL::6342 0
+DEAL::6343 0
+DEAL::6344 0
+DEAL::6345 0
+DEAL::6346 0
+DEAL::6347 0
+DEAL::6348 0
+DEAL::6349 0
+DEAL::6350 0
+DEAL::6351 0
+DEAL::6352 0
+DEAL::6353 0
+DEAL::6354 0
+DEAL::6355 0
+DEAL::6356 0
+DEAL::6357 0
+DEAL::6358 0
+DEAL::6359 0
+DEAL::6360 0
+DEAL::6361 0
+DEAL::6362 0
+DEAL::6363 0
+DEAL::6364 0
+DEAL::6365 0
+DEAL::6366 0
+DEAL::6367 0
+DEAL::6368 0
+DEAL::6369 0
+DEAL::6370 0
+DEAL::6371 0
+DEAL::6372 0
+DEAL::6373 0
+DEAL::6374 0
+DEAL::6375 0
+DEAL::6376 0
+DEAL::6377 0
+DEAL::6378 0
+DEAL::6379 0
+DEAL::6380 0
+DEAL::6381 0
+DEAL::6382 0
+DEAL::6383 0
+DEAL::6384 0
+DEAL::6385 0
+DEAL::6386 0
+DEAL::6387 0
+DEAL::6388 0
+DEAL::6389 0
+DEAL::6390 0
+DEAL::6391 0
+DEAL::6392 0
+DEAL::6393 0
+DEAL::6394 0
+DEAL::6395 0
+DEAL::6396 0
+DEAL::6397 0
+DEAL::6398 0
+DEAL::6399 0
+DEAL::6400 0
+DEAL::6401 0
+DEAL::6402 0
+DEAL::6403 0
+DEAL::6404 0
+DEAL::6405 0
+DEAL::6406 0
+DEAL::6407 0
+DEAL::6408 0
+DEAL::6409 0
+DEAL::6410 0
+DEAL::6411 0
+DEAL::6412 0
+DEAL::6413 0
+DEAL::6414 0
+DEAL::6415 0
+DEAL::6416 0
+DEAL::6417 0
+DEAL::6418 0
+DEAL::6419 0
+DEAL::6420 0
+DEAL::6421 0
+DEAL::6422 0
+DEAL::6423 0
+DEAL::6424 0
+DEAL::6425 0
+DEAL::6426 0
+DEAL::6427 0
+DEAL::6428 0
+DEAL::6429 0
+DEAL::6430 0
+DEAL::6431 0
+DEAL::6432 0
+DEAL::6433 0
+DEAL::6434 0
+DEAL::6435 0
+DEAL::6436 0
+DEAL::6437 0
+DEAL::6438 0
+DEAL::6439 0
+DEAL::6440 0
+DEAL::6441 0
+DEAL::6442 0
+DEAL::6443 0
+DEAL::6444 0
+DEAL::6445 0
+DEAL::6446 0
+DEAL::6447 0
+DEAL::6448 0
+DEAL::6449 0
+DEAL::6450 0
+DEAL::6451 0
+DEAL::6452 0
+DEAL::6453 0
+DEAL::6454 0
+DEAL::6455 0
+DEAL::6456 0
+DEAL::6457 0
+DEAL::6458 0
+DEAL::6459 0
+DEAL::6460 0
+DEAL::6461 0
+DEAL::6462 0
+DEAL::6463 0
+DEAL::6464 0
+DEAL::6465 0
+DEAL::6466 0
+DEAL::6467 0
+DEAL::6468 0
+DEAL::6469 0
+DEAL::6470 0
+DEAL::6471 0
+DEAL::6472 0
+DEAL::6473 0
+DEAL::6474 0
+DEAL::6475 0
+DEAL::6476 0
+DEAL::6477 0
+DEAL::6478 0
+DEAL::6479 0
+DEAL::6480 0
+DEAL::6481 0
+DEAL::6482 0
+DEAL::6483 0
+DEAL::6484 0
+DEAL::6485 0
+DEAL::6486 0
+DEAL::6487 0
+DEAL::6488 0
+DEAL::6489 0
+DEAL::6490 0
+DEAL::6491 0
+DEAL::6492 0
+DEAL::6493 0
+DEAL::6494 0
+DEAL::6495 0
+DEAL::6496 0
+DEAL::6497 0
+DEAL::6498 0
+DEAL::6499 0
+DEAL::6500 0
+DEAL::6501 0
+DEAL::6502 0
+DEAL::6503 0
+DEAL::6504 0
+DEAL::6505 0
+DEAL::6506 0
+DEAL::6507 0
+DEAL::6508 0
+DEAL::6509 0
+DEAL::6510 0
+DEAL::6511 0
+DEAL::6512 0
+DEAL::6513 0
+DEAL::6514 0
+DEAL::6515 0
+DEAL::6516 0
+DEAL::6517 0
+DEAL::6518 0
+DEAL::6519 0
+DEAL::6520 0
+DEAL::6521 0
+DEAL::6522 0
+DEAL::6523 0
+DEAL::6524 0
+DEAL::6525 0
+DEAL::6526 0
+DEAL::6527 0
+DEAL::6528 0
+DEAL::6529 0
+DEAL::6530 0
+DEAL::6531 0
+DEAL::6532 0
+DEAL::6533 0
+DEAL::6534 0
+DEAL::6535 0
+DEAL::6536 0
+DEAL::6537 0
+DEAL::6538 0
+DEAL::6539 0
+DEAL::6540 0
+DEAL::6541 0
+DEAL::6542 0
+DEAL::6543 0
+DEAL::6544 0
+DEAL::6545 0
+DEAL::6546 0
+DEAL::6547 0
+DEAL::6548 0
+DEAL::6549 0
+DEAL::6550 0
+DEAL::6551 0
+DEAL::6552 0
+DEAL::6553 0
+DEAL::6554 0
+DEAL::6555 0
+DEAL::6556 0
+DEAL::6557 0
+DEAL::6558 0
+DEAL::6559 0
+DEAL::6560 0
+DEAL::6561 0
+DEAL::6562 0
+DEAL::6563 0
+DEAL::6564 0
+DEAL::6565 0
+DEAL::6566 0
+DEAL::6567 0
+DEAL::6568 0
+DEAL::6569 0
+DEAL::6570 0
+DEAL::6571 0
+DEAL::6572 0
+DEAL::6573 0
+DEAL::6574 0
+DEAL::6575 0
+DEAL::6576 0
+DEAL::6577 0
+DEAL::6578 0
+DEAL::6579 0
+DEAL::6580 0
+DEAL::6581 0
+DEAL::6582 0
+DEAL::6583 0
+DEAL::6584 0
+DEAL::6585 0
+DEAL::6586 0
+DEAL::6587 0
+DEAL::6588 0
+DEAL::6589 0
+DEAL::6590 0
+DEAL::6591 0
+DEAL::6592 0
+DEAL::6593 0
+DEAL::6594 0
+DEAL::6595 0
+DEAL::6596 0
+DEAL::6597 0
+DEAL::6598 0
+DEAL::6599 0
+DEAL::6600 0
+DEAL::6601 0
+DEAL::6602 0
+DEAL::6603 0
+DEAL::6604 0
+DEAL::6605 0
+DEAL::6606 0
+DEAL::6607 0
+DEAL::6608 0
+DEAL::6609 0
+DEAL::6610 3
+DEAL::6611 3
+DEAL::6612 3
+DEAL::6613 3
+DEAL::6614 3
+DEAL::6615 3
+DEAL::6616 3
+DEAL::6617 3
+DEAL::6618 3
+DEAL::6619 3
+DEAL::6620 3
+DEAL::6621 3
+DEAL::6622 3
+DEAL::6623 3
+DEAL::6624 3
+DEAL::6625 3
+DEAL::6626 3
+DEAL::6627 3
+DEAL::6628 3
+DEAL::6629 3
+DEAL::6630 3
+DEAL::6631 3
+DEAL::6632 3
+DEAL::6633 3
+DEAL::6634 3
+DEAL::6635 3
+DEAL::6636 3
+DEAL::6637 3
+DEAL::6638 3
+DEAL::6639 3
+DEAL::6640 3
+DEAL::6641 3
+DEAL::6642 3
+DEAL::6643 3
+DEAL::6644 3
+DEAL::6645 3
+DEAL::6646 3
+DEAL::6647 3
+DEAL::6648 3
+DEAL::6649 3
+DEAL::6650 3
+DEAL::6651 3
+DEAL::6652 3
+DEAL::6653 3
+DEAL::6654 3
+DEAL::6655 3
+DEAL::6656 3
+DEAL::6657 3
+DEAL::6658 3
+DEAL::6659 3
+DEAL::6660 3
+DEAL::6661 3
+DEAL::6662 3
+DEAL::6663 3
+DEAL::6664 3
+DEAL::6665 3
+DEAL::6666 3
+DEAL::6667 3
+DEAL::6668 3
+DEAL::6669 3
+DEAL::6670 3
+DEAL::6671 3
+DEAL::6672 3
+DEAL::6673 3
+DEAL::6674 3
+DEAL::6675 3
+DEAL::6676 3
+DEAL::6677 3
+DEAL::6678 3
+DEAL::6679 3
+DEAL::6680 3
+DEAL::6681 3
+DEAL::6682 3
+DEAL::6683 3
+DEAL::6684 3
+DEAL::6685 3
+DEAL::6686 3
+DEAL::6687 3
+DEAL::6688 3
+DEAL::6689 3
+DEAL::6690 3
+DEAL::6691 3
+DEAL::6692 3
+DEAL::6693 3
+DEAL::6694 3
+DEAL::6695 3
+DEAL::6696 3
+DEAL::6697 3
+DEAL::6698 3
+DEAL::6699 3
+DEAL::6700 3
+DEAL::6701 3
+DEAL::6702 3
+DEAL::6703 3
+DEAL::6704 3
+DEAL::6705 3
+DEAL::6706 3
+DEAL::6707 3
+DEAL::6708 3
+DEAL::6709 3
+DEAL::6710 3
+DEAL::6711 3
+DEAL::6712 3
+DEAL::6713 3
+DEAL::6714 3
+DEAL::6715 3
+DEAL::6716 3
+DEAL::6717 3
+DEAL::6718 3
+DEAL::6719 3
+DEAL::6720 3
+DEAL::6721 3
+DEAL::6722 3
+DEAL::6723 3
+DEAL::6724 3
+DEAL::6725 3
+DEAL::6726 3
+DEAL::6727 3
+DEAL::6728 3
+DEAL::6729 3
+DEAL::6730 3
+DEAL::6731 3
+DEAL::6732 3
+DEAL::6733 3
+DEAL::6734 3
+DEAL::6735 3
+DEAL::6736 3
+DEAL::6737 3
+DEAL::6738 3
+DEAL::6739 3
+DEAL::6740 3
+DEAL::6741 3
+DEAL::6742 3
+DEAL::6743 3
+DEAL::6744 3
+DEAL::6745 3
+DEAL::6746 3
+DEAL::6747 3
+DEAL::6748 3
+DEAL::6749 3
+DEAL::6750 3
+DEAL::6751 3
+DEAL::6752 3
+DEAL::6753 3
+DEAL::6754 3
+DEAL::6755 3
+DEAL::6756 3
+DEAL::6757 3
+DEAL::6758 3
+DEAL::6759 3
+DEAL::6760 3
+DEAL::6761 3
+DEAL::6762 3
+DEAL::6763 3
+DEAL::6764 3
+DEAL::6765 3
+DEAL::6766 3
+DEAL::6767 3
+DEAL::6768 3
+DEAL::6769 3
+DEAL::6770 3
+DEAL::6771 3
+DEAL::6772 3
+DEAL::6773 3
+DEAL::6774 3
+DEAL::6775 3
+DEAL::6776 3
+DEAL::6777 3
+DEAL::6778 3
+DEAL::6779 3
+DEAL::6780 3
+DEAL::6781 3
+DEAL::6782 3
+DEAL::6783 3
+DEAL::6784 3
+DEAL::6785 3
+DEAL::6786 3
+DEAL::6787 3
+DEAL::6788 3
+DEAL::6789 3
+DEAL::6790 3
+DEAL::6791 3
+DEAL::6792 3
+DEAL::6793 3
+DEAL::6794 3
+DEAL::6795 3
+DEAL::6796 3
+DEAL::6797 3
+DEAL::6798 3
+DEAL::6799 3
+DEAL::6800 3
+DEAL::6801 3
+DEAL::6802 3
+DEAL::6803 3
+DEAL::6804 3
+DEAL::6805 3
+DEAL::6806 3
+DEAL::6807 3
+DEAL::6808 3
+DEAL::6809 3
+DEAL::6810 3
+DEAL::6811 3
+DEAL::6812 3
+DEAL::6813 3
+DEAL::6814 3
+DEAL::6815 3
+DEAL::6816 3
+DEAL::6817 3
+DEAL::6818 3
+DEAL::6819 3
+DEAL::6820 3
+DEAL::6821 3
+DEAL::6822 3
+DEAL::6823 4
+DEAL::6824 3
+DEAL::6825 3
+DEAL::6826 4
+DEAL::6827 4
+DEAL::6828 3
+DEAL::6829 3
+DEAL::6830 4
+DEAL::6831 4
+DEAL::6832 4
+DEAL::6833 4
+DEAL::6834 4
+DEAL::6835 4
+DEAL::6836 4
+DEAL::6837 4
+DEAL::6838 4
+DEAL::6839 4
+DEAL::6840 4
+DEAL::6841 3
+DEAL::6842 4
+DEAL::6843 4
+DEAL::6844 4
+DEAL::6845 4
+DEAL::6846 4
+DEAL::6847 4
+DEAL::6848 4
+DEAL::6849 4
+DEAL::6850 4
+DEAL::6851 4
+DEAL::6852 4
+DEAL::6853 4
+DEAL::6854 3
+DEAL::6855 4
+DEAL::6856 4
+DEAL::6857 3
+DEAL::6858 4
+DEAL::6859 3
+DEAL::6860 4
+DEAL::6861 4
+DEAL::6862 4
+DEAL::6863 4
+DEAL::6864 4
+DEAL::6865 4
+DEAL::6866 3
+DEAL::6867 3
+DEAL::6868 3
+DEAL::6869 3
+DEAL::6870 3
+DEAL::6871 3
+DEAL::6872 3
+DEAL::6873 3
+DEAL::6874 3
+DEAL::6875 3
+DEAL::6876 3
+DEAL::6877 3
+DEAL::6878 3
+DEAL::6879 3
+DEAL::6880 3
+DEAL::6881 3
+DEAL::6882 3
+DEAL::6883 3
+DEAL::6884 3
+DEAL::6885 3
+DEAL::6886 3
+DEAL::6887 3
+DEAL::6888 3
+DEAL::6889 3
+DEAL::6890 3
+DEAL::6891 3
+DEAL::6892 3
+DEAL::6893 3
+DEAL::6894 4
+DEAL::6895 3
+DEAL::6896 3
+DEAL::6897 4
+DEAL::6898 4
+DEAL::6899 4
+DEAL::6900 4
+DEAL::6901 4
+DEAL::6902 4
+DEAL::6903 3
+DEAL::6904 3
+DEAL::6905 4
+DEAL::6906 4
+DEAL::6907 4
+DEAL::6908 3
+DEAL::6909 4
+DEAL::6910 4
+DEAL::6911 4
+DEAL::6912 4
+DEAL::6913 4
+DEAL::6914 4
+DEAL::6915 4
+DEAL::6916 4
+DEAL::6917 4
+DEAL::6918 4
+DEAL::6919 3
+DEAL::6920 4
+DEAL::6921 4
+DEAL::6922 3
+DEAL::6923 3
+DEAL::6924 3
+DEAL::6925 3
+DEAL::6926 3
+DEAL::6927 3
+DEAL::6928 3
+DEAL::6929 3
+DEAL::6930 3
+DEAL::6931 3
+DEAL::6932 3
+DEAL::6933 3
+DEAL::6934 3
+DEAL::6935 3
+DEAL::6936 3
+DEAL::6937 3
+DEAL::6938 3
+DEAL::6939 3
+DEAL::6940 3
+DEAL::6941 3
+DEAL::6942 3
+DEAL::6943 3
+DEAL::6944 3
+DEAL::6945 3
+DEAL::6946 3
+DEAL::6947 3
+DEAL::6948 3
+DEAL::6949 3
+DEAL::6950 3
+DEAL::6951 3
+DEAL::6952 3
+DEAL::6953 3
+DEAL::6954 3
+DEAL::6955 3
+DEAL::6956 3
+DEAL::6957 3
+DEAL::6958 3
+DEAL::6959 3
+DEAL::6960 3
+DEAL::6961 3
+DEAL::6962 3
+DEAL::6963 3
+DEAL::6964 3
+DEAL::6965 3
+DEAL::6966 3
+DEAL::6967 3
+DEAL::6968 3
+DEAL::6969 3
+DEAL::6970 3
+DEAL::6971 3
+DEAL::6972 3
+DEAL::6973 3
+DEAL::6974 3
+DEAL::6975 3
+DEAL::6976 3
+DEAL::6977 3
+DEAL::6978 3
+DEAL::6979 3
+DEAL::6980 3
+DEAL::6981 3
+DEAL::6982 3
+DEAL::6983 3
+DEAL::6984 3
+DEAL::6985 3
+DEAL::6986 3
+DEAL::6987 3
+DEAL::6988 3
+DEAL::6989 3
+DEAL::6990 3
+DEAL::6991 3
+DEAL::6992 3
+DEAL::6993 3
+DEAL::6994 3
+DEAL::6995 3
+DEAL::6996 3
+DEAL::6997 3
+DEAL::6998 3
+DEAL::6999 3
+DEAL::7000 3
+DEAL::7001 3
+DEAL::7002 3
+DEAL::7003 3
+DEAL::7004 3
+DEAL::7005 3
+DEAL::7006 3
+DEAL::7007 3
+DEAL::7008 3
+DEAL::7009 3
+DEAL::7010 3
+DEAL::7011 3
+DEAL::7012 3
+DEAL::7013 3
+DEAL::7014 3
+DEAL::7015 3
+DEAL::7016 3
+DEAL::7017 3
+DEAL::7018 3
+DEAL::7019 3
+DEAL::7020 3
+DEAL::7021 3
+DEAL::7022 3
+DEAL::7023 3
+DEAL::7024 3
+DEAL::7025 3
+DEAL::7026 3
+DEAL::7027 3
+DEAL::7028 3
+DEAL::7029 3
+DEAL::7030 3
+DEAL::7031 3
+DEAL::7032 3
+DEAL::7033 3
+DEAL::7034 3
+DEAL::7035 3
+DEAL::7036 3
+DEAL::7037 3
+DEAL::7038 3
+DEAL::7039 3
+DEAL::7040 3
+DEAL::7041 3
+DEAL::7042 3
+DEAL::7043 3
+DEAL::7044 3
+DEAL::7045 3
+DEAL::7046 3
+DEAL::7047 3
+DEAL::7048 3
+DEAL::7049 3
+DEAL::7050 3
+DEAL::7051 3
+DEAL::7052 3
+DEAL::7053 3
+DEAL::7054 3
+DEAL::7055 3
+DEAL::7056 3
+DEAL::7057 3
+DEAL::7058 3
+DEAL::7059 3
+DEAL::7060 3
+DEAL::7061 3
+DEAL::7062 3
+DEAL::7063 3
+DEAL::7064 3
+DEAL::7065 3
+DEAL::7066 3
+DEAL::7067 3
+DEAL::7068 3
+DEAL::7069 3
+DEAL::7070 3
+DEAL::7071 3
+DEAL::7072 3
+DEAL::7073 3
+DEAL::7074 3
+DEAL::7075 3
+DEAL::7076 3
+DEAL::7077 3
+DEAL::7078 3
+DEAL::7079 3
+DEAL::7080 3
+DEAL::7081 3
+DEAL::7082 3
+DEAL::7083 3
+DEAL::7084 3
+DEAL::7085 3
+DEAL::7086 3
+DEAL::7087 3
+DEAL::7088 3
+DEAL::7089 3
+DEAL::7090 3
+DEAL::7091 3
+DEAL::7092 3
+DEAL::7093 3
+DEAL::7094 3
+DEAL::7095 3
+DEAL::7096 3
+DEAL::7097 3
+DEAL::7098 3
+DEAL::7099 3
+DEAL::7100 3
+DEAL::7101 3
+DEAL::7102 3
+DEAL::7103 3
+DEAL::7104 3
+DEAL::7105 3
+DEAL::7106 3
+DEAL::7107 3
+DEAL::7108 3
+DEAL::7109 3
+DEAL::7110 3
+DEAL::7111 3
+DEAL::7112 3
+DEAL::7113 3
+DEAL::7114 3
+DEAL::7115 3
+DEAL::7116 3
+DEAL::7117 3
+DEAL::7118 3
+DEAL::7119 3
+DEAL::7120 3
+DEAL::7121 3
+DEAL::7122 3
+DEAL::7123 3
+DEAL::7124 3
+DEAL::7125 3
+DEAL::7126 3
+DEAL::7127 3
+DEAL::7128 3
+DEAL::7129 3
+DEAL::7130 3
+DEAL::7131 3
+DEAL::7132 3
+DEAL::7133 3
+DEAL::7134 3
+DEAL::7135 3
+DEAL::7136 3
+DEAL::7137 3
+DEAL::7138 3
+DEAL::7139 3
+DEAL::7140 3
+DEAL::7141 3
+DEAL::7142 3
+DEAL::7143 3
+DEAL::7144 3
+DEAL::7145 3
+DEAL::7146 3
+DEAL::7147 3
+DEAL::7148 3
+DEAL::7149 3
+DEAL::7150 3
+DEAL::7151 3
+DEAL::7152 3
+DEAL::7153 3
+DEAL::7154 3
+DEAL::7155 3
+DEAL::7156 3
+DEAL::7157 3
+DEAL::7158 3
+DEAL::7159 3
+DEAL::7160 3
+DEAL::7161 3
+DEAL::7162 3
+DEAL::7163 3
+DEAL::7164 3
+DEAL::7165 3
+DEAL::7166 3
+DEAL::7167 3
+DEAL::7168 3
+DEAL::7169 3
+DEAL::7170 3
+DEAL::7171 3
+DEAL::7172 3
+DEAL::7173 3
+DEAL::7174 3
+DEAL::7175 3
+DEAL::7176 3
+DEAL::7177 3
+DEAL::7178 3
+DEAL::7179 3
+DEAL::7180 3
+DEAL::7181 3
+DEAL::7182 3
+DEAL::7183 3
+DEAL::7184 3
+DEAL::7185 3
+DEAL::7186 3
+DEAL::7187 3
+DEAL::7188 3
+DEAL::7189 3
+DEAL::7190 3
+DEAL::7191 3
+DEAL::7192 3
+DEAL::7193 3
+DEAL::7194 3
+DEAL::7195 3
+DEAL::7196 3
+DEAL::7197 3
+DEAL::7198 3
+DEAL::7199 3
+DEAL::7200 3
+DEAL::7201 3
+DEAL::7202 3
+DEAL::7203 3
+DEAL::7204 3
+DEAL::7205 3
+DEAL::7206 3
+DEAL::7207 3
+DEAL::7208 3
+DEAL::7209 3
+DEAL::7210 3
+DEAL::7211 3
 DEAL::7212 4
 DEAL::7213 4
 DEAL::7214 4
@@ -15650,1263 +15650,1263 @@ DEAL::7325 4
 DEAL::7326 4
 DEAL::7327 4
 DEAL::7328 4
-DEAL::7329 2
-DEAL::7330 2
-DEAL::7331 2
-DEAL::7332 2
-DEAL::7333 2
-DEAL::7334 2
-DEAL::7335 2
-DEAL::7336 2
-DEAL::7337 2
-DEAL::7338 2
-DEAL::7339 2
-DEAL::7340 2
-DEAL::7341 2
-DEAL::7342 2
-DEAL::7343 2
-DEAL::7344 2
-DEAL::7345 2
-DEAL::7346 2
-DEAL::7347 2
-DEAL::7348 2
-DEAL::7349 2
-DEAL::7350 2
-DEAL::7351 2
-DEAL::7352 2
-DEAL::7353 2
-DEAL::7354 2
-DEAL::7355 2
-DEAL::7356 2
-DEAL::7357 2
-DEAL::7358 2
-DEAL::7359 2
-DEAL::7360 2
-DEAL::7361 2
-DEAL::7362 2
-DEAL::7363 2
-DEAL::7364 2
-DEAL::7365 2
-DEAL::7366 2
-DEAL::7367 2
-DEAL::7368 2
-DEAL::7369 2
-DEAL::7370 2
-DEAL::7371 2
-DEAL::7372 2
-DEAL::7373 2
-DEAL::7374 2
-DEAL::7375 2
-DEAL::7376 2
-DEAL::7377 2
-DEAL::7378 2
-DEAL::7379 2
-DEAL::7380 2
-DEAL::7381 2
-DEAL::7382 2
-DEAL::7383 2
-DEAL::7384 2
-DEAL::7385 2
-DEAL::7386 2
-DEAL::7387 2
-DEAL::7388 2
-DEAL::7389 2
-DEAL::7390 2
-DEAL::7391 2
-DEAL::7392 2
-DEAL::7393 2
-DEAL::7394 2
-DEAL::7395 2
-DEAL::7396 2
-DEAL::7397 2
-DEAL::7398 2
-DEAL::7399 2
-DEAL::7400 2
-DEAL::7401 2
-DEAL::7402 2
-DEAL::7403 2
-DEAL::7404 2
-DEAL::7405 2
-DEAL::7406 2
-DEAL::7407 2
-DEAL::7408 2
-DEAL::7409 2
-DEAL::7410 2
-DEAL::7411 2
-DEAL::7412 2
-DEAL::7413 2
-DEAL::7414 2
-DEAL::7415 2
-DEAL::7416 2
-DEAL::7417 2
-DEAL::7418 2
-DEAL::7419 2
-DEAL::7420 2
-DEAL::7421 2
-DEAL::7422 2
-DEAL::7423 2
-DEAL::7424 2
-DEAL::7425 3
-DEAL::7426 2
-DEAL::7427 3
-DEAL::7428 2
-DEAL::7429 2
-DEAL::7430 2
-DEAL::7431 2
-DEAL::7432 2
-DEAL::7433 2
-DEAL::7434 2
-DEAL::7435 2
-DEAL::7436 2
-DEAL::7437 3
-DEAL::7438 2
-DEAL::7439 2
-DEAL::7440 2
-DEAL::7441 2
-DEAL::7442 2
-DEAL::7443 3
-DEAL::7444 2
-DEAL::7445 2
-DEAL::7446 2
-DEAL::7447 2
-DEAL::7448 2
-DEAL::7449 2
-DEAL::7450 2
-DEAL::7451 3
-DEAL::7452 3
-DEAL::7453 3
-DEAL::7454 3
-DEAL::7455 3
-DEAL::7456 3
-DEAL::7457 3
-DEAL::7458 3
-DEAL::7459 3
-DEAL::7460 3
-DEAL::7461 3
-DEAL::7462 3
-DEAL::7463 3
-DEAL::7464 3
-DEAL::7465 3
-DEAL::7466 3
-DEAL::7467 3
-DEAL::7468 2
-DEAL::7469 2
-DEAL::7470 2
-DEAL::7471 2
-DEAL::7472 2
-DEAL::7473 3
-DEAL::7474 2
-DEAL::7475 2
-DEAL::7476 3
-DEAL::7477 2
-DEAL::7478 2
-DEAL::7479 2
-DEAL::7480 2
-DEAL::7481 2
-DEAL::7482 2
-DEAL::7483 3
-DEAL::7484 3
-DEAL::7485 3
-DEAL::7486 3
-DEAL::7487 3
-DEAL::7488 3
-DEAL::7489 3
-DEAL::7490 3
-DEAL::7491 3
-DEAL::7492 3
-DEAL::7493 2
-DEAL::7494 2
-DEAL::7495 2
-DEAL::7496 2
-DEAL::7497 3
-DEAL::7498 2
-DEAL::7499 2
-DEAL::7500 2
-DEAL::7501 2
-DEAL::7502 2
-DEAL::7503 2
-DEAL::7504 2
-DEAL::7505 2
-DEAL::7506 2
-DEAL::7507 2
-DEAL::7508 2
-DEAL::7509 2
-DEAL::7510 3
-DEAL::7511 3
-DEAL::7512 3
-DEAL::7513 3
-DEAL::7514 3
-DEAL::7515 3
-DEAL::7516 3
-DEAL::7517 3
-DEAL::7518 3
-DEAL::7519 3
-DEAL::7520 3
-DEAL::7521 2
-DEAL::7522 2
-DEAL::7523 2
-DEAL::7524 2
-DEAL::7525 2
-DEAL::7526 2
-DEAL::7527 2
-DEAL::7528 3
-DEAL::7529 2
-DEAL::7530 2
-DEAL::7531 2
-DEAL::7532 3
-DEAL::7533 3
-DEAL::7534 3
-DEAL::7535 3
-DEAL::7536 3
-DEAL::7537 3
-DEAL::7538 3
-DEAL::7539 3
-DEAL::7540 0
-DEAL::7541 0
-DEAL::7542 0
-DEAL::7543 3
-DEAL::7544 0
-DEAL::7545 0
-DEAL::7546 0
-DEAL::7547 0
-DEAL::7548 0
-DEAL::7549 0
-DEAL::7550 0
-DEAL::7551 0
-DEAL::7552 0
-DEAL::7553 0
-DEAL::7554 0
-DEAL::7555 0
-DEAL::7556 0
-DEAL::7557 0
-DEAL::7558 0
-DEAL::7559 0
-DEAL::7560 0
-DEAL::7561 0
-DEAL::7562 0
-DEAL::7563 0
-DEAL::7564 0
-DEAL::7565 3
-DEAL::7566 3
-DEAL::7567 3
-DEAL::7568 3
-DEAL::7569 3
-DEAL::7570 0
-DEAL::7571 3
-DEAL::7572 3
-DEAL::7573 0
-DEAL::7574 3
-DEAL::7575 0
-DEAL::7576 3
-DEAL::7577 3
-DEAL::7578 3
-DEAL::7579 3
-DEAL::7580 3
-DEAL::7581 3
-DEAL::7582 0
-DEAL::7583 0
-DEAL::7584 0
-DEAL::7585 0
-DEAL::7586 0
-DEAL::7587 0
-DEAL::7588 0
-DEAL::7589 0
-DEAL::7590 0
-DEAL::7591 0
-DEAL::7592 0
-DEAL::7593 0
-DEAL::7594 0
-DEAL::7595 0
-DEAL::7596 0
-DEAL::7597 0
-DEAL::7598 0
-DEAL::7599 0
-DEAL::7600 0
-DEAL::7601 0
-DEAL::7602 0
-DEAL::7603 0
-DEAL::7604 0
-DEAL::7605 0
-DEAL::7606 0
-DEAL::7607 0
-DEAL::7608 0
-DEAL::7609 0
-DEAL::7610 3
-DEAL::7611 0
-DEAL::7612 0
-DEAL::7613 0
-DEAL::7614 0
-DEAL::7615 0
-DEAL::7616 0
-DEAL::7617 0
-DEAL::7618 3
-DEAL::7619 0
-DEAL::7620 0
-DEAL::7621 0
-DEAL::7622 3
-DEAL::7623 0
-DEAL::7624 0
-DEAL::7625 0
-DEAL::7626 0
-DEAL::7627 3
-DEAL::7628 3
-DEAL::7629 3
-DEAL::7630 3
-DEAL::7631 3
-DEAL::7632 3
-DEAL::7633 3
-DEAL::7634 3
-DEAL::7635 0
-DEAL::7636 3
-DEAL::7637 3
-DEAL::7638 0
-DEAL::7639 0
-DEAL::7640 0
-DEAL::7641 0
-DEAL::7642 0
-DEAL::7643 0
-DEAL::7644 0
-DEAL::7645 0
-DEAL::7646 0
-DEAL::7647 0
-DEAL::7648 0
-DEAL::7649 0
-DEAL::7650 0
-DEAL::7651 0
-DEAL::7652 0
-DEAL::7653 0
-DEAL::7654 0
-DEAL::7655 0
-DEAL::7656 3
-DEAL::7657 3
-DEAL::7658 3
-DEAL::7659 3
-DEAL::7660 3
-DEAL::7661 3
-DEAL::7662 3
-DEAL::7663 3
-DEAL::7664 3
-DEAL::7665 3
-DEAL::7666 3
-DEAL::7667 3
-DEAL::7668 3
-DEAL::7669 3
-DEAL::7670 3
-DEAL::7671 3
-DEAL::7672 3
-DEAL::7673 3
-DEAL::7674 3
-DEAL::7675 3
-DEAL::7676 3
-DEAL::7677 3
-DEAL::7678 3
-DEAL::7679 3
-DEAL::7680 3
-DEAL::7681 3
-DEAL::7682 3
-DEAL::7683 3
-DEAL::7684 3
-DEAL::7685 3
-DEAL::7686 3
-DEAL::7687 3
-DEAL::7688 3
-DEAL::7689 3
-DEAL::7690 3
-DEAL::7691 3
-DEAL::7692 3
-DEAL::7693 3
-DEAL::7694 3
-DEAL::7695 3
-DEAL::7696 3
-DEAL::7697 3
-DEAL::7698 3
-DEAL::7699 3
-DEAL::7700 3
-DEAL::7701 3
-DEAL::7702 3
-DEAL::7703 3
-DEAL::7704 3
-DEAL::7705 3
-DEAL::7706 3
-DEAL::7707 3
-DEAL::7708 3
-DEAL::7709 3
-DEAL::7710 3
-DEAL::7711 3
-DEAL::7712 3
-DEAL::7713 3
-DEAL::7714 3
-DEAL::7715 3
-DEAL::7716 3
-DEAL::7717 3
-DEAL::7718 3
-DEAL::7719 3
-DEAL::7720 3
-DEAL::7721 3
-DEAL::7722 3
-DEAL::7723 3
-DEAL::7724 3
-DEAL::7725 3
-DEAL::7726 3
-DEAL::7727 3
-DEAL::7728 3
-DEAL::7729 3
-DEAL::7730 3
-DEAL::7731 3
-DEAL::7732 3
-DEAL::7733 3
-DEAL::7734 3
-DEAL::7735 3
-DEAL::7736 3
-DEAL::7737 3
-DEAL::7738 3
-DEAL::7739 3
-DEAL::7740 3
-DEAL::7741 3
-DEAL::7742 3
-DEAL::7743 3
-DEAL::7744 3
-DEAL::7745 3
-DEAL::7746 3
-DEAL::7747 3
-DEAL::7748 3
-DEAL::7749 3
-DEAL::7750 3
-DEAL::7751 3
-DEAL::7752 3
-DEAL::7753 3
-DEAL::7754 3
-DEAL::7755 3
-DEAL::7756 3
-DEAL::7757 3
-DEAL::7758 3
-DEAL::7759 3
-DEAL::7760 3
-DEAL::7761 3
-DEAL::7762 3
-DEAL::7763 3
-DEAL::7764 3
-DEAL::7765 3
-DEAL::7766 3
-DEAL::7767 3
-DEAL::7768 3
-DEAL::7769 3
-DEAL::7770 3
-DEAL::7771 3
-DEAL::7772 3
-DEAL::7773 0
-DEAL::7774 0
-DEAL::7775 0
-DEAL::7776 0
-DEAL::7777 0
-DEAL::7778 0
-DEAL::7779 0
-DEAL::7780 0
-DEAL::7781 0
-DEAL::7782 0
-DEAL::7783 0
-DEAL::7784 0
-DEAL::7785 0
-DEAL::7786 0
-DEAL::7787 0
-DEAL::7788 0
-DEAL::7789 0
-DEAL::7790 0
-DEAL::7791 0
-DEAL::7792 0
-DEAL::7793 0
-DEAL::7794 0
-DEAL::7795 0
-DEAL::7796 0
-DEAL::7797 0
-DEAL::7798 0
-DEAL::7799 0
-DEAL::7800 0
-DEAL::7801 0
-DEAL::7802 0
-DEAL::7803 0
-DEAL::7804 0
-DEAL::7805 0
-DEAL::7806 0
-DEAL::7807 0
-DEAL::7808 0
-DEAL::7809 0
-DEAL::7810 0
-DEAL::7811 0
-DEAL::7812 0
-DEAL::7813 0
-DEAL::7814 0
-DEAL::7815 0
-DEAL::7816 0
-DEAL::7817 0
-DEAL::7818 0
-DEAL::7819 0
-DEAL::7820 0
-DEAL::7821 0
-DEAL::7822 0
-DEAL::7823 0
-DEAL::7824 0
-DEAL::7825 0
-DEAL::7826 0
-DEAL::7827 0
-DEAL::7828 0
-DEAL::7829 0
-DEAL::7830 0
-DEAL::7831 0
-DEAL::7832 0
-DEAL::7833 0
-DEAL::7834 0
-DEAL::7835 0
-DEAL::7836 0
-DEAL::7837 0
-DEAL::7838 0
-DEAL::7839 0
-DEAL::7840 0
-DEAL::7841 0
-DEAL::7842 0
-DEAL::7843 0
-DEAL::7844 0
-DEAL::7845 0
-DEAL::7846 0
-DEAL::7847 0
-DEAL::7848 0
-DEAL::7849 0
-DEAL::7850 0
-DEAL::7851 0
-DEAL::7852 0
-DEAL::7853 0
-DEAL::7854 0
-DEAL::7855 0
-DEAL::7856 0
-DEAL::7857 0
-DEAL::7858 0
-DEAL::7859 0
-DEAL::7860 0
-DEAL::7861 0
-DEAL::7862 0
-DEAL::7863 0
-DEAL::7864 0
-DEAL::7865 0
-DEAL::7866 0
-DEAL::7867 0
-DEAL::7868 0
-DEAL::7869 0
-DEAL::7870 0
-DEAL::7871 0
-DEAL::7872 0
-DEAL::7873 0
-DEAL::7874 0
-DEAL::7875 0
-DEAL::7876 0
-DEAL::7877 0
-DEAL::7878 0
-DEAL::7879 0
-DEAL::7880 0
-DEAL::7881 0
-DEAL::7882 0
-DEAL::7883 0
-DEAL::7884 0
-DEAL::7885 0
-DEAL::7886 0
-DEAL::7887 0
-DEAL::7888 0
-DEAL::7889 0
-DEAL::7890 0
-DEAL::7891 0
-DEAL::7892 0
-DEAL::7893 0
-DEAL::7894 0
-DEAL::7895 0
-DEAL::7896 0
-DEAL::7897 0
-DEAL::7898 0
-DEAL::7899 0
-DEAL::7900 0
-DEAL::7901 0
-DEAL::7902 0
-DEAL::7903 0
-DEAL::7904 0
-DEAL::7905 0
-DEAL::7906 0
-DEAL::7907 0
-DEAL::7908 0
-DEAL::7909 0
-DEAL::7910 0
-DEAL::7911 0
-DEAL::7912 0
-DEAL::7913 0
-DEAL::7914 0
-DEAL::7915 0
-DEAL::7916 0
-DEAL::7917 0
-DEAL::7918 0
-DEAL::7919 0
-DEAL::7920 0
-DEAL::7921 0
-DEAL::7922 0
-DEAL::7923 0
-DEAL::7924 0
-DEAL::7925 0
-DEAL::7926 0
-DEAL::7927 0
-DEAL::7928 0
-DEAL::7929 0
-DEAL::7930 0
-DEAL::7931 0
-DEAL::7932 0
-DEAL::7933 0
-DEAL::7934 0
-DEAL::7935 0
-DEAL::7936 0
-DEAL::7937 0
-DEAL::7938 0
-DEAL::7939 0
-DEAL::7940 0
-DEAL::7941 0
-DEAL::7942 0
-DEAL::7943 0
-DEAL::7944 0
-DEAL::7945 0
-DEAL::7946 0
-DEAL::7947 0
-DEAL::7948 0
-DEAL::7949 0
-DEAL::7950 0
-DEAL::7951 0
-DEAL::7952 0
-DEAL::7953 0
-DEAL::7954 0
-DEAL::7955 0
-DEAL::7956 0
-DEAL::7957 0
-DEAL::7958 0
-DEAL::7959 0
-DEAL::7960 0
-DEAL::7961 0
-DEAL::7962 0
-DEAL::7963 0
-DEAL::7964 0
-DEAL::7965 0
-DEAL::7966 0
-DEAL::7967 0
-DEAL::7968 0
-DEAL::7969 0
-DEAL::7970 0
-DEAL::7971 0
-DEAL::7972 0
-DEAL::7973 0
-DEAL::7974 0
-DEAL::7975 0
-DEAL::7976 0
-DEAL::7977 0
-DEAL::7978 0
-DEAL::7979 0
-DEAL::7980 0
-DEAL::7981 0
-DEAL::7982 0
-DEAL::7983 0
-DEAL::7984 0
-DEAL::7985 0
-DEAL::7986 0
-DEAL::7987 0
-DEAL::7988 0
-DEAL::7989 0
-DEAL::7990 0
-DEAL::7991 0
-DEAL::7992 0
-DEAL::7993 0
-DEAL::7994 0
-DEAL::7995 0
-DEAL::7996 0
-DEAL::7997 0
-DEAL::7998 0
-DEAL::7999 0
-DEAL::8000 0
-DEAL::8001 0
-DEAL::8002 0
-DEAL::8003 0
-DEAL::8004 0
-DEAL::8005 0
-DEAL::8006 0
-DEAL::8007 0
-DEAL::8008 0
-DEAL::8009 0
-DEAL::8010 0
-DEAL::8011 0
-DEAL::8012 0
-DEAL::8013 0
-DEAL::8014 0
-DEAL::8015 0
-DEAL::8016 0
-DEAL::8017 0
-DEAL::8018 0
-DEAL::8019 0
-DEAL::8020 0
-DEAL::8021 0
-DEAL::8022 0
-DEAL::8023 0
-DEAL::8024 0
-DEAL::8025 0
-DEAL::8026 0
-DEAL::8027 0
-DEAL::8028 0
-DEAL::8029 0
-DEAL::8030 0
-DEAL::8031 0
-DEAL::8032 0
-DEAL::8033 0
-DEAL::8034 0
-DEAL::8035 0
-DEAL::8036 0
-DEAL::8037 0
-DEAL::8038 0
-DEAL::8039 0
-DEAL::8040 0
-DEAL::8041 0
-DEAL::8042 0
-DEAL::8043 0
-DEAL::8044 0
-DEAL::8045 0
-DEAL::8046 0
-DEAL::8047 0
-DEAL::8048 0
-DEAL::8049 0
-DEAL::8050 0
-DEAL::8051 0
-DEAL::8052 0
-DEAL::8053 0
-DEAL::8054 0
-DEAL::8055 0
-DEAL::8056 0
-DEAL::8057 0
-DEAL::8058 0
-DEAL::8059 0
-DEAL::8060 0
-DEAL::8061 0
-DEAL::8062 0
-DEAL::8063 0
-DEAL::8064 0
-DEAL::8065 0
-DEAL::8066 0
-DEAL::8067 0
-DEAL::8068 0
-DEAL::8069 0
-DEAL::8070 0
-DEAL::8071 0
-DEAL::8072 0
-DEAL::8073 0
-DEAL::8074 0
-DEAL::8075 0
-DEAL::8076 0
-DEAL::8077 0
-DEAL::8078 0
-DEAL::8079 0
-DEAL::8080 0
-DEAL::8081 0
-DEAL::8082 0
-DEAL::8083 0
-DEAL::8084 0
-DEAL::8085 0
-DEAL::8086 0
-DEAL::8087 0
-DEAL::8088 0
-DEAL::8089 0
-DEAL::8090 0
-DEAL::8091 0
-DEAL::8092 0
-DEAL::8093 0
-DEAL::8094 0
-DEAL::8095 0
-DEAL::8096 0
-DEAL::8097 0
-DEAL::8098 0
-DEAL::8099 0
-DEAL::8100 0
-DEAL::8101 0
-DEAL::8102 0
-DEAL::8103 0
-DEAL::8104 0
-DEAL::8105 0
-DEAL::8106 0
-DEAL::8107 0
-DEAL::8108 0
-DEAL::8109 0
-DEAL::8110 0
-DEAL::8111 0
-DEAL::8112 0
-DEAL::8113 0
-DEAL::8114 0
-DEAL::8115 0
-DEAL::8116 0
-DEAL::8117 0
-DEAL::8118 0
-DEAL::8119 0
-DEAL::8120 0
-DEAL::8121 1
-DEAL::8122 1
-DEAL::8123 1
-DEAL::8124 1
-DEAL::8125 1
-DEAL::8126 1
-DEAL::8127 1
-DEAL::8128 1
-DEAL::8129 1
-DEAL::8130 1
-DEAL::8131 1
-DEAL::8132 1
-DEAL::8133 1
-DEAL::8134 1
-DEAL::8135 1
-DEAL::8136 1
-DEAL::8137 1
-DEAL::8138 1
-DEAL::8139 1
-DEAL::8140 1
-DEAL::8141 1
-DEAL::8142 1
-DEAL::8143 1
-DEAL::8144 1
-DEAL::8145 1
-DEAL::8146 1
-DEAL::8147 1
-DEAL::8148 1
-DEAL::8149 1
-DEAL::8150 1
-DEAL::8151 1
-DEAL::8152 1
-DEAL::8153 1
-DEAL::8154 1
-DEAL::8155 1
-DEAL::8156 1
-DEAL::8157 1
-DEAL::8158 1
-DEAL::8159 1
-DEAL::8160 1
-DEAL::8161 1
-DEAL::8162 1
-DEAL::8163 1
-DEAL::8164 1
-DEAL::8165 1
-DEAL::8166 1
-DEAL::8167 1
-DEAL::8168 1
-DEAL::8169 1
-DEAL::8170 1
-DEAL::8171 1
-DEAL::8172 1
-DEAL::8173 1
-DEAL::8174 1
-DEAL::8175 1
-DEAL::8176 1
-DEAL::8177 1
-DEAL::8178 1
-DEAL::8179 1
-DEAL::8180 1
-DEAL::8181 1
-DEAL::8182 1
-DEAL::8183 1
-DEAL::8184 1
-DEAL::8185 1
-DEAL::8186 1
-DEAL::8187 1
-DEAL::8188 1
-DEAL::8189 1
-DEAL::8190 1
-DEAL::8191 1
-DEAL::8192 1
-DEAL::8193 1
-DEAL::8194 1
-DEAL::8195 1
-DEAL::8196 1
-DEAL::8197 1
-DEAL::8198 1
-DEAL::8199 1
-DEAL::8200 1
-DEAL::8201 1
-DEAL::8202 1
-DEAL::8203 1
-DEAL::8204 1
-DEAL::8205 1
-DEAL::8206 1
-DEAL::8207 1
-DEAL::8208 1
-DEAL::8209 1
-DEAL::8210 1
-DEAL::8211 1
-DEAL::8212 1
-DEAL::8213 1
-DEAL::8214 1
-DEAL::8215 1
-DEAL::8216 1
-DEAL::8217 1
-DEAL::8218 1
-DEAL::8219 1
-DEAL::8220 1
-DEAL::8221 1
-DEAL::8222 1
-DEAL::8223 1
-DEAL::8224 1
-DEAL::8225 1
-DEAL::8226 1
-DEAL::8227 1
-DEAL::8228 1
-DEAL::8229 1
-DEAL::8230 1
-DEAL::8231 1
-DEAL::8232 1
-DEAL::8233 1
-DEAL::8234 1
-DEAL::8235 1
-DEAL::8236 1
-DEAL::8237 1
-DEAL::8238 2
-DEAL::8239 2
-DEAL::8240 2
-DEAL::8241 2
-DEAL::8242 2
-DEAL::8243 2
-DEAL::8244 2
-DEAL::8245 2
-DEAL::8246 2
-DEAL::8247 2
-DEAL::8248 2
-DEAL::8249 2
-DEAL::8250 2
-DEAL::8251 2
-DEAL::8252 2
-DEAL::8253 2
-DEAL::8254 2
-DEAL::8255 2
-DEAL::8256 2
-DEAL::8257 2
-DEAL::8258 2
-DEAL::8259 2
-DEAL::8260 2
-DEAL::8261 2
-DEAL::8262 2
-DEAL::8263 2
-DEAL::8264 2
-DEAL::8265 2
-DEAL::8266 2
-DEAL::8267 2
-DEAL::8268 2
-DEAL::8269 2
-DEAL::8270 2
-DEAL::8271 2
-DEAL::8272 2
-DEAL::8273 2
-DEAL::8274 2
-DEAL::8275 2
-DEAL::8276 2
-DEAL::8277 2
-DEAL::8278 2
-DEAL::8279 2
-DEAL::8280 2
-DEAL::8281 2
-DEAL::8282 2
-DEAL::8283 2
-DEAL::8284 2
-DEAL::8285 2
-DEAL::8286 2
-DEAL::8287 2
-DEAL::8288 2
-DEAL::8289 2
-DEAL::8290 2
-DEAL::8291 2
-DEAL::8292 2
-DEAL::8293 2
-DEAL::8294 2
-DEAL::8295 2
-DEAL::8296 2
-DEAL::8297 2
-DEAL::8298 2
-DEAL::8299 2
-DEAL::8300 2
-DEAL::8301 2
-DEAL::8302 2
-DEAL::8303 2
-DEAL::8304 2
-DEAL::8305 2
-DEAL::8306 2
-DEAL::8307 2
-DEAL::8308 2
-DEAL::8309 2
-DEAL::8310 2
-DEAL::8311 2
-DEAL::8312 2
-DEAL::8313 2
-DEAL::8314 2
-DEAL::8315 2
-DEAL::8316 2
-DEAL::8317 2
-DEAL::8318 2
-DEAL::8319 2
-DEAL::8320 2
-DEAL::8321 2
-DEAL::8322 2
-DEAL::8323 2
-DEAL::8324 2
-DEAL::8325 2
-DEAL::8326 2
-DEAL::8327 2
-DEAL::8328 2
-DEAL::8329 2
-DEAL::8330 2
-DEAL::8331 2
-DEAL::8332 2
-DEAL::8333 2
-DEAL::8334 2
-DEAL::8335 2
-DEAL::8336 2
-DEAL::8337 2
-DEAL::8338 2
-DEAL::8339 2
-DEAL::8340 2
-DEAL::8341 2
-DEAL::8342 2
-DEAL::8343 2
-DEAL::8344 2
-DEAL::8345 2
-DEAL::8346 2
-DEAL::8347 2
-DEAL::8348 2
-DEAL::8349 2
-DEAL::8350 2
-DEAL::8351 2
-DEAL::8352 2
-DEAL::8353 2
-DEAL::8354 2
-DEAL::8355 3
-DEAL::8356 3
-DEAL::8357 3
-DEAL::8358 3
-DEAL::8359 3
-DEAL::8360 3
-DEAL::8361 3
-DEAL::8362 3
-DEAL::8363 3
-DEAL::8364 3
-DEAL::8365 3
-DEAL::8366 3
-DEAL::8367 3
-DEAL::8368 3
-DEAL::8369 3
-DEAL::8370 3
-DEAL::8371 3
-DEAL::8372 3
-DEAL::8373 3
-DEAL::8374 3
-DEAL::8375 3
-DEAL::8376 3
-DEAL::8377 3
-DEAL::8378 3
-DEAL::8379 3
-DEAL::8380 3
-DEAL::8381 3
-DEAL::8382 3
-DEAL::8383 3
-DEAL::8384 3
-DEAL::8385 3
-DEAL::8386 3
-DEAL::8387 3
-DEAL::8388 3
-DEAL::8389 3
-DEAL::8390 3
-DEAL::8391 3
-DEAL::8392 3
-DEAL::8393 3
-DEAL::8394 3
-DEAL::8395 3
-DEAL::8396 3
-DEAL::8397 3
-DEAL::8398 3
-DEAL::8399 3
-DEAL::8400 3
-DEAL::8401 3
-DEAL::8402 3
-DEAL::8403 3
-DEAL::8404 3
-DEAL::8405 3
-DEAL::8406 3
-DEAL::8407 3
-DEAL::8408 3
-DEAL::8409 3
-DEAL::8410 3
-DEAL::8411 3
-DEAL::8412 3
-DEAL::8413 3
-DEAL::8414 3
-DEAL::8415 3
-DEAL::8416 3
-DEAL::8417 3
-DEAL::8418 3
-DEAL::8419 3
-DEAL::8420 3
-DEAL::8421 3
-DEAL::8422 3
-DEAL::8423 3
-DEAL::8424 3
-DEAL::8425 3
-DEAL::8426 3
-DEAL::8427 3
-DEAL::8428 3
-DEAL::8429 3
-DEAL::8430 3
-DEAL::8431 3
-DEAL::8432 3
-DEAL::8433 3
-DEAL::8434 3
-DEAL::8435 3
-DEAL::8436 3
-DEAL::8437 3
-DEAL::8438 3
-DEAL::8439 3
-DEAL::8440 3
-DEAL::8441 3
-DEAL::8442 3
-DEAL::8443 3
-DEAL::8444 3
-DEAL::8445 3
-DEAL::8446 3
-DEAL::8447 3
-DEAL::8448 3
-DEAL::8449 3
-DEAL::8450 3
-DEAL::8451 3
-DEAL::8452 3
-DEAL::8453 3
-DEAL::8454 3
-DEAL::8455 3
-DEAL::8456 3
-DEAL::8457 3
-DEAL::8458 3
-DEAL::8459 3
-DEAL::8460 3
-DEAL::8461 3
-DEAL::8462 3
-DEAL::8463 3
-DEAL::8464 3
-DEAL::8465 3
-DEAL::8466 3
-DEAL::8467 3
-DEAL::8468 3
-DEAL::8469 3
-DEAL::8470 3
-DEAL::8471 3
-DEAL::8472 1
-DEAL::8473 1
-DEAL::8474 1
-DEAL::8475 1
-DEAL::8476 1
-DEAL::8477 1
-DEAL::8478 1
-DEAL::8479 1
-DEAL::8480 1
-DEAL::8481 1
-DEAL::8482 1
-DEAL::8483 1
-DEAL::8484 1
-DEAL::8485 1
-DEAL::8486 1
-DEAL::8487 1
-DEAL::8488 1
-DEAL::8489 1
-DEAL::8490 1
-DEAL::8491 1
-DEAL::8492 1
-DEAL::8493 1
-DEAL::8494 1
-DEAL::8495 1
-DEAL::8496 1
-DEAL::8497 1
-DEAL::8498 1
-DEAL::8499 1
-DEAL::8500 1
-DEAL::8501 1
-DEAL::8502 1
-DEAL::8503 1
-DEAL::8504 1
-DEAL::8505 1
-DEAL::8506 1
-DEAL::8507 1
-DEAL::8508 1
-DEAL::8509 1
-DEAL::8510 1
-DEAL::8511 1
-DEAL::8512 1
-DEAL::8513 1
-DEAL::8514 1
-DEAL::8515 1
-DEAL::8516 1
-DEAL::8517 1
-DEAL::8518 1
-DEAL::8519 1
-DEAL::8520 1
-DEAL::8521 1
-DEAL::8522 1
-DEAL::8523 1
-DEAL::8524 1
-DEAL::8525 1
-DEAL::8526 1
-DEAL::8527 1
-DEAL::8528 1
-DEAL::8529 1
-DEAL::8530 1
-DEAL::8531 1
-DEAL::8532 1
-DEAL::8533 1
-DEAL::8534 1
-DEAL::8535 1
-DEAL::8536 1
-DEAL::8537 1
-DEAL::8538 1
-DEAL::8539 1
-DEAL::8540 1
-DEAL::8541 1
-DEAL::8542 1
-DEAL::8543 1
-DEAL::8544 1
-DEAL::8545 1
-DEAL::8546 1
-DEAL::8547 1
-DEAL::8548 1
-DEAL::8549 1
-DEAL::8550 1
-DEAL::8551 1
-DEAL::8552 1
-DEAL::8553 1
-DEAL::8554 1
-DEAL::8555 1
-DEAL::8556 1
-DEAL::8557 1
-DEAL::8558 1
-DEAL::8559 1
-DEAL::8560 1
-DEAL::8561 1
-DEAL::8562 1
-DEAL::8563 1
-DEAL::8564 1
-DEAL::8565 1
-DEAL::8566 1
-DEAL::8567 1
-DEAL::8568 1
-DEAL::8569 1
-DEAL::8570 1
-DEAL::8571 1
-DEAL::8572 1
-DEAL::8573 1
-DEAL::8574 1
-DEAL::8575 1
-DEAL::8576 1
-DEAL::8577 1
-DEAL::8578 1
-DEAL::8579 1
-DEAL::8580 1
-DEAL::8581 1
-DEAL::8582 1
-DEAL::8583 1
-DEAL::8584 1
-DEAL::8585 1
-DEAL::8586 1
-DEAL::8587 1
-DEAL::8588 1
+DEAL::7329 1
+DEAL::7330 1
+DEAL::7331 1
+DEAL::7332 1
+DEAL::7333 1
+DEAL::7334 1
+DEAL::7335 1
+DEAL::7336 1
+DEAL::7337 1
+DEAL::7338 1
+DEAL::7339 1
+DEAL::7340 1
+DEAL::7341 1
+DEAL::7342 1
+DEAL::7343 1
+DEAL::7344 1
+DEAL::7345 1
+DEAL::7346 1
+DEAL::7347 1
+DEAL::7348 1
+DEAL::7349 1
+DEAL::7350 1
+DEAL::7351 1
+DEAL::7352 1
+DEAL::7353 1
+DEAL::7354 1
+DEAL::7355 1
+DEAL::7356 1
+DEAL::7357 1
+DEAL::7358 1
+DEAL::7359 1
+DEAL::7360 1
+DEAL::7361 1
+DEAL::7362 1
+DEAL::7363 1
+DEAL::7364 1
+DEAL::7365 1
+DEAL::7366 1
+DEAL::7367 1
+DEAL::7368 1
+DEAL::7369 1
+DEAL::7370 1
+DEAL::7371 1
+DEAL::7372 1
+DEAL::7373 1
+DEAL::7374 1
+DEAL::7375 1
+DEAL::7376 1
+DEAL::7377 1
+DEAL::7378 1
+DEAL::7379 1
+DEAL::7380 1
+DEAL::7381 1
+DEAL::7382 1
+DEAL::7383 1
+DEAL::7384 1
+DEAL::7385 1
+DEAL::7386 1
+DEAL::7387 1
+DEAL::7388 1
+DEAL::7389 1
+DEAL::7390 1
+DEAL::7391 1
+DEAL::7392 1
+DEAL::7393 1
+DEAL::7394 1
+DEAL::7395 1
+DEAL::7396 1
+DEAL::7397 1
+DEAL::7398 1
+DEAL::7399 1
+DEAL::7400 1
+DEAL::7401 1
+DEAL::7402 1
+DEAL::7403 1
+DEAL::7404 1
+DEAL::7405 1
+DEAL::7406 1
+DEAL::7407 1
+DEAL::7408 1
+DEAL::7409 1
+DEAL::7410 1
+DEAL::7411 1
+DEAL::7412 1
+DEAL::7413 1
+DEAL::7414 1
+DEAL::7415 1
+DEAL::7416 1
+DEAL::7417 1
+DEAL::7418 1
+DEAL::7419 1
+DEAL::7420 1
+DEAL::7421 1
+DEAL::7422 1
+DEAL::7423 1
+DEAL::7424 1
+DEAL::7425 1
+DEAL::7426 1
+DEAL::7427 1
+DEAL::7428 1
+DEAL::7429 1
+DEAL::7430 1
+DEAL::7431 1
+DEAL::7432 1
+DEAL::7433 1
+DEAL::7434 1
+DEAL::7435 1
+DEAL::7436 1
+DEAL::7437 1
+DEAL::7438 1
+DEAL::7439 1
+DEAL::7440 1
+DEAL::7441 1
+DEAL::7442 1
+DEAL::7443 1
+DEAL::7444 1
+DEAL::7445 1
+DEAL::7446 1
+DEAL::7447 1
+DEAL::7448 1
+DEAL::7449 1
+DEAL::7450 1
+DEAL::7451 1
+DEAL::7452 1
+DEAL::7453 1
+DEAL::7454 1
+DEAL::7455 1
+DEAL::7456 1
+DEAL::7457 1
+DEAL::7458 1
+DEAL::7459 1
+DEAL::7460 1
+DEAL::7461 1
+DEAL::7462 1
+DEAL::7463 1
+DEAL::7464 1
+DEAL::7465 1
+DEAL::7466 1
+DEAL::7467 1
+DEAL::7468 1
+DEAL::7469 1
+DEAL::7470 1
+DEAL::7471 1
+DEAL::7472 1
+DEAL::7473 1
+DEAL::7474 1
+DEAL::7475 1
+DEAL::7476 1
+DEAL::7477 1
+DEAL::7478 1
+DEAL::7479 1
+DEAL::7480 1
+DEAL::7481 1
+DEAL::7482 1
+DEAL::7483 1
+DEAL::7484 1
+DEAL::7485 1
+DEAL::7486 1
+DEAL::7487 1
+DEAL::7488 1
+DEAL::7489 1
+DEAL::7490 1
+DEAL::7491 1
+DEAL::7492 1
+DEAL::7493 1
+DEAL::7494 1
+DEAL::7495 1
+DEAL::7496 1
+DEAL::7497 1
+DEAL::7498 1
+DEAL::7499 1
+DEAL::7500 1
+DEAL::7501 1
+DEAL::7502 1
+DEAL::7503 1
+DEAL::7504 1
+DEAL::7505 1
+DEAL::7506 1
+DEAL::7507 1
+DEAL::7508 1
+DEAL::7509 1
+DEAL::7510 1
+DEAL::7511 1
+DEAL::7512 1
+DEAL::7513 1
+DEAL::7514 1
+DEAL::7515 1
+DEAL::7516 1
+DEAL::7517 1
+DEAL::7518 1
+DEAL::7519 1
+DEAL::7520 1
+DEAL::7521 1
+DEAL::7522 1
+DEAL::7523 1
+DEAL::7524 1
+DEAL::7525 1
+DEAL::7526 1
+DEAL::7527 1
+DEAL::7528 1
+DEAL::7529 1
+DEAL::7530 1
+DEAL::7531 1
+DEAL::7532 1
+DEAL::7533 1
+DEAL::7534 1
+DEAL::7535 1
+DEAL::7536 1
+DEAL::7537 1
+DEAL::7538 1
+DEAL::7539 1
+DEAL::7540 1
+DEAL::7541 1
+DEAL::7542 1
+DEAL::7543 1
+DEAL::7544 1
+DEAL::7545 1
+DEAL::7546 1
+DEAL::7547 1
+DEAL::7548 1
+DEAL::7549 1
+DEAL::7550 1
+DEAL::7551 1
+DEAL::7552 1
+DEAL::7553 1
+DEAL::7554 1
+DEAL::7555 1
+DEAL::7556 1
+DEAL::7557 1
+DEAL::7558 1
+DEAL::7559 1
+DEAL::7560 1
+DEAL::7561 1
+DEAL::7562 1
+DEAL::7563 1
+DEAL::7564 1
+DEAL::7565 1
+DEAL::7566 1
+DEAL::7567 1
+DEAL::7568 1
+DEAL::7569 1
+DEAL::7570 1
+DEAL::7571 1
+DEAL::7572 1
+DEAL::7573 1
+DEAL::7574 1
+DEAL::7575 1
+DEAL::7576 1
+DEAL::7577 1
+DEAL::7578 1
+DEAL::7579 1
+DEAL::7580 1
+DEAL::7581 1
+DEAL::7582 1
+DEAL::7583 1
+DEAL::7584 1
+DEAL::7585 1
+DEAL::7586 1
+DEAL::7587 1
+DEAL::7588 1
+DEAL::7589 1
+DEAL::7590 1
+DEAL::7591 1
+DEAL::7592 1
+DEAL::7593 1
+DEAL::7594 1
+DEAL::7595 1
+DEAL::7596 1
+DEAL::7597 1
+DEAL::7598 1
+DEAL::7599 1
+DEAL::7600 1
+DEAL::7601 1
+DEAL::7602 1
+DEAL::7603 1
+DEAL::7604 1
+DEAL::7605 1
+DEAL::7606 1
+DEAL::7607 1
+DEAL::7608 1
+DEAL::7609 1
+DEAL::7610 1
+DEAL::7611 1
+DEAL::7612 1
+DEAL::7613 1
+DEAL::7614 1
+DEAL::7615 1
+DEAL::7616 1
+DEAL::7617 1
+DEAL::7618 1
+DEAL::7619 1
+DEAL::7620 1
+DEAL::7621 1
+DEAL::7622 1
+DEAL::7623 1
+DEAL::7624 1
+DEAL::7625 1
+DEAL::7626 1
+DEAL::7627 1
+DEAL::7628 1
+DEAL::7629 1
+DEAL::7630 1
+DEAL::7631 1
+DEAL::7632 1
+DEAL::7633 1
+DEAL::7634 1
+DEAL::7635 1
+DEAL::7636 1
+DEAL::7637 1
+DEAL::7638 1
+DEAL::7639 1
+DEAL::7640 1
+DEAL::7641 1
+DEAL::7642 1
+DEAL::7643 1
+DEAL::7644 1
+DEAL::7645 1
+DEAL::7646 1
+DEAL::7647 1
+DEAL::7648 1
+DEAL::7649 1
+DEAL::7650 1
+DEAL::7651 1
+DEAL::7652 1
+DEAL::7653 1
+DEAL::7654 1
+DEAL::7655 1
+DEAL::7656 0
+DEAL::7657 0
+DEAL::7658 0
+DEAL::7659 0
+DEAL::7660 1
+DEAL::7661 0
+DEAL::7662 1
+DEAL::7663 0
+DEAL::7664 0
+DEAL::7665 0
+DEAL::7666 0
+DEAL::7667 1
+DEAL::7668 1
+DEAL::7669 1
+DEAL::7670 1
+DEAL::7671 0
+DEAL::7672 0
+DEAL::7673 0
+DEAL::7674 0
+DEAL::7675 0
+DEAL::7676 0
+DEAL::7677 0
+DEAL::7678 0
+DEAL::7679 0
+DEAL::7680 1
+DEAL::7681 0
+DEAL::7682 0
+DEAL::7683 1
+DEAL::7684 1
+DEAL::7685 0
+DEAL::7686 0
+DEAL::7687 0
+DEAL::7688 0
+DEAL::7689 1
+DEAL::7690 0
+DEAL::7691 0
+DEAL::7692 0
+DEAL::7693 0
+DEAL::7694 0
+DEAL::7695 0
+DEAL::7696 0
+DEAL::7697 1
+DEAL::7698 0
+DEAL::7699 0
+DEAL::7700 0
+DEAL::7701 1
+DEAL::7702 0
+DEAL::7703 0
+DEAL::7704 0
+DEAL::7705 1
+DEAL::7706 0
+DEAL::7707 0
+DEAL::7708 0
+DEAL::7709 0
+DEAL::7710 0
+DEAL::7711 0
+DEAL::7712 0
+DEAL::7713 0
+DEAL::7714 1
+DEAL::7715 0
+DEAL::7716 1
+DEAL::7717 0
+DEAL::7718 0
+DEAL::7719 1
+DEAL::7720 1
+DEAL::7721 0
+DEAL::7722 0
+DEAL::7723 0
+DEAL::7724 0
+DEAL::7725 1
+DEAL::7726 0
+DEAL::7727 1
+DEAL::7728 1
+DEAL::7729 1
+DEAL::7730 1
+DEAL::7731 1
+DEAL::7732 1
+DEAL::7733 1
+DEAL::7734 1
+DEAL::7735 1
+DEAL::7736 1
+DEAL::7737 1
+DEAL::7738 1
+DEAL::7739 1
+DEAL::7740 1
+DEAL::7741 1
+DEAL::7742 1
+DEAL::7743 1
+DEAL::7744 1
+DEAL::7745 1
+DEAL::7746 1
+DEAL::7747 1
+DEAL::7748 1
+DEAL::7749 1
+DEAL::7750 1
+DEAL::7751 1
+DEAL::7752 1
+DEAL::7753 1
+DEAL::7754 1
+DEAL::7755 1
+DEAL::7756 1
+DEAL::7757 1
+DEAL::7758 1
+DEAL::7759 1
+DEAL::7760 1
+DEAL::7761 1
+DEAL::7762 1
+DEAL::7763 1
+DEAL::7764 1
+DEAL::7765 1
+DEAL::7766 1
+DEAL::7767 1
+DEAL::7768 1
+DEAL::7769 1
+DEAL::7770 1
+DEAL::7771 1
+DEAL::7772 1
+DEAL::7773 4
+DEAL::7774 4
+DEAL::7775 4
+DEAL::7776 4
+DEAL::7777 4
+DEAL::7778 4
+DEAL::7779 4
+DEAL::7780 4
+DEAL::7781 4
+DEAL::7782 4
+DEAL::7783 4
+DEAL::7784 4
+DEAL::7785 4
+DEAL::7786 4
+DEAL::7787 4
+DEAL::7788 4
+DEAL::7789 4
+DEAL::7790 4
+DEAL::7791 4
+DEAL::7792 4
+DEAL::7793 4
+DEAL::7794 4
+DEAL::7795 4
+DEAL::7796 4
+DEAL::7797 4
+DEAL::7798 4
+DEAL::7799 4
+DEAL::7800 4
+DEAL::7801 4
+DEAL::7802 4
+DEAL::7803 4
+DEAL::7804 4
+DEAL::7805 4
+DEAL::7806 4
+DEAL::7807 4
+DEAL::7808 4
+DEAL::7809 4
+DEAL::7810 4
+DEAL::7811 4
+DEAL::7812 4
+DEAL::7813 4
+DEAL::7814 4
+DEAL::7815 4
+DEAL::7816 4
+DEAL::7817 4
+DEAL::7818 4
+DEAL::7819 4
+DEAL::7820 4
+DEAL::7821 4
+DEAL::7822 4
+DEAL::7823 4
+DEAL::7824 4
+DEAL::7825 4
+DEAL::7826 4
+DEAL::7827 4
+DEAL::7828 4
+DEAL::7829 4
+DEAL::7830 4
+DEAL::7831 4
+DEAL::7832 4
+DEAL::7833 4
+DEAL::7834 4
+DEAL::7835 4
+DEAL::7836 4
+DEAL::7837 4
+DEAL::7838 4
+DEAL::7839 4
+DEAL::7840 4
+DEAL::7841 4
+DEAL::7842 4
+DEAL::7843 4
+DEAL::7844 4
+DEAL::7845 4
+DEAL::7846 4
+DEAL::7847 4
+DEAL::7848 4
+DEAL::7849 4
+DEAL::7850 4
+DEAL::7851 4
+DEAL::7852 4
+DEAL::7853 4
+DEAL::7854 4
+DEAL::7855 4
+DEAL::7856 4
+DEAL::7857 4
+DEAL::7858 4
+DEAL::7859 4
+DEAL::7860 4
+DEAL::7861 4
+DEAL::7862 4
+DEAL::7863 4
+DEAL::7864 4
+DEAL::7865 4
+DEAL::7866 4
+DEAL::7867 4
+DEAL::7868 4
+DEAL::7869 4
+DEAL::7870 4
+DEAL::7871 4
+DEAL::7872 4
+DEAL::7873 4
+DEAL::7874 4
+DEAL::7875 4
+DEAL::7876 4
+DEAL::7877 4
+DEAL::7878 4
+DEAL::7879 4
+DEAL::7880 4
+DEAL::7881 4
+DEAL::7882 4
+DEAL::7883 4
+DEAL::7884 4
+DEAL::7885 4
+DEAL::7886 4
+DEAL::7887 4
+DEAL::7888 4
+DEAL::7889 4
+DEAL::7890 3
+DEAL::7891 3
+DEAL::7892 3
+DEAL::7893 3
+DEAL::7894 3
+DEAL::7895 3
+DEAL::7896 3
+DEAL::7897 3
+DEAL::7898 3
+DEAL::7899 3
+DEAL::7900 3
+DEAL::7901 3
+DEAL::7902 3
+DEAL::7903 3
+DEAL::7904 3
+DEAL::7905 3
+DEAL::7906 3
+DEAL::7907 3
+DEAL::7908 3
+DEAL::7909 3
+DEAL::7910 3
+DEAL::7911 3
+DEAL::7912 3
+DEAL::7913 3
+DEAL::7914 3
+DEAL::7915 3
+DEAL::7916 3
+DEAL::7917 3
+DEAL::7918 3
+DEAL::7919 3
+DEAL::7920 3
+DEAL::7921 3
+DEAL::7922 3
+DEAL::7923 3
+DEAL::7924 3
+DEAL::7925 3
+DEAL::7926 3
+DEAL::7927 3
+DEAL::7928 3
+DEAL::7929 3
+DEAL::7930 3
+DEAL::7931 3
+DEAL::7932 3
+DEAL::7933 3
+DEAL::7934 3
+DEAL::7935 3
+DEAL::7936 3
+DEAL::7937 3
+DEAL::7938 3
+DEAL::7939 3
+DEAL::7940 3
+DEAL::7941 3
+DEAL::7942 3
+DEAL::7943 3
+DEAL::7944 3
+DEAL::7945 3
+DEAL::7946 3
+DEAL::7947 3
+DEAL::7948 3
+DEAL::7949 3
+DEAL::7950 4
+DEAL::7951 3
+DEAL::7952 3
+DEAL::7953 3
+DEAL::7954 3
+DEAL::7955 3
+DEAL::7956 3
+DEAL::7957 3
+DEAL::7958 3
+DEAL::7959 3
+DEAL::7960 3
+DEAL::7961 3
+DEAL::7962 3
+DEAL::7963 3
+DEAL::7964 3
+DEAL::7965 3
+DEAL::7966 3
+DEAL::7967 3
+DEAL::7968 3
+DEAL::7969 3
+DEAL::7970 3
+DEAL::7971 3
+DEAL::7972 3
+DEAL::7973 3
+DEAL::7974 3
+DEAL::7975 3
+DEAL::7976 3
+DEAL::7977 3
+DEAL::7978 3
+DEAL::7979 3
+DEAL::7980 3
+DEAL::7981 3
+DEAL::7982 3
+DEAL::7983 3
+DEAL::7984 3
+DEAL::7985 3
+DEAL::7986 3
+DEAL::7987 3
+DEAL::7988 3
+DEAL::7989 3
+DEAL::7990 3
+DEAL::7991 3
+DEAL::7992 3
+DEAL::7993 3
+DEAL::7994 3
+DEAL::7995 3
+DEAL::7996 3
+DEAL::7997 3
+DEAL::7998 3
+DEAL::7999 3
+DEAL::8000 3
+DEAL::8001 3
+DEAL::8002 3
+DEAL::8003 3
+DEAL::8004 3
+DEAL::8005 3
+DEAL::8006 3
+DEAL::8007 4
+DEAL::8008 4
+DEAL::8009 4
+DEAL::8010 4
+DEAL::8011 4
+DEAL::8012 4
+DEAL::8013 4
+DEAL::8014 4
+DEAL::8015 4
+DEAL::8016 4
+DEAL::8017 4
+DEAL::8018 4
+DEAL::8019 4
+DEAL::8020 4
+DEAL::8021 4
+DEAL::8022 4
+DEAL::8023 4
+DEAL::8024 4
+DEAL::8025 4
+DEAL::8026 4
+DEAL::8027 4
+DEAL::8028 4
+DEAL::8029 4
+DEAL::8030 4
+DEAL::8031 4
+DEAL::8032 4
+DEAL::8033 4
+DEAL::8034 4
+DEAL::8035 4
+DEAL::8036 4
+DEAL::8037 4
+DEAL::8038 4
+DEAL::8039 4
+DEAL::8040 4
+DEAL::8041 4
+DEAL::8042 4
+DEAL::8043 4
+DEAL::8044 4
+DEAL::8045 4
+DEAL::8046 4
+DEAL::8047 4
+DEAL::8048 4
+DEAL::8049 4
+DEAL::8050 4
+DEAL::8051 4
+DEAL::8052 4
+DEAL::8053 4
+DEAL::8054 4
+DEAL::8055 4
+DEAL::8056 4
+DEAL::8057 4
+DEAL::8058 4
+DEAL::8059 4
+DEAL::8060 4
+DEAL::8061 4
+DEAL::8062 4
+DEAL::8063 4
+DEAL::8064 4
+DEAL::8065 4
+DEAL::8066 4
+DEAL::8067 4
+DEAL::8068 4
+DEAL::8069 4
+DEAL::8070 4
+DEAL::8071 4
+DEAL::8072 4
+DEAL::8073 4
+DEAL::8074 4
+DEAL::8075 4
+DEAL::8076 4
+DEAL::8077 4
+DEAL::8078 4
+DEAL::8079 4
+DEAL::8080 4
+DEAL::8081 4
+DEAL::8082 4
+DEAL::8083 4
+DEAL::8084 4
+DEAL::8085 4
+DEAL::8086 4
+DEAL::8087 4
+DEAL::8088 4
+DEAL::8089 4
+DEAL::8090 4
+DEAL::8091 4
+DEAL::8092 4
+DEAL::8093 4
+DEAL::8094 4
+DEAL::8095 4
+DEAL::8096 4
+DEAL::8097 4
+DEAL::8098 4
+DEAL::8099 4
+DEAL::8100 4
+DEAL::8101 4
+DEAL::8102 4
+DEAL::8103 4
+DEAL::8104 4
+DEAL::8105 4
+DEAL::8106 4
+DEAL::8107 4
+DEAL::8108 4
+DEAL::8109 4
+DEAL::8110 4
+DEAL::8111 4
+DEAL::8112 4
+DEAL::8113 4
+DEAL::8114 4
+DEAL::8115 4
+DEAL::8116 4
+DEAL::8117 4
+DEAL::8118 4
+DEAL::8119 4
+DEAL::8120 4
+DEAL::8121 4
+DEAL::8122 4
+DEAL::8123 4
+DEAL::8124 4
+DEAL::8125 4
+DEAL::8126 4
+DEAL::8127 4
+DEAL::8128 4
+DEAL::8129 4
+DEAL::8130 4
+DEAL::8131 4
+DEAL::8132 4
+DEAL::8133 4
+DEAL::8134 4
+DEAL::8135 4
+DEAL::8136 4
+DEAL::8137 4
+DEAL::8138 4
+DEAL::8139 4
+DEAL::8140 4
+DEAL::8141 4
+DEAL::8142 4
+DEAL::8143 4
+DEAL::8144 4
+DEAL::8145 4
+DEAL::8146 4
+DEAL::8147 4
+DEAL::8148 4
+DEAL::8149 4
+DEAL::8150 4
+DEAL::8151 4
+DEAL::8152 4
+DEAL::8153 4
+DEAL::8154 4
+DEAL::8155 4
+DEAL::8156 4
+DEAL::8157 4
+DEAL::8158 4
+DEAL::8159 4
+DEAL::8160 4
+DEAL::8161 4
+DEAL::8162 4
+DEAL::8163 4
+DEAL::8164 4
+DEAL::8165 4
+DEAL::8166 4
+DEAL::8167 4
+DEAL::8168 4
+DEAL::8169 4
+DEAL::8170 4
+DEAL::8171 4
+DEAL::8172 4
+DEAL::8173 4
+DEAL::8174 4
+DEAL::8175 4
+DEAL::8176 4
+DEAL::8177 4
+DEAL::8178 4
+DEAL::8179 4
+DEAL::8180 4
+DEAL::8181 4
+DEAL::8182 4
+DEAL::8183 4
+DEAL::8184 4
+DEAL::8185 4
+DEAL::8186 4
+DEAL::8187 4
+DEAL::8188 4
+DEAL::8189 4
+DEAL::8190 4
+DEAL::8191 4
+DEAL::8192 4
+DEAL::8193 4
+DEAL::8194 4
+DEAL::8195 4
+DEAL::8196 4
+DEAL::8197 4
+DEAL::8198 4
+DEAL::8199 4
+DEAL::8200 4
+DEAL::8201 4
+DEAL::8202 4
+DEAL::8203 4
+DEAL::8204 4
+DEAL::8205 4
+DEAL::8206 4
+DEAL::8207 4
+DEAL::8208 4
+DEAL::8209 4
+DEAL::8210 4
+DEAL::8211 4
+DEAL::8212 4
+DEAL::8213 4
+DEAL::8214 4
+DEAL::8215 4
+DEAL::8216 4
+DEAL::8217 4
+DEAL::8218 4
+DEAL::8219 4
+DEAL::8220 4
+DEAL::8221 4
+DEAL::8222 4
+DEAL::8223 4
+DEAL::8224 4
+DEAL::8225 4
+DEAL::8226 4
+DEAL::8227 4
+DEAL::8228 4
+DEAL::8229 4
+DEAL::8230 4
+DEAL::8231 4
+DEAL::8232 4
+DEAL::8233 4
+DEAL::8234 4
+DEAL::8235 4
+DEAL::8236 4
+DEAL::8237 4
+DEAL::8238 1
+DEAL::8239 1
+DEAL::8240 1
+DEAL::8241 1
+DEAL::8242 1
+DEAL::8243 1
+DEAL::8244 1
+DEAL::8245 1
+DEAL::8246 1
+DEAL::8247 1
+DEAL::8248 1
+DEAL::8249 1
+DEAL::8250 1
+DEAL::8251 1
+DEAL::8252 1
+DEAL::8253 1
+DEAL::8254 1
+DEAL::8255 1
+DEAL::8256 1
+DEAL::8257 1
+DEAL::8258 1
+DEAL::8259 1
+DEAL::8260 1
+DEAL::8261 1
+DEAL::8262 1
+DEAL::8263 1
+DEAL::8264 1
+DEAL::8265 1
+DEAL::8266 1
+DEAL::8267 1
+DEAL::8268 1
+DEAL::8269 1
+DEAL::8270 1
+DEAL::8271 1
+DEAL::8272 1
+DEAL::8273 1
+DEAL::8274 1
+DEAL::8275 1
+DEAL::8276 1
+DEAL::8277 1
+DEAL::8278 1
+DEAL::8279 1
+DEAL::8280 1
+DEAL::8281 1
+DEAL::8282 1
+DEAL::8283 1
+DEAL::8284 1
+DEAL::8285 1
+DEAL::8286 1
+DEAL::8287 1
+DEAL::8288 1
+DEAL::8289 1
+DEAL::8290 1
+DEAL::8291 1
+DEAL::8292 1
+DEAL::8293 1
+DEAL::8294 1
+DEAL::8295 1
+DEAL::8296 1
+DEAL::8297 1
+DEAL::8298 1
+DEAL::8299 1
+DEAL::8300 1
+DEAL::8301 1
+DEAL::8302 1
+DEAL::8303 1
+DEAL::8304 1
+DEAL::8305 1
+DEAL::8306 1
+DEAL::8307 1
+DEAL::8308 1
+DEAL::8309 1
+DEAL::8310 1
+DEAL::8311 1
+DEAL::8312 1
+DEAL::8313 1
+DEAL::8314 1
+DEAL::8315 1
+DEAL::8316 1
+DEAL::8317 1
+DEAL::8318 1
+DEAL::8319 1
+DEAL::8320 1
+DEAL::8321 1
+DEAL::8322 1
+DEAL::8323 1
+DEAL::8324 1
+DEAL::8325 1
+DEAL::8326 1
+DEAL::8327 1
+DEAL::8328 1
+DEAL::8329 1
+DEAL::8330 1
+DEAL::8331 1
+DEAL::8332 1
+DEAL::8333 1
+DEAL::8334 1
+DEAL::8335 1
+DEAL::8336 1
+DEAL::8337 1
+DEAL::8338 1
+DEAL::8339 1
+DEAL::8340 1
+DEAL::8341 1
+DEAL::8342 1
+DEAL::8343 1
+DEAL::8344 1
+DEAL::8345 1
+DEAL::8346 1
+DEAL::8347 1
+DEAL::8348 1
+DEAL::8349 1
+DEAL::8350 1
+DEAL::8351 1
+DEAL::8352 1
+DEAL::8353 1
+DEAL::8354 1
+DEAL::8355 0
+DEAL::8356 0
+DEAL::8357 0
+DEAL::8358 0
+DEAL::8359 0
+DEAL::8360 0
+DEAL::8361 0
+DEAL::8362 0
+DEAL::8363 0
+DEAL::8364 0
+DEAL::8365 0
+DEAL::8366 0
+DEAL::8367 0
+DEAL::8368 0
+DEAL::8369 0
+DEAL::8370 0
+DEAL::8371 0
+DEAL::8372 0
+DEAL::8373 0
+DEAL::8374 0
+DEAL::8375 0
+DEAL::8376 0
+DEAL::8377 0
+DEAL::8378 0
+DEAL::8379 0
+DEAL::8380 0
+DEAL::8381 0
+DEAL::8382 0
+DEAL::8383 0
+DEAL::8384 0
+DEAL::8385 0
+DEAL::8386 0
+DEAL::8387 0
+DEAL::8388 0
+DEAL::8389 0
+DEAL::8390 0
+DEAL::8391 0
+DEAL::8392 0
+DEAL::8393 0
+DEAL::8394 0
+DEAL::8395 0
+DEAL::8396 0
+DEAL::8397 0
+DEAL::8398 0
+DEAL::8399 0
+DEAL::8400 0
+DEAL::8401 0
+DEAL::8402 0
+DEAL::8403 0
+DEAL::8404 0
+DEAL::8405 0
+DEAL::8406 0
+DEAL::8407 0
+DEAL::8408 0
+DEAL::8409 0
+DEAL::8410 0
+DEAL::8411 0
+DEAL::8412 0
+DEAL::8413 0
+DEAL::8414 0
+DEAL::8415 0
+DEAL::8416 0
+DEAL::8417 0
+DEAL::8418 0
+DEAL::8419 0
+DEAL::8420 0
+DEAL::8421 0
+DEAL::8422 0
+DEAL::8423 0
+DEAL::8424 0
+DEAL::8425 0
+DEAL::8426 0
+DEAL::8427 0
+DEAL::8428 0
+DEAL::8429 0
+DEAL::8430 0
+DEAL::8431 0
+DEAL::8432 0
+DEAL::8433 0
+DEAL::8434 0
+DEAL::8435 0
+DEAL::8436 0
+DEAL::8437 0
+DEAL::8438 0
+DEAL::8439 0
+DEAL::8440 0
+DEAL::8441 0
+DEAL::8442 0
+DEAL::8443 0
+DEAL::8444 0
+DEAL::8445 0
+DEAL::8446 0
+DEAL::8447 0
+DEAL::8448 0
+DEAL::8449 0
+DEAL::8450 0
+DEAL::8451 0
+DEAL::8452 0
+DEAL::8453 0
+DEAL::8454 0
+DEAL::8455 0
+DEAL::8456 0
+DEAL::8457 0
+DEAL::8458 0
+DEAL::8459 0
+DEAL::8460 0
+DEAL::8461 0
+DEAL::8462 0
+DEAL::8463 0
+DEAL::8464 0
+DEAL::8465 0
+DEAL::8466 0
+DEAL::8467 0
+DEAL::8468 0
+DEAL::8469 0
+DEAL::8470 0
+DEAL::8471 0
+DEAL::8472 3
+DEAL::8473 3
+DEAL::8474 3
+DEAL::8475 3
+DEAL::8476 3
+DEAL::8477 3
+DEAL::8478 3
+DEAL::8479 3
+DEAL::8480 3
+DEAL::8481 3
+DEAL::8482 3
+DEAL::8483 3
+DEAL::8484 3
+DEAL::8485 3
+DEAL::8486 3
+DEAL::8487 3
+DEAL::8488 3
+DEAL::8489 3
+DEAL::8490 3
+DEAL::8491 3
+DEAL::8492 3
+DEAL::8493 3
+DEAL::8494 3
+DEAL::8495 3
+DEAL::8496 3
+DEAL::8497 3
+DEAL::8498 3
+DEAL::8499 3
+DEAL::8500 3
+DEAL::8501 3
+DEAL::8502 3
+DEAL::8503 3
+DEAL::8504 3
+DEAL::8505 3
+DEAL::8506 3
+DEAL::8507 3
+DEAL::8508 3
+DEAL::8509 3
+DEAL::8510 3
+DEAL::8511 3
+DEAL::8512 3
+DEAL::8513 3
+DEAL::8514 3
+DEAL::8515 3
+DEAL::8516 3
+DEAL::8517 3
+DEAL::8518 3
+DEAL::8519 3
+DEAL::8520 3
+DEAL::8521 3
+DEAL::8522 3
+DEAL::8523 3
+DEAL::8524 3
+DEAL::8525 3
+DEAL::8526 3
+DEAL::8527 3
+DEAL::8528 3
+DEAL::8529 3
+DEAL::8530 3
+DEAL::8531 3
+DEAL::8532 3
+DEAL::8533 3
+DEAL::8534 3
+DEAL::8535 3
+DEAL::8536 3
+DEAL::8537 3
+DEAL::8538 3
+DEAL::8539 3
+DEAL::8540 3
+DEAL::8541 3
+DEAL::8542 3
+DEAL::8543 3
+DEAL::8544 3
+DEAL::8545 3
+DEAL::8546 3
+DEAL::8547 3
+DEAL::8548 3
+DEAL::8549 3
+DEAL::8550 3
+DEAL::8551 3
+DEAL::8552 3
+DEAL::8553 3
+DEAL::8554 3
+DEAL::8555 3
+DEAL::8556 3
+DEAL::8557 3
+DEAL::8558 3
+DEAL::8559 3
+DEAL::8560 3
+DEAL::8561 3
+DEAL::8562 3
+DEAL::8563 3
+DEAL::8564 3
+DEAL::8565 3
+DEAL::8566 3
+DEAL::8567 3
+DEAL::8568 3
+DEAL::8569 3
+DEAL::8570 3
+DEAL::8571 3
+DEAL::8572 3
+DEAL::8573 3
+DEAL::8574 3
+DEAL::8575 3
+DEAL::8576 3
+DEAL::8577 3
+DEAL::8578 3
+DEAL::8579 3
+DEAL::8580 3
+DEAL::8581 3
+DEAL::8582 3
+DEAL::8583 3
+DEAL::8584 3
+DEAL::8585 3
+DEAL::8586 3
+DEAL::8587 3
+DEAL::8588 3
index f92162dcadc5a1f56d788d57ef70c669635daf71..0aae643e7d5b57d5d18e660b597a92b1da109cdb 100644 (file)
@@ -359,7 +359,7 @@ CELL_TYPES 115
 POINT_DATA 230
 SCALARS partitions double 1
 LOOKUP_TABLE default
-3.00000 3.00000 2.00000 2.00000 3.00000 3.00000 2.00000 2.00000 4.00000 4.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 2.00000 2.00000 1.00000 1.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 
+4.00000 4.00000 2.00000 2.00000 4.00000 4.00000 2.00000 2.00000 3.00000 3.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 2.00000 2.00000 0.00000 0.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 
 DEAL::Dimension = 2
 # vtk DataFile Version 3.0
 #This file was generated 
@@ -6305,7 +6305,7 @@ CELL_TYPES 1186
 POINT_DATA 4744
 SCALARS partitions double 1
 LOOKUP_TABLE default
-4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 
+0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 
 DEAL::Dimension = 3
 # vtk DataFile Version 3.0
 #This file was generated 
@@ -12945,4 +12945,4 @@ CELL_TYPES 736
 POINT_DATA 5888
 SCALARS partitions double 1
 LOOKUP_TABLE default
-4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 
+4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 
index 4f1cc1ea932d23775cb34f58d81efd5309c86d6a..577c5a1f178b7c4038c0928b891797da27de0513 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2009, 2010, 2011 by the deal.II authors
+//    Copyright (C) 2009, 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -24,7 +24,11 @@ void test()
   unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
   const unsigned int numprocs = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);
 
-  int int_sum, uint_sum, double_sum, float_sum;
+  int int_sum;
+  unsigned int uint_sum;
+  double double_sum;
+  float float_sum;
+
   int_sum
     =
     Utilities::MPI::sum<int>(myid+1,
index 4723d36fe08847760ab08b843371d0919275757e..b28f27fc5b568f2fdad900b7263aedc0f5ff2c5d 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::1 1 1 1
+DEAL:mpi::1 1 1.00000 1.00000
index 30bc0673c1402937aa1f22ac462662605f787965..835db3bc286b12ccd5f6ec69c521a01f6dd52822 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::55 55 55 55
+DEAL:mpi::55 55 55.0000 55.0000
index c72ae8e67c0018ffd2e5d100661ef571a543e86f..90ff33ea7c664ffdaab6583ed71208656af22346 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::10 10 10 10
+DEAL:mpi::10 10 10.0000 10.0000
index 89a6bee8a7b6b924694a923a3cf3e813b99ac6dd..0fa7e1eceb8edc4a840d3406d412c1172c7df167 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2009, 2010, 2011 by the deal.II authors
+//    Copyright (C) 2009, 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -24,7 +24,11 @@ void test()
   unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
   const unsigned int numprocs = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);
 
-  int int_sum, uint_sum, double_sum, float_sum;
+  int int_sum;
+  unsigned int uint_sum;
+  double double_sum;
+  float float_sum;
+
   int_sum
     =
     Utilities::MPI::max<int>(myid+1,
index 4723d36fe08847760ab08b843371d0919275757e..b28f27fc5b568f2fdad900b7263aedc0f5ff2c5d 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::1 1 1 1
+DEAL:mpi::1 1 1.00000 1.00000
index c72ae8e67c0018ffd2e5d100661ef571a543e86f..90ff33ea7c664ffdaab6583ed71208656af22346 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::10 10 10 10
+DEAL:mpi::10 10 10.0000 10.0000
index b0dbea0c2177282ab008c2460b8787a167187aa2..9d561e34728ed15127a847e7491e61e9f7b098cc 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL:mpi::4 4 4 4
+DEAL:mpi::4 4 4.00000 4.00000
index 108f4d2e4a9d51a9ba19014664524f675c52bc0c..f677e27b75862d75fc67fa2c8b28866f28de444f 100644 (file)
@@ -35,7 +35,7 @@
 #include <deal.II/dofs/dof_accessor.h>
 
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index 0d50c177f077080a9c28618951b112b1662efd1b..b01fbc5436946566e0b5ee791c1f321f8f360b9f 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
index 4cc19def802d2d38f50eeb64a6ca6e8cec8eb02b..15939abedc0eae9fab66bd5209811da734a3b82d 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/dofs/dof_accessor.h>
 
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
index e3acadf8224c268312465261a512bf20e2f12e92..f4cfbd3b233b71d6866123bd90ecd1fe94fa02e7 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
index ebf565159a8393b4848a6a24d44951966811d325..dd18b3f8384cab4071fa311f6fa0adcab0fbb5ee 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
index bbfa5afc32ab338fa403a13f6d9d635ff3908133..423bfcf7b9475624972f7dde541600b68da9372e 100644 (file)
@@ -36,7 +36,7 @@
 #include <deal.II/dofs/dof_accessor.h>
 
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 
@@ -68,11 +68,9 @@ void test()
   
   TrilinosWrappers::MPI::Vector interpolated(dofh.locally_owned_dofs(),
                                             MPI_COMM_WORLD);
-  deallog << "before" << std::endl;
   VectorTools::interpolate (dofh,
                            LinearFunction<dim>(),
                            interpolated);
-  deallog << "after" << std::endl;
   interpolated.compress();
 
   double norm = interpolated.l2_norm();
index 02b42b4570f56daf8b7068899c72f1928d18ef2a..f4d75a0296a0474a91272716221c60ec7e718663 100644 (file)
@@ -1,3 +1,2 @@
 
-DEAL:0:2d::difference = 0.577350
-DEAL:0:3d::difference = 0.577350
+DEAL:0:2d::norm = 3.00000
index 02b42b4570f56daf8b7068899c72f1928d18ef2a..f4d75a0296a0474a91272716221c60ec7e718663 100644 (file)
@@ -1,3 +1,2 @@
 
-DEAL:0:2d::difference = 0.577350
-DEAL:0:3d::difference = 0.577350
+DEAL:0:2d::norm = 3.00000
index c1d5d52cba274a4fa17acf78248e8d46f6740694..d69a5e9b0395cfa5323bc6627d55a274ddfe35e1 100644 (file)
@@ -33,7 +33,7 @@
 #include <deal.II/lac/trilinos_sparsity_pattern.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index d1a66497d44a21e40acf5b951ed6d186c6f0354a..108ab8cd75d47dc648ce12513f4918b4f0823673 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/fe/fe_q.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index 8c1e5e53ee2da3043c2c593a31053017838d7efa..46c88302f273feeafc0f937aaace5929461fc75e 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/lac/trilinos_sparsity_pattern.h>
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <iostream>
 
index b6fc2f67720254e008155a56920e2d332922736c..1432e6d9c3f1ab054b8865c5365aaf6c749ebc2e 100644 (file)
@@ -31,7 +31,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <sstream>
@@ -106,7 +106,7 @@ void test()
   ConstraintMatrix constraints;
   constraints.reinit(relevant_set);
   DoFTools::make_hanging_node_constraints (dofh, constraints);
-  std::set<types::boundary_id_t> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (1);
   const unsigned int degree = 1;
   VectorTools::compute_no_normal_flux_constraints (dofh, 0,
index 5957031056d8dbc20af47453a0a1b2618b32c7e6..2256bed104bd49061653dadaabad176b6e288ec4 100644 (file)
@@ -34,7 +34,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <sstream>
@@ -111,7 +111,7 @@ void test()
   ConstraintMatrix constraints;
   constraints.reinit(relevant_set);
   DoFTools::make_hanging_node_constraints (dofh, constraints);
-  std::set<types::boundary_id_t> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (1);
   const unsigned int degree = 1;
 /*  VectorTools::compute_no_normal_flux_constraints (dofh, 0,
@@ -122,9 +122,6 @@ void test()
 
   std::string base = output_file_for_mpi("no_flux_constraints_02");
   
-  if (myid==0)
-       system(("rm -rf " + base + "cm_?.dot").c_str());
-
   MPI_Barrier(MPI_COMM_WORLD);
 
   { //write the constraintmatrix to a file on each cpu
index 5f83a1b078df192e1920867a077610bfc0721b65..bede6939d7b38b13f7421475c38004c2b5197fb2 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <fstream>
 #include <sstream>
@@ -82,7 +82,7 @@ void test()
   ConstraintMatrix constraints;
   constraints.reinit(relevant_set);
   DoFTools::make_hanging_node_constraints (dofh, constraints);
-  std::set<types::boundary_id_t> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (0);
   const unsigned int degree = 1;
   VectorTools::compute_no_normal_flux_constraints (dofh, 0,
@@ -91,16 +91,14 @@ void test()
                                                   MappingQ<dim>(degree));
   constraints.close();
 
-  if (myid==0)
-       system("rm -rf no_flux_constraints_03/cm_?.dot");
-  
+  std::string base = output_file_for_mpi("no_flux_constraints_03");
+
   MPI_Barrier(MPI_COMM_WORLD);
-  
+
   { //write the constraintmatrix to a file on each cpu
-       char fname[] = "no_flux_constraints_03/cm_0.dot";
-       fname[26]+=myid;
-       std::ofstream file(fname);
-       constraints.print(file);
+    std::string fname = base+"cm_" + Utilities::int_to_string(myid) + ".dot";
+    std::ofstream file(fname.c_str());
+    constraints.print(file);
   }
   MPI_Barrier(MPI_COMM_WORLD);
   sleep(1);
@@ -108,17 +106,18 @@ void test()
   {
        //sort and merge the constraint matrices on proc 0, generate a checksum
        //and output that into the deallog
-       system("cat no_flux_constraints_03/cm_?.dot|sort -n|uniq >no_flux_constraints_03/cm");
-       system("md5sum no_flux_constraints_03/cm >no_flux_constraints_03/cm.check");
-       {
-         std::ifstream file("no_flux_constraints_03/cm.check");
-         std::string str;
-         while (!file.eof())
-         {
-               std::getline(file, str);
-               deallog << str << std::endl;
-         }
-       }
+        system((std::string("cat ") + base+"cm_?.dot|sort -n|uniq >" + base+"cm").c_str());
+        system((std::string("md5sum ") + base + "cm >" + base + "cm.check").c_str());
+        {
+          std::ifstream file((base+"cm.check").c_str());
+          std::string str;
+          while (!file.eof())
+            {
+              std::getline(file, str);
+              deallog << str << std::endl;
+            }
+        }
+
   }
 
                                // print the number of constraints. since
index 9e98fde012e1d5da68b8e1cd0e291478472c21de..a58800dca0c7e4963c3d3e0c9934f7db257a0468 100644 (file)
@@ -1,7 +1,7 @@
 
 DEAL:0:3d::#cells = 568
 DEAL:0:3d::#dofs = 2481
-DEAL:0:3d::17a5cf8e1f66b693f8b54bf284cab4ac  no_flux_constraints_03/cm
+DEAL:0:3d::17a5cf8e1f66b693f8b54bf284cab4ac  no_flux_constraints_03/ncpu_1/outputcm
 DEAL:0:3d::
 DEAL:0:3d::#constraints on 0: 702
 DEAL:0:3d::OK
index b03490e36b6dda7e374a7f452dcbf81b4d812374..45d63a150dcc0e001f5f5612a9a2281ccaab0d3e 100644 (file)
@@ -1,7 +1,7 @@
 
 DEAL:0:3d::#cells = 568
 DEAL:0:3d::#dofs = 2481
-DEAL:0:3d::17a5cf8e1f66b693f8b54bf284cab4ac  no_flux_constraints_03/cm
+DEAL:0:3d::17a5cf8e1f66b693f8b54bf284cab4ac  no_flux_constraints_03/ncpu_9/outputcm
 DEAL:0:3d::
 DEAL:0:3d::#constraints on 0: 198
 DEAL:0:3d::#constraints on 1: 221
index d4cbf940b4931a262b818f298546f82dcfed58ac..fac47937248476b1bc52e70bf888722ab3e6de83 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
@@ -161,7 +161,7 @@ void test()
                                              cm,
                                              velocity_mask);
 
-    std::set<types::boundary_id_t> no_normal_flux_boundaries;
+    std::set<types::boundary_id> no_normal_flux_boundaries;
     no_normal_flux_boundaries.insert (1);
 
 
index 3b68e67243ca007e5b533c088fe51e680b5f365c..4508bc10fb73bebaca1823fd6f435486ece46f11 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
index ea08617f98cc8ade83a6bf8757f6e9d4fd2fd1f7..ee14d843ea8a2ac0806b188a5420f98ac44f6e5a 100644 (file)
@@ -19,7 +19,7 @@
 #include "../tests.h"
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 
 #include <deal.II/grid/tria.h>
 #include <deal.II/distributed/tria.h>
index 6c14055139aeb218fbe751f49c2b1c00ca2f629c..7aa883f1d3eca07cde084a5cac2bef1ff1824e88 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
index d452ef3ef09588c00d0d2cc494f74e900db88148..3bdf0a52082d1196d876361020f371c019f53d38 100644 (file)
@@ -54,7 +54,7 @@ void test ()
                                 // compress (no addition)
   if (myid > 0)
     v(1) = 7;
-  v.compress(/* add_ghost_data = */ false);
+  v.compress(VectorOperation::insert);
 
   if (myid == 0)
     {
index 09da6d3e4bdfe38c06650fca0db961050407aa32..11dc9c337428bc1b438b682adc97599425d39b41 100644 (file)
@@ -20,7 +20,7 @@
 #include <deal.II/base/logstream.h>
 #include <deal.II/base/tensor.h>
 #include <deal.II/base/function.h>
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
 
 #include <deal.II/grid/tria.h>
diff --git a/tests/mpi/trilinos_01.cc b/tests/mpi/trilinos_01.cc
new file mode 100644 (file)
index 0000000..6ad246f
--- /dev/null
@@ -0,0 +1,104 @@
+//----------------------------  trilinos_vector_equality_4.cc  ---------------------------
+//    $Id: trilinos_ghost_01.cc 24924 2012-01-25 12:35:17Z kormann $
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 2005, 2008, 2010 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_vector_equality_4.cc  ---------------------------
+
+
+// check Trilinos has_ghost_elements() if run on one CPU only
+
+#include "../tests.h"
+#include <deal.II/base/utilities.h>
+#include <deal.II/base/index_set.h>
+#include <deal.II/lac/trilinos_vector.h>
+#include <fstream>
+#include <iostream>
+#include <vector>
+
+
+void test ()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+  unsigned int numproc = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);
+
+  if (myid==0) deallog << "numproc=" << numproc << std::endl;
+
+
+                                  // each processor owns 2 indices and all
+                                   // are ghosting element 1 (the second)
+  IndexSet local_active(numproc*2);
+  local_active.add_range(myid*2,myid*2+2);
+  IndexSet local_relevant(numproc*2);
+  local_relevant = local_active;
+  local_relevant.add_range(1,2);
+
+  TrilinosWrappers::MPI::Vector v(local_active, MPI_COMM_WORLD);
+  TrilinosWrappers::MPI::Vector v_tmp(local_relevant, MPI_COMM_WORLD);
+
+                                  // only one CPU checks has_ghost_elements()
+  MPI_Barrier(MPI_COMM_WORLD);
+  if (myid==0)
+    {
+      deallog << v_tmp.has_ghost_elements() << std::endl;
+      int dummy=0;
+      MPI_Send(&dummy, 1, MPI_INT, 1, 12345, MPI_COMM_WORLD);
+    }
+
+  if (myid==1)
+    {
+      MPI_Status status;
+      MPI_Request request;     
+      int flag=0;
+      int tests=0;
+      
+      while (!flag && tests<10)
+       {
+         tests++;
+         MPI_Iprobe(0, 12345, MPI_COMM_WORLD, &flag, &status);
+         std::cout << flag << std::endl;
+         
+         sleep(1);
+       }
+      
+      Assert(flag!=0, ExcMessage("hang in has_ghost_elements()"));
+    }
+  
+
+  MPI_Barrier(MPI_COMM_WORLD);
+  
+  deallog << v_tmp.has_ghost_elements() << std::endl;
+
+  if (myid==0)
+    deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);
+
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+  deallog.push(Utilities::int_to_string(myid));
+
+  if (myid == 0)
+    {
+      std::ofstream logfile(output_file_for_mpi("trilinos_01").c_str());
+      deallog.attach(logfile);
+      deallog << std::setprecision(4);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      test();
+    }
+  else
+    test();
+
+}
diff --git a/tests/mpi/trilinos_01/ncpu_10/cmp/generic b/tests/mpi/trilinos_01/ncpu_10/cmp/generic
new file mode 100644 (file)
index 0000000..97de6c9
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:0::numproc=10
+DEAL:0::1
+DEAL:0::1
+DEAL:0::OK
diff --git a/tests/mpi/trilinos_01/ncpu_4/cmp/generic b/tests/mpi/trilinos_01/ncpu_4/cmp/generic
new file mode 100644 (file)
index 0000000..46b81f4
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:0::numproc=4
+DEAL:0::1
+DEAL:0::1
+DEAL:0::OK
diff --git a/tests/mpi/trilinos_02.cc b/tests/mpi/trilinos_02.cc
new file mode 100644 (file)
index 0000000..7de100a
--- /dev/null
@@ -0,0 +1,101 @@
+//----------------------------  trilinos_vector_equality_4.cc  ---------------------------
+//    $Id: trilinos_ghost_01.cc 24924 2012-01-25 12:35:17Z kormann $
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 2005, 2008, 2010 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_vector_equality_4.cc  ---------------------------
+
+
+// check Trilinos has_ghost_elements()
+
+#include "../tests.h"
+#include <deal.II/base/utilities.h>
+#include <deal.II/base/index_set.h>
+#include <deal.II/lac/trilinos_vector.h>
+#include <fstream>
+#include <iostream>
+#include <vector>
+
+void check(TrilinosWrappers::MPI::Vector & v, bool ghost)
+{
+  Assert(v.has_ghost_elements()==ghost, ExcMessage("wrong ghost elements"));
+}
+
+void test ()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+  unsigned int numproc = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);
+
+  if (myid==0) deallog << "numproc=" << numproc << std::endl;
+
+  // each processor owns 2 indices and all
+  // are ghosting element 1 (the second)
+  IndexSet local_active(numproc*2);
+  local_active.add_range(myid*2,myid*2+2);
+  IndexSet local_relevant(numproc*2);
+  local_relevant = local_active;
+  local_relevant.add_range(1,2);
+
+  TrilinosWrappers::MPI::Vector v(local_active, MPI_COMM_WORLD);
+  check(v, false);
+
+  TrilinosWrappers::MPI::Vector v2(local_relevant, MPI_COMM_WORLD);
+  check(v2, true);
+
+  TrilinosWrappers::MPI::Vector v3=v;
+  check(v3, false);
+
+  v3.reinit(v2);
+  check(v3, true);
+
+  v3.reinit(local_active);
+  check(v3, false);
+
+  v3.reinit(local_relevant);
+  check(v3, true);
+
+  TrilinosWrappers::MPI::Vector v4=v2;
+  check(v4, true);
+
+  v4 = v;
+  check(v4, true); //this only copies contents!
+
+  v4 = v2;
+  check(v4, true);
+
+  TrilinosWrappers::MPI::Vector v5(v2);
+  check(v5, true);
+
+  if (myid==0)
+    deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);
+
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+  deallog.push(Utilities::int_to_string(myid));
+
+  if (myid == 0)
+    {
+      std::ofstream logfile(output_file_for_mpi("trilinos_02").c_str());
+      deallog.attach(logfile);
+      deallog << std::setprecision(4);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      test();
+    }
+  else
+    test();
+
+}
diff --git a/tests/mpi/trilinos_02/ncpu_10/cmp/generic b/tests/mpi/trilinos_02/ncpu_10/cmp/generic
new file mode 100644 (file)
index 0000000..999baf1
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL:0::numproc=10
+DEAL:0::OK
diff --git a/tests/mpi/trilinos_02/ncpu_4/cmp/generic b/tests/mpi/trilinos_02/ncpu_4/cmp/generic
new file mode 100644 (file)
index 0000000..6f5d277
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL:0::numproc=4
+DEAL:0::OK
index b39df8b17f8dc2836e08b7beb1d1681a5cfe6f00..75b787b8ca5a120c2e205bb1191c3fccf9c7f721 100644 (file)
@@ -40,8 +40,8 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 
 #include <deal.II/multigrid/multigrid.h>
index e227bacdd8526477178207d8bfd0155980b1adaa..01b182a53e8eceb01ec3cb836c1b050a0e018cb2 100644 (file)
@@ -28,8 +28,8 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/mesh_worker.h>
 #include <deal.II/numerics/mesh_worker_loop.h>
index e669e0c8684e62e29c5e4c8bacdb35a852d5b789..b73408f3d3f5ee113390eb71db6b33fd6976782d 100644 (file)
@@ -28,8 +28,8 @@
 #include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/mesh_worker.h>
 #include <deal.II/numerics/mesh_worker_loop.h>
index a58f665f6f1c608fa84aa8e9a23c5e7d73c4dcc9..49226d80dffc24b1db8969cb719062b2cede0a88 100644 (file)
@@ -59,7 +59,7 @@
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_values.h>
 
-#include <deal.II/numerics/vectors.h>
+#include <deal.II/numerics/vector_tools.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
index 3fa9c1f31c8f9247a09f5f52ba4f6f5eef830f61..245a69d9d8223cb8f76253a41916f304969e43fb 100644 (file)
@@ -61,7 +61,13 @@ int main (int argc, char **argv)
         PETScWrappers::Vector w (100);
         test (v,w);
       }
-      ierr = VecDestroy(vpetsc);
+
+#if DEAL_II_PETSC_VERSION_LT(3,2,0)
+      ierr = VecDestroy (vpetsc);
+#else
+      ierr = VecDestroy (&vpetsc);
+#endif
+
       AssertThrow (ierr == 0, ExcPETScError(ierr));
 
       PetscFinalize();
index 842eff65ef082aa45f45caa90bc6cf404659ab45..a3fadf7552970d69a0fb1f5f2c4c6910c45891fe 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2010, 2011 by the deal.II authors
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
 #include <deal.II/fe/fe_q.h>
 #include <deal.II/fe/fe_system.h>
 
-template <int dim, int spacedim>
-bool operator == (const DoFHandler<dim,spacedim> &t1,
-                 const DoFHandler<dim,spacedim> &t2)
+namespace dealii
 {
-                                  // test a few attributes, though we can't
-                                  // test everything unfortunately...
-  typename DoFHandler<dim,spacedim>::cell_iterator
-    c1 = t1.begin(),
-    c2 = t2.begin();
-  for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
-    {
-      for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
-       {
-         if (c1->vertex(v) != c2->vertex(v))
-           return false;
-         if (c1->vertex_index(v) != c2->vertex_index(v))
-           return false;
-       }
-
-      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
-       {
-         if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
-           return false;
-
-         if (c1->face(f)->at_boundary())
-           {
-             if (c1->face(f)->boundary_indicator() !=
-                 c2->face(f)->boundary_indicator())
-               return false;
-           }
-         else
-           {
-             if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
-               return false;
-             if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
-               return false;
-           }
-       }
-
-      if (c1->subdomain_id() != c2->subdomain_id())
-       return false;
-
-      if (c1->material_id() != c2->material_id())
-       return false;
-
-      if (c1->user_index() != c2->user_index())
-       return false;
-
-      if (c1->user_flag_set() != c2->user_flag_set())
-       return false;
-
-      if (c1->get_fe().get_name() != c2->get_fe().get_name())
-       return false;
-
-      if (c1->active_fe_index() != c2->active_fe_index())
-       return false;
-
-      // compare dofs on this cell and then on the faces
-      if (c1->has_children() == false)
+  template <int dim, int spacedim>
+  bool operator == (const DoFHandler<dim,spacedim> &t1,
+                   const DoFHandler<dim,spacedim> &t2)
+  {
+                                    // test a few attributes, though we can't
+                                    // test everything unfortunately...
+    typename DoFHandler<dim,spacedim>::cell_iterator
+      c1 = t1.begin(),
+      c2 = t2.begin();
+    for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
       {
-       std::vector<unsigned int> local_dofs_1 (c1->get_fe().dofs_per_cell);
-       std::vector<unsigned int> local_dofs_2 (c2->get_fe().dofs_per_cell);
+       for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+         {
+           if (c1->vertex(v) != c2->vertex(v))
+             return false;
+           if (c1->vertex_index(v) != c2->vertex_index(v))
+             return false;
+         }
+
+       for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+         {
+           if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
+             return false;
+
+           if (c1->face(f)->at_boundary())
+             {
+               if (c1->face(f)->boundary_indicator() !=
+                   c2->face(f)->boundary_indicator())
+                 return false;
+             }
+           else
+             {
+               if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
+                 return false;
+               if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
+                 return false;
+             }
+         }
+
+       if (c1->subdomain_id() != c2->subdomain_id())
+         return false;
 
-       c1->get_dof_indices (local_dofs_1);
-       c2->get_dof_indices (local_dofs_2);
-       if (local_dofs_1 != local_dofs_2)
+       if (c1->material_id() != c2->material_id())
          return false;
 
-       for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
-       {
-         std::vector<unsigned int> local_dofs_1 (c1->get_fe().dofs_per_face);
-         std::vector<unsigned int> local_dofs_2 (c2->get_fe().dofs_per_face);
-
-         c1->face(f)->get_dof_indices (local_dofs_1);
-         c2->face(f)->get_dof_indices (local_dofs_2);
-         if (local_dofs_1 != local_dofs_2)
-           return false;
-       }
+       if (c1->user_index() != c2->user_index())
+         return false;
+
+       if (c1->user_flag_set() != c2->user_flag_set())
+         return false;
+
+       if (c1->get_fe().get_name() != c2->get_fe().get_name())
+         return false;
+
+       if (c1->active_fe_index() != c2->active_fe_index())
+         return false;
+
+                                        // compare dofs on this cell and then on the faces
+       if (c1->has_children() == false)
+         {
+           std::vector<unsigned int> local_dofs_1 (c1->get_fe().dofs_per_cell);
+           std::vector<unsigned int> local_dofs_2 (c2->get_fe().dofs_per_cell);
+
+           c1->get_dof_indices (local_dofs_1);
+           c2->get_dof_indices (local_dofs_2);
+           if (local_dofs_1 != local_dofs_2)
+             return false;
+
+           for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+             {
+               std::vector<unsigned int> local_dofs_1 (c1->get_fe().dofs_per_face);
+               std::vector<unsigned int> local_dofs_2 (c2->get_fe().dofs_per_face);
+
+               c1->face(f)->get_dof_indices (local_dofs_1);
+               c2->face(f)->get_dof_indices (local_dofs_2);
+               if (local_dofs_1 != local_dofs_2)
+                 return false;
+             }
+         }
       }
-    }
-
-  // also check the order of raw iterators as they contain
-  // something about the history of the triangulation
-  typename DoFHandler<dim,spacedim>::cell_iterator
-    r1 = t1.begin_raw(),
-    r2 = t2.begin_raw();
-  for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
-  {
-    if (r1->level() != r2->level())
-      return false;
-    if (r1->index() != r2->index())
-      return false;
-  }
 
-  return true;
+                                    // also check the order of raw iterators as they contain
+                                    // something about the history of the triangulation
+    typename DoFHandler<dim,spacedim>::cell_iterator
+      r1 = t1.begin_raw(),
+      r2 = t2.begin_raw();
+    for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
+      {
+       if (r1->level() != r2->level())
+         return false;
+       if (r1->index() != r2->index())
+         return false;
+      }
+
+    return true;
+  }
 }
 
 template <int dim, int spacedim>
index 7ad05ca620c5e36ab9bd34b98a30388099ec43e8..48c7e1c725a410e32b0bd509f4f7f46af4218df8 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2010, 2011 by the deal.II authors
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/grid/grid_generator.h>
 
-template <int dim, int spacedim>
-bool operator == (const Triangulation<dim,spacedim> &t1,
-                 const Triangulation<dim,spacedim> &t2)
+namespace dealii
 {
-                                  // test a few attributes, though we can't
-                                  // test everything unfortunately...
-  if (t1.n_active_cells() != t2.n_active_cells())
-    return false;
-  
-  if (t1.n_cells() != t2.n_cells())
-    return false;
-
-  if (t1.n_faces() != t2.n_faces())
-    return false;
-
-  typename Triangulation<dim,spacedim>::cell_iterator
-    c1 = t1.begin(),
-    c2 = t2.begin();
-  for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
-    {
-      for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
-       {
-         if (c1->vertex(v) != c2->vertex(v))
-           return false;
-         if (c1->vertex_index(v) != c2->vertex_index(v))
-           return false;
-       }
-
-      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
-       {
-         if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
-           return false;
-
-         if (c1->face(f)->at_boundary())
-           {
-             if (c1->face(f)->boundary_indicator() !=
-                 c2->face(f)->boundary_indicator())
-               return false;
-           }
-         else
-           {
-             if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
-               return false;
-             if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
-               return false;
-           }    
-       }
-      
-      if (c1->subdomain_id() != c2->subdomain_id())
-       return false;
-      
-      if (c1->material_id() != c2->material_id())
-       return false;
-
-      if (c1->user_index() != c2->user_index())
-       return false;
-
-      if (c1->user_flag_set() != c2->user_flag_set())
-       return false;
-    }
-
-  // also check the order of raw iterators as they contain
-  // something about the history of the triangulation
-  typename Triangulation<dim,spacedim>::cell_iterator
-    r1 = t1.begin_raw(),
-    r2 = t2.begin_raw();
-  for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
+  template <int dim, int spacedim>
+  bool operator == (const Triangulation<dim,spacedim> &t1,
+                   const Triangulation<dim,spacedim> &t2)
   {
-    if (r1->level() != r2->level())
+                                    // test a few attributes, though we can't
+                                    // test everything unfortunately...
+    if (t1.n_active_cells() != t2.n_active_cells())
       return false;
-    if (r1->index() != r2->index())
+
+    if (t1.n_cells() != t2.n_cells())
       return false;
-  }
 
-  return true;
+    if (t1.n_faces() != t2.n_faces())
+      return false;
+
+    typename Triangulation<dim,spacedim>::cell_iterator
+      c1 = t1.begin(),
+      c2 = t2.begin();
+    for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
+      {
+       for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+         {
+           if (c1->vertex(v) != c2->vertex(v))
+             return false;
+           if (c1->vertex_index(v) != c2->vertex_index(v))
+             return false;
+         }
+
+       for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+         {
+           if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
+             return false;
+
+           if (c1->face(f)->at_boundary())
+             {
+               if (c1->face(f)->boundary_indicator() !=
+                   c2->face(f)->boundary_indicator())
+                 return false;
+             }
+           else
+             {
+               if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
+                 return false;
+               if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
+                 return false;
+             }
+         }
+
+       if (c1->subdomain_id() != c2->subdomain_id())
+         return false;
+
+       if (c1->material_id() != c2->material_id())
+         return false;
+
+       if (c1->user_index() != c2->user_index())
+         return false;
+
+       if (c1->user_flag_set() != c2->user_flag_set())
+         return false;
+      }
+
+                                    // also check the order of raw iterators as they contain
+                                    // something about the history of the triangulation
+    typename Triangulation<dim,spacedim>::cell_iterator
+      r1 = t1.begin_raw(),
+      r2 = t2.begin_raw();
+    for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
+      {
+       if (r1->level() != r2->level())
+         return false;
+       if (r1->index() != r2->index())
+         return false;
+      }
+
+    return true;
+  }
 }
 
+
 template <int dim, int spacedim>
 void do_boundary (Triangulation<dim,spacedim> &t1)
 {
@@ -127,7 +131,7 @@ void test ()
   tria_1.begin_active()->set_refine_flag (RefinementCase<dim>::cut_x);
 
   do_boundary (tria_1);
-  
+
   verify (tria_1, tria_2);
 }
 
@@ -145,6 +149,6 @@ int main ()
   test<2,2> ();
   test<2,3> ();
   test<3,3> ();
-    
+
   deallog << "OK" << std::endl;
 }
index b4312be84948376e40f1f2c5fd1161857921695e..ddd53dff5e273b5cea4cf3392ae4e50633896d38 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2010, 2011 by the deal.II authors
+//    Copyright (C) 2010, 2011, 2012 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
 #include "../../include/deal.II/grid/tria.h"
 
 
-template <int dim, int spacedim>
-bool operator == (const Triangulation<dim,spacedim> &t1,
-                 const Triangulation<dim,spacedim> &t2)
+namespace dealii
 {
-                                  // test a few attributes, though we can't
-                                  // test everything unfortunately...
-  if (t1.n_active_cells() != t2.n_active_cells())
-    return false;
-  
-  if (t1.n_cells() != t2.n_cells())
-    return false;
-
-  if (t1.n_faces() != t2.n_faces())
-    return false;
-
-  typename Triangulation<dim,spacedim>::cell_iterator
-    c1 = t1.begin(),
-    c2 = t2.begin();
-  for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
-    {
-      for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
-       {
-         if (c1->vertex(v) != c2->vertex(v))
-           return false;
-         if (c1->vertex_index(v) != c2->vertex_index(v))
-           return false;
-       }
-
-      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
-       {
-         if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
-           return false;
-
-         if (c1->face(f)->at_boundary())
-           {
-             if (c1->face(f)->boundary_indicator() !=
-                 c2->face(f)->boundary_indicator())
-               return false;
-           }
-         else
-           {
-             if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
-               return false;
-             if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
-               return false;
-           }    
-       }
-      
-      if (c1->subdomain_id() != c2->subdomain_id())
-       return false;
-      
-      if (c1->material_id() != c2->material_id())
-       return false;
-
-      if (c1->user_index() != c2->user_index())
-       return false;
-
-      if (c1->user_flag_set() != c2->user_flag_set())
-       return false;
-    }
-
-  // also check the order of raw iterators as they contain
-  // something about the history of the triangulation
-  typename Triangulation<dim,spacedim>::cell_iterator
-    r1 = t1.begin_raw(),
-    r2 = t2.begin_raw();
-  for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
+  template <int dim, int spacedim>
+  bool operator == (const Triangulation<dim,spacedim> &t1,
+                   const Triangulation<dim,spacedim> &t2)
   {
-    if (r1->level() != r2->level())
+                                    // test a few attributes, though we can't
+                                    // test everything unfortunately...
+    if (t1.n_active_cells() != t2.n_active_cells())
       return false;
-    if (r1->index() != r2->index())
+
+    if (t1.n_cells() != t2.n_cells())
       return false;
-  }
 
-  return true;
+    if (t1.n_faces() != t2.n_faces())
+      return false;
+
+    typename Triangulation<dim,spacedim>::cell_iterator
+      c1 = t1.begin(),
+      c2 = t2.begin();
+    for (; (c1 != t1.end()) && (c2 != t2.end()); ++c1, ++c2)
+      {
+       for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+         {
+           if (c1->vertex(v) != c2->vertex(v))
+             return false;
+           if (c1->vertex_index(v) != c2->vertex_index(v))
+             return false;
+         }
+
+       for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+         {
+           if (c1->face(f)->at_boundary() != c2->face(f)->at_boundary())
+             return false;
+
+           if (c1->face(f)->at_boundary())
+             {
+               if (c1->face(f)->boundary_indicator() !=
+                   c2->face(f)->boundary_indicator())
+                 return false;
+             }
+           else
+             {
+               if (c1->neighbor(f)->level() != c2->neighbor(f)->level())
+                 return false;
+               if (c1->neighbor(f)->index() != c2->neighbor(f)->index())
+                 return false;
+             }
+         }
+
+       if (c1->subdomain_id() != c2->subdomain_id())
+         return false;
+
+       if (c1->material_id() != c2->material_id())
+         return false;
+
+       if (c1->user_index() != c2->user_index())
+         return false;
+
+       if (c1->user_flag_set() != c2->user_flag_set())
+         return false;
+      }
+
+                                    // also check the order of raw iterators as they contain
+                                    // something about the history of the triangulation
+    typename Triangulation<dim,spacedim>::cell_iterator
+      r1 = t1.begin_raw(),
+      r2 = t2.begin_raw();
+    for (; (r1 != t1.end()) && (r2 != t2.end()); ++r1, ++r2)
+      {
+       if (r1->level() != r2->level())
+         return false;
+       if (r1->index() != r2->index())
+         return false;
+      }
+
+    return true;
+  }
 }
 
+
 template <int dim, int spacedim>
 void do_boundary (Triangulation<dim,spacedim> &t1)
 {
@@ -132,7 +136,7 @@ void test ()
   // now add one cell again
   tria_1.begin_active()->set_refine_flag ();
   tria_1.execute_coarsening_and_refinement();
-  
+
   tria_1.begin_active()->set_subdomain_id (1);
   tria_1.begin_active()->set_material_id (2);
   tria_1.begin_active()->set_user_index (3);
@@ -140,7 +144,7 @@ void test ()
   tria_1.begin_active()->set_refine_flag (RefinementCase<dim>::cut_x);
 
   do_boundary (tria_1);
-  
+
   verify (tria_1, tria_2);
 }
 
@@ -158,6 +162,6 @@ int main ()
   test<2,2> ();
   test<2,3> ();
   test<3,3> ();
-    
+
   deallog << "OK" << std::endl;
 }
index 5fa9eeb55fa5402f76a4517dc8885764a7232e0e..7aa5b088b7d9ea8eb5ddf0ac196ad765a6281cea 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index 714d0bd3c7b4fae3bd98cb6498655f8adb6d13a9..2554f6cbca4fe390f758aab619bcfc7726e0fa5f 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index 48ef8f131eab5cf5aeea961abd458631a4f19c1d..4249df449c2cbb175922e72a66c3bb8aedf57094 100644 (file)
@@ -34,8 +34,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index 2015ceb0be7cf05b156b403715c24e9f0226955c..d0a8ba9b596c261d1bab45e3668aa9846967bf86 100644 (file)
@@ -38,8 +38,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 template <int dim, typename MATRIX, typename VECTOR>
 void assemble_laplace (MATRIX &B, VECTOR &bb, DoFHandler<dim> &dof_handler, FiniteElement<dim> &fe)
index d4013c57988d3d8d74765fca6dc463daf1fe0a19..c694f26862acdbaa247094f35ad0c85383cffdb5 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index ab2086bf3b1caa3f4288bce1cf6f94f2068a91e8..dec084ff5f690179c6c3317d8d6fc96b95eda9fe 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index 66d4a2b4daf0986a6d71ee9e3fee4eae1f50eec5..76aa9597d43eb7316c2c12f125e5716f6066d332 100644 (file)
@@ -36,8 +36,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>
index 20a1ac70ae6f54ed210fa319b0974fdea9dc0d3c..b6f1885cf5c69203f9e0c3f72c48d405f484acec 100644 (file)
@@ -35,8 +35,8 @@
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 
-#include <deal.II/numerics/vectors.h>
-#include <deal.II/numerics/matrices.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/matrix_tools.h>
 
 
 template <int dim>

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.